tcs2411 software engineering1 software design principles “producing the software blueprint”

25
TCS2411 Software Engineering 1 Software Design Principles “Producing the software blueprint”

Upload: corey-dennis

Post on 16-Dec-2015

228 views

Category:

Documents


0 download

TRANSCRIPT

TCS2411 Software Engineering 1

Software Design Principles

“Producing the software blueprint”

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 15

Divide And Conquer

S1S2

S3S4

S5

P5

P4P3

P2P1

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 21

Structure Terminology

g hed

i

f

a b c

M

Fan-out

Fan-in

Width

Depth

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

TCS2411 Software Engineering 25

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