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