Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Design: Principles, Process, and Concepts Getting Started with Design.

Similar presentations


Presentation on theme: "Software Design: Principles, Process, and Concepts Getting Started with Design."— Presentation transcript:

1 Software Design: Principles, Process, and Concepts Getting Started with Design

2 General Information on Design Analysis (requirements) model vs. design model End User vs. Developer Function and behavior (what) vs. architecture, interface, and component (how) Primary views of the design Data/Classes: necessary information, data structures, data stores, objects and actors Architecture: Overall “big picture” of relationships among system elements, design framework and patterns Deployment: How system is hosted in target environment (i.e., what computers, data files, networks, and/or other infrastructure). Interfaces: user, external, and internal Components: refinement of visible object classes to include system, support, and utility classes.

3 Design Modeling: Principles Design should result from analysis Design should consider s/w architecture first Give thought to data structures (foundation of design). Good data design simplifies components. Give extra care to communicate across interfaces Keep user in mind when creating UI, stress easy use, not easy implementation. Keep components cohesive (functionally independent) Keep components loosely coupled (simple interfaces) Keep your designs (and design descriptions) simple and easily understood Develop the design iteratively See task set on pg 112 6/e (and more detailed on pg 222 7/e, pg 232 6/e)

4 Design Modeling: Process Class Modeling Examine analysis class diagrams for data characteristics: content, pervasiveness, sharing, flow, transformation, persistence Examine analysis class diagrams and use cases for problem domain actors and objects, processes, constraints, and interfaces Architecture Modeling Identify all major system components Determine relationships among major components, business processes, system elements Apply design framework or pattern (if appropriate) Interface Design Three interface types: user, external and internal Component-Level Design Elaborate and refine detail of major components Add helper, system and utility classes as required Re-factor as required

5 Design Modeling: Concepts Abstraction: allows us to handle complexity Architecture: organizes program components Patterns: when applicable, provides insight or guidance for design choices Modularity: the mechanism for implementing abstractions Information Hiding: inhibits side effect errors Functional Independence: low coupling and high cohesion Refinement: the manner in which designs are elaborated Refactoring: improving the internal structure of the design or code

6 Additional Points of Emphasis Diversification and convergence (pg 216 7/e, pg227 6/e) Quality Attributes (pgs 220-221 7/e, pgs 231-232 6/e) Functionality Usability Reliability Performance Supportability Design Classes (pg 230 7/e, pg 239 6/e) UI Classes Business Domain Classes Process Classes Persistent Classes System Classes Application-specific classes


Download ppt "Software Design: Principles, Process, and Concepts Getting Started with Design."

Similar presentations


Ads by Google