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.
It is a discipline that involves establishing and documenting requirements. The various activities associated with requirements engineering are:
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.
A comprehensive set of requirements is crucial for any software project. During a systems development project, requirements will be described into three categories: