Skip to main content

Challenges of Using Artificial Intelligence in Safety-Critical Systems

Artificial Intelligence (AI) has transformed the world of technology, enabling systems to learn, adapt, and make decisions without explicit programming. From autonomous vehicles to medical diagnostics and flight control systems, AI promises unprecedented efficiency and capability. However, when it comes to safety-critical systems—where failure could result in injury, loss of life, or significant damage—the use of AI introduces profound challenges that go far beyond traditional software engineering. Unlike conventional software, which behaves predictably according to its programmed logic, AI is built on learning and training. Its decisions and outputs depend heavily on the data it has been trained on and the patterns it recognizes during runtime. This adaptive, data-driven behavior means that an AI system’s responses may vary with changing inputs or environments, often in ways that are not explicitly defined or foreseen by developers. While this flexibility is a strength in many applica...

DO-178C: Building Safe and Reliable Software for Modern Airborne Systems

DO-178C: Building Safe and Reliable Software for Modern Airborne Systems

In today’s aviation landscape, aircraft are no longer just mechanical masterpieces. Modern jets, helicopters, and unmanned systems depend heavily on software to fly safely and efficiently. From autopilot and engine controls to navigation and flight-management systems, software has become the central nervous system of an aircraft. With this increasing dependence comes a critical question: How do we ensure that airborne software is safe enough to trust with human lives?

The most widely accepted answer across the global aviation industry is DO-178C.

What is DO-178C?

DO-178C, published jointly by RTCA (USA) and EUROCAE (Europe) in 2012, is the foundational standard used to develop and certify software installed in airborne systems. Certification authorities such as FAA and EASA recognize it as the primary means of demonstrating that software meets national airworthiness regulations.

More than a guideline, DO-178C provides a complete framework for planning, developing, verifying, and documenting aviation software. Its purpose is straightforward yet ambitious: ensure that every software component behaves predictably, reliably, and safely—even under abnormal conditions.

This is especially important because a single software fault in a flight-critical system can lead to catastrophic consequences. DO-178C eliminates such risks through rigorous engineering discipline.

Two major Boeing 737 MAX crashes, Lion Air Flight 610 and Ethiopian Airlines Flight 302, highlighted the dangers of software failures in aviation.

Figure: Two major Boeing 737 MAX crashes, Lion Air Flight 610 and Ethiopian Airlines Flight 302, highlighted the dangers of software failures in aviation. Investigations revealed that a faulty angle-of-attack (AOA) sensor led MCAS (Maneuvering Characteristics Augmentation System) to repeatedly push the nose down, despite pilots' attempts to correct it. This system automatically pushes the aircraft’s nose down if it detects (from AoA sensor) that the plane is climbing too steeply (risk of stall).

Why DO-178C Matters in Modern Aircraft

As aircraft functionality increasingly shifts toward software-driven systems, the potential impact of a software defect grows exponentially. Consider an autopilot commanding altitude incorrectly, or a flight control computer misinterpreting sensor data. Even a small logic error could amplify in the tightly coupled world of avionics.

Growth of Software Complexity in Aerospace Systems Over the Years
Figure: Growth of Software Complexity in Aerospace Systems Over the Years. SLOC is Source Lines of Code.

DO-178C plays a crucial role in software certification by ensuring:

  • Software behavior is fully predictable and traceable

  • Every requirement is testable, verified, and justified

  • Development and verification activities follow strict, controlled processes

  • Safety is built in from the very beginning—not retrofitted afterward

One of the most important relationships in aviation standards is between ARP4754A (system-level guidance) and DO-178C (software-level guidance). ARP4754A determines the Development Assurance Level (DAL) at the system level, which in turn dictates the rigor required for the software level under DO-178C.

Figure: DO-178C defines 5 software levels (A to E). The software level of a software component is based upon the contribution of software to potential failure conditions. The software level establishes the rigor necessary to demonstrate compliance with this document.

For example, a flight-critical system requiring DAL A triggers the highest level of software verification, including Modified Condition/Decision Coverage (MC/DC).

Figure: ARP4754A addresses the development cycle for aircraft and systems that implement aircraft functions. More detailed coverage of the software aspects of development are found in DO-178 and ED-12. Coverage of avionics hardware aspects of development are found in DO-254 and ED-80. Methodologies for safety assessment processes are outlined in ARP4761 and ED-135.

How DO-178C Structures the Software Lifecycle

Rather than dictating how engineers should program, DO-178C focuses on what objectives must be met throughout the lifecycle. It divides software engineering into several major processes, each with a clear purpose.

1. Software Planning

The project begins by defining how compliance will be achieved. Plans outline development strategies, verification approaches, configuration management rules, quality assurance responsibilities, and the exact life-cycle data that will be produced. These plans are submitted early to certification authorities to align expectations.

2. Requirements and Design

High-level requirements describe what the software must do, often tied to system-level needs. They are refined into detailed low-level requirements that explain how the software will achieve that behavior. Clear traceability is essential: every software requirement must link back to a system requirement, and every design decision must link back to a software requirement.

3. Coding and Integration

