Requirements Gathering
Overview
Elicit and document system requirements from stakeholders
Steps
Step 1: Prepare for elicitation
Before meeting with stakeholders, prepare thoroughly:
- Review the goal statement and understand the business context
- Identify all stakeholder groups and their likely perspectives
- Review any existing documentation or prior work
- Prepare questions organized by topic area
- Choose appropriate elicitation techniques for each stakeholder type
Step 2: Gather functional requirements
For each stakeholder or stakeholder group:
- Explain the purpose and set expectations for the session
- Ask about goals: “What are you trying to accomplish?”
- Ask about processes: “Walk me through how you do X today”
- Ask about problems: “What frustrates you about the current situation?”
- Ask about success: “How would you know if this was successful?”
- Probe deeper: “Why is that important?” “What would happen if…?”
- Document responses, capturing exact language when possible
Step 3: Gather non-functional requirements
Explicitly probe for quality attributes and constraints:
- Performance: “How fast does this need to be? What’s acceptable latency?”
- Scalability: “How many users/transactions need to be supported?”
- Reliability: “What happens if the system is down? What’s acceptable uptime?”
- Security: “What data needs protection? Who should have access?”
- Usability: “Who will use this? What’s their technical skill level?”
- Maintainability: “How often will this change? Who will maintain it?”
- Compliance: “Are there regulatory or policy requirements?”
- Integration: “What other systems does this need to work with?”
Step 4: Analyze and consolidate
Process all gathered information:
- Group similar requirements together
- Identify conflicting requirements between stakeholders
- Distinguish requirements (needs) from solutions (wants)
- Extract implicit requirements (things assumed but not stated)
- Identify dependencies between requirements
- Flag ambiguous or unclear requirements for clarification
Step 5: Prioritize requirements
Work with stakeholders to prioritize:
- Use MoSCoW (Must/Should/Could/Won’t) or similar framework
- Consider business value of each requirement
- Consider cost/complexity to implement
- Identify which requirements are critical for MVP
- Document rationale for priority decisions
- Get stakeholder sign-off on priorities
Step 6: Validate requirements
Ensure requirements are complete and correct:
- Review requirements with stakeholders for accuracy
- Check for completeness: any missing areas?
- Verify requirements are testable (can we prove it’s met?)
- Confirm requirements are feasible (can we actually build this?)
- Ensure requirements are unambiguous (one interpretation)
- Update based on feedback
Step 7: Document requirements
Create the formal requirements document:
- Write clear requirement statements (system shall…)
- Include acceptance criteria for each requirement
- Document all assumptions made
- List open questions still needing resolution
- Include traceability (link requirements to stakeholders/goals)
- Add version control and change history
When to Use
- Starting a new project or feature
- When stakeholders have unclear or conflicting needs
- Before creating design specifications
- When scope needs to be formally defined
- After discovering gaps in existing requirements
- When onboarding new team members who need context
- Before estimation or planning activities
- When requirements have changed and need re-baselining
Verification
- All identified stakeholders were consulted
- Both functional and non-functional requirements captured
- Requirements are specific and testable (not vague)
- Conflicts have been identified and resolved
- Priorities are assigned with stakeholder agreement
- Assumptions are explicitly documented
- Open questions are tracked for resolution