航空电子软件安全标准

DO-178C

机载系统与设备软件审定考虑
Software Considerations in Airborne Systems and Equipment Certification

发布机构 RTCA SC-205
发布年份 2011.12
前序标准 DO-178B (1992)
欧洲对应 ED-12C
向下滚动开始探索

什么是 DO-178C?

DO-178C 是由美国航空无线电技术委员会(RTCA)发布的国际标准,全称为《机载系统与设备合格审定中的软件考虑》。它为航空机载软件的开发、验证和审定提供了一套系统化的指导框架,是全球民用航空领域最权威的软件适航标准。

该标准被美国联邦航空管理局(FAA)、欧洲航空安全局(EASA)以及中国民用航空局(CAAC)等全球主要适航当局所采纳,作为航空软件适航审查的核心依据。任何安装在民用飞机上的软件——从飞行控制计算机到座舱娱乐系统——都需要依据 DO-178C 进行开发和认证。

DO-178C 的核心理念

  • 基于目标(Objective-based)而非规定性方法
  • 软件严格度与系统安全性影响挂钩
  • 强调过程的可追溯性与可重复性
  • 独立验证与确认(IV&V)的分离原则
  • 全生命周期质量保证与配置管理
  • 通过软件计划确保合规可预期

发展历程

1980 年代

DO-178 初版发布

随着数字航空电子系统的兴起,业界首次意识到需要专门的软件适航标准。RTCA 发布了 DO-178 的最初版本。

1985 年

DO-178A 发布

第一次重大修订,引入了更结构化的软件开发和验证过程。

1992 年

DO-178B 发布

里程碑式版本。引入五级软件保证等级(DAL A-E)和基于目标的合规方法,成为此后近 20 年全球航空软件认证的事实标准。

2005 年

启动 DO-178C 修订

RTCA SC-205 和 EUROCAE WG-71 联合启动修订工作,旨在应对模型驱动开发、面向对象技术和形式化方法等新技术挑战。

2011 年 12 月

DO-178C 正式发布

连同四份技术补充文件一并发布,标志着航空软件标准进入新时代。

软件设计保证等级(DAL)

DO-178C 的核心概念之一是设计保证等级(Design Assurance Level, DAL)。软件的 DAL 由系统安全性评估(SSA)过程确定,取决于该软件失效对飞机和乘客可能造成的最严重后果。DAL 越高,要求完成的目标越多、验证越严格。

等级 失效影响 失效概率要求 目标数 独立性要求 典型应用
Level A 灾难性(Catastrophic) ≤ 10⁻⁹ / 飞行小时 71 最高独立性 飞行控制、自动驾驶、发动机控制 FADEC
Level B 危险/严重(Hazardous) ≤ 10⁻⁷ / 飞行小时 69 高独立性 GPS导航、电气管理
Level C 重大(Major) ≤ 10⁻⁵ / 飞行小时 62 中等独立性 通信系统、气象雷达
Level D 轻微(Minor) ≤ 10⁻³ / 飞行小时 26 基本独立性 乘客广播、舱内照明控制
Level E 无影响(No Effect) 无要求 0 无要求 座舱娱乐(IFE)、部分维护辅助工具

软件生命周期过程

DO-178C 定义了三类过程共同构成完整的软件生命周期:开发过程(产出软件产品)、整体过程(贯穿全生命周期的支撑活动)和验证过程(确认正确性)。

1

系统需求

来自系统级分配
(ARP 4754A)

2

软件需求

高层需求
HLR

3

软件设计

低层需求
LLR + 架构

4

编码

源代码
实现

5

集成

软件构建
与集成

6

验证

评审、分析
与测试

7

认证联络

SOI 审查
合规证明

核心过程详解

📋

软件计划过程

制定五份关键计划文档(PSAC、SDP、SVP、SCMP、SQAP),定义项目的开发策略、工具、标准和合规路径。这是认证联络的起点。

⚙️

软件需求过程

将系统需求分配转化为高层需求(HLR),确保需求准确、一致、可验证、可追溯。需求是一切后续活动的基础。

🏗️

软件设计过程

将 HLR 细化为低层需求(LLR)和软件架构,描述数据流、控制流和组件接口。设计必须满足所有高层需求。

💻

编码过程

依据 LLR 和编码标准编写源代码。需遵循编码规则,确保代码可读、可维护,并且与低层需求一致。

🔗

集成过程

将编译后的对象代码加载到目标硬件上,完成软件-硬件集成,并确认可执行目标代码与开发环境中的一致性。

🔍

验证过程

通过评审、分析和测试三种手段验证每一级产物。包括需求验证、设计验证、代码验证和集成测试,覆盖结构覆盖率分析。

📁

配置管理过程

对所有软件生命周期数据进行标识、基线化、变更控制和状态记录。确保任何已批准的配置项都可追溯和复现。

质量保证过程

独立于开发团队,对过程合规性和产物符合性进行持续监控审计,发现问题并跟踪至关闭。

✈️

认证联络过程

与适航当局(DER/ODA/EASA)保持沟通,提交 PSAC,参加阶段审查(SOI),最终提交软件完成摘要(SAS)和 SCI。

关键目标(Objectives)示例

