Gegasoft Requirement Engineering Service REQUIREMENT 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 the 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.
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 - discovering, reviewing, documenting, and understanding the user's needs and constraints.
- Requirements analysis - refining the user's needs and constraints.
- Requirements specification - documenting the user's needs and constraints clearly and precisely.
- Requirements verification - ensuring that the system requirements are complete, correct, consistent, and clear.
- Requirements management - scheduling, coordinating, and documenting the requirements engineering activities.