航天器控制软件可靠性工程方法研究*
2016-04-07王振华蔡雨辰陈朝晖
奚 坤,王振华,蔡雨辰,陈朝晖
(北京控制工程研究所,北京100090)
航天器控制软件可靠性工程方法研究*
奚 坤,王振华,蔡雨辰,陈朝晖
(北京控制工程研究所,北京100090)
当前航天器控制软件的复杂度越来越高,软件的规模十分庞大,对软件可靠性安全性要求极高,因此对航天器控制软件的可靠性设计和度量具有重要意义.介绍和分析适用于航天器控制软件的可靠性设计方法,并结合某型号给出实际的软件设计以及可靠性度量的具体实例.
航天器控制软件;导航制导控制;软件可靠性设计;可靠性度量
0 引言
当前航天器控制软件的复杂度越来越高,软件的规模十分庞大,在不同的控制模式下,运行不同的飞行模式,采用不同的控制律.软件的处理复杂,运行环境苛刻.其可靠性、安全性对于整个系统来说极为重要,这些对测试充分性提出了严峻的挑战.
因此,我们应该重视航天型号软件可靠性需求分析、设计和验证工作.如在软件设计阶段,如何采取措施来实现软件的可靠性设计;在软件测试阶段,如何采取措施来验证软件的可靠性要求是否得到了实现,如何对软件进行可靠性度量等.
1 航天器控制软件可靠性工程方法
1.1 软件可靠性需求分析
航天器控制软件可靠性需求的开发和分析与系统可靠性分析密切相关,在完成系统分析之后可开始进行.软件可靠性分析的任务和内容如下:
(1)对软件可靠性需求进行关键性分析,识别软件的安全关键需求.对安全关键功能的时间、吞吐量和空间进行分析与评估.
(2)确认软件是否对于可能的失效具有足够的处理能力,如果发生这些失效,需确保软件具有使系统维持在一个安全可靠状态的能力.
(3)进行初步的软件故障树分析(software fault tree analysis,SFTA).SFTA是用来寻找危险原因的自上而下的分析方法,作为“树”的顶端的危险可从初步危险分析(preliminary hazard analysis,PHA)或软件子系统危险分析以及需求关键性分析等来源获取,分析结果是一系列可能引起危险的原因或者是这些原因的组合.SFTA的分析结果可用来确定在哪些地方应该设计故障容限或失效安全措施,对于庞大的系统可用于识别软件的安全关键部分.
(4)进行初步的软件失效模式与影响分析(software failure mode and effect analysis,SFMEA).SFMEA是一种自底向上的分析方法,分析软件的每个组成部件如何失效,失效如何通过系统传播,以及失效是否会导致危险.由于在软件需求分析阶段还没有比较详细的设计,所以只能进行初步的基于软件功能的分析.SFMEA的分析结果可用来指导设计消除或减轻失效的措施,如果发现灾难性的危险,则可能导致修改设计.
(5)分析方法和分析结果应文档化.针对分析过程中识别出的可靠性需求项应建立追踪矩阵表格,在后续的设计和测试阶段进行双向追踪.
1.2 航天器控制软件可靠性设计
航天器控制软件都为实时嵌入式软件,对于软件的可靠性设计通常可采取避错设计、查错设计、改错设计、容错设计以及软件重用等设计方式.
1.2.1 避错设计
避错设计是使软件产品在设计过程中,不发生错误或少发生错误的一种设计方法.体现了预防为主的思想,是软件可靠性设计的首要方法.
设计错误通常发生在各个变换的过程中,避错设计的关键在于控制这些变换过程.航天器控制软件基本上都是变换型结构,所以着重对控制变换进行避错设计.主要有以下四种避错方法:
(1)控制和减少程序复杂性,使软件中的各个模块高内聚,低耦合.
(2)提高变换精确性,方法包括使判断条件简单、逻辑清晰、层次分明等.
(3)迅速查找和改正变换错误,尽量减小改正变换错误的影响域.
(4)航天器控制软件常用的避错设计如:树形模式管理设计、默认分支设计、标识量增大码距、串口通讯前空读设计等.
1.2.2 查错设计
查错设计是在设计中赋予程序某些特殊的功能,使程序在运行中自动查找存在错误的一种设计方法.可分为被动式检测和主动式检测两种类型.
被动式错误检测[1]适用于软件的各种结构层次,用来检测从一个单元、模块向另一个单元、模块传递的错误征兆和存在于单元、模块内部的错误,比如数据的剔野和限幅处理,数据通讯时设置校验码和累加和等.
主动式错误检测则能够主动地对系统进行搜索,并指示搜索到的错误.主动式错误检测可以作为周期性的任务来安排,例如规定每小时检查一次,也可以当作一个低优先级的任务来执行,在系统处于等待状态时主动进行检查.如浮点数据异常周期性检查、内存周期自检等方法.
1.2.3 改错设计
改错设计是在设计中赋予程序自我改正错误、减少错误危害程度的能力的一种设计方法.
改正错误的前提是必须已经准确地找出软件错误的起因和部位,程序又有能力修改、剔除错误语句.对于航天嵌入式软件来说,它真正的工作状态是运行于太空中,维护人员无法像普通的商业软件一样直接修改或更新软件.因此.改错设计对航天嵌入式软件的可靠性来说具有极为重要的作用.当软件缺陷引发的问题超越了软件自身能够解决的范围,甚至影响整个航天器的安全性时,唯有依靠在轨参数注入,在轨程序注入等改错手段来进行补救.
1.2.4 容错设计
容错设计是在设计中赋予程序某些特殊的功能,使程序在错误已被触发的情况下,仍然能正常运行的一种设计方法.软件容错设计的主要方法有:N版本法、恢复块法、信息冗余.
航天器控制软件常用的包括:数据防抖动处理、重要数据恢复处理、数据三取二容错处理等.
1.2.5 重用设计
最大限度地重用现有的软件构件,不仅能缩短开发周期,提高开发效率,也能提高软件的可维护性和可靠性.现有的成熟软件,已经过严格的运行检测,大量的错误已经在开发、运行和维护过程中排除是比较可靠的.在项目规划开始阶段就要把软件重用列入工作中不可缺少的一部分,作为提高软件可靠性的一种必要手段.
航天器控制软件重用主要包括以下两种方式:
开发过程重用:包括软件研制规范、方法、工具和标准等;
软件构件重用:目前已在航天型号软件开发中得到应用的包括规范化算法,基础公共运算库等多种构件开发方式.
1.3 航天器控制软件可靠性度量
航天控制器软件可靠性度量的思路是在国内外现有成熟技术的基础上,通过借鉴和运用可靠性标准、可靠性建模方法、数据分析方法;以及对可靠性测试数据分析方法的研究、设计开发和应用,针对性地提升可靠性测试能力,为提升航天器控制软件可靠性而服务.
软件可靠性模型是软件可靠性度量的基础,对可靠性测试具有重要的指导意义.软件可靠性发展至今,模型种类有几十种[2],其中常用的有:指数型模型(如J-M模型)、超指数模型、非齐次泊松过程模型、Musa基本执行时间、Littlewood-Verrall模型、Weibull模型、S-可靠性增长模型等.
具体的模型选择应根据航天器控制软件的代码规模、复杂性、可靠性等特征要求进行选取.选取的原则需满足适用性、简洁性,且在类似系统中有成功经验.
2 可靠性工程方法具体应用
2.1 可靠性分析的实际应用
以某航天器控制软件的可靠性需求分析为例,通过对该型号可靠性需求进行关键性分析,识别出其“轨道控制”为其可靠性关键项目之一.
因此在SFTA分析过程中,选取了“轨道控制任务失败”这一危险事件作为故障树的顶事件,逐层分析导致该顶事件的原因,建立故障树[3]如图1所示.
图1 软件故障树图Fig.1 Software fault tree
通过上述SFTA分析,该型号对于可能导致“轨道控制任务失败”这一危险事件的各种原因,软件均采取了可靠性的设计措施,从而能够有效保证航天控制任务的完成.
在SFMTA分析过程中,也针对“轨控逻辑功能”进行了失效模式影响分析,定义严酷度、发生度和检测度等级[4]及取值,分析失效模式、失效原因、失效影响,计算RPN(风险优先数),确定RPN临界值,给出建议措施的过程,最后形成分析报告.分析示例如表1所示.
表1 失效模式影响分析Tab.1 Failure modes and effects analysis
2.2 可靠性设计的实际应用
该航天器控制软件采用三机热备份容错结构,为保证容错系统的可靠性和完备性,软件从容错策略的正确性合理性、三机交换数据可靠性、交换数据时序、三机运行同步及差异性和容限值选取的合理性等方面考虑进行设计,相比传统的N版本方法,不仅降低了软硬件的开发成本,而且还缩短了软件的研制周期.
通过对三机容差数据实行分级、分类制度,根据系统实际运行过程中可能出现的各种情况,给出不同的容错策略,予以区别对待.
三机中每两机分别进行比对.如果数据交换失败,即本机未接收到或未接收全另外两机中任一机发送的数据,则此两机就不再进行按位数据比对,而直接置此两机数据比对不一致/超差标志.如果数据交换成功,即本机接收完另外两机中任一机发送的全部数据,则此两机就进行按位数据比对.
根据容错过程中可能出现的各种实际情况,对带容差数据和无容差数据分别设计如表2所示的不同的容错策略,同时给出相应的比对标志.
表2 数据容错策略Tab.2 Data fault tolerance strategy
2.3 可靠性度量的实际应用
前面已经提到软件可靠性模型目前种类繁多[5],已经见文的模型已有几十种,为了探索一种适合于航天软件的可靠性模型,本文从基本模型JM模型切入,通过观察基本模型的适用度,确定今后软件可靠性的研究方向.为此,在对该型号航天器控制软件的测试过程进行记录后,根据测试记录数据,使用此模型进行分析,将测试结果与实际结果进行比较,找出模型与实际的差异性.
J-M可靠性模型[6]有以下假设:
(1)在测试阶段,程序中所有的错误具有相等的概率被检测到;
(2)当前软件的错误发生率与当前软件中所存在的错误数成正比;
(3)在两个检测到的错误之间,错误检测率保持不变;
(4)在每次发生一次错误后,都会对此错误进行修正,并不引入新的错误;
(5)每个检测到的错误都是相对独立的;
(6)软件的操作和软件可靠性预测都是在类似的环境下进行的.
为了实现此模型,数据要求如下:
检测到错误的时间序列为:t1,t2,t3,…,tn,t0=0;
检测到错误的时间间隔为:x1,x2,x3,…,xn,xi=ti-ti-1;
xi服从独立的指数分布,其分布函数为:
x1,x2,x3,…,xn的联合分布密度函数为:
N的最大似然估计比较难求,首先得到N的最大似然方程为
然后使用数值计算方法得出N的近似值[7],此处不再细述.
当前软件的可靠性函数为
本文对某航天控制应用软件的初样版本进行了记录,得到记录结果如表3所示.
表3 某航天控制应用软件错误记录Tab.3 Software error record
根据表3中记录的数据,开发可靠性评估与预测软件,得到图2~4的分析结果.
图2 故障发生概率Fig.2 Fault occurrence probability
图2表示当前软件的随时间向前推移的故障发生概率,横轴表示软件运行天数,纵轴表示软件故障发生概率,可以看出在大约40天时,软件的故障发生概率已经达到99%左右.
图3为预测的当前软件错误数的大体趋势从中可以看出,其初期预测偏差较大,而后逐渐趋于平稳.
图3 软件中错误数总趋势Fig.3 The general trend of errors in the software
图4为当前软件的故障发生率,横轴表示软件的错误检测数,纵轴表示软件的错误检测率,其随着时间推移,虽然中间稍有波动,但是下降趋势明显.从该图的趋势可以看出错误检测率还有下降空间,尚需进一步测试.
图4 软件错误检测率趋势Fig.4 The trend of software error detection rate
综上所述,最终得到目前软件的错误检测率为0.097 705 4个/天,预测错误数约为40个,平均检测到一次错误的时间间隔约为10天,软件当前状态尚不理想,还需进行进一步测试,直到错误检测率保持在0.000 1以下,效果为佳.
3 结论
本文针对航天器控制软件嵌入式结构、实时性要求高、可靠性要求高、运行环境苛刻、规模大、资源受限和结构复杂等特点,开展了针对航天嵌入式软件可靠性需求方面的分析与研究工作,对航天软件开发中常用的可靠性工程方法进行了分析.最后以某航天嵌入式软件的可靠性开发过程为主线,详细描述了实际工程中可靠性需求分析,可靠性设计和可靠性度量技术的实施过程,综合运用可靠性工程方法完成实际航天器控制软件的可靠性工作.
[1]LYU M R.主编,刘喜成,钟婉懿译.软件可靠性工程手册[M].北京:电子工业出版社,1997.
[2]SINNAMON R M,ANDREWS J D.Improved accuracy in quantitative fault tree analysis[J].Quality and Reliability Engineering International,1997,13(2):28-29.
[3]赵宇,杨军,马小兵.可靠性数据分析教程[M].北京:北京航空航天大学出版社,2009.
[4]姜兴杰,杨峰辉.软件可靠性分析与设计[J].现代电子技术,2011,34(7):135-141.JIANG X J,YANG F H.Analysis and design of the software reliability[J].Modern Electronics Technique,2011,34(7):135-141.
[5]龚庆祥.型号可靠性工程手册[M].北京:国防工业出版社,2007.
[6]蔡开元.软件可靠性工程基础[M].北京:清华大学出版社,1995.
[7]张虹,姜明明,黄百乔.软件可靠性分析方法研究与应用[J].测控技术,2011,30(5):101-105.
ZHANG H,JIANG M M,HUANG B J.Study and application on software reliability analysis[J].Measurement&Control Technology,2011,30(5):101-105.
Reliability Engineering Method on Spacecraft Control Software
XI Kun,WANG Zhenhua,CAI Yuchen,CHEN Zhaohui
(Beijing Institute of Control Engineering,Beijing 100090,China)
The spacecraft control software is becoming more complex and huge now,which requires higher software reliability and security and leads to higher demands on both reliability design and measure of spacecraft control software.In this paper,a reliability design method,which is suitable for space application,is given and analyzed.Based on a certain aerospace combined with concrete examples of the reliability measure,the software design is proposed.
spacecraft control software;guidance-navigation control;software reliability design;reliability measure
TP311
A
1674-1579(2016)04-0048-05
10.3969/j.issn.1674-1579.2016.04.009
奚 坤(1983—),工程师,研究方向为航天嵌入式软件技术;王振华(1981—),高级工程师,研究方向为航天嵌入式软件技术;蔡雨辰(1985—),工程师,研究方向为航天嵌入式软件技术;陈朝晖(1969—),研究员,研究方向为航天嵌入式软件技术.
*国家高技术研究发展计划(863)资助项目(2015AA7046306).
2016-03-11