R
EQUIREMENT ENGINEERING
(RE) refers to the
process of defining, documenting and maintaining
software
requirements
and to the subfield of
Software Engineering
concerned with this process.
According to book "No Silver Bullet: Essence and Accidents of
Software Engineering
" 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,
correct, and
unambiguous software
requirements
is still considered the
major cause of software failure today.
Requirements
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
Requirement Engineering
emphasizes the use of
systematic and repeatable techniques
that
ensure the completeness,
consistency, and
relevance of the
system requirements [Sommerville 1997a]. Specifically,
Requirement Engineering
encompasses
requirements elicitation,
analysis,
specification,
verification, and
management, where
-
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).