摘要:故障樹分析法FTA(Fault Tree Analysis)是硬件可靠性、安全性分析的傳統(tǒng)技術工具。20世紀80年代,軟件的可靠性和安全性開始成為科技界關注的課題,為了適應軟件可靠性和安全性分析的需要,故障樹分析法被移植到軟件這個新領域。故障樹分析是很重要的軟件分析方法。本文主要介紹了軟件故障樹分析(SFTA)的概念、分析步驟、用途和局限性,并結合軟件實例加以說明。
關鍵詞:軟件;故障樹分析
1引言
經(jīng)過20年不斷的應用和創(chuàng)新,現(xiàn)在軟件故障樹分析已經(jīng)成為軟件分析的重要手段并稱為SFTA(Software Fault Tree Analysis)。軟件故障樹分析是要證明軟件系統(tǒng)將不完成任何不希望的或意外的功能。軟件故障樹分析極具應用潛力,在軟件開發(fā)的早期,可以用故障樹分析來確定軟件的安全要求,進入概要設計、詳細設計設計和實現(xiàn)階段,可以對故障樹加以擴充,繼續(xù)進行更深入的分析。
2 軟件故障樹分析的基本概念
軟件故障樹分析可以簡單地被看作是這樣一種分析方法,在這個分析方法中,先確定軟件中一個不希望發(fā)生的事件,然后在一定的環(huán)境與工作條件下,對軟件進行分析,找出不希望發(fā)生事件發(fā)生的確切方式,即找出不希望事件發(fā)生的各種原因。這個不希望發(fā)生的事件,我們稱之為“頂事件”,也就是故障樹的“樹根”。接著,我們要繼續(xù)找出不希望發(fā)生事件發(fā)生的各種下層的直接原因,并分析它們之間的邏輯關系,一直做到基層是不能再分析的事件,或者是被認為不需要再分析的事件時為止。
軟件的故障樹就是將風險事件通過各種邏輯關系(“與”或“或”門)順序組合的圖示模型。故障樹主要有下列三種事件項目。
基本事件:不能再進一步展開的或無需再進一步展開的基本初始故障事件。
中間事件:一個邏輯門的一個或多個輸入事件發(fā)生的故障事件。
頂事件:在一次故障樹分析中,想要分析的最高層的不希望發(fā)生的事件。
故障樹中事件之間的邏輯關系是由邏輯門表示的。故障樹中常用的邏輯門是邏輯“與門”和邏輯“或門”。軟件故障樹分析的只是人們最為關心的特定故障模式的頂事件。所以故障樹并不包含全部的故障,只包括分析者認為最可能發(fā)生的或風險最大的故障。
3 軟件故障樹分析的步驟
完成軟件故障樹分析需要以下幾個步驟:
找出用戶不能容忍的系統(tǒng)故障。軟件系統(tǒng)中的故障如:信息的丟失、錯報、錯投、泄露等,指的是系統(tǒng)層次的主要故障。系統(tǒng)要完成的每個功能都有一些與該功能相關的潛在故障。
建造故障樹。對確定的故障按系統(tǒng)層次逐級展開,找出可能導致故障發(fā)生的基本事件。在軟件系統(tǒng)中,基本事件指可能產(chǎn)生不正確的結果或接受不正確的輸入的軟件模塊,或者是不正確的參數(shù)初始化,或者內存溢出等。

