- Issues identified in the architecture are addressed
- Design is stratified into layers
- You are happy with how the system has been decomposed
- subsystems
- packages
- classes
- routines
- Classes are designed for minimal interaction with each other?
- Classes and subsystems designed such that they could be used in other systems
- Program will be easy to maintain
- Design is lean
- Design uses standard techniques
- Nothing exotic
- Nothing hard to understand
- Design minimizes complexity
- Accidential
- Essential
- Has the best design out of several iterations been selected?
- several iterations actually done
- System has been decomposed in several different ways
- decomposed one way
- decomposed another
- System been approached
- Top-down
- Bottom-up
- Rapid prototypes for
- Risky components of the system
- Unfamilliar components
- Design reviewed by others
- Formally or informally
- Design is at the point where implementation is obvious
- Design work has been properly documented
- Has complexity been minimzed as much as possible?
- Has the design gone through several iterations?
- Has "What should I hide?" been asked numerous times?
- Complexity is at an absolute minimum
- Design is as modular as possible
- Everything is as black boxed as possible
- Interfaces are simple and intuitive
- Functionality of each block is well defined