DO-178C Certification - Your Complete Verification Journey

DO-178C/ED-12C (referred to here as DO-178C) is the pri­ma­ry doc­u­ment ref­er­enced by cer­ti­fi­ca­tion author­i­ties includ­ing the Fed­er­al Avi­a­tion Admin­is­tra­tion (FAA), Euro­pean Union Avi­a­tion Safe­ty Agency (EASA), and Trans­port Cana­da to approve soft­ware used in com­mer­cial civil air­borne sys­tems. It is jointly pub­lished by RTCA (for­mer­ly the Radio Tech­ni­cal Com­mit­tee for Aero­nau­tics) and the Euro­pean Organ­i­sa­tion for Civil Avi­a­tion Equip­ment (EUROCAE).

For devel­op­ers of air­borne soft­ware, the DO-178C process defines how cor­rect­ness, con­trol, and con­fi­dence must be demon­strat­ed for cer­ti­fi­ca­tion.

It requires a “safe­ty by design” approach. Assur­ance is built into the soft­ware develop­ment life­cy­cle through rig­or­ous process­es, trace­abil­i­ty, and ver­i­fi­ca­tion.

TASKING sup­ports that com­plete ver­i­fi­ca­tion jour­ney by bring­ing com­pil­er tech­nol­o­gy, advanced debug­ging and trace, and soft­ware ver­i­fi­ca­tion togeth­er in a uni­fied work­flow. This cre­ates a con­nect­ed path from source code and build integri­ty through on-tar­get exe­cu­tion, cov­er­age, trace­abil­i­ty, and cer­ti­fi­ca­tion evi­dence.
Chal­lenges
  • Demon­strat­ing that air­borne soft­ware meets its require­ments
  • Ver­i­fy­ing exe­cutable object code on rep­re­sen­ta­tive tar­get hard­ware
  • Achiev­ing the struc­tur­al cov­er­age required for the applic­a­ble Soft­ware Level
  • Main­tain­ing trace­abil­i­ty and cred­i­ble ver­i­fi­ca­tion evi­dence
TASKING sup­port
  • Source-to-object-code ver­i­fi­ca­tion for com­pil­er-gen­er­at­ed object code
  • winIDEA debug­ging and tar­get exe­cu­tion insight
  • Blue­Box non-intru­sive trace where required
  • LDRA test­ing, cov­er­age, analy­sis, trace­abil­i­ty, and evi­dence sup­port
Out­comes
  • Clear­er vis­i­bil­i­ty into soft­ware behav­ior on tar­get
  • Ear­li­er iden­ti­fi­ca­tion of ver­i­fi­ca­tion gaps
  • More con­trolled test­ing and regres­sion analy­sis
  • Evi­dence that is eas­i­er to review and main­tain

What is DO-178C?

DO-178C “Soft­ware Con­sid­er­a­tions in Air­borne Sys­tems and Equip­ment Cer­ti­fi­ca­tion” is a for­mal process stan­dard that cov­ers the com­plete soft­ware life­cy­cle. It includes the plan­ning, develop­ment, and inte­gral process­es need­ed to ensure cor­rect­ness and robust­ness in soft­ware devel­oped for civil avion­ics sys­tems.

The inte­gral process­es include soft­ware ver­i­fi­ca­tion, soft­ware qual­i­ty assur­ance, con­fig­u­ra­tion man­age­ment, and cer­ti­fi­ca­tion liai­son with reg­u­la­to­ry author­i­ties. Defense pro­grams increas­ing­ly use DO-178C too, as estab­lished best prac­tice.

Is DO-178B still relevant?

In Jan­u­ary 2012 DO-178C replaced the long-stand­ing DO-178B stan­dard as the de facto ref­er­ence for the develop­ment of air­borne embed­ded soft­ware. Togeth­er with its sup­port­ing doc­u­ments, DO-178C improved safe­ty require­ments and addressed new tech­nolo­gies in civil avion­ics sys­tems.

DO-178B is still rec­og­nized and may be used for lega­cy projects. How­ev­er, the FAA rec­om­mends that new appli­cants or devel­op­ers estab­lish their soft­ware life cycle process­es in accor­dance with DO-178C.

LDRA has con­tributed to the evo­lu­tion of DO-178 guid­ance over many years, includ­ing par­tic­i­pa­tion in both DO-178B and DO-178C work­ing groups. Its work has helped shape indus­try approach­es to auto­mat­ed ver­i­fi­ca­tion, includ­ing struc­tur­al cov­er­age analy­sis.

What does DAL mean in the context of DO-178C?

DAL is an abbre­vi­a­tion for Design Assur­ance Level, some­times referred to as a Level. ARP4754B requires that func­tion­al haz­ard analy­ses and sys­tem safe­ty assess­ments are com­plet­ed prior to sys­tem develop­ment.

DO-178C Design Assurance Level table mapping DAL A to E against failure severity

A DAL is assigned accord­ing­ly for that sys­tem, and for the sub­sys­tems that imple­ment its hard­ware and soft­ware require­ments. The rigor demand­ed in the develop­ment and ver­i­fi­ca­tion of safe­ty-crit­i­cal air­borne soft­ware sys­tems depends on the assigned DAL. As a result, the effort and expense of pro­duc­ing (say) a flight con­trol sys­tem is nec­es­sar­i­ly high­er than that required to imple­ment a bath­room smoke detec­tor.

Software levels and DALs

Sys­tem-level DALs are decom­posed into hard­ware DALs and “Soft­ware Lev­els” for the con­tribut­ing sub­sys­tems, with DO-178C defin­ing the objec­tives that apply to each soft­ware level.

