130 likes | 225 Views
Design. Analysis -> Design . Detailed DFDs; Flowchart; N-S chart; pdl; component level designs. Structural components and procedural description of software Layout and interaction mechanisms for human-machine interaction; Internal and external interfaces
E N D
Analysis -> Design Detailed DFDs; Flowchart; N-S chart; pdl; component level designs Structural components and procedural description of software Layout and interaction mechanisms for human-machine interaction; Internal and external interfaces Relationships among major structural components of program; Patterns and styles Information domain model created during analysis data structures and database model Procedural design Scenario-based diagrams Interface design Structure Chart UML class hierarchy Architectural design Class diagrams Data design
Design Principles • Design not equal to coding!!! • Design should: • Consider alternative approaches • Be traceable to analysis model • Be structured to accommodate change • Degrade gently • Assess for quality while creating design • Be reviewed • Design derived from repeatable method driven by information in req. analysis phase.
Fundamental Concepts of Good Design • Abstraction • Solution stated in problem environment • Data, procedure, control • Refinement:Top-down design strategy • Software Architecture • Hierarchical structure of procedural components
Concepts of Good Design • Modularity • Easier to solve problems when broken up (logical partition) • “size” based on independent functional characteristics (high cohesion and low coupling) • Lead to interfaces with reduced complexity
Concepts of Good Design cont. • Information Hiding • Controlled interfaces • Use of patterns that convey essence of a proven design solution • Refactoring – a reorganization technique that simplifies the design
Refactoring • Fowler [FOW99] defines refactoring as: "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code [design] yet improves its internal structure.” • When software is refactored, the existing design is examined for • redundancy • unused design elements • inefficient or unnecessary algorithms • poorly constructed or inappropriate data structures • or any other design failure that can be corrected to yield a better design.
Design Patterns • Best designers have an uncanny ability to see patterns and combine them to create a solution • A description of a design pattern may also consider Design forces describe non-functional requirements (e.g., ease of maintainability, portability) associated with the software • The pattern characteristics (classes, responsibilities, and collaborations) indicate the attributes of the design that may be adjusted to enable the pattern to accommodate a variety of problems.
Frameworks • A frameworkis not an architectural pattern, but rather a skeleton with a collection of “plug points” (or hooks and slots) that enable it to be adapted to a specific problem domain. • Note that: • Design patterns are more abstract, less specialized and have smaller architectural elements than frameworks. • In an OO context, a framework is a collection of collaborating classes
Assessment of Design Notations • Design notations should • Support modularity • Be simple • Be easy to edit • Be machine readable • Maintainable • Enforce structure • Represent data • Goal of automatic verification • “code-to” ability
Design Post-Processing • Processing narratives for each module • Interface description for each module • Local/global data structures defined • All design restrictions/limitations noted • Conduct design review • Consider optimization