Design

Levels of Design

  1. System
  2. Subsystem
  3. Classes/ Modules
  4. Data and Functions/ Methods
  5. Code

Key Design Concepts

  1. Manage complexity.
  2. Aim for desirable characteristics in the software design.
  3. Respect the different levels of design.

Principles of Design

Design is a Wicked Problem

Design is a Sloppy Process

Prioritization

Restrictions

Design is Nondeterministic

Design is a Heuristic Process

Design is Emergent