Impor­tant­ly, soft­ware lev­els do not nec­es­sar­i­ly cor­re­spond direct­ly to sys­tem DALs. The level assigned to a soft­ware com­po­nent depends on the con­tri­bu­tion that soft­ware makes to the sys­tem-level fail­ure con­di­tion being con­sid­ered.

What is involved with DO-178C compliance?

DO-178C com­pli­ance requires a struc­tured approach across the soft­ware life­cy­cle, includ­ing plan­ning, develop­ment, and inte­gral process­es.

These include ver­i­fi­ca­tion, qual­i­ty assur­ance, con­fig­u­ra­tion man­age­ment, and cer­ti­fi­ca­tion liai­son with reg­u­la­to­ry author­i­ties.

DO-178C software lifecycle diagram showing planning, verification, SOI reviews, and final certification phases

DO-178C rec­og­nizes that soft­ware safe­ty must be addressed sys­tem­at­i­cal­ly through­out the soft­ware life cycle. This involves life cycle trace­abil­i­ty, soft­ware design, cod­ing, val­i­da­tion, and ver­i­fi­ca­tion process­es. In com­bi­na­tion, these help to ensure cor­rect­ness, con­trol, and con­fi­dence in the soft­ware.

The stan­dard defines sev­er­al mech­a­nisms to help ensure that the process­es are fol­lowed and to pro­vide objec­tive evi­dence of com­pli­ance.

Simplify your DO-178C verification journey

The LDRA Pro­duc­tiv­i­ty Pack­age for Aero­space and Defense is struc­tured around the DO-178C life­cy­cle. Plan­ning, develop­ment, ver­i­fi­ca­tion, and evi­dence gen­er­a­tion are sup­port­ed with­in a sin­gle inte­grat­ed envi­ron­ment, with trace­abil­i­ty main­tained across every stage. Whether you are writ­ing require­ments, ana­lyz­ing code, exe­cut­ing tests, or pro­duc­ing cer­ti­fi­ca­tion arti­facts, the objec­tives applic­a­ble to your Soft­ware Level are always in view for your project, not a gener­ic base­line that needs con­stant man­u­al inter­pre­ta­tion.

What are the planning documents required by DO-178C?

Col­lec­tive­ly, the plan­ning doc­u­ments spec­i­fied in DO-178C pro­vide a frame­work for the develop­ment and cer­ti­fi­ca­tion of air­borne soft­ware. They ensure that activ­i­ties are planned, con­trolled, and ver­i­fied against require­ments, as fol­lows:

“Plan for Soft­ware Aspects of Cer­ti­fi­ca­tion (PSAC)”: Defines how the soft­ware develop­ment process will com­ply with DO-178C require­ments.

“Soft­ware Develop­ment Plan (SDP)”: Defines soft­ware develop­ment activ­i­ties includ­ing method­olo­gies, stan­dards, the develop­ment envi­ron­ment, con­fig­u­ra­tion man­age­ment prac­tices, and sched­ul­ing.

“Soft­ware Ver­i­fi­ca­tion Plan (SVP)”: Defines how the soft­ware ver­i­fi­ca­tion activ­i­ties are to be con­duct­ed to ensure com­pli­ance with DO-178C.

“Soft­ware Con­fig­u­ra­tion Man­age­ment Plan (SCMP)”: Defines how soft­ware con­fig­u­ra­tion man­age­ment will be imple­ment­ed.

“Soft­ware Qual­i­ty Assur­ance Plan (SQAP)”: Defines which qual­i­ty assur­ance activ­i­ties will be applied, and when.

“Tool Qual­i­fi­ca­tion Plan (TQP)”: Defines how tools used in develop­ment and ver­i­fi­ca­tion will be qual­i­fied.

What are the “Stages of Involvement (SOI)”?

DO-178C defines four Stages of Involve­ment (SOI), which func­tion as for­mal review points. They ensure that soft­ware develop­ment process­es and out­puts meet the require­ments of the stan­dard.

Cer­ti­fi­ca­tion author­i­ty rep­re­sen­ta­tives such as FAA Des­ig­nat­ed Engi­neer­ing Rep­re­sen­ta­tives (DERs) and EASA Sub­ject Mat­ter Experts (SMEs) are active­ly involved with SOIs. The reviews pro­vide struc­tured check­points across the soft­ware develop­ment life cycle, ensur­ing a dis­ci­plined path to com­pli­ance.

What is the DO-178C “Software Accomplishment Summary (SAS)”?

The Soft­ware Accom­plish­ment Sum­ma­ry doc­u­ments the DO-178C soft­ware develop­ment and ver­i­fi­ca­tion activ­i­ties. It includes sum­maries of develop­ment activ­i­ties and ver­i­fi­ca­tion results, and find­ings from the qual­i­fi­ca­tion of ver­i­fi­ca­tion tools.

Maintain traceability and certification evidence

DO-178C requires that every stage of the soft­ware life­cy­cle is trace­able with clear, bidi­rec­tion­al links between require­ments, design, imple­men­ta­tion, ver­i­fi­ca­tion activ­i­ties, and results. This demon­strates the cor­rect imple­men­ta­tion of all require­ments and con­firms that no unin­tend­ed func­tion­al­i­ty has been intro­duced.

The LDRA tool suite main­tains that trace­abil­i­ty across the full develop­ment life­cy­cle, link­ing require­ments to source code, test cases, and ver­i­fi­ca­tion results. It inte­grates with work­flows rang­ing from sim­ple doc­u­ment-based approach­es through to enter­prise ALM/PLM envi­ron­ments. They are sup­port­ed by Tool Qual­i­fi­ca­tion Sup­port Packs, stream­lin­ing the qual­i­fi­ca­tion process required by DO-330.

