0% found this document useful (0 votes)
6 views18 pages

Lecture 2

The document discusses software design, focusing on modularization, which involves dividing a software system into independent modules for easier maintenance and error reduction. It highlights the benefits of modular design, including improved concurrency, cohesion, and coupling, which are essential for effective software development. Additionally, it emphasizes the importance of design verification to ensure quality before implementation.

Uploaded by

Suraj Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views18 pages

Lecture 2

The document discusses software design, focusing on modularization, which involves dividing a software system into independent modules for easier maintenance and error reduction. It highlights the benefits of modular design, including improved concurrency, cohesion, and coupling, which are essential for effective software development. Additionally, it emphasizes the importance of design verification to ensure quality before implementation.

Uploaded by

Suraj Singh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 18

Department of Computer Science

University Institute of Engineering


DEPARTMENT OF COMPUTER SCIENCE
& ENGINEERING
Bachelor of Engineering (Computer Science & Engineering)
Subject Name: Software Engineering
Subject Code: 22CST-313
Prepared by:
Er. Puneet Kaur(E6913)

Software Design DISCOVER . LEARN . EMPOWER


1
Department of computer Science

Chapter-4
Software Design
• Effective Modular design

2
Department of computer Science

Modularization

• Modularization is a technique to divide a software system into


multiple discrete and independent modules, which are expected to be
capable of carrying out task(s) independently.
• These modules may work as basic constructs for the entire software.
Designers tend to design modules such that they can be executed
and/or compiled separately and independently.
• Modular design unintentionally follows the rules of ‘divide and
conquer’ problem-solving strategy this is because there are many
other benefits attached with the modular design of a software.

3
Modularization
• Any software comprises of many systems which contains several sub-
systems and those sub-systems further contains their sub-systems.
• So, designing a complete system in one go comprising of each and
every required functionality is a hectic work and the process can have
many errors because of its vast size.
• Thus in order to solve this problem the developing team breakdown
the complete software into various modules.

4
Modularization
• A module is defined as the unique and addressable components of
the software which can be solved and modified independently
without disturbing ( or affecting in very small amount ) other modules
of the software. Thus every software design should follow modularity.
• Effective modular design can be achieved if the partitioned modules
are separately solvable, modifiable as well as compilable.
• Here separate compilable modules means that after making changes
in a module there is no need of recompiling the whole software
system.

5
Advantage of modularization

• Smaller components are easier to maintain


• Program can be divided based on functional aspects
• Desired level of abstraction can be brought in the program
• Components with high cohesion can be re-used again
• Concurrent execution can be made possible
• Desired from security aspect

6
Concurrency

• Back in time, all software are meant to be executed sequentially.


• By sequential execution we mean that the coded instruction will be
executed one after another implying only one portion of program
being activated at any given time.
• A software has multiple modules, then only one of all the modules
can be found active at any time of execution.
• In software design, concurrency is implemented by splitting the
software into multiple independent units of execution, like modules
and executing them in parallel.

7
Concurrency
• In other words, concurrency provides capability to the software to
execute more than one part of code in parallel to each other.
• It is necessary for the programmers and designers to recognize those
modules, which can be made parallel execution.

8
Coupling and Cohesion

• When a software program is modularized, its tasks are divided into


several modules based on some characteristics.
• As we know, modules are set of instructions put together in order to
achieve some tasks.
• They are though, considered as single entity but may refer to each
other to work together.
• There are measures by which the quality of a design of modules and
their interaction among them can be measured.
• These measures are called coupling and cohesion.

9
10
Cohesion
• Cohesion is a measure that defines the degree of intra-dependability within
elements of a module. The greater the cohesion, the better is the program
design.
• There are seven types of cohesion, namely –
• Co-incidental cohesion - It is unplanned and random cohesion, which might be
the result of breaking the program into smaller modules for the sake of
modularization. Because it is unplanned, it may serve confusion to the
programmers and is generally not-accepted.
• Logical cohesion - When logically categorized elements are put together into a
module, it is called logical cohesion.
• Temporal Cohesion - When elements of module are organized such that they are
processed at a similar point in time, it is called temporal cohesion.

11
Cohesion
• Procedural cohesion - When elements of module are grouped together, which are
executed sequentially in order to perform a task, it is called procedural cohesion.
• Communicational cohesion - When elements of module are grouped together,
which are executed sequentially and work on same data (information), it is called
communicational cohesion.
• Sequential cohesion - When elements of module are grouped because the output
of one element serves as input to another and so on, it is called sequential
cohesion.
• Functional cohesion - It is considered to be the highest degree of cohesion, and it is
highly expected. Elements of module in functional cohesion are grouped because
they all contribute to a single well-defined function. It can also be reused.

12
Coupling

• Coupling is a measure that defines the level of inter-dependability among


modules of a program. It tells at what level the modules interfere and
interact with each other. The lower the coupling, the better the program.
• There are five levels of coupling, namely -
• Content coupling - When a module can directly access or modify or refer to
the content of another module, it is called content level coupling.
• Common coupling- When multiple modules have read and write access to
some global data, it is called common or global coupling.
• Control coupling- Two modules are called control-coupled if one of them
decides the function of the other module or changes its flow of execution.

13
Coupling

• Stamp coupling- When multiple modules share common data


structure and work on different part of it, it is called stamp coupling.
• Data coupling- Data coupling is when two modules interact with each
other by means of passing data (as parameter). If a module passes
data structure as parameter, then the receiving module should use all
its components.

14
Design Verification

• The output of software design process is design documentation,


pseudo codes, detailed logic diagrams, process diagrams, and detailed
description of all functional or non-functional requirements.
• The next phase, which is the implementation of software, depends on
all outputs mentioned above.
• It is then becomes necessary to verify the output before proceeding
to the next phase.
• The early any mistake is detected, the better it is or it might not be
detected until testing of the product.

15
Design Verification

• If the outputs of design phase are in formal notation form, then their
associated tools for verification should be used otherwise a thorough
design review can be used for verification and validation.

• By structured verification approach, reviewers can detect defects that


might be caused by overlooking some conditions. A good design
review is important for good software design, accuracy and quality.

16
Department of computer Science

References

• https://www.tutorialspoint.com/software_engineering/software_desi
gn_basics.htm#:~:text=Software%20design%20is%20a%20process,in
%20software%20coding%20and%20implementation.&text=Software
%20design%20is%20the%20first,problem%20domain%20to%20soluti
on%20domain.
• https://www.geeksforgeeks.org/software-engineering-software-desig
n-process/
• https://www.javatpoint.com/software-engineering-software-design

17
THANK YOU

18

You might also like