Requirement Engineering

A requirement is a feature that the system must have or a constraint that it must satisfy to be accepted by the client. The process of collecting the software requirement from the client then understanding, evaluating, and documenting it is called as requirement engineering.

Figure 2.1 The requirement engineering activities.

Figure 2.1 The requirement engineering activities.

It is a discipline that involves establishing and documenting requirements. The various activities associated with requirements engineering are:

  1. Requirements Inception: Start the process (identification of business need, new market opportunity, great ideas).
  2. Requirements Elicitation: Requirements discovered through consultation with stakeholders.
  3. Requirements Analysis and Negotiation: Requirements are analyzed and conflicts resolved.
  4. Requirements Specification: A precise requirements document is produced.
  5. Requirements Validation: The requirements document is checked for consistency and completeness.
  6. Requirements Management: Needs and contexts evolve, and so do requirements.

They all serve to establish a solid foundation for the design and construction of the software. As published by the National Institute of Standards Technology (NIST):

The report concludes that extensive testing is essential, as the cost for correction gets more expensive after each phase.

Requirement Categories

A comprehensive set of requirements is crucial for any software project. During a systems development project, requirements will be described into three categories: