Software Requirements Checklist-JPL FUNCTIONALITY 1. Are all described functions necessary and sufficient to meet the mission objectives? 2. Are all inputs to a function necessary and sufficient to perform the required operations? 3. Are all the outputs produced by a function used by another functions trasferred across an external interface? PERFORMANCE 1. Are required attributes, assumptions, and constraints of the subsystem completely listed? 2. Are "don't care" conditions reuly "don't care"? Are "don't care" conditions explicitly stated? (Consider portability to identify "don't care" conditions.) DATA USAGE 1. Are the requirements for stored data defined? 2. Have the operations on stored data been defined? Are the adequate and necessary? INTERFACE 1. Are the interfaces consistent? 2. Are the inuts and outpus for all the interfaces sufficient and necessary? TESTABILITY 1. Can the subsytem that the requirements describe be tested to demonstrate, or inspedted to show, that it satisfies the requirements? RELIABILITY 1. Are normal operations conditions/errors taken into account? 2. Are special states considered? (e.g., cold starts, abnormal termination) 3. Are the initial states defined? 4. Is error checking and recovery required? 5. Are undesired events (e.g., single event upset, data loss or scrambling, operator error) considered and their required responses specified? 6. Have assumptions about intended sequences of functions been stated? Are these sequences required? CONSISTENCY 1. Are the requirements consistent within the functional description? (i.e., do the requirements contradict each other?) 2. Are the requirements consistent across functional descrption boundaries? (i.e., the requirements in related documents do not contradict those being reviewed?) 3. Are the requirements consistent with the source documents? 4. Are the requirements consistent with the actual operating environment? (Check hardware timing, precision, event sequencing, data rates, bandwidth, ... ) TRACEABILITY 1. Are all functions, structures, cand constraints traced to requirements, and vice versa? 2. Is each requirement stated in a manner that it can be uniquely referenced in subordinate documents? GRASIBILITY 1. Do the sum fo the requirements stay within the capability of the hardware or operations components from the higher level requirements? MAINTAINABILITY 1. Are there an requirements for software maintainability? (There should be if the system is expected to be upgraded or modified during its mission life.) 2. Are changes manabeable? Are the requirements weakly couplec? (i.e., changing a function will not have adverse and unexpected effects throughout the system.) 3. Does this document follow the project documentation standard? JPS's standard? CLARITY 1. Are the goals of the subsystem defiend? 2. Are the user requirements and priorities defined? Is the "user" defined? 3. Are major inputs and outputs described? Are samples of I/O included where possible? 4. Are software approaches, techniques, and method details kept separate from the requirements, so as not to obscure the original requirements? 5. Is the terminology in subject matter terms? (i.e., is the terminology consistent with the user and/or sponsor's terminology?) 6. Are the requirements clear and unambigious? (i.e., are there any aspects about the requirements that you do not understand, or can be misinterpreted?) LEVEL OF DETAIL 1. Are the requirementss free of design? 2. Do these requirements have enough detail to proceed to the next phase of the life cycle? 3. Have alll "TBDs" been resolved? 4. Has responsibility for all shared data, functions, and requirements been allocated?