240 likes | 365 Views
Engineering Design Resolution & Design Principles. Objectives. 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
E N D
Objectives • 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
Topics • 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
Architectural 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.
Detailed Design 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. • Mid- and low-level design • Black boxes • Detailed design shades into coding
Architectural Design Specifications • 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
Detailed Design Specifications • 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
Engineering Design Principles 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.
Basic 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.
Constructive Principles • Modularityprinciples—Good design are modular; these principles help evaluate whether designs specify good modules. • Implementabilityprinciples—Good designs are easier to build; these principles help evaluate whether designs will be easy to implement. • Aestheticprinciples—Good design are beautiful; these principles help pick out beautiful designs.
Modularity A modular program is composed of well-defined, conceptually simple, and independent units that communicate through well-defined interfaces.
Advantages of Modularity • Easier to understand and explain • Easier to document • Easier to change • Easier to test and debug • More reusable • Easier to tune
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.
Modularity Principles 1 • SmallModules—Designs with small modules are better. • InformationHiding—Each module should shield the details of its internal structure and processing from other modules. • LeastPrivilege—Modules should not have access to unneeded resources.
Modularity 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.
Implementability Principles • Simplicity—Simpler designs are better. • Software reuse is the use of existing artifacts to build new software products; reusable artifacts are called assets. • Design withReuse—Designs that reuse existing assets are better. • Design forReuse—Designs that produce reusable assets are better.
Aesthetic Principles • Beauty—Beautiful (simple and powerful) design are better. • Are there other aesthetic principles? • Symmetry • Balance • Proportion
Relationships Among Principles • 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.
Summary 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
Summary 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.