文/朱文釗
軟件故障樹方法被稱為SFTA (Software Fault Tree Analysis)方法,從硬件的FTA方法引申拓展到軟件層面上得到的一種分析方法。建立軟件故障樹是SFTA方法的關鍵。軟件故障樹是從一個基本系統的失效事件著手,對軟件進行分析,找出引發故障的基本事件。故障樹的根節點是SFTA的頂事件,也是可能產生的故障。根據頂事件繼續找到導致其發生的下層的原因,直到不能被繼續分解的基礎事件為止。
專家系統的基本框架由知識庫和推理機組成,見圖1。知識庫用于存儲已有的事件和故障原因。推理機是實施問題求解的核心執行機構,推理機使用知識庫中的知識進行推理來解決問題。
航電軟件是直升機機載設備中與航電設備有關的軟件,我們以操作飛行軟件為例。操作飛行軟件是駐留在顯控處理單元中的實時嵌入式軟件,通過總線與任務機中的多功能顯示器軟件、飛控軟件、機電顯示控制軟件、通信設備及其他航電子系統進行信息交互,完成航電系統的系統管理、分系統自檢、系統狀態監控、故障管理、航電任務數據加載等功能,并根據不同的任務階段和子系統的工作狀態,完成畫面調度并形成相應的畫面顯示數據。表1描述了操作飛行軟件中主要實現的功能。
對操作飛行軟件建立軟件故障樹,目的是將可能影響到操作飛行軟件運行的故障原因找出,明確其中各因素的因果邏輯,選取操作飛行軟件故障作為故障樹的頂事件。由表1能夠推斷出操作飛行軟件的主要故障源,見表2。
我們以操作飛行軟件中的與通信相關的通信子系統為例。通信設備一般包含超短波電臺、短波電臺、羅盤、塔康等設備。操作飛行軟件與這些設備通過總線進行信息交互,當存在軟件故障時,多導致通信無效,在操作飛行軟件上表現為設備下線、顯示出現問題或無法完成相應的功能。
在軟件運行中由于硬件問題而產生的故障,發生的幾率很低,在忽略它的前提下對操作飛行軟件的故障源進行分析。一般來說,軟件故障樹建立在軟件控制流程的基礎上。我們在分析軟件故障的產生原因時,由于不滿足規則語法的錯誤在靜態測試階段已經得到驗證,故而在動態測試階段不做這方面的考慮。操作飛行軟件的功能決定了一般有三類導致通信出現問題的地方,分別是畫面顯示錯誤、輸入輸出的接口錯誤和變量的使用錯誤。
從圖2、圖3中的故障樹可以看出,操作飛行軟件出現故障的原因是各個子系統出現了故障,通過分析底層的事件對于頂層的故障的影響程度的高低,我們可以找到對故障產生影響最大,最有效的底部基本事件。通過建立的操作飛行軟件故障樹,可以判斷出哪些部件是影響軟件運行的關鍵單元,在進行測試時需要對其重點關注,能夠有效的提高測試質量。

圖1:專家系統構成

圖2:操作飛行軟件故障樹

圖3:通信子系統故障
根據得到的操作飛行軟件故障樹,我們將故障樹中的各結點輸入到專家系統的知識庫中,這樣就實現了專家系統的知識積累。推理機使用專家系統常用的“IF(條件),THEN(某種判斷),ELSE(某種判斷)”進行判斷[4]。
傳統的專家系統使用產生式表示法、框架表示法和語義網絡表示法,這里我們采用的是產生式表示法和框架表示法。將通信子系統故障作為頂事件,分成幾大模塊,然后逐步對每個模塊進行細化和分解,形成相應的故障樹圖,進而獲得知識積累。建立一個故障數據庫,其中每一條記錄對應一個故障的原因、現象和解決方案。這些記錄可以組成一個表格。如表3所示。
例如在測試中發現當在超臺輸入頻率為29.9995~29.9999Mhz時,操作飛行軟件顯示的是30Mhz。查出故障原因是畫面顯示函數未對頻率做范圍檢查,導致顯示時進位顯示,超出正常的頻率范圍。在排故時,首先查看操作飛行軟件和通信設備的接口輸入輸出,接著查看畫面顯示函數,然后打印變量值,從而定位故障源。將軟件問題和相應的排故步驟以及故障源建立一個表格。見表4。

表1:操作飛行軟件主要功能

表2:操作飛行軟件主要故障源

表3:通信子系統故障樹示意

表4:故障診斷追蹤表
Fault1:超臺輸入頻率后顯示錯誤;
Step1:檢查操作飛行軟件和通信設備的輸入輸出接口;
Step2:檢查畫面顯示;
Step3:打印變量值;
Cause1:畫面顯示函數未對頻率做范圍檢查,導致顯示時進位顯示。
上面模擬了軟件開發人員在定位故障時的思維方式。
將建立的故障樹中的故障基本事件、故障診斷追蹤表中的故障現象及其相應的診斷步驟和故障源導入專家系統中,當在其他型號的航電軟件測試時,將測試過程中發現的故障表征輸入專家系統進行查詢,如之前的知識庫中存在類似現象的故障,則能夠迅速的定位故障原因,有效的提升了測試效率。
用軟件故障樹分析法對航電操作飛行軟件的故障進行分析,通過軟件故障樹將影響故障的全部可能因素及其相互之間的因果邏輯關系呈現出來,在此基礎上建立相應故障的故障原因追蹤表,將其輸入專家系統中,在其他型號的航電操作飛行軟件測試中使用,能夠幫助迅速定位故障原因,提升軟件測試效率。