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-handling strategy provided?
 - Are error messages managed as a set to present a clean user interface?
 - Is a level of robustness specified?
 - Is any part over- or under-architected? Are expectations in this area set out explicitly?
 - Are the major system goals clearly stated?
 - Does the whole architecture hang together conceptually?
 - Is the top-level design independent of the machine and language that will be used to implement it?
 - Are the motivations for all major decisions provided?
 - Are you, as a programmer who will implement the system, comfortable with the architecture?
 
I'm looking for practical knowledge with examples, e.g., what were the most painful points in an architecture you've created?