Fork me on GitHub

Good Requirements


The aspects of good requirements

Requirements are very hard to write well. Customers frequently get them very very wrong. It is the role of the architect (and project manager to some extent) to analyse the requirements captured from the customer and encode them in a way which makes them ‘good’.

Good requirements have a few simple characteristics:

  1. Unitary (Cohesive): The requirement address one and only one thing.
  2. Complete: The requirement is fully stated in one place with no missing information.
  3. Consistent: The requirement does not contradict any other requirement and is fully consistent with all authoritative external documentation
  4. Non-conjugated (Atomic): The requirement is atomic, i.e., it does not contain conjunctions. E.g., “The postal code field must validate American and Canadian postal codes” should be written as two separate requirements:

    1. “The postal code field must validate American postal codes”
    2. “The postal code field must validate Canadian postal codes”.
  5. Traceable: The requirement meets all or part of a business need as stated by stakeholders and authoritatively documented.
  6. Current: The requirement has not been made obsolete by the passage of time.

  7. Unambiguous: The requirement is concisely stated without recourse to technical jargon, acronyms (unless defined elsewhere in the Requirements document), or other esoteric verbiage. It expresses objective facts, not subjective opinions. It is subject to one and only one interpretation. Vague subjects, adjectives, prepositions, verbs and subjective phrases are avoided. Negative statements and compound statements are avoided.
  8. Prioritised: Many requirements represent a stakeholder-defined characteristic the absence of which will result in a major or even fatal deficiency. Others represent features that may be implemented if time and budget permits. The requirement must specify a level of importance.
  9. Verifiable: The validity of the implementation of the requirement can be determined through basic possible methods.
  10. (The above was ‘borrowed’ from Wikipedia’s Requirement article: http://en.wikipedia.org/wiki/Requirement)