Lecture 1
Lecture 1
Chapter-4
Software Design
• Design process and concepts
2
Department of computer Science
Software Design
• Software design is a process to transform user requirements into
some suitable form, which helps the programmer in software coding
and implementation.
• For assessing user requirements, an SRS (Software Requirement
Specification) document is created whereas for coding and
implementation, there is a need of more specific and detailed
requirements in software terms. The output of this process can
directly be used into implementation in programming languages.
3
Department of computer Science
Software Design
• Software design is the step in SDLC (Software Design Life Cycle), which
moves the concentration from problem domain to solution domain.
4
DIFFERENCE BETWEEN ANALYSIS
AND DESIGN
• The aim of analysis is to understand the problem with a view to
eliminate any deficiencies in the requirement specification such as
incompleteness, inconsistencies, etc.
• The model which we are trying to build may be or may not be ready.
• A good software design is seldom arrived by using a single step procedure but
rather through several iterations through a series of steps.
6
PRELIMINARY OR HIGH LEVEL
DESIGN
• High-level design means identification of different modules and the control
relationships among them and the definition of the interfaces among these
modules.
• Many different types of notations have been used to represent a high-level design.
• A popular way is to use a tree-like diagram called the structure chart to represent
the control hierarchy in a high-level design.
7
DETAILED DESIGN
• During detailed design, the data structure and the algorithms of the
different modules are designed.
8
Department of computer Science
9
Department of computer Science
CHARACTERISTICS OF GOOD
SOFTWARE DESIGN
• Correctness: Software design should be correct as per requirement.
• Completeness: The design should have all components like data
structures, modules, and external interfaces, etc.
• Efficiency: Resources should be used efficiently by the program.
• Flexibility: Able to modify on changing needs.
• Consistency: There should not be any inconsistency in the design.
• Maintainability: The design should be so simple so that it can be
easily maintainable by other designers.
11
Department of computer Science
12
Department of computer Science
13
Department of computer Science
Interface Design
• Interface design is the specification of the interaction between a
system and its environment.
• This phase proceeds at a high level of abstraction with respect to the
inner workings of the system i.e, during interface design, the internal
of the systems are completely ignored and the system is treated as a
black box.
14
Interface Design
• Attention is focused on the dialogue between the target system and
the users, devices, and other systems with which it interacts.
• The design problem statement produced during the problem analysis
step should identify the people, other systems, and devices which are
collectively called agents.
15
Department of computer Science
Interface Design
• Interface design should include the following details:
• Precise description of events in the environment, or messages from
agents to which the system must respond.
• Precise description of the events or messages that the system must
produce.
• Specification on the data, and the formats of the data coming into and
going out of the system.
• Specification of the ordering and timing relationships between
incoming events or messages, and outgoing events or outputs.
16
Department of computer Science
Architectural Design
• Architectural design is the specification of the major components of a
system, their responsibilities, properties, interfaces, and the
relationships and interactions between them.
• In architectural design, the overall structure of the system is chosen,
but the internal details of major components are ignored.
17
Architectural Design
• Issues in architectural design includes:
• Gross decomposition of the systems into major components.
• Allocation of functional responsibilities to components.
• Component Interfaces
• Component scaling and performance properties, resource consumption
properties, reliability properties, and so forth.
• Communication and interaction between components.
• The architectural design adds important details ignored during the
interface design. Design of the internals of the major components is
ignored until the last phase of the design.
18
Detailed Design
• Design is the specification of the internal elements of all major system
components, their properties, relationships, processing, and often
their algorithms and the data structures.
19
Detailed Design
• The detailed design may include:
• Decomposition of major system components into program units.
• Allocation of functional responsibilities to units.
• User interfaces
• Unit states and state changes
• Data and control interaction between units
• Data packaging and implementation, including issues of scope and
visibility of program elements
• Algorithms and data structures
20
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
21
THANK YOU
22