DO-178C 采用基于目标的合规框架。标准中 Annex A 的表格列出了所有目标,并按 DAL 标注适用性和独立性要求。以下列举部分核心目标:

A-1

软件需求与系统需求的一致性与可追溯性

A-2

高层需求的准确性与一致性已得到验证

A-3

HLR 符合软件需求标准

A-4

HLR 可追溯到系统需求

A-5

算法的准确性和行为已验证

A-6

低层需求与高层需求的一致性

A-7

源代码符合 LLR 和架构

Table A-6

基于需求的测试覆盖已完成

Table A-7

结构覆盖率(SC/DC/MC/DC)达标

结构覆盖率等级对照

  • Level A — MC/DC(修改条件/判定覆盖)
  • Level B — DC(判定覆盖)
  • Level C — SC(语句覆盖)
  • Level D — 无结构覆盖要求

四大技术补充文件

DO-178C 的重要创新之一是引入了四份独立的技术补充文件,用于指导特定技术领域的软件开发与验证。当项目采用了相关技术时,应在 PSAC 中声明适用的补充文件。

DO-330
软件工具鉴定

定义了开发和验证工具的鉴定准则和等级(TQL 1-5),确保工具不会在开发过程中引入未检测到的错误。

DO-331
基于模型的开发与验证

为 Model-Based Development & Verification(MB-D&V)提供指南,涵盖模型的开发标准、仿真验证和模型到代码的可追溯性。

DO-332
面向对象技术

针对 OOT(面向对象技术)的特有风险(如继承、多态、动态分派)提供额外的验证目标和指南。

DO-333
形式化方法

允许使用形式化规格和形式化证明作为验证手段的替代或补充,在某些场景下可替代部分测试活动。

DO-178C vs DO-178B

DO-178C 并非对 DO-178B 的颠覆,而是一次务实的演进。核心框架和 DAL 体系保持不变,但在关键领域做出了重要改进。

DO-178B (1992)

  • 无工具鉴定的独立标准
  • 不覆盖模型驱动开发
  • 未考虑面向对象技术
  • 不支持形式化方法作为替代验证
  • 参数数据项(PDI)处理不明确
  • "活动"(Activities)导向的描述风格
  • 工具鉴定仅在附录中简要提及

DO-178C (2011)

  • DO-330 专门处理工具鉴定
  • DO-331 提供 MBD&V 完整指南
  • DO-332 覆盖 OOT 特有挑战
  • DO-333 允许形式化方法替代测试
  • 明确 PDI 处理要求
  • "目标"(Objectives)导向的表述风格
  • 更灵活、可扩展的技术补充机制

认证联络与审查阶段

DO-178C 的合规不是自我声明,而需通过与适航当局的正式认证联络过程来证明。这一过程通常围绕四个软件审查节点(SOI)展开:

SOI #1

计划审查

审查 PSAC、SDP、SVP、SCMP、SQAP 等计划文件的完整性和合理性。

SOI #2

开发审查

审查需求、设计和编码过程产物,确认过程执行与计划一致。

SOI #3

验证审查

审查测试用例、测试结果、覆盖率分析和问题报告。

SOI #4

最终审查

审查 SAS(软件完成摘要)、SCI(软件配置索引)和 SECI,确认所有目标已满足。

关键交付物清单

  • PSAC — 软件合格审定计划
  • SDP — 软件开发计划
  • SVP — 软件验证计划
  • SCMP — 软件配置管理计划
  • SQAP — 软件质量保证计划
  • SRS — 软件需求规格
  • SDD — 软件设计描述
  • SAS — 软件完成摘要
  • SCI — 软件配置索引
  • SECI — 软件生命周期环境配置索引
  • PR / SCR — 问题报告 / 软件变更请求

常见问题

DO-178C 是法律法规吗?

不是。DO-178C 本身是一份行业指南文件(Guidance),但被 FAA(通过 AC 20-115D)和 EASA(通过 AMC 20-115D)等适航当局作为可接受的符合性方法(Acceptable Means of Compliance)引用,因此在实际认证中具有准强制性。

DAL 等级由谁决定?

DAL 由系统安全性评估过程(参照 ARP 4754A / ARP 4761)确定,并分配给相应的软件功能。系统工程师和安全工程师通过功能危险评估(FHA)和故障树分析(FTA)等方法确定每个功能的失效影响等级。

Level E 的软件需要做什么?

DO-178C 对 Level E 软件不设任何目标。但开发者仍需在 PSAC 中声明该软件为 Level E,并通过配置管理标识它。适航当局可能会审查 Level E 的判定是否合理。

什么是 MC/DC?

MC/DC(Modified Condition / Decision Coverage,修改条件/判定覆盖)是 DO-178C 对 Level A 软件要求的最严格结构覆盖准则。它要求证明每个条件都能独立影响判定结果,是航空软件测试中最具挑战性的覆盖指标之一。

开源软件可以用在机载系统中吗?

理论上可以,但必须满足 DO-178C 对"先前开发的软件"(Previously Developed Software)的所有要求,包括完整的需求追溯、代码审查、覆盖率分析等。这通常意味着需要投入与重新开发相当甚至更多的验证工作。