APP下载

软件故障树分析实例研究*

2014-08-11

航天控制 2014年6期
关键词:软件可靠性可靠性软件

石 柱 郑 重

中国航天科技集团公司软件评测中心,北京100048



软件故障树分析实例研究*

石 柱 郑 重

中国航天科技集团公司软件评测中心,北京100048

软件故障树分析(SFTA)是硬件或系统FTA的扩展,可应用于安全性关键软件的验证和可靠性分析。本文首先阐述了SFTA的原理和应用过程,然后介绍了结合某嵌入式软件进行实际应用的过程以及最小割集的生成,并在此基础上提出了对该软件的改进建议。

软件可靠性;软件可靠性分析;软件故障树分析

软件故障树分析(software fault tree analysis,SFTA)用于检查和识别可引起危险的软件失效及其原因,它采用自上而下演绎的方式找出可能导致顶端事件的状态或关键路径的最小组合。目前,SFTA方法已广泛应用于安全关键软件的验证和可靠性分析[1]。

在某些领域,随着对软件的可靠性和安全性要求日益提高,需要对相关软件进行SFTA,但目前对软件产品进行SFTA的工作很少,缺乏实践经验,因此,本文在对SFTA原理和实施步骤研究的基础上,针对某嵌入式软件的特点,进行了初步应用,取得了较好的效果,并成功改进了该软件。

1 SFTA原理

SFTA通常是以不希望发生的、作为软件失效判据的一个事件(顶事件)作为分析目标,首先分析寻找所有能引起顶事件发生的直接原因,然后寻找引起上述每一个直接原因的所有直接原因,以此类推,一层一层的分析。如果上一级事件的发生可由任意一个直接原因导致,则用逻辑“或”把它们和上一级事件连接起来;如果上一级事件的发生是由2个或2个以上的直接原因共同导致,则用逻辑“和”把它们和上一级事件连接起来。通过这样逐层向下推测所有可能的原因,直到无法再进一步分析的事件(底事件)为止。这样,可以找出软件可能发生的人为错误、内在缺陷和环境影响等各种因素,以及顶事件所代表的软件失效之间的逻辑关系,并且用逻辑门符号连成一棵倒立的树状图形,即故障树。

故障树建成后,再定性分析各个底事件对顶事件发生影响的组合方式和传播途径,识别以顶事件为代表的各种可能的软件失效模式,以及定量计算这些影响的轻重程度,计算出软件失效概率和各个底事件的重要度次序。最后,根据分析结果,找出设计上的薄弱环节,并采取改进措施以提高产品的可靠性。

2 SFTA的步骤

SFTA的步骤与硬件和系统FTA步骤一致,主要分为以下6步:确定所分析的软件、确定故障树的顶事件、分析与顶事件有关的所有原因事件、建立故障树、定性分析、可靠性评价和改进建议。下面对各步骤的主要工作进行说明:

1)确定所分析的软件。确定系统所包括的内容及其边界范围,熟悉软件的整体情况,包括性能、运行情况、操作情况及各种重要参数等。同时,调查分析过去和现在发生的故障,及同类系统曾发生的所有事故;

2)确定故障树的顶事件。根据项目需要和用户需求,确定所要分析的对象事件,通常将易于发生且后果严重的事故作为顶事件;

3)分析与顶事件有关的所有原因事件;

4)建立故障树。按建树原则,从顶事件起,一层一层往下分析各自的直接原因事件,根据彼此间的逻辑关系,用逻辑门连接上下层事件,直到所要求的分析深度,形成一株倒置的逻辑树形图,即故障树图;

5)定性分析。定性分析是故障树分析的核心内容之一,其目的是分析该类事故的发生规律及特点,通过求取最小割集,找出控制故障的可行方案,并从故障树结构上、发生概率上分析各基本事件的重要程度,以便按轻重缓急分别采取对策。

