科普:DO-178B
![科普:DO-178B](https://static001.geekbang.org/infoq/25/25c574f2f1ea566b3ad4e85f11615c3c.png)
对航空航天领域的工业软件设计来说,安全无疑是重中之重,而在众多安全准则中,最为关键也最具影响力的就是 DO-178B。
![](https://static001.geekbang.org/infoq/e3/e3ef5d8de686e4e49a68725d1b79e96d.png)
▲DO-178B 软件生命周期过程关系图
01.什么是 DO-178B?
DO-178B 的全称为“机载系统设备合格审定中的软件考虑”,发布于 1992 年,由无线电航空技术委员会(RTCA,Radio Technical Commission for Aeronautics)与欧洲民用航空电子协会(EUROCAE,European Organization for CivilAviation Equipment)共同开发,是一项国际通行的适航认证标准,主要关于机载系统和设备所使用的任务关键型软件的安全性。尽管 DO-178B 只是一项指南而非政策,但仍具有极其重要的地位,美国联邦航空管理局(FAA,Federal Aviation Administration)就将 DO-178B 作为判断软件在机载环境中是否安全可靠的指南,即机载软件适航认证的标准依据。
*RTCA 是一个非营利性行业协会,旨在制定技术指南并供政府监管部门使用,以“取得一致性”为宗旨。
尽管 DO-178B 是专为满足航空航天领域的机载软件需求而开发,但也被广泛应用于其他行业,通常与 DO-254(也称机载电子硬件设计保证指南)一起使用。与 DO-178B 一样,DO-254 也是由 RTCA 发布的。
02.DO-178B 和 DO-178C 有什么区别?
DO-178B 和 DO-178C 都是 RTCA 为机载软件所制定的标准,后者发布于 2011 年,可以理解为前者的升级版,主要根据前者 1992 年发布以来软件开发实践、技术和工具等方面的进步对其进行了勘误、澄清与补充,修改了原来描述不清晰的方面,并加了模型开发、工具鉴定、面向对象方法等技术。
![](https://static001.geekbang.org/infoq/26/26f9c83872d9d925bed5ad8bcd787f97.png)
▲DO-178C 软件生命周期过程和系统之间信息流
DO-178C 保持了与 DO-178B 相同的软件级别,继续强调基于需求的开发、测试和可追溯性的重要性。其最为显著的一处变化为新增了一个新的软件生命周期模型,称为“基于模型的开发与验证”(MBD,Model Based Definition),有助于提升软件开发的效率和质量,也为使用形式化方法的商用现成(COTS,Commercial Off-The-Shelf)软件提供了更为明确的指导。
03.DO-178B 概述
DO-178B 根据软件故障对乘客、机组人员和飞机的潜在影响分为 A(最严重)到 E(最不严重)的五个级别,提供了软件开发、验证和确认的系统流程,包括需求、设计、编码和测试。
A 级(灾难性):故障使飞机安全飞行和着陆所需的关键功能失效,可能导致飞机坠毁,因而无法继续安全飞行。
B 级(危险/严重):故障会影响飞机的安全性和性能,降低机组人员克服不利操纵状态的能力,造成乘客的严重伤害。
C 级(较重):故障的影响仍然明显但比 B 级带来的影响小,给机组带来明显的工作量增加,安全系数降低。
D 级(较轻):故障相较 C 级更轻,但仍会给乘客带来不便或改变常规飞行计划。
E 级(无影响):故障完全不影响飞机运行能力,对机组工作量没有影响。
![](https://static001.geekbang.org/infoq/be/be375ad789dc7bfa4f81f26a4d830a6d.png)
▲机载软件失效条件与目标
常规来说,A-E 级所对应的特定应用软件开发工作量层级递减,但关于低级别向高级别转移成本的可靠数据较少,现有的少量数据表明,单一层级跃升所增加的开发成本为 75%—150%,主要原因在于更高等级所要达到的目标会越来越多。成本增加的主要原因是每个临界等级需要达到的目标越来越多。
DO-178B 级别认定通常分为 5 个过程,每个过程都需要输出一组预期文档:
软件规划阶段:输出软件开发计划(SDP,Software Development Plan)。
软件发展阶段:输出软件需求数据(SRD,Software Requirements Data)、软件设计描述(SDD,Software Design Description)、源代码和可执行目标代码。
软件认证阶段:输出软件验证案例和程序(SVCP,Software Verification Cases and Procedures)以及软件验证结果(SVR,Software Verification Results),并对所有要求、设计和代码进行审查。
配置管理阶段:输出软件配置索引(SCI,Software Configuration Index)和软件生命周期环境配置索引(SECI,Software life cycle Environment Configuration Index)。
质量保证阶段:输出软件质量保证记录(SQAR,Software Quality Assurance Records)、软件符合性审查(SCR,Software Conformity Review)和软件实施概要(SAS,Software Accomplishment Summary)。
04.DO-178B 中软件验证的重要性
软件验证是 DO-178B 的重要组成部分,用于确保软件按预期运行并满足安全性和可靠性要求,在软件部署到飞机上之前识别并消除可能存在的软件缺陷和错误。使用恰当的验证工具即可帮助开发人员实现各项测试的自动化运行,提升测试效率、效果并缩短开发周期。
![](https://static001.geekbang.org/infoq/9f/9fcc2e9b2850f2b4df2d5574281e80dc.png)
▲基于 DO-178B 的软件开发与验证过程
05.软件验证工具在 DO-178B 中的作用
软件验证工具在实现 DO-178B 的目标方面发挥着至关重要的作用,可以帮助开发人员实现静态分析、动态分析和基于需求的测试等。以下是软件验证工具在 DO-178B 认证中的关键作用:
静态分析工具
静态分析工具在不运行软件的情况下分析软件源代码,通过检查代码结构、语法和数据流来检测潜在的缺陷和违反编码标准的情况,可以识别未初始化变量、缓冲区溢出和不可访问代码等问题,帮助开发人员尽早发现错误,从而降低软件运行中出现故障的可能性。
动态分析工具
动态分析工具用于监测软件执行过程中的行为,捕捉运行时信息如内存使用、函数调用和变量值,对于检测运行时错误、内存泄漏和性能瓶颈格外有效,能够帮助用户深入了解软件的实际行为,也有助于发现静态分析中不明显的问题。
基于需求的测试工具
基于需求的测试工具能够根据具体的指定需求对软件进行验证,据需自动生成测试用例,有助于确保所有需求都得到充分测试;有助于实现需求、设计和测试用例之间的可追溯性(DO-178B 的一项关键要求)。
06.验证工具选择注意事项
在选择符合 DO-178B 的软件验证工具时,应考虑以下几个因素:
工具鉴定:DO-178B 要求开发过程中使用的软件验证工具必须合格,需要证明工具可靠、有效,并且不会带来额外的错误。鉴定过程通常包括记录工具的功能和限制条件,以及提供工具验证和确认的证据。
工具集成:所选择的软件验证工具应能集成到开发环境和软件开发生命周期中,与开发工具、编译器和其他软件无缝协作,确保工作流程顺畅,并促进验证自动化。
工具文档和支持:工具文档和支持应包括全面的用户手册、教程和示例等文档,供应商的技术支持和定期更新也至关重要。
为确保满足 DO-178B 要求,软件验证工具的使用应符合标准中规定的准则,应详实记录选择、鉴定和使用工具的过程,并保留工具鉴定和验证证据,所有工具应在整个软件开发生命周期中始终如一地使用并接受严格的测试和审查。使用合适的需求管理工具来保证每项记录的源头追溯、每次修改的记录在案是个不错的选择。
07.总结
DO-178B 标准在 20 世纪 90 年代就被我国航空工业部门所认识,并对其进行了翻译。随着我国航空航天软件工程化水平的提高,特别是 C919 等国家重大飞机型号的正式交付和运营,在适航认证目标的驱动下,DO-178B 事实上已经成为我国航空工业必须遵循的软件开发标准。
参考链接
https://visuresolutions.com/do-178-guide/do-178b
版权声明: 本文为 InfoQ 作者【DevOps和数字孪生】的原创文章。
原文链接:【http://xie.infoq.cn/article/812a760ca0b06401396acff1a】。文章转载请联系作者。
评论