0% found this document useful (0 votes)
7 views

(2.1.2)modularization

The document discusses software design, focusing on modularization, which divides software into independent modules for easier maintenance and error reduction. It highlights the importance of coupling and cohesion in module interaction, emphasizing that lower coupling and higher cohesion lead to better software design. Additionally, it covers design verification processes to ensure quality before implementation.

Uploaded by

gurshaan's side
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

(2.1.2)modularization

The document discusses software design, focusing on modularization, which divides software into independent modules for easier maintenance and error reduction. It highlights the importance of coupling and cohesion in module interaction, emphasizing that lower coupling and higher cohesion lead to better software design. Additionally, it covers design verification processes to ensure quality before implementation.

Uploaded by

gurshaan's side
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 18

University Institute of Engineering

DEPARTMENT OF COMPUTER SCIENCE &


ENGINEERING
Subject Name: Software Engineering
Subject Code: 23CST-206
Software Design

Er. Jagmeet Kaur


E8387
ASSISTANT PROFESSOR DISCOVER . LEARN . EMPOWER
CSE

09/12/24 Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh Univer 1


sity
Chapter-4
Software Design
• Effective Modular design

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 2


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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 9


Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 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.

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 16


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

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 17


THANK YOU

Er. Jagmeet Kaur, Asst. Prof., CSE, Chandigarh University 18

You might also like