I'm trying to come up with a checklist or set of questions/criteria to assess and evaluate proposed or emergent architectures (perform architectural reviews). What are the most important questions you ask when trying to plan, assess or review an architecture?

I know this is a large topic so I'd like to constrain it to a single end-to-end system and not the architecture for an entire organization.

Code Complete provides a decent starting point:

Architecture

  • Is the overall organization of the program clear, including a good architectural overview and justification?
  • Are modules well defined, including their functionality and their interfaces to other modules?
  • Are all the functions listed in the requirements covered sensibly, by neither too many or too few modules?
  • Is the architecture designed to accommodate likely changes?
  • Are necessary buy-vs.-build decisions included?
  • Does the architecture describe how reused code will be made to conform to other architectural objectives?
  • Are all the major data structures hidden behind access routines?
  • Is the database organization and content justified?
  • Are all key algorithms described and justified?
  • Are all major objects described and justified?
  • Is a strategy for handling user input described?
  • Is a strategy for handling I/O described and justified?
  • Are key aspects of the user interface defined?
  • Is the user interface modularized so that changes in it won't affect the rest of the program?
  • Are memory-use estimates and a strategy for memory management described and justified?
  • Does the architecture set space and speed budgets for each module?
  • Is a strategy for handling strings described, and are character-string storage estimates provided?
  • Is a coherent error-handli
Edit
Report