文/朱文钊
软件故障树方法被称为SFTA (Software Fault Tree Analysis)方法,从硬件的FTA方法引申拓展到软件层面上得到的一种分析方法。建立软件故障树是SFTA方法的关键。软件故障树是从一个基本系统的失效事件着手,对软件进行分析,找出引发故障的基本事件。故障树的根节点是SFTA的顶事件,也是可能产生的故障。根据顶事件继续找到导致其发生的下层的原因,直到不能被继续分解的基础事件为止。
专家系统的基本框架由知识库和推理机组成,见图1。知识库用于存储已有的事件和故障原因。推理机是实施问题求解的核心执行机构,推理机使用知识库中的知识进行推理来解决问题。
航电软件是直升机机载设备中与航电设备有关的软件,我们以操作飞行软件为例。操作飞行软件是驻留在显控处理单元中的实时嵌入式软件,通过总线与任务机中的多功能显示器软件、飞控软件、机电显示控制软件、通信设备及其他航电子系统进行信息交互,完成航电系统的系统管理、分系统自检、系统状态监控、故障管理、航电任务数据加载等功能,并根据不同的任务阶段和子系统的工作状态,完成画面调度并形成相应的画面显示数据。表1描述了操作飞行软件中主要实现的功能。
对操作飞行软件建立软件故障树,目的是将可能影响到操作飞行软件运行的故障原因找出,明确其中各因素的因果逻辑,选取操作飞行软件故障作为故障树的顶事件。由表1能够推断出操作飞行软件的主要故障源,见表2。
我们以操作飞行软件中的与通信相关的通信子系统为例。通信设备一般包含超短波电台、短波电台、罗盘、塔康等设备。操作飞行软件与这些设备通过总线进行信息交互,当存在软件故障时,多导致通信无效,在操作飞行软件上表现为设备下线、显示出现问题或无法完成相应的功能。
在软件运行中由于硬件问题而产生的故障,发生的几率很低,在忽略它的前提下对操作飞行软件的故障源进行分析。一般来说,软件故障树建立在软件控制流程的基础上。我们在分析软件故障的产生原因时,由于不满足规则语法的错误在静态测试阶段已经得到验证,故而在动态测试阶段不做这方面的考虑。操作飞行软件的功能决定了一般有三类导致通信出现问题的地方,分别是画面显示错误、输入输出的接口错误和变量的使用错误。
从图2、图3中的故障树可以看出,操作飞行软件出现故障的原因是各个子系统出现了故障,通过分析底层的事件对于顶层的故障的影响程度的高低,我们可以找到对故障产生影响最大,最有效的底部基本事件。通过建立的操作飞行软件故障树,可以判断出哪些部件是影响软件运行的关键单元,在进行测试时需要对其重点关注,能够有效的提高测试质量。
图1:专家系统构成
图2:操作飞行软件故障树
图3:通信子系统故障
根据得到的操作飞行软件故障树,我们将故障树中的各结点输入到专家系统的知识库中,这样就实现了专家系统的知识积累。推理机使用专家系统常用的“IF(条件),THEN(某种判断),ELSE(某种判断)”进行判断[4]。
传统的专家系统使用产生式表示法、框架表示法和语义网络表示法,这里我们采用的是产生式表示法和框架表示法。将通信子系统故障作为顶事件,分成几大模块,然后逐步对每个模块进行细化和分解,形成相应的故障树图,进而获得知识积累。建立一个故障数据库,其中每一条记录对应一个故障的原因、现象和解决方案。这些记录可以组成一个表格。如表3所示。
例如在测试中发现当在超台输入频率为29.9995~29.9999Mhz时,操作飞行软件显示的是30Mhz。查出故障原因是画面显示函数未对频率做范围检查,导致显示时进位显示,超出正常的频率范围。在排故时,首先查看操作飞行软件和通信设备的接口输入输出,接着查看画面显示函数,然后打印变量值,从而定位故障源。将软件问题和相应的排故步骤以及故障源建立一个表格。见表4。
表1:操作飞行软件主要功能
表2:操作飞行软件主要故障源
表3:通信子系统故障树示意
表4:故障诊断追踪表
Fault1:超台输入频率后显示错误;
Step1:检查操作飞行软件和通信设备的输入输出接口;
Step2:检查画面显示;
Step3:打印变量值;
Cause1:画面显示函数未对频率做范围检查,导致显示时进位显示。
上面模拟了软件开发人员在定位故障时的思维方式。
将建立的故障树中的故障基本事件、故障诊断追踪表中的故障现象及其相应的诊断步骤和故障源导入专家系统中,当在其他型号的航电软件测试时,将测试过程中发现的故障表征输入专家系统进行查询,如之前的知识库中存在类似现象的故障,则能够迅速的定位故障原因,有效的提升了测试效率。
用软件故障树分析法对航电操作飞行软件的故障进行分析,通过软件故障树将影响故障的全部可能因素及其相互之间的因果逻辑关系呈现出来,在此基础上建立相应故障的故障原因追踪表,将其输入专家系统中,在其他型号的航电操作飞行软件测试中使用,能够帮助迅速定位故障原因,提升软件测试效率。