The LDRA Pro­duc­tiv­i­ty Pack­age for Aero­space and Defense maps the DO-178C objec­tives applic­a­ble to your Soft­ware Level with­in that trace­abil­i­ty frame­work. Pass/fail report­ing is aligned to those same objec­tives, so your team is always work­ing to the right stan­dard, and report­ing pro­vides the evi­den­tial arti­facts expect­ed by the cer­ti­fi­ca­tion author­i­ties.

What does DO-178C Section 5.0: “SOFTWARE DEVELOPMENT PROCESSES” cover?

DO-178C Sec­tion 5.0 out­lines the key process­es involved in soft­ware develop­ment for air­borne sys­tems. It includes the Soft­ware Require­ments Process (5.1), Soft­ware Design Process (5.2), Soft­ware Cod­ing Process (5.3), Inte­gra­tion Process (5.4), and Soft­ware Develop­ment Process Trace­abil­i­ty (5.5).

Sec­tion 5.3 spec­i­fies soft­ware cod­ing process objec­tives, such as the imple­men­ta­tion of low-level require­ments and the con­for­mance to a defined lan­guage sub­set (or “cod­ing stan­dard”).

Sec­tion 5.5 requires arti­facts to demon­strate that each develop­ment phase is com­plete, coher­ent, and trace­able to its pre­de­ces­sor.

These activ­i­ties are typ­i­cal­ly sup­port­ed by auto­mat­ed tools for code analy­sis, stan­dards com­pli­ance, and trace­abil­i­ty, all of which are deployed as part of the ver­i­fi­ca­tion process­es.

Build confidence in your executable software

DO-178C places strong empha­sis on the integri­ty of the soft­ware build process, as the exe­cutable object code is the arti­fact that must be ver­i­fied. Con­fi­dence in it depends on the cor­rect and con­sis­tent oper­a­tion of the com­pil­er, link­er, and asso­ci­at­ed build tools.

Build integri­ty also depends on con­fig­u­ra­tion con­trol and the abil­i­ty to repro­duce results. TASKING sup­ports this through sta­ble tool­chains and well-defined build process­es, enabling you to gen­er­ate con­sis­tent out­puts and main­tain con­fi­dence in the rela­tion­ship between source code and object code.

What does DO-178C Section 6.0: “SOFTWARE VERIFICATION PROCESSES” cover?

DO-178C Sec­tion 6.0 defines the objec­tives and meth­ods used to demon­strate that soft­ware meets its require­ments and behaves cor­rect­ly. Ver­i­fi­ca­tion activ­i­ties include reviews, analy­ses, and test­ing at mul­ti­ple lev­els, includ­ing low-level test­ing, soft­ware inte­gra­tion test­ing, and hardware/software inte­gra­tion.

In prac­tice, these activ­i­ties are sup­port­ed by auto­mat­ed tools for test exe­cu­tion, cov­er­age analy­sis, and results man­age­ment.

Dynam­ic analy­sis exer­cis­es exe­cutable object code on a rep­re­sen­ta­tive tar­get using defined test cases and pro­ce­dures. It pro­vides evi­dence of cor­rect func­tion­al­i­ty and iden­ti­fies which parts of the code have been exer­cised (struc­tur­al cov­er­age). Test cases may include low-level (unit), inte­gra­tion, and sys­tem tests.

Low-level test­ing ver­i­fies the com­plete and exclu­sive imple­men­ta­tion of low-level require­ments defined in the Soft­ware Ver­i­fi­ca­tion Plan (SVP). Soft­ware inte­gra­tion test­ing ver­i­fies inter­ac­tions between soft­ware com­po­nents against the soft­ware archi­tec­ture and asso­ci­at­ed require­ments. In prac­tice, the mech­a­nisms used for low-level test­ing often extend nat­u­ral­ly to inte­gra­tion test­ing, enabling ver­i­fi­ca­tion of behav­ior across the call tree.

When changes are made, impact­ed low-level and inte­gra­tion tests must be re-run as part of regres­sion test­ing. This ensures that exist­ing func­tion­al­i­ty con­tin­ues to behave as expect­ed as develop­ment pro­gress­es.

Static analysis and code quality

DO-178C expects your code to com­ply with a defined lan­guage sub­set (whether an estab­lished stan­dard such as MISRA or CERT, or one devel­oped in-house), remain free from defects includ­ing data flow anom­alies and unini­tial­ized vari­ables, and be assessed for com­plex­i­ty.

That means apply­ing analy­sis con­sis­tent­ly, not just at the start of develop­ment, but every time the code changes. This applies whether you are using C or C++, includ­ing object-ori­ent­ed develop­ment aligned with DO-332, and whether your code is hand­writ­ten, auto-gen­er­at­ed, or a com­bi­na­tion of both. Lan­guage sub­set enforce­ment helps you detect issues early and pre­vent them from prop­a­gat­ing into later ver­i­fi­ca­tion activ­i­ties.

Automate code quality and standards compliance

The LDRA tool suite pro­vides a con­sis­tent way to assess code qual­i­ty and enforce cod­ing stan­dards across your project, includ­ing sup­port for estab­lished lan­guage sub­sets and cod­ing stan­dards devel­oped in-house.

You can check com­pli­ance with your cho­sen lan­guage sub­set, iden­ti­fy poten­tial defects includ­ing data flow anom­alies and unini­tial­ized vari­ables, and assess code com­plex­i­ty. As develop­ment pro­gress­es, apply­ing the same analy­sis repeat­ed­ly ensures that changes do not intro­duce new issues, giv­ing you a con­trolled base­line for code qual­i­ty that remains sta­ble across the life­cy­cle.

