From SRS to UI Design — A Worked Example

The Hamilton and Alexandra College · Year 12 · 2026

The hardest part of C05 is not drawing a screen. It is showing that the screen came from somewhere — from a requirement you wrote in your SRS, through a rough idea you sketched in C04, into an exact design you can build and then check. This page traces that chain on a real project, not a toy.

The project is vsd-sat-grader: a small web app your teacher actually built to grade VCE SAT folios. Every artefact named below — the SRS, the wireframe, the design docs, the corrections — is a real file you can open on GitHub (links in The real files). Nothing here is invented for the lesson.

We will trace one requirement fully, then a second with the guidance faded, then hand you a third to trace on your own.

Tip

Before you start, skim Connect the Dots — it teaches the theory (annotate → link to the SRS → trace through). This page is that theory done once, on real files, so you can see what a finished trace looks like.


The chain in one picture

Every design feature you submit should be traceable along this chain. The loop at the end matters most: you do not just build, you evaluate the build against the requirement, and when it falls short you write a design correction and feed it back in.

flowchart TD
    A["C03 · SRS<br/>the requirement<br/>(FR3, FR9, FR6…)"] --> B["C04 · Sketch / wireframe<br/>which idea, roughly"]
    B --> C["C05-1 · Detailed design<br/>exactly how it is built"]
    C --> D["Build"]
    D --> E["Evaluate<br/>against the requirement<br/>(does it serve the user's task?)"]
    E -->|"gap found"| F["Design correction<br/>record before → after"]
    F -.->|"feeds back into"| C
    E -->|"passes"| G["Done"]

The three traces below each walk a different distance along this chain.


Trace 1 — FR3, fully worked

Here is FR3, quoted exactly from the SRS:

FR3 — Each criterion shows the rubric bands (1–2, 3–4, 5–6, 7–8, 9–10) the score falls in.

Hop 1 — the requirement (C03). FR3 says the teacher must see which rubric band a score falls in. That is the user's task on this screen: decide a band quickly.

Hop 2 — the sketch (C04). The chosen wireframe shows where that band selector lives on the Grade screen — a set of band boxes near the score input:

The C04 wireframe for the SAT grader. The Grade screen carries band boxes (1-2, 3-4, 5-6, 7-8, 9-10) beside the score input

Look at the Grade panel: the band boxes are placed, but the wireframe never says what text sits inside them or where the band descriptions come from. A wireframe is deliberately rough — it fixes layout, not detail. Hold that thought.

Hop 3 — the detailed design and build (C05-1). Detailing the chosen idea produced the built Grade tab:

The built Grade tab of the SAT grader app, showing the rubric band radio buttons

The bands are there — exactly as the wireframe drew them: 1-2, 3-4, 5-6, 7-8, 9-10. The build matches the sketch. So far, so good.

Hop 4 — evaluate against the user's task. Now the punchline. Walking through this build, the question is not "does it match the wireframe?" — it is "can the teacher decide a band quickly?" And the answer was no: the band selector showed only the numbers. To actually choose a band, the teacher had to remember the descriptors from memory or open the rubric in another window — the exact friction the app exists to remove. The wireframe drew band boxes; it never said where the descriptors would live. That gap was invisible in C04 and only surfaced when the build was tested against the real task.

