Requirement Engineering is the process of defining, documenting and maintaining the requirements. It is a process of gathering and defining service provided by the system. Most requirements change during the lifetime of a product. Quality requirements such as safety, security and performance can interfere with each other. Requirements engineering is essential for successful projects and for market success. But, still inadequate requirements engineering is the main reason for canceled projects or projects that do not reach their goals.
The following are the main processes for requirements engineering:

Requirements Elicitation:
It is related to the various ways used to gain knowledge about the project domain and requirements. The various sources of domain knowledge include customers, business manuals, the existing software of same type, standards and other stakeholders of the project.
The techniques used for requirements elicitation include interviews, brainstorming, task analysis, Delphi technique, prototyping, etc. Elicitation does not produce formal models of the requirements understood. Instead, it widens the knowledge domain of the analyst and thus helps in providing input to the next stage.

Requirements specification:
This activity is used to produce formal software requirement models. All the requirements including the functional as well as the non-functional requirements and the constraints are specified by these models in totality. During specification, more knowledge about the problem may be required which can again trigger the elicitation process.
The models used at this stage include ER diagrams, data flow diagrams(DFDs), function decomposition diagrams(FDDs), data dictionaries, etc.

Requirements verification and validation:
Verification: It refers to the set of tasks that ensure that software correctly implements a specific function.
Validation: It refers to a different set of tasks that ensure that the software that has been built is traceable to customer requirements.
If requirements are not validated, errors in the requirements definitions would propagate to the successive stages resulting in a lot of modification and rework.
The main steps for this process include:

  • The requirements should be consistent with all the other requirements i.e no two requirements should conflict with each other.
  • The requirements should be complete in every sense.
  • The requirements should be practically achievable.

Reviews, buddy checks, making test cases, etc. are some of the methods used for this.

Requirements management: 
Requirement management is the process of analyzing, documenting, tracking, prioritizing and agreeing on the requirement and controlling the communication to relevant stakeholders. This stage takes care of the changing nature of requirements. It should be ensured that the SRS is as modifiable as possible so as to incorporate changes in requirements specified by the end users at later stages too. Being able to modify the software as per requirements in a systematic and controlled manner in an extremely important part of the requirements engineering process.