浅析民机机载软件非激活代码

2018-12-10 11:05廖凯居慧
科技视界 2018年21期

廖凯 居慧

【摘 要】民用飞机对安全性的要求决定了机载软件需比普通行业软件满足更多的要求。机载软件源代码中所含的非激活代码若被意外激活,会对飞机的安全性带来不同等级的危害。如何通过过程保证的方法来避免或减缓非激活代码被意外激活,是当下机载软件研制单位和适航审定局方共同关注的问题。本文针对机载软件非激活代码的特殊属性,分别从软件计划、设计和验证过程,解析了业界标准中与非激活代码相关的要求。同时站在审定局方的角度,诠释了局方在适航符合性验证方面的对非激活代码的关注点。

【关键词】机载软件;非激活代码;死代码;符合性;结构覆盖率分析

中图分类号: TP311.52 文献标识码: A 文章编号: 2095-2457(2018)21-0033-002

DOI:10.19694/j.cnki.issn2095-2457.2018.21.015

【Abstract】The safety requirements of civil aircraft determine that airborne software needs to meet more requirements than ordinary software.If the deactivated code is accidentally activated,it will result in different levels of damage to the safety of the aircraft.How to avoid or mitigate the accidental activation of deactivated code by process assurance method is a common concern of the airborne software development unit and airworthiness certification authority.According to the special attributes of the airborne software deactivated code,this paper analyzes the requirements related to the deactivated code in the industry standards from the process of software planning,design and verification.Meanwhile,from the perspective of airworthiness certification authority,it interprets the authority's concerns about the deactivated code in the aspect of airworthiness compliance verification.

【Key words】Airborne software;Deactivated code;Dead code;Compliance;Structural coverage analysis

0 前言

伴随着电子技术的高速发展,越来越多的机载电子设备被应用到现代民用飞机上,这些电子设备的重要组成部分是机载软件,一类比普通行业软件对安全性有更高要求的软件。民机机载软件不同于行业软件,其需求在机载系统/设备的设计阶段,从机载系统/设备功能需求分配给机载软件。

由于各种不同的原因,机载软件的源代码中会出现非激活代码,这些代码在当前飞机构型中处于不被激活的状态。如何在机载软件的研发过程中和局方审查阶段来制定和检查對于防止非激活代码意外被运行,成为了适航审定局方重点关注的问题。

1 民机机载软件的特性

不同于传统意义上的行业软件,民用飞机机载软件具备如下特性:

(1)安全性:按照软件失效对飞机产生的危害等级,民机机载软件被分为A/B/C/D/E级,这些安全等级,由其依附的系统/设备的安全等级向下分解而来。

(2)非独立性:民机机载软件必须加载到目标系统/设备中才能正常运行,在适航审定过程中,也只能跟随其依附的系统/设备一起被适航审定当局批准,没有单独针对软件的合格证。

(3)目标性:DO-178B/C对民机机载软件的生命周期过程划分为计划过程、开发过程和综合过程,对每个过程的活动和目标进行了明确定义,这些目标即是民机机载软件合格审定过程的基本要素。

(4)适航性:适航审定当局会分阶段地对民机机载软件生命周期过程所有活动和目标的符合性,以及生命周期数据等,进行DO-178B/C适用目标的符合性检查。

2 民机机载软件非激活代码的定义和分类

机载软件非激活代码是一类可执行目标代码或数据,这类代码被设计出来是不希望被运行或使用的,例如先前开发软件组件的一部分。或者是仅在目标计算机环境中的特定构型中被运行的代码或被使用的数据,例如一种被硬件针脚选择或软件程序选项而被激活的代码。

各种原因会导致民机机载软件存在非激活代码。例如,某些可在地面维护的软件,它们在飞行过程中是处于非激活状态的,只在地面维护时可用;某些可选项软件会基于已批准的构型,在航线运营商的要求下进行配置使用,未被选择的软件即是非激活的;有些软件是为满足多种用户需求的,未被使用的特征也是非激活的。在进行机载软件结构覆盖率分析时,某些代码在测试环境中不能被覆盖到,但这些代码并非不满足需求。例如实现初始化功能的代码或防御性代码,它们只能通过分析或代码检查的方式进行验证。但即便是这样,可能仍有一些代码不能被覆盖到而被归为死代码或非激活代码。

非激活代码的主要特征是在机载软件基于需求的测试进行结构覆盖率分析时,会有某些代码在测试环境中无法被覆盖,这一特征与死代码相似。非激活代码与死代码同样都是在进行结构覆盖率分析是未被覆盖的代码,基于软件验证考虑,机载软件非激活代码可分为两类。

类别一:在任何已取证产品中使用的任何现有构型中都不会被有意运行的非激活代码。例如一个已被批准的机型上搭载的地面维护功能,在任何情况下,飞行过程中都是非激活状态。再比如一些软件中所含的防御性编码,防御性编码是防御式设计的一种形式,用来确保软件在未知的环境中能继续运行。防御性编码的时间往往用于需要高可用性、安全性、保密性的地方。在民用飞机机载软件,尤其是设计保证等级较高的软件,有较广泛的应用。

