Requirements Engineering Notes
What is Requirements Engineering?
- Requirements Engineering (RE) is the process of identifying, documenting, analyzing, validating, and managing software requirements.
- Purpose: To ensure the system built matches stakeholder needs and is feasible to implement.
Why Requirements Engineering Is Important
- FORMS THE FOUNDATION FOR ALL SDLC PHASES
- REDUCES MISUNDERSTANDINGS AND SCOPE CREEP
- ALIGNS TECHNICAL SOLUTIONS WITH BUSINESS GOALS
- PREVENTS COSTLY REWORK AND PROJECT FAILURE
Requirements Engineering Process
- Elicitation
- Analysis & Negotiation
- Specification
- Validation
- Management
Types of Requirements
- Functional: What the system should do
- Non-functional: Performance, usability, etc.
- Business: Organizational goals
- User: Tasks and expectations
- System: Interfaces, constraints
Requirements Elicitation Techniques
- INTERVIEWS
- SURVEYS / QUESTIONNAIRES
- OBSERVATION
- WORKSHOPS
- DOCUMENT ANALYSIS
- PROTOTYPING
Characteristics of Good Requirements
- S.M.A.R.T:
- Specific
- Measurable
- Achievable
- Relevant
- Time-bound
- Also:
- Complete, Consistent, Verifiable, Modifiable, Traceable
Functional vs. Non-functional Examples
- Functional:
- 'System shall allow users to reset passwords via email.'
- Non-functional:
- 'System shall respond to requests within 2 seconds.'
Conclusion
- REQUIREMENTS ENGINEERING (RE) IS FOUNDATIONAL FOR SUCCESSFUL SOFTWARE PROJECTS.
- IT REQUIRES DISCIPLINE, VALIDATION, AND DOCUMENTATION.
- POOR REQUIREMENTS LEAD TO POOR OUTCOMES.
- USE APPROPRIATE TECHNIQUES AND INVOLVE STAKEHOLDERS EARLY.
Key Requirements Engineering Activities
The RE process includes five key activities:
- 1. Identifying
- 2. Documenting
- 3. Analyzing
- 4. Validating
- 5. Managing
1. Identifying Requirements
- Goal: Discover what stakeholders need.
- Activities: Stakeholder interviews, Surveys and questionnaires, Observations and shadowing, Document reviews and use case development
- Importance: Misunderstood needs lead to incorrect systems.
2. Documenting Requirements
- Goal: Clearly and accurately record requirements.
- Activities:
- Write SRS (Software Requirements Specification)
- Use user stories, use case diagrams, or UML
- Distinguish functional and non- functional requirements
- Importance: Clear documentation ensures shared understanding.
3. Analyzing Requirements
- Goal: Ensure requirements are feasible, complete, and aligned.
- Activities:
- Prioritize using MoSCoW method
- Resolve conflicts and ambiguities
- Perform technical and budget feasibility checks
- Importance: Early analysis prevents rework.
4. Validating Requirements
- Goal: Confirm requirements accurately reflect user needs.
- Activities:
- Walkthroughs and reviews with stakeholders
- Create low-fidelity prototypes
- Validate with test cases
- Gain formal approval
- Importance: Avoids building the wrong system.
5. Managing Requirements
- Goal: Handle changes and maintain requirement consistency.
- Activities:
- Use version control
- Record and analyze change requests
- Maintain traceability (linking requirements to design and test cases)
- Use tools like Jira, Trello, or DOORS
- Importance: Keeps project on track amid changes.