0% found this document useful (0 votes)
8 views100 pages

Unit-3 Sem 6

The document outlines the principles and processes of software design, emphasizing the importance of both conceptual and technical design. It discusses modularity, coupling, and cohesion, highlighting how these concepts affect the clarity and maintainability of software. Additionally, it covers design strategies, including top-down and bottom-up approaches, and introduces design notations like structure charts and pseudocode.

Uploaded by

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

Unit-3 Sem 6

The document outlines the principles and processes of software design, emphasizing the importance of both conceptual and technical design. It discusses modularity, coupling, and cohesion, highlighting how these concepts affect the clarity and maintainability of software. Additionally, it covers design strategies, including top-down and bottom-up approaches, and introduces design notations like structure charts and pseudocode.

Uploaded by

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

UNIT 3

1
2
Software Design
 More creative than analysis

 Problem solving activity

WHAT IS DESIGN

‘HOW’

Software design document (SDD)

3
Software Design
Initial requirements

Gather data on user requirements

Analyze requirements data

Validate the design Obtain answers to


against the requirement
requirements questions

Conceive of a high level design

Refine & document the design

Completed design
Fig. 1 : Design framework
4
Software Design

design

Satisfy

Customer Developers
(Implementers)

5
Software Design
Conceptual Design and Technical Design
D
e
What How
s
Conceptual i Technica
design l
g design

n
A two part
e design System
Customer
process
r Builders
Fig. 2 : A two part design process
6
Software Design
Conceptual design answers :
 Where will the data come from ?
 What will happen to data in the system?
 How will the system look to users?
 What choices will be offered to users?

What is the timings of events?
 How will the reports & screens look like?

7
Software Design
Technical design describes :
 Hardware configuration
 Software needs
 Communication interfaces I/O
 of the system Software
 architecture Network
 architecture
 Any other thing that translates the requirements in to a
solution to the customer’s problem.
8
Software Design

The design needs to be


 Correct & complete
 Understandable
 At the right level
 Maintainable

9
Software Design

Informal More
design Informal formal Finished
outline design design
design

Fig. 3 : The transformation of an informal design to a detailed


design.

10
Software Design
MODULARITY
There are many definitions of the term module. Range is from :

i. Fortran subroutine
ii. Ada package
iii. Procedures & functions of PASCAL & C
iv. C++ / Java classes
v. Java packages
vi. Work assignment for an individual programmer

11
Software Design

All these definitions are correct. A modular


system consist of well defined manageable
units with well defined interfaces among the
units.

12
Software Design
Properties :
i. Well defined subsystem
ii. Well defined purpose
iii. Can be separately compiled and stored in a
library.
iv. Module can use other modules
v. Module should be easier to use than to
build
vi. Simpler from outside than from the inside.
13
Modularity is the single attribute of software that
allows a program to be intellectually manageable.
It enhances design clarity, which in turn
eases

implementation, debugging, testing,

documenting, and maintenance of software

product.
14
Software Design

Fig. 4 : Modularity and software cost


15
Software Design
Module Coupling
Coupling is the measure of the degree of
interdependence between
modules.

(Uncoupled : no dependencies) (a)

16
Software Design

Loosely coupled: Highly coupled:


some dependencies many dependencies
Relatively Strongly connected
independent
(C)
Fig. 5 : Module coupling
(B)

17
A Good design will have low coupling. Thus
interfaces should be carefully specified in
order to keep low value of coupling.

18
Software Design

This can be achieved as:


 Controlling the number of parameters passed
amongst modules.
 Avoid passing undesired data to
calling module.
 Maintain parent / child relationship
between calling & called modules.
 Pass data, not the control information.

19
Software Design
Consider the example of editing a student record in a
‘student information system’.
Edit student Edit student
record record
Student name,
Student Student Student
student ID,
record ID record
address,
EOF EOF
course
Retrieve Retrieve
student record student record
Poor design: Tight Coupling Good design: Loose Coupling

Fig. 6 : Example of coupling


20
Software Design
Data coupling Best
Stamp coupling
Control coupling
External coupling
Common coupling
Content coupling Worst
Fig. 7 : The types of module coupling

Given two procedures A & B, we can identify number of


ways in which they can be coupled.
21
Data coupling
The dependency between module
A and B is said to be
data coupled if their dependency is based on the
fact they communicate by only passing of data.
Other than communicating through data, the
two modules are independent.
Stamp coupling
Stamp coupling occurs between module A and B
when complete data structure is passed from one module to
another.