How is executable object code verified on target?

DO-178C requires you to demon­strate that your soft­ware behaves cor­rect­ly on the tar­get, not just that it com­piles. Ver­i­fi­ca­tion is per­formed through require­ments-based test­ing at both low level and inte­gra­tion level. Low-level tests demon­strate the com­plete and exclu­sive imple­men­ta­tion of soft­ware require­ments, while inte­gra­tion tests ver­i­fy how soft­ware com­po­nents inter­act with­in the sys­tem archi­tec­ture.

Dynam­ic analy­sis exer­cis­es exe­cutable object code on a rep­re­sen­ta­tive tar­get using defined test cases and pro­ce­dures. Under­stand­ing how the soft­ware behaves in its real exe­cu­tion envi­ron­ment is there­fore as impor­tant as the analy­sis and test­ing activ­i­ties that pre­cede it.

Achiev­ing that vis­i­bil­i­ty can involve instru­ment­ed approach­es which cap­ture detailed exe­cu­tion and cov­er­age data, or trace-based cov­er­age which pre­serves the tim­ing char­ac­ter­is­tics of the deployed soft­ware. The dis­tinc­tion mat­ters where tim­ing, con­cur­ren­cy, or mul­ti­core inter­ac­tions are involved, and where instru­men­ta­tion may affect the behav­ior being ver­i­fied.

Verify software behavior on target

The winIDEA debug­ger gives you direct con­trol over exe­cu­tion on tar­get hard­ware. You can set break­points, inspect vari­ables, and observe how your soft­ware responds to test inputs, giv­ing you clear vis­i­bil­i­ty of behav­ior dur­ing require­ments-based test­ing.

The LDRA tool suite sup­ports instru­ment­ed approach­es that cap­ture detailed exe­cu­tion and cov­er­age data across both low-level and inte­gra­tion test­ing. Where non-intru­sive trace is need­ed, Blue­Box pro­vides hard­ware-based access to exe­cu­tion data with­out mod­i­fy­ing the soft­ware under test.

Structural coverage and DO-178C

Struc­tur­al cov­er­age analy­sis pro­vides evi­dence that require­ments-based tests have exer­cised the code to a defined extent.

By mea­sur­ing which parts of the soft­ware struc­ture are exe­cut­ed dur­ing test­ing, it sup­ports both com­pli­ance and safe­ty assur­ance. The required level of cov­er­age depends on Soft­ware Level.

  • Mod­i­fied Condition/Decision Cov­er­age (MC/DC)
    Required for Soft­ware Level A. Each con­di­tion with­in a deci­sion must be shown to inde­pen­dent­ly affect the out­come.
  • Deci­sion cov­er­age
    Required for Soft­ware Level A and B. Each deci­sion must eval­u­ate to both true and false at least once.
  • State­ment cov­er­age
    Required for Soft­ware Level A, B, and C. Every exe­cutable state­ment must be exer­cised at least once.
  • Data Cou­pling and Con­trol Cou­pling (DCCC) cov­er­age
    Required for Soft­ware Level A and B, and rec­om­mend­ed for Level C. Data exchanges and con­trol inter­ac­tions between mod­ules must be exer­cised.
  • Source to object code trace­abil­i­ty
    Required for Soft­ware Level A. Addi­tion­al ver­i­fi­ca­tion is required for object code that can­not be direct­ly traced to source, such as com­pil­er-gen­er­at­ed con­structs.

Struc­tur­al cov­er­age analy­sis strength­ens con­fi­dence that test­ing is com­plete and rep­re­sen­ta­tive. It sup­ports dis­ci­plined ver­i­fi­ca­tion, bidi­rec­tion­al trace­abil­i­ty, and com­pli­ance with DO-178C objec­tives. Achiev­ing this typ­i­cal­ly relies on auto­mat­ed tools to mea­sure cov­er­age and iden­ti­fy gaps.

How are statement and decision coverage achieved?

Require­ments-based test­ing must demon­strate that every part of the soft­ware has been exer­cised. State­ment cov­er­age and deci­sion cov­er­age are the foun­da­tion­al met­rics for doing so.

State­ment cov­er­age con­firms that every exe­cutable state­ment has been exer­cised at least once dur­ing test­ing. Deci­sion cov­er­age goes fur­ther, requir­ing that every deci­sion in the code (such as an “if” state­ment) has eval­u­at­ed to both true and false at least once. Com­bin­ing the two ensures that all state­ments are exer­cised fully, includ­ing both out­comes of any state­ment con­tain­ing a deci­sion.

DO-178C defines state­ment cov­er­age as an objec­tive for soft­ware at Lev­els A, B, and C. Deci­sion cov­er­age is an objec­tive for Lev­els A and B. Nei­ther met­ric alone guar­an­tees the absence of defects, but togeth­er they pro­vide a mea­sur­able, ver­i­fi­able base­line that test­ing has been thor­ough and com­plete.

Automate statement and decision coverage analysis

The LDRA tool suite mea­sures state­ment and deci­sion cov­er­age direct­ly from require­ments-based test exe­cu­tion, giv­ing you clear, reportable evi­dence of the cov­er­age achieved. Where gaps exist, the results iden­ti­fy exact­ly which state­ments or deci­sions remain unex­er­cised, so you can extend your test cases with con­fi­dence rather than guess­work.

How is Modified Condition/Decision Coverage (MC/DC) achieved?

MC/DC is a cov­er­age met­ric for deci­sions with mul­ti­ple con­di­tions. It does not require every pos­si­ble com­bi­na­tion of inputs to be exe­cut­ed. Instead, it requires a min­i­mum set of tests in which each con­di­tion is shown to inde­pen­dent­ly affect the out­come.

