Post on 31-Dec-2015
description
1© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Engineering Design Engineering Design Resolution & Design Resolution & Design PrinciplesPrinciples
2© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
ObjectivesObjectives
To distinguish architectural and detailed design
To catalog the contents of architectural and detailed design specifications
To present acronyms for design specifications
To present engineering design principles To arrange these principles in a
taxonomy to help understand and remember them
3© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
TopicsTopics
Architectural and detailed design in the engineering design process
Architectural design specifications Detailed design specifications Engineering design principles Basic principles Constructive principles A software engineering design
principles taxonomy
4© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
A Generic A Generic Software Software EngineerinEngineering Design g Design ProcessProcess
Generic Software Engineering DesignSRS : ProblemDesign Document : Solution
Analysis
ArchitecturalDesign
DesignDocument
SRS
[adequate architecture]
[else]
[adequate detailed design]
[adequate architecture]
Analyze SRS
Generate/ImproveCandidate Architectures
Evaluate CandidateArchitectures
Select Architecture
Finalize Architecture
Generate/Improve DetailedDesign Alternatives
Evaluate DetailedDesign Alternatives
[else]
Select DetailedDesign
Finalize Design
[else]
DetailedDesign
5© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Architectural DesignArchitectural Design
High-level design Black boxes Every program has an architecture
Architectural design is the activity
of specifying a program’s major parts; their responsibilities,
properties, and interfaces; and the relationships and interactions
among them.
Architectural design is the activity
of specifying a program’s major parts; their responsibilities,
properties, and interfaces; and the relationships and interactions
among them.
6© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Detailed DesignDetailed Design
Mid- and low-level design Black boxes Detailed design shades into coding
Detailed design is the activity of specifying the internal elements
of all major program parts; their structure, relationships, and processing; and often their
algorithms and data structures.
Detailed design is the activity of specifying the internal elements
of all major program parts; their structure, relationships, and processing; and often their
algorithms and data structures.
7© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Architectural Design Architectural Design SpecificationsSpecifications
Decomposition—Program parts or modules Responsibilities—Data and behavior Interfaces—An interface is a boundary
across which entities communicate. Collaborations—Who does what when? Relationships—Uses, dependencies, etc. Properties—Performance, reliability, etc. States and Transitions—Externally visible
DeSCRIPTR
8© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Detailed Design Detailed Design SpecificationsSpecifications
Decomposition—Sub-system parts or units Responsibilities—Data and behavior Interfaces—Public features Collaborations—Who does what when? Relationships—Inheritance, associations, etc. Properties—Performance, reliability, etc. States and Transitions—Externally visible Packaging and Implementation—Scope, visibility,
etc. Algorithms, Data Structures, and Types—Maybe
DeSCRIPTR-PAID
9© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Engineering Design Engineering Design PrinciplesPrinciples
Design principles are statements about what makes a design better.
• Basic principles state characteristics that make a design better able to meet stakeholder needs and desires.
• Constructive principles state, based on experience, that certain engineering design characteristics make a design better.
10© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Basic PrinciplesBasic Principles
Feasibility—A design is acceptable only if it can be realized.
Adequacy—Designs that meet more stakeholder needs and desires, subject to constraints, are better.
Economy—Design that can be built for less money, in less time, with less risk, are better.
Changeability—Design that make a program easier to change are better.
11© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Constructive PrinciplesConstructive Principles
Modularity principles—Good design are modular; these principles help evaluate whether designs specify good modules.
Implementability principles—Good designs are easier to build; these principles help evaluate whether designs will be easy to implement.
Aesthetic principles—Good design are beautiful; these principles help pick out beautiful designs.
12© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
ModularityModularity
A modular program is composed of well-defined, conceptually simple,
and independent units that communicate through well-defined
interfaces.
A modular program is composed of well-defined, conceptually simple,
and independent units that communicate through well-defined
interfaces.
13© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Advantages of Advantages of ModularityModularity
Easier to understand and explain Easier to document Easier to change Easier to test and debug More reusable Easier to tune
14© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
What Is a Module?What Is a Module?
Immediate parts are those directly below the whole in the parts hierarchy.
Program• Sub-programs or sub-systems
Packages, compilation units Classes, functions
» Attributes, operations, blocks - Lines of code
A module is a program unit with parts.
A module is a program unit with parts.
15© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Modularity Principles 1Modularity Principles 1
Small Modules—Designs with small modules are better.
Information Hiding—Each module should shield the details of its internal structure and processing from other modules.
Least Privilege—Modules should not have access to unneeded resources.
16© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Modularity Principles 2Modularity Principles 2
Coupling—Module coupling should be minimized.
• Coupling is the degree of connection between pairs of modules.
Cohesion—Modules cohesion should be maximized.
• Cohesion is the degree to which a module’s parts are related to one another.
17© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Implementability Implementability PrinciplesPrinciples
Simplicity—Simpler designs are better.
Software reuse is the use of existing artifacts to build new software products; reusable artifacts are called assets.
Design with Reuse—Designs that reuse existing assets are better.
Design for Reuse—Designs that produce reusable assets are better.
18© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Aesthetic PrinciplesAesthetic Principles
Beauty—Beautiful (simple and powerful) design are better.
Are there other aesthetic principles?• Symmetry• Balance• Proportion
19© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Relationships Among Relationships Among PrinciplesPrinciples
Some principles usually support one another.
• Cohesion, Coupling, Information Hiding• Simplicity, Beauty• Simplicity, Small Modules
Some principles are often in conflict.• Simplicity, Design for Reuse• Small Modules, Design for Reuse• Cohesion, Small Modules
Support or conflict may depend on the case at hand.
20© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Design Principles Design Principles TaxonomyTaxonomy
Engineering Design Principles
Basic
Constructive
Feasibility
Adequacy
Changeability
Economy
Modularity
Implementability
Aesthetic
Small Modules
Information Hiding
Least Privilege
Coupling
Cohesion
Simplicity
Design with Reuse
Design for Reuse
Beauty
21© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Summary 1Summary 1
Architectural design is high-level specification of major program parts.
Detailed design is mid-level and low-level specification of program units.
DeSCRIPTR specifications for architectural design
DeSCRIPTR-PAID specifications for detailed design
22© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Summary 2Summary 2
The basic principles of Adequacy, Economy, Feasibility, and Changeability are about meeting stakeholder needs.
The constructive principles are based on engineering experience.
• Modularity principles: Small Modules, Information Hiding, Least Privilege, Coupling, and Cohesion
• Implementability principles: Simplicity, and Design with and for Reuse.
• Aesthetic principle: Beauty.