二、DO-178C核心概念:软件生命周期、目标导向方法、数据项与证据链
DO-178C(机载系统与设备合格审定中的软件考虑)作为民用航空机载软件开发的适航标准,其核心并非一套僵化的流程模板,而是一套基于目标导向(Objectives-Based)的工程框架。理解该标准,首先需要跳出“文档驱动”的传统思维,转向“证据驱动”的适航逻辑。本章将围绕软件生命周期、目标导向方法、数据项与证据链三大支柱,剖析如何构建一套能够通过局方审查的软件研制保证体系。
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)(由软件等级决定)、输出数据项以及独立性要求。目标导向的核心在于:只要满足目标,具体采用何种方法(如形式化方法、基于模型的开发、传统手工编码)由申请人自行决定。
判断方法:如何确定目标是否满足
- 识别适用目标:根据软件等级(A/B/C/D/E)查阅附录A表格,确定哪些目标适用。例如,DAL A级软件要求“需求是可验证的”这一目标具有独立性要求,而DAL D级则无。
- 定义满足策略:针对每个目标,在PSAC中描述将采用何种活动、产生何种数据来满足。例如,对于“软件需求是正确且完整的”这一目标,策略可以是“通过需求评审和基于需求的测试双重验证”。
- 执行并收集证据:在开发过程中执行相应活动,保留评审记录、测试报告、分析结果等作为证据。
- 符合性评审:在软件生命周期结束时,由DER(设计ee代表)或适航审查方对照目标逐项检查证据,确认无遗漏。
常见误区:许多团队将“目标”误解为“文档章节”。例如,为了满足“源代码与低层需求一致”的目标,仅编写一份追溯性矩阵文档是不够的,必须提供代码评审记录和静态分析结果来证明一致性确实被检查过。文档只是载体,证据才是核心。
2.3 数据项与证据链:构建不可辩驳的适航档案
数据项(Data Item)是DO-178C中定义的信息集合,它们共同构成证据链。证据链的完整性直接决定了适航审查的顺利程度。一个典型的证据链包含:计划数据(说明意图)→ 需求数据(定义规格)→ 设计数据(描述实现)→ 代码与集成数据(展示产物)→ 验证数据(证明符合性)→ 配置管理数据(记录变更)→ 质量保证数据(确认过程合规)。
案例拆解:某飞控系统“需求追溯性断裂”问题
背景与约束:某项目开发一套飞行控制计算机软件(DAL A级),采用V模型开发。在提交局方审查时,发现软件需求数据(SRS)中有一条关于“俯仰角速率限制”的功能需求,但在软件设计描述(SDD)中找不到对应的架构设计元素,源代码中也没有实现该功能的模块。
初始现象:审查方指出存在“未实现的需求”,属于不符合性项(NC)。
关键输入数据:需求追溯性矩阵(RTM)显示该需求状态为“已实现”,但代码搜索显示无相关函数。进一步检查发现,RTM是开发后期由工具自动生成的,未经过人工核对。
分析判断过程:团队追溯了需求变更历史,发现该需求在需求评审后曾被修改(增加了“速率限制”的阈值),但设计人员基于旧版本需求进行设计,导致设计遗漏。RTM工具仅基于文档标题匹配,未能识别语义差异。
实际操作步骤:
- 立即冻结该需求相关的代码基线,发布问题报告(PR)。
- 设计团队补充设计元素,在控制律模块中增加速率限制器。
- 编码团队实现该功能,并添加单元测试用例覆盖正常与边界情况。
- 更新RTM,并增加人工交叉检查环节(设计人员与验证人员背靠背核对)。
- 重新执行受影响的集成测试,确认无回归。
结果对比:修复后,该需求在代码中可追踪,测试覆盖率达到100%。审查方关闭NC。
风险与代价:此次返工导致项目进度延误2周,额外成本约15万元。根本原因是追溯性管理流于形式。
复盘经验:追溯性不是“事后补文档”,而是开发过程中实时维护的活数据。建议采用双向追溯(需求→设计→代码→测试,以及反向)并定期进行人工审计。
经验提醒:对于DAL A/B级项目,建议引入基于模型的追溯工具(如IBM DOORS、Jama Connect),并配置自动化的一致性检查规则。但工具只是辅助,必须建立“追溯性数据变更评审”机制,确保每次需求变更都触发设计、代码、测试的联动更新。
2.4 常见误区与总结复盘
在实施DO-178C过程中,团队常陷入以下误区:
- 误区一:将“满足目标”等同于“文档齐全”。实际上,文档数量与符合性无直接关系,关键在于证据的有效性。一份简洁的评审记录可能比一份冗长的报告更有价值。
- 误区二:忽视“独立性”要求。对于DAL A/B级,验证活动必须由独立于开发的人员执行。若开发与验证为同一人,则目标不满足。
- 误区三:生命周期模型僵化。即使采用敏捷开发,也必须映射到DO-178C的过程框架中,明确每个迭代对应哪些目标。
- 误区四:证据链断裂。常见于需求变更后未同步更新设计、代码和测试,导致追溯性矩阵失真。
总结:DO-178C 的本质是“基于风险的工程保证”。软件生命周期提供了时间维度的框架,目标导向方法提供了逻辑维度的判定标准,数据项与证据链则提供了物理维度的载体。三者缺一不可。在实际项目中,建议团队在项目启动时即建立“目标-活动-数据-证据”的映射表,并在每个阶段出口进行自查,确保证据链的连续性和完整性。唯有如此,才能在适航审查中做到“有据可查、有据可依”。