周薇+刘庆生
摘 要: 武器装备软件在使用过程中发生失效会导致任务的失败,从而影响软件可靠性。软件故障树分析作为软件可靠性分析的主要方法,在软件的优化和改进中起着重要作用。在此首先介绍了软件故障树分析法,结合嵌入式火控系统软件特点进行软件故障树分析,构造了软件故障树,通过求解最小割集进行定性分析和定量分析。实践证明软件故障树分析有助于提高软件在系统测试或投入使用后的可靠性,提升武器装备的战斗力。
关键字: 软件故障树分析; 软件可靠性; 火控系统; 可靠性分析
中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2015)08?0105?04
Research on software fault tree analysis of embedded fire control system
ZHOU Wei, LIU Qing?sheng
(Jiangsu Automation Research Institute, Lianyungang 222061, China)
Abstract:The failure of weapon equipment software can lead to unsuccessful tasks during its use, and effect software reliability. Software fault tree analysis as the primary method of software reliability analysis plays an important role in software optimization and improvement. The software fault tree analysis method is introduced in this paper. The software fault tree analysis is performed in combination with the characteristics of embedded fire control system. The qualitative and quantitative analyses are carried out by solving the minimal cut sets. Practice proves that the software fault tree analysis is conducive to improvement of software reliability in system testing or application, and improvement of the combat ability of weapon equipments.
Keywords: software fault tree analysis; software reliability; fire control system; reliability analysis
0 引 言
当今火控系统作为复杂的嵌入式装备系统,对软件提出更高的质量和可靠性要求。相比硬件的高可靠性,软件的质量和可靠性却不如人意,软件失效往往比硬件失效高一个数量级,因此应该从软件需求阶段开始,在软件开发周期的全过程开展软件可靠性分析。
软件的可靠性是指在规定的条件下和规定的时间内软件不引起系统失效的概率[1]。软件发生的失效次数越多,发生失效的时间间隔越短,软件越不可靠,软件的失效往往经历了开发过程中的开发人员产生的错误到软件产品中存在缺陷进而导致软件运行时的失效,因此如何避免和预防缺陷是提高软件可靠性的根本途径。
软件可靠性分析作为一种缺陷检测排除技术,主要是在软件设计过程中对可能发生的失效进行分析,采取必要的措施避免缺陷引入软件,软件可靠性分析主要包括软件失效模式和影响分析(SFMEA)和软件故障树分析(Software Fault Tree Analysis,SFTA),由于软件故障树分析方法主要用于分析大型复杂系统的可靠性和安全性,被公认为目前有效的软件可靠性分析方法。
1 软件故障树分析
软件故障树分析法就是在软件设计过程中,对系统可能产生的故障进行分析,按自顶向下的方法画出逻辑框图(故障树),确定故障原因的各种组合方式或发生概率。软件故障树分析的结果可以用来指导软件的设计,确定软件关键故障发生的运行条件,提高软件可靠性和安全性的一种设计分析方法[2?4]。
在进行软件故障树分析时,首先要确定顶事件(不希望发生的故障事件),顶事件可能是来源于系统设计、使用、维护相关的危险因素,也可能来源于软件失效模式影响分析或是来源于软件需求规格说明中提出的要求。然后分析顶事件产生的原因,使用逻辑门与顶事件连接,逐步深入,直到追溯到导致顶事件发生的全部原因(基本事件)为止。故障树分析不仅能分析单一故障引起的系统失效,还可以表达各种失效原因之间的逻辑关系,可以分析多个软件部件或功能模块的失效对系统造成的影响。
软件故障树分析过程如下:
(1) 对软件进行风险分析,确定软件中的关键故障事件;
(2) 对每一个关键故障事件,构造故障树,并且规范故障树;
(3) 对故障树进行分解,确定割集和最小割集;
(4) 对故障树进行定性分析或定量计算,确定关键模块,确定关键故障的发生概率;
(5) 根据故障发生的概率结果指导软件设计及测试。
2 嵌入式火控软件故障树分析
嵌入式火控系统软件的功能状态检测以及故障诊断在装备综合保障中起着重要作用,软件故障树分析法用于功能结构复杂的嵌入式火控系统安全性、可靠性等风险分析和故障诊断。通过对造成软件故障的各种因素进行分析,建立故障树模型,确定故障发生的可能原因和发生概率。
由于火控系统包含的子系统和软件模块很多,其故障可能来源于子系统设备硬件故障,也可能来自软件本身的设计缺陷,或运行环境的变化甚至是操作人员的误操作等[5?6]。对火控系统进行故障分析,可以发现潜在的故障因素、对软件今后的研制和试验提供信息基础。
下面以某火控系统软件为例进行故障树分析。
2.1 分析系统
根据火控软件的需求规格说明、设计说明等文档,了解了火控系统任务使命、主要功能和软件结构组成,弄清了火控系统软件及其子模块故障逻辑关系。
火控系统由跟踪器、火控设备、接口设备组成,火控设备接收外围的指控系统的目标指示数据和命令,跟踪器捕获跟踪目标,接收跟踪数据和导航、气象等设备相关数据信息进行求取目标运动参数,解算射击诸元,通过接口设备控制武器指向目标未来点,等到目标进入武器的射击区域内,控制武器发射。
火控系统按功能模块可以划分为:
(1) 目标指示数据收发处理功能(接收指控系统的目标指示数据,向跟踪器发送目标指示);
(2) 操控与显示功能(能进行人机交互操作,可以进行数据装订,系统状态及表页图形综合显示);
(3) 火控解算功能(根据目标跟踪数据,滤波求取目标运动参数和解算射击诸元);
(4) 战术软件功能(具有火力通道组织和射击指挥辅助决策功能);
(5) 跟踪器武器控制功能(跟踪器控制、控制武器发射等功能);
(6) 系统故障检测和显示功能(对设备模块单元进行故障检测及结果显示);
(7) 数据记录和复现功能(可以记录各工作状态下的数据和命令信息的,可在记录结束后回放相关的数据);
(8) 设备间接口通信功能(实现系统内部和外部设备之间的通信功能);
(9) 模拟训练功能(模拟训练状态下自定义的航路进行解算,对解题精度进行统计功能)。
2.2 确定顶事件构造软件故障树
采用分层策略,选取独立的功能模块事件建立故障树分析,首先确定故障分析树的顶事件作为故障树的“根”节点,写在第一行,然后在其下面并列地写出顶事件发生的直接原因,放在第二行,并用逻辑门与顶事件相连,作为故障树的“节”。逐步深入直到追溯到导致顶事件发生的全部原因(底事件)为止。
软件故障树分析不适宜在编码层次上对整个火控系统进行分析,这里仅对火控系统的火控解算功能故障进行模块级的分析。对嵌入式火控系统软件故障分析时,不考虑硬件故障、支撑软件故障、系统软件故障,而是主要考虑应用软件故障。
嵌入式火控软件大多为实时控制软件,往往要求强实时性,它的执行结果的正确性不仅与程序逻辑计算的输出有关,而且与程序执行的先后次序相关,火控解算软件必须对跟踪数据实时解算以控制武器实时指向目标未来点,如果解算滞后一个周期,就会使武器击不中目标。将火控解算结果错误作为顶事件,各子模块故障作为中间事件以“或”连接,经过自顶向下逐级分解最终构造出完整的故障树[7?8]。
图1是火控解算模块故障树,相关的顶事件、中间事件、底事件具体见表1。
2.3 求解最小割集
构造完火控解算模块的故障树后,开始分析故障树的割集和最小割集[9]。识别最小割集是软件故障树定性分析的基础,割集是引起顶事件发生的底事件的集合。最小割集就是不包含任何冗余因素的割集。最小割集常采用下行法分析,当遇到“与门”增加割集的阶数( 割集所含底事件数目),将每个输入事件列入同一行;遇到“或门”增加割集的个数,将每个事件依次列入不同的行。表2为最小割集求解过程表。
根据上述列出的表格最后一列的每一行都是故障树的割集,再通过割集之间的比较,进行合并消元,最终可得最小割集为{X1}、{X2}、{X3}、{X8,X4}、{X5}、{X6}、{X7}、{X9,X10}。
2.4 进行软件故障树定性分析
最小割集求解完毕后,对最小割集及底事件的重要性进行排序比较,并将结果应用于指导故障诊断,或提示改进系统的方向。根据最小割集所包含的底事件数目(阶数)排序,最小割集的定性比较一般遵循的原则如下:
(1) 故障树分支越少(最小割集的个数越少),系统发生故障可能性越小。
(2) 低阶最小割集对系统的影响大,更容易使得系统发生故障;
(3) 低阶最小割集中的底事件比高阶最小割集中的底事件重要;
表2 最小割集求解过程
(4) 不同的最小割集中重复出现次数越多的底事件越重要。
综合上述原则上述例子中{X1}、{X2}、{X3}、{X5}、{X6}、{X7}是一阶割集且是最重要的最小割集,因此报文解析错误、坐标变换错误、求未来点错误、射表错误、校正量修正符号错误、校正量单位错误是最重要的底事件。
2.5 进行软件故障树定量分析
故障树的定量分析是当已知每个底事件的发生概率,可以根据软件故障树的逻辑关系,计算或估量顶事件的发生概率。故障树顶事件发生的概率
由上述公式可知,首先一次取出单个割集的概率和,再减去一次取出两个割集的交集概率和,再加上一次取出三个割集的交集概率和,可得到软件系统实际的失效概率[10]。当计算出每一连序加和并加入正运算的和时,其结果交替地超过(当加上该项时)或低于(当减去该项时)的理论概率值。因此,仅使用上式中的前两项就可确定系统失效概率的范围。
假设上述的火控解算模块故障树每个底事件发生概率为:
2.6 结 论
通过以上针对嵌入式火控系统特点进行软件故障树分析可知软件故障树定量分析需要知道每个底事件发生的概率,然而在实际工程应用中往往难以获得,故障树分析的意义在于根据分析结果找到关键故障发生的原因,因此其重点在于定性分析。通过在典型工程项目的测试实践,可以针对软件故障树分析的最小割集,按照底事件的重要性优先设计测试用例,提高了软件测试的效率,保证了软件的可靠性。
3 结 语
本文利用软件故障树分析法对嵌入式火控系统软件进行故障分析,对引起火控解算故障的可能因素和相互的逻辑关系呈现出来,建立了故障树模型,并对故障树进行了定性和定量分析,为故障预测或软件容错设计等减少故障危害提供了信息基础。
参考文献
[1] 陆民燕.软件可靠性工程[M].北京:国防工业出版社,2011.
[2] 孙志安,裴晓黎,宋昕,等.软件可靠性工程[M].北京:北京航空航天大学出版社,2009.
[3] 周涛.航天型号软件测试[M].北京:宇航出版社,1999.
[4] 徐仁佐.软件可靠性工程[M].北京:清华大学出版社,2007.
[5] 苏健,陈玉强,陈军伟,等.基于故障树分析的火控系统故障诊断专家系统设计[J].计算机测量与控制,2013,21(11):2008?2010.
[6] 范东丽.嵌入式软件测试技术的研究[D].哈尔滨:哈尔滨工程大学,2006.
[7] 胡涛.软件故障树分析技术与应用研究[D].北京:北京工业大学,2009.
[8] 管莹莹.潘冠华.舰载指控系统的软件故障树分析[J].指挥控制与仿真,2008,30(2):112?114.
[9] 朱敏.嵌入式软件故障树分析及其基于OpenFTA的实现[J].计算机应用与软件,2012,29(9):258?260.
[10] 朱云鹏.基于软件故障树分析法的软件测试技术研究[J].计算机工程与设计,2008,29(13):3387?3389.