基于DO-178B的机载软件可靠性设计

时间:2022-08-14 01:29:18

基于DO-178B的机载软件可靠性设计

摘 要:本文从软件可靠性工程角度,对DO-178B的研制流程进行解读,分析DO-178B中所包含的避错、消错和容错的机载软件可靠性设计技术。分析表明,DO-178B既是机载软件满足适航安全性要求的符合性方法,也是保证机载软件可靠性的一种软件设计方法。

关键词:DO-178B;软件可靠性;机载软件;多版本软件

中图分类号:TP311 文献标识码:A DoI: 10.3969/j.issn.1003-6970.2012.06.014

Airborne Software Reliability Design Based on DO-178B

JIN Ping, ZHaNG Xiao-chun

(Flight Control Department of SADRI, Shanghai, 201210)

【Abstract】This paper discusses design flow based on DO-178B from software reliability’s point of view and analyzes technology of

error avoidance/ error removal /fault tolerance in Do-178B. the result of analysis indicates that Do-178B is not only the Method of Compliance to ensure airborne software meet Certification requirements, but also the method to assure software reliability.

【Key Words】DO-178B; Software Reliability; Airborne Software; Multiple-Version Software

1 机载软件可靠性概述

从Boeing 757/767和Airbus A310开始,数字式航空电子逐步开始应用到大型商用飞机的关键安全系统/设备中,如飞行控制系统、显示系统等。相比传统机载系统/设备,数字式航空电子具有部件少、维护方便、开发灵活、易于实现先进功能等优点,改善了商用飞机的经济性。为了满足民用航空安全性要求,适航当局要求数字式航空电子的可靠性与安全性至少应与它所替代的传统机载系统相当。模拟式航空电子的输入与输出通过硬件相连,其整个链路的可靠性和安全性是可预测的,且结果是可信的;而数字航空电子利用软件处理所有数据,输入与输出由软件相连,如何确定软件的可靠性和安全性并表明其满足适航要求是机载软件研发的关键。

FAA和EASA推荐由国际航空无线电委员会(RTCA)编制的DO-178B作为机载软件适航符合性方法[1]。DO-178B定义了一系列软件开发与验证的过程,整个过程必须接收配置管理和质量管理,同时根据系统安全性评估,参照软件对潜在失效条件的影响将机载软件划分为A、B、C、D、E五个研制保证等级,对于每个研制保证等级,它定义了目标及达到目标所x需进行的活动,图1为DO-178B概图。

DO-178B流程在保证安全性的同时,也提供了软件可靠性的保证。本文将基于DO-178B对机载软件可靠性设计方法进行分析。

软件失效方式与硬件大不相同,不能简单用硬件可靠度评估软件。到目前为止,尚无一种有效的方法来证明软件的可靠性,并给出准确的量化指标。即便软件可靠性预计是可信的,度量软件可靠度并不能直接产生所需的可靠软件。软件的可靠度必须通过正确设计和测试验证获得[2]。软件可靠性设计的技术可分为以下三类:

避错:即利用设计手段减少软件中的错误;

消错:即在软件开发结束后,通过测试等手段消除软件中的错误;

容错:即利用设计手段,确保错误出现时,满足故障安全要求或系统继续运行。

DO-178B通过建立阶梯式且严格规定的开发和验证过程来研发软件,其将软件开发过程分成多个步骤,每个步骤都需要经过验证后才能转入下一步,每一步验证使得研发过程中引入错误的概率减小到最小,达到避错设计目的;开发过程结束后,又通过多级测试和对测试的验证,以表明软件符合系统需求,达到消错设计的目的,整个过程如图2所示。

2 机载软件避错设计

实践表明软件的错误大多来源于开发设计阶段,如需求错误、人为引入错误等。如何减少开发设计阶段带来的错误成为软件可靠性设计最重要的内容。DO-178B的软件开发设计过程首先是根据验证过的系统需求生成软件高级别需求;然后经过一次或多次迭代,由高级别需求通过软件设计过程生成软件架构和软件低级别需求,最后根据软件低级别需求进行编码,生成软件代码,共包含三个过程。每个过程均伴随着验证活动,以确保本过程设计是正确的,没有错误会传递到下一个过程,如图2所示。

2.1 机载软件高级别需求的生成与验证

机载软件开发的第一步是,生成软件高级别需求。高级别需求是直接由系统需求和系统架构产生的[3],它的输入主要是系统生命周期过程的系统需求、硬件接口和系统体系结构,以及来自软件计划过程的软件开发计划和软件需求标准。高级别需求应该描述系统级需要软件完成的功能,需求本身应清晰、准确、完整、可验证并可追溯(衍生需求除外),其表述应符合软件需求标准。

软件高级别需求完成后,须通过评审和分析等方法进行验证,减少软件需求过程中可能引入的需求错误。DO-178B的附录表A-3给出了高级别需求验证必须完成的7个目标,其中对于A级别的软件,DO-178B要求其中3个目标必须采用独立于设计团队的验证团队完成验证,以减少设计人员共模错误。

