4.5.3 · D1Software Engineering

Foundations — Requirements — functional vs non-functional, user stories, acceptance criteria

1,821 words8 min readBack to topic

Before you can read the parent note, you must own every word and squiggle it uses. This page collects every symbol, term, and notation there and builds each from zero: plain meaning → the picture → why the topic needs it. Read top to bottom; each block leans on the one above.

Parent: Requirements (parent topic).


0. The very first idea: "system", "stakeholder", "requirement"

Three plain words appear everywhere, so we pin them down first.

Look at the box above. Arrows go in (what the user provides) and out (what the system gives back). A requirement is a label we stick on this diagram saying "this arrow must exist" or "this arrow must arrive within 2 seconds". Keep this box in your head — every later idea decorates it.


1. The symbols in the cost formula

The parent note opens with:

That looks scary if you've never met it. Let's earn every piece.

Look at the orange curve: from stage to stage it barely moves at first, then rockets. If and , then stage costs . Why the topic needs this: it is the whole reason requirements exist — writing them is the cheap left-hand side of this curve.


2. The user-story template symbols: and "shall"

The parent writes:


3. The Given–When–Then symbols

Every arrow in this figure is one part of the test. Why the topic needs it: it converts a vague story into a machine-checkable pass/fail — the definition of "done".


4. Thresholds and comparison symbols: , , "95th-percentile", "£", "%"

The NFR examples use numbers with units. These symbols carry the whole meaning of "measurable".

The figure shows a spread of response times with the 95th-percentile line drawn in. Why the topic needs it: acceptance criteria for non-functional requirements only become testable once a symbol like meets a number and a unit.


5. The acronyms as compressed checklists

These aren't maths, but they are notation — memory-shorthand you must expand on sight.

Recall Why bother memorising acronyms?

They're a compressed picture ::: each letter is a question you'd otherwise forget to ask, so the acronym is a portable checklist that fits in your head.


6. Where each foundation feeds the topic

System box: in out

Requirement: written promise

Functional: verb what

Non functional: adverb how well

Exponential cost curve

User story: role goal benefit

INVEST checklist

Acceptance criteria

Given When Then

Thresholds less than equal percent

Definition of done

Read it downward: the system box makes the idea of a requirement possible; requirements split into functional and non-functional; functional needs get packaged as user stories; every story is nailed down by acceptance criteria, which borrow Given–When–Then and the threshold symbols. The exponential cost curve is the motivation sitting behind all of it. This whole pipeline is the front end of the Software Development Life Cycle and drives Agile and Scrum and Software Design.


Equipment checklist

Cover the right side and test yourself. You are ready for the parent note when every line is instant.

What does mean?
The cost as a function of the stage — feed in a stage, get a cost out.
What is ?
The base cost, "C at stage 0" — the cheap cost of fixing a mistake at the very start.
What does mean and why is used?
multiplied by itself times; makes it grow (multiply) each stage, matching how fix-cost explodes late.
What is ?
— zero copies multiplied gives the "do nothing" value.
What do the angle brackets in mean?
A fill-in-the-blank slot: replace the whole thing with a real value (e.g. "shopper").
What kind of requirement uses "The system shall <verb>"?
A functional requirement — the verb signals a behaviour.
Verb vs adverb — which is functional, which non-functional?
Verb = functional (what it does); adverb = non-functional (how well).
What are the three parts of Given–When–Then?
Given = context/state, When = the action, Then = expected outcome.
Difference between and ?
excludes the boundary value; includes it (e.g. exactly 2 s passes for ).
What does "95th-percentile" mean?
The time under which 95% of requests finish — the worst-case that most users still beat.
Why must an NFR carry a number and unit?
Without it "fast" is an opinion; with s it becomes a testable pass/fail.
Expand FURPS+.
Functionality, Usability, Reliability, Performance, Supportability, + security/scalability/legal.
Expand INVEST.
Independent, Negotiable, Valuable, Estimable, Small, Testable.