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
14
## The three-part formula
15
16
Every user story follows the same structure:
17
18
> **As a [role], I want [goal] so that [benefit].**
19
20
Each part does a specific job:
21
22
| Part | What it captures | Common question it answers |
23
|---|---|---|
24
| **As a [role]** | *Who* has this need — a specific user type, not "the system" | Who are my stakeholders? |
25
| **I want [goal]** | *What* they want to accomplish — one concrete action | What does this user need to do? |
26
| **so that [benefit]** | *Why* they want it — the underlying motivation | What value does this deliver? |
27
28
**Example — well-formed story:**
29
30
> "As a **teacher**, I want to **mark student attendance** so that I can **track who attended class and report to administration**."
31
32
- Role: `teacher` — a specific human user role
33
- Goal: `mark student attendance` — one discrete action
34
- Benefit: `track who attended class and report to administration` — a genuine motivation tied to real workflow
35
36
---
37
38
## Breaking down each part
39
40
### The role
41
42
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.
43
44
::: info
45
**Picking the right role**
46
47
For each user story, ask: *"If two different people read this, would they imagine the same person?"* If not, your role is too vague.
48
49
- Too vague: `As a user...`
50
- Better: `As a Year 9 student...`
51
- Best (when you know your data): `As a Year 9 student who accesses the system on a school iPad...`
52
:::
53
54
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.)
55
56
### The goal
57
58
The goal is **one concrete action**. Keep it atomic — if the story requires more than one verb to describe, split it.
59
60
::: warning
61
**Conflating multiple goals in one story**
62
63
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.
64
65
One goal per story. Always.
66
:::
67
68
### The benefit
69
70
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.
71
72
The benefit:
73
- Ties the feature to a real user need
74
- Drives your **non-functional requirements** (the "so that" often implies a performance or reliability constraint)
75
- Gives you a way to decide whether a proposed solution *actually solves the problem*
76
77
**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."*
78
79
---
80
81
## Common mistakes
82
83
::: danger
84
**These stories will cost you marks — fix them before submitting**
85
86
| Mistake | Weak example | What's wrong | Improved version |
87
|---|---|---|---|
88
| Vague role | *"As a user..."* | No context; could mean anyone | *"As a teacher..."* |
89
| 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."* |
90
| 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 |
91
| 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."* |
92
| 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 |
93
:::
94
95
---
96
97
## Acceptance criteria
98
99
Acceptance criteria turn a user story into something **testable**. The standard format is:
100
101
> **Given** [some precondition], **when** [the user does something], **then** [the expected outcome].
102
103
**Example:**
104
105
> **User story:** *"As a teacher, I want to mark student attendance so that I can track who attended class."*
106
>
107
> Acceptance criteria:
108
> - Given I am viewing my class list, when I click a student's name, then their status toggles between "Present" and "Absent".
109
> - Given I have marked attendance, when I click "Save", then the records are stored and I see a confirmation message.
110
> - Given I have saved attendance, when I navigate away and return, then the saved records are still there.
111
112
Each acceptance criterion becomes a **validation** in your SRS — a concrete, observable check that the requirement has been met.
113
114
::: info
115
**Gherkin and test scenarios**
116
117
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.
118
:::
119
120
---
121
122
## MoSCoW priority matrix
123
124
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.
125
126
| Priority | Definition | Scope meaning | Examples |
127
|---|---|---|---|
128
| **M — Must Have** | Non-negotiable. The software cannot function without this. | In scope; must be delivered | Login, core data entry, basic view of records |
129
| **S — Should Have** | Important and expected, but not critical to launch. | In scope; deliver if possible | Notifications, filtering, basic reporting |
130
| **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 |
131
| **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 |
132
133
### Must Have
134
135
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.
136
137
A disciplined test: *"If I deliver without this feature, would my client consider the project a failure?"* If yes, it is Must Have.
138
139
### Should Have
140
141
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.
142
143
### Could Have
144
145
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.
146
147
### Won't Have
148
149
::: warning
150
**Won't Have is not "I didn't bother"**
151
152
This is the most misunderstood category. Won't Have is a **deliberate, documented scope exclusion**. It means:
153
154
- You considered the feature.
155
- You discussed it with your client (or thought through the implications).
156
- You agreed it will **not** be in this version.
157
- You wrote it down so no-one can later claim it was forgotten.
158
159
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."*
160
161
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.
162
:::
163
164
---
165
166
## A worked example
167
168
**Project:** School canteen pre-order app for Hamilton College students.
169
170
| # | User story | MoSCoW | Why |
171
|---|---|---|---|
172
| 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 |
173
| 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 |
174
| 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 |
175
| 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 |
176
| 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 |
177
| 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 |
178
179
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.
180
181
---
182
183
## From user stories to data collection
184
185
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.
186
187
Each user story drives specific questions you need to answer, which drives method choice:
188
189
| User story element | Questions it raises | Method best suited |
190
|---|---|---|
191
| **Role** (who are they?) | What are their characteristics, skill level, context of use? | Interview, observation |
192
| **Goal** (what do they do?) | What does the current workflow look like? Where are the pain points? | Observation, interview |
193
| **Benefit** (why do they want it?) | Is this a real need or an assumed one? Do others share it? | Survey, interview |
194
| **Acceptance criteria** | What does "done" look like to the user? | Interview with client |
195
| **Technical preconditions** (Given…) | What devices, accounts, network access do users have? | Reports (IT device list), observation |
196
197
**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"*):
198
199
- *Who are your students?* → Survey: "Which device do you use at school?" → shapes technical environment in SRS
200
- *Do students currently look at the menu?* → Observation: do students read the noticeboard menu, or do they just queue and decide at the counter?
201
- *What information do they need?* → Interview: "What would you want to see on a digital menu that the noticeboard doesn't show?"
202
203
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.
204
205
---
206
207
## User stories in your SRS
208
209
Once data is collected and analysed, your user stories feed into two parts of the SRS:
210
211
**Functional requirements** — derived from the *"I want [goal]"* part:
212
- User story: *"As a teacher, I want to mark student attendance..."*
213
- Functional requirement: *"The system shall allow teachers to select a class and mark each student as present or absent."*
214
215
**Non-functional requirements** — derived from the *"so that [benefit]"* part and acceptance criteria:
216
- Benefit: *"...so that I can report to administration."*
217
- Non-functional requirement: *"Attendance records shall be retrievable within 2 seconds of a teacher's request."*
218
219
::: success
220
**Tracing requirements back to user stories**
221
222
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.
223
:::
224
225
---
226
227
## MoSCoW and your SRS scope statement
228
229
The Won't Have list becomes the **exclusions** section of your SRS scope. A well-formed scope statement:
230
231
```
232
The [Project Name] will provide [Must Have features] (Must Have).
233
The system will aim to include [Should Have features] (Should Have).
234
[Could Have features] may be included if time permits (Could Have).
235
236
The following are explicitly out of scope for Version 1:
237
- [Won't Have feature 1] — reason
238
- [Won't Have feature 2] — reason
239
```
240
241
This structure prevents scope creep and gives your client a clear record of what was agreed.
242
243
---
244
245
## Check Your Understanding
246
247
Answer in your head first, then click the spoiler to check.
248
249
**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?
250
*(a) it is too long · (b) the role is too vague · (c) there is no acceptance criteria · (d) "log in" is a technical term*
251
252
>! **(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).
253
254
**2.** A student assigns **Must Have** to all eight of their user stories. What does this tell you about their scope planning?
255
*(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*
256
257
>! **(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.
258
259
**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?
260
*(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*
261
262
>! **(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.
263
264
**4.** Which part of a user story most directly generates **non-functional requirements** in your SRS?
265
*(a) the role · (b) the goal · (c) the benefit · (d) the acceptance criteria*
266
267
>! **(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.
268
269
---
270
271
## See also
272
273
- [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
274
- [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
275
- [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
276
- [Essential Terms](/sd/C02/Essential%20Terms) — definitions of functional/non-functional requirements, scope, constraints, and other SRS terms
277
278
---
279
280
← Back to [C02 Home](/sd/C02/C02-home) · [VCE Software Development Hub](/sd/VCE%20Software%20Development%20Hub)