(RE) refers to the process of defining
, documenting and maintaining
and to the subfield of
concerned with this process. According to book "No Silver Bullet: Essence and Accidents of
" chapter 20, "The hardest single part of building a software
system is deciding precisely what to build. No other part of the conceptual work
is as difficult as establishing the
detailed technical requirements
. . . No other part of the work so cripples the resulting system
if done wrong. No other part is as difficult to rectify later
So wrote Fred Brooks in 1987, and so it remains today [Davis 1990a, Faulk 1997a]. "The inability to produce complete
unambiguous software requirements
is still considered the major cause of software failure today
are statements of what the system must do
, how it must behave
, the properties it must exhibit
, the qualities it must possess
, and the constraints that the system and its development must satisfy
. The Institute of Electrical and Electronics Engineers (IEEE) defines a requirement as:
- a condition or capability needed by a user to solve a problem or achieve an objective.
- a condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed document.
- a documented representation of a condition or capability as in definition 1 or 2
emphasizes the use of systematic and repeatable techniques
that ensure the completeness
, and relevance of the system requirements
[Sommerville 1997a]. Specifically,
encompasses requirements elicitation
, and management
Requirements elicitation is the process of discovering, reviewing, documenting, and understanding the user's needs and constraints for the system.
Requirements analysis is the process of refining the user's needs and constraints.
Requirements specification is the process of documenting the user's needs and constraints clearly and precisely.
Requirements verification is the process of ensuring that the system requirements are complete, correct, consistent, and clear.
Requirements management is the process of scheduling, coordinating, and documenting the requirements engineering activities (that is, elicitation, analysis, specification, and verification).