22
Software Design
Control coupling
Module A and B are said to be control coupled if they
communicate by passing of control information. This is usually
accomplished by means of flags that are set by one module
and reacted upon by the dependent module.

Common coupling
With common coupling, module A and module B have shared
data. Global data areas are commonly found in programming
languages. Making a change to the common data means tracing
back to all the modules which access that data to evaluate the
effect of changes.
23
Software Design

Fig. 8 : Example of common coupling


24
Software Design

Content coupling
Content coupling occurs when module A changes data of
module B or when control is passed from one module to the
middle of another. In Fig. 9, module B branches into D, even
though D is supposed to be under the control of C.

25
Software Design

Fig. 9 : Example of content coupling


26
Software Design

External Coupling:
In this, a module has a dependency to other
module,external to the software being developed or
to a particular type of hardware.This is basically
related to the communication to external tools and
devices.

27
Software Design
Module Cohesion
Cohesion is a measure of the degree to t which the
elements of a module are functionally related.

Module
strength

Fig. 10 : Cohesion=Strength of relations within modules


28
Software Design

A strongly cohesive module implements


functionality that is related to one feature of the
solution and requires little or no interaction with
other modules.

29
Software Design

Types of cohesion
 Functional cohesion
 Sequential

 cohesion
Procedural cohesion
 Temporal cohesion
 Logical cohesion
 Coincident
cohesion

30
Software Design
Functional Cohesion Best (high)

Sequential Cohesion

Communicational Cohesion

Procedural Cohesion

Temporal Cohesion

Logical Cohesion

Coincidental Cohesion Worst (low)

Fig. 1 : Types of module cohesion


31
Software Design

Functional Cohesion
 A and B are part of a single functional task. This is very good
reason for them to be contained in the same procedure.for ex: to
calculate Current GPA and Cumulative GPA

Sequential Cohesion
A outputs some data which forms the input to B. This is the reason
for them to be contained in the same procedure.

32
Software Design

Communicational Cohesion
 A and B both operate on the same input data or contribute
towards same output data.

33
Software Design

Procedural Cohesion

 Procedural Cohesion occurs in modules whose instructions


although accomplish different tasks yet have been combined
because there is a specific order in which the tasks are to be
completed.

Temporal Cohesion
 M o d u l e exhibits temporal cohesion when it contains tasks that
are related by the fact that all tasks must be executed in the
same time-span.This is not a good reason to put them in same
procedure.
34
Software Design

Logical Cohesion
 Logical cohesion occurs in modules that contain instructions
that appear to be related because they fall into the same logical
class of functions.

Coincidental Cohesion
 Coincidental cohesion exists in modules that contain
instructions that have little or no relationship to one another.
 In this no conceptual relationship other than shared code.

35
Software Design
Relationship between Cohesion & Coupling
If the software is not properly modularized, a host of seemingly
trivial enhancement or changes will result into death of the project.
Therefore, a software engineer must design the modules with goal of
high cohesion and low coupling.

Fig. 12 : View of cohesion and coupling


36
Software Design
STRATEGY OF DESIGN
A good system design strategy is to organize the program modules
in such a way that are easy to develop and latter to, change.
Structured design techniques help developers to deal with the size
and complexity of programs. Analysts create instructions for the
developers about how code should be written and how pieces of
code should fit together to form a program. It is important for two
reasons:
 First, even pre-existing code, if any, needs to be understood,
organized and pieced together.
 Second, it is still common for the project team to have to write
some code and produce original programs that support the
application logic of the system.
37
Software Design
Bottom-Up Design
These modules are collected together in the form of a “library”.

Fig. 13 : Bottom-up tree structure


38
Bottom-Up Design
This method has one terrible weakness.
We need to use a lot of intuition to decide
exactly what functionality a module should
provide.
If a system is to be built from an existing
system ,this approach is more suitable , as it
starts from some existing modules.

39
Software Design
Top-Down Design A top down design approach starts by
identifying the major modules of the system
decomposing them into their lower level modules and
iterating until the desired level of detail is achieved.
This is stepwise refinement; starting from an abstrac
design, in each step the design is refined to a more
concrete level, until we reach a level where no more
refinement is needed and the design can be
implemented directly.
This is suitable, if the specifications are clear and development is
from scratch. If coding of a part starts soon after it’s design
nothing can be tested untill all its subordinate modules are coded
40
Software Design