For exam­ple, a deci­sion with six con­di­tions has 64 pos­si­ble input com­bi­na­tions, yet only seven care­ful­ly con­struct­ed tests are need­ed to achieve MC/DC cov­er­age.

Iden­ti­fy­ing those tests is not always straight­for­ward. Each con­di­tion must be var­ied in iso­la­tion while all oth­ers are held con­stant, and it is not always obvi­ous which input val­ues will achieve this. Deriv­ing and exe­cut­ing an effec­tive MC/DC test set is a pre­cise exer­cise, and one that lends itself well to auto­mat­ed sup­port.

Automate MC/DC analysis

The LDRA tool suite auto­mates the deriva­tion and exe­cu­tion of MC/DC test sets. It iden­ti­fies which input com­bi­na­tions are need­ed to demon­strate inde­pen­dent influ­ence for each con­di­tion, reduc­ing the man­u­al effort involved and pro­vid­ing clear evi­dence of MC/DC achieve­ment aligned with DO-178C Soft­ware Level A objec­tives.

How is Data Coupling and Control Coupling (DCCC) coverage achieved?

Orga­niz­ing soft­ware into well-defined func­tion­al units with clear inter­faces (mod­u­lar­iza­tion) is a foun­da­tion­al prin­ci­ple. In DO-178C, this is not only good prac­tice but a reg­u­la­to­ry expec­ta­tion. Data cou­pling and con­trol cou­pling are sub­ject to explic­it ver­i­fi­ca­tion.

Con­trol cou­pling is defined as “The man­ner or degree by which one soft­ware com­po­nent influ­ences the exe­cu­tion of anoth­er soft­ware com­po­nent.” Data cou­pling is defined as “The depen­dence of a soft­ware com­po­nent on data not exclu­sive­ly under the con­trol of that soft­ware com­po­nent.”

Both forms of cou­pling must be exer­cised and ver­i­fied through require­ments-based test­ing. Sec­tion 6.4.4.2.c calls for analy­sis to con­firm that test­ing has exer­cised data cou­pling and con­trol cou­pling between soft­ware com­po­nents.

In prac­tice, evi­dence is derived from test exe­cu­tion. Pro­ce­dure and func­tion call cov­er­age are used to assess con­trol cou­pling, while data flow analy­sis is used to assess data cou­pling. Struc­tur­al cov­er­age analy­sis sup­ports these activ­i­ties and helps meet Objec­tive A-7.8, which requires cov­er­age of soft­ware struc­ture, includ­ing data cou­pling and con­trol cou­pling.

Achiev­ing struc­tur­al cov­er­age typ­i­cal­ly relies on auto­mat­ed tools to mea­sure cov­er­age and iden­ti­fy gaps.

Automate data coupling and control coupling verification

The LDRA tool suite derives data cou­pling and con­trol cou­pling cov­er­age direct­ly from require­ments-based test exe­cu­tion, cov­er­ing both low-level tests and tests that exer­cise inter­ac­tions between soft­ware com­po­nents.

Con­trol cou­pling evi­dence is built from pro­ce­dure and func­tion call cov­er­age, con­firm­ing that the con­trol rela­tion­ships between com­po­nents have been exer­cised. Data cou­pling evi­dence is sup­port­ed by data flow analy­sis, ver­i­fy­ing that data exchanges between com­po­nents have been test­ed as required.

Where gaps exist, the results iden­ti­fy exact­ly which cou­pling rela­tion­ships remain unex­er­cised, so you can extend test cases with con­fi­dence. Pass/fail report­ing is aligned to the DO-178C objec­tives applic­a­ble to your Soft­ware Level, pro­vid­ing the trace­able, cer­ti­fi­ca­tion-ready evi­dence expect­ed by the cer­ti­fi­ca­tion author­i­ties.

How is source to object code traceability verified using Object Code Verification (OCV)?

When struc­tur­al cov­er­age is mea­sured at source code level, there is an implic­it assump­tion that the com­pil­er faith­ful­ly repro­duces the devel­op­er’s intent in the result­ing object code. That assump­tion does not always hold.

Com­pil­ers are per­mit­ted to mod­i­fy code in any way they choose, pro­vid­ed the bina­ry behaves as if the orig­i­nal source had been exe­cut­ed. Opti­miza­tions and com­pil­er-gen­er­at­ed con­structs can pro­duce object code struc­tures with no direct equiv­a­lent in the source. The con­se­quence is that 100% source code cov­er­age does not guar­an­tee that all object code paths have been exer­cised.

For Level A soft­ware, DO-178C §6.4.4.2b is explic­it: where the com­pil­er gen­er­ates object code that can­not be direct­ly traced to source code state­ments, addi­tion­al ver­i­fi­ca­tion should be per­formed.

Because object code and assem­bly code have a one-to-one rela­tion­ship, demon­strat­ing source-to-assem­bly trace­abil­i­ty is equiv­a­lent to demon­strat­ing source-to-object trace­abil­i­ty. Object Code Ver­i­fi­ca­tion (OCV) uses this rela­tion­ship to expose which object code paths remain unex­er­cised, enabling addi­tion­al tests to be devised to address them.

Automate source-to-object code verification (OCV)

Addi­tion­al ver­i­fi­ca­tion is required where com­pil­er-gen­er­at­ed object code can­not be direct­ly traced to source code. The LDRA tool suite sup­ports source-to-object code ver­i­fi­ca­tion (OCV), enabling com­par­i­son between source-level and object-level behav­ior to estab­lish con­fi­dence in the cor­rect­ness of gen­er­at­ed code.

