DO-178之所以值得工程团队认真读一遍,不是因为它教你怎么写代码,而是因为它提供了一套将"软件出错的后果"转化为"该投入多少验证成本"的定量化管理框架。这套逻辑,其实对任何做高可靠性软件(不只是航空)的团队都有参考价值。

一、DO-178这份文档到底在讲什么

DO-178的定位很克制——它不规定你怎么设计代码架构,也不规定用什么编程语言,它只回答一个问题:如何证明一款机载软件"配得上"它所服务的安全等级。文档开篇就把范围划得很清楚:只覆盖软件生命周期相关的适航审定问题,不涉及系统安全评估、系统架构设计本身,也不涉及人员资质管理——这些都留给了其他配套文件(比如ARP4754系统层面的标准)。

全文的骨架是这样一条链路:

系统安全评估(SSA)→ 失效状态分类 → 软件等级(DAL)→ 差异化的生命周期目标与验证深度

这条链路串起了文档的12章正文和附件A的目标矩阵表,也是理解DO-178"精髓"的关键——它不是一份统一的编码规范,而是一份风险分级、按级施策的合规框架。

二、核心机制:失效状态分类与软件等级(DAL)

这是整份文档、也是用户最关心的部分。DO-178不直接给软件打分,而是先问系统工程师一个问题:"如果这个软件功能失效了,飞机和机上人员会怎样?"

2.1 五级失效状态分类

系统安全评估过程会把每一种可能的失效状态,按其对航空器和机上人员的危害程度分成五档:

分类

核心描述

直观后果

灾难性的(Catastrophic)

导致无法继续安全飞行和着陆

机毁人亡级别

危险的/严重的(Hazardous/Severe-Major)

大幅降低航空器性能和机组处置能力,可能造成人员严重或潜在致命伤害

机组勉强能控制,但风险极高

较重的(Major)

显著降低安全余量或工作能力,显著增加机组负荷,或造成机上人员不适甚至受伤

明显影响,但可控

较轻的(Minor)

略微降低安全余量,略微增加机组负荷,或给乘客带来不便

影响很小

无影响的(No Effect)

不影响航空器工作能力或机组负荷

无关痛痒

2.2 与之对应的软件等级 A–E

失效状态分类确定后,软件等级就跟着"挂钩"——因为软件的异常行为可能引发或加剧对应的失效状态:

  • A级:异常行为会导致灾难性失效状态
  • B级:导致危险的/严重的失效状态
  • C级:导致较重的失效状态
  • D级:导致较轻的失效状态
  • E级:不影响航空器正常工作能力或机组负荷——一旦审定机构确认为E级,DO-178的其余指导意见就不再适用了

这里有几个容易被忽略、但工程上很关键的细节:

  1. 软件等级不等于失效率。文档特别强调,不能像对待硬件失效率那样,把软件等级直接当成软件的可靠性指标去使用——软件不会"随机磨损",它的错误是设计缺陷,等级衡量的是"验证严格程度"而非"发生概率"。
  2. 一个部件如果影响多个失效状态,按最严重的那个定级
  3. 系统架构可以反过来影响软件等级——这是文档里我认为最有工程智慧的一段。如果通过分区(Partitioning)、多版本非相似软件(多套独立实现互相校验)、或安全监控器(Safety Monitoring)这类架构手段,能够把某个软件部件的异常行为限制在较轻的失效范围内,那这个部件的软件等级就可以降低。换句话说,架构设计是能拿来"买单"软件验证成本的——用更聪明的隔离和冗余设计,换取局部代码不需要按最高等级去做验证。这本质上和现在做微服务隔离、蓝绿部署、熔断降级的思路是相通的,只是航空领域把它写成了强制性的审定方法论。

2.3 等级越高,要求呈指数级上升

附件A用9张表格(A-1到A-9)列出了从软件计划过程到软件质量保证过程,每个等级对应要满足的目标数量和是否需要独立验证。等级越高,不仅目标数量更多,很多目标还要求"独立性"(即验证者不能是开发者本人),并且对结构覆盖率分析(如MC/DC覆盖)的要求也随等级递增——这也是为什么A级软件的开发成本可能是D级软件的数倍甚至数十倍。

三、软件生命周期:不只是"写代码"

DO-178把软件生命周期拆成计划、开发(需求→设计→编码→集成)、验证、配置管理、质量保证、审定联络六大过程,外加数据管理和"额外考虑"两章。几个值得单独拎出来说的点:

