Skip to content

Latest commit

 

History

History
53 lines (45 loc) · 1.67 KB

File metadata and controls

53 lines (45 loc) · 1.67 KB

Code Complete Design Checklist

General Goals

  • 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

Practices

  • 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

Essential Questions

  • Has complexity been minimzed as much as possible?
  • Has the design gone through several iterations?
  • Has "What should I hide?" been asked numerous times?

Core Goals

  • 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