這類模型的分析方法與上面的模型相似,先計算程序各邏輯路徑的執行概率和程序中錯誤路徑的執行概率,再綜合出該軟件的使用可靠性。
Shooman分解模型屬于此類
NHPP
NHPP,即非齊次Poisson過程模型是以軟件測試過程中單位時間的失效次數為獨立Poisson隨機變量,來預測在今后軟件的某使用時間點的累計失效數。有:
1)Musa的指數模型
2)Goel和Okumoto的NHPP模型
3)S-型可靠性增長模型
4)超指數增長模型
5)Pham改進的NHPP模型
Markov模型
這類模型有:
1)完全改錯的線性死亡模型
2)不完全改錯的線性死亡模型
3)完全改錯的非靜態線性死亡模型
Bayesian類
這是利用失效率的驗前分布和當前的測試失效信息來評估軟件的可靠性。這是一類當軟件可靠性工程師對軟件的開發過程有充分的了解,軟件的繼承性比較好時具有良好效果的可靠性分析模型。
連續時間的離散型Markov鏈
Shock模型
此外,Musa和Okumoto依據模型的如下特征對模型進行分類:
(1)時間域:有兩種:a.時鐘時間;b.CPU時間。
(2)失效數類:在有限時間間隔內設定軟件的失效數為有限還是無限。
(3)相對于時間系統失效數的統計分布形式。主要的兩類是:Poisson分布型和二項分布型。
(4)對有限失效數而言,用時間表示的失效強度的函數形式。
(5)對有限失效數而言,用經驗期望失效數表示的失效強度的函數形式。
4.軟件可靠性模型研究的
五個方向
以上歸類介紹了的幾十個軟件可靠性模型,其中有的已被西方某些可靠性公司制成標準的工具軟件出售[4],如Musa-Okumoto模型、Jelinski-Moranda模型、NHPP模型、S-shaped模型、Duane模型、Little-Verral模型等。而且還有新的模型發表。這些模型的應用都有局限性,要根據具體軟件的規模、開發和使用環境、開發人員的素質、開發方法進行妥善選擇,讀者可參考[5]中的有關模型選用的章節。
由于軟件缺陷的特殊性,至今尚沒有一種軟件可靠性的通用統計分析模型。其主要原因是這些模型對系統所做的假設固定不變,而軟件在其開發過程中受各種因素影響,使得軟件的故障行為千差萬別;在進行模型的參數估計時又難以實時獲得充分的統計數據,無法在各種模型之間作識別,導致估計結果與實際情況的不一致,即產生模型的不適配問題。
為了使對軟件可靠性的分析、預計更加精確,除了應用標準的軟件可靠性模型的傳統方法外,目前軟件可靠性研究的內容有:
1)對傳統模型的分析結果用U-結構圖進行校正,以減少評價模型的偏差。
2)將兩個或多個傳統模型用加權的方法進行線性組合,或者在軟件壽命周期的不同階段使用不同的評價模型。
3)在傳統模型中引入軟件復雜性和測試類型、開發方法類型影響因子,以增強可靠性評價的準確性。
4)軟件可靠性仿真技術(以后將專門介紹)。
5)神經網絡分析技術
人工神經網絡是基于現代科學對生物神經系統的認識,得出的一種抽象的新型數學模型,借助于計算機技術,使它具有人工智能、自適應能力和學習功能。它不事先確定模型,而是按實例研究的原則運行,是一種非參數軟件可靠性估計,克服了模型的實配問題,通用性好(缺點是模型復雜)。從八十年代末和九十年代初期以來和工具,研究保證軟件可靠性的開發方法和可靠性管理措施是軟件可靠性工程師的責任。軟件規模、復雜程度的大幅度提高,大型系統對軟件的嚴重依賴,國際上開展了神經網絡技術在軟件可靠性工程中的應用研究,取得了一些成果,其工程應用亦在試驗之中。我們中心正在開展這一技術的理論研究,并著手開發相應的通用軟件工具,相信會有良好的工程應用前景。
5.軟件工程化與軟件可靠性
在近可能短的開發周期內向用戶提供高可靠軟件是軟件工程師的艱巨任務。提供有效的軟件可靠性評測方法,要求軟件的開發從“自編、自導、自演”的初級模式向工程化方向轉化。
軟件工程是一項新興的系統工程,軟件的工程化提出了一些軟件開發的基本原則和要求。其中,為保證大型軟件的可靠性,必須遵循的原則包括:
1)軟件的設計(design)、編碼(coding)、測試(testing)由不同的人員完成,獨立的驗證/確認(IV&V)、象硬件那樣設計、生產、檢驗分開;
2)軟件開發和使用過程具有可追溯性,象硬件有設計圖紙、生產記錄、檢驗結果那樣有各種文檔;
3)像硬件那樣盡可能使用標準件(標準子程序/模塊)和成熟技術(經過驗證的開發過程和算法)。
軟件工程、軟件可靠性工程研究與應用的共性技術包括:
1)軟件故障樹分析(S-FTA)
2)軟件故障模式和影響分析(S-FMEA)
3)危險性分析
4)軟件潛在通路分析
5)安全性分析(Petri Net等)。
6)軟件的避錯(fault avoidance)、排錯(fault removal)、容錯(fault tolerance)、預錯(fault forcasting)等。
軟件可靠性的提高依賴于軟件工程化的步伐。
文章來源于領測軟件測試網 http://www.kjueaiud.com/