You are on page 1of 12

Software Design

Presented by

Sir Hussain Saleem


University of Karachi
Copyright © 2002 ~ 2022
Topics to be covered
• Design Activities
• Characteristics of Good Software Design
• Understandability of Design
• Cohesion and Coupling
• Classification of Cohesiveness
• Classification of Coupling
• Neat Hierarchy
• Software Design Approaches
Objective
Design phase of Software development
deals with
transforming the customer requirements
as described
in the SRS document
into a form implementable
using
a Programming Language
Items that must be designed
In order to be easily implementable in a conventional
programming language, the following items must be
designed during the design phase:
• Different Modules
• Control Relationship
• User Interface
• Data Structures
• Algorithms
Thus the Goal of the design phase is to take
the SRS Document as the input and to
produce the above mentioned items at the
completion stage of the design phase.

A good software design is seldom arrived


through a single step procedure but goes
through a series of steps.
Classification of Design Activities
Design Activities could be broadly classified
into two important parts:
• Preliminary or high-level design
• Detailed design

But the meaning and scope of these two


stages may vary considerably from one
methodology to another.
Preliminary or High-level Design
• During high-level design, different modules and
the control relationships among them are
identified and the interfaces among these modules
are defined

• The outcome of high-level design is called the


Program Structure or Software Architecture

• Usually a tree-like diagram called the Structure


Chart is used to represent the control hierarchy in
a high-level design
Detailed Design

• During detailed design, the data structures


and the algorithms used by different modules
are designed

• The outcome of detailed design is usually


known as the Module Specification document
Distinction between
Good Design and Bad Design
• How to distinguish a good design and a bad design?
• In order to do this, one should must be able to define a set
of criteria which characterize a good software design
• Unless we know what a good software design is, we
cannot possibly design one
• There is no unique way to design a system
• It is essential that we know some ways of distinguishing a
good software design from a bad design
Characteristics of a
Good Software Design
For general applications, software design must
have a few desirable characteristics
These are listed as:
• A good design should capture all the functionalities of the
system correctly
• It should be easily understandable
• It should be efficient
• It should be easily amenable to change, i.e. easily
maintainable
Understandability of Design
Understandability of a design is a major factor which
is used to evaluate the goodness of a design, since a
design that is easily understandable is also easy to
maintain and change

If the Software is not easily understandable, the


maintenance effort would increase multiple

It will be of interest to know that about 60% of the


total effort in the life cycle of a typical product is
spent on maintenance
In order to enhance the understandability of a
design, it should have the following features:
• Use of consistent and meaningful names for
various design components
• Use of a cleanly decomposed set of modules
• Neat arrangement of modules in a hierarchy i.e.
Tree-like diagram

Modular design is one of the fundamental


principles of a good design

You might also like