DO-178C is the software assurance standard that airborne systems are certified against. At its core sits one idea that certification authorities test again and again: traceability. Every safety-relevant behavior in the software must be traceable back to a requirement, and every requirement must be traceable forward to the code and tests that implement and verify it. This page explains what that chain looks like, what bidirectional traceability means in practice, how the Design Assurance Levels scale the effort, and where teams most often get into trouble.
If you are certifying avionics software, traceability is not paperwork you produce at the end. It is the connective tissue that lets an auditor follow any requirement to its implementation and back again, and it is one of the first things a Designated Engineering Representative or authority will probe.
DO-178C, titled Software Considerations in Airborne Systems and Equipment Certification, is published by RTCA. Its identical European counterpart is ED-12C, published by EUROCAE. The two documents share the same objectives and content, so a project compliant with one is compliant with the other. Both the FAA in the United States and EASA in Europe recognize DO-178C / ED-12C as the accepted means of compliance for the software of airborne systems.
DO-178C is objective based rather than prescriptive. Instead of dictating a single development process, it defines a set of objectives that the software life cycle must satisfy, and leaves the applicant free to choose how to meet them. The applicant then produces evidence, in the form of life cycle data, that each applicable objective has been achieved. Traceability data is one of the central pieces of that evidence.
For a broader view of certification in this domain, including the hardware counterpart, see our overview of Aerospace & Defense engineering and the companion article Aerospace certifications DO-178C & DO-254.
The rigor DO-178C demands is not the same for all software. It is scaled by the Design Assurance Level (DAL), sometimes called the software level. The DAL is assigned based on the severity of the failure condition that the software could contribute to, as determined by the system safety assessment. There are five levels, from A (the most critical) to E (the least):
| DAL | Failure condition | Relative objective effort |
|---|---|---|
| A | Catastrophic (failure may prevent continued safe flight and landing) | The full set of objectives applies, with the most independence required |
| B | Hazardous / severe-major | Nearly the full set, with extensive verification and independence |
| C | Major | A reduced set of objectives compared with A and B |
| D | Minor | A significantly smaller set, focused on essential objectives |
| E | No effect on safety | No DO-178C objectives apply once the level is confirmed |
The key principle is that the number of applicable objectives, and the degree of independence required to satisfy them, increase with criticality. The highest levels require essentially the full set of objectives; lower levels progressively relax both the count and the independence expectations. A large share of the additional objectives at Levels A and B concern verification and structural coverage, which is exactly where thorough traceability pays off.
DO-178C traceability follows the software as it is refined from an abstract need into executable, verified code. The chain typically runs through these layers:
1. System requirements allocated to software. These come from the system level and define what the software must do.
2. High-level requirements (HLR). The software requirements derived from the system requirements: what the software shall do, without fixing the internal design.
3. Low-level requirements (LLR) and software architecture. The detailed requirements from which source code can be written directly, together with the architecture that organizes them.
4. Source code. The implementation, developed from the low-level requirements.
5. Test cases, procedures and results. The verification evidence that shows the requirements are met, including the results of running the tests and the associated coverage analysis.
Each link in this chain must be documented. A high-level requirement traces down to the low-level requirements that decompose it; each low-level requirement traces to the code that implements it; each requirement traces to the test cases that verify it and to the results of running those tests. Read the other way, every line of code and every test should trace back up to a requirement that justifies its existence.
Bidirectional traceability means the trace links can be followed in both directions, and that both directions are complete:
Bidirectionality matters because the two directions catch different problems. Forward traceability catches omissions: requirements that were never implemented or never tested. Backward traceability catches additions: behavior that exists in the code but was never called for by any requirement. Both are safety concerns in an airborne system, and DO-178C explicitly expects the trace data to support analysis in both directions. When a requirement changes, complete bidirectional links are also what make impact analysis tractable: you can see immediately which design elements, code units and tests are affected.
Traceability is verified, not just declared. DO-178C verification combines reviews, analyses and testing, and traceability underpins all three.
The higher the DAL, the more of this verification must be performed with independence, meaning by someone other than the author of the item being verified.
DO-178C is accompanied by four technology supplements. They do not replace the core standard; they explain how its objectives apply when a particular technique is used, and they carry their own traceability expectations.
Whichever supplements apply, the underlying traceability obligation does not go away: models, generated artifacts and formal specifications all still need to trace to and from the surrounding life cycle data.
Many teams begin tracing DO-178C artifacts in word-processor documents and spreadsheets, and many discover late in the program that this does not scale. The recurring problems are:
The alternative is to hold requirements, design, code references and test artifacts as linked items in a single connected model, so that a trace link is a live relationship rather than a copied identifier. Bidirectional queries and change impact then come for free, and the certification evidence is a report generated from the model rather than a document assembled by hand.
It is the ability to follow trace links in both directions and have both be complete. Forward (top-down) trace goes from each requirement to the design, code and tests that satisfy it, proving nothing was left unimplemented or untested. Backward (bottom-up) trace goes from each code element or test to the requirement that justifies it, proving nothing unintended was added. DO-178C expects the trace data to support analysis in both directions.
Design Assurance Levels (DAL) A to E classify software by the severity of the failure condition it could contribute to. A is catastrophic, B hazardous, C major, D minor and E has no safety effect. The number of applicable objectives and the required independence increase with criticality: the highest levels require the full set of objectives, while lower levels apply progressively fewer.
Yes, in content. DO-178C is published by RTCA and ED-12C is its identical European counterpart published by EUROCAE. They share the same objectives and text, so compliance with one is compliance with the other. The FAA and EASA both accept DO-178C / ED-12C as a means of compliance for airborne software.
They explain how DO-178C objectives apply to specific techniques. DO-330 covers software tool qualification, DO-331 model-based development and verification, DO-332 object-oriented technology and related techniques, and DO-333 formal methods. They add technique-specific guidance without removing the underlying traceability obligation.
Because trace links become copied identifiers rather than live relationships. Requirements get renumbered and references go stale, backward links get neglected so unintended code hides, and there is no automatic way to see the reverification scope when a requirement changes. Holding requirements, design, code and tests as linked items in one connected model keeps the trace consistent and lets bidirectional queries and change impact fall out automatically.
We build a Koddex workspace with your models and your vocabulary, on your regulatory file, then walk your team through it live. Free, 30 minutes.
Book my custom demo →Verbatims: what hardware teams say about Koddex.