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. Requirements Engineering Process consists of the following main activities:
- Requirements elicitation
- Requirements specification
- Requirements verification and validation
- Requirements management
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. Some of these are discussed here. 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.
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.
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.
- Software Engineering | Project size estimation techniques
- Types of Software Testing
- Software Testing | Basics
- Software Engineering | Architectural Design
- Software Engineering | Halstead’s Software Metrics
- Beta Testing | Software Testing
- Software Engineering | Debugging Approaches
- Software Engineering | COCOMO Model
- Software Engineering | Classification of Software Requirements
- Software Engineering | Classical Waterfall Model
- Software Engineering | Iterative Waterfall Model
- Software Engineering | Spiral Model
- Software Engineering | Requirements Elicitation
- Software Engineering | System configuration management
- Software Engineering | Challenges in eliciting requirements
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.