2
Organization of This
Lecture
●
Introductionto software design
●
Goodness of a design
●
Functional Independence
●
Cohesion and Coupling
●
Function-oriented design vs. Object-
oriented design
●
Summary
3.
3
Introduction
●
Design phase transformsSRS
document:
– To a form easily implementable in
some programming language.
SRS Document
Design
Activities
Design
Documents
4.
4
Items Designed During
DesignPhase
●
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.
8
Introduction
●
Design activities areusually 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.
11
High-Level Design
●
Several notationsare 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.
12.
12
Detailed Design
●
For eachmodule, design:
–Data structure
–Algorithms
●
Outcome of detailed design:
–Module specification.
14
Does a DesignTechnique 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.
15.
15
Analysis versus Design
●
Ananalysis 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.
16.
16
A Fundamental Question
●
Howto distinguish between the
superior of two alternate design
solutions?
– Unless we know what a good
software design is:
●
We can not possibly design
one.
17.
17
Good and BadDesigns
●
There is no unique way to design a
system.
●
Even using the same design
methodology:
– Different designers can arrive at very
different design solutions.
●
We need to distinguish between good
and bad designs.
18.
18
Which of Twois 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.
19.
19
Which of Twois 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.
20.
20
Which of Twois 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.
21.
21
Understandability
●
Use consistent andmeaningful
names:
– For various design components.
●
Should make use of abstraction
and decomposition principles in
ample measure.
22.
22
How are Abstractionand Decomposition
Principles Used in Design?
●
Two principal ways:
–Modular Design
–Layered Design
23.
23
Modularity
●
Modularity is afundamental
attributes of any good design.
– Decomposition of a problem cleanly
into modules:
– Modules are almost independent of
each other
– Divide and conquer principle.
24.
24
Modularity
●
If modules areindependent:
– Modules can 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.
27
Modularity
●
In technical terms,modules
should display:
– High cohesion
– Low coupling.
●
We shall next discuss:
– cohesion and coupling.
28.
28
Cohesion and Coupling
●
Cohesionis a measure of:
– functional strength of a module.
– A cohesive module performs a
single task or function.
●
Coupling between two modules:
– A measure of the degree of the
interdependence or interaction
between the two modules.
29.
29
Cohesion and Coupling
●
Amodule having high cohesion
and low coupling:
– functionally independent of
other modules:
●
A functionally independent
module has minimal interaction
with other modules.
30.
30
Advantages of Functional
Independence
●
Betterunderstandability and
good design:
●
Complexity of design is reduced,
●
Different modules easily
understood in isolation:
– Modules are independent
31.
31
Advantages of Functional
Independence
●
Functionalindependence reduces
error propagation.
– Degree of interaction between modules
is low.
– An error existing in one module does
not directly affect other modules.
●
Reuse of modules is possible.
32.
32
Advantages of Functional
Independence
●
Afunctionally independent module:
– Can be easily taken out and reused
in a different program.
●
Each module does some well-defined
and precise function
●
The interfaces of a module with other
modules is simple and minimal.
33.
33
Functional Independence
●
Unfortunately, thereare no ways:
– To quantitatively measure the
degree of cohesion and coupling.
– Classification of different kinds of
cohesion and coupling:
●
Can give us some idea regarding the
degree of cohesiveness of a module.
34.
34
Classification of
Cohesiveness
●
Classification isoften subjective:
– Yet gives us some idea about
cohesiveness of a module.
●
By examining the type of cohesion
exhibited by a module:
– We can roughly tell whether it
displays high cohesion or low
cohesion.
36
Coincidental Cohesion
●
The moduleperforms a set of
tasks:
– Which relate to each other very
loosely, if at all.
●
The module contains a random collection
of functions.
●
Functions have been put in the module
out of pure coincidence without any
thought or design.
37.
37
Logical Cohesion
●
All elementsof the module
perform similar operations:
– e.g. error handling, data input,
data output, etc.
●
An example of logical cohesion:
– A set of print functions to
generate an output report
arranged into a single module.
38.
38
Temporal Cohesion
●
The modulecontains tasks that are
related by the fact:
– All the tasks must be executed in the same
time span.
●
Example:
– The set of functions responsible for
●
initialization,
●
start-up, shut-down of some process,
etc.
39.
39
Procedural Cohesion
●
The setof functions of the
module:
– All part of a procedure (algorithm)
– Certain sequence of steps have to be
carried out in a certain order for
achieving an objective,
●
e.g. the algorithm for decoding a
message.
41
Sequential Cohesion
●
Elements ofa module form
different parts of a sequence,
– Output from one element of the
sequence is input to the next.
– Example:
sort
search
display
42.
42
Functional Cohesion
●
Different elementsof 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.
43.
43
Determining Cohesiveness
●
Write downa sentence to describe
the function of the module
– If the sentence is compound,
●
It has a sequential or communicational
cohesion.
– If it has words like “first”, “next”,
“after”, “then”, etc.
●
It has sequential or temporal cohesion.
– If it has words like initialize,
●
It probably has temporal cohesion.
44.
44
Coupling
●
Coupling indicates:
– Howclosely two modules
interact or how interdependent
they are.
– The degree of coupling
between two modules depends
on their interface complexity.
45.
45
Coupling
●
There are noways 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.
47
Data coupling
●
Two modulesare 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.
48.
48
Stamp Coupling
●
Two modulesare stamp
coupled,
–If they communicate via a
composite data item
●
such as a record in PASCAL
●
or a structure in C.
49.
49
Control Coupling
●
Data fromone 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.
51
Content Coupling
●
Content couplingexists 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.
52.
52
Neat Hierarchy
●
Control hierarchyrepresents:
– Organization of modules.
– Control hierarchy is also called
program structure.
●
Most common notation:
– A tree-like diagram called structure
chart.
54
Characteristics of Module
Hierarchy
●
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.
57
Layered Design
●
A designhaving modules:
–With high fan-out numbers is
not a good design:
–A module having high fan-out
lacks cohesion.
58.
58
Goodness of Design
●
Amodule that invokes a large
number of other modules:
– Likely to implement several
different functions:
– Not likely to perform a single
cohesive function.
59.
59
Control Relationships
●
A modulethat controls another
module:
– Said to be superordinate to it.
●
Conversely, a module controlled by
another module:
– Said to be subordinate to it.
60.
60
Visibility and Layering
●
Amodule A is said to be visible
by another module B,
– If A directly or indirectly calls B.
●
The layering principle requires
– Modules at a layer can call only the
modules immediately below it.
62
Abstraction
●
A module isunaware (how to invoke
etc.) of the higher level modules.
●
Lower-level modules:
– Do input/output and other low-level
functions.
●
Upper-level modules:
– Do more managerial functions.
63.
63
Abstraction
●
The principle ofabstraction
requires:
– Lower-level modules do not
invoke functions of higher level
modules.
– Also known as layered design.
64.
64
High-level Design
●
High-level designmaps functions
into modules {fi} {mj} such
that:
– Each module has high cohesion
– Coupling among modules is as low
as possible
– Modules are organized in a neat
hierarchy
67
Design Approaches
●
These twodesign approaches
are radically different.
– However, are complementary
●
Rather than competing techniques.
– Each technique is applicable at
●
Different stages of the design
process.
68.
68
Function-Oriented Design
●
A systemis looked upon as something
– That performs a set of functions.
●
Starting at this high-level view of the
system:
– Each function is successively refined into
more detailed functions.
– Functions are mapped to a module
structure.
72
Function-Oriented Design
●
The systemstate is centralized:
– Accessible to different functions,
– Member-records:
●
Available for reference and updation
to several functions:
– Create-new-member
– Delete-member
– Update-member-record
73.
73
Function-Oriented Design
●
Several function-orienteddesign
approaches have been developed:
– Structured design (Constantine and
Yourdon, 1979)
– Jackson's structured design (Jackson,
1975)
– Warnier-Orr methodology
– Wirth's step-wise refinement
– Hatley and Pirbhai's Methodology
74.
74
Object-Oriented Design
●
System isviewed as a collection
of objects (i.e. entities).
●
System state is decentralized
among the objects:
– Each object manages its own state
information.
75.
75
Object-Oriented Design
Example
●
Library AutomationSoftware:
– Each library member is a
separate object
●
With its own data and functions.
– Functions defined for one object:
●
Cannot directly refer to or change
data of other objects.
76.
76
Object-Oriented Design
●
Objects havetheir own internal data:
– Defines their state.
●
Similar objects constitute a class.
– Each object is a member of some class.
●
Classes may inherit features
– From a super class.
●
Conceptually, objects communicate by
message passing.
77.
77
Object-Oriented versus Function-
OrientedDesign
●
Unlike function-oriented design,
– In OOD the basic abstraction is
not functions such as “sort”,
“display”, “track”, etc.,
– But real-world entities such as
“employee”, “picture”, “machine”,
“radar system”, etc.
78.
78
Object-Oriented versus Function-
OrientedDesign
●
In OOD:
– Software is not developed by
designing functions such as:
●
update-employee-record,
●
get-employee-address, etc.
– But by designing objects such as:
●
employees,
●
departments, etc.
79.
79
Object-Oriented versus Function-
OrientedDesign
●
Grady Booch sums up this
fundamental difference
saying:
– “Identify verbs if you are
after procedural design and
nouns if you are after object-
oriented design.”
81
Example:
●
In an employeepay-roll system, the
following can be global data:
– employee names,
– code numbers,
– basic salaries, etc.
●
Whereas, in object oriented design:
– Data is distributed among different
employee objects of the system.
82.
82
Object-Oriented versus Function-
OrientedDesign
●
Objects communicate by
message passing.
– One object may discover the
state information of another
object by interrogating it.
83.
83
Object-Oriented versus Function-
OrientedDesign
●
Of course, somewhere or other the
functions must be implemented:
– The functions are usually associated
with specific real-world entities
(objects)
– Directly access only part of the
system state information.
84.
84
Object-Oriented versus Function-
OrientedDesign
●
Function-oriented techniques group
functions together if:
– As a group, they constitute a higher
level function.
●
On the other hand, object-oriented
techniques group functions together:
– On the basis of the data they operate
on.
85.
85
Object-Oriented versus Function-
OrientedDesign
●
To illustrate the differences
between object-oriented and
function-oriented design
approaches,
– let us consider an example ---
– An automated fire-alarm system for
a large building.
86.
86
Fire-Alarm System
●
We needto develop a
computerized fire alarm
system for a large multi-
storied building:
– There are 80 floors and 1000
rooms in the building.
87.
87
Fire-Alarm System
●
Different roomsof the
building:
– Fitted with smoke detectors
and fire alarms.
●
The fire alarm system would
monitor:
– Status of the smoke
detectors.
88.
88
Fire-Alarm System
●
Whenever afire condition is
reported by any smoke detector:
– the fire alarm system should:
●
Determine the location from which
the fire condition was reported
●
Sound the alarms in the neighboring
locations.
89.
89
Fire-Alarm System
●
The firealarm system
should:
– Flash an alarm message on the
computer console:
●
Fire fighting personnel man the
console round the clock.
90.
90
Fire-Alarm System
●
After afire condition has
been successfully handled,
– The fire alarm system should
let fire fighting personnel
reset the alarms.
91.
91
Function-Oriented
Approach:
●
/* Global data(system state) accessible by various functions
*/
BOOL detector_status[1000];
int detector_locs[1000];
BOOL alarm-status[1000]; /* alarm activated when status set */
int alarm_locs[1000]; /* room number where alarm is located */
int neighbor-alarms[1000][10];/*each detector has at most*/
/* 10 neighboring alarm locations */
The functions which operate on the system state:
interrogate_detectors();
get_detector_location();
determine_neighbor();
ring_alarm();
reset_alarm();
report_fire_location();
92.
92
Object-Oriented Approach:
●
class detector
●
attributes:status, location, neighbors
●
operations: create, sense-status, get-
location,
●
find-neighbors
●
class alarm
●
attributes: location, status
●
operations: create, ring-alarm,
get_location,
●
reset-alarm
●
In the object oriented program,
– appropriate number of instances of the class detector
and alarm should be created.
93.
93
Object-Oriented versus Function-
OrientedDesign
●
In the function-oriented program :
– The system state is centralized
– Several functions accessing these data
are defined.
●
In the object oriented program,
– The state information is distributed
among various sensor and alarm
objects.
94.
94
Object-Oriented versus Function-
OrientedDesign
●
Use OOD to design the
classes:
– Then applies top-down function
oriented techniques
●
To design the internal methods
of classes.
95.
95
Object-Oriented versus Function-
OrientedDesign
●
Though outwardly a system may
appear to have been developed in an
object oriented fashion,
– But inside each class there is a small
hierarchy of functions designed in a
top-down manner.
96.
96
Summary
●
We started withan overview of:
– Activities undertaken during the
software design phase.
●
We identified:
– The information need to be produced at
the end of the design phase:
●
So that the design can be easily implemented
using a programming language.
97.
97
Summary
●
We characterized thefeatures
of a good software design by
introducing the concepts of:
– fan-in, fan-out,
– cohesion, coupling,
– abstraction, etc.
98.
98
Summary
●
We classified differenttypes
of cohesion and coupling:
– Enables us to approximately
determine the cohesion and
coupling existing in a design.