周薇+劉慶生
摘 要: 武器裝備軟件在使用過程中發(fā)生失效會導致任務(wù)的失敗,從而影響軟件可靠性。軟件故障樹分析作為軟件可靠性分析的主要方法,在軟件的優(yōu)化和改進中起著重要作用。在此首先介紹了軟件故障樹分析法,結(jié)合嵌入式火控系統(tǒng)軟件特點進行軟件故障樹分析,構(gòu)造了軟件故障樹,通過求解最小割集進行定性分析和定量分析。實踐證明軟件故障樹分析有助于提高軟件在系統(tǒng)測試或投入使用后的可靠性,提升武器裝備的戰(zhàn)斗力。
關(guān)鍵字: 軟件故障樹分析; 軟件可靠性; 火控系統(tǒng); 可靠性分析
中圖分類號: TN964?34 文獻標識碼: A 文章編號: 1004?373X(2015)08?0105?04
Research on software fault tree analysis of embedded fire control system
ZHOU Wei, LIU Qing?sheng
(Jiangsu Automation Research Institute, Lianyungang 222061, China)
Abstract:The failure of weapon equipment software can lead to unsuccessful tasks during its use, and effect software reliability. Software fault tree analysis as the primary method of software reliability analysis plays an important role in software optimization and improvement. The software fault tree analysis method is introduced in this paper. The software fault tree analysis is performed in combination with the characteristics of embedded fire control system. The qualitative and quantitative analyses are carried out by solving the minimal cut sets. Practice proves that the software fault tree analysis is conducive to improvement of software reliability in system testing or application, and improvement of the combat ability of weapon equipments.
Keywords: software fault tree analysis; software reliability; fire control system; reliability analysis
0 引 言
當今火控系統(tǒng)作為復雜的嵌入式裝備系統(tǒng),對軟件提出更高的質(zhì)量和可靠性要求。相比硬件的高可靠性,軟件的質(zhì)量和可靠性卻不如人意,軟件失效往往比硬件失效高一個數(shù)量級,因此應(yīng)該從軟件需求階段開始,在軟件開發(fā)周期的全過程開展軟件可靠性分析。
軟件的可靠性是指在規(guī)定的條件下和規(guī)定的時間內(nèi)軟件不引起系統(tǒng)失效的概率[1]。軟件發(fā)生的失效次數(shù)越多,發(fā)生失效的時間間隔越短,軟件越不可靠,軟件的失效往往經(jīng)歷了開發(fā)過程中的開發(fā)人員產(chǎn)生的錯誤到軟件產(chǎn)品中存在缺陷進而導致軟件運行時的失效,因此如何避免和預防缺陷是提高軟件可靠性的根本途徑。
軟件可靠性分析作為一種缺陷檢測排除技術(shù),主要是在軟件設(shè)計過程中對可能發(fā)生的失效進行分析,采取必要的措施避免缺陷引入軟件,軟件可靠性分析主要包括軟件失效模式和影響分析(SFMEA)和軟件故障樹分析(Software Fault Tree Analysis,SFTA),由于軟件故障樹分析方法主要用于分析大型復雜系統(tǒng)的可靠性和安全性,被公認為目前有效的軟件可靠性分析方法。
1 軟件故障樹分析
軟件故障樹分析法就是在軟件設(shè)計過程中,對系統(tǒng)可能產(chǎn)生的故障進行分析,按自頂向下的方法畫出邏輯框圖(故障樹),確定故障原因的各種組合方式或發(fā)生概率。軟件故障樹分析的結(jié)果可以用來指導軟件的設(shè)計,確定軟件關(guān)鍵故障發(fā)生的運行條件,提高軟件可靠性和安全性的一種設(shè)計分析方法[2?4]。
在進行軟件故障樹分析時,首先要確定頂事件(不希望發(fā)生的故障事件),頂事件可能是來源于系統(tǒng)設(shè)計、使用、維護相關(guān)的危險因素,也可能來源于軟件失效模式影響分析或是來源于軟件需求規(guī)格說明中提出的要求。然后分析頂事件產(chǎn)生的原因,使用邏輯門與頂事件連接,逐步深入,直到追溯到導致頂事件發(fā)生的全部原因(基本事件)為止。故障樹分析不僅能分析單一故障引起的系統(tǒng)失效,還可以表達各種失效原因之間的邏輯關(guān)系,可以分析多個軟件部件或功能模塊的失效對系統(tǒng)造成的影響。
軟件故障樹分析過程如下:
(1) 對軟件進行風險分析,確定軟件中的關(guān)鍵故障事件;
(2) 對每一個關(guān)鍵故障事件,構(gòu)造故障樹,并且規(guī)范故障樹;
(3) 對故障樹進行分解,確定割集和最小割集;
(4) 對故障樹進行定性分析或定量計算,確定關(guān)鍵模塊,確定關(guān)鍵故障的發(fā)生概率;
(5) 根據(jù)故障發(fā)生的概率結(jié)果指導軟件設(shè)計及測試。
2 嵌入式火控軟件故障樹分析
嵌入式火控系統(tǒng)軟件的功能狀態(tài)檢測以及故障診斷在裝備綜合保障中起著重要作用,軟件故障樹分析法用于功能結(jié)構(gòu)復雜的嵌入式火控系統(tǒng)安全性、可靠性等風險分析和故障診斷。通過對造成軟件故障的各種因素進行分析,建立故障樹模型,確定故障發(fā)生的可能原因和發(fā)生概率。
由于火控系統(tǒng)包含的子系統(tǒng)和軟件模塊很多,其故障可能來源于子系統(tǒng)設(shè)備硬件故障,也可能來自軟件本身的設(shè)計缺陷,或運行環(huán)境的變化甚至是操作人員的誤操作等[5?6]。對火控系統(tǒng)進行故障分析,可以發(fā)現(xiàn)潛在的故障因素、對軟件今后的研制和試驗提供信息基礎(chǔ)。
下面以某火控系統(tǒng)軟件為例進行故障樹分析。
2.1 分析系統(tǒng)
根據(jù)火控軟件的需求規(guī)格說明、設(shè)計說明等文檔,了解了火控系統(tǒng)任務(wù)使命、主要功能和軟件結(jié)構(gòu)組成,弄清了火控系統(tǒng)軟件及其子模塊故障邏輯關(guān)系。
火控系統(tǒng)由跟蹤器、火控設(shè)備、接口設(shè)備組成,火控設(shè)備接收外圍的指控系統(tǒng)的目標指示數(shù)據(jù)和命令,跟蹤器捕獲跟蹤目標,接收跟蹤數(shù)據(jù)和導航、氣象等設(shè)備相關(guān)數(shù)據(jù)信息進行求取目標運動參數(shù),解算射擊諸元,通過接口設(shè)備控制武器指向目標未來點,等到目標進入武器的射擊區(qū)域內(nèi),控制武器發(fā)射。
火控系統(tǒng)按功能模塊可以劃分為:
(1) 目標指示數(shù)據(jù)收發(fā)處理功能(接收指控系統(tǒng)的目標指示數(shù)據(jù),向跟蹤器發(fā)送目標指示);
(2) 操控與顯示功能(能進行人機交互操作,可以進行數(shù)據(jù)裝訂,系統(tǒng)狀態(tài)及表頁圖形綜合顯示);
(3) 火控解算功能(根據(jù)目標跟蹤數(shù)據(jù),濾波求取目標運動參數(shù)和解算射擊諸元);
(4) 戰(zhàn)術(shù)軟件功能(具有火力通道組織和射擊指揮輔助決策功能);
(5) 跟蹤器武器控制功能(跟蹤器控制、控制武器發(fā)射等功能);
(6) 系統(tǒng)故障檢測和顯示功能(對設(shè)備模塊單元進行故障檢測及結(jié)果顯示);
(7) 數(shù)據(jù)記錄和復現(xiàn)功能(可以記錄各工作狀態(tài)下的數(shù)據(jù)和命令信息的,可在記錄結(jié)束后回放相關(guān)的數(shù)據(jù));
(8) 設(shè)備間接口通信功能(實現(xiàn)系統(tǒng)內(nèi)部和外部設(shè)備之間的通信功能);
(9) 模擬訓練功能(模擬訓練狀態(tài)下自定義的航路進行解算,對解題精度進行統(tǒng)計功能)。
2.2 確定頂事件構(gòu)造軟件故障樹
采用分層策略,選取獨立的功能模塊事件建立故障樹分析,首先確定故障分析樹的頂事件作為故障樹的“根”節(jié)點,寫在第一行,然后在其下面并列地寫出頂事件發(fā)生的直接原因,放在第二行,并用邏輯門與頂事件相連,作為故障樹的“節(jié)”。逐步深入直到追溯到導致頂事件發(fā)生的全部原因(底事件)為止。
軟件故障樹分析不適宜在編碼層次上對整個火控系統(tǒng)進行分析,這里僅對火控系統(tǒng)的火控解算功能故障進行模塊級的分析。對嵌入式火控系統(tǒng)軟件故障分析時,不考慮硬件故障、支撐軟件故障、系統(tǒng)軟件故障,而是主要考慮應(yīng)用軟件故障。
嵌入式火控軟件大多為實時控制軟件,往往要求強實時性,它的執(zhí)行結(jié)果的正確性不僅與程序邏輯計算的輸出有關(guān),而且與程序執(zhí)行的先后次序相關(guān),火控解算軟件必須對跟蹤數(shù)據(jù)實時解算以控制武器實時指向目標未來點,如果解算滯后一個周期,就會使武器擊不中目標。將火控解算結(jié)果錯誤作為頂事件,各子模塊故障作為中間事件以“或”連接,經(jīng)過自頂向下逐級分解最終構(gòu)造出完整的故障樹[7?8]。
圖1是火控解算模塊故障樹,相關(guān)的頂事件、中間事件、底事件具體見表1。
2.3 求解最小割集
構(gòu)造完火控解算模塊的故障樹后,開始分析故障樹的割集和最小割集[9]。識別最小割集是軟件故障樹定性分析的基礎(chǔ),割集是引起頂事件發(fā)生的底事件的集合。最小割集就是不包含任何冗余因素的割集。最小割集常采用下行法分析,當遇到“與門”增加割集的階數(shù)( 割集所含底事件數(shù)目),將每個輸入事件列入同一行;遇到“或門”增加割集的個數(shù),將每個事件依次列入不同的行。表2為最小割集求解過程表。
根據(jù)上述列出的表格最后一列的每一行都是故障樹的割集,再通過割集之間的比較,進行合并消元,最終可得最小割集為{X1}、{X2}、{X3}、{X8,X4}、{X5}、{X6}、{X7}、{X9,X10}。
2.4 進行軟件故障樹定性分析
最小割集求解完畢后,對最小割集及底事件的重要性進行排序比較,并將結(jié)果應(yīng)用于指導故障診斷,或提示改進系統(tǒng)的方向。根據(jù)最小割集所包含的底事件數(shù)目(階數(shù))排序,最小割集的定性比較一般遵循的原則如下:
(1) 故障樹分支越少(最小割集的個數(shù)越少),系統(tǒng)發(fā)生故障可能性越小。
(2) 低階最小割集對系統(tǒng)的影響大,更容易使得系統(tǒng)發(fā)生故障;
(3) 低階最小割集中的底事件比高階最小割集中的底事件重要;
表2 最小割集求解過程
(4) 不同的最小割集中重復出現(xiàn)次數(shù)越多的底事件越重要。
綜合上述原則上述例子中{X1}、{X2}、{X3}、{X5}、{X6}、{X7}是一階割集且是最重要的最小割集,因此報文解析錯誤、坐標變換錯誤、求未來點錯誤、射表錯誤、校正量修正符號錯誤、校正量單位錯誤是最重要的底事件。
2.5 進行軟件故障樹定量分析
故障樹的定量分析是當已知每個底事件的發(fā)生概率,可以根據(jù)軟件故障樹的邏輯關(guān)系,計算或估量頂事件的發(fā)生概率。故障樹頂事件發(fā)生的概率
由上述公式可知,首先一次取出單個割集的概率和,再減去一次取出兩個割集的交集概率和,再加上一次取出三個割集的交集概率和,可得到軟件系統(tǒng)實際的失效概率[10]。當計算出每一連序加和并加入正運算的和時,其結(jié)果交替地超過(當加上該項時)或低于(當減去該項時)的理論概率值。因此,僅使用上式中的前兩項就可確定系統(tǒng)失效概率的范圍。
假設(shè)上述的火控解算模塊故障樹每個底事件發(fā)生概率為:
2.6 結(jié) 論
通過以上針對嵌入式火控系統(tǒng)特點進行軟件故障樹分析可知軟件故障樹定量分析需要知道每個底事件發(fā)生的概率,然而在實際工程應(yīng)用中往往難以獲得,故障樹分析的意義在于根據(jù)分析結(jié)果找到關(guān)鍵故障發(fā)生的原因,因此其重點在于定性分析。通過在典型工程項目的測試實踐,可以針對軟件故障樹分析的最小割集,按照底事件的重要性優(yōu)先設(shè)計測試用例,提高了軟件測試的效率,保證了軟件的可靠性。
3 結(jié) 語
本文利用軟件故障樹分析法對嵌入式火控系統(tǒng)軟件進行故障分析,對引起火控解算故障的可能因素和相互的邏輯關(guān)系呈現(xiàn)出來,建立了故障樹模型,并對故障樹進行了定性和定量分析,為故障預測或軟件容錯設(shè)計等減少故障危害提供了信息基礎(chǔ)。
參考文獻
[1] 陸民燕.軟件可靠性工程[M].北京:國防工業(yè)出版社,2011.
[2] 孫志安,裴曉黎,宋昕,等.軟件可靠性工程[M].北京:北京航空航天大學出版社,2009.
[3] 周濤.航天型號軟件測試[M].北京:宇航出版社,1999.
[4] 徐仁佐.軟件可靠性工程[M].北京:清華大學出版社,2007.
[5] 蘇健,陳玉強,陳軍偉,等.基于故障樹分析的火控系統(tǒng)故障診斷專家系統(tǒng)設(shè)計[J].計算機測量與控制,2013,21(11):2008?2010.
[6] 范東麗.嵌入式軟件測試技術(shù)的研究[D].哈爾濱:哈爾濱工程大學,2006.
[7] 胡濤.軟件故障樹分析技術(shù)與應(yīng)用研究[D].北京:北京工業(yè)大學,2009.
[8] 管瑩瑩.潘冠華.艦載指控系統(tǒng)的軟件故障樹分析[J].指揮控制與仿真,2008,30(2):112?114.
[9] 朱敏.嵌入式軟件故障樹分析及其基于OpenFTA的實現(xiàn)[J].計算機應(yīng)用與軟件,2012,29(9):258?260.
[10] 朱云鵬.基于軟件故障樹分析法的軟件測試技術(shù)研究[J].計算機工程與設(shè)計,2008,29(13):3387?3389.