Code must conform to strict coding standards—often using MISRA C/C++ or CERT guidelines. Developers must avoid undefined behavior, dynamic memory pitfalls, unsafe casting, or ambiguous inheritance structures (if using object-oriented languages).

Integration blends components into a working executable, where interaction problems often emerge and must be controlled carefully.

Bidirectional traceability is crucial to DO-178C that is established from each low-level requirement up to its high-level requirement and down to the low-level tests or unit test cases that verify and validate it.
Figure: Bidirectional traceability is crucial to DO-178C that is established from each low-level requirement up to its high-level requirement and down to the low-level tests or unit test cases that verify and validate it. The depth of traceability varies based on the software level. 

4. Verification

Verification is the backbone of DO-178C. It ensures that every artifact—requirements, design, code, and tests—meets its intended objectives and contains no unintended functionality.

Unlike casual software testing, DO-178C requires multiple layers of verification:

  • reviews of requirements and design

  • static code analysis

  • unit testing

  • integration testing

  • system-level testing

Higher software levels (A and B) require intensive structural coverage analysis, and for Level A, MC/DC coverage is mandatory.

Modified Condition/Decision Coverage (MC/DC) is a kind of code structural coverage technique which ensures each condition independently affects the overall decision while keeping the other condition to be the same.
Figure: Modified Condition/Decision Coverage (MC/DC) is a kind of code structural coverage technique which ensures each condition independently affects the overall decision while keeping the other condition to be the same.

5. Configuration Management

Software changes must be controlled with military-grade precision. Every version of every file—requirements, source code, test cases, documents—must be uniquely identified and traceable. DO-178C defines control categories (CC1 and CC2) to regulate how critical artifacts are protected and modified.

Example of SCM activities for a Ground Collision Avoidance System (GCAS) under DO-178C.
Figure: Example of SCM activities for a Ground Collision Avoidance System (GCAS) under DO-178C. These activities ensure safe / controlled changes and reliable / auditable releases.

6. Quality Assurance

Quality assurance provides independent oversight. QA engineers do not develop the software; they audit processes, verify independence, review compliance, and ensure that corrective actions are taken whenever deviations appear.

7. Certification Liaison

This process manages all communication with certification authorities and produces the final package of evidence—consolidated in the Software Accomplishment Summary (SAS)—that demonstrates compliance.

Overall purpose of each phase or process in a software development lifecycle.
Figure: Overall purpose of each phase or process in a software development lifecycle.

Life-Cycle Data: The Evidence of Compliance

DO-178C requires extensive documentation because certification relies on objective proof. This includes planning documents, requirement specifications, design descriptions, source code, verification procedures, test results, coverage reports, configuration indices, problem reports, and traceability matrices.

The goal is not paperwork for its own sake, but complete transparency and reproducibility of engineering decisions.

Figure: There are 22 life cycle data items in DO-178C, from which Plan for Software Aspect of Certification, Software Configuration Index, and Software Accomplishment Summary must be submitted to the certification authority for review.

Advanced Supplements to DO-178C

DO-178C is supported by five important supplements that extend its usability to modern engineering approaches:

1. DO-330 (Tool Qualification)

Provides criteria for qualifying development or verification tools whose output is not manually reviewed.

2. DO-331 (Model-Based Development)

Guides projects that use MATLAB/Simulink, SCADE, or similar environments, ensuring that models and auto-generated code meet certification objectives.

3. DO-332 (Object-Oriented Technology)

Explains how to use abstraction, inheritance, polymorphism, dynamic memory, or virtualization safely in airborne software.

4. DO-333 (Formal Methods)

Allows mathematical reasoning, proofs, and model checking to strengthen verification activities—particularly useful for complex logic that is difficult to test exhaustively.

5. DO-248C (Supporting Information)

It is a clarification document, which provides FAQs, discussion papers, rationale for DO-178C objectives, and real-world examples to resolve ambiguity.

Military vs Civil Aviation: Same Foundations, Different Goals

Civil systems seek certification from authorities like FAA or EASA. Military systems, however, generally aim for compliance rather than formal certification, due to different mission priorities. Yet, modern defense aircraft—fighters, UAVs, and transport platforms—still follow DO-178C rigor to achieve the reliability needed for harsh operational environments.

The Challenges and Benefits of DO-178C

Many organizations initially view DO-178C as demanding due to its documentation requirements and rigorous verification steps. It does indeed require significant effort, disciplined engineering, and strong coordination.

But the resulting benefits far outweigh the difficulty:

  • Greater software reliability

  • Predictable performance under all conditions

  • Lower long-term maintenance costs

  • Faster certification for future updates

  • A globally recognized quality benchmark

Most importantly, DO-178C saves lives by preventing software-induced failures.

Conclusion

As aviation becomes more software-centric, DO-178C remains the gold standard for building safe and certifiable airborne software. It provides clarity, structure, and engineering discipline in a domain where mistakes are unacceptable.

Its framework does not just enforce compliance—it builds confidence. Confidence that each line of code behaves as intended. Confidence that systems will respond correctly in critical moments. Confidence that safety has been engineered into the product from the very first requirement to the final test case.

In short, DO-178C is not merely a set of rules; it is a philosophy of engineering excellence for the skies. 

Comments