Introduction To Software Design
Introduction To Software Design
1
Organization of This
Lecture
●
Introduction to software design
●
Goodness of a design
●
Functional Independence
●
Cohesion and Coupling
●
Function-oriented design vs.
Object-oriented design
2
Introduction
●
Design phase transforms SRS
document:
– To a form easily implementable
in some programming language.
SRS Design
Document Design Documents
Activities
3
Items Designed During
Design Phase
●
Module structure,
●
Control relationship among the
modules
– call relationship or invocation relationship
●
Interface among different modules,
– Data items exchanged among different
modules,
●
Data structures of individual modules,
●
Algorithms for individual modules.
4
Module Structure
5
Introduction
●
A module consists of:
– Several functions
– Associated data structures.
D1 ..
D2 ..
D3 ..
Data
F1 .. Functions
F2 ..
F3 ..
F4 ..
F5 ..
6
Introduction
●
Good software designs:
– Seldom arrived through a
single step procedure:
– Butthrough a series of steps
and iterations.
7
Introduction
●
Design activities are usually
classified into two stages:
– Preliminary (or high-level) design.
– Detailed design.
●
Meaning and scope of the two
stages:
– Vary considerably from one
methodology to another.
8
High-Level Design
●
Identify:
– Modules
– Control relationships among modules
– Interfaces among modules.
d1 d2
d3 d1 d4
9
High-Level Design
●
The outcome of high-level
design:
– Program structure (or
software architecture).
10
High-Level Design
●
Several notations are available
to represent high-level design:
– Usually a tree-like diagram
called structure chart is used.
– Other notations:
●
Jackson diagram or
Warnier-Orr diagram can
also be used.
11
Detailed Design
●
For each module, design:
– Data structure
– Algorithms
●
Outcome of detailed
design:
– Module specification.
12
A Classification of Design
Methodologies
●
Procedural (aka
Function-oriented)
●
Object-oriented
●
More recent:
– Aspect-oriented
– Component-based (Client-
Server)
13
Does a Design Technique
Lead to a Unique Solution?
●
No:
– Several subjective decisions
need to be made to trade off
among different parameters.
– Even the same designer can
come up with several
alternate design solutions.
14
Analysis versus
Design
●
An analysis technique helps elaborate
the customer requirements through
careful thinking:
– And at the same time consciously avoids
making any decisions regarding
implementation.
●
The design model is obtained from the
analysis model through transformations
over a series of steps:
– Decisions regarding implementation are
consciously made.
15
A Fundamental
Question
●
How to distinguish between
the superior of two
alternate design solutions?
– Unless we know what a
good software design is:
●
We can not possibly
design one.
16
Good and Bad
Designs
●
There is no unique way to
design a system.
●
Even using the same design
methodology:
– Differentdesigners can arrive at
very different design solutions.
●
We need to distinguish between
good and bad designs.
17
Which of Two is a
Better Design?
●
Should implement all
functionalities of the system
correctly.
●
Should be easily understandable.
●
Should be efficient.
●
Should be easily amenable to
change,
– i.e. easily maintainable.
18
Which of Two is a
Better Design?
●
Understandability of a
design is a major issue:
– Determines goodness of
design:
–A design that is easy to
understand:
●
Also easy to maintain and
change.
19
Which of Two is a
Better Design?
●
Unless a design is easy to
understand,
– Tremendous effort needed to
maintain it
– We already know that about 60%
effort is spent in maintenance.
●
If the software is not easy to
understand:
– Maintenance effort would increase
many times. 20
Understandability
●
Use consistent and
meaningful names:
– For
various design
components.
●
Should make use of
abstraction and
decomposition principles in
ample measure.
21
How are Abstraction and
Decomposition Principles Used in
Design?
●
Two principal ways:
– Modular Design
– Layered Design
22
Modularity
●
Modularity is a fundamental
attributes of any good design.
– Decomposition of a problem
cleanly into modules:
– Modules are almost
independent of each other
– Divide and conquer principle.
23
Modularity
●
If modules are independent:
– Modulescan be understood
separately,
●
Reduces the complexity greatly.
– To understand why this is so,
●
Remember that it is very difficult to
break a bunch of sticks but very
easy to break the sticks individually.
24
Layered Design
25
Layered Design
●
Neat arrangement of
modules in a hierarchy
means:
– Low fan-out
– Control abstraction
26
Modularity
●
In technical terms,
modules should display:
– High cohesion
– Low coupling.
●
We shall next discuss:
– cohesion and coupling.
27