Software Design and DevelopmentUnit 314 min read
Requirements Engineering: Elicitation, Analysis & Specification
Unit 3 of Software Design and Development covers the systematic approach to gathering, analyzing, and documenting software requirements—from stakeholder interviews to use cases, SRS documents, and validation techniques—with real-world examples from Nepali apps and global tech.
TAKEAWAYS:
- Requirements engineering bridges user needs and technical solutions, ensuring software meets business goals.
- Techniques like interviews, surveys, and prototyping elicit raw requirements, while analysis refines them into clear, testable specifications.
- A Software Requirements Specification (SRS) document is the contract between developers and stakeholders, defining scope, features, and constraints.
- Misaligned requirements (e.g., omitting security in eSewa) lead to costly rework; validation (reviews, prototyping) prevents this.
- Non-functional requirements (performance, usability) often fail in apps like Daraz if ignored during design.
- Agile vs. traditional approaches differ in how requirements are documented (user stories vs. formal SRS).
1. What Are Software Requirements?
Software requirements are descriptions of what a system must do and how it must perform to satisfy stakeholders. They answer:
- Functional requirements: What the system should do (e.g., "Khalti app must allow P2P transfers").
- Non-functional requirements: How well it should do it (e.g., "Ncell’s IVR must respond in <2 seconds").
Why Are Requirements Critical?
- Cost of fixing errors: A study by IBM found that fixing a defect in the requirements phase costs $100, but in testing it costs $1,000 and in production $10,000.
- User satisfaction: Poor requirements lead to systems users reject (e.g., NTC’s outdated ticketing portal).
- Legal/compliance: Banks (e.g., NMB) must meet KYC requirements; violating them risks fines.
2. Requirements Elicitation: Gathering Needs
Elicitation is the process of collecting raw requirements from stakeholders (users, clients, domain experts). Common techniques:
| Technique | How It Works | Example in Nepal |
|---|---|---|
| Interviews | One-on-one or group discussions with stakeholders. | NEPSE interviewing brokers to design a mobile trading app with real-time stock data. |
| Surveys/Questionnaires | Structured questions to gather data from many users. | Daraz surveying sellers to prioritize features like bulk discounts. |
| Observation | Watching users interact with existing systems. | Pathao observing drivers to improve route optimization algorithms. |
| Document Analysis | Reviewing existing docs (e.g., business reports, old system manuals). | NTC analyzing old ticketing system logs to identify pain points for a new portal. |
| Prototyping | Creating a mock-up to visualize requirements. | Khalti building a wireframe to test if users prefer fingerprint or PIN for payments. |
| Brainstorming | Group session to generate ideas. | A bank team brainstorming features for a digital loan approval system. |
Challenges in Elicitation
- Stakeholder conflicts: Users want low cost; management wants fast delivery.
- Vague requirements: "The system should be user-friendly" → Needs metrics (e.g., <3 clicks to complete a task).
- Hidden requirements: Assumptions not stated (e.g., "The app must work offline" for rural areas).
3. Requirements Analysis: Refining the Raw Data
Raw requirements are often incomplete, ambiguous, or conflicting. Analysis involves:
- Prioritization: Using techniques like MoSCoW (Must-have, Should-have, Could-have, Won’t-have).
- Conflict resolution: Mediating between competing needs (e.g., security vs. convenience in eSewa).
- Feasibility study: Checking if requirements are technically/financially possible (e.g., "Real-time traffic updates" for Kathmandu traffic app).
Example: Analyzing a Loan System for a Nepali Bank
Raw Requirement: "Customers should get loans quickly." Analyzed Requirements:
- Must-have: Loan approval in <24 hours for existing customers.
- Should-have: Biometric verification for fraud prevention.
- Could-have: AI-driven credit scoring.
- Won’t-have: Manual paperwork (replaced by digital forms).
4. Requirements Specification: The SRS Document
The Software Requirements Specification (SRS) is a formal document that describes:
- Functional requirements (e.g., "System shall allow users to reset passwords via OTP").
- Non-functional requirements (e.g., "System shall handle 10,000 concurrent users").
- System models (use cases, diagrams).
- Constraints (e.g., "Must comply with Nepal Rastra Bank’s data security laws").
Structure of an SRS
mindmap
root((SRS Document))
Introduction
Purpose
Scope
Definitions
Overall Description
Product Perspective
User Characteristics
Assumptions & Dependencies
Specific Requirements
Functional Requirements
Non-Functional Requirements
Performance
Security
Usability
Appendices
Glossary
Use Case DiagramsExample: SRS for a Traffic Management System (Kathmandu)
Functional Requirement (FR1): The system shall detect traffic congestion using GPS data from Pathao/Nepal Police vehicles and reroute users via the mobile app.
Non-Functional Requirement (NFR1): The system shall update routes every 5 minutes with 99.9% accuracy.
5. Requirements Validation: Ensuring Correctness
Validation checks if the requirements are correct, complete, and feasible. Techniques:
- Reviews: Experts inspect the SRS for gaps.
- Prototyping: Build a demo (e.g., Khalti’s payment flow prototype).
- Use case testing: Simulate user scenarios (e.g., "What if a Daraz order fails during checkout?").
- Automated tools: Tools like IBM DOORS or JIRA track requirements.
Common Validation Errors
| Error | Example |
|---|---|
| Inconsistency | FR1 says "users can cancel orders," but NFR2 says "no cancellations after 24h." |
| Ambiguity | "The system should be fast" → Define "fast" (e.g., <1 second response). |
| Unfeasibility | "The app must work on 2G networks" when most users are on 4G. |
In the Real World
eSewa’s Payment System
- Idea Used: Non-functional requirements (security, reliability).
- How: eSewa’s SRS explicitly defines:
- FR: "Users must authenticate via fingerprint or OTP."
- NFR: "Transaction data must be encrypted with AES-256."
- Validation: Stress-tested during Dashain to handle 100,000+ transactions/hour.
Daraz’s Order Queue Management
- Idea Used: Prioritization (MoSCoW) and conflict resolution.
- How: Daraz’s SRS prioritized:
- Must-have: Same-day delivery for Prime members.
- Conflict: Sellers wanted lower fees; Daraz kept fees high for profit.
- Resolution: Introduced "Express Delivery" as a premium option.
NTC’s Ticketing Portal Redesign
- Idea Used: Elicitation (observation + surveys).
- How: NTC observed users struggling with:
- Pain Point: Manual ticket purchases took 30+ minutes.
- Solution: New SRS included:
- FR: "Buy tickets via mobile app in <5 minutes."
- NFR: "App must support Nepali language and offline mode."
6. Types of Requirements (Comparison Table)
| Type | Description | Example |
|---|---|---|
| Functional | What the system does. | "Khalti shall generate a QR code for payments." |
| Non-Functional | How well it does it (performance, security, usability). | "Ncell’s IVR shall have <10% call dropout rate." |
| User Requirements | From the user’s perspective. | "I want to track my order on Daraz without logging in." |
| System Requirements | Technical constraints the system must meet. | "The system shall use PostgreSQL for data storage." |
| Business Requirements | Align with company goals. | "Increase NMB’s digital loan approvals by 30% in 6 months." |
7. Requirements in Agile vs. Traditional (Waterfall) Models
| Aspect | Traditional (Waterfall) | Agile |
|---|---|---|
| Documentation | Heavy SRS upfront (100+ pages). | Lightweight user stories (e.g., "As a user, I want to reset my password via email"). |
| Flexibility | Requirements frozen after analysis. | Requirements evolve via sprint reviews. |
| Validation | Done at the end (testing phase). | Continuous (daily stand-ups, demo reviews). |
| Example in Nepal | NTC’s old ticketing system (fixed requirements, no updates for 10 years). | Pathao’s dynamic ride-pricing (adjusts based on real-time demand). |
8. Common Pitfalls and How to Avoid Them
Golden Hammer Syndrome
- Problem: Over-engineering (e.g., building a blockchain for a simple eSewa feature).
- Fix: Prioritize MVP (Minimum Viable Product)—start small.
Changing Requirements
- Problem: Stakeholders add new features mid-project (e.g., Daraz adding "subscription boxes").
- Fix: Use change control processes (document impacts before approving changes).
Ignoring Non-Functional Requirements
- Problem: Fast development leads to slow apps (e.g., NEPSE’s laggy trading platform).
- Fix: Allocate 20% of time to performance/security testing.
Exam Tip
For short-answer questions:
- Define requirements as: "Descriptions of system behavior and constraints, derived from stakeholder needs."
- Differentiate functional vs. non-functional with examples (e.g., "Login system" vs. "99.9% uptime").
For case studies (e.g., "Design a system for X"):
- Follow this structure:
- Elicitation: List 2–3 techniques (e.g., interviews + surveys).
- Analysis: Show a MoSCoW table.
- Specification: Draft 1 functional and 1 non-functional requirement.
- Validation: Mention reviews + prototyping.
- Follow this structure:
Diagrams:
- Use case diagrams are worth marks—always include actors (e.g., "Customer," "Admin") and use cases (e.g., "Place Order," "Cancel Order").
- SRS structure mindmap (as above) is a safe bet for 5+ marks.
Real-world tie-ins:
- Examiners love links to Nepali apps. Example: "Like Khalti’s SRS, which prioritizes security over speed, a banking app’s SRS must define encryption standards (e.g., PCI-DSS compliance) as a non-functional requirement."
Avoid:
- Vague answers like "requirements are important."
- Forgetting validation—always mention at least one technique (reviews/prototyping).
Worked Example: Designing a Requirements Document for a Nepali Food Delivery App (Like Fyyur)
Scenario: Your team is building a food delivery app for Pokhara. Draft key requirements.
Step 1: Elicitation
- Interview: Talk to restaurant owners (they want bulk orders) and customers (they want discounts).
- Survey: 80% of users want cash-on-delivery; 20% prefer digital payments.
Step 2: Analysis (MoSCoW Table)
| Must-Have | Should-Have | Could-Have | Won’t-Have |
|---|---|---|---|
| Real-time order tracking | AI recommendations | AR menu previews | Voice-ordering |
| Cash-on-delivery | Loyalty points | Drone deliveries (future) | Manual invoice printing |
Step 3: SRS Excerpt
Functional Requirement (FR2): The system shall allow customers to add items to a cart and proceed to checkout without creating an account.
Non-Functional Requirement (NFR3): The app shall load restaurant menus in <3 seconds on 3G networks.
Validation:
- Prototype: Build a clickable wireframe to test checkout flow.
- Review: Invite 5 restaurant owners to validate order management features.
Visual: Use Case Diagram for a Bank Loan System
Visual: SRS Document Structure (Simplified)
mindmap
root((SRS for Pokhara Food App))
Introduction
Purpose: "Deliver food in <30 mins"
Scope: "Pokhara city only (Phase 1)"
Functional Requirements
FR1: "User can browse menus"
FR2: "Guest checkout"
Non-Functional Requirements
NFR1: "<3s load time on 3G"
NFR2: "95% order accuracy"
Validation
Prototyping
User Acceptance Testing (UAT)
A textbook-style use case diagram with actors and use cases labeled. (Image: Richard Bruce, Public domain, via Wikimedia Commons)
Based on the TU BIM syllabus for Software Design and Development (IT242), unit 3.
Discussion
Loading…