Requirements: Elicitation and Specification
SENG 365 — Software Engineering
Neil Ernst
University of Victoria
2026-08-05
Learning Objectives
- Elicit, deconstruct, and refine functional requirements and quality attributes
- Describe requirements succinctly, completely, and precisely
- Write and evaluate user stories and acceptance criteria
- Build a domain model from a problem statement
Eliciting Requirements
- Identify stakeholders, goals, and conflicts.
- Separate facts in the prompt from assumptions the team chooses.
- Turn ambiguity into explicit scope decisions.
User Stories and Acceptance Criteria
- Use the “As a … I want … so that …” form when it clarifies the actor, capability, and purpose.
- Evaluate stories with INVEST.
- Split stories when they hide multiple behaviours, roles, or quality concerns.
Quality Attributes
- Name the quality attributes that matter for this model problem.
- Define fit criteria: what would count as usable, secure, reliable, fast enough, or maintainable enough?
- Connect quality attributes to stakeholder goals instead of treating them as generic virtues.
Domain Modelling
- Extract candidate entities, relationships, and states from the problem statement.
- Build a small glossary for overloaded domain terms.
- Mark unknowns and assumptions directly in the model.
From Problem to Spec
- Choose one model problem.
- Draft three stakeholder goals, five user stories, and two quality attributes with fit criteria.
- Build a first-pass domain model or glossary.
- Compare with another team: what did they treat as central that you treated as incidental?
Shaw-Style Design Cards
- Create cards for candidate responsibilities, components, quality attributes, and design forces.
- Sort cards into clusters that suggest possible system boundaries.
- Pick one card to make central and explain what gets easier and what gets harder.
- Use the result as input to M1/M4 and as evidence for M2/M5 design rationale.