High-Level Design ------------------------------------------------------------------------ * Have you used round-trip design, selecting the best of several attempts rather than the first attempt? * Is the design of the current subprogram consistent with the design of related subprograms? * Does the design adequately address issues that were identified and deferred at the architectural level? * Are you satisfied with the way the program has been decomposed into modules or objects? * Are you satisifed with the way that modules have been decomposed into routines? * Are subprogram boundaries well-defined? * Are subprograms designed for minimal interaction with each other? * Does the design make sense both from the top down and the bottom up? * Does the design differentiate between the problem-domain component, the user-interface component, the task-management component and the data-management component? * Is the design intellectually manageable? * Does the design have low complexity? * Will the program be easy to maintain? * Does the design hold connections among subprograms to a minimum? * Does the design account for future extensions to the program? * Are subprograms designed so that you can use them in other systems? * Do low-level routines have high fan-in? * Do most routines have low-to-medium fan-out? * Will the design be easy to port to another environment? * Is the design lean? Are all of its parts strictly necessary? * Is the design stratified into layers? * Does the design use standard techniques and avoid exotic, hard-to-understand elements? ------------------------------------------------------------------------ Copyright © 1996-1998 Construx Software Builders, Inc.