Course contentsShow
← Embedded Systems & Computer Architecture
Lesson 702 of 9369. Embedded Systems Reliability and SafetyFree lesson

Documenting Evidence for Safety Certification Compliance

Compile comprehensive traceability reports linking requirements to verified test results to satisfy industry-specific safety standards like ISO 26262 or DO-178C.

In this lesson, you will learn how to structure bi-directional traceability reports that link high-level safety requirements to their corresponding verification evidence for rigorous standards like ISO 26262 or DO-178C.

The Traceability Matrix: Bridging Design and Verification

Safety certification is not merely about writing correct code; it is about proving that every requirement is fulfilled, tested, and accounted for. Regulators require a Traceability Matrix to demonstrate that no part of the software is "unaccounted for" and that every safety objective has been verified.

The core concept is Bi-directional Traceability:

  1. Forward Traceability: Ensures that every safety requirement (e.g., "The system shall trigger a safe state within 10ms of a watchdog timeout") maps down to specific design modules, source code lines, and passing unit tests.
  2. Backward Traceability: Ensures that every implemented code block and test case is tied back to a specific requirement, proving that there is no "dead" or unauthorized functionality that could introduce safety risks.

Implementing Traceable Evidence

In practice, you maintain this link by tagging your artifacts. In an embedded project, your requirements management tool should map directly to your build system. For example, a requirement might be tagged REQ-SAFE-001. Your test framework must then reference this ID in the test output.

Consider this simplified test structure:

/**
 * @test ID: TEST-REQ-SAFE-001
 * @requirement: REQ-SAFE-001 (Watchdog Graceful Degradation)
 * @description: Validate that stack overflow triggers the recovery sequence.
 */
void test_stack_overflow_recovery(void) {
    inject_stack_overflow();
    assert_true(check_recovery_status() == SYSTEM_SAFE_STATE);
    // Log result: TEST-REQ-SAFE-001 -> PASSED
}

When an auditor reviews your submission, they look for this explicit link. If you have a test that passes but isn't linked to a requirement, it is considered "unauthorized code." If you have a requirement without a linked test result, it is considered "unverified." The compilation of these links into a formal, version-controlled report is the primary artifact that satisfies certification bodies.

Key Takeaway: Safety compliance requires a bi-directional map where every line of code is justified by a requirement and every requirement is validated by a documented test result.