Hybrid Design
For top-down approach to be effective, some bottom-up approach is
essential for the following reasons:

 To permit common sub modules.


 Near the bottom of the hierarchy, where the intuition is simpler,
and the need for bottom-up testing is greater, because there are
more number of modules at low levels than high levels.
 In the use of pre-written library modules, in particular, reuse of
modules.

41
Software Design

FUNCTION ORIENTED DESIGN

Function Oriented design is an approach to software design where


the design is decomposed into a set of interacting units where each
unit has a clearly defined function. Thus, system is designed from
a functional viewpoint.

42
Software Design

43
Software Design

We continue the refinement of each module until we reach the statement


level of our programming language. At that point, we can describe the
structure of our program as a tree of refinement as in design top-down
structure as shown in fig. 14.

Fig. 14 : Top-down structure


44
Software Design
If a program is created top-down, the modules become very specialized.
As one can easily see in top down design structure, each module is used
by at most one other module, its parent. For a module, however, we
must require that several other modules as in design reusable structure
as shown in fig. 15.

Fig. 15 : Design reusable structure


45
Software Design

Design Notations
Design notations are largely meant to be used during the process
of design and are used to represent design or design decisions.
For a function oriented design, the design can be represented
graphically or mathematically by the following:

 Data flow diagrams


 Data Dictionaries
 Structure Charts
 Pseudocode

46
Software Design
Structure Chart
It partition a system into black boxes. A black box means that
functionality is known to the user without the knowledge of internal
design.

Fig. 16 : Hierarchical format of a structure chart


47
Software Design

Fig. 17 : Structure chart notations

48
Software Design
A structure chart for “update file” is given in fig. 18.

Fig. 18 : Update file


49
This is an example of transform centred
structure.

50
Software Design
A transaction centered structure describes a system that processes a
number of different types of transactions. It is illustrated in Fig.19.

Fig. 19 : Transaction-centered structure

51
Software Design
In the above figure the MAIN module controls the system operation
its functions is to:

 invoke the INPUT module to read a transaction;


 determine the kind of transaction and select one of a number
of transaction modules to process that transaction, and
 output the results of the processing by calling OUTPUT
module.

52
Software Design
Pseudocode
Pseudocode notation can be used in both the preliminary and detailed
design phases.
Using pseudocode, the designer describes system characteristics
using short, concise, English language phrases that are structured by
key words such as It-Then-Else, While-Do, and End.

53
Software Design
Functional Procedure Layers
 Function are built in layers, Additional notation is used
to specify details.
 Level 0
 Function or procedure name
 Relationship to other system components (e.g., part
of which system, called by which routines, etc.)
 Brief description of the function purpose.
 Author, date

54
Software Design
 Level 1
 Function Parameters (problem variables, types, purpose,
etc.)
 Global variables variable, type, purpose,
(problem sharing
information)

Routines called by the function

 Side effects
Input/Output Assertions

55
Software Design
 Level 2
 Local data structures (variable etc.)
 Timing constraints
 Exception handling (conditions, responses, events)
 Any other limitations

 Level 3
 Body (structured chart, English pseudo code,
decision tables, flow charts, etc.)

56
Software Design
IEEE Recommended practice for design
software descriptions (IEEE STD 1016-1998)
 Scope
An SDD is a representation of a software system that is used as a medium
for communicating software design information.

 References

i. IEEE std 830-1998, IEEE practice for


recommended software requirements
specifications.
of
ii. IEEE std 610.12-1990, IEEE software
glossary engineering terminology.
57
Software Design
 Definitions
i. Design entity. An element (Component) of a design that is
structurally and functionally distinct from other elements and
that is separately named and referenced.

ii. Design View. A subset of design entity attribute information


that is specifically suited to the needs of a software project
activity.
iii. Entity attributes. A named property or characteristics of a
design entity. It provides a statement of fact about the entity.

iv. Software design description (SDD). A representation of a


software system created to facilitate analysis, planning,
implementation and decision making.

58
Software Design
 Purpose of an SDD
The SDD shows how the software system will be structured to
satisfy the requirements identified in the SRS. It is basically the
translation of requirements into a description of the software
structure, software components, interfaces, and data necessary for
the implementation phase. Hence, SDD becomes the blue print for
the implementation activity.

 Design Description Information Content


 Introduction
 Design entities
 Design entity attributes

52
59
Software Design
The attributes and associated information items are defined in the
following subsections:

a) Identification f) Dependencies

b) Type g) Interface

c) Purpose h) Resources

d) Function i) Processing