类别二:仅在目标计算机环境的特定已批准构型中才会被运行的非激活代码。例如全权数字电子控制器FADEC中的软件,是用来指挥发动机正常工作的程序。不同机型搭载的可能是不同公司生产的不同型号的发动机,每款发动机对应FADEC软件中不同的控制代码,这些代码具有互斥性,一个机型只允许一种型号发动机对应的代码,其它型号发动机对应的FADEC软件中的代码均为非激活状态。

机载软件的研制过程是分阶段进行的,分为计划过程、开发过程(需求、设计和编码)、测试过程和总结过程,另外,局方阶段性介入(SOI)符合性检查也需同步进行,且每个软件研制过程产生的数据必须获得局方批准,才能进入并开展下一阶段的工作。为了最终获得适航审定局方的批准,机载软件的研制单位需从软件研制和符合性验证两方面进行考虑,制定策略和措施来满足各项标准和规定文件中与非激活代码相关的要求。

3 机载软件非激活代码的研制考虑

根据民用飞机机载软件的安全性要求,非激活代码除须满足机载软件的一般要求外,还须对系统安全性产生的影响进行重点关注,所以基于软件生命周期过程控制的理念,应在软件生命周期的各个阶段,对软件非激活代码有相关考虑。

3.1 软件计划过程

根据DO-178B/C的相关要求,如果计划使用非激活代码,软件计划阶段需描述非激活机制和非激活代码将如何定义和验证,以满足系统安全性目标。

3.2 软件设计过程

系统/设备的设计可能存在多个构型,一般一个飞机型号只会用到其中一种构型。这就会导致不能被执行的非激活代码的出现,例如未选择的功能或未使用的库函数,又或是未被使用到的数据。非激活代码与死代码不同,针对非激活代码的活动应包含:

(1)应设计和实施一种机制来保证非激活的功能或组件对激活的功能或组件产生负面的不利影响。

(2)应有足够证据表明非激活代码对于它所处的环境是未被计划的。因非正常系统状态导致非激活代码的无意执行,等同于活跃代码的无意识运行。

(3)非激活代码的开发与激活代码的开发一样,都应符合DO-178B/C的目标。

3.3 软件验证过程

在机载软件验证过程中,对非激活代码应做如下考虑。对第一类非激活代码,应进行组合的分析和测试活动,来表明能导致非激活代码被不经意地执行的方法被阻止、隔离或消除。任何对含有第一类非激活代码软件级别的重新指派,都应被系统安全性评估过程证明是有效的,并记录在软件合格审定计划文件中。同样地,任何对第一类非激活代码软件验证过程的缓和活动,都应被软件开发过程评估,并记录在软件合格审定计划文件中。对第二类非激活代码,应建立足够的分析策略,并开发额外的测试用例和测试程序,来满足要求的目标覆盖率。

4 机载软件非激活代码的符合性验证考虑

所有跟随飞机一起取得适航许可证的机载软件都必须通过适航审定局方的审查后才能够获得批准,局方对非激活代码的适航符合性方面有相应的关注点,对于这些关注点,机载软件研制方应制定应对措施和实施计划并尽早获得局方认可。

根据适航审定局方在以往的民用飞机审查项目上提出的符合性要求的内容研究发现,对于非激活代码可能引起的安全性问题,必须覆盖以下几点考虑:

第一类非激活代码应:

a)在飛机飞行期间禁止执行;

b)非激活机制的功能应有相应需求并通过测试证明这种机制起预定作用;

c)非激活机制应支持激活软件的相应的软件等级;

d)推荐此类非激活代码应追溯到对应的需求并进行相应等级的验证以确保其满足设计需要。

第二类非激活代码应:

a)像其它机载软件一样拥有需求;

b)非激活代码应确保满足适用的软件等级的DO-178B/C目标;

c)非激活机制应包含在需求和设计中;

d)非激活机制应满足适用的设计保证等级并通过验证。

5 结论

现代民机机载系统中软件的广泛应用,使得适航审定局方对机载软件的关注度逐渐提高。机载软件的特殊性,也对软件的研制单位提出了更高的要求。

本文从机载软件的研制过程和符合性验证过程两方面,对与软件非激活代码相关的关注点和需开展的工作进行了解析,对各项标准规范中的相关要求做了深度分析和理解,为机载软件的参研单位在处理软件源代码中存在的非激活代码提供了方向性的指导意见。

【参考文献】

[1]DO-178B,Software Consideration in Airborne Systems and Equipment Certification[S].RTCA,1992.

[2]DO-178C,Software Consideration in Airborne Systems and Equipment Certification[S].RTCA,2011.

[3]Micheal Dewalt.The Deactivated/Dead Code Elephant: 010[R].USA:FAA,2011.

[4]沈小明,王云明,陆荣国,等.机载软件研制流程最佳实践[M].上海:上海交通大学出版社,2013.

[5]李欣.民机机载软件的开发流程及其风险分析[C].第七届民用飞机航电国际论坛论文集.北京:科学普及出版社, 2018:116-120.