Architecture ------------------------------------------------------------------------ * Is the overall program organization clear, including a good architectural overview and justification? * Are modules well-defined including their functionality and interfaces to other modules? * Are all the functions that are listed in the requirements covered sensibly, neither by too many nor too few modules? * Are all major data structures described and justified? * Are major data structures hidden with access functions? * Is the database organization and content specified? * Are all key algorithms described and justified? * Are all major objects described and justified? * Is the user interface modularized so that changes in it won't affect the rest of the program? * Is a strategy for handling user input described? * Are key aspects of the user interface defined? * 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 included? * Is a strategy for handling I/O described and justified? * Is a coherent error-handling strategy included? * Are error messages managed as a set to present a clean user interface? * Is a level of robustness specified? * Are necessary buy vs. build decisions included? * Is the architecture designed to accommodate likely changes? * Is any part over- or under-architected? * Are the major system goals clearly stated? * Does the complete architecture hang together conceptually? * Is the top-level design independent of the machine and language that will be used to implement it? * Are motivations given for all major decisions? * Are you, as a programmer who will implement the system, comfortable with the architecture? ------------------------------------------------------------------------ Copyright © 1996-1998 Construx Software Builders, Inc.