2.2 软件设计与验证

软件设计过程输入包括软件需求数据、软件开发计划及软件设计标准[3]。在软件设计过程中,通过一次或多次迭代,对高级别需求进行细化,生成软件架构和低级别需求。

软件架构设计的机理为“分而治之”,主要是将整个软件分解成多个小块(子模块),每个子模块完成一个特定功能,且通过清晰定义的接口与其它子模块进行通信。通过架构设计的分解,子模块的复杂性比整个软件的复杂性至少小一个数量级,相应的潜在设计错误存在的概率也就相应减小。

软件低级别需求是在软件架构的基础上进一步设计,它描述了每一个由软件执行的决定和计算,直接用于编写代码。

软件设计的验证活动是通过评审和分析软件架构和低级别需求,减少软件设计过程中可能引入的需求错误。DO-178B的附录表A-4给出了验证的13个目标,其中对于A级别的软件,有6个目标必须采用独立于设计团队的验证团队完成验证以减少设计人员共模错误。

2.3 软件编码与验证

完成软件低级别需求验证后,就进入编码过程。DO-178B规定在软件开发前必须建立软件编码标准并对编码进行评估,去掉那些可能导致软件错误的规则,从而提高编码的可靠性。只要前文描述的设计与验证做的足够充分,软件编码将是非常简单的工作。编码过程中,需要注意不引入代码错误,并关注软件代码的可读性、可维护和可测试性。

软件开发避错设计的最后一步是代码验证。这一步验证的目的是表明代码和软件设计及编码标准一致。DO-178B的附录表A-5给出了验证的7个目标,其中对于A级别的软件,有3个目标必须采用独立于设计团队的验证团队完成验证以减少设计人员共模错误。这个过程可以人工验证、自动验证或者其他可用的方法。

2.4 软件配置管理和质量保证

除了每个软件研发活动完成后采用的验证步骤外,DO-178B还规定在整个软件研发过程中必须对软件进行配置管理和质量保证,如图1中所示。

软件配置管理规定了在软件研发过程中软件标示、更改控制和状态报告的标准。配置管理的主要目的是确保软件的更改是按照规定可控的方式进行的。

软件质量保证包括质量审核和其他方法,以保证产品、相应的文档和管理过程的完整性。软件质量保证过程是通过审核软件生命周期的各个过程及输出来确保已满足有关目标,偏离的项目被发现、评估、追踪并解决。

2.5 小结

DO-178B通过制定计划和相关标准,利用严格的流程和多级验证作为软件避错设计手段,来减少软件设计中的错误,提高软件可靠性。

3 机载软件消错设计

跟随在避错设计之后的,是消错,消错最有效的手段就是测试。DO-178B规定了三级代码的测试,低层测试、软件综合测试和软硬件综合测试,通过测试,保证软件满足其需求和以高置信度展示那些系统安全评估过程中所确认的、可能导致不可接受失效状态的错误已被消除。为达到上述目的,DO-178从软件测试环境、测试用例、测试方法和测试覆盖率分析给出要求和必须完成的目标。

3.1 测试环境

为满足软件测试的目标,测试环境可能因为测试级别不同而不同。因此DO-178B建议对于软硬件综合测试,理想的测试环境应包含加载至目标计算机的真实软件及目标计算机,而对于低层代码测试和软件综合测试测试环境没有特殊建议。测试环境的选取要保证能够对测试输入和代码的运行进行精确的控制和监控,以便达到基于需求的覆盖率和结构覆盖率。

3.2 测试用例

DO-178B规定要求基于需求生成测试用例,工程经验表明采用基于需求的测试是最有效的检测错误的方法[4]。测试用例必须基于软件需求和研制过程中可能存在的错误,包括正常范围测试用例和健壮性测试用例。正常范围测试用例的目标是证明软件响应正常输入和状态的能力。健壮性测试用例的目标是证明软件响应异常输入和状态的能力。DO-178B给出两种测试用例必须测试的内容。

3.3 测试方法

DO-178B要求测试方法必须基于需求,共分成三级:基于需求的硬件/软件集成测试,基于需求的软件集成测试和基于需求的低层测试。

基于需求的硬件/软件集成测试关注软件在目标机环境中运行相关的错误源,以及相关的高层功能。基于需求的硬件/软件集成测试的目标是确保目标机中的软件满足高级别需求。

基于需求的软件集成测试关注软件需求之间的内部关系,以及软件体系结构对需求的实现。基于需求的软件集成测试的目标是确保软件部件能正确地交互,并满足软件低级别需求和软件体系结构。

基于需求的低层测试关注软件部件对低级别需求的符合。基于需求的低层测试的目标是确保软件部件满足其低级别需求。

针对测试,DO-178B的表A-6规定了必须完成的6个目标,对于A级别软件,DO-178规定其低级测试需要满足独立性要求。

3.4 测试覆盖率分析

