What is a specification, and how does it differ from a requirements document?
covers: lo-1
Answer
A specification is the written decision about what must be true — short, one file per capability, written continuously alongside the work, and phrased so that it can be checked.
| Pflichtenheft / requirements document | specs |
|---|---|
written once, before building |
written continuously, alongside |
prose, hundreds of pages |
short, per capability |
becomes stale silently |
drifts visibly, because the build checks it |
"the system should support user management" |
a requirement plus scenarios that either hold or do not |
The decisive difference is the third row. A classic requirements document is not wrong; it is unverifiable. Nobody can run it, so nothing ever tells you the day it stopped describing the system — it simply becomes fiction quietly, and everybody keeps citing it.
A specification made of requirements and scenarios can be checked, by a person or by a test. When it and the system disagree, somebody finds out, and then there is a decision to take: fix the system, or change the target state deliberately.
Points the answer must contain:
-
Short, per capability, written continuously, checkable
-
The requirements document is written once, is prose, and cannot be verified
-
Drift becomes visible instead of silent
What are Lastenheft and Pflichtenheft, who writes each, and what is in them?
covers: lo-5
Answer
| Lastenheft | Pflichtenheft | |
|---|---|---|
Written by |
the client (Auftraggeber) |
the contractor (Auftragnehmer) |
Answers |
what is needed and what for |
how and with what it will be realised |
Written when |
before the tender, before any offer |
after the contract is awarded, before building |
Serves as |
basis for the tender and for comparing offers |
basis of the contract and of the acceptance |
The sequence is what makes the pair make sense: elicitation → Lastenheft → offer → Pflichtenheft → build → acceptance against the Pflichtenheft. The client states the need in the language of their own world, without prescribing technology; the contractor answers with what will be built, in enough detail that both sides can later agree on whether it was delivered.
| Classical | In this course |
|---|---|
Lastenheft |
Ausgangslage and Zielsetzung in the charter — frozen |
Pflichtenheft |
|
a numbered requirement plus its test case |
a requirement with its scenarios, one file per capability |
Points the answer must contain:
-
Lastenheft: written by the client, says what is needed and what for, basis for the tender
-
Pflichtenheft: written by the contractor, says how it will be realised, basis of the contract and of the acceptance
-
The sequence: elicitation, Lastenheft, offer, Pflichtenheft, build, acceptance
-
Nothing of it was abolished — the same content lives in charter and specs, in another form
Which chapters does a Pflichtenheft have, and what is the Kriterienkatalog for?
covers: lo-6
Answer
Seven chapters, and their order is an argument rather than a filing system:
-
Beschreibung der Ausgangslage — who the client is and why they are procuring anything at all
-
Ist-Zustand — the organisation, the processes and the systems that are already there, limited to what the project touches
-
Zielsetzung — the goals with priorities, realistic and checkable
-
Anforderungen (Soll) — at the application software, at the system platform, at the supplier
-
Mengengerüst — data movements, data volumes, concurrent users
-
Aufbau und Inhalt der Offerte — only in a tender, so that offers can be compared
-
Administratives — confidentiality, copyright, distribution list, budget, dates
Chapters 1 to 3 carry the chain initial situation → problem → task: a requirement in chapter 4 that cannot be traced back to them is somebody’s private wish. Chapter 4 itself splits into funktionale requirements — the professional workflow and the data fields — and nichtfunktionale ones: Effizienz, Leistung, Zuverlässigkeit, Robustheit, Benutzerfreundlichkeit, Datenschutz. A non-functional requirement counts as a requirement only once it carries a number or an observable condition.
The catalogue behind that second group is ISO/IEC 25010, the product quality model: nine characteristics — functional suitability, performance efficiency, compatibility, interaction capability, reliability, security, maintainability, flexibility, safety — each with sub-characteristics. Walk the nine when writing chapter 4 and decide per characteristic whether it matters here and what the measurable condition is. "Not applicable" is a valid answer and worth writing down.
The Kriterienkatalog is a different document: internal to the client, written alongside the Pflichtenheft, never handed to the supplier. Its purpose is to evaluate the offers that come in.
-
Muss- or K.-o.-Kriterium — not met, the offer drops out
-
Wunschkriterium (Soll-Kriterium) — the better it is met, the better the rating
-
Abgrenzungskriterium — informative, so the supplier can size the offer
Points the answer must contain:
-
The seven chapters, in order, with Ist-Zustand and Mengengerüst among them
-
Chapter 4 splits into functional and non-functional requirements, with examples of each; ISO/IEC 25010 is the catalogue of the non-functional ones
-
The Kriterienkatalog is a separate, internal document of the client, used to evaluate offers — not a section of the Pflichtenheft
-
Muss-, Wunsch- and Abgrenzungskriterien with their effect on the evaluation
Write a requirement with a scenario for "sessions have a capacity limit"
covers: lo-2
Answer
## ADDED Requirements
### Requirement: A session cannot be overbooked
The system SHALL refuse a booking when the session has already reached its
capacity.
#### Scenario: Booking a session that is full
- **WHEN** a member books a session whose capacity is 20 and which has 20
confirmed bookings
- **THEN** the booking is refused and the member is told the session is full
#### Scenario: Booking the last free place
- **WHEN** a member books a session whose capacity is 20 and which has 19
confirmed bookings
- **THEN** the booking is confirmed
Read it as three parts. The requirement says what must hold, in one sentence, with SHALL. The scenario says how you would observe it: WHEN describes the situation, THEN the outcome, both from outside the system. Together they define what "done" means for this capability.
The second scenario is not decoration. A requirement stated only through its failure case is half-specified — the boundary is exactly where the mistakes live, and "19 of 20" is the case an implementation gets wrong.
Neither part mentions a class, a table or a framework. If you cannot phrase a requirement this way, it is usually not yet understood, or it is a wish.
Points the answer must contain:
-
Requirement with SHALL, stating what must hold
-
Scenario with WHEN and THEN, observable from outside
-
No implementation detail in either
Why did precise statements of intent become the scarce resource?
covers: lo-3
Answer
Because the things around them got cheap.
| Cheap now | Still expensive |
|---|---|
writing the implementation |
saying exactly what it must do |
producing an explanation of anything |
deciding which behaviour is correct here |
generating tests that pass |
knowing which behaviour must never break |
An agent turns a precise description into a working implementation faster than you can type it. It will also produce a plausible implementation from an imprecise description — and that is the actual problem, because the result looks equally finished either way. The gap between "what I said" and "what I meant" used to be absorbed by the slowness of building; now it goes straight into the repository.
So the effort moves to the two ends of the loop: stating the intent precisely enough that a wrong reading is visible, and verifying that what came back matches it. The right-hand column of the table is not cheaper than it was five years ago, and it is now most of the work.
Points the answer must contain:
-
Producing code and explanations is now cheap
-
Deciding which behaviour is correct is not
-
The effort moves to specifying and verifying
What is frozen, what is alive, and why do you need both?
covers: lo-4
Answer
The charter is frozen at approval. The specs are alive and change with every archived change.
Each would fail alone. A charter that could be edited is no yardstick: a team adjusts its goals to whatever got finished and every project succeeds by definition. A specification that were frozen would stop describing the system within a fortnight, and then it is a requirements document again — cited, wrong, unrunnable.
Keeping both is what makes the difference readable, and the difference is the content of scope management: what was promised in November, what is true in June, and which archived changes account for the gap. That comparison is the only honest feedback a team gets about its own estimating.
Points the answer must contain:
-
Charter frozen — otherwise there is no yardstick
-
Specs alive — otherwise they stop describing the system
-
The visible difference between them is scope management
Why is "the service uses a repository class" a bad requirement?
covers: lo-1, lo-2
Answer
Because it describes the implementation rather than observable behaviour. Two problems follow, and they are independent of each other.
It cannot be verified from outside. Nobody using the system can tell whether a repository class exists. So the requirement has no scenario — there is no WHEN and THEN that would show it holding or failing — and a requirement nobody can check is not a requirement, it is a preference.
It forbids a better implementation. If it turns out that the query belongs in one place with three lines of SQL, the specification now says no, for a reason nobody would defend if asked. Specifications constrain the outside; the inside is where the team is supposed to be free to improve.
The rewrite asks what the class was supposed to guarantee: "Attendance records
SHALL be readable per session and per member" — with a scenario. That keeps
whatever the design decision was really for, and leaves the design open. If the
repository class genuinely was a decision worth recording, its place is
design.md, with the alternative that was rejected.
Points the answer must contain:
-
It describes the implementation, not the observable behaviour
-
It cannot be verified from outside, and it forbids a better implementation