e) Subordinates j) Data
60
Software Design
 Design Description Organization

Each design description writer may have a different view of what


are considered the essential aspects of a software design. The
organization of SDD is given in table 1. This is one of the possible
ways to organize and format the SDD.

A recommended organization of the SDD into separate design


views to facilitate information access and assimilation is given in
table 2.

61
Software Design

Cont…
62
Software Design

Table 1:
Organization of
SDD

63
Software Design
Design View Scope Entity attribute Example
representatio
n
Decomposition Partition of the system into Identification, type Hierarchical
description design entities purpose, function, decomposition diagram,
subordinate natural language

Dependency Description of relationships Identification, type, Structure chart, data


description among entities of system purpose, dependencies, flow diagrams,
resources resources transaction diagrams

Interface List of everything a Identification, Interface files,


description designer, developer, tester function, interfaces parameter tables
needs to know to use design
entities that make up the
system

Detail Description of the internal Identification, Flow charts, PDL etc.


description design details of an entity processing, data

Table 2: Design views


64
Software Design
Object Oriented Design
Object oriented design is the result of focusing attention not on the
function performed by the program, but instead on the data that are
to do manipulated by the program.

Object Oriented Design begins with an examination of the real


world “things” that are part of the problem to be solved. These
things (which we will call objects) are characterized individually in
terms of their attributes and behavior.

65
Software Design
 Basic Concepts
Object Oriented Design is not dependent on specific
implementation language. Problems are
modeled Objects have: any objects.
using
 Behavior (they do things)
 State (which changes when they do things)

66
Software Design
The various terms related to object design are:

i. Objects

The word “Object” is used very and conveys


meaning in different circumstances. Here, meaning
frequently is an entity able to
different
save a state (information) and which offers a number of operations
(behavior) to either examine or affect this state. An object is
characterized by number of operations and a state which remembers
the effect of these operations.

67
Software Design
ii. Messages
Objects communicate by message passing. Messages consist of the
identity of the target object, the name of the requested operation and
any other operation needed to perform the function. Message are often
implemented as procedure or function calls.

iii. Abstraction
In object oriented design, complexity is managed using abstraction.
Abstraction is the elimination of the irrelevant and the amplification of
the essentials.It is the method of hiding the unwanted information.

68
Software Design
iv. Class
In any system, there shall be number of objects. Some of the objects
may have common characteristics and we can group the objects
according to these characteristics. This type of grouping is known as a
class. Hence, a class is a set of objects that share a common
structure and a common behavior.
We may define a class “car” and each object that represent a car
becomes an instance of this class. In this class “car”, Indica, Santro,
Maruti, Indigo are instances of this class as shown in fig. 20.

Classes are useful because they act as a blueprint for objects. If we


want a new square we may use the square class and simply fill in the
particular details (i.e. colour and position) fig. 21 shows how can we
represent the square class.

69
Software Design

Fig.20: Indica, Santro, Maruti, Indigo are all instances of the class “car”

70
Software Design

Fig. 21: The square class

71
Software Design
v. Attributes
An attributes is a data value held by the objects in a class. The square
class has two attributes: a colour and array of points. Each attributes
has a value for each object instance. The attributes are shown as
second part of the class as shown in fig. 21.

vi. Operations
An operation is a function or transformation that may be applied to or
by objects in a class. In the square class, we have two operations: set
colour() and draw(). All objects in a class share the same operations.
An object “knows” its class, and hence the right implementation of the
operation. Operation are shown in the third part of the class as
indicated in fig. 21.

72
Software Design
vii. Inheritance
Imagine that, as well as squares, we have triangle class. Fig. 22 shows
the class for a triangle.

Fig. 22: The triangle class

73
Software Design
Now, comparing fig. 21 and 22, we can see that there is some
difference between triangle and squares classes.
For example, at a high level of abstraction, we might want to think of a
picture as made up of shapes and to draw the picture, we draw each
shape in turn. We want to eliminate the irrelevant details: we do not
care that one shape is a square and the other is a triangle as long as
both can draw themselves.
To do this, we consider the important parts out of these classes in to a
new class called Shape. Fig. 23 shows the results.

74
Software Design

Fig. 23: Abstracting common features in a new class


This sort of abstraction is called inheritance. The low level classes
(known as subclasses or derived classes) inherit state and behavior
from this high level class (known as a super class or base class).
75
Software Design
viii. Polymorphism
When we abstract just the interface of an operation and leave the
implementation to subclasses it is called a polymorphic operation and
process is called polymorphism.

