Path 04Lesson 2 / 10

Keep requirements traceable as software changes

Connect a user outcome to decisions, acceptance criteria, implementation, and evidence. Update the connections when assumptions change.

Practitioner10 minReviewed

Published by How 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.

ConnectionExample
RequirementEXPORT-01: only records in the manager’s organization
Design decisionEnforce membership on the server, not in the browser
ImplementationPR changes the query and authorization path
VerificationA request for another organization’s records is denied
Release evidenceCheck 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

The specification changes after the architecture and tests were prepared. What should happen?

Sources & further reading

Related reading from Taiga