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

Topics to Develop

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.

In-Class Activity

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.