文/朱文釗
軟件故障樹方法被稱為SFTA (Software Fault Tree Analysis)方法,從硬件的FTA方法引申拓展到軟件層面上得到的一種分析方法。建立軟件故障樹是SFTA方法的關(guān)鍵。軟件故障樹是從一個基本系統(tǒng)的失效事件著手,對軟件進(jìn)行分析,找出引發(fā)故障的基本事件。故障樹的根節(jié)點是SFTA的頂事件,也是可能產(chǎn)生的故障。根據(jù)頂事件繼續(xù)找到導(dǎo)致其發(fā)生的下層的原因,直到不能被繼續(xù)分解的基礎(chǔ)事件為止。
專家系統(tǒng)的基本框架由知識庫和推理機組成,見圖1。知識庫用于存儲已有的事件和故障原因。推理機是實施問題求解的核心執(zhí)行機構(gòu),推理機使用知識庫中的知識進(jìn)行推理來解決問題。
航電軟件是直升機機載設(shè)備中與航電設(shè)備有關(guān)的軟件,我們以操作飛行軟件為例。操作飛行軟件是駐留在顯控處理單元中的實時嵌入式軟件,通過總線與任務(wù)機中的多功能顯示器軟件、飛控軟件、機電顯示控制軟件、通信設(shè)備及其他航電子系統(tǒng)進(jìn)行信息交互,完成航電系統(tǒng)的系統(tǒng)管理、分系統(tǒng)自檢、系統(tǒng)狀態(tài)監(jiān)控、故障管理、航電任務(wù)數(shù)據(jù)加載等功能,并根據(jù)不同的任務(wù)階段和子系統(tǒng)的工作狀態(tài),完成畫面調(diào)度并形成相應(yīng)的畫面顯示數(shù)據(jù)。表1描述了操作飛行軟件中主要實現(xiàn)的功能。
對操作飛行軟件建立軟件故障樹,目的是將可能影響到操作飛行軟件運行的故障原因找出,明確其中各因素的因果邏輯,選取操作飛行軟件故障作為故障樹的頂事件。由表1能夠推斷出操作飛行軟件的主要故障源,見表2。
我們以操作飛行軟件中的與通信相關(guān)的通信子系統(tǒng)為例。通信設(shè)備一般包含超短波電臺、短波電臺、羅盤、塔康等設(shè)備。操作飛行軟件與這些設(shè)備通過總線進(jìn)行信息交互,當(dāng)存在軟件故障時,多導(dǎo)致通信無效,在操作飛行軟件上表現(xiàn)為設(shè)備下線、顯示出現(xiàn)問題或無法完成相應(yīng)的功能。
在軟件運行中由于硬件問題而產(chǎn)生的故障,發(fā)生的幾率很低,在忽略它的前提下對操作飛行軟件的故障源進(jìn)行分析。一般來說,軟件故障樹建立在軟件控制流程的基礎(chǔ)上。我們在分析軟件故障的產(chǎn)生原因時,由于不滿足規(guī)則語法的錯誤在靜態(tài)測試階段已經(jīng)得到驗證,故而在動態(tài)測試階段不做這方面的考慮。操作飛行軟件的功能決定了一般有三類導(dǎo)致通信出現(xiàn)問題的地方,分別是畫面顯示錯誤、輸入輸出的接口錯誤和變量的使用錯誤。
從圖2、圖3中的故障樹可以看出,操作飛行軟件出現(xiàn)故障的原因是各個子系統(tǒng)出現(xiàn)了故障,通過分析底層的事件對于頂層的故障的影響程度的高低,我們可以找到對故障產(chǎn)生影響最大,最有效的底部基本事件。通過建立的操作飛行軟件故障樹,可以判斷出哪些部件是影響軟件運行的關(guān)鍵單元,在進(jìn)行測試時需要對其重點關(guān)注,能夠有效的提高測試質(zhì)量。
圖1:專家系統(tǒng)構(gòu)成
圖2:操作飛行軟件故障樹
圖3:通信子系統(tǒng)故障
根據(jù)得到的操作飛行軟件故障樹,我們將故障樹中的各結(jié)點輸入到專家系統(tǒng)的知識庫中,這樣就實現(xiàn)了專家系統(tǒng)的知識積累。推理機使用專家系統(tǒng)常用的“IF(條件),THEN(某種判斷),ELSE(某種判斷)”進(jìn)行判斷[4]。
傳統(tǒng)的專家系統(tǒng)使用產(chǎn)生式表示法、框架表示法和語義網(wǎng)絡(luò)表示法,這里我們采用的是產(chǎn)生式表示法和框架表示法。將通信子系統(tǒng)故障作為頂事件,分成幾大模塊,然后逐步對每個模塊進(jìn)行細(xì)化和分解,形成相應(yīng)的故障樹圖,進(jìn)而獲得知識積累。建立一個故障數(shù)據(jù)庫,其中每一條記錄對應(yīng)一個故障的原因、現(xiàn)象和解決方案。這些記錄可以組成一個表格。如表3所示。
例如在測試中發(fā)現(xiàn)當(dāng)在超臺輸入頻率為29.9995~29.9999Mhz時,操作飛行軟件顯示的是30Mhz。查出故障原因是畫面顯示函數(shù)未對頻率做范圍檢查,導(dǎo)致顯示時進(jìn)位顯示,超出正常的頻率范圍。在排故時,首先查看操作飛行軟件和通信設(shè)備的接口輸入輸出,接著查看畫面顯示函數(shù),然后打印變量值,從而定位故障源。將軟件問題和相應(yīng)的排故步驟以及故障源建立一個表格。見表4。
表1:操作飛行軟件主要功能
表2:操作飛行軟件主要故障源
表3:通信子系統(tǒng)故障樹示意
表4:故障診斷追蹤表
Fault1:超臺輸入頻率后顯示錯誤;
Step1:檢查操作飛行軟件和通信設(shè)備的輸入輸出接口;
Step2:檢查畫面顯示;
Step3:打印變量值;
Cause1:畫面顯示函數(shù)未對頻率做范圍檢查,導(dǎo)致顯示時進(jìn)位顯示。
上面模擬了軟件開發(fā)人員在定位故障時的思維方式。
將建立的故障樹中的故障基本事件、故障診斷追蹤表中的故障現(xiàn)象及其相應(yīng)的診斷步驟和故障源導(dǎo)入專家系統(tǒng)中,當(dāng)在其他型號的航電軟件測試時,將測試過程中發(fā)現(xiàn)的故障表征輸入專家系統(tǒng)進(jìn)行查詢,如之前的知識庫中存在類似現(xiàn)象的故障,則能夠迅速的定位故障原因,有效的提升了測試效率。
用軟件故障樹分析法對航電操作飛行軟件的故障進(jìn)行分析,通過軟件故障樹將影響故障的全部可能因素及其相互之間的因果邏輯關(guān)系呈現(xiàn)出來,在此基礎(chǔ)上建立相應(yīng)故障的故障原因追蹤表,將其輸入專家系統(tǒng)中,在其他型號的航電操作飛行軟件測試中使用,能夠幫助迅速定位故障原因,提升軟件測試效率。