1. 航空嵌入式软件验证交付全景
航空嵌入式软件的验证交付,本质上不是“测完软件写份报告”,而是围绕适航审定要求,建立一条从需求到证据、从证据到符合性结论的可追溯链路。DO-178C《机载系统和设备合格审定中的软件考虑》正是这条链路的顶层规则:它不规定你必须用什么工具、写什么代码,而是规定你必须证明什么、用什么数据证明、以及这些数据之间如何保持一致。
一、DO-178C的框架:以软件等级驱动目标裁剪
DO-178C的核心逻辑是“等级决定目标”。软件等级由系统安全性评估过程产生,依据软件失效可能导致的飞机级后果严重程度划分为A到E五级:A级为灾难性,B级为危险性,C级为较大,D级为轻微,E级为无安全影响。等级越高,需要满足的目标越多、独立性要求越强。
标准正文按过程组织,主要包括:软件计划过程、软件开发过程(需求、设计、编码、集成)、软件验证过程(评审、分析、测试)、软件配置管理过程、软件质量保证过程、以及合格审定联络过程。此外还有多个补充文件:DO-248C提供常见问题解释,DO-330规定工具鉴定,DO-331针对模型化开发与验证,DO-332针对面向对象技术,DO-333针对形式化方法。理解这些文件的分工,是判断“某个活动该按哪份文件做”的前提。
需要特别强调的是“目标”与“活动”的区别。DO-178C表格A-1至A-10列出的是目标,例如“高层需求已开发”“低层需求已开发”“源代码符合低层需求”等。活动是实现目标的手段,你可以用评审、分析或测试来满足同一目标,但必须说明为什么该手段足以证明目标达成。这就是“目标导向、方法自选”的含义。
二、验证交付物清单:审定要看的是数据,不是过程描述
DO-178C把交付物称为“生命周期数据”,并分为三类:计划类数据、开发类数据、验证类数据,外加配置管理与质量保证记录。对A/B级项目,典型交付物包括:
- 计划类:软件合格审定计划(PSAC)、软件开发计划、软件验证计划、软件配置管理计划、软件质量保证计划、需求标准、设计标准、编码标准、工具鉴定计划等。
- 开发类:高层需求、低层需求、软件架构、源代码、可执行目标码、链接与加载数据等。
- 验证类:评审记录、分析记录、需求覆盖分析、结构覆盖分析(语句、判定、MC/DC)、测试用例与测试规程、测试结果、追溯矩阵等。
- 管理类:配置项清单、基线记录、变更请求与影响分析、问题报告、质量保证审核记录、工具鉴定数据等。
这些数据不是孤立文档,而是互相引用的证据网络。例如,一条低层需求必须能追溯到高层需求,也必须能追溯到至少一个测试用例;一个测试用例必须能追溯到它所验证的需求,并给出通过/失败判据。审定审查时,审查员往往从PSAC出发,沿着追溯链抽查,看数据是否一致、是否完整、是否有独立性证据。
三、生命周期数据关系:追溯性是骨架
生命周期数据之间的关系可以用“双向追溯”来概括:需求向下追溯到设计、代码和测试,测试向上追溯到需求和目标。同时,验证结果要反馈到需求与计划,形成闭环。下图给出一个简化的数据关系视图,帮助建立整体印象。
图中蓝色实线表示计划对开发与验证的约束关系,绿色实线表示开发数据向验证数据的输入关系,橙色虚线表示验证结果向上追溯并反馈到需求与计划。实际项目中,这条链往往通过需求管理工具(如DOORS、Polarion)和测试管理工具维护,但工具只是载体,关键是每条链接都有明确的对象、版本和状态。
四、实战项目导入:以“某型大气数据计算机软件”为例
为了让后续章节有统一的讨论对象,这里引入一个贯穿课程的示例项目:某型大气数据计算机(ADC)软件,软件等级为B级,运行于双通道余度架构,主要功能包括静压/总压采集、高度与空速解算、故障检测与通道切换、ARINC 429输出。项目采用C语言开发,目标处理器为PowerPC e200系列,使用基于需求的测试与结构覆盖分析。
假设该项目当前处于计划阶段,已完成的输入包括:系统安全性评估报告(确定软件等级B)、系统需求规格、接口控制文档(ICD)。接下来需要产出的第一批生命周期数据是:PSAC、软件开发计划、软件验证计划、配置管理计划、质量保证计划,以及需求标准、设计标准、编码标准。PSAC需要说明软件等级、生命周期过程、使用的工具及其鉴定策略、以及计划满足的DO-178C目标清单。
一个常见的误区是把PSAC写成“项目介绍”。实际上,PSAC是审定审查的入口文件,它必须明确回答:软件等级是什么、依据是什么;采用哪些生命周期过程;哪些目标被裁剪、为什么;工具如何鉴定;以及如何证明独立性。例如,B级软件要求验证活动由独立于开发的人员执行,PSAC中就要说明独立性如何实现,而不是只写“由验证组负责”。