Are all the inputs to the system specified including
their source, accuracy, range of values, and frequency?
Are all the outputs from the system specified
including their destination, accuracy, range of values, frequency, and
format?
Are all the report formats specified?
Are all the external hardware and software interfaces
specified?
Are all the communication interfaces specified
including handshaking, error checking, and communication protocols?
Is the expected response time, from the user's
point of view, specified for all necessary operations?
Are other timing considerations specified, such
as processing time, data transfer, and system throughput?
Are all the tasks the user wants to perform specified?
Does each task specify the data used in the task
and data resulting from the task?
Is the level of security specified?
Is the reliability specified including the consequences
of software failure, vital information protected from failure, error detection,
and recovery?
Are acceptable tradeoffs between competing attributes
specified, for example, between robustness and correctness?
Is maximum memory specified?
Is the maximum storage specified?
Is the definition of success included? Of failure?
Is the maintainability of the system specified,
including the ability to respond to changes in the operating environment,
interfaces with other software, accuracy, performance, and additional predicted
capabilities?
Requirements Completeness
Where information isn't available before development
begins, are the areas of incompleteness specified?
Are the requirements complete in the sense that
if a product satisfies every requirement, it will be acceptable?
Are you uneasy about any part of the requirements?
Are some parts impossible to implement and included just to please your
customer or boss?
Requirements Quality
Are the requirements written in user language?
Do the users think so?
Do all the requirements avoid conflicts with other
requirements?
Do the requirements avoid specifying the design?
Are the requirements at a fairly consistent level?
Should any requirement be specified in more detail? Should any requirement
be specified in less detail?
Are the requirements clear enough to be turned
over to an independent group for implementation and still be understood?
Is each item relevant to the problem and its solution?
Can each item be traced to its origin in the problem environment?
Is each requirement testable? Will it be possible
for independent testing to determine whether each requirement has been
satisfied?
Are all possible changes to the requirements specified
including the likelihood of each change?