謝軼,呂鎮(zhèn)邦
(1.江南機電設計研究所,貴州 貴陽 550009;2.中航工業(yè)西安航空計算技術研究所,陜西 西安 710068)
?
改善型軟件故障樹分析
謝軼1,呂鎮(zhèn)邦2
(1.江南機電設計研究所,貴州貴陽550009;2.中航工業(yè)西安航空計算技術研究所,陜西西安710068)
摘要:作為一種典型的可靠性與安全性分析方法,軟件故障樹分析(SFTA:Software Fault Tree Analtis)得到了廣泛的使用。然而SFTA的實施很大程度上依靠于個人經驗,沒有清晰的分析線索來追溯失效原因,這導致了在對復雜系統(tǒng)進行分析時,會有巨大的難度和工作強度。為了解決這一問題,提出了一種改善的SFTA方法,通過應用控制流程圖來輔助構建故障樹,以便緩解分析復雜系統(tǒng)時的難度和減小工作量。最后,通過一個飛行控制系統(tǒng)的實例來證明方法的可行性,該實例顯示了改善后的SFTA方法在對復雜系統(tǒng)進行分析時,能夠提供清晰的分析線索,有效地提高分析效率。
關鍵詞:軟件;故障樹;控制流程圖;可靠性;安全性
軟件故障樹分析(SFTA:Software Fault Tree Analtsis)是一種典型的可靠性與安全分析方法,被廣泛地應用于安全、關鍵的軟件系統(tǒng)中[1]。SFTA采用自頂向下的方法來逐層地確定不期望的事件,可以在軟件開發(fā)過程的早期就發(fā)現軟件需求中的錯誤與缺陷。然而,傳統(tǒng)的SFTA具有一些典型的缺陷,例如:對中間事件與底層事件的分析不充分、沒有清晰的分析線索來追溯頂事件的失效原因,以及分析的結果在很大程度上取決于個人經驗等。這些問題都導致了傳統(tǒng)的SFTA的客觀性較差、效率較低,因此如何改善SFTA方法受到了很大的關注。
本文提出了一種利用控制流程圖來輔助進行SFTA的方法[2],首先,介紹了如何利用控制流程圖來輔助構建故障樹的原理;其次,給出了利用本文提出的方法對飛行控制系統(tǒng)進行故障樹分析的例子,證明了該方法的可行性。
構建故障樹是SFTA的核心環(huán)節(jié)。在本章中,我們主要討論如何利用控制流程圖來輔助構建故障樹[3]。
控制流程圖包含了3種結構:長方形代表了任務處理,菱形代表了判斷條件,箭頭代表了控制流。通過任務處理過程、判斷條件和控制流,控制流程圖能夠描述出軟件的邏輯處理過程[4]。通過控制流程圖,軟件的執(zhí)行過程能夠被清晰地描述出來,這為追溯失效的產生過程提供了清晰的分析線索。根據軟件需求,我們可以得到軟件的功能結構,在軟件功能結構中,統(tǒng)一層次的功能之間具有控制流關系。因此,我們可以為功能結構圖的每一層構建出控制流程圖,然后將各層次的控制流程圖綜合在一起,組成整個軟件系統(tǒng)的控制流程圖。
控制流程圖描述了功能模塊的執(zhí)行流程,在控制流程中任何一個模塊出現故障都會在一定程度上對軟件的執(zhí)行結果造成影響。如果軟件失效了,那么肯定是控制流程圖中的某一個環(huán)節(jié)出現了問題。在控制流程圖中,前一個模塊的故障會影響到它之后的模塊,最后一個模塊的輸出直接導致了頂事件的發(fā)生。因此,我們可以沿著控制流程圖從后向前分析這些功能模塊,以確定其可能的失效原因。首先,分析控制流程圖中最后一個模塊,并將其可能的故障原因作為故障樹的事件。如果最后一個模塊沒有故障,那么可能是該模塊的前一個模塊出現了子故障,沿著控制流程圖追溯到前一個模塊,分析該模塊的潛在故障,并將其作為故障樹的事件。遵循這種分析方法,我們可以得到控制流程圖中自頂向下所有層次中的所有模塊的故障模式。低層次的模塊的故障作為上一層次的模塊故障的原因,便可以構建起完整的故障樹,控制流程圖輔助構建故障樹的一般過程如圖1所示。因此,控制流程圖為我們分析頂事件的故障原因提供了清晰的分析線索,依據這樣的線索,我們可以自頂向下逐層地得到故障樹中所有的事件[5]。
圖1 控制流程圖輔助構建故障樹
在圖1中,可能是F1、F2或F3的故障造成了頂事件的發(fā)生,根據上述方法,首先分析F2的故障,并將其可能的故障模式作為頂事件的下一層中間事件,然后分析F3的故障并將其可能的故障模式作為頂事件的下一層中間事件,最后分析F1的故障。
這里我們假設是F2的一種失效模式作為了中間事件2,然后我們便應該追溯中間事件2發(fā)生的原因。在F2的控制流程圖中,有2個并行的部分:F2.1和F2.2,因此可能是F2.1和F2.2的故障造成了F2的故障。分析F2.1與F2.2并將它們可能的故障原因作為中間事件2的下一層原因事件,由此我們可以得到基本事件2.2.1和2.2.2。
另外,控制流程圖還描述了功能模塊之間的邏輯關系,一些模塊之間是順序執(zhí)行的關系,一些模塊之間是并行關系,另一些模塊之間是冗余關系。所有的這些邏輯關系,決定了故障樹中相應的事件之間的邏輯門。例如:在圖1中,F1、F2和F3之間是順序執(zhí)行關系,它們中的任何一個失效都會造成頂事件的發(fā)生,因此它們對應的事件之間的邏輯為或門;F2.1與F2.2是并行關系,他們都失效才會造成F2的失效,因此它們對應的事件之間的邏輯關系為與門。
控制流程圖描述了軟件功能模塊的執(zhí)行順序及模塊之間的邏輯關系,能夠幫助確定故障樹中的事件及事件之間的邏輯門。
在本章中,會通過將該改善后的故障樹分析法運用到一個飛行控制系統(tǒng)中來對該方法的可行性進行驗證。飛行控制系統(tǒng)是對飛機的飛行狀態(tài)進行控制的軟件系統(tǒng),是飛機最重要的組成部分之一。飛行控制系統(tǒng)通常包括了系統(tǒng)管理模塊、控制律計算模塊、BIT模塊、故障處理模塊和其他一些模塊。由于飛行控制系統(tǒng)十分復雜,因而對其進行SFTA分析是一項非常困難和繁重的任務。在本實例中,我們利用上述的方法對該系統(tǒng)實施SFTA,以驗證該方法的可行性,分析過程如下所述。
2.1定義系統(tǒng)
飛行控制系統(tǒng)包含了安全關鍵性軟件,這對整個系統(tǒng)的安全性與可靠性具有重要的作用。飛行控制系統(tǒng)的主要功能是收集飛機飛行狀態(tài)數據及駕駛指令,計算和分析得到飛行控制律,并根據控制律將飛行控制指令發(fā)送給各個執(zhí)行器。由于飛行控制系統(tǒng)的復雜性及龐大性,不可能對整個系統(tǒng)進行分析,因而在本文中對飛行控制系統(tǒng)進行了簡化,主要對BIT系統(tǒng)進行分析。
2.2確定頂事件
大多數飛行事故都發(fā)生在起飛階段,飛機處于健康狀態(tài)是起飛能夠成功的重要因素。然而,如果一些功能模塊的失效不能被有效地檢測到,或沒有進行報警,就會造成飛機在非健康狀態(tài)下起飛,極可能造成起飛事故。因此,本文將“無起飛故障告警”作為本次SFTA的頂事件進行分析。
2.3獲取控制流程圖
首先,根據軟件需求,我們可以得到飛行控制系統(tǒng)的控制流程圖,如圖2所示,且將其定義為初始層次的控制流程圖。在該流程圖中,起飛任務發(fā)生在“地面循環(huán)任務”階段。然后,我們可以在軟件需求中得到“地面循環(huán)任務”的控制流程圖,如圖3所示。PBIT(Pre takeoff BIT)是對飛行前飛機的健康狀態(tài)進行檢測的功能模塊,它的檢測結果決定著飛行是否可以起飛,其控制流程圖如圖4所示。
圖2 飛行控制系統(tǒng)控制流程圖
圖3 地面循環(huán)任務控制流程圖
圖4 PBIT控制流程圖
2.4構建故障樹
如上面所述,將“無起飛故障告警”作為頂事件。按照本文所提供的方法對圖2所示的控制流程圖進行分析,確定地面循環(huán)任務失效、PUBIT功能喪失、無告警和初始化異常是可能會造成頂事件的失效模式,將這些失效模式作為頂事件下的第一層中間事件,由于它們之間是順序執(zhí)行的關系,故將它們之間的邏輯門定為或門。
在圖3中,通過分析這些相關的模塊,確定PBIT功能喪失、串行信號檢測異常和故障處理失效為可能造成地面循環(huán)任務失效的原因事件。由于它們之間任何一個失效都會造成地面循環(huán)任務失效,因此將它們之間的邏輯門定為或門。
如圖4所示,PBIT的檢測內容包括了CPU、RAM、電源、油壓、舵機、副翼伺服和傳感器等。通過對這些模塊進行分析,確定舵機檢測功能異常、舵機故障無告警、副翼伺服檢測功能異常、副翼伺服故障無告警、傳感器檢測功能異常、傳感器故障無告警和故障告警失效可能造成PBIT功能喪失,故將這些故障作為PBIT功能喪失的原因事件。最終構建的故障樹如圖5所示。
圖5 飛行控制系統(tǒng)故障樹
2.5獲取割集
根據所構建的故障樹,得到割集:{舵機檢測功能異常、舵機故障無告警},{副翼伺服檢測功能異常、副翼伺服故障無告警},{傳感器檢測功能異常、傳感器故障無告警},{故障告警失效}。
通過本章的實例,證明了本文所提出的方法的可行性。但限于篇幅,實例并沒有對整個的飛控系統(tǒng)進行分析。
為了提高效率,SFTA輔助工具是非常有必要的。我們也調研了諸多此類SFTA工具,其中,美國SoftRel公司的FRESTIMATE是最具專業(yè)特色的軟件可靠性分析工具,它參照了CMM、IEC 61508、DO-178B和美軍羅馬實驗室標準,能在軟件開發(fā)的概念階段對軟件的可靠性指標、耗費時間、人力和資源等進行預測,同時將SFTA、SFMEA軟件、軟件測評和軟件可靠性預計等進行了很好的結合,能夠預測軟件缺陷數、缺陷密度、MTTF、軟件嚴酷故障率、MTTCF、軟件可靠性、軟件可用性和MTSWR軟件平均恢復時間等可靠性指標。
FRESTIMATE具有如下幾個特點。
a)以軟件測試數據(例如:故障發(fā)生時間、數目和類型等)為輸入,它提供了8種權威的軟件可靠性評估模型:貝葉斯模型、二項式模型、NHPP(非齊次泊松模型)模型、失效-時間模型、故障數目模型、時間對數模型、故障數目對數模型和威布爾模型,并且擁有誤差對比功能來選擇最適用的模型。
b)不僅能夠輸出MTTF、失效率、缺陷數目、可靠度和可用度在某一時間點時的值,還可以輸出這些可靠性指標的變化趨勢圖,由此可以確定軟件何時能夠達到預定的可靠性目標。
c)同時可以對源代碼進行度量,輸出代碼的規(guī)模、嵌套復雜度和圈復雜度等。
d)數據庫中包含了100個軟件開發(fā)項目,600多個開發(fā)實踐,并且將這些與軟件可靠性相關聯,就能夠有效地為用戶提供數據與經驗支持。
通過對近百個項目的跟蹤調查,發(fā)現軟件預測功能可以減少83%的缺陷,預測誤差可以控制在5%之內;可靠性評估功能的準確性可以達到98%以上。
本文提出了一種改善型SFTA,通過將控制流程圖應用到故障樹的構建中,為故障樹的構建提供了清晰的分析線索,能夠有效地對失效原因進行追溯。該方法可以有效地降低利用SFTA對復雜性系統(tǒng)進行分析的難度和工作量,提高了分析效率。文章通過將該方法運用到一個飛行系統(tǒng)的實例證明了該方法的可行性。今后希望能夠將控制流程圖集成到SFT分析工具中,以便實現計算機輔助分析。
參考文獻:
[1]故障樹指導手冊: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] .北京:北京航空航天大學出版社,2009:243-256.
[4]沈被娜,劉祖照,姚曉冬.計算機軟件技術基礎[M] .北京:清華大學出版社,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
作者簡介:謝軼(1978-),男,京族,貴州畢節(jié)人,江南機電設計研究所高級工程師,從事綜合管理工作。
收稿日期:2016-01-04修回日期:2016-01-18
doi:10.3969/j.issn.1672-5468.2016.02.009
中圖分類號:TP 311.522
文獻標志碼:A
文章編號:1672-5468(2016)02-0041-05