二、DO-178C核心概念:软件生命周期、目标导向方法、数据项与证据链

DO-178C(机载系统与设备合格审定中的软件考虑)作为民用航空机载软件开发的适航标准,其核心并非一套僵化的流程模板,而是一套基于目标导向(Objectives-Based)的工程框架。理解该标准,首先需要跳出“文档驱动”的传统思维,转向“证据驱动”的适航逻辑。本章将围绕软件生命周期、目标导向方法、数据项与证据链三大支柱,剖析如何构建一套能够通过局方审查的软件研制保证体系。

DO-178C 核心概念关系图:目标驱动的证据链与生命周期 软件生命周期 (PL) • 计划阶段 (PSAC) • 开发阶段 (需求/设计/编码/集成) • 验证阶段 (评审/测试/分析) • 配置管理 (SCMP) • 质量保证 (SQAP) • 适航联络 (ACL) 目标导向方法 (OB) • 目标 (Objectives) 定义 • 活动 (Activities) 执行 • 证据 (Evidence) 生成 • 独立性 (Independence) 要求 • 等级 (DAL A-E) 关联 • 偏差 (Deviation) 处理 数据项与证据链 • 计划数据 (PSAC/SCMP/SQAP) • 开发数据 (SRS/SDD/SC) • 验证数据 (SVCP/SVR) • 追溯性矩阵 (RTM) • 问题报告 (PR/SCR) • 适航符合性说明 证据链闭环 (Traceability & Evidence Chain) 高层需求 低层需求 源代码 目标码 验证活动反馈(测试/评审/分析) 核心逻辑:目标定义活动 → 活动产生数据 → 数据构成证据 → 证据满足目标 每个生命周期阶段的目标、活动、数据项均需与软件等级(DAL)匹配

2.1 软件生命周期:从瀑布到迭代的适航适配

DO-178C 并未强制规定具体的软件开发模型(如瀑布、V模型、增量或敏捷),而是要求申请人在软件策划过程(Software Planning Process)中明确定义所采用的软件生命周期,并证明该生命周期能够满足所有适用的目标。这意味着生命周期本身不是目的,而是组织开发活动、生成必要数据项、实现可追溯性的手段。

核心原理:生命周期数据流

一个典型的DO-178C软件生命周期包含三大类过程:计划过程(定义如何做)、开发过程(实际执行需求、设计、编码、集成)和综合过程(贯穿始终的验证、配置管理、质量保证、适航联络)。这些过程并非线性排列,而是通过数据项的输入输出形成网状结构。例如,软件需求过程输出的“软件需求数据”既是设计过程的输入,也是验证过程制定测试用例的依据,同时还是配置管理过程进行基线化的对象。

生命周期过程 主要输出数据项 关联的验证活动
软件计划过程 PSAC(软件合格审定计划)、SCMP(配置管理计划)、SQAP(质量保证计划) 计划评审(PDR)
软件需求过程 软件需求数据(SRS)、需求追溯性数据 需求评审、需求测试(基于需求的测试)
软件设计过程 软件设计描述(SDD)、设计追溯性数据 设计评审、架构分析
软件编码过程 源代码、目标码、编译/链接说明 代码评审、静态分析、单元测试
软件集成过程 集成构建说明、加载映像 集成测试、硬件/软件集成测试
软件验证过程 验证用例与规程(SVCP)、验证结果(SVR) 评审、分析、测试

实战要点:在制定生命周期时,应明确每个阶段的入口准则(Entry Criteria)和出口准则(Exit Criteria)。例如,需求阶段出口准则必须包含“所有高层需求已追溯至系统需求,且低层需求已从高层需求分解”。这能有效防止阶段间“夹生饭”现象。

2.2 目标导向方法:从“做什么”到“证明做到了”

DO-178C 的附录A(Table A-1 至 A-10)定义了各生命周期过程的目标。每个目标都有对应的适用性(Applicability)(由软件等级决定)、输出数据项以及独立性要求。目标导向的核心在于:只要满足目标,具体采用何种方法(如形式化方法、基于模型的开发、传统手工编码)由申请人自行决定。

