Unit-IV_System Design.pptx
Unit-IV_System Design.pptx
Unit-IV_System Design.pptx
Session: 2024-25
Software Engineering
2
Unit-IV
Software Design:
• Introduction,
• Design fundamentals.
Effective modular design:
• Data architectural and procedural design,
• Design documentation.
3
Contents
• OVERVIEW
• DESIGN PROCESS
• DESIGN CONCEPTS
✔ Abstraction
✔ Refinement
✔ Modularity
✔ Software Architecture
✔ Control Hierarchy
✔ Structural Partitioning
✔ Data Structure
✔ Software Procedure
✔ Information Hiding
Overview
The main aim of design engineering is to generate a
model which shows resolution, delight and service to
customer.
Module Testing
Testing Quality
Design Models
Development
Software Development Process
DESIGN CONCEPTS
A set of fundamental software design concepts has evolved over
the past four decades. Each provides the software designer with
a foundation from which more sophisticated design methods
can be applied.
The entity relationship diagram and the detailed data content depicted in the
data dictionary provide the basis for the data design activity.
• Architectural Design:-
It defines the relationship between major structural elements of the software,
the “design patterns” that can be used to achieve the requirements that have
been defined for the system.
• Component-level Design :-
It transforms structural elements of the software architecture into a
procedural description of software components. Information
obtained from the PSPEC, CSPEC, and STD serve as the basis for
component design.
The importance of software design can be stated with a single word
“quality”.
Software Design Process have two part of design:-
• Conceptual Design (Customer)
• Technical Design (System Designers)
What How
Software Design
Document(SDD)
Conceptual design of software:
• Written in simple language i.e. customer
understandable language.
• Detail explanation about system characteristics.
• Describes the functionality of the system.
• It is independent of implementation.
• Linked with requirement document.
Technical Design of software:
Module-1
Module-2 Module-3
F1…
F2… Functions
F3…
F4…
Fn…
Good and bad designs
• There is no unique way to design a system.
temporal
logical
coincidental
Coincidental cohesion
display
Functional cohesion
• Different elements of a module
cooperate:
– to achieve a single function,
– e.g. managing an employee's
pay-roll.
• When a module displays functional
cohesion,
– we can describe the function using a
single sentence.
Coupling
• Coupling indicates:
– how closely two modules interact or
how interdependent they are.
– The degree of coupling between two
modules depends on their interface
complexity.
Coupling
• There are no ways to precisely determine
coupling between two modules:
– classification of different types of coupling will help
us to approximately estimate the degree of
coupling between two modules.
• Five types of coupling can exist between any
two modules.
Classes of coupling
data
stamp
control Degree of
coupling
common
content
Data coupling
• Two modules are data coupled,
– if they communicate via a parameter:
• an elementary data item,
•e.g an integer, a float, a character, etc.
– The data item should be problem related:
•not used for control purpose.
Stamp coupling
• Two modules are stamp coupled,
– if they communicate via a composite
data item
•such as a record in PASCAL
•or a structure in C.
Control coupling
• Data from one module is used to
direct
– order of instruction execution in
another.
• Example of control coupling:
– a flag set in one module and tested in
another module.
Common Coupling
• Two modules are common
coupled,
–if they share some global data.
Content coupling
• Content coupling exists between two
modules:
– if they share code,
– e.g, branching from one module into
another module.
• The degree of coupling increases
– from data coupling to content coupling.
Characteristics of Module Structure
• Depth:
– number of levels of control
• Width:
– overall span of control.
• Fan-out:
– a measure of the number of modules
directly controlled by given module.
Module Structure
Fan out=2
Fan out=1
Fan in=1
Fan in=2
Fan out=0
Data architectural and
Procedural design
55
Data Architectural
Different high-level facets of a software design can be
described and documented. These facets are often
called views: “A view represents a partial aspect of a
software architecture that shows specific properties
of a software system. for example, the logical view
(satisfying the functional requirements) vs. the
process view (concurrency issues) vs. the physical
view (distribution issues) vs. the development view
(how the design is broken down into implementation
units with explicit representation of the
dependencies among the units). Various authors use
different terminologies-like behavioral vs. functional
vs. structural vs. data modeling views. In summary, a
software design is a multifaceted artifact produced by
the design process and generally composed of
relatively independent and orthogonal views.
Data Architectural
Architectural Styles: An architectural style is “a
specialization of element and relation types. An
architectural style can thus be seen as providing the
software’s high-level organization. Various authors have
identified a number of major architectural styles:
General structures (for example, layers, pipes and filters,
blackboard)
Distributed systems (for example, client-server,
three-tiers, broker)
Interactive systems (for example,
Model-View-Controller,
Presentation-Abstraction-Control)
Adaptable systems (for example, microkernel, reflection)
Architectural Design
58
59
60
Procedural design
61
Procedural Design
Procedural design is an essential part of the
software design process. User interface design
should ensure that interaction between the
human and the machine provides for effective
operation and control of the machine.
For software to achieve its full potential, the user
interface should be designed to match the skills,
experience, and expectations of its anticipated
users.
Procedural Design
General User Interface Design Principles:-
Learnability: The software should be easy to learn
so that the user can rapidly start working with the
software.
User familiarity: The interface should use terms
and concepts drawn from the experiences of the
people who will use the software.
Consistency: The interface should be consistent so
that comparable operations are activated in the
same way.
Procedural Design
Minimal surprise: The behavior of software should
not surprise users.
Recoverability: The interface should provide
mechanisms allowing users to recover from errors.
User guidance: The interface should give
meaningful feedback when errors occur and
provide context-related help to users.
User diversity: The interface should provide
appropriate interaction mechanisms for diverse
types of users and for users with different
capabilities
Design Documentation
65
Design Documentation
• Information presentation may be textual or graphical in
nature. A good design keeps the information
presentation separate from the information itself.
• The MVC (Model-View-Controller) approach is an
effective way to keep information presentation
separating from the information being presented.
• Software Design Software engineers also consider
software response time and feedback in the design of
information presentation. Abstract visualizations can be
used when large amounts of information are to be
presented.
• According to the style of information presentation,
designers can also use color to enhance the interface.
Design Documentation
There are several important guidelines:
Limit the number of colors used.
Use color change to show the change of software
status.
Use color-coding to support the user’s task.
Use color-coding in a thoughtful and consistent
way.
Use colors to facilitate access for people with color
blindness or color deficiency (e.g., use the change
of color saturation and color brightness, try to
avoid blue and red combinations).
THANK YOU
68