Upload
corey-dennis
View
228
Download
0
Tags:
Embed Size (px)
Citation preview
TCS2411 Software Engineering 2
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 3
Designing A House
If you are asked to design a house…
Room 1
LivingRoom
KitchenRoom 2
D
D
D
D
W
W W
W
WC
TCS2411 Software Engineering 4
What Is Design?
Explaining the idea/concept of somethingUsually with graphical diagramsWith the intention to build from the
explanationThe design is a representation of a
product or a system with sufficient detail for implementation
TCS2411 Software Engineering 5
The Second Task
Problem
Models
Solution
Analysis
Design
Development
Testing
TCS2411 Software Engineering 6
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 7
Translation Model
Data Dictionary
Entity-RelationshipDiagram
Data FlowDiagram
State-TransitionDiagram
Data design
Architectural design
Interface design
Procedural design
TCS2411 Software Engineering 8
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 9
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 10
Design Principles (Continued)
Design is not coding, coding is not designThe design should be assessed for quality
as it is being created, not after the factThe design should be reviewed to
minimize conceptual errors
TCS2411 Software Engineering 11
Design Concepts
AbstractionRefinementModularitySoftware
ArchitectureControl Hierarchy
Structural Partitioning
Data StructureSoftware
ProcedureInformation
Hiding
Fundamental concepts which provide foundation to design correctly:
TCS2411 Software Engineering 12
AbstractionIdentifying important features for
representationThere 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 13
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 14
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 16
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 17
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 18
Why use Design Patterns?
Reuse successful practices. Not new – recognised that this is something
that engineers have done for years.
Improve communicationStep towards a software engineer’s
handbook
TCS2411 Software Engineering 19
Examples of Software Architecture
S1
S2
S3
S4
S5S3
S2 S4 S5
S1Batch sequential pattern
Program structure
TCS2411 Software Engineering 20
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 22
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 23
Software Procedure
Processing details of individual modulesPrecise 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 24
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