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