Concept: Requirements
A requirement is defined as "a condition or capability to which a system must conform".
Relationships
Main Description

Formally a requirement "is a condition or capability to which the system must conform".

Informally requirements are the "TO-DO list" of the project project team.

Requirements define what is needed and focus the project team.  They are the primary method used to communicate the goals of the project to everyone on the project team.

Requirements define:
  • What the users want; and
  • What the system must to to satisfy the user and business needs

Requirements are the basis for capturing and communicating needs, managing expectations, prioritizing and assigning work, verifying and validating the system (acceptance) and managing scope.

Requirements may take different forms including Use Cases and Scenarios, unstructured text, structured text or a combination and may be stated at different levels of abstraction.

At the highest level of abstraction, "Features" define the services that the system must provide to solve the customers problem.  These are captured as structured or unstructured text in the Artifact: Vision.

At the next level of abstraction, Use Cases define the functionality that the system must provide to deliver the required Features.  These are captured as Artifact: Use Case that describe the sequence of actions performed by the system to yield an observable result of value.

A system must perform according to a behavior specified in use cases. But there are system requirements that do not represent a specific behavior. Such requirements include:

  • Legal and regulatory requirements, and application standards
  • Quality attributes of the system to be built, including usability, reliability, performance, and supportability requirements
  • Interface requirements to external systems
  • Design constraints such as those for operating systems and environments and compatibility with other software

These quality requirements are often refered to as "non-functional" requirements but this should not be interpreted as requirements with no function.

Quality requirements that apply to the system as a whole are captured as structured text in Artifact: Supporting Requirements.  Quality requirements that are intimately associated with a particular use case are often captured in the use-case itself in order to simplify review, understanding and maintenance.