SENG 365 — Software Engineering
2026-09-09
docs/a1-requirements.mdBefore writing user stories, name who has a stake and what they actually want.
| Role type | Concern |
|---|---|
| Users | Define functionality, ultimately use the system |
| Operators / admins | Run or moderate the system once deployed |
| Domain stakeholders | External parties with a real interest (e.g. campus facilities, a civil-engineering instructor) |
| … |
A1 requires exactly three stakeholder roles, each with one goal and one concern. Extending-level work makes those goals conflict e.g. a reviewer wants openness, an operator wants to suppress abuse.
As a <role>, I want to <capability> so that <benefit>.
Independent, Negotiable, Valuable, Estimable, Small, Testable
As a student, I want to search for bike parks near a destination so that I can decide where to park before I arrive.
Lots of implementation options for these, but the Acceptance Criteria have a yes/no answer.
Tie the attribute to a stakeholder concern from your table. Why do we care about the stakeholder?
docs/a1-requirements.md — GitLab is where you work it out before you write it down.story::functional, story::edge-case, story::admin — matches the A1 story categoriesstakeholder::<role> — one per stakeholder you’ve identifiedstatus::proposed, status::accepted, status::rejected — elicitation statusFor each candidate user story or quality attribute, open an issue with:
- [ ] AC1: …), plus any assumption it depends on.Use GitLab’s Markdown checklists ( - [ ] ) — a story isn’t “done” being elicited until its acceptance criteria are checkable statements, and the checklist forces that.
/label, /assign, and other quick actions to keep triage fast.Related to #<n> — GitLab renders this as a linked-issue graph, so you keep the split’s history instead of losing it in an edit.GitLab is not itself the submission — docs/a1-requirements.md is. Extraction is a deliberate step, not a copy-paste:
status::accepted.status::proposed or contested becomes an open question, not a story — A1 needs exactly three.status::accepted or status::rejected, splitting any story that fails INVEST.docs/a1-requirements.md: stakeholders, six stories, acceptance criteria, two quality attributes, a domain glossary, three open questions.PROBLEM.md and README.md for your chosen model problem.
Course home · Neil Ernst ©️