可追溯性(Traceability)贯穿始终。从系统需求到软件高层需求、低层需求、设计、代码、测试用例,每一层都要求能双向追溯。这不是形式主义——它是出了问题之后能快速定位"这段代码到底是为了满足哪条需求"的唯一手段,也是验证覆盖率分析的基础。

验证不等于测试。文档把"走查和分析(Review & Analysis)"和"测试(Testing)"分开处理,且要求对高层需求、低层需求、软件架构、源代码逐层走查——测试只是验证活动的最后一环,前面几层的静态检查同样是硬性目标。

工具鉴定(12.2节)。如果开发或验证过程中使用了工具(比如自动生成代码的工具、静态分析工具),且这个工具的输出不经过其他独立验证手段确认,那么这个工具本身就需要被"鉴定"——证明它不会引入或漏检错误,鉴定的严格程度还要参照它所服务的软件等级。这一条现在读起来格外有意思:DO-178早在上世纪就已经在处理"我该多大程度信任一个自动化工具的输出"这个问题,逻辑跟今天讨论"能不能把大模型生成的代码或它做的代码审查结论直接采信"是同构的——工具鉴定的核心问题从来不是工具聪不聪明,而是它的错误模式是否可控、是否有独立机制能兜底

四、失效分级管控的跨领域对比:民航、军用、无人机、eVTOL

这是用户特别想深挖的部分。DO-178诞生于民航,但它的DAL分级思想早已外溢到军用、无人机(UAS)和eVTOL领域,只是"外溢"的方式和强制力度完全不同。

4.1 民用航空:核心领域,强制且统一

民航是DO-178的"主场"。FAA通过AC 20-115C明确把DO-178C列为证明机载软件符合适航条例的公认可接受方法(虽然名义上不是唯一方法,但实践中已是事实标准)。EASA、加拿大运输部等主要审定机构均直接采纳。灾难性失效状态对应的定量安全目标通常是"每飞行小时不超过10⁻⁹次",这套10⁻⁹/10⁻⁷/10⁻⁵的量化目标体系是整个DAL分级最初的锚点。民航场景的特点是:责任链条清晰(申请人对审定机构负责)、审定基础统一(同一片空域下适用同一套规则)、数据要求最完整(PSAC、SAS等全套生命周期数据都要提交审查)。

4.2 军用航空:参考而非强制,双轨并存

军用领域是最容易被误解的一块——很多人以为军机软件"标准更松",实际情况是军方有自己独立的适航框架,DO-178C是其中被广泛采纳、但并非法定强制的一条路径。美军的核心依据是MIL-HDBK-516C《适航审定准则》和MIL-STD-882E《系统安全》,这两份文件覆盖有人/无人、固定翼/旋翼全谱系装备,而MIL-HDBK-516C把DO-178C列为证明软件适航性的认可方法之一

现实中军用项目大量采用DO-178C,主要出于两个理由:一是很多军机需要在民用空域飞行(比如运输机、加油机),其通信导航监视设备必须同时满足DO-278A和DO-178C才能与民航空管系统兼容;二是DO-178C成熟的"安全设计(Safety-by-Design)"流程本身对军方也有吸引力,能省去重新发明一套软件保证体系的成本。但军用场景也有自己的独特考量:任务成功率(而不仅是安全性)是重要评价维度,作战环境的恶劣程度和民航完全不在一个量级,而且审批对象往往是军方自己的机构而非FAA/EASA,文档审查也更全面(不只是PSAC和SAS,几乎全套文档都要过审)。可以说军用领域是"拿来主义+自主裁量"的混合模式。

4.3 无人机(UAS):分级门槛下移,但DAL逻辑照搬

无人机(尤其是承担关键任务的工业级/军用级UAS)适用DO-178C的方式,本质上和有人机是同一套逻辑——失效越严重、DAL越高——但由谁承担、承担到什么深度变得更加碎片化。飞控、动力管理、能源系统、关键导航与应急处置相关的软件,通常会被分配较高的保证等级(DAL-A/B);而任务载荷、非关键显示、辅助工具类软件,可能不进入主要适航证据链,等级也相应更低。

