Lecture 2
Lecture 2
Chapter-4
Software Design
• Effective Modular design
2
Department of computer Science
Modularization
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
6
Concurrency
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
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
13
Coupling
14
Design Verification
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.
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