The primary measure of success of any software is the degree to which it meets the purpose for which it was intended. Requirements engineering is the process of discovering that purpose by identifying customer needs for the system and the constraints under which it is to be developed and operated.
1. Groundwork: Requirement Engineering is often known as a front-end activity. However, variety of contexts, including market-driven product development and development for a specific customer should also be considered. The identification of a suitable process for requirement engineering and the selection of methods and techniques should also be carried out before collecting requirements.
2. Requirement Elicitation: Identify the stakeholders and understanding the system boundaries. Various techniques like interviews, questionnaires, observation, document review, group workshops and brainstorming are useful in requirement gathering. One simply needs to select the technique or techniques most suitable for the elicitation process.
3. Requirement Analysis and Feasibility Study: Analysis is a repetitive activity in the software development. This phase gives the answers of questions how, what, who, why and when and also test the feasibility and accuracy of existing requirements. Initial design like use-cases can be prepared as a work product of this process.
4. Define Scope: Identify the events inside and outside the system, the information that flows between the system and the actors outside the system and the major functions included in the system.
5. Communication: Documenting requirements at each and every stage of requirement engineering is very crucial for communication. Writing formal and informal documents like Minutes of meeting (MoM), Vision and scope document, System Requirement Specification (SRS) document and taking the approval from stakeholders ensure validation and avoid ambiguity as well as conflicts at the later stages.
6. Change Management: Requirements change throughout the SDLC. How these changed requirements should be accommodated in the software is very challenging task. Each proposed change should be evaluated in terms of existing requirements and architecture so that the trade-off between the cost and benefit of making a change can be assessed.
7. Requirement Traceability: Whatever requirements have been gathered and agreed should be traceable in the final software product to be delivered. Requirements should be reviewed and checked at the each phase of SDLC.