Requirements

A requirement is a condition or capability needed by a user to solve a problem or achieve an objective, or to satisfy a contract, standard, or specification. Requirements are the inputs to software design and delivery. They describe what stakeholders need from a system, and the constraints under which it must operate, before any decision is made about how to build it.

The most fundamental classification splits requirements into functional requirementswhat the system should do – and non-functional requirementshow well it should do it. A second, orthogonal axis distinguishes user requirements – high-level statements of need, written in the language of stakeholders and end users – from system requirements – detailed descriptions of what the system must do to meet those needs. User requirements are typically captured in a product requirements document (PRD) and elaborated into a system requirements specification (SRS) as a change moves through design and delivery.

Qualities of good requirements

Well-written requirements share a set of qualities, regardless of type. Each requirement should be:

  • Necessary. It traces back to a real stakeholder need, not an assumption or a nice-to-have.
  • Unambiguous. A reader cannot reasonably reach two different conclusions about what it means.
  • Testable. There is a clear procedure that yields a pass or fail result.
  • Feasible. It can be met within the project’s technical, financial, and schedule constraints.
  • Complete and consistent. It is not missing information needed to act on it, and it does not contradict other requirements.
  • Traceable. Each requirement can be traced forward into the design and tests that satisfy it, and backward to the stakeholder need that originated it.

The discipline of eliciting, analyzing, specifying, and validating requirements is called requirements engineering. Validation typically proceeds through acceptance criteria derived from each requirement, which acceptance testing then verifies the delivered system against.

References