以最小割集为例,求出最小割集不但可以识别导致顶事件发生的所有可能的故障模式,还可以通过比较每个最小割集所包含的底事件数目来确定最小割集和底事件的重要度。每个最小割集都是顶事件发生的一种可能,有几个最小割集,顶事件的发生就有几种可能,最小割集越多,系统越危险。假设每个底事件发生的概率都较小,且差别不大,在此假设条件下,包含底事件越少的最小割集越重要,且此割集中的底事件也较重要。在不同最小割集中重复出现次数越多的底事件越重要,这样可以清晰地分析出软件的薄弱环节。特别要注意“单点失效”,即单个底事件可导致顶事件发生,所以危害最大,必须重点分析;

6)可靠性评价和改进建议。根据分析的结果,评价该类事故的危险性,从而有针对性地采取措施,从定性和定量分析的结果中找出能够降低顶事件发生概率的最佳方案。

3 SFTA应用过程

下面以某星载嵌入式软件为应用对象,给出具体的应用过程。

按照软件开发方的意见,重点针对“软件复位”故障进行故障原因分析,即聚焦能导致软件复位的各种可能的故障原因,并给出软件可靠性加强建议。

对于软件复位的故障原因,主要从主动复位和被动复位2个方面进行故障原因分析(注:主动复位,是由于软件预设的复位措施起作用而导致的软件复位;软件被动复位,是由于发生了程序无法捕获到的异常而导致的复位)。下面以“计算精度下降,导致主动复位”为顶事件,介绍SFTA的过程。

经分析,给出了计算精度下降故障树总体图,见图1。

从计算精度下降故障树总体图中可以很容易看出该底事件共有9个,见表1。

图1 计算精度下降故障树总体图

表1 计算精度下降故障树底事件

从图1可以看出,整个故障树都由“或门”连接,因此,其最小割集都是由单个底事件组成,则造成该顶事件的最小割集为{X1},{X2},{X3},{X4},{X5},{X6},{X7},{X8},{X9}。

经过与开发人员沟通,以及根据以往经验,给出各个底事件发生概率的数量级,由于该最小割集均是“单点失效”,因此顶事件发生的概率为各底事件概率之和:2.32×10-6。

尽管顶事件发生概率很小,但在后续工作中要对各个底事件进行严格分析,采取相应措施以避免顶事件的发生。下1节将给出可靠性加强建议。

4 SFTA应用结果分析

通过项目组成员的努力,已将所有该软件复位情况进行了全面的SFTA,并汇总了各个故障树的最小割集,找出了导致软件复位的薄弱环节,并针对薄弱环节给出了该软件的改进措施。

4.1 保护重要全局变量,避免被错误改写

尽量避免在不同优先级任务中共用全局变量,对于必须共用的情况,建议采取保护措施。

例如,在前台程序和后台程序中都对某一数组进行读写操作,而造成严重的故障影响,所以,建议在执行后台程序时,不执行前台程序(例如,可采用任务互斥信号量的方式实现),避免2个程序同时执行。

4.2 调整任务划分,简化时序关系

调整前后台任务划分,尽可能将一些时间特性要求不严格、非周期性的任务从前台移到后台,降低各任务之间的时序复杂性,从而简化软件运行时的复杂性。

4.3 改进软件主动复位措施

1)建议将该软件可靠性措施前移,尽量少采用复位手段。2)建议对程序中已经采取的主动复位措施进行充分论证、测试,分析已有的主动复位措施之间的相关性在当前条件下(尤其软件加强可靠性措施后)是否合适,以及是否会带来副作用,对这些主动复位措施进行系统考虑后,做适当调整。

例如,由于计算精度下降而主动复位的措施在卫星大部分运行时间内是有效的,但如果卫星处于以下情况时,该复位措施可能有副作用或局限性:卫星由于姿态调整而进行变轨;卫星处于发射阶段时,加速度较大。以上情况软件计算正常,但卫星的位置和速度均变化较大,有可能引起该软件复位。

此外,对软件采取可靠性加强措施后,也要相应修改某些主动复位措施。

4.4 避免累积误差

随机误差避免很难,但是通过设计可以避免累积误差。分析结果显示,误差修正的精度是影响系统时间参数的重要因素,不能排除其影响,应该结合软件测试和试验来验证。

4.5 验证64位运算函数

在某模块的计算中用到大量64位运算函数,而该模块在该软件中1s执行1次,任务级别较低。在其他高优先级任务中的部分函数也调用了这些64位运算函数,在运行过程中有可能发生低优先级任务被高优先级任务打断而重入,从而导致这些函数执行的不正确,造成计算出现错误结果。

建议检查源码或汇编代码是否可重入、是否符合可靠性编程准则(例如,是否遵守延迟跳转指令使用的相关规定),或用软件测试的方法验证是否可重入,用函数可重入规则来改写。

4.6 防范重要数据被单粒子打翻

在硬件器件方面,建议采用抗单粒子翻转的宇航级器件,如果因此带来难以承受的性能损失,建议进一步更换高性能、抗辐照嵌入式处理器,建议在工艺上也采取相应的加固措施。

如果受客观条件等因素限制,不能采取充分的硬件措施,则建议加强软件抗单粒子翻转设计,例如:针对软件数据区被单粒子打翻的情况,建议对任务和执行流程影响大,且持续时间长的重要数据,采取相应的软件可靠性设计措施,例如:“写时三备份,读时3取2”、“加大码距”、“引入第3种状态处理”、“周期性刷新”和“通行证技术”等,以提高软件的抗单粒子翻转能力。

4.7 防范程序区被单粒子打翻

针对软件程序区被单粒子打翻的情况,建议在该软件的后台定期检查RAM和ROM中的程序是否一致,若不一致,进行3取2,再将正确的程序装载到RAM区运行。另一方面,建议参考N版本这一软件可靠性设计思路(注:可以仅运行一个软件程序版本),加强软件抗单粒子翻转设计。

4.8 加强软件可靠性测试

建议软件开发方进一步开展软件可靠性测试,通过软件可靠性测试,监控一些重要数据信息(例如,互斥信号量置位前发生中断、堆栈使用情况等),复现故障,验证这些故障模式发生后所产生的影响(例如,数组出错到发生复位的过程中,是由于发生死循环导致的复位,还是由于计算精度下降触发主动复位措施而导致的复位),评估这些故障发生的概率,并采取相应的软件可靠性加强措施。

4.9 加强目标码测试

在SFTA阶段,已经对CCS生成的汇编代码是否符合可靠性编程准则进行了普查分析,无不符合项,但是最终生成的目标码与汇编代码不一定完全对等,所以建议进行目标码测试。

5 结论

对SFTA原理和实施过程开展了研究,并在某星载嵌入式实时软件上进行了实践应用,提出了相应的预防和改进措施,为软件的可靠性安全性设计提供了依据。

事实证明,SFTA方法对于软件可靠性的提高具有较高的应用价值,如果将软件失效模式和影响分析(software failure modes and effects analysis,SFMEA)结合SFTA方法同时使用,将会得到更加系统和全面的结果。

[1] 黄锡滋.软件可靠性、安全性与质量保证[M].北京:电子工业出版社,2002.(HUANG Xizi. Assurance of Software Reliability, Safety and Quality[M].Beijing: Electronic Industry Press,2002.)

[2] NASA- GB- 8719.13.NASA Software Safety Guidebook[S].NASA,2004.

[3] 朱明让,何国伟,廖炯生.“三F”技术培训教材[M].北京:航天工业总公司,1995.(ZHU Mingrang,HE Guowei,LIAO Jiongsheng. Technically Training Material For“3F” [M].Beijing: Aerospace Industry Corporation,1995.)[4] 石柱.航天软件安全性分析实践[J].数字军工,2007,(4):40- 43.(SHI Zhu.The Practice on Aerospace Software Safety Analysis [J].Digital Military Industry,2007,(4) :40- 43.)

[5] 石柱,马宽,郑重.软件FMEA实例研究[J].航天控制,2010,28(2):75- 78.(SHI Zhu,MA Kuan,ZHENG Zhong.A Case Study On Software FMEA[J]. Aerospace Control, 2010,28(2):75- 78.)

[6] CHA S- D,LEE J. Fault Tree Construction of Hybrid System Requirements Using Qualitative Formal Method [J].Reliability Engineering and System Safety,2005,87:121- 131.

[7] Musa J D,Iannino A,Okumoto K. Software Reliability: Measurement, Prediction, Application [M].New York:McGraW- Hill,1987.

[8] Dutuit Y,Rauzy A.Approximate Estimation System Reliability via Fault Tree[J]. Reliability Engineering and System Safety,2005,87:163- 172.

[9] Li Guoqi, Lu Minyan, Liu Bin.SFTA Based Safety Analysis for Bridge Pattern[C]//2009 8th International Confrerence on Reliability,Maintainability and Safety,2009:522- 525.

[10] Towhidnejad M.Validation of Object Oriented Software Design With Fault Tree Analysis[C]// Proc.of 28th Annual NASA Goddard,USA,2003:209- 215.

[11] Vesely W E. Fault Tree Handbook [M].Washington,US:Government Pringing Office,1981.

[12] Huang H Z, Tong X, Zuo M J. Posbist Fault Tree Analysis of Coherent Systems[J]. Reliability Engineering and System Safety,2004,84(2):141- 148.

[13] 许荣,车建国,杨作宾,左晓勇.故障树分析法及其在系统可靠性分析中的应用[J].指挥控制与仿真,2010,32(1):112- 115.(XU Rong,CHE Jianguo,YANG Zuobin,ZUO Xiaoyong. The Fault Tree Analysis and Its Application in the System Reliability Analysis[J].Command Control & Simulation,2010,32(1):112- 115.)

[14] Yang Hong,Wang Hou- xiang,Han Ruo- fei,Li Juan.Application of Fault Tree in Software Safety Analysis[C]//International Forum on Computer Science- Technology and Applications. ChongQing,2009:207- 208.

[15] Joanne Bechta Dugan, Ganesh J Pai, Hong Xu. Combining Software Quality Analysis with Dynamic Event/Fault Trees for High Assurance Systems Engineering[C]//10th IEEE High Assurance Systems Engineering Symposium .USA,2007:245- 255.

《航天控制》选题大纲

1总体与系统技术

1.1 航天器动力学模型技术

1.2 航天器控制系统方案设计

1.3 系统集成与一体化设计技术

2制导、导航和控制技术

2.1 先进的信息与控制理论及应用

2.2 全程复合制导技术(星光、卫星导航系统)

2.3 精确末制导技术

2.4 航天器自主导航和组合导航技术

2.5 新型运载火箭控制系统研究

2.6 系统精度与毁伤效果的评估和分析

2.7 卫星姿态轨道控制技术研究

2.8 航天器交会对接、返回与救生技术

2.9 深空探测与着陆技术

2.10卫星编队飞行与星座控制技术

2.11拦截器制导与控制技术

2.12机器人动力学与控制

2.13控制系统“标准化、通用化、组合化”技术

2.14航天器测控通信技术

2.15伺服控制设计

3计算机技术与仿真技术

3.1 嵌入式计算机系统设计技术

3.2 软件工程与评测技术

3.3 CAX设计

3.4 人工智能与专家系统技术

3.5 系统仿真技术

3.6 半实物仿真与设计、试验技术

4测试、发射和控制技术

4.1 测试发射控制一体化技术

4.2 快速机动测控技术

4.3 航天器地面测试自动化

4.4 C4ISR技术

4.5 水平瞄准、快速定位定向技术

4.6 系统信息流控制技术

5可靠性、安全性和维修性

5.1 可靠性、安全性、维修性和保障性设计、分析和试验技术

5.2 软件可靠性及优化技术

5.3 冗余设计技术

5.4 故障诊断技术

6光机电一体化技术

6.1 片上系统(SOC)技术

6.2 航天器姿态敏感器

6.3 目标探测器

6.4 惯性测量装置

6.5 光学陀螺

6.6 推进器技术

6.7 飞行控制执行机构

6.8 电磁兼容设计与试验技术

6.9 表面装贴技术

6.10减振技术研究

6.11多功能结构设计与标准化技术

征稿简则

1.文稿应具备创新性和科学性,务求主题突出、论据充分、文字精练、数据可靠,有较高的理论水平和实用价值。

2.稿件的篇幅(含摘要、图、表、参考文献等)6000字以内,撰写论文所涉及的基金资助项目、获奖课题内容请予注明。

3.文章中必须有中英文的题名、作者姓名、单位(对外名称)、邮编、摘要、主题词,还应有中图分类号和参考文献。其中中文题名不超过20个字,英文题名不超过12个实词。主题词3条~8条,注意使用规范词。

4.摘要采用报道性文摘,应拥有与论文同等量的主要信息,着重反映新内容。中英文摘要均须包括目的、方法、结果、结论等四要素,中文摘要以300字左右为宜。英文摘要应按照英文文法书写,在确保内容完整性的前提下不必采用句子到句子的翻译模式。

5.计量单位应使用国家最新颁布的国家标准和规定,并且一律用符号表示。

6.稿件中的插图、表格要少而精。构图要合理,应附有图表序号及中文的图题、表题及图表注释。

7.参考文献采用中英双语著录,应著录最必要、最新的文献,且应是国内外公开发表的书刊文章,编号以出现的先后为序,各类文献的著录格式为:

(1)专著:著者.书名[M].版本(第1版不用著录).出版地:出版者,出版年.

(2)期刊:作者.题名[J].刊名,年,卷(期):起止页码.

(3)论文集:作者.题名[C]//编者.文集名.出版地:出版者,出版年:起止页码.

(4)学位论文:作者.题名[D].保存者,年份.

(5)会议论文:作者.题名[C].会议名称,会址,会议年份.

(6)技术标准:责任者.标准代号 标准名称[S].出版地:出版者,出版年:引文页码.

(7)专利文献:专利申请者.专利题名:专利国别,专利号[P].公开日期.

(8)报纸:作者.题名[N].报纸名,年-月-日(版次).

(9)外文文献请注意作者的名字均为姓在前名在后,名要缩写。

例:Zhou K M, Doyle J C, Glover K. Robust and Optimal Control[M]. Upper Saddle River, New Jersey: Prentice- Hall, 1996.

8.来稿须经过保密审查,勿投寄涉密稿件。稿件请注明作者真实姓名(发表时可按作者意愿署名)、工作单位、详细通讯地址、邮政编码、电话、作者简介及第一作者照片,文稿一经刊载即酌致稿酬,并赠送期刊2份。未被录用的稿件恕不退稿。

9.请勿一稿多投,凡在6个月内未见编辑部稿件处理的通知,请与编辑部联系。已在公开刊物发表的论文和报告,本刊不再刊登。

10.投稿方式:网上投稿,网址为http://htkz.cn;请同时邮寄保密审查结论至编辑部。来稿须保证内容真实、未侵犯他人知识产权、无涉密内容,作者署名无争议,未一稿多投。稿件请用WORD格式。

ACaseStudyonSoftwareFaultTreeAnalysis

SHI Zhu ZHENG Zhong
Software Evaluation and Testing Center of CASC,Beijing 100048,China

Thesoftwarefaulttreeanalysis(SFTA)isanextensionofhardwareorsystemFTA.Itcanbeusedforsafety-criticalsoftwareverificationandreliabilityanalysis.Firstly,theprincipleandapplicationprocessofSFTAaredescribedandtheapplicationprocessofSFTAforanembeddedsoftwareispresentedinthispaper,andthentheminimalcutsetsarebuiltandtheimprovementfortheembeddedsoftwarearesuggested.

Softwarereliability;Softwarereliabilityanalysis;Softwarefaulttreeanalysis

*国防科技工业局民用航天科研预先研究项目资助课题(B2120080307)

2012- 11- 20

石柱(1963-),男,湖北崇阳人,研究员,博士生导师,主要研究方向为软件工程、软件可靠性、软件安全性和软件过程改进;郑重(1984-),男,河南信阳人,工程师,主要研究方向为软件可靠性度量和软件可靠性测试。

TP311.5

: A

1006- 3242(2014)06- 0067- 04

猜你喜欢

软件可靠性可靠性软件
禅宗软件
可靠性管理体系创建与实践
软件对对碰
软件可靠性工程综合应用建模技术研究
5G通信中数据传输的可靠性分析
数控系统软件可靠性设计与故障分析技术
基于可靠性跟踪的薄弱环节辨识方法在省级电网可靠性改善中的应用研究
可靠性比一次采购成本更重要
谈软件的破解与保护
简谈使用BoundsChecker进行计算机联锁系统人机界面软件可靠性测试