Keep requirements traceable as software changes
Connect a user outcome to decisions, acceptance criteria, implementation, and evidence. Update the connections when assumptions change.
Published by TaigaHow we write
What you will learn
- Write an observable requirement with explicit boundaries.
- Trace a requirement through a change and its checks.
- Identify downstream documents affected by a changed assumption.
Describe behavior that someone can verify
“Create a modern customer export” leaves important decisions open. It does not define users, records, fields, or failure behavior. An agent must either ask or make assumptions. Unrecorded assumptions are difficult to review later.
Use a fictional requirement with a clear boundary: an authenticated manager can export active customers from their own organization. The export contains customer ID and display name. It excludes contact details and archived records. A user without the manager role receives no export.
This still needs decisions about format, volume, response time, and failure handling. Mark unknowns explicitly. A useful specification exposes uncertainty instead of hiding it inside confident prose.
Separate requirements from implementation choices
The user needs a permitted set of records in a usable format. The database query, library, and endpoint structure are implementation choices. Connect them to the requirement without treating every current choice as a permanent business need.
Record a consequential decision with its context, alternatives, and reason. For example, synchronous export may fit small volumes. A larger volume can require a background job and a separate download authorization check.
Keep the requirement stable where possible while versioning the changed decision. This helps reviewers distinguish a different implementation from a different promise to users.
Create a short evidence chain
Use identifiers that remain understandable in reviews. For this example, EXPORT-01 can identify the organization boundary. The name is illustrative, not a required numbering system.
| Connection | Example |
|---|---|
| Requirement | EXPORT-01: only records in the manager’s organization |
| Design decision | Enforce membership on the server, not in the browser |
| Implementation | PR changes the query and authorization path |
| Verification | A request for another organization’s records is denied |
| Release evidence | Check result identifies the accepted commit and artifact |
The chain must point to real evidence. A test name containing the requirement ID does not prove that the assertion checks it. Inspect the test and the production path it exercises.
NIST’s SSDF provides context for requirements and verification within secure development. Use traceability to make those activities inspectable rather than producing documentation for its own sake. Read the framework.
Review the impact of a changed assumption
Suppose the business now needs archived customers. That change affects more than a query flag. Check retention rules, authorization, expected volume, user explanations, and the meaning of existing reports.
Mark affected documents and checks for review. Preserve the previous decision so that an operator can explain an older release. Do not silently rewrite history to make the latest design appear inevitable.
An agent can help find references and propose updates. The responsible owners must resolve conflicting requirements and accept the changed behavior. A list of matching files is a starting point, not a complete impact assessment.
Keep the record small enough to use
Record the decisions that affect implementation, verification, and operation. Avoid repeating the same requirement in many disconnected documents. Prefer links to one maintained source.
Before accepting a change, ask whether a reviewer can follow its purpose to the actual evidence. Before operating it, ask whether the service owner can locate the relevant boundary and recovery decision. Those are practical tests of useful traceability.
Do the exercise
Write a requirement for a manager to export active customers. Include permitted users, organization boundary, fields, failure behavior, and a measurable completion condition. Link it to a fictional test and release. Then change the requirement to include archived customers and list the affected decisions.
Download worksheet (Markdown)Check your understanding
Sources & further reading
- NIST: Secure Software Development Framework ↗
- Google Engineering Practices: What to look for in a code review ↗
Related reading from Taiga
Clearing this selection deletes all progress saved in this browser.
Progress stays in this browser. No account, no tracking.