How has the history of design practice influenced the development of methodologies and tools?
How did the evolution of methodologies impact design problem solving?
Where does design as an activity fit in the software process?
Processes? Qualities?
1. External Design -- conceiving, planning out, and specifying the externally observable characteristics of a software product (displays, report formats, data sources and sinks, functional characteristics, performance requirements). This design process begins with analysis phase and continues into the design phase. External design is concerned with refining the requirements and establishing the high level structural view of the system.
2. Internal Design -- conceiving, planning out, and specifying the internal structure and processing details of the software product. The goals of internal design are to specify internal structure and processing details, to record design decisions and indicate why certain alternatives and tradeoffs were chosen, to elaborate the test plan, and to provide a blueprint for implementation, testing and maintenance activities.
2.1 Architectural Design -- is concerned with refining the conceptual view of the system, identifying internal processing functions, decomposing high-level functions into subfunctions, defining internal data streams and data stores, and establishing relationships and interconnections among functions, data streams, and data stores.
2.2 Detailed Design -- is concerned with the specification of algorithms that implement the functions, concrete data structures that implement the data stores, and the actual interconnection among functions and data structures.
| - programming any which way |
Top-down Programming Dijkstra, Levels of Abstraction Wirth, Stepwise Refinement Parnas, Information Hiding |
2) Implementation details should not be addressed until late in the design process.
3) At each level, the function of a module should be explained by at most a single page of instructions or a single page diagram. At the top level, the overall design should be describable in approximately ten or fewer lines of instructions and/or calls to lower-level modules.
4) Data should receive as much design attention as processing procedure because interfaces between modules must be carefully specified..
2) Does not offer enough guidelines on how to subdivide a problem, when to stop subdividing, or how to measure the quality of a design.
3) It relies heavily on experience and judgment of the designer.
4) Appropriate for small, simple programs. It is too informal for large programs.
|
STEP 1: Draw Data Flow Diagram
Represent the problem as the flow of data through a system.
STEP 2: Draw Structure Chart
Represent the program as a hierarchy of functional components. This is derived from the data flow diagram.
STEP 3: Evaluate the Design
STEP 4: Prepare the Design for Implementation
Divide logical design into physical implementation units (load Units).
Late 70s Structured Analysis
|
Early 80s
|
Late 80s
|
Early 90s
|
| Late 90s
|