软件测试的越充分软件越可靠,但是机载实时软件非常复杂,测试内容巨大,那么测试到什么程度后软件就可以具有高置信度可靠度呢?DO-178B采用“验证的验证”的方法来验证和表明测试是否充分,即测试覆盖率分析。DO-178B中规定了测试覆盖率分析分两步进行,即基于需求的覆盖率分析和结构覆盖率分析,第一步分析测试用例与软件需求的关系,以确认所选取的测试用例满足相应的准则,第二步确认基于需求的测试规程覆盖了代码的结构。在表A-7规定了“验证的验证”活动必须满足的8个目标,对A级软件所有活动必须满足独立性要求,同时要完成MC/DC的分析。

3.5 小结

DO-178B利用多级测试,消除软件中的错误;对于不同的研制保证等级的软件,规定了不同目标;为表明测试的充分性,利用测试覆盖率分析来进行测试活动的验证;对于研制保证等级高的软件,对测试和测试验证提出了独立性要求,通过这些严格定义的方法和过程,使软件获得高置信度的可靠性。

4 容错设计

DO-178B的目的是通过严格流程和测试,生成正确无误的软件。但实际情况是,即使按照DO-178 Level A流程开发软件,完成其规定的66个目标,软件还是有可能有潜在的错误存在。因此DO-178B建议额外的技术和架构方面的容错设计,减缓软件中可能存在潜在错误,从而提高软件的可靠性。

4.1 分区

分区是对功能上独立的软件部件提供隔离的技术,以抑制和/或隔离故障,即当其中一个分区中软件失效,该失效不会影响其他分区软件运行。分区内软件组件的软件等级可由该部件相关的、最严重的失效状态来确定。隔离的方式可以选择软件或硬件。如果分区保护涉及到软件,那么该保护软件的研制保证等级要与分区内的软件组件的最高等级相对应,并满足该研制保证等级的流程和目标。

4.2 多版本软件

多版本软件就是由多个版本软件(通常两个或三个)完成相同的功能,采用比较监控或多数表决的方式来检测和/或纠正错误,以静态冗余方式实现软件容错[5]。多版本软件采用下列技术的组合来实现:

源代码以两种或多种不同的程序设计语言实现;

利用两种或多种不同的编译程序生成目标代码;

各可执行目标代码版本在分开的、非相似处理器上运行,或在单一处理器上运行,但采取措施在软件版本之间实现了分区;

软件需求、软件设计和/或源代码由两个或多个开发团队开发,开发团队间的交流受到控制;

软件需求、软件设计和/或源代码在两种或多种软件开发环境中开发,并且/或者使用不同的测试环境来验证每个版本;

使用两种或多种不同的连接编辑程序来连接可执行目标代码,使用两种或多种不同的加载器来加载可执行目标代码;

软件需求、软件设计和/或源代码分别按两套或多套不同的软件需求标准、软件设计标准和/或软件编码标准开发。

多版本之间通过上述技术实现了版本间的差异,减小共模设计错误可能。多版本软件技术已在商用飞机广泛应用,如空客的单个飞控计算机监控支路和指令支路,采用非相似的编程语言和编译器,但是采用了相同的处理器;而波音在777飞控计算机中,采用ADA语言编写源代码,但是采用非相似的编译器和处理器。实践证明,多本版本是一种行之有效的提高软件可靠性的设计。

4.3 安全性监控

安全监控通过直接监控可能引起特定失效状态的某个功能,进而防止该失效状态发生的一种手段。监控功能可通过硬件、软件、或硬件与软件的组合来实现,常见的监控器有看门狗、算法出错中断,存储器写保护、票检监控器等[6]。

4.4 小结

上述容错设计用于减缓软件潜在错误导致的失效故障,并不能替代DO-178B过程保证流程,相反实现这些容错设计的软件必须按照其分配的研制保证等级所要求的过程进行开发,并满足相关目标。

5 结论

DO-178B利用严格定义的流程、多级验证、多级测试以及贯彻整个软件可发周期的配置管理和质量管理,生成具有高置信度的高可靠的软件,以满足适航要求。需要注意的是,工业经验表明,软件不可能做到无错误,因此在实际机载软件开发中,通常在严格遵守DO-178B流程基础上,还采用了分区、多版本软件与安全性监控等容错设计方法,来减缓软件可能存在的潜在错误,提高航空机载软件的可靠性。

参考文献:

[1] Advisory Circular 20-115 RTCA, Inc. Document RTCA/ DO-178B.

[2] 孙治安等 软件可靠性工程[M].北京:北京航空航天大学出版社,2009.

[3] Software Consideration in Airborne Systems and Equipment Certification, Radio Technical Commission for Aeronautics RTCA DO-178B/EUROCAE ED-12B, 1996.

[4] 朱少民 软件测试[M].北京:人民邮电出版社,2009.

[5] 韩炜.非相似容错计算机系统设计及验证技术研究[D].西安:西北工业大学,2002.

[6] 王珍熙.可靠性、冗余及容错技术[M].北京:航空工业出版社,1991

上一篇:浅谈大铸锭5754H24板材生产工艺研究 下一篇:智能变电站二次系统优化及应用研究