Lecture 4
Lecture 4
ORGANIZATION OF THIS
LECTURE
Introduction to software design
Goodness of a design
Functional Independence
Cohesion and Coupling
Function-oriented design vs. Object-oriented design
Summary
INTRODUCTION
Design phase transforms SRS document:
To a form easily implementable in some
programming language.
SRS Design
Document Design Documents
Activities
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.
MODULE STRUCTURE
INTRODUCTION
A module consists of:
Several functions
Associated data structures.
D1 ..
D2 .. Data
D3 ..
F1 .. Functions
F2 ..
F3 ..
F4 ..
F5 ..
INTRODUCTION
Good software designs:
Seldom arrived through a single step
procedure:
But through a series of steps and
iterations.
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.
HIGH-LEVEL DESIGN
Identify:
Modules
Control relationships among modules
Interfaces among modules.
d1 d2
d3 d1 d4
HIGH-LEVEL DESIGN
The outcome of high-level design:
Program structure (or software
architecture).
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.
DETAILED DESIGN
For each module, design:
Data structure
Algorithms
Outcome of detailed design:
Module specification.
A CLASSIFICATION OF
DESIGN METHODOLOGIES
temporal
logical
coincidental
COUPLING
CLASSES OF COUPLING
data
stamp
control Degree of
coupling
common
content
NEAT HIERARCHY
Control hierarchy represents:
Organization of modules.
Control hierarchy is also called program
structure.
Most common notation:
A tree-like diagram called structure chart.
LAYERED DESIGN
Essentially means:
Low fan-out
Control abstraction
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.
CHARACTERISTICS OF
MODULE STRUCTURE
Fan-in:
Indicates how many modules
directly invoke a given module.
High fan-in represents code reuse
and is in general encouraged.
MODULE STRUCTURE
Fan Fan in=0
out=2
Fan Fan in=1
out=1
Fan in=2
LAYERED DESIGN
A design having modules:
With high fan-out numbers is not a
good design:
A module having high fan-out lacks
cohesion.
GOODNESS OF DESIGN
A module that invokes a large
number of other modules:
Likely to implement several different
functions:
Not likely to perform a single
cohesive function.
CONTROL
RELATIONSHIPS
A module that controls another module:
Said to be superordinate to it.
Conversely, a module controlled by
another module:
Said to be subordinate to it.
VISIBILITY AND LAYERING
• f1
• f2 d1 d2
• f3
•
• d3 d1 d4
•
• fn
DESIGN APPROACHES
Two fundamentally different software
design approaches:
Function-oriented design
Object-oriented design
DESIGN APPROACHES
These two design approaches are
radically different.
However, are complementary
Rather than competing techniques.
Each technique is applicable at
Different stages of the design process.
FUNCTION-ORIENTED
DESIGN
A system is 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.
EXAMPLE
The function create-new-library- member:
Creates the record for a new member,
Assigns a unique membership number
Prints a bill towards the membership
EXAMPLE
Create-library-member function
consists of the following sub-functions:
Assign-membership-number
Create-member-record
Print-bill
FUNCTION-ORIENTED
DESIGN
Each subfunction:
Split into more detailed subfunctions
and so on.
FUNCTION-ORIENTED
DESIGN
The system state is centralized:
Accessible to different functions,
Member-records:
Available for reference and updation to several
functions:
Create-new-member
Delete-member
Update-member-record
FUNCTION-ORIENTED
DESIGN
Several function-oriented design 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
OBJECT-ORIENTED
DESIGN
System is viewed as a collection of
objects (i.e. entities).
System state is decentralized among the
objects:
Each object manages its own state
information.
OBJECT-ORIENTED DESIGN
EXAMPLE
Library Automation Software:
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.
OBJECT-ORIENTED DESIGN
Objects have their 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.
OBJECT-ORIENTED VERSUS
FUNCTION-ORIENTED DESIGN
In OOD:
State information is not shared in a
centralized data.
But is distributed among the
objects of the system.
EXAMPLE:
In an employee pay-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.
OBJECT-ORIENTED VERSUS
FUNCTION-ORIENTED DESIGN
We need to develop a
computerized fire alarm system
for a large multi-storied building:
There are 80 floors and 1000
rooms in the building.
FIRE-ALARM SYSTEM
Different rooms of the building:
Fitted with smoke detectors and fire
alarms.
The fire alarm system would
monitor:
Status of the smoke detectors.
FIRE-ALARM SYSTEM
Whenever a fire 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.
FIRE-ALARM SYSTEM
The fire alarm system should:
Flash an alarm message on the
computer console:
Fire fighting personnel man the
console round the clock.
FIRE-ALARM SYSTEM