|
|||||||||||||||||||||
|
Software Reliability & System Safety The Blind Spot in Airworthiness Software StandardsWhy DO-178C-compliance is necessary but not sufficient. |
|||||||||||||||||||||
|
Every software-driven fatal crash of the last decade shares an uncomfortable feature: the software worked exactly as designed. It passed its requirements-based tests. It passed its structural coverage analysis. It was certified. And it still killed people, because nobody wrote down the requirement it violated. This is the gap this newsletter is about — not a bug in DO-178C's execution, but a hole in what the standard was ever designed to check for. What DO-178C actually verifiesDO-178C, the standard that governs software in civil aircraft, is built around two pillars:
Both are real engineering achievements. MC/DC is one of the most rigorous coverage criteria in any industry, and requirements-based testing is a legitimate way to catch implementation defects — code that doesn't do what it was told to do.
If an engineer never wrote "the software shall cross-check the angle-of-attack reading against airspeed and pitch trend before commanding a nose-down input," then no amount of MC/DC coverage or requirements-based testing will ever catch its absence. You can achieve 100% structural coverage of a system that is missing an entire category of defensive behavior, and DO-178C's own paperwork will call that a success. This is sometimes called the implied requirements problem, and it's arguably the most consequential gap in modern flight software assurance. Two recent crashes make the case better than any white paper could. Case study 1: The 737 MAX and the single sensor2018–2019 · Lion Air 610 & Ethiopian Airlines 302 · 346 lives lost The Maneuvering Characteristics Augmentation System (MCAS) on the Boeing 737 MAX was designed to push the aircraft's nose down automatically when its angle-of-attack (AoA) reading suggested an approach to stall. The aircraft carried two independent AoA sensors. MCAS, as certified, read from only one of them per flight, with no comparison against the second sensor and no plausibility check against other available data — airspeed, pitch rate, or the aircraft's own recent trajectory. On both flights, a single faulty AoA sensor fed MCAS a false stall signal. MCAS did exactly what it was built to do: it repeatedly commanded the nose down, fighting the pilots, until both aircraft crashed. Nothing about this was a coding defect in the MC/DC sense. The requirements said "if AoA exceeds threshold, command nose-down trim," and the code did exactly that. What was missing was a requirement nobody wrote: the system shall not take an irreversible or hard-to-reverse flight control action based on a single sensor when a second, independent sensor is available and could be compared. Boeing's eventual fix — comparing both AoA sensors and disabling MCAS on disagreement — is precisely the implied requirement that should have existed from the start.
Case study 2: The F-35 and the sensor the software trusted aloneJanuary 2025 · Eielson Air Force Base, Alaska · AIB report released August 2025 An F-35A crashed at Eielson Air Force Base after a training flight. The Air Force's accident investigation traced the chain of causation to water-contaminated hydraulic fluid that froze inside the landing gear struts, preventing them from fully extending. The critical software moment came next. The jet's Weight-on-Wheels (WoW) sensors — plunger-type sensors that detect physical contact between the landing gear and the runway — registered "on ground" because the still-retracted struts held them in the ground position. All of the WoW sensors agreed with each other, so from a narrow internal-consistency standpoint they were "valid." The flight control system, on receiving that WoW signal, switched to its "on-ground" control law — a mode built for taxiing, not flying.
The jet immediately became uncontrollable, snapping into a 30–40 degree pitch-up with a 38-degree roll, and the pilot was forced to eject. This is a different flavor of the same underlying gap. The WoW sensors weren't malfunctioning by their own narrow definition — they were reporting exactly what their mechanical inputs told them. The failure was architectural: the flight control law made an irreversible mode transition based on one sensor category, with no cross-check against other data the aircraft already had on board and that would have flatly contradicted the WoW reading — airspeed and altitude chief among them. What didn't exist was a requirement to ask a second question before trusting the first answer: does this decision make sense given everything else the aircraft knows about its own state?
The pattern underneath both crashesStrip away the specific hardware and both accidents reduce to the same three missing behaviors — none of which live inside the "shall" statements airworthiness testing verifies, and none of which MC/DC coverage could ever surface:
None of these are exotic ideas. They're the kind of thing a systems safety engineer would sketch on a whiteboard in the first hour of a hazard analysis. The problem is that DO-178C's verification machinery has no natural place to catch their absence. Where the CDE fits inThere is a resource built specifically to catalog this class of defect: the Common Defect Enumeration (CDE), developed by Ann Marie Neufelder of Mission Ready Software. It's worth distinguishing from the security world's Common Weakness Enumeration (CWE), which catalogs coding-level weaknesses that lead to exploitable vulnerabilities. The CDE has a different target: it's built from decades of root-cause analysis of real mission and safety failures. Neither MCAS's single-sensor trust nor the F-35's uncross-checked WoW transition would show up as a CWE — they aren't coding-level vulnerabilities, they're architectural and requirements-level defect patterns. They're exactly the kind of root cause a CDE-style catalog is meant to surface during requirements and design review, before a single line of code is written or a single MC/DC branch is exercised. What this means for the next generation of standardsNone of this is an argument that MC/DC or requirements-based testing are wrong to require — they catch real, serious classes of defects and should stay. The argument is that they are necessary and not sufficient. A more complete framework would need to explicitly require, as testable objectives in their own right:
|
|||||||||||||||||||||
|
Predict Earlier. Prevent More. Be Mission Ready. Sources: U.S. Air Force Accident Investigation Board report on the January 28, 2025 F-35A mishap at Eielson AFB (released August 26, 2025); Ethiopian Airlines Flight 302 and Lion Air Flight 610 investigation findings on MCAS and single-sensor AoA input; Common Defect Enumeration (CDE), Mission Ready Software. © 2026 Mission Ready · missionreadysoftware.com |