Togeth­er, these capa­bil­i­ties pro­vide a clear and trace­able view of how thor­ough­ly the soft­ware has been exer­cised, sup­port­ing the pro­duc­tion of cer­ti­fi­ca­tion-ready evi­dence and help­ing you achieve the level of rigor expect­ed for DO-178C com­pli­ance.

Timing, multicore, and interference analysis

Mod­ern air­borne sys­tems increas­ing­ly rely on mul­ti­core proces­sors, and that intro­duces ver­i­fi­ca­tion chal­lenges that go beyond those addressed by DO-178C alone. Shared hard­ware resources, con­cur­rent exe­cu­tion across cores, and inter­fer­ence between soft­ware com­po­nents can all affect tim­ing behav­ior in ways that are dif­fi­cult to pre­dict and hard­er to bound.

A(M)C 20-193 pro­vides guid­ance for demon­strat­ing that these effects are under­stood and con­trolled. It requires devel­op­ers to iden­ti­fy inter­fer­ence chan­nels, ver­i­fy that mit­i­ga­tion mea­sures are effec­tive, and demon­strate that resource demands do not exceed avail­abil­i­ty under real­is­tic oper­at­ing con­di­tions. Worst-Case Exe­cu­tion Time (WCET) analy­sis is cen­tral to meet­ing those objec­tives, but on a mul­ti­core proces­sor, inter­fer­ence from shared resources means that exe­cu­tion times can be wide and unpre­dictable. Demon­strat­ing safe bounds requires mea­sure­ment under real­is­tic load con­di­tions, not just analy­sis of the code in iso­la­tion.

Analyze timing and multicore interference

The LDRA tool suite sup­ports Worst-Case Exe­cu­tion Time (WCET) analy­sis, help­ing assess tim­ing behav­ior and iden­ti­fy poten­tial inter­fer­ence from shared resources and con­cur­rent activ­i­ty.

Blue­Box com­ple­ments this by pro­vid­ing non-intru­sive hard­ware-based trace on tar­get hard­ware, enabling obser­va­tion of tim­ing behav­ior, task inter­ac­tion, and exe­cu­tion flow with­out mod­i­fy­ing the code.

Togeth­er, these capa­bil­i­ties sup­port the analy­sis and evi­dence need­ed to demon­strate that inter­fer­ence effects are under­stood and con­trolled in line with A(M)C 20-193.

DO-178C does not oper­ate in iso­la­tion. It sits with­in a broad­er frame­work of stan­dards and guid­ance doc­u­ments that togeth­er cover sys­tem safe­ty, tool qual­i­fi­ca­tion, model-based develop­ment, object-ori­ent­ed tech­nol­o­gy, for­mal meth­ods, cyber­se­cu­ri­ty, and mul­ti­core proces­sors. Under­stand­ing how they relate helps you nav­i­gate your cer­ti­fi­ca­tion oblig­a­tions with con­fi­dence.

DO-178C cer­ti­fi­ca­tion stan­dards frame­work for aero­space soft­ware sys­tems.

DO-178C and SAE ARP4754B

SAE ARP4754B “Guide­lines for Develop­ment of Civil Air­craft and Sys­tems” pro­vides the over­ar­ch­ing frame­work for sys­tem-level develop­ment. DO-178C defines soft­ware-spe­cif­ic guid­ance with­in it.

DO-178C and SAE ARP4761A

SAE ARP4761A “Guide­lines and Meth­ods for Con­duct­ing the Safe­ty Assess­ment Process on Civil Air­borne Sys­tems and Equip­ment” guides safe­ty assess­ments for sys­tems and equip­ment devel­oped in accor­dance with the ARP4754 frame­work. DO-178C defines soft­ware-spe­cif­ic guid­ance with­in that frame­work.

DO-178C and DO-278A/ED-109

RTCA DO-278A “Soft­ware Integri­ty Assur­ance Con­sid­er­a­tions for Com­mu­ni­ca­tion, Nav­i­ga­tion, Sur­veil­lance and Air Traf­fic Man­age­ment (CNS/ATM) Sys­tems” was devel­oped in par­al­lel with DO-178C. It serves a sim­i­lar pur­pose for ground-based sys­tems.

DO-178C and DO-330/ED-215

RTCA DO-330 “Soft­ware Tool Qual­i­fi­ca­tion Con­sid­er­a­tions” guides tool qual­i­fi­ca­tion in com­pli­ance with DO-278A and DO-178C. It is equal­ly applic­a­ble to other safe­ty-crit­i­cal sec­tors.

DO-178C and DO-331/ED-218

RTCA DO-331 “Model-Based Develop­ment and Ver­i­fi­ca­tion Sup­ple­ment to DO-178C and DO-278A” defines how design assur­ance lev­els (DAL), model-based develop­ment, and model-based ver­i­fi­ca­tion are applied togeth­er with­in the cer­ti­fi­ca­tion process.

DO-178C and DO-332/ED-217

RTCA DO-332 “Object-Ori­ent­ed Tech­nol­o­gy and Relat­ed Tech­niques Sup­ple­ment to DO-178C and DO-278A” defines addi­tion­al objec­tives for the use of object-ori­ent­ed pro­gram­ming and com­ple­men­tary prac­tices and guides the appli­ca­tion of DO-178C and DO-278A objec­tives with­in an object-ori­ent­ed (OO) envi­ron­ment.

DO-178C and DO-333/ED-216

RTCA DO-333 “For­mal Meth­ods Sup­ple­ment to DO-178C and DO-278A” defines addi­tion­al objec­tives for the use of for­mal meth­ods and guides the appli­ca­tion of DO-178C and DO-278A objec­tives when they are used.

