摘要: 本文介紹了軟件可靠性技術的發展情況,對各種軟件可靠性分析模型進行了分類評述,分析了軟件可靠性工程的發展趨勢。
關鍵詞: 軟件工程 可靠性模型 趨勢分析
1 軟件危機
隨著計算機技術迅猛發展,軟件的銷售量和使用量呈幾何級數增長,軟件的規模也越來越大,復雜性急劇提高。例如,航天飛機的飛行軟件達50萬行源代碼,F-22戰斗機更達150多萬行源代碼,軟件失效已成為系統癱瘓的主要原因。根據美國國防部和NASA的統計,當今武器系統和航天項目中的軟件可靠性比硬件系統大約低一個數量級。因軟件故障而造成的重大事故也不乏其例,如F-18戰斗機在海灣戰爭中,飛行控制軟件共發生了500多次故障,愛國者導彈因軟件問題誤傷了28名美國士兵;阿里安5型火箭的發動機控制系統軟件的錯誤導致飛行試驗失敗等。軟件危機使得軟件可靠性研究在國際上十分活躍。
2.影響軟件可靠性的主要因素
軟件產品是由某一計算機語言寫成的語句有序集合,也就是計算機程序。它的作用是將輸入轉換成相應的輸出,可以用一映射函數f表示。軟件可靠性是指在給定時間內,特定環境下軟件無錯運行的概率。影響軟件可靠性的因素主要包括:
1)軟件規模;
2)軟件對實際需求的表述上的符合度;
3)軟件的運行剖面;
4)軟件的內部結構,即軟件復雜度;
5)軟件的開發方法;
6)軟件開發人員的能力和經驗;
7)軟件開發的支持環境;
8)軟件可靠性設計技術;
9)軟件的測試與投放方式等。
如何準確評價/預計軟件的使用可靠性是軟件工程的重大問題之一。
3.軟件可靠性模型及其分類
一個有效的軟件可靠性模型應盡可能地將上面所述的因素在軟件可靠性建模時加以考慮,盡可能簡明地反映出來。自1972年第一個軟件可靠性分析模型發表的二十多年來,見之于文獻的軟件可靠性統計分析模型將近百種。
這些可靠性模型大致可分為10類[1]:
1)種子法;
2)失效率類;
3)曲線擬合類;
4)可靠性增長模型;
5)程序結構分析模型;
6)輸入域分類模型;
7)執行路徑分析方法模型;
8)非齊次Poisson過程模型;
9)馬爾可夫過程模型;
10)貝葉斯模型類。
種子法
這是利用捕獲—再捕獲抽樣技術估計程序中錯誤數。在程序中預先有意“播種”一些設定的錯誤“種子”,然后根據測試出的原始錯誤數和發現的誘導錯誤的比例來估計程序中殘留的錯誤數。其優點是簡便易行,缺點是誘導錯誤的“種子”與實際的原始錯誤之間的類比性估量困難。
失效率分析
這類模型用來研究程序的失效率的。因為MTBF是失效率的倒數,所以以MTBF為分析直接變量的模型亦屬于此類。這類模型有
1)Jelinski-Moranda的de-eutrophication模型
2)Jelinski-Moranda的幾何de-eutrophication模型
3)Schick-Wolverton模型
4)改進的Schick-Wolverton模型
5)Moranda的幾何Poisson模型
6)Goal和Okumoto不完全排錯模型
曲線擬合
用回歸分析的方法研究軟件復雜性、程序中的缺陷數、失效率、失效間隔時間。包括參數方法和非參數方法。
可靠性增長
預測軟件在檢錯過程中的可靠性改進,用一增長函數來描述軟件的改進過程。這類模型有:
1)Duane模型
2)Weibull模型
3)Wagoner的Weibull改進模型
4)Yamada和Osaki的邏輯增長曲線
5)Gompertz的增長曲線
程序結構分析
程序結構模型是根據程序、子程序及其相互間的調用關系,形成一個可靠性分析網絡。網絡中的每一結點代表一個子程序或一個模塊,網絡中的每一有向弧代表模塊間的程序執行順序。假定各結點的可靠性是相互獨立的,通過對每一個結點可靠性、結點間轉換的可靠性和網絡在結點間的轉換概率,得出該持續程序的整體可靠性。在軟件測試領域,有人形象地稱這種方法為“白盒子”方法(white box)。這類模型有:
1)Littewoood馬爾可夫結構模型
2)Cheung的面向用戶的馬爾可夫模型
輸入域
選取軟件輸入域中的某些樣本“點”運行程序,根據這些樣本點在“實際”使用環境中的使用概率的測試運行時的成功率/失效率,推斷軟件的使用可靠性。這類模型的重點(亦是難點)是輸入域的概率分布的確定及對軟件運行剖面的正確描述。這種方法不考慮軟件的結構和運行路徑及開發過程,亦稱“黑盒子”方法(black box)。這類模型有兩個:
1)Nelson模型
2)Bastani的基于輸入域的隨機過程模型
執行路徑
文章來源于領測軟件測試網 http://www.kjueaiud.com/