判断方法:如何确定目标是否满足

  1. 识别适用目标:根据软件等级(A/B/C/D/E)查阅附录A表格,确定哪些目标适用。例如,DAL A级软件要求“需求是可验证的”这一目标具有独立性要求,而DAL D级则无。
  2. 定义满足策略:针对每个目标,在PSAC中描述将采用何种活动、产生何种数据来满足。例如,对于“软件需求是正确且完整的”这一目标,策略可以是“通过需求评审和基于需求的测试双重验证”。
  3. 执行并收集证据:在开发过程中执行相应活动,保留评审记录、测试报告、分析结果等作为证据。
  4. 符合性评审:在软件生命周期结束时,由DER(设计ee代表)或适航审查方对照目标逐项检查证据,确认无遗漏。

常见误区:许多团队将“目标”误解为“文档章节”。例如,为了满足“源代码与低层需求一致”的目标,仅编写一份追溯性矩阵文档是不够的,必须提供代码评审记录和静态分析结果来证明一致性确实被检查过。文档只是载体,证据才是核心。

2.3 数据项与证据链:构建不可辩驳的适航档案

数据项(Data Item)是DO-178C中定义的信息集合,它们共同构成证据链。证据链的完整性直接决定了适航审查的顺利程度。一个典型的证据链包含:计划数据(说明意图)→ 需求数据(定义规格)→ 设计数据(描述实现)→ 代码与集成数据(展示产物)→ 验证数据(证明符合性)→ 配置管理数据(记录变更)→ 质量保证数据(确认过程合规)。

案例拆解:某飞控系统“需求追溯性断裂”问题

背景与约束:某项目开发一套飞行控制计算机软件(DAL A级),采用V模型开发。在提交局方审查时,发现软件需求数据(SRS)中有一条关于“俯仰角速率限制”的功能需求,但在软件设计描述(SDD)中找不到对应的架构设计元素,源代码中也没有实现该功能的模块。

初始现象:审查方指出存在“未实现的需求”,属于不符合性项(NC)。

关键输入数据:需求追溯性矩阵(RTM)显示该需求状态为“已实现”,但代码搜索显示无相关函数。进一步检查发现,RTM是开发后期由工具自动生成的,未经过人工核对。

分析判断过程:团队追溯了需求变更历史,发现该需求在需求评审后曾被修改(增加了“速率限制”的阈值),但设计人员基于旧版本需求进行设计,导致设计遗漏。RTM工具仅基于文档标题匹配,未能识别语义差异。

实际操作步骤:

  1. 立即冻结该需求相关的代码基线,发布问题报告(PR)。
  2. 设计团队补充设计元素,在控制律模块中增加速率限制器。
  3. 编码团队实现该功能,并添加单元测试用例覆盖正常与边界情况。
  4. 更新RTM,并增加人工交叉检查环节(设计人员与验证人员背靠背核对)。
  5. 重新执行受影响的集成测试,确认无回归。

结果对比:修复后,该需求在代码中可追踪,测试覆盖率达到100%。审查方关闭NC。

风险与代价:此次返工导致项目进度延误2周,额外成本约15万元。根本原因是追溯性管理流于形式。

复盘经验:追溯性不是“事后补文档”,而是开发过程中实时维护的活数据。建议采用双向追溯(需求→设计→代码→测试,以及反向)并定期进行人工审计。

经验提醒:对于DAL A/B级项目,建议引入基于模型的追溯工具(如IBM DOORS、Jama Connect),并配置自动化的一致性检查规则。但工具只是辅助,必须建立“追溯性数据变更评审”机制,确保每次需求变更都触发设计、代码、测试的联动更新。

2.4 常见误区与总结复盘

在实施DO-178C过程中,团队常陷入以下误区:

  • 误区一:将“满足目标”等同于“文档齐全”。实际上,文档数量与符合性无直接关系,关键在于证据的有效性。一份简洁的评审记录可能比一份冗长的报告更有价值。
  • 误区二:忽视“独立性”要求。对于DAL A/B级,验证活动必须由独立于开发的人员执行。若开发与验证为同一人,则目标不满足。
  • 误区三:生命周期模型僵化。即使采用敏捷开发,也必须映射到DO-178C的过程框架中,明确每个迭代对应哪些目标。
  • 误区四:证据链断裂。常见于需求变更后未同步更新设计、代码和测试,导致追溯性矩阵失真。

总结:DO-178C 的本质是“基于风险的工程保证”。软件生命周期提供了时间维度的框架,目标导向方法提供了逻辑维度的判定标准,数据项与证据链则提供了物理维度的载体。三者缺一不可。在实际项目中,建议团队在项目启动时即建立“目标-活动-数据-证据”的映射表,并在每个阶段出口进行自查,确保证据链的连续性和完整性。唯有如此,才能在适航审查中做到“有据可查、有据可依”。