0% found this document useful (0 votes)
15 views

Introduction To Software Design

Uploaded by

buvanaaish
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Introduction To Software Design

Uploaded by

buvanaaish
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 27

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

You might also like