Nugget: High-level Design
The high-level design course teaches the principles of designing software. This is the course complement to the high-level design practicum and must be taken before or concurrently with this practicum. The high-level design course includes the following topics:
- General design principles including
- Modularity, coupling and cohesion
- Fundamentals of software architecture, including the basic architectural components and styles, architectural descriptions, and architectural analysis.
- Modeling of control structures
- Modeling of data structures
- Techniques for producing a high-level design specification
- Design rationale recording techniques
- Methods for moving from requirements to desing and techniques for tracing and verifying the design back to the requirements.
- Software Architecture in Practice. Bass et al. Addison-Wesley, 1998.
- Handouts on general design and design rationale
- Small projects for practice
- Lots of examples of specified models
- Examples of completed specifications
- Rationale or other general modeling tool
- Word processing program for every student