DO-178C and DO-326B/ED-202A

RTCA DO-326B “Air­wor­thi­ness Secu­ri­ty Process Spec­i­fi­ca­tion” defines a frame­work for man­ag­ing secu­ri­ty risks in air­borne sys­tems and com­ple­ments DO-178C by address­ing secu­ri­ty con­sid­er­a­tions along­side soft­ware develop­ment and ver­i­fi­ca­tion activ­i­ties.

DO-178C and DO-356A/ED-203A

RTCA DO-356A “Air­wor­thi­ness Secu­ri­ty Meth­ods and Con­sid­er­a­tions” pro­vides detailed guid­ance on per­form­ing secu­ri­ty analy­ses and imple­ment­ing pro­tec­tive mea­sures, sup­port­ing the appli­ca­tion of DO-326B along­side DO-178C objec­tives.

DO-178C and DO-200B/ED-76A

RTCA DO-200B “Stan­dards for Pro­cess­ing Aero­nau­ti­cal Data” defines cri­te­ria for man­ag­ing the qual­i­ty of aero­nau­ti­cal data used in nav­i­ga­tion, flight plan­ning, ter­rain and obsta­cle aware­ness, flight deck dis­plays, sim­u­la­tors, and relat­ed appli­ca­tions. It cov­ers the develop­ment, val­i­da­tion, and main­te­nance of aero­nau­ti­cal data­bas­es that may inter­face with DO-178C com­pli­ant air­borne soft­ware.

DO-178C and A(M)C 20-193

A(M)C 20-193 “Use of Multi-Core Proces­sors” defines addi­tion­al DO-178C and DO-278A objec­tives for mul­ti­core proces­sors (MCPs) and guides the appli­ca­tion of DO-178C and DO-278A objec­tives in a mul­ti­core con­text.

Additional information

DO-178C PDF free downloads

Whitepa­per: DO-178C demys­ti­fied: Strate­gies for effi­cient cer­ti­fi­ca­tion
Whitepa­per: Fol­low­ing the rec­om­men­da­tions of CAST-32A & A(M)C 20-193
Tech­ni­cal brief­ing: Get­ting to grips with CAST-32A & A(M)C 20-193
Tech­ni­cal note: Achieve DO-178C com­pli­ance with LDRA tool suite
Data sheet: DO-178C with the LDRA tool suite
Data sheet: LDRA Pro­duc­tiv­i­ty Pack­age – Aero­space and Defense
Blog: DO-178C & Struc­tur­al Cov­er­age Analy­sisCer­ti­fi­ca­tion and Reg­u­la­to­ry Sup­port

DO-178C further information

Web­site: DO-330 Soft­ware tool qual­i­fi­ca­tion con­sid­er­a­tions
News arti­cle: Ensur­ing the com­pli­ance of avion­ics soft­ware with DO-178C
Train­ing: On Demand DO-178C “First Flight” Self-paced online train­ing course
Case study: Rich­land tech­nolo­gies case study

DO-178C FAQs

What is DO-178C?

DO-178C is a for­mal process stan­dard cov­er­ing the com­plete soft­ware life­cy­cle for air­borne sys­tems, includ­ing plan­ning, develop­ment, ver­i­fi­ca­tion, qual­i­ty assur­ance, con­fig­u­ra­tion man­age­ment, and cer­ti­fi­ca­tion liai­son. It is the pri­ma­ry ref­er­ence used by cer­ti­fi­ca­tion author­i­ties includ­ing the FAA and EASA to approve soft­ware for com­mer­cial civil air­borne sys­tems.

What is DO-178C Level D?

Level D is one of the DO-178C Design Assur­ance Lev­els (DALs), assigned accord­ing to the poten­tial effect of soft­ware fail­ure on air­craft safe­ty. DO-178C defines ver­i­fi­ca­tion and struc­tur­al cov­er­age objec­tives appro­pri­ate to each DAL, with Level D requir­ing less strin­gent ver­i­fi­ca­tion than high­er crit­i­cal­i­ty lev­els such as DAL A or DAL B.

What was the DO-178C release date?

DO-178C replaced DO-178B in Jan­u­ary 2012 as the de facto ref­er­ence stan­dard for air­borne embed­ded soft­ware develop­ment in civil avi­a­tion. Its intro­duc­tion improved the treat­ment of mod­ern develop­ment and ver­i­fi­ca­tion tech­nolo­gies, includ­ing model-based develop­ment, object-ori­ent­ed tech­niques, and for­mal meth­ods.

What are DO-178C qual­i­fi­ca­tions?

DO-178C itself is not a per­son­al qual­i­fi­ca­tion. Such a phrase like­ly refers either to tool qual­i­fi­ca­tion under DO-330 or to train­ing cours­es cov­er­ing DO-178C process­es, ver­i­fi­ca­tion activ­i­ties, struc­tur­al cov­er­age, and cer­ti­fi­ca­tion work­flows for air­borne soft­ware develop­ment projects.

What is DO-178C dead code?

Col­lo­qui­al­ly, “dead code” is the term used for parts of the soft­ware code that can­not be reached log­i­cal­ly through the con­trol flow and there­fore can never be exe­cut­ed dur­ing require­ments-based test­ing. Struc­tur­al cov­er­age analy­sis is used to iden­ti­fy dead code, which will then need to be removed or ana­lyzed fur­ther.

In the DO-178C con­text, dead code is specif­i­cal­ly exe­cutable object code that can­not be exe­cut­ed or used in the oper­a­tional tar­get envi­ron­ment and is not trace­able to a sys­tem or soft­ware require­ment because of a design error.