ix. Encapsulation (Information Hiding)


Encapsulation is also commonly referred to as “Information Hiding”. It
consists of the separation of the external aspects of an object from the
internal implementation details of the object.It is a method to hide the
data in a single entity or unit along with a method to protect information
from outside.
x. Hierarchy
Hierarchy involves organizing something according to some particular
order or rank. It is another mechanism for reducing the complexity of
software by being able to treat and express sub-types in a generic way.
76
Software Design

Fig. 24: Hierarchy

77
Software Design

 Steps to Analyze and Design Object Oriented System

There are various steps in the analysis and design of an


object oriented system and are given in fig. 25

78
Software Design

Fig. 25: Steps for analysis & design of object


oriented system

79
Software Design
i. Create use case model
First step is to identify the actors interacting with the system. We
should then write the use case and draw the use case diagram.

ii. Draw activity diagram (If required)


Activity Diagram illustrate the dynamic nature of a system by modeling
the flow of control form activity to activity. An activity represents an
operation on some class in the system that results in a change in the
state of the system. Fig. 26 shows the activity diagram processing an
order to deliver some goods.

80
Software Design

Fig. 26: Activity diagram


81
Software Design
iii. Draw the interaction diagram
An interaction diagram shows an interaction, consisting of a set of
objects and their relationship, including the messages that may be
dispatched among them. Interaction diagrams address the dynamic
view of a system.
Steps to draws interaction diagrams are as under:
a) Firstly, we should identify that the objects with respects to every
use case.
b) We draw the sequence diagrams for every use case.

d) We draw the collaboration diagrams for every use case.

82
Software Design

The object types used in this analysis model are entity


objects, interface objects and control objects as given in fig. 27.

Fig. 27: Object types

83
Software Design
iv. Draw the class diagram

The class diagram shows the relationship amongst classes. There are
four types of relationships in class diagrams.

a) Association are semantic connection between classes. When


an association connects two classes, each class can send
messages to the other in a sequence or a collaboration
diagram. Associations can be bi-directional or unidirectional.

84
Software Design
b) Dependencies connect two classes. Dependencies are
always unidirectional and show that one class, depends on the
definitions in another class.

c) Aggregations are stronger form of association.


An aggregation is a relationship between a whole and its
parts.

d) Generalizations are used to show an inheritance relationship


between two classes.

85
Software Design
v. Design of state chart diagrams
A state chart diagram is used to show the state space of a given class,
the event that cause a transition from one state to another, and the
action that result from a state change. A state transition diagram for a
“book” in the library system is given in fig. 28.

Fig. 28: Transition chart for “book” in a library system.


86
Software Design
vi. Draw component and development diagram
Component diagrams address the static implementation view of a
system they are related to class diagrams in that a component typically
maps to one or more classes, interfaces or collaboration.

Deployment Diagram Captures relationship between physical


components and the hardware.

87
Software Design
A software has to be developed for automating the manual library of a
University. The system should be stand alone in nature. It should be
designed to provide functionality’s as explained below:
Issue of Books:
 A student of any course should be able to get books issued.
 Books from General Section are issued to all but Book bank books
are issued only for their respective courses.
 A limitation is imposed on the number of books a student a
cn
issue.
 A maximum of 4 books from Book bank and 3 books o rfm General
section is issued for 15 days only.The software takes the
current system date as the date of issue and calculates date of
return.
88
Software Design
 A bar code detector is used to save the student as well as book
information.
 The due date for return of the book is stamped on the book.
Return of Books:
 Any person can return the issued books.

 The student information is displayed


detector.
using the bar code
 The system displays the student details on whose name hte
books were issued as well as the date of issue and return of the
book.
 The system operator verifies the duration for the issue.
 The information is saved and the corresponding updating atke
place in the database.
89
Software Design
Query Processing:
 The system should be able to provide information like:
 Availability of a particular book.
 Availability of book of any particular author.
 Number of copies available of the desired book.

The system should also be able to generate reports regarding the


details of the books available in the library at any given time. The
corresponding printouts for each entry (issue/return) made in the
system should be generated. Security provisions like the ‘login
authenticity should be provided. Each user should have a user id and
a password. Record of the users of the system should be kept in the
log file. Provision should be made for full backup of the system.

90
Software Design

91
Software Design

92
Software Design

93
Software Design

94
Software Design

95
Software Design

96
Software Design

97
Software Design

98
Software Design

99
Software Design

10

You might also like