Blame

e15de9 lisa 2026-04-30 07:50:48
C02: add 4 new pages closing remaining wiki gaps Closes the original 8-gap audit by consolidating into 4 pages (parallel sonnet build): - Building Your C2-1 Poster — poster structure + labelled raw-data artefact + findings-to-SRS mapping (covers gaps 2, 3, 4) - Data Flow Diagram (Level-1) — standalone DFD page with mermaid worked example, mirrors Context Diagram and UCD pattern (gap 1) - User Stories and MoSCoW — three-part formula + MoSCoW matrix + user-story-to-method-choice pipeline (gap 6) - Hand-Drawing Cheat-Sheet — cross-cutting notation reference for hand-drawn versions of all 3 diagrams; right-vs-wrong tables (gap 5) Plus enhancement (gap 7): - Data Collection Methods: new 'Qualitative or quantitative?' section with same-project two-data-point comparison and decision rule C02-home updated with both new C2-1 pages, the new DFD page, and the cheat-sheet — restructured order so each section reads in pedagogical order.
1
> **DRAFT** — under teacher review.
2
3
# User Stories and MoSCoW
4
5
Hamilton College · Year 12 · 2026
6
7
Every requirement you write, every question you ask in data collection, and every scope decision in your SRS traces back to one source: what your users actually need. User stories give that need a concrete written form. MoSCoW tells you which ones to act on first. Together they are the foundation the entire C02 pipeline rests on.
8
9
> [!TIP]
10
> If you can't write a user story for a feature, you don't know whose problem it solves or why. Stop and ask your client before coding anything.
11
12
---
13
41247c lisa 2026-04-30 17:02:48
User Stories and MoSCoW: add AgileAcademy 3-min Watch first
14
## Watch first (≈3 min)
15
16
{{Video|src=https://www.youtube.com/watch?v=LGeDZmrWwsw}}
17
18
*Agile Academy (AU) — *StoryCards / User Stories*. 3-min agile-practitioner take on the role / goal / benefit format. Watch for: why each part matters and what a good story looks like on a card.*
19
20
---
21
e15de9 lisa 2026-04-30 07:50:48
C02: add 4 new pages closing remaining wiki gaps Closes the original 8-gap audit by consolidating into 4 pages (parallel sonnet build): - Building Your C2-1 Poster — poster structure + labelled raw-data artefact + findings-to-SRS mapping (covers gaps 2, 3, 4) - Data Flow Diagram (Level-1) — standalone DFD page with mermaid worked example, mirrors Context Diagram and UCD pattern (gap 1) - User Stories and MoSCoW — three-part formula + MoSCoW matrix + user-story-to-method-choice pipeline (gap 6) - Hand-Drawing Cheat-Sheet — cross-cutting notation reference for hand-drawn versions of all 3 diagrams; right-vs-wrong tables (gap 5) Plus enhancement (gap 7): - Data Collection Methods: new 'Qualitative or quantitative?' section with same-project two-data-point comparison and decision rule C02-home updated with both new C2-1 pages, the new DFD page, and the cheat-sheet — restructured order so each section reads in pedagogical order.
22
## The three-part formula
23
24
Every user story follows the same structure:
25
26
> **As a [role], I want [goal] so that [benefit].**
27
28
Each part does a specific job:
29
30
| Part | What it captures | Common question it answers |
31
|---|---|---|
32
| **As a [role]** | *Who* has this need — a specific user type, not "the system" | Who are my stakeholders? |
33
| **I want [goal]** | *What* they want to accomplish — one concrete action | What does this user need to do? |
34
| **so that [benefit]** | *Why* they want it — the underlying motivation | What value does this deliver? |
35
36
**Example — well-formed story:**
37
38
> "As a **teacher**, I want to **mark student attendance** so that I can **track who attended class and report to administration**."
39
40
- Role: `teacher` — a specific human user role
41
- Goal: `mark student attendance` — one discrete action
42
- Benefit: `track who attended class and report to administration` — a genuine motivation tied to real workflow
43
44
---
45
46
## Breaking down each part
47
48
### The role
49
50
The role must be **specific enough to imply context**. "User" is almost never enough — a student using a school timetable app has completely different needs from a teacher or an administrator using the same system.
51
52
::: info
53
**Picking the right role**
54
55
For each user story, ask: *"If two different people read this, would they imagine the same person?"* If not, your role is too vague.
56
57
- Too vague: `As a user...`
58
- Better: `As a Year 9 student...`
59
- Best (when you know your data): `As a Year 9 student who accesses the system on a school iPad...`
60
:::
61
62
Roles map directly to entities on your context diagram. Every role in your user stories should appear as an entity — work through this list before you finalise your diagram. (See [What Is an Entity](/sd/C02/What%20Is%20an%20Entity) for the full method.)
63
64
### The goal
65
66
The goal is **one concrete action**. Keep it atomic — if the story requires more than one verb to describe, split it.
67
68
::: warning
69
**Conflating multiple goals in one story**
70
71
A story like *"As a student, I want to log in and view my timetable and download it as a PDF"* contains three separate features. When you apply MoSCoW, you may find login is Must Have but PDF download is Could Have — you cannot separate them if they are written as one story.
72
73
One goal per story. Always.
74
:::
75
76
### The benefit
77
78
The benefit is the part students most often skip — and it is the part the rubric cares about most. Without the benefit, a user story is just a feature list with a persona stapled on.
79
80
The benefit:
81
- Ties the feature to a real user need
82
- Drives your **non-functional requirements** (the "so that" often implies a performance or reliability constraint)
83
- Gives you a way to decide whether a proposed solution *actually solves the problem*
84
85
**Example:** *"so that I can access my timetable wherever I am"* implies a portability requirement. Your SRS non-functional requirement would read something like: *"The system shall function on desktop, tablet, and mobile devices."*
86
87
---
88
89
## Common mistakes
90
91
::: danger
92
**These stories will cost you marks — fix them before submitting**
93
94
| Mistake | Weak example | What's wrong | Improved version |
95
|---|---|---|---|
96
| Vague role | *"As a user..."* | No context; could mean anyone | *"As a teacher..."* |
97
| Missing benefit | *"As a student, I want to log in."* | No "so that" — we can't verify this solves a real need | *"As a student, I want to log in so that my data is private and personalised."* |
98
| Multiple goals | *"As a teacher, I want to create questions and manage a question bank and export to PDF."* | Three stories crammed into one; MoSCoW becomes impossible | Write three separate stories |
99
| Technical implementation, not user goal | *"As a student, I want the system to use JWT authentication."* | Students don't care about JWT; this is a design decision, not a user need | *"As a student, I want to log in securely so that my data is protected."* |
100
| Every story is Must Have | All five stories marked M | You haven't thought about scope; the rubric explicitly looks for a range | Apply MoSCoW honestly — see below |
101
:::
102
103
---
104
105
## Acceptance criteria
106
107
Acceptance criteria turn a user story into something **testable**. The standard format is:
108
109
> **Given** [some precondition], **when** [the user does something], **then** [the expected outcome].
110
111
**Example:**
112
113
> **User story:** *"As a teacher, I want to mark student attendance so that I can track who attended class."*
114
>
115
> Acceptance criteria:
116
> - Given I am viewing my class list, when I click a student's name, then their status toggles between "Present" and "Absent".
117
> - Given I have marked attendance, when I click "Save", then the records are stored and I see a confirmation message.
118
> - Given I have saved attendance, when I navigate away and return, then the saved records are still there.
119
120
Each acceptance criterion becomes a **validation** in your SRS — a concrete, observable check that the requirement has been met.
121
122
::: info
123
**Gherkin and test scenarios**
124
125
This Given / When / Then format comes from a testing practice called Gherkin. It is not required by VCAA, but it is worth understanding because it connects user stories directly to system testing. See [What Is an Entity](/sd/C02/What%20Is%20an%20Entity) for a worked Gherkin example and how it surfaces entities you would otherwise miss.
126
:::
127
128
---
129
130
## MoSCoW priority matrix
131
132
Once you have a list of user stories, you need to decide which ones are in scope for *this version* of your software. MoSCoW is the tool for that decision.
133
134
| Priority | Definition | Scope meaning | Examples |
135
|---|---|---|---|
136
| **M — Must Have** | Non-negotiable. The software cannot function without this. | In scope; must be delivered | Login, core data entry, basic view of records |
137
| **S — Should Have** | Important and expected, but not critical to launch. | In scope; deliver if possible | Notifications, filtering, basic reporting |
138
| **C — Could Have** | Desirable but genuinely optional; a "nice to have". | In scope but deprioritised; deliver only if time permits | Calendar export, dark mode, advanced search |
139
| **W — Won't Have** | Acknowledged and deliberately excluded from this version. | **Out of scope** — written down so everyone agrees | Parent portal, external LMS integration, analytics |
140
141
### Must Have
142
143
Must Haves define your **minimum viable product (MVP)** — the smallest version of your software that is actually useful to your client. If you removed a Must Have, the software would fail to solve the core problem.
144
145
A disciplined test: *"If I deliver without this feature, would my client consider the project a failure?"* If yes, it is Must Have.
146
147
### Should Have
148
149
Should Haves are important but not critical. If you run out of time, your client will be disappointed but the core product still works. In practice, most well-managed projects deliver most of their Should Haves.
150
151
### Could Have
152
153
Could Haves are features that would be pleasant to include but have low impact if dropped. They are the first things cut when time is short. If you find yourself with a long list of Could Haves, that is a sign your Must Have scope is well-controlled — that is good.
154
155
### Won't Have
156
157
::: warning
158
**Won't Have is not "I didn't bother"**
159
160
This is the most misunderstood category. Won't Have is a **deliberate, documented scope exclusion**. It means:
161
162
- You considered the feature.
163
- You discussed it with your client (or thought through the implications).
164
- You agreed it will **not** be in this version.
165
- You wrote it down so no-one can later claim it was forgotten.
166
167
Won't Have protects you from scope creep. When a stakeholder asks *"but what about parent access?"*, you can point to the Won't Have list and say *"we agreed that was out of scope for Version 1."*
168
169
Writing *"I couldn't be bothered"* as the reason for a Won't Have will not score well. Write the actual reason: time constraints, out of scope for this user group, planned for Version 2.
170
:::
171
172
---
173
174
## A worked example
175
176
**Project:** School canteen pre-order app for Hamilton College students.
177
178
| # | User story | MoSCoW | Why |
179
|---|---|---|---|
180
| US1 | As a **student**, I want to **browse the canteen menu** so that I know what is available before ordering. | **Must Have** | Core feature — without it, the system cannot function |
181
| US2 | As a **student**, I want to **place an order in advance** so that I can avoid the lunchtime queue. | **Must Have** | Primary user goal; the reason the system exists |
182
| US3 | As a **canteen staff member**, I want to **view the day's orders** so that I can prepare the right quantities in advance. | **Must Have** | Staff-facing core feature; without it the system is one-sided |
183
| US4 | As a **student**, I want to **receive a notification when my order is ready** so that I know when to collect it. | **Should Have** | Valuable but the system works without it; students can check manually |
184
| US5 | As a **student**, I want to **see my order history** so that I can quickly reorder my usual items. | **Could Have** | Convenience feature; no impact on core functionality |
185
| US6 | As a **parent**, I want to **top up my child's canteen account online** so that I do not need to send cash to school. | **Won't Have** | Out of scope for Version 1; requires payment gateway integration and parent authentication — acknowledged for Version 2 |
186
187
This range — at least one story in each MoSCoW category — is what the rubric expects. If every story is Must Have, you haven't thought critically about scope.
188
189
---
190
191
## From user stories to data collection
192
193
User stories are hypotheses. Before C02 is finished, your data collection must **test** those hypotheses — confirming, refining, or replacing them with what you actually learn.
194
195
Each user story drives specific questions you need to answer, which drives method choice:
196
197
| User story element | Questions it raises | Method best suited |
198
|---|---|---|
199
| **Role** (who are they?) | What are their characteristics, skill level, context of use? | Interview, observation |
200
| **Goal** (what do they do?) | What does the current workflow look like? Where are the pain points? | Observation, interview |
201
| **Benefit** (why do they want it?) | Is this a real need or an assumed one? Do others share it? | Survey, interview |
202
| **Acceptance criteria** | What does "done" look like to the user? | Interview with client |
203
| **Technical preconditions** (Given…) | What devices, accounts, network access do users have? | Reports (IT device list), observation |
204
205
**Example:** For US1 in the canteen app (*"As a student, I want to browse the canteen menu so that I know what is available before ordering"*):
206
207
- *Who are your students?* → Survey: "Which device do you use at school?" → shapes technical environment in SRS
208
- *Do students currently look at the menu?* → Observation: do students read the noticeboard menu, or do they just queue and decide at the counter?
209
- *What information do they need?* → Interview: "What would you want to see on a digital menu that the noticeboard doesn't show?"
210
211
The data collection plan's Section 4 (user stories and MoSCoW) and Section 2 (methods) must align — for each story, at least one method should directly address a question that story raises.
212
213
---
214
215
## User stories in your SRS
216
217
Once data is collected and analysed, your user stories feed into two parts of the SRS:
218
219
**Functional requirements** — derived from the *"I want [goal]"* part:
220
- User story: *"As a teacher, I want to mark student attendance..."*
221
- Functional requirement: *"The system shall allow teachers to select a class and mark each student as present or absent."*
222
223
**Non-functional requirements** — derived from the *"so that [benefit]"* part and acceptance criteria:
224
- Benefit: *"...so that I can report to administration."*
225
- Non-functional requirement: *"Attendance records shall be retrievable within 2 seconds of a teacher's request."*
226
227
::: success
228
**Tracing requirements back to user stories**
229
230
In your SRS, label each requirement with the user story it came from (e.g. *"[US3]"*). This traceability shows examiners that your requirements came from real data collection, not guesswork — and it is exactly the kind of evidence that separates 9–10 responses from 7–8.
231
:::
232
233
---
234
235
## MoSCoW and your SRS scope statement
236
237
The Won't Have list becomes the **exclusions** section of your SRS scope. A well-formed scope statement:
238
239
```
240
The [Project Name] will provide [Must Have features] (Must Have).
241
The system will aim to include [Should Have features] (Should Have).
242
[Could Have features] may be included if time permits (Could Have).
243
244
The following are explicitly out of scope for Version 1:
245
- [Won't Have feature 1] — reason
246
- [Won't Have feature 2] — reason
247
```
248
249
This structure prevents scope creep and gives your client a clear record of what was agreed.
250
251
---
252
253
## Check Your Understanding
254
255
Answer in your head first, then click the spoiler to check.
256
257
**1.** A student writes: *"As a user, I want to log in so that I can access the system."* What is the **biggest** problem with this story?
258
*(a) it is too long · (b) the role is too vague · (c) there is no acceptance criteria · (d) "log in" is a technical term*
259
260
>! **(b) the role is too vague.** "User" tells us nothing about who this person is, what context they work in, or whether their login needs are different from other roles. Every other issue (no acceptance criteria, technical language) is secondary — a vague role means you cannot derive meaningful requirements. Fix: replace "user" with the specific role (student, teacher, administrator).
261
262
**2.** A student assigns **Must Have** to all eight of their user stories. What does this tell you about their scope planning?
263
*(a) they have a very focused project · (b) they probably haven't thought critically about what is truly essential · (c) this is correct — every story matters · (d) they need more user stories*
264
265
>! **(b) they probably haven't thought critically about what is truly essential.** If everything is Must Have, MoSCoW is doing no work. A genuine Must Have is something the project *fails without*. Most projects have 3–5 true Must Haves. The rubric explicitly expects a mix of all four MoSCoW categories — students with all Must Haves are likely to lose marks for scope planning.
266
267
**3.** A student writes: *"Won't Have: Parent portal — I couldn't find time to build it."* What is wrong with this Won't Have?
268
*(a) parent portals are always Must Have · (b) Won't Have should only be used for technical impossibilities · (c) the reason doesn't show deliberate scope planning · (d) nothing — this is fine*
269
270
>! **(c) the reason doesn't show deliberate scope planning.** Won't Have is a *deliberate* scope exclusion, not a de-facto one. The reason should explain a *decision*: "out of scope for this user group", "requires payment integration planned for Version 2", "agreed with client as future enhancement". "I couldn't find time" reads as oversight, not planning.
271
272
**4.** Which part of a user story most directly generates **non-functional requirements** in your SRS?
273
*(a) the role · (b) the goal · (c) the benefit · (d) the acceptance criteria*
274
275
>! **(c) the benefit.** The "so that [benefit]" clause captures *why* the user wants the feature — and the qualities that make that benefit possible (speed, reliability, portability, usability) are exactly what non-functional requirements describe. The goal generates functional requirements; the benefit generates non-functional ones.
276
277
---
278
279
## See also
280
281
- [Data Collection Methods](/sd/C02/Data%20Collection%20Methods) — the four methods and how to choose your mix; connects to the "from user stories to data collection" section above
282
- [What Is an Entity](/sd/C02/What%20Is%20an%20Entity) — how to use user story roles to find every entity for your context diagram; includes Gherkin acceptance criteria worked example
283
- [Explaining vs Describing Your Data Collection](/sd/C02/Explaining%20vs%20Describing%20Your%20Data%20Collection) — the rubric difference between 7–8 and 9–10 for Indicator 1; directly relevant once you have your user stories and methods aligned
284
- [Essential Terms](/sd/C02/Essential%20Terms) — definitions of functional/non-functional requirements, scope, constraints, and other SRS terms
285
286
---
287
288
← Back to [C02 Home](/sd/C02/C02-home) · [VCE Software Development Hub](/sd/VCE%20Software%20Development%20Hub)