Software EngineeringUnit 310 min read
Requirements Engineering: Elicitation, Analysis, Validation & Documentation
Unit 3 of Software Engineering covers the systematic process of discovering, analyzing, specifying, and validating software requirements—from stakeholder interviews to use cases, SRS documents, and prototyping—with real-world examples from Nepali apps like eSewa and Kathmandu traffic management.
TAKEAWAYS:
- Requirements engineering bridges the gap between user needs and technical solutions through structured elicitation, analysis, and validation techniques.
- Elicitation techniques (interviews, surveys, observations) uncover raw requirements, while analysis refines them into clear, testable specifications.
- A Software Requirements Specification (SRS) document is the contract between developers and stakeholders, defining functional/non-functional requirements.
- Prototyping and use cases help validate requirements before development begins, reducing costly rework.
- Common pitfalls include ambiguous requirements, scope creep, and ignoring non-functional constraints (performance, security).
- Agile vs. traditional approaches differ in how requirements are documented (user stories vs. formal SRS).
Core Concepts: What Are Requirements?
Requirements are descriptions of what a system should do (functional) or how it should perform (non-functional). They answer:
- Functional: "What should the system accomplish?" (e.g., "eSewa should allow users to pay utility bills online.")
- Non-functional: "How well should it do it?" (e.g., "The system must process 10,000 transactions per minute during peak hours.")
Why it matters: Poor requirements lead to failed projects (e.g., London’s £18B Heathrow Terminal 5 overrun due to unclear specs). Clear requirements save time, money, and frustration.
The Requirements Engineering Process
stateDiagram-v2
[*] --> Discover: Elicitation (Interviews, Surveys, etc.)
Discover --> Analyze: Refine & Prioritize
Analyze --> Specify: Document (SRS, Use Cases)
Specify --> Validate: Prototypes, Reviews
Validate --> Manage: Change Control
Manage --> [*]1. Elicitation: Uncovering Raw Requirements
Goal: Extract needs from stakeholders (users, clients, domain experts). Techniques (with real-world Nepali examples):
| Technique | How It Works | Example in Nepal | Pros | Cons |
|---|---|---|---|---|
| Interviews | Direct Q&A with stakeholders. | NTC engineers interviewing villagers for smart meter requirements. | Deep insights, flexible. | Time-consuming, biased. |
| Surveys/Questionnaires | Structured questions to many users. | Daraz sending feedback forms after orders. | Scalable, quantifiable. | Low response rate, shallow. |
| Observations | Watch users interact with existing systems. | Pathao drivers observed for ride-hailing app pain points. | Unbiased, real-world data. | Labor-intensive, invasive. |
| Workshops | Collaborative brainstorming sessions. | Kathmandu traffic police + app devs designing a congestion alert system. | Fast, consensus-building. | Dominated by loud voices. |
| Document Analysis | Review existing manuals, reports. | NEPSE studying old trading rules for a new stock app. | Low-cost, historical data. | Outdated or incomplete. |
| Prototyping | Build a mockup to clarify needs. | eSewa’s team creating a wireframe for mobile bill payments. | Early feedback, reduces ambiguity. | Time/money upfront. |
Worked Example: eSewa’s Bill Payment System
- Problem: Users struggled to pay utility bills via mobile.
- Elicitation:
- Interview: 50+ users asked, "What’s your biggest pain point?" → 60% said "manual entry errors."
- Observation: Watching users fill paper forms revealed confusion over due dates.
- Prototype: A clickable mockup showed users could select bills from a dropdown.
- Outcome: Reduced errors by 70% in the final app.
2. Analysis: Refining Requirements
Goal: Convert raw inputs into clear, consistent, and prioritized requirements. Steps:
- Classify:
- Functional (e.g., "System shall generate receipts").
- Non-functional (e.g., "Response time < 2s for 95% of requests").
- Prioritize (MoSCoW method):
- Must have (e.g., login system for eSewa).
- Should have (e.g., push notifications).
- Could have (e.g., voice commands).
- Won’t have (e.g., blockchain for now).
- Resolve Conflicts:
- Example: "Users want free delivery (non-functional), but Daraz needs to profit." → Compromise: "Free delivery for orders > Rs. 1,000."
Visual: MoSCoW Prioritization
pie
title MoSCoW Prioritization for a Banking App
"Must Have (Login, Transactions)" : 40
"Should Have (Biometrics, Notifications)" : 35
"Could Have (Chatbot)" : 15
"Won’t Have (Cryptocurrency)" : 103. Specification: Documenting Requirements
Output: A Software Requirements Specification (SRS) document, the contract between developers and stakeholders. Key Sections of an SRS:
mindmap
root((SRS Document))
Introduction
Overall Description
Product Perspective
Product Functions
User Characteristics
Specific Requirements
Functional Requirements (Use Cases)
Non-Functional Requirements (Performance, Security)
Appendices (Glossary, Prototypes)Worked Example: Ncell’s Mobile Recharge App Functional Requirement: "The system shall allow users to recharge any prepaid number using their saved card details with a success rate of 99.9%."
Non-Functional Requirements:
| Category | Requirement | Example for Ncell |
|---|---|---|
| Performance | Response time | "Recharge confirmation in < 3s for 90% of users." |
| Security | Data protection | "PCI-DSS compliance for card data." |
| Usability | User interface | "5-star rating on Google Play for ease of use." |
| Reliability | Availability | "99.99% uptime during peak hours (6–9 PM)." |
4. Validation: Ensuring Correctness
Goal: Confirm requirements meet stakeholder needs before coding. Techniques:
- Prototyping: Build a low-fidelity (paper) or high-fidelity (interactive) mockup.
- Example: Kathmandu Traffic Police prototyped a real-time congestion map using Google Maps API before building the app.
- Use Cases: Narrative descriptions of system interactions.
- Example Use Case: "User pays utility bill via eSewa."
Actor: Registered User Precondition: User logged in, bill due. Main Steps: 1. User selects "Pay Bill" from menu. 2. System displays list of due bills. 3. User selects bill and payment method. 4. System processes payment and sends SMS confirmation. Postcondition: Bill status updated to "Paid."
- Example Use Case: "User pays utility bill via eSewa."
- Reviews: Walkthroughs with stakeholders.
- Example: NEPSE’s team reviewed trading app requirements with brokers to catch a missing "short-selling rule."
5. Management: Handling Changes
Problem: Requirements evolve (e.g., Daraz adding "same-day delivery" after seeing Amazon Prime’s success). Solutions:
- Change Request Form: Document, approve, and track changes.
- Version Control: Track SRS revisions (e.g., "SRS_v1.2: Added dark mode").
- Impact Analysis: Ask, "How will this change affect cost/time?"
In the Real World
eSewa’s Bill Payment System
- Idea Used: Prototyping + Use Cases
- How: Before coding, eSewa’s team created a clickable prototype showing users how to pay bills. They validated it with 100+ users, leading to changes like adding a "save payment method" feature. This reduced the final app’s error rate by 65%.
Pathao’s Driver App
- Idea Used: Observations + Non-Functional Requirements
- How: Pathao observed drivers struggling with GPS accuracy in Kathmandu’s narrow streets. They added a "manual pin drop" feature and specified "GPS error margin < 10 meters in urban areas" in the SRS.
NTC’s Smart Meter Rollout
- Idea Used: Workshops + Stakeholder Analysis
- How: NTC held workshops with villagers, engineers, and politicians to define requirements like:
- "Meters must work offline for 24 hours" (rural areas).
- "Data must sync automatically when online" (urban areas).
- Outcome: Avoided a Rs. 5B overrun by identifying these needs early.
Common Pitfalls and How to Avoid Them
| Pitfall | Cause | Solution |
|---|---|---|
| Ambiguous Requirements | Vague language (e.g., "fast"). | Use metrics: "Response time < 1s." |
| Scope Creep | Adding features late. | Freeze requirements after SRS approval. |
| Ignoring Non-Functional Reqs | Focus only on "what," not "how." | Include performance/security in SRS. |
| Stakeholder Misalignment | Developers vs. users disagree. | Hold joint review sessions. |
Exam Tip: How to Score Full Marks
Structure Your Answer:
- Start with a definition (e.g., "Requirements engineering is the process of...").
- Use bullet points for techniques (interviews, surveys, etc.).
- Include a real-world example (e.g., eSewa, Daraz) to show understanding.
Diagrams = Easy Marks:
- Draw a state diagram for the requirements process.
- Show a MoSCoW prioritization pie chart or SRS mindmap.
Avoid Common Mistakes:
- ❌ "Requirements are just user stories." → ✅ "Requirements include functional (use cases) and non-functional (performance) specs."
- ❌ Skipping validation techniques (prototyping, reviews).
- ❌ Ignoring non-functional requirements (they’re 30% of exam weight!).
Memorize These Key Terms:
- SRS: Software Requirements Specification.
- MoSCoW: Must-have, Should-have, Could-have, Won’t-have.
- Use Case: Narrative of system interaction.
- Prototyping: Building a mockup to clarify needs.
Final Checklist for TU/PU Exams:
- Defined requirements engineering clearly.
- Listed 3+ elicitation techniques with examples.
- Explained functional vs. non-functional requirements.
- Showed a diagram (process, prioritization, or SRS structure).
- Gave a real-world Nepali example (eSewa, Daraz, NTC).
- Discussed validation (prototypes, reviews, use cases).
Based on the TU BIT syllabus for Software Engineering (BIT302), unit 3.
Discussion
Loading…