一个关键变化是:无人机产业链上,DAL往往不是由某个零部件供应商自己决定的,而是由整机厂结合系统安全分析统一分配下来——飞控自驾仪厂商(如已有DAL-C硬件产品并集成DO-178C软件的行业案例)在拿到整机厂的DAL要求后,再针对性地组织生命周期证据。此外,无人机领域还叠加了一套民航体系原本没有的东西——运行风险分级(比如JARUS的SORA方法论,按运行场景的地面风险和空中风险打分),这套方法和DO-178的DAL是两条平行的分级逻辑:一个管"软件本身做到多严格",一个管"这次飞行任务本身有多危险",两者共同决定最终的合规要求组合。

4.4 eVTOL / 城市空中交通(AAM):最新的"高压测试场"

eVTOL是目前DO-178应用场景里变化最快、最能体现分级管控实操细节的领域。以EASA的SC-VTOL特殊适航条件为例,它把eVTOL分成Basic(简单运行)和Enhanced(商业载客运行)两档,Enhanced类别要求灾难性失效目标概率达到10⁻⁹/飞行小时——和大型商用运输机CS-25标准完全同一个量级,同时明确要求飞控这类关键系统的软件和硬件分别达到DO-178C的DAL-A和DO-254的DAL-A,即最高严格度。像Vertical Aerospace这类在研eVTOL项目,其Honeywell供应的飞控系统和电推进系统都在按DAL-A路径推进认证。

eVTOL领域的特殊之处在于三点:

  1. 分布式电推进带来的新型失效模式:传统飞机一台发动机失效有成熟的应对程序,而eVTOL往往是多旋翼/多电机分布式布局,失效状态分类需要重新评估"多大比例的推进单元失效才构成危险的/灾难性的",这是DO-178框架本身没有直接回答、需要结合系统安全评估重新建模的问题。
  2. 高度自动化甚至自主飞行:部分项目(如Wisk Aero路线)在探索无安全飞行员的自主运行,这类软件的失效状态分类要额外考虑"没有人类兜底"这个前提,客观上把更多功能推向了A/B级。
  3. 监管路径尚未完全统一:FAA走的是现有Part 21框架叠加特殊条件(并有MOSAIC等新规推进),EASA是独立的SC-VTOL框架,中国民航局则已经走在最前面,向亿航EH216-S颁发了全球首张eVTOL型号合格证——三大监管体系在细节上并不完全一致,但核心的DAL分级思想是共通的,这也是DO-178作为"通用语言"的价值所在。

4.5 一张图看懂四个领域的差异

维度

民用航空

军用航空

无人机(UAS)

eVTOL/AAM

DO-178适用性

强制(事实标准)

参考/自愿采纳

广泛采纳,逐渐规范化

明确要求(SC-VTOL等指定)

主导标准

DO-178C + AC 20-115C

MIL-HDBK-516C / MIL-STD-882E,DO-178C为可选路径

DO-178C + 运行风险分级(如SORA)

DO-178C + SC-VTOL/MOC-2等专项条件

审批主体

FAA/EASA等民航当局

军方审定机构

民航当局+行业标准组织

FAA/EASA/CAAC等,规则仍在演进

最高安全目标(灾难性)

10⁻⁹/飞行小时

依任务和平台而定,无统一硬指标

视任务关键性分配,未必全部对标10⁻⁹

Enhanced类别对标10⁻⁹,与CS-25同级

独特复杂性

体系最成熟、流程最完整

任务成功率与恶劣环境是额外维度

DAL常由整机厂统一分配给供应链;叠加运行风险分级

分布式推进新失效模式、自主飞行、监管路径分化

五、一点延伸思考

读完DO178B,最值得工程团队借鉴的其实不是某个具体条款,而是它背后的方法论:先把"出错的后果"分级,再倒推"验证应该做到多深",而不是对所有代码一视同仁地投入同样的审查资源。这和现在做AI辅助代码审查、把传统SAST引擎和大模型能力结合起来做分层检测的思路,逻辑上是相通的——高风险模块(比如涉及资金结算、权限控制的核心逻辑)该配置更严格的多轮校验和更高的可追溯性要求,低风险模块可以适度放宽,把有限的算力和人力审查资源留给真正关键的地方。DO-178用近半个世纪的航空工程实践证明了这套"按风险分级施策"的框架是可持续的,这对任何想构建体系化质量保障流程的团队,都是一份值得参考的"活教材"。

如果你正在为代码安全和质量保障体系建设做选型,欢迎联系(13381155803)微信同步,获取专属演示与技术方案。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