故障樹定性分析和定量分析。定性分析可以識別導致頂事件發(fā)生的所有故障模式集合;幫助分析人員找出非常可能導致系統(tǒng)故障的關鍵模塊,發(fā)現(xiàn)薄弱環(huán)節(jié);可以幫助確定在哪些基本事件或環(huán)節(jié)進行徹底測試或提供檢測恢復模塊。
故障樹分析最好在軟件設計期間、編碼完成之前進行,這是為了使所設計的軟件能避免或容忍已確定的故障。
4 軟件故障樹分析舉例
該實例是某培訓單位的學員選課信息修改系統(tǒng)。學員的個人選課信息都保存在“course”數(shù)據(jù)庫。學員可以通過安全驗證登錄數(shù)據(jù)庫,并修改個人的選課信息。當學員的個人選課資料被修改,系統(tǒng)會批準相應的修改,并更新數(shù)據(jù)庫中的數(shù)據(jù)。系統(tǒng)流程圖如圖1所示。
確定頂事件為在學員執(zhí)行所有需要的操作后,系統(tǒng)不能完成更新學員個人選課信息的任務。在這個事件中,系統(tǒng)不能更新學員信息的直接原因或者是由于數(shù)據(jù)庫的修改程序破壞,或者是用戶無法正常登錄系統(tǒng),或者是登錄后無法輸入信息。對于無法正常登錄這一事件,其直接原因或者是登錄頁面無法正常顯示,或者是系統(tǒng)驗證程序失效。根據(jù)以上分析,故障樹建造如圖2所示。
軟件故障樹分析最重要的意義在于,根據(jù)分析的結果可以找出關鍵性的安全事故發(fā)生的原因,可以用于指導軟件的安全性設計和測試、確定軟件測試的重點和內容,使系統(tǒng)的安全得到更充分的保證。軟件故障樹分析中揭示的系統(tǒng)失效的條件,可以用來識別系統(tǒng)的不安全狀態(tài),決定在什么情況下應該必須采取失效-安全措施。
軟件故障樹分析可以用于軟件壽命周期的各種階段:在軟件設計階,軟件故障樹分析對安全性保障和發(fā)現(xiàn)、消除潛在的風險方面有很有益的影響。軟件故障樹分析用于開發(fā)測試用例,可以驗證潛在的風險會不會發(fā)生。軟件故障樹分析用于設計和編碼階段,可以有意的進行特殊的設計和編碼,以便將那些已經(jīng)識別的風險相對于要保持故障容錯的軟件區(qū)域隔離起來。軟件故障樹分析用于測試階段,可以有助于有針對性地設計測試輸入,以便驗證以識別的風險是否存在。
5 軟件故障樹的局限性
軟件故障樹分析法存在固有的局限性。SFTA的分析工作相當繁瑣費時,實際上不可能在編碼的層次對整個系統(tǒng)進行徹底的分析,所以軟件故障樹分析法一般只限于在程序的安全關鍵部位使用。不顧這種客觀存在的約束,企圖將軟件故障樹分析方法拓展為一般的可靠性分析工具的作法是不明智的。此外不能因為應用了軟件故障樹分析,就在設計中放棄避錯、查錯措施,軟件故障樹分析法很難考慮系統(tǒng)的時間效應及環(huán)境條件導致的失效,系統(tǒng)的各種接口中的問題,也不能僅僅靠軟件故障樹分析來解決。在對實時系統(tǒng)進行分析時,軟件故障樹分析的這些特點,應該予以充分的考慮。
結束語
故障樹分析方法作為一種重要的可靠性分析方法,在硬件的應用已經(jīng)很成熟,而在軟件的可靠性分析中的應用還很少。而對于軟件系統(tǒng),特別對于安全性要求嚴格的軟件系統(tǒng),這種分析方法具有很大的潛在研究價值,需要研究很多問題,做很多開發(fā)工作。
參考文獻
[1]《軟件的可靠性與安全性》[M],黃錫滋編著,科學出版社,1993
[2]《軟件質量工程》[M] 洪倫耀 董云衛(wèi)編著,西安電子科技大學出版社,2004
[3]《系統(tǒng)可靠性設計分析》[M],曾聲奎等編著,北京航空航天大學出版社,2001
[4]《軟件可靠性》[M],何國偉等編著,國防工業(yè)出版社,1998
[5]《故障樹分析技術在軟件測試中的應用》[J] 劉文紅等,《系統(tǒng)工程與電子技術》,2004.07月,第26卷,第7期