Architectual Design Checklist-JPL FUNCTIONALITY 1. Does the design implement all of the specifications and requirements? PERFORMANCE 1. Are the primary performance parameters specified? (e.g., real time, memory size, speed requirements, amount of disk I/O) 2. Do processes have time windows? 3. Does the design reflect the actual operation environment? 4. Is the impact of failure defined? LOGIC 1. Is there missing or incomplete logic? 2. Are of possible states or cases considered? DATA USAGE 1. Is the conceptual view documented for all objects, parameters? 2. Is there any data structure needed that has not been defined? 3. Are all data structures which are defined needed? INTERFACES 1. Is the operator interface designed with the user in mind (e.g., vocabulary, useful messages)? 2. Will the interface facilitate trouble-shooting? 3. Are all interfaces consistent with each other and with related software components? 4. Do all interfaces provide the required types and amounts of information? TESTABILITY 1. Can the module that this design describes be tested or inspected to demonstrate the it satisfies requirements? 2. Can the program set be integrated and tested in an incremental manner? RELIABILITY 1. Does the design provide for error detection and recovery (e.g., is input checking performed)? 2. Are abnormal conditions considered? 3. Does the design satisfy all systems integrity commitments for this product? 4. Are all error conditions/codes/messages specified completely and accurately? MAINTAINABILITY 1. Is information hiding used? Is the design modular? 2. Does each component have high cohesion and low coupling? 3. Does the documentation follow appropriate standards (in-house or industry)? CLARITY 1. Is the architecture, including the data flow, control flow, and interfaces, clearly represented? 2. Are all of the decisions, dependencies, and assumptions for this design documented? TRACEABILITY 1. Are all parts of the design traced back to requirements? CONSISTENCY 1. Are data elements, procedures, and functions and and used consistently throughout the program set and with external interfaces? LEVEL OF DETAIL 1. Is the design of sufficient detail to proceed to the detailed design phase? REUSE 1. Are any new components included which should come from a reuse library? 2. Have all potentially reuseable components been identified?