Download - Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e
![Page 1: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/1.jpg)
Chapter 13 Design Concepts and Principles
Software Engineering:A Practitioner's Approach, 5/e
![Page 2: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/2.jpg)
Topics
• The Design Process
• Design Principles
• Design Concepts-Abstraction & Refinement
• Effective Modular Design
• Design Heuristics for Effective Modularity
• The Design Model
• Design Documentation
![Page 3: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/3.jpg)
Design Concepts And Principles
Software Design -- An iterative process transforming requirements into a “blueprint” for constructing the software.
![Page 4: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/4.jpg)
Translating the analysis model into a software design
Entity-Relationship
Diagram
Data FlowDiagram
State-TransitionDiagram
Data Dictionary
Process Specification (PSPEC)
Control Specification (CSPEC)
Data Object Description
THE ANALYSIS MODEL
proceduraldesign
interfacedesign
architecturaldesign
datadesign
THE DESIGN MODEL
![Page 5: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/5.jpg)
The Design Model• Data Design
– Transforms information domain model into data structures required to implement software
• Architectural Design– Defines relationship among
the major structural elements of a program
Procedural Design
Interface Design
Architectural Design
Data Design
The Design Model
Which is mapped from the Analysis model
![Page 6: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/6.jpg)
The Design Model
• Interface Design– Describes how the software
communicates with itself, to systems that interact with it and with humans.
• Procedural Design– Also Component-Level
– Transforms structural elements of the architecture into a procedural description of software construction
Procedural Design
Interface Design
Architectural Design
Data Design
The Design Model
Which is mapped from the Analysis model
![Page 7: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/7.jpg)
The Design Process
• Suggestions for good design:– Design must enable all requirements of the
analysis model and implicit needs of the customer to be met
– Design must be readable and an understandable guide for coders, testers and maintainers
– The design should address the data, functional and behavioral domains of implementation
![Page 8: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/8.jpg)
Design Guidelines
• A design should exhibit an architectural structure• A design should be modular• A design should contain data, architecture,
interfaces and components• A design should lead to components• A design should lead to interfaces that reduce
complexity• A design should be derived from a repeatable
method, driven by analysis.
![Page 9: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/9.jpg)
Design Principles
• Design Process: – Sequence of steps that enable description of all
aspects of the software
• Design Model– Equivalent to architect’s plan of house
![Page 10: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/10.jpg)
Design Principles:
•The design process should consider various approaches based on requirements•The design should be traceable to the requirements analysis model•The design should not reinvent the wheel -- Reuse!Design should mimic the structure in the problem domain
![Page 11: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/11.jpg)
Design Principles-extended
• 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” [DAV95] between the software and the problem as it exists in the real world.
• The design should exhibit uniformity and integration.
• 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.
![Page 12: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/12.jpg)
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
![Page 13: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/13.jpg)
Design Concepts-Abstraction• Wasserman: “Abstraction permits one to
concentrate on a problem at some level of abstraction without regard to low level details”
• Data Abstraction– This is a named collection of data that describes a data
object• Procedural Abstraction
– Instructions are given in a named sequence– Each instruction has a limited function
• Control Abstraction– A program control mechanism without specifying
internal details, e.g., semaphore, rendezvous
![Page 14: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/14.jpg)
Data Abstractiondoor
implemented as a data structure
manufacturermodel numbertypeswing directioninsertslights type numberweightopening mechanism
![Page 15: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/15.jpg)
Procedural Abstractionopen
implemented with a "knowledge" of the object that is associated with enter
details of enter algorithm
![Page 16: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/16.jpg)
Refinement
• Refinement is a process where one or several instructions of the program are decomposed into more detailed instructions.
• Stepwise refinement is a top down strategy– Basic architecture is developed iteratively– Step wise hierarchy is developed
• Forces a designer to develop low level details as the design progresses – Design decisions at each stage
![Page 17: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/17.jpg)
Stepwise Refinementopen
walk to door;reach for knob;
open door;
walk through;close door.
repeat until door opensturn knob clockwise;if knob doesn't turn, then take key out; find correct key; insert in lock;endifpull/push doormove out of way;end repeat
![Page 18: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/18.jpg)
Modularity• In this concept, software is divided into
separately named and addressable components called modules
• Follows “divide and conquer” concept, a complex problem is broken down into several manageable pieces
• Let p1 and p2 be two program parts, and E the effort to solve the problem. Then,
E(p1+p2) > E(p1)+E(p2), often >>• A need to divide software into optimal sized
modules
![Page 19: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/19.jpg)
Modular Designeasier to build, easier to change, easier to fix ...
![Page 20: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/20.jpg)
Modularity & Software Cost
![Page 21: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/21.jpg)
ModularityObjectives of modularity in a design method
• Modular Decomposability– Provide a systematic mechanism to decompose a
problem into sub problems
• Modular Composability– Enable reuse of existing components
• Modular Understandability– Can the module be understood as a stand alone unit?
Then it is easier to understand and change.
![Page 22: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/22.jpg)
Modularity …• Modular Continuity
– If small changes to the system requirements result in changes to individual modules, rather than system-wide changes, the impact of the side effects is reduced (note implications in previous example)
• Modular Protection– If there is an error in the module, then those errors
are localized and not spread to other modules
![Page 23: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/23.jpg)
Software Architecture
Desired properties of an architectural design• Structural Properties
– This defines the components of a system and the manner in which these interact with one another.
• Extra Functional Properties– This addresses how the design architecture
achieves requirements for performance, reliability and security
• Families of Related Systems– The ability to reuse architectural building blocks
![Page 24: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/24.jpg)
Structural Terminology
![Page 25: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/25.jpg)
Structural Partitioning• Horizontal Partitioning
– Easier to test– Easier to maintain (questionable)– Propagation of fewer side effects (questionable)– Easier to add new features
F1 (Ex: Input) F2 (Process) F3(Output)
![Page 26: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/26.jpg)
Structural Partitioning…• Vertical Partitioning
– Control and work modules are distributed top down
– Top level modules perform control functions– Lower modules perform computations
• Less susceptible to side effects• Also very maintainable
![Page 27: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/27.jpg)
Information Hiding
• Modules are characterized by design decisions that are hidden from others
• Modules communicate only through well defined interfaces
• Enforce access constraints to local entities and those visible through interfaces
• Very important for accommodating change and reducing coupling
![Page 28: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/28.jpg)
Effective Modular Design -- Functional Independence
• Critical in dividing system into independently implementable parts
• Measured by two qualitative criteria– Cohesion
• Relative functional strength of a module
– Coupling• Relative interdependence among modules
![Page 29: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/29.jpg)
Effective Modular Design -- Cohesion
• A cohesive module performs a single task
• Different levels of cohesion– Coincidental, logical, temporal, procedural,
communications, sequential, functional
![Page 30: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/30.jpg)
Modular Design -- Coupling
• Coupling describes the interconnection among modules
• Data coupling– Occurs when one module passes local data values
to another as parameters• Stamp coupling
– Occurs when part of a data structure is passed to another module as a parameter
![Page 31: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/31.jpg)
Types of Coupling
![Page 32: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/32.jpg)
Design Heuristics for Effective Modularity
• Evaluate 1st iteration to reduce coupling & improve cohesion
• Minimize structures with high fan-out; strive for depth
• Keep scope of effect of a module within scope of control of that module
• Evaluate interfaces to reduce complexity and improve consistency
![Page 33: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/33.jpg)
…Design Heuristics
• Define modules with predictable function & avoid being overly restrictive– Avoid static memory between calls where
possible
• Strive for controlled entry -- no jumps into the middle of things
![Page 34: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/34.jpg)
Design Model
• The design principles and concepts discussed in this chapter establish a foundation for the creation of the design model that encompasses representation of data, architecture, interfaces and components.
• In the previous figure, the design model was presented as a pyramid
![Page 35: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/35.jpg)
Documentation
![Page 36: Chapter 13 Design Concepts and Principles Software Engineering: A Practitioner's Approach, 5/e](https://reader030.vdocuments.mx/reader030/viewer/2022033020/56649f055503460f94c196a1/html5/thumbnails/36.jpg)
End