嵌入式软件故障树分析及其基于OpenFTA的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式软件故障树分析及其基于OpenFTA的实现
朱敏
【摘要】In safely-critical systems such us aerospace, high-speed railway, nuclear power plant and so on, more and more functions are implemented by the embedded software. The safety of embedded software system attracts increasing attentions and becomes a hot topic recently. Fault tree analysis is a popular method for safety analysis and is widely used in system and hardware fields. However, its study and application in software engineering is yet to be developed. In this paper, we introduce the fault tree analysis on embedded software and provide a demonstration via a case on a typical execution of the fault tree analysis on embedded system. In the end of the paper, we illustrate how to perform the fault tree analysis using open source software OpenFTA.%在安全关键系统中,例如航空航天、高速铁路、核电站等,越来越多的功能由嵌入式软件实现,嵌入式软件的安全性备受重视,也是近期的热点话题.故障树分析是安全性分析的常用技术,在系统和硬件领域已十分普及,而在软件领域还有待研究和应用.介绍嵌入式软件故障树分析技术,并通过案例演示了如何开展嵌入式软件故障树分析,最后介绍如何应用开源故障树分析软件OpenFTA实施具体的故障树分析.
【期刊名称】《计算机应用与软件》
【年(卷),期】2012(029)009
【总页数】4页(P258-260,280)
【关键词】嵌入式软件;故障树分析;软件安全性
【作者】朱敏
【作者单位】中航工业无线电电子研究所上海200233
【正文语种】中文
【中图分类】TP319
0 引言
英语中Safety和Security两个词,都翻译为安全性,两者都是计算机软件领域的研究热点,Security主要指与信息有关的安全,而Safety主要指与生命财产有关的安全。
在日常生活中经常听到的安全系统,多数是Security系统,比如加密系统、数字认证、防火墙、入侵检测等,而在工程或国防领域,特别是与嵌入式系统相关的,比如运载火箭控制系统、飞机的飞行控制系统、铁路的超速防护系统、核电厂的反应堆保护系统(RPS)等,大家关注更多的是Safety。
图1是对Security 和Safety区别的直观解释。
Security是保护系统以抵御外部的攻击;Safety则是保证系统的失效不会危害到人类的生命和财产。
本文关注的是Safety,下文中所述的安全性指的都是Safety。
图1 Safety和Security的区别
软件安全性指的是,使软件所控制的系统始终处于不危及人的生命财产和生态环境的安全状态的性质。
随着计算机应用范围迅速地扩大,安全关键系统中越来越多的功能由嵌入式软件实现。
计算机及其软件虽然提高了系统的功能、可配置性、灵活性等,但也日益直接地关系到人们的生命、财产及生存环境的安危。
软件安全性就是随着计算机在安全关键领域的应用而对软件提出的一个新的要求。
近期软件安全
性备受关注,据悉“7·23动车追尾事故”便是由软件安全性问题引起的。
FTA(Fault Tree Analysis),故障树分析,是一种自顶向下的安全性分析方法,即
从系统不希望发生的事件(顶事件),特别是对人员和设备的安全性产生重大影响的顶事件开始,向下逐步追查导致顶事件发生的原因,直至基本事件(底事件)。
既可以对硬件也可以对软件进行FTA,其中硬件FTA应用已经比较普及,软件FTA的研究和应用还有待发展,近期的热点研究方向主要有基于SFTA技术的数据库系统软件故障分析[1]、软件FMEA和设计模式的结合[2]等。
软件FTA对软件安全性有重要的意义,其分析结果可以用来指导软件安全性设计,确定软件测试的重点和内容,使软件安全性得到更充分的保证。
软件FTA是一种多因素的分析方法,而且利用了图形化的方式,可以直观地表达各种失效原因的逻辑关系。
在FTA的具体实施方面,OpenFTA是一款开源的FTA绘图和分析软件,可以进
行故障树的定性、定量分析、蒙特卡罗仿真,并可以自动输出分析文档[3]。
本文便使用OpenFTA作为开展软件FTA的平台。
在下面的论述中,首先介绍了软件故障树的定量和定性分析方法,然后以一个经典的嵌入式软件为分析对象,演示了如何使用OpenFTA进行FTA的画图和分析工作。
1 软件故障树分析
软件FTA的分析方法分为定性分析和定量分析[4],下面将分别详述。
1.1 定性分析
软件FTA定性分析的目的是找出关键性的导致顶事件发生的原因,指导软件安全
性设计以及软件测试。
软件FTA定性分析的常用方法是识别所有最小割集,并对
最小割集进行定性比较,对最小割集及底事件的重要性进行排序。
割集:故障树中的一些底事件的集合。
当这些底事件同时发生时,顶事件必然发生。
最小割集:若将割集中所含的底事件任意去掉一个就不再成为割集了,这样的割集
就是最小割集。
最小割集的求解方法通常有上行法和下行法两种:
①上行法的分析规则:将“或门”输出事件用输入事件的并代替,将“与门”输出事件用输入事件的交代替。
然后再利用集合运算法则进行简化。
②下行法的分析规则:遇到“与门”增加割集的阶数(割集所含底事件数目),遇到“或门”增加割集的个数。
下面举例说明下行法的具体步骤。
以图2所示的故障树为例,对照表1。
图2 故障树示例
表1 求最小割集的步骤
从顶事件向下分析,遇到的第一个是或门,因此增加割集的个数,得到两个割集{G1}、{G2},再向下分析遇到的仍是或门,因而得到由{G1}扩展出的{G3}和{X3}。
进一步分析{G3}遇到与门。
增加割集的阶数,得到由{G3}转化的割集{X1,X2},以此类推,得到的割集有{X1,X2}、{X3}、{X4,X5,X3}和{X4,X5,X6},根据最小割集的定义可知最小割集为{X1,X2}、{X3}及{X4,X5,X6}。
对最小割集的定性比较:应根据最小割集所包含的底事件数目(阶数)排序,假设各底事件发生的概率比较小,在差别不大的条件下,应遵循以下原则:
①阶数越小的最小割集越重要。
②低阶最小割集所包含的底事件比高阶最小割集中的底事件重要。
③在不同最小割集中重复出现次数越多的底事件越重要。
1.2 定量分析
故障树定量分析的任务就是计算或估计系统顶事件发生的概率及系统的一些安全性指标。
下面介绍利用在定量分析中得到的最小割集来求解顶事件概率的方法。
首先假设底事件的概率是已知的[5]。
在多数情况下,故障树的底事件有可能在几个最小割集中重复出现,也就是说最小割集间是相交的,顶事件发生的概率就必须用相容事件的概率公式:
其中,Ki、Kj、Kk分别是第i、j、k个最小割集;Nk为最小割集数。
由上式可以看出,计算顶事件发生概率的精确解共有2Nk-1项,当最小割集数
Nk足够大时,会产生“组合爆炸”问题。
即便大型计算机也难以胜任,但在实际工程中,这种精确的计算是不必要的,因为一方面统计得到的基本数据往往是不精确的,所以用底事件的数据计算顶事件发生的概率值时,精确计算没有实际意义;
另外产品的不可靠度往往是很小的,故障树的顶事件概率按照上式计算时,收敛得非常快,起作用的是首项或者首项和第二项,后面一些项的数值极小。
所以在实际计算时往往取首项来近似:
或者取首项与第二项之半的差做近似:
2 分析实例
这部分通过实例介绍了如何具体开展嵌入式软件FTA工作,首先介绍被分析系统,然后给出了被分析嵌入式软件的故障树,最后结合OpenFTA给出了实际操作过程。
2.1 研究对象介绍
本文选用的研究对象是文献[6]介绍的系统。
该文介绍了一个嵌入式系统的软件FMEA分析。
它本身并没有多少技术和理论上的创新,但是因为其介绍的实际案
例非常典型,介绍的方法可操作性强而备受推崇,至今已被SCI或EI检索的论文
引用了七十余次。
所述系统是一个典型的反馈控制系统,如图3所示。
图3 系统功能示意图
控制任务,即系统的设计要求是通过控制风扇的转速来调节进入管子中的气流量,控制小球悬浮在一个预先设定的高度。
小球离圆管的顶端越近,红外测距传感器接收到的光强度就越大,输出电压也就越大,该电压经A/D转换成一个字节值0-FF。
控制器通过这个字节值,计算需要向风扇输出何种脉宽的PWM信号。
所谓PWM(Pulse-Width Modulation)信号,即脉宽调制信号,是常用的调节电动机
转速的方式,该信号是方波,周期固定,但是高电平的宽度可以调节,当高电平的宽度大时,转速自然就快,反之则慢。
其中高电平占所占的时间称为占空因数(duty cycle)。
另外,图3中的输入输出控制回路起限制输入输出电压幅度的作用,用来保护系统。
系统的控制机构主要由三个部分组成。
其一,微控制器,一般是由嵌入式计算机系统组成,本文的被分析对象系统的控制器即是由摩托罗拉68000芯片构成的嵌入
式计算机,嵌入式软件便运行在其上;其二是控制器的输入,控制器的输入一般是
传感器发出的信号,本实例中是红外传感器,用来检测被控对象,即圆管中的小球距圆管顶端的距离;其三是执行机构,即本例中的风扇,通过吹风将小球保持在圆
管中的一定高度。
该系统的软件由汇编语言编写,基于前后台的设计,即通过计时器中断来完成前台任务,主程序为一个无限循环来完成后台任务。
图4为主程序的流程图,主程序
首先进行初始化,然后便开始无限循环,在主程序的每次循环中,首先读入红外传感器数据,然后根据公式计算新的占空因数,并存入相应的寄存器。
公式中的KP
为控制比例系数,是一个通过实验确定的调节比。
图4 主程序流程图
图5为中断服务程序的流程图,寄存器D4保存占空因数,D5保存定时器值。
设定控制器每5微秒产生一次中断,定时器初始值设为100,即输出信号的周期为0.5毫秒。
图5 中断服务程序的流程图
这里需要注意一下系统运行的时序问题。
系统首先初始化,定义定时器中断,然后开始定时器中断,主程序进入无限循环。
此后,在定时器的驱动下,每5微秒便调用一次中断服务程序,中断服务程序执行耗时固定,可以通过指令及数目计算出来,中断服务程序的耗时肯定要少于定时器中断的间隔时间,不然就没法给主程序也就是后台任务留出CPU资源来了。
在输出信号的一个周期内,也就是100乘以5纳秒,会有100个定时器中断,后台程序,也就是主程序会在每一个定时器的中断服务程序完成后,而下一个定时中断还没有到来前的时间间隔里获取系统的控制权,也就是风扇转速的预定值在每个定时中断程序中都会调整。
2.2 为被分析系统构建软件故障树
建树应从顶事件开始由上而下,循序渐进逐级进行,步骤如下:
①分析顶事件,寻找引起顶事件发生的直接的必要和充分的原因。
将顶事件作为输出事件,将所有的直接原因作为输入事件,并根据这些事件实际的逻辑关系用适当的逻辑门相联系。
②分析每一个与顶事件直接相联系的输入事件。
如果该事件还能进一步分解,则将其作为下一级的输出事件。
③重复上述步骤,逐级向下分解,直到所有的输入事件不能再分解或不必要再分解为止。
这些输入事件即为故障树的底事件。
对每一级结果事件的分解必须严格遵守寻找“直接的必要和充分的原因”,以免某些故障模式的遗漏。
图6即为得到的故障树。
其中T为顶时间;G为中间事件;X为底事件。
图6 被分析对象的软件故障树
2.3 OpenFTA进行故障树建模和分析
Open FTA是一个复杂的工程绘图、分析和打印故障树工具,具有如下特征:
①可以通过点击图形用户界面使故障树快速绘图。
②支持NUREG-0492规定的全套故障树符号。
③附带一个定义主要事件的存储数据库。
④故障树定性分析,以确定最小割集。
⑤故障树定量分析,如计算顶事件概率,蒙特卡罗仿真。
图7即为采用OpenFTA画出的图6的故障树,然后可以通过该软件自动进行故
障树的定性和定量分析,具体操作不再赘述。
图7 OpenFTA画的图6的故障树
3 结语
本文首先介绍了软件安全性分析技术及故障树分析技术,然后通过一个典型的案例演示了如何开展故障树分析,最后介绍了利用开源软件工具OpenFTA的辅助,具体的实施和自动化分析过程。
故障树除了文中介绍的与门和或门外还有多种逻辑门,然而从理论上讲,因为其他所有的门都可以转化成与门和或门的组合,所以为了简化起见,就没有对故障树建模进行全面的介绍,更多的内容可以参考相关文献。
另外笔者在使用OpenFTA的过程中,发现其具有许多开源软件的缺点,如没有汉化,本地化做得不好,文档也比较少等。
感兴趣的读者可以对该软件进行更深入的探讨。
参考文献
[1]马彪,李德君.基于SFTA技术的数据库系统软件故障分析[J].舰船电子工程,2011(7):161-163.
[2]李国旗,陆民燕,刘斌.基于SFTA的桥接模式安全性分析[J].计算机工程,2009(24):108-110.
[3]OpenFTA is an advanced tool for fault tree analysis
[CP/OL]..
[4]曹晋华,程侃.可靠性数学引论(修订版)[M].北京:高等教育出版社,2006. [5]魏选平,齐世举,马红光,等.实用故障树定量分析原理与应用实例[J].电子产品可靠性与环境试验,2006(6):46-47.
[6]Bowles J B,Wan C.Software failure modes and effects analysis for a small embedded control system[C]//Proceedings of Annual Reliability and Maintainability Symposium,2001.。