It is dis­tinct from deac­ti­vat­ed code which is inten­tion­al­ly present but not exe­cut­ed in the cur­rent con­fig­u­ra­tion. Extra­ne­ous code is the col­lec­tive term for dead code and deac­ti­vat­ed code in this con­text.

DO-178C vs DO-178B

DO-178C replaced DO-178B in 2012 and expand­ed the guid­ance to bet­ter address newer develop­ment tech­niques and tech­nolo­gies. DO-178B remains rec­og­nized for lega­cy projects, but new projects are strong­ly encour­aged to adopt DO-178C and its asso­ci­at­ed sup­ple­ments cov­er­ing areas such as model-based develop­ment and for­mal meth­ods.

What is DO-178C MC/DC?

Mod­i­fied Condition/Decision Cov­er­age (MC/DC) is a struc­tur­al cov­er­age objec­tive required for the high­est DO-178C soft­ware lev­els. It requires each con­di­tion with­in a deci­sion to be shown to inde­pen­dent­ly affect the out­come. Impor­tant­ly, MC/DC achieves a high level of con­fi­dence in soft­ware logic with­out requir­ing every pos­si­ble com­bi­na­tion of con­di­tions to be test­ed, which would rapid­ly become imprac­ti­cal as com­plex­i­ty increas­es.

What are DO-178C crit­i­cal­i­ty lev­els?

DO-178C defines soft­ware lev­els accord­ing to the poten­tial effect of soft­ware fail­ure on air­craft safe­ty. These lev­els are derived from sys­tem-level Design Assur­ance Lev­els (DALs) estab­lished through ARP4754B safe­ty assess­ment activ­i­ties.

What are DO-178C rules?

DO-178C defines soft­ware life­cy­cle objec­tives and process­es for air­borne sys­tems develop­ment. These include plan­ning, develop­ment, ver­i­fi­ca­tion, trace­abil­i­ty, con­fig­u­ra­tion man­age­ment, qual­i­ty assur­ance, and cer­ti­fi­ca­tion activ­i­ties, togeth­er with the evi­dence need­ed to demon­strate that the objec­tives have been sat­is­fied.

Are there DO-178C cer­ti­fi­ca­tion cours­es?

DO-178C train­ing cours­es are com­mon­ly used to intro­duce engi­neers and man­agers to air­borne soft­ware cer­ti­fi­ca­tion process­es. LDRA pro­vides tech­ni­cal brief­in­gs, train­ing mate­r­i­al, and an on-demand DO-178C “First Flight” self-paced online train­ing course cov­er­ing cer­ti­fi­ca­tion work­flows and ver­i­fi­ca­tion activ­i­ties.

What is DO-178C com­pli­ance?

DO-178C com­pli­ance, as opposed to con­for­mance, refers to the ful­fill­ment of soft­ware assur­ance expec­ta­tions asso­ci­at­ed with air­borne cer­ti­fi­ca­tion. Devel­op­ers demon­strate con­for­mance to the objec­tives and process­es defined by DO-178C, while cer­ti­fi­ca­tion author­i­ties deter­mine whether the result­ing evi­dence sup­ports reg­u­la­to­ry com­pli­ance for the air­craft or sys­tem.

What is DO-178C unit test­ing?

DO-178C refers to unit test­ing as low-level test­ing. These tests are often used in the ver­i­fi­ca­tion of soft­ware behav­ior against low-level require­ments and are typ­i­cal­ly com­bined with struc­tur­al cov­er­age analy­sis to demon­strate that the soft­ware has been exer­cised appro­pri­ate­ly.

What is DO-178C trace­abil­i­ty?

DO-178C requires bidi­rec­tion­al trace­abil­i­ty through­out the soft­ware life­cy­cle. Require­ments, source code, tests, cov­er­age, and ver­i­fi­ca­tion arti­facts must be linked to demon­strate that all require­ments are imple­ment­ed and ver­i­fied, and that no unin­tend­ed func­tion­al­i­ty has been intro­duced into the air­borne soft­ware.

What does “DO” mean in DO-178?

In DO-178C, “DO” is short­hand for “doc­u­ment”. It is in accor­dance with the nam­ing con­ven­tion used by RTCA across pub­lished guid­ance mate­r­i­al.

What is the dif­fer­ence between DO-178B and DO-178C?

DO-178C expand­ed and mod­ern­ized the ear­li­er DO-178B stan­dard. It intro­duced sup­ple­men­tary guid­ance cov­er­ing model-based develop­ment, object-ori­ent­ed tech­nolo­gies, for­mal meth­ods, and tool qual­i­fi­ca­tion, while main­tain­ing the core life­cy­cle and ver­i­fi­ca­tion prin­ci­ples estab­lished by DO-178B.

What are CC1 and CC2 in DO-178B?

CC1 and CC2 are short­hand ref­er­ences his­tor­i­cal­ly asso­ci­at­ed with cov­er­age objec­tives under DO-178B. DO-178C describes struc­tur­al cov­er­age objec­tives more direct­ly, using terms such as state­ment cov­er­age, deci­sion cov­er­age, MC/DC, and data cou­pling and con­trol cou­pling analy­sis.

DO-178C vs ISO 26262

DO-178C and ISO 26262 both address safe­ty-crit­i­cal soft­ware, but they orig­i­nate from dif­fer­ent indus­tries. DO-178C is focused on safe­ty-by-design as applied to air­borne soft­ware cer­ti­fi­ca­tion for civil avi­a­tion. ISO 26262 address­es func­tion­al safe­ty for auto­mo­tive elec­tri­cal and elec­tron­ic sys­tems.

Scroll to Top