Does the (software) product have a succinct name, and a clearly
described purpose?
Are the characteristics of users and of typical usage
mentioned? (No user categories missing.)
Are all external interfaces of the software explicitly mentioned?
(No interfaces missing.)
Does each specific requirement have a unique identifier?
Is each requirement atomic and simply formulated?
(Typically
a single sentence. Composite requirements must be split.)
Are requirements organized into coherent groups? (If necessary,
hierarchical; not more than about ten per group.)
Is each requirement prioritized? (Is the meaning of the priority
levels clear?)
Are all unstable requirements marked as such? (TBC=`To Be
Confirmed', TBD=`To Be Defined')
Is each requirement verifiable (in a provisional acceptance test)?
(Measurable: where possible, quantify; capacity, performance, accuracy)
Are the requirements consistent? (Non-conflicting.)
Are the requirements sufficiently precise and unambiguous?
(Which interfaces are involved, who has the initiative, who supplies what
data, no passive voice.)
Are the requirements complete? Can everything not explicitly
constrained indeed be viewed as developer freedom?
Is a product that satisfies
every requirement indeed acceptable? (No requirements missing.)
Are the requirements understandable to those who will need to work
with them later?
Are the requirements realizable within budget?
Do the requirements express actual customer needs (in the language
of the problem domain), rather than solutions
(in developer jargon)?