Note that there are some explanatory texts on larger screens.

plurals
  1. POWhat should be included in an Application Architecture checklist?
    text
    copied!<p>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? </p> <p>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.</p> <p><em>Code Complete</em> provides a decent starting point:</p> <blockquote> <p>Architecture</p> <ul> <li>Is the overall organization of the program clear, including a good architectural overview and justification?</li> <li>Are modules well defined, including their functionality and their interfaces to other modules?</li> <li>Are all the functions listed in the requirements covered sensibly, by neither too many or too few modules?</li> <li>Is the architecture designed to accommodate likely changes?</li> <li>Are necessary buy-vs.-build decisions included?</li> <li>Does the architecture describe how reused code will be made to conform to other architectural objectives?</li> <li>Are all the major data structures hidden behind access routines?</li> <li>Is the database organization and content justified?</li> <li>Are all key algorithms described and justified?</li> <li>Are all major objects described and justified?</li> <li>Is a strategy for handling user input described?</li> <li>Is a strategy for handling I/O described and justified?</li> <li>Are key aspects of the user interface defined?</li> <li>Is the user interface modularized so that changes in it won't affect the rest of the program?</li> <li>Are memory-use estimates and a strategy for memory management described and justified?</li> <li>Does the architecture set space and speed budgets for each module?</li> <li>Is a strategy for handling strings described, and are character-string storage estimates provided?</li> <li>Is a coherent error-handling strategy provided?</li> <li>Are error messages managed as a set to present a clean user interface?</li> <li>Is a level of robustness specified?</li> <li>Is any part over- or under-architected? Are expectations in this area set out explicitly?</li> <li>Are the major system goals clearly stated?</li> <li>Does the whole architecture hang together conceptually?</li> <li>Is the top-level design independent of the machine and language that will be used to implement it?</li> <li>Are the motivations for all major decisions provided?</li> <li>Are you, as a programmer who will implement the system, comfortable with the architecture?</li> </ul> </blockquote> <p>I'm looking for practical knowledge with examples, e.g., what were the most painful points in an architecture you've created? </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload