謝軼,呂鎮(zhèn)邦
(1.江南機(jī)電設(shè)計(jì)研究所,貴州 貴陽(yáng) 550009;2.中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710068)
?
改善型軟件故障樹(shù)分析
謝軼1,呂鎮(zhèn)邦2
(1.江南機(jī)電設(shè)計(jì)研究所,貴州貴陽(yáng)550009;2.中航工業(yè)西安航空計(jì)算技術(shù)研究所,陜西西安710068)
摘要:作為一種典型的可靠性與安全性分析方法,軟件故障樹(shù)分析(SFTA:Software Fault Tree Analtis)得到了廣泛的使用。然而SFTA的實(shí)施很大程度上依靠于個(gè)人經(jīng)驗(yàn),沒(méi)有清晰的分析線索來(lái)追溯失效原因,這導(dǎo)致了在對(duì)復(fù)雜系統(tǒng)進(jìn)行分析時(shí),會(huì)有巨大的難度和工作強(qiáng)度。為了解決這一問(wèn)題,提出了一種改善的SFTA方法,通過(guò)應(yīng)用控制流程圖來(lái)輔助構(gòu)建故障樹(shù),以便緩解分析復(fù)雜系統(tǒng)時(shí)的難度和減小工作量。最后,通過(guò)一個(gè)飛行控制系統(tǒng)的實(shí)例來(lái)證明方法的可行性,該實(shí)例顯示了改善后的SFTA方法在對(duì)復(fù)雜系統(tǒng)進(jìn)行分析時(shí),能夠提供清晰的分析線索,有效地提高分析效率。
關(guān)鍵詞:軟件;故障樹(shù);控制流程圖;可靠性;安全性
軟件故障樹(shù)分析(SFTA:Software Fault Tree Analtsis)是一種典型的可靠性與安全分析方法,被廣泛地應(yīng)用于安全、關(guān)鍵的軟件系統(tǒng)中[1]。SFTA采用自頂向下的方法來(lái)逐層地確定不期望的事件,可以在軟件開(kāi)發(fā)過(guò)程的早期就發(fā)現(xiàn)軟件需求中的錯(cuò)誤與缺陷。然而,傳統(tǒng)的SFTA具有一些典型的缺陷,例如:對(duì)中間事件與底層事件的分析不充分、沒(méi)有清晰的分析線索來(lái)追溯頂事件的失效原因,以及分析的結(jié)果在很大程度上取決于個(gè)人經(jīng)驗(yàn)等。這些問(wèn)題都導(dǎo)致了傳統(tǒng)的SFTA的客觀性較差、效率較低,因此如何改善SFTA方法受到了很大的關(guān)注。
本文提出了一種利用控制流程圖來(lái)輔助進(jìn)行SFTA的方法[2],首先,介紹了如何利用控制流程圖來(lái)輔助構(gòu)建故障樹(shù)的原理;其次,給出了利用本文提出的方法對(duì)飛行控制系統(tǒng)進(jìn)行故障樹(shù)分析的例子,證明了該方法的可行性。
構(gòu)建故障樹(shù)是SFTA的核心環(huán)節(jié)。在本章中,我們主要討論如何利用控制流程圖來(lái)輔助構(gòu)建故障樹(shù)[3]。
控制流程圖包含了3種結(jié)構(gòu):長(zhǎng)方形代表了任務(wù)處理,菱形代表了判斷條件,箭頭代表了控制流。通過(guò)任務(wù)處理過(guò)程、判斷條件和控制流,控制流程圖能夠描述出軟件的邏輯處理過(guò)程[4]。通過(guò)控制流程圖,軟件的執(zhí)行過(guò)程能夠被清晰地描述出來(lái),這為追溯失效的產(chǎn)生過(guò)程提供了清晰的分析線索。根據(jù)軟件需求,我們可以得到軟件的功能結(jié)構(gòu),在軟件功能結(jié)構(gòu)中,統(tǒng)一層次的功能之間具有控制流關(guān)系。因此,我們可以為功能結(jié)構(gòu)圖的每一層構(gòu)建出控制流程圖,然后將各層次的控制流程圖綜合在一起,組成整個(gè)軟件系統(tǒng)的控制流程圖。
控制流程圖描述了功能模塊的執(zhí)行流程,在控制流程中任何一個(gè)模塊出現(xiàn)故障都會(huì)在一定程度上對(duì)軟件的執(zhí)行結(jié)果造成影響。如果軟件失效了,那么肯定是控制流程圖中的某一個(gè)環(huán)節(jié)出現(xiàn)了問(wèn)題。在控制流程圖中,前一個(gè)模塊的故障會(huì)影響到它之后的模塊,最后一個(gè)模塊的輸出直接導(dǎo)致了頂事件的發(fā)生。因此,我們可以沿著控制流程圖從后向前分析這些功能模塊,以確定其可能的失效原因。首先,分析控制流程圖中最后一個(gè)模塊,并將其可能的故障原因作為故障樹(shù)的事件。如果最后一個(gè)模塊沒(méi)有故障,那么可能是該模塊的前一個(gè)模塊出現(xiàn)了子故障,沿著控制流程圖追溯到前一個(gè)模塊,分析該模塊的潛在故障,并將其作為故障樹(shù)的事件。遵循這種分析方法,我們可以得到控制流程圖中自頂向下所有層次中的所有模塊的故障模式。低層次的模塊的故障作為上一層次的模塊故障的原因,便可以構(gòu)建起完整的故障樹(shù),控制流程圖輔助構(gòu)建故障樹(shù)的一般過(guò)程如圖1所示。因此,控制流程圖為我們分析頂事件的故障原因提供了清晰的分析線索,依據(jù)這樣的線索,我們可以自頂向下逐層地得到故障樹(shù)中所有的事件[5]。
圖1 控制流程圖輔助構(gòu)建故障樹(shù)
在圖1中,可能是F1、F2或F3的故障造成了頂事件的發(fā)生,根據(jù)上述方法,首先分析F2的故障,并將其可能的故障模式作為頂事件的下一層中間事件,然后分析F3的故障并將其可能的故障模式作為頂事件的下一層中間事件,最后分析F1的故障。
這里我們假設(shè)是F2的一種失效模式作為了中間事件2,然后我們便應(yīng)該追溯中間事件2發(fā)生的原因。在F2的控制流程圖中,有2個(gè)并行的部分:F2.1和F2.2,因此可能是F2.1和F2.2的故障造成了F2的故障。分析F2.1與F2.2并將它們可能的故障原因作為中間事件2的下一層原因事件,由此我們可以得到基本事件2.2.1和2.2.2。
另外,控制流程圖還描述了功能模塊之間的邏輯關(guān)系,一些模塊之間是順序執(zhí)行的關(guān)系,一些模塊之間是并行關(guān)系,另一些模塊之間是冗余關(guān)系。所有的這些邏輯關(guān)系,決定了故障樹(shù)中相應(yīng)的事件之間的邏輯門(mén)。例如:在圖1中,F(xiàn)1、F2和F3之間是順序執(zhí)行關(guān)系,它們中的任何一個(gè)失效都會(huì)造成頂事件的發(fā)生,因此它們對(duì)應(yīng)的事件之間的邏輯為或門(mén);F2.1與F2.2是并行關(guān)系,他們都失效才會(huì)造成F2的失效,因此它們對(duì)應(yīng)的事件之間的邏輯關(guān)系為與門(mén)。
控制流程圖描述了軟件功能模塊的執(zhí)行順序及模塊之間的邏輯關(guān)系,能夠幫助確定故障樹(shù)中的事件及事件之間的邏輯門(mén)。
在本章中,會(huì)通過(guò)將該改善后的故障樹(shù)分析法運(yùn)用到一個(gè)飛行控制系統(tǒng)中來(lái)對(duì)該方法的可行性進(jìn)行驗(yàn)證。飛行控制系統(tǒng)是對(duì)飛機(jī)的飛行狀態(tài)進(jìn)行控制的軟件系統(tǒng),是飛機(jī)最重要的組成部分之一。飛行控制系統(tǒng)通常包括了系統(tǒng)管理模塊、控制律計(jì)算模塊、BIT模塊、故障處理模塊和其他一些模塊。由于飛行控制系統(tǒng)十分復(fù)雜,因而對(duì)其進(jìn)行SFTA分析是一項(xiàng)非常困難和繁重的任務(wù)。在本實(shí)例中,我們利用上述的方法對(duì)該系統(tǒng)實(shí)施SFTA,以驗(yàn)證該方法的可行性,分析過(guò)程如下所述。
2.1定義系統(tǒng)
飛行控制系統(tǒng)包含了安全關(guān)鍵性軟件,這對(duì)整個(gè)系統(tǒng)的安全性與可靠性具有重要的作用。飛行控制系統(tǒng)的主要功能是收集飛機(jī)飛行狀態(tài)數(shù)據(jù)及駕駛指令,計(jì)算和分析得到飛行控制律,并根據(jù)控制律將飛行控制指令發(fā)送給各個(gè)執(zhí)行器。由于飛行控制系統(tǒng)的復(fù)雜性及龐大性,不可能對(duì)整個(gè)系統(tǒng)進(jìn)行分析,因而在本文中對(duì)飛行控制系統(tǒng)進(jìn)行了簡(jiǎn)化,主要對(duì)BIT系統(tǒng)進(jìn)行分析。
2.2確定頂事件
大多數(shù)飛行事故都發(fā)生在起飛階段,飛機(jī)處于健康狀態(tài)是起飛能夠成功的重要因素。然而,如果一些功能模塊的失效不能被有效地檢測(cè)到,或沒(méi)有進(jìn)行報(bào)警,就會(huì)造成飛機(jī)在非健康狀態(tài)下起飛,極可能造成起飛事故。因此,本文將“無(wú)起飛故障告警”作為本次SFTA的頂事件進(jìn)行分析。
2.3獲取控制流程圖
首先,根據(jù)軟件需求,我們可以得到飛行控制系統(tǒng)的控制流程圖,如圖2所示,且將其定義為初始層次的控制流程圖。在該流程圖中,起飛任務(wù)發(fā)生在“地面循環(huán)任務(wù)”階段。然后,我們可以在軟件需求中得到“地面循環(huán)任務(wù)”的控制流程圖,如圖3所示。PBIT(Pre takeoff BIT)是對(duì)飛行前飛機(jī)的健康狀態(tài)進(jìn)行檢測(cè)的功能模塊,它的檢測(cè)結(jié)果決定著飛行是否可以起飛,其控制流程圖如圖4所示。
圖2 飛行控制系統(tǒng)控制流程圖
圖3 地面循環(huán)任務(wù)控制流程圖
圖4 PBIT控制流程圖
2.4構(gòu)建故障樹(shù)
如上面所述,將“無(wú)起飛故障告警”作為頂事件。按照本文所提供的方法對(duì)圖2所示的控制流程圖進(jìn)行分析,確定地面循環(huán)任務(wù)失效、PUBIT功能喪失、無(wú)告警和初始化異常是可能會(huì)造成頂事件的失效模式,將這些失效模式作為頂事件下的第一層中間事件,由于它們之間是順序執(zhí)行的關(guān)系,故將它們之間的邏輯門(mén)定為或門(mén)。
在圖3中,通過(guò)分析這些相關(guān)的模塊,確定PBIT功能喪失、串行信號(hào)檢測(cè)異常和故障處理失效為可能造成地面循環(huán)任務(wù)失效的原因事件。由于它們之間任何一個(gè)失效都會(huì)造成地面循環(huán)任務(wù)失效,因此將它們之間的邏輯門(mén)定為或門(mén)。
如圖4所示,PBIT的檢測(cè)內(nèi)容包括了CPU、RAM、電源、油壓、舵機(jī)、副翼伺服和傳感器等。通過(guò)對(duì)這些模塊進(jìn)行分析,確定舵機(jī)檢測(cè)功能異常、舵機(jī)故障無(wú)告警、副翼伺服檢測(cè)功能異常、副翼伺服故障無(wú)告警、傳感器檢測(cè)功能異常、傳感器故障無(wú)告警和故障告警失效可能造成PBIT功能喪失,故將這些故障作為PBIT功能喪失的原因事件。最終構(gòu)建的故障樹(shù)如圖5所示。
圖5 飛行控制系統(tǒng)故障樹(shù)
2.5獲取割集
根據(jù)所構(gòu)建的故障樹(shù),得到割集:{舵機(jī)檢測(cè)功能異常、舵機(jī)故障無(wú)告警},{副翼伺服檢測(cè)功能異常、副翼伺服故障無(wú)告警},{傳感器檢測(cè)功能異常、傳感器故障無(wú)告警},{故障告警失效}。
通過(guò)本章的實(shí)例,證明了本文所提出的方法的可行性。但限于篇幅,實(shí)例并沒(méi)有對(duì)整個(gè)的飛控系統(tǒng)進(jìn)行分析。
為了提高效率,SFTA輔助工具是非常有必要的。我們也調(diào)研了諸多此類SFTA工具,其中,美國(guó)SoftRel公司的FRESTIMATE是最具專業(yè)特色的軟件可靠性分析工具,它參照了CMM、IEC 61508、DO-178B和美軍羅馬實(shí)驗(yàn)室標(biāo)準(zhǔn),能在軟件開(kāi)發(fā)的概念階段對(duì)軟件的可靠性指標(biāo)、耗費(fèi)時(shí)間、人力和資源等進(jìn)行預(yù)測(cè),同時(shí)將SFTA、SFMEA軟件、軟件測(cè)評(píng)和軟件可靠性預(yù)計(jì)等進(jìn)行了很好的結(jié)合,能夠預(yù)測(cè)軟件缺陷數(shù)、缺陷密度、MTTF、軟件嚴(yán)酷故障率、MTTCF、軟件可靠性、軟件可用性和MTSWR軟件平均恢復(fù)時(shí)間等可靠性指標(biāo)。
FRESTIMATE具有如下幾個(gè)特點(diǎn)。
a)以軟件測(cè)試數(shù)據(jù)(例如:故障發(fā)生時(shí)間、數(shù)目和類型等)為輸入,它提供了8種權(quán)威的軟件可靠性評(píng)估模型:貝葉斯模型、二項(xiàng)式模型、NHPP(非齊次泊松模型)模型、失效-時(shí)間模型、故障數(shù)目模型、時(shí)間對(duì)數(shù)模型、故障數(shù)目對(duì)數(shù)模型和威布爾模型,并且擁有誤差對(duì)比功能來(lái)選擇最適用的模型。
b)不僅能夠輸出MTTF、失效率、缺陷數(shù)目、可靠度和可用度在某一時(shí)間點(diǎn)時(shí)的值,還可以輸出這些可靠性指標(biāo)的變化趨勢(shì)圖,由此可以確定軟件何時(shí)能夠達(dá)到預(yù)定的可靠性目標(biāo)。
c)同時(shí)可以對(duì)源代碼進(jìn)行度量,輸出代碼的規(guī)模、嵌套復(fù)雜度和圈復(fù)雜度等。
d)數(shù)據(jù)庫(kù)中包含了100個(gè)軟件開(kāi)發(fā)項(xiàng)目,600多個(gè)開(kāi)發(fā)實(shí)踐,并且將這些與軟件可靠性相關(guān)聯(lián),就能夠有效地為用戶提供數(shù)據(jù)與經(jīng)驗(yàn)支持。
通過(guò)對(duì)近百個(gè)項(xiàng)目的跟蹤調(diào)查,發(fā)現(xiàn)軟件預(yù)測(cè)功能可以減少83%的缺陷,預(yù)測(cè)誤差可以控制在5%之內(nèi);可靠性評(píng)估功能的準(zhǔn)確性可以達(dá)到98%以上。
本文提出了一種改善型SFTA,通過(guò)將控制流程圖應(yīng)用到故障樹(shù)的構(gòu)建中,為故障樹(shù)的構(gòu)建提供了清晰的分析線索,能夠有效地對(duì)失效原因進(jìn)行追溯。該方法可以有效地降低利用SFTA對(duì)復(fù)雜性系統(tǒng)進(jìn)行分析的難度和工作量,提高了分析效率。文章通過(guò)將該方法運(yùn)用到一個(gè)飛行系統(tǒng)的實(shí)例證明了該方法的可行性。今后希望能夠?qū)⒖刂屏鞒虉D集成到SFT分析工具中,以便實(shí)現(xiàn)計(jì)算機(jī)輔助分析。
參考文獻(xiàn):
[1]故障樹(shù)指導(dǎo)手冊(cè):GJB/Z 768A-1998 [S] .
[2] OH Y,YOO J,CHA S,et al. Software safett analtsis of function block diagrams using fault trees [J] . Reliabilitt Engineering & Ststem Safett,2005,88(3):215-228 .
[3]孫志安,裴曉黎,宋昕.軟件可靠性工程[M] .北京:北京航空航天大學(xué)出版社,2009:243-256.
[4]沈被娜,劉祖照,姚曉冬.計(jì)算機(jī)軟件技術(shù)基礎(chǔ)[M] .北京:清華大學(xué)出版社,2012:174-206.
[5] ROBYN R Lutz,ROBERT M Woodhouse. Requirements analtsis using forward and backward search [J] . Annals of Software Engineering,1997,3(1)459-475.
[6] WALLACE D R,GALLO A M. Fault tree analtsis for software design [C] // Proceedings of the 27 th Annual NASA Goddard,2003.
An Improved SFTA
XIE Yi1,LV Zhen-bang2
(1. Jiangnan Mechanical and Electrical Design Insititute,Guitang 550009,China;2. Aeronnautics Computing Technique Research Institute,Xi’an 710068,China)
Abstract:As a ttpical reliabilitt and safett analtsis method,SFTA has been widelt used. However,the implementation of SFTA is greatlt based on personal experience,and it can't offer clear analtsis clues to trace failure causes,which brings about great difficultt and working strength while analtzing complex ststems with this method. In order to solve this problem,an improved SFTA is put forward,which builds fault tree with the help of control flow chart so as to alleviate the difficultt and reduce the workload while analtzing complex ststems. In the end,the feasibilitt of the method is proved bt applting the method to a flight control ststem. And the results show that the improved SFTA can provide clear analtsis clues,and can effectivelt improve analtsis efficienct while analtzing complex ststems.
Key words:software;fault tree;control flow chart;reliabilitt;safett
作者簡(jiǎn)介:謝軼(1978-),男,京族,貴州畢節(jié)人,江南機(jī)電設(shè)計(jì)研究所高級(jí)工程師,從事綜合管理工作。
收稿日期:2016-01-04修回日期:2016-01-18
doi:10.3969/j.issn.1672-5468.2016.02.009
中圖分類號(hào):TP 311.522
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1672-5468(2016)02-0041-05