TCS 2411 Software Engineering
Download
Report
Transcript TCS 2411 Software Engineering
Software Design Principles
“Producing the software blueprint”
TCS2411 Software Engineering
1
Lecture Objectives
To understand the importance of design in
developing quality software
To describe the translation from the
requirements analysis model to the design
model
To understand the principles that guide
proper design of software
TCS2411 Software Engineering
2
Designing A House
If you are asked to design a house…
D
W
W
Kitchen
Room 2
D
WC
D
Living
Room
D
TCS2411 Software Engineering
W
Room 1
W
3
What Is Design?
Explaining the idea/concept of something
Usually with graphical diagrams
With the intention to build from the
explanation
The design is a representation of a
product or a system with sufficient detail
for implementation
TCS2411 Software Engineering
4
The Second Task
Analysis
Design
Problem
Models
Development
Testing
TCS2411 Software Engineering
Solution
5
Designing Software
From our understanding of the problem,
we start building the software
Translate the analysis model into the
design model
Map the information from the analysis
model to the design representations - data
design, architectural design, interface
design, procedural design
TCS2411 Software Engineering
6
Translation Model
EntityRelationship
Diagram
Data Flow
Diagram
Procedural
design
Data Dictionary
Interface
design
State-Transition
Diagram
Architectural design
Data design
TCS2411 Software Engineering
7
Design Principles
Design process should not suffer from
“tunnel vision”
The design should be traceable to the
analysis model
The design should not reinvent the wheel;
Time is short
The design should “minimize intellectual
distance” between the software and the
problem in the real world
TCS2411 Software Engineering
8
Design Principles (Continued)
The design should exhibit uniformity and
integration
The design should be structured to
accommodate change
The design should be structured to
degrade gently.
TCS2411 Software Engineering
9
Design Principles (Continued)
Design is not coding, coding is not design
The design should be assessed for quality
as it is being created, not after the fact
The design should be reviewed to
minimize conceptual errors
TCS2411 Software Engineering
10
Design Concepts
Fundamental concepts which provide
foundation to design correctly:
Abstraction
Structural
Partitioning
Refinement
Data Structure
Modularity
Software Procedure
Software
Architecture
Information Hiding
Control Hierarchy
TCS2411 Software Engineering
11
Abstraction
Identifying important features for
representation
There are many levels of abstraction
depending on how detailed the
representation is required
Data abstraction - representation of data
objects
Procedural abstraction - representation of
instructions
TCS2411 Software Engineering
12
Refinement
Stepwise refinement - top-down design
strategy by Niklaus Wirth
Starting at the highest level of abstraction,
every step of refinement ‘decompose’
instructions into more detailed instructions
Complementary to abstraction
TCS2411 Software Engineering
13
Modularity
Software is divided into separately named
and addressable modules
“Divide and conquer” approach - problem
is broken into manageable pieces
Solutions for the separate pieces then
integrated into the whole system
TCS2411 Software Engineering
14
Divide And Conquer
S1
S2
P1
P2
S5
P5
P4
P3
S3
S4
TCS2411 Software Engineering
15
Software Architecture
Modules can be integrated in many ways
to produce the system
Software architecture is the overall
structure of the software
The hierarchy of components and how
they interact, and the structure of data
used by the components
Use of framework models, and possible
reuse of architectural patterns
TCS2411 Software Engineering
16
Software Architecture Patterns
Recurring pattern help designers reuse
successful designs by basing new designs
on prior experience.
A designer who is familiar with such
patterns can apply them immediately to
design problems without having to
rediscover them.
TCS2411 Software Engineering
17
Why use Design Patterns?
Reuse successful practices.
Not new – recognised that this is something
that engineers have done for years.
Improve communication
Step towards a software engineer’s
handbook
TCS2411 Software Engineering
18
Examples of Software
Architecture
S1
Batch
sequential
pattern
Program structure
S2
S1
S3
S2
S4
S5
S4
S3
S5
TCS2411 Software Engineering
19
Control Hierarchy
Hierarchy of modules representing the
control relationships
A super-ordinate module controls another
module
A subordinate module is controlled by
another module
Measures relevant to control hierarchy:
depth, width, fan-in, fan-out
TCS2411 Software Engineering
20
Structure Terminology
M
Fan-out
a
b
c
Depth
d
e
f
g
h
Fan-in
i
Width
TCS2411 Software Engineering
21
Structural Partitioning
Program structure partitioned horizontally
and vertically
Horizontal partitioning defines separate
branches for each major program function
- input, process, output
Vertical partitioning (aka factoring) defines
control (decision-making) at the top and
work at the bottom
TCS2411 Software Engineering
22
Software Procedure
Processing details of individual modules
Precise specification of processing,
including sequence of events, exact
decision points, repetitive operations, and
data organization/structure
Procedure is layered - subordinate
modules must be referenced in processing
details
TCS2411 Software Engineering
23
Information Hiding
Information (procedure and data) contained
within a module is inaccessible to other
modules that have no need for such
information
Effective modularity is achieved by
independent modules, that communicate
only necessary information
Ease of maintenance - testing, modification
localized and less likely to propagate
TCS2411 Software Engineering
24
References
“Software Engineering: A Practitioner’s
Approach” 5th Ed. by Roger S. Pressman,
Mc-Graw-Hill, 2001
“Software Engineering” by Ian Sommerville,
Addison-Wesley, 2001
TCS2411 Software Engineering
25