46
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