Requirements Engineering for ASPICE
Writing Good Requirements
Every requirement must be:
- Atomic. One requirement = one testable statement. "The system shall measure voltage AND current" is two requirements.
- Unambiguous. No subjective terms ("fast," "reliable," "user-friendly"). Use quantified criteria ("within 100ms," "accuracy +/-5%").
- Testable. An independent party can verify it passes or fails. If you can't write a test for it, rewrite it.
- Uses "shall." The keyword "shall" indicates a mandatory requirement. "Should" and "may" indicate recommendations and options.
- Has verification criteria. Every requirement needs a
verification_criteriaattribute explaining HOW it will be verified and what constitutes pass/fail. - Has a verification method. One of:
test(dynamic execution),analysis(calculation/simulation),inspection(review/walkthrough),demonstration(operational showcase).
The SWE.1.BP6 Cross-Link Rule
ASPICE SWE.1.BP6 requires bidirectional traceability between both:
- System requirements (SYSRS) -> Software requirements (SWRS).
- System architecture (SYSARCH) -> Software requirements (SWRS).
Doorstop only supports one parent per document, so SWRS has SYSRS as its parent. The SYSARCH link must be added as an explicit cross-link:
uv run doorstop link SWRS001 SYSRS001 # Parent link
uv run doorstop link SWRS001 SYSARCH001 # Cross-link (SWE.1.BP6)
Also set the allocated_from_sysarch custom attribute on each SWRS item.
Detailed References
- For the requirement template, common assessor findings table, and structuring guidance, read
references/requirement-quality.md. - For bidirectional traceability details, consistency checking, and verification criteria (WP 17-50) guidance, read
references/traceability-rules.md.