Lesson 4
Lesson 4
Outline:
Meaning
Elements of a System
Software Design Levels
Principles of Software Design
Software Design Strategies
Types of Software Design
Software Analysis & Design Tools
Software Design
Specific Objectives:
Elements of a System
1. Architecture: This is the conceptual model that defines the structure, behavior, and
views of a system. We can use flowcharts to represent and illustrate the architecture.
2. Modules: These are components that handle one specific task in a system. A
combination of the modules makes up the system.
4. Interfaces: This is the shared boundary across which the components of a system
exchange information and relate.
The software design process can be divided into the following three levels
design:
1. Architecture Design
3. Detailed Design
Architectural Design
High-level Design
High-level design focuses on how the system along with all of its
components can be implemented in forms of modules.
Detailed Design
i. Modularization
ii. Abstraction
iii. Concurrency
iv. Cohesion
v. Coupling
Principles of Software Design – Modularization
Designers tend to design modules such that they can be executed and/or
compiled separately and independently.
Advantage of modularization:
It allows developers to create more manageable and maintainable systems by hiding irrelevant
details.
1. Functional Abstraction
2. Data Abstraction
Functional Abstraction
The details of the algorithm to accomplish the functions are not visible to the user of the function.
Functional abstraction forms the basis for Function oriented design approaches.
Data Abstraction
Details of the data elements are not visible to the users of data.
Data Abstraction forms the basis for Object Oriented design approaches.
Principles of Software Design – Concurrency
1. Functional Cohesion: Functional Cohesion is said to exist if the different elements of a module, cooperate
to achieve a single function.
2. Sequential Cohesion: A module is said to possess sequential cohesion if the element of a module form the
components of the sequence, where the output from one component of the sequence is input to the next.
3. Communicational Cohesion: A module is said to have communicational cohesion, if all tasks of the module
refer to or update the same data structure, e.g., the set of functions defined on an array or a stack.
4. Procedural Cohesion: A module is said to be procedural cohesion if the set of purpose of the module are all
parts of a procedure in which particular sequence of steps has to be carried out for achieving a goal, e.g., the
algorithm for decoding a message.
5. Temporal Cohesion: When a module includes functions that are associated by the fact that all the methods
must be executed in the same time, the module is said to exhibit temporal cohesion.
6. Logical Cohesion: A module is said to be logically cohesive if all the elements of the module perform a
similar operation. For example Error handling, data input and data output, etc.
7. Coincidental Cohesion: A module is said to have coincidental cohesion if it performs a set of tasks that are
associated with each other very loosely, if at all.
Principles of Software Design – Coupling
It tells at what level the modules interfere and interact with each other. The
lower the coupling, the better the program.
Two modules that are tightly coupled are strongly dependent on each other.
Principles of Software Design – Coupling
2. Common coupling- When multiple modules have read and write access to
some global data, it is called common or global coupling.
4. Stamp coupling- When multiple modules share common data structure and
work on different part of it, it is called stamp coupling.
5. 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.
Software Design Strategies
Analysts generate instructions for the developers about how code should be
composed and how pieces of code should fit together to form a program.
1. Top-down Approach
2. Bottom-up Approach
Software Design Strategies - Top-down Approach
Top-down design takes the whole software system as one entity and then decomposes
it to achieve more than one sub-system or component based on some characteristics.
Each sub-system or component is then treated as a system and decomposed further.
Top-down design starts with a generalized model of system and keeps on defining the
more specific part of it.
Top-down design is more suitable when the software solution needs to be designed
from scratch and specific details are unknown.
Software Design Strategies - Bottom-up Approach
The bottom up design model starts with most specific and basic
components.
1. Structured Design: Structured design is mostly based on ‘divide and conquer’ strategy where a
problem is broken into several small problems and each small problem is individually solved until the
whole problem is solved.
2. Functional Oriented Design: Function Oriented design is a method to software design where the
model is decomposed into a set of interacting units or modules where each unit or module has a
clearly defined function.
3. Object Oriented Design: In the object-oriented design method, the system is viewed as a collection
of objects (i.e., entities) and their characteristics instead of functions involved in the software system.
4. User Interface Design: It focuses on the visual part of the application through which a client
interacts with the system. It determines how commands are given to the computer or the program
and how data is displayed on the screen.
Software analysis and design includes all activities, which help the transformation of
requirement specification into implementation.
These tools facilitate various stages of the software development lifecycle, including
requirements gathering, system design, and architectural planning.
1. Data Flow Diagram (DFD)
2. Structure Charts
4. Structured English
5. Pseudo-Code
6. Decision Tables
8. Data Dictionary
Thank
s