Lecture 6 Design Concepts and principles
Lecture 6 Design Concepts and Principles
Analysis to Design Data PSPEC component (procedural) Description de ERD DFD resign Data interface Dictionary de sign architectural design TD data CSPEC design THE ANALYSIS MODEL THE DESIGN MODEL
Analysis to Design Data Dictionary THE ANALYSIS MODEL interface design architectural design data design THE DESIGN MODEL PSPEC CSPEC ERD DFD STD Data Object Description component (procedural) design
Where do We begin? modelling Prototype Spec D esign
Where Do We Begin? Spec Prototype Design modelling
Design Principles / Dav957 The design process should not suffer from tunnel vision The design should be traceable to the analysis model The design should not reinvent the wheel The design should"minimize the intellectual distance between the software and the problem as it exists in the real world The design should exhibit uniformity and integration
Design Principles [Dav95] ◼ The design process should not suffer from ‘tunnel vision.’ ◼ The design should be traceable to the analysis model. ◼ The design should not reinvent the wheel. ◼ The design should “minimize the intellectual distance” between the software and the problem as it exists in the real world. ◼ The design should exhibit uniformity and integration
Design Principles /Dav957 The design should be structured to accommodate change The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered 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(semantic)errors
Design Principles [Dav95] ◼ The design should be structured to accommodate change. ◼ The design should be structured to degrade gently, even when aberrant data, events, or operating conditions are encountered. ◼ 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 (semantic) errors
Fundamental Concepts abstraction-data, procedure, control refinement-elaboration of detail for all abstractions modularity-compartmentalization of data and function architecture -overall structure of the software Structural properties Extra-structural properties Styles and patterns procedure-the algorithms that achieve function hiding-controlled interfaces
Fundamental Concepts ◼ abstraction—data, procedure, control ◼ refinement—elaboration of detail for all abstractions ◼ modularity—compartmentalization of data and function ◼ architecture—overall structure of the software ◼ Structural properties ◼ Extra-structural properties ◼ Styles and patterns ◼ procedure—the algorithms that achieve function ◼ hiding—controlled interfaces
Data abstraction door manufacturer model number type swing direction inserts lights type number weight opening mechanism implemented as a data structure
Data Abstraction door implemented as a data structure manufacturer model number type swing direction inserts lights type number weight opening mechanism
Procedural abstraction open details of enter algorithm implemented with a knowledge"of the object that is associated with enter
Procedural Abstraction open implemented with a "knowledge" of the object that is associated with enter details of enter algorithm
Stepwise refinement open walk to door reach for knob open door;- repeat until door opens turn knob clockwise walk through; if knob doesn't turn, then close door take key out find correct key insert in lock endif pull/push door move out of way end repeat
Stepwise Refinement open walk to door; reach for knob; open door; walk through; close door. repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat
Modularity: Trade-offs for a specific software design? ' oot What is the"right"number of me ules module development cost cost of software module integration cost optimal number number of modules of modules
Modularity: Trade-offs What is the "right" number of modules for a specific software design? optimal number of modules cost of software number of modules module integration cost module development cost