Hop 5 — the design correction. This gap was recorded as design correction 01: show the full rubric for the selected criterion (every indicator's band-descriptor table) right there in the Grade tab, in a collapsible accordion between the band radio and the score input.

Before After
Before: bands are bare numbers, no descriptors on screen After: the criterion's band-descriptor tables are visible while scoring

Before — bands are bare numbers; no descriptors anywhere on screen. After — the selected criterion's indicators show their 1–10 band descriptors while you score, and the accordion collapses when an experienced marker no longer needs them.

That is the whole chain, spelled out:

FR3 (requirement) → band boxes in the wireframe (sketch) → band radio in the built Grade tab (detailed design) → can the teacher decide a band quickly? (evaluation) → no, the descriptors are missing → show them in an accordion (correction 01).

The lesson is the one Connect the Dots makes: a design is judged against the user's task, not just against the wireframe. The wireframe is correct and the design was incomplete — both can be true, because they answer different questions.


Trace 2 — FR9, with the guidance faded

Now you do more of the work. Here is FR9, quoted exactly from the SRS:

FR9 — Save-on-navigate + stateful Save buttons — switching student or criterion saves the view being left before loading the new one, so navigation can never silently discard edits. Each tab's Save button shows its dirty state: "To save" (orange, enabled) when unsaved edits exist, "Saved" (green, disabled) when clean — green buttons mean it is safe to quit.

The detailed-design doc for FR9 weighed three ways to stop navigation losing edits, then chose one. Here is the options-considered table, summarised from the real design doc:

Option Verdict
Warn-before-navigate dialog Rejected — Gradio has no natural modal confirm flow; would be fragile JS.
Full auto-save (every change / blur) Rejected for v1 — Save buttons lose meaning, half-formed edits persist, noisy git diffs. (Blur auto-save noted as a future could-have.)
Save-on-navigate + manual Save buttons Chosen — covers the exact loss vector, keeps explicit "I'm done" saves, modest build.

The chosen design gives each Save button two states. Here they are, built:

Dirty: "To save" (orange, enabled) Clean: "Saved" (green, disabled)
The Save button in its orange To save state when there are unsaved edits The Save button in its green Saved state, disabled, when clean

Now trace it yourself. You have FR9 above, the options table, and the two screenshots. Answer these in your design log:

  1. Which exact words in FR9 forced the clean button to be DISABLED when green? Quote them. (Hint: what does "green buttons mean it is safe to quit" promise the user — and how does disabling the button prove that promise?)

  2. The options table rejected the warn-dialog and full auto-save. For each rejection, name the requirement or constraint it clashed with. (One is a technical environment fact from the SRS; one is about keeping the Save button meaningful.)

  3. Run the chain like Trace 1 did: requirement → which option was chosen → how the two button states are the detailed design → what the user can now trust about navigation. Write it as one arrow-chain sentence.

Note

Notice FR9 is unusual: it is its own sprint (Sprint 3) and has no separate wireframe panel — the wireframe drew the buttons, but their behaviour is pure C05-1 detail. That is the C04 → C05 move from C04 to C05 - Choose then Detail: the sketch placed the button, the detailed design specified exactly how it behaves.


Trace 3 — FR6, your turn

No worked steps this time. FR6 is the leaderboard, and it is the most interesting trace of the three because of where it starts:

FR6 — (Could have) A leaderboard ranks students by total score across the cohort.

Read the SRS scope line for it, quoted exactly:

Could have — a leaderboard ranking students by total score (not in the wireframe — optional feature); hosted online for cross-school sharing.

So FR6 is a Could-have that is explicitly NOT in the C04 wireframe — yet it was built and corrected (design correction 08) in C05. Your job is to trace it end-to-end yourself, using the files linked below. Answer these three questions in your design log:

  1. FR6 has no wireframe panel to start from. If the chain normally begins with a C04 sketch, where did the detailed design for the leaderboard come from instead? (Look at what the SRS §8 "UI / Screens" list and correction 08 give you.)

  2. Correction 08 moved one table off the Score tab and split the Leaderboard into two sub-tabs. What was the user's task that the original single rank-list failed to serve? (The correction states it — quote it.)

  3. Run the full chain for FR6 the way Trace 1 did — requirement → (no wireframe) → detailed design → evaluation → correction. Where the wireframe hop is missing, say so explicitly: a real trace names the gap, it does not paper over it.

Tip

A Could-have that survives into the build is a strong traceability story for your folio: it proves you tracked a requirement the sketch never showed. If you can trace something the wireframe omitted, you understand the chain.


The real files

Open these on GitHub and read the originals. Each link is the exact artefact a hop above refers to.

Artefact Hop it belongs to Link
SRS (FR/NFR tables, MoSCoW scope, sprint plan) C03 — the requirements SRS/SRS.md
The chosen wireframe C04 — the sketch C04/vsd-sat-grader-wireframe.svg
Design correction 01 (FR3 rubric descriptors) C05 — Trace 1 C05/correction-01-rubric-band-descriptors.md
Design doc for FR9 (save-on-navigate) C05 — Trace 2 C05/design-fr9-save-on-navigate.md
Design correction 08 (leaderboard) C05 — Trace 3 C05/correction-08-leaderboard-tabs.md
Note

The SD26-Students repository is private. To open these links you must be signed in to GitHub with your class account. If you get a 404, you are not signed in — log in and try again.


Check Your Understanding

  1. In Trace 1, the design log writes FR3 — not "requirement 3" or "the rubric one". Why does the exact SRS label matter?
...

A trace is only useful if a marker can verify it. If your design log says "FR3" and your SRS says "FR3", the reader can look it up and confirm the link exists. A loose label like "requirement 3" cannot be checked against the SRS, so the connection is treated as unsubstantiated. The same exact label, end to end, is what makes a trace auditable.

  1. The FR3 wireframe drew band boxes but no descriptors, and that was not a mistake. What does a wireframe deliberately leave out, and at which later hop does that detail get filled in?
...

A wireframe fixes layout — where things sit on the screen — not the detailed content, exact text, or behaviour inside each element. That detail belongs to C05-1, the detailed design. The band boxes were correctly placed in C04; where the descriptors come from and how they display was a C05 decision, and the gap only surfaced when the build was evaluated against the user's task.

  1. Design correction 01 keeps a "before" screenshot, not just the fixed "after". Why is the before-evidence worth keeping?
...

The "before" shows the problem actually existed and that the change was a deliberate response to evaluating the build, not a cosmetic tweak. It makes your critical thinking visible: a reader can see the gap, the fix, and the reasoning between them. A correction with only an "after" image asserts an improvement; a before-and-after demonstrates one.

  1. Trace 3's leaderboard (FR6) was a Could-have not in the wireframe, yet it reached a detailed design and a correction. In terms of breadth vs depth, what does that show about the difference between C04 and C05?
...

C04 is breadth — exploring and choosing which ideas proceed, captured roughly in the wireframe. C05 is depth — fully specifying chosen features so they can be built. FR6 shows the two are not the same scope: a requirement can be thin or absent in the breadth stage (no wireframe panel) and still be detailed to full depth in C05. Coverage in the sketch does not equal coverage in the detailed design.


See also

  • Connect the Dots — the theory this page demonstrates: annotate → link to the SRS → trace one feature all the way through.
  • C04 to C05 - Choose then Detail — why C04 (choose which idea) and C05 (detail it until it is buildable) are different jobs; the breadth → depth shift behind every trace above.

← Back to C05 Home · VCE Software Development Hub