張威
摘要:高可靠性軟件的可靠性評估一直都是可靠性評估領域的一個難題,該文介紹了三種嘗試解決該問題的方法。其中,極值統計模型強調失效數據母體分布的尾部信息以獲取更好的評估準確度;基于BootStrap重抽樣技術的軟件可靠性模型可以對原失效數據樣本進行重新抽樣,然后對新失效數據集再進行可靠性分析;基于故障注入技術和加速壽命試驗原理的軟件可靠性評估模型使用故障注入技術對軟件的運行環境進行劣化,可以有效加快軟件可靠性測試的過程。
關鍵詞:高可靠軟件;可靠性評估;故障注入;加速壽命試驗
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)35-0100-02
隨著計算機使用的普及,越來越多的人類生產生活活動都已經離不開計算機軟件的輔助。在一些安全性要求比較高的行業如核電行業中,其反應堆控制系統或其相關軟件一旦失效,將會造成令人無法接受的災難性后果。對于此類安全關鍵軟件,需要對其進行軟件可靠性測試,測試其可靠性水平如失效率是否達到可以上線運行的標準。
1 概述
軟件可靠性測試與軟件測試關注的重點有很大不同。軟件測試傾向于快速有效地發現軟件中存在的缺陷并進行修復;軟件可靠性測試更傾向于在軟件的真實使用情況下評估軟件當前所達到的可靠性水平,發現缺陷并進行軟件可靠性增長,直至軟件的可靠性水平達到所要求的目標水平,再將軟件投入使用。軟件可靠性測試多應用于對可靠性有較高要求的安全關鍵軟件,在如核電、航空、航天和鐵道等領域應用較多。
2 軟件可靠性度量指標
軟件可靠性度量中最受關注的指標有三個:軟件可靠度、軟件失效強度和軟件的平均失效前時間。
1) 軟件可靠度
軟件可靠度指的是系統在規定的工作條件下和規定的時間t內持續完成規定功能的概率(記作R(t))。
若隨機變量t表示發生失效的時刻,函數f(t)為隨機變量t的概率密度函數,F(t)為其分布函數;P(0≦t≦T)表示從初始時刻到T時刻程序發生失效的概率。所以有:
(1)
(2)
2) 軟件失效強度
軟件失效強度指的是已工作到時刻t尚未失效的系統,在時刻t后單位時間內發生失效的概率,記作λ(t)。
與失效強度函數、失效概率密度函數、可靠度函數之間的關系為:
(3)
3) 平均失效前時間(Mean Time to Failure, MTTF)
設N0個不可維修的系統在同樣的條件下進行試驗,測得其全部失效時間為t1,t2,…,tN0,其MTTF為:
(4)
當N0趨向于無窮時,MTTF為系統失效時間這一隨機變量的數學期望,因此有:
(5)
3 一般的軟件可靠性評估方法
現有的軟件可靠性評估模型有很多,它們關注的重點有所不同,按進行軟件可靠性評估或預測的階段不同,可以分為面向軟件開發生命周期過程的軟件可靠性預測模型與測試階段或運行階段的軟件可靠性評估模型。
3.1 面向軟件開發生命周期過程的軟件可靠性模型
面向軟件開發生命周期過程的軟件可靠性模型可以在軟件開發的早期階段對軟件將來所能達到的可靠性水平進行預測,此類模型的依據大多為相似軟件歷史數據的歸納分析。
Rome試驗室提出的Rome模型[1]可以在軟件開發的需求分析階段、設計階段和編碼階段分別對軟件缺陷密度進行早期預測;Keene的開發過程預計模型[2]可以根據軟件開發組織和維護組織的能力成熟度模型(Capability Maturity Model for Software, 簡稱CMM)等級以及軟件的源代碼規模對軟件的可靠性進行預測;雷利模型[2]可以在確定軟件開發生命周期階段總數并獲取其中任意至少兩個階段中發現的缺陷數量后,對其他階段的缺陷數進行預測,并可以在軟件開發早期對軟件的可靠性水平進行預測。
3.2 測試階段或運行階段的軟件可靠性評估模型
測試階段或運行階段的軟件可靠性評估模型較為成熟,模型的分類方式有很多。參照IEEE Std.1663標準[3]可以將軟件可靠性評估模型分為3類:呈指數分布的非齊次泊松過程(Non-Homogeneous Poisson Process, NHHP)模型、非指數分布的NHPP模型和貝葉斯(Bayesian)模型。
1) 呈指數分布的NHPP模型
呈指數分布的NHPP模型一般認為累積缺陷數量是一個獨立增量過程,可以用指數分布來描述缺陷的增長過程,代表模型有:Jelinski-Moranda模型、Schneidewind模型、通用指數模型、Shooman模型和Musa模型。
2) 非指數分布的NHPP模型
非指數分布的NHPP模型一般認為累積缺陷數量是一個獨立增量過程,服從Poisson分布,使用非指數分布來描述缺陷的增長過程,相對于之后的缺陷排除,早期的缺陷排除對失效強度有更大的影響。代表模型有:Musa&Okumoto對數泊松執行時間模型、Duane模型、Yamada的S型模型和Brooks&Motley的二項式和泊松模型。
3) 貝葉斯模型
貝葉斯方法認為可以根據歷史數據或專家經驗對模型中的參數有一些先驗性的認識,通過先驗分布來描述先驗知識與模型參數之間的關系,從而獲得更為準確的評估結果,代表模型為Littlewood-Verrall模型(L-V模型)。
4 高可靠軟件的可靠性評估方法
高可靠軟件的可靠性評估目前存在的問題是,由于軟件可能已經經過了嚴密的軟件測試或是已經進行了容錯設計,擁有較高的可靠性水平,要計算其可靠性需要在用戶真實使用剖面下進行運行測試并收集失效數據,此時通常很難收集到充足的失效數據或只能獲取少量的小樣本失效數據。由于上述原因,傳統的基于經典概率統計的軟件可靠性模型很難得到準確的評估結果。
為解決上述問題,主要有兩種思路,一種是如何在小樣本失效數據情況下進行更加準確的可靠性評估,另一種是如何獲取更多失效數據或擴充已有失效數據,然后再使用經典的軟件可靠性模型進行評估。
第一種思路相關的模型有極值統計模型[4],第二種思路相關的模型有基于BootStrap重抽樣技術的軟件可靠性模型[5]和基于故障注入技術和加速壽命試驗原理的軟件可靠性評估模型[6]。
4.1 極值統計模型
假定軟件失效時間服從母體分布F(x),X是收集的失效數據。對高可靠軟件而言,X很可能是位于母體分布F(x)的尾部,而不是母體分布的中心;傳統的軟件可靠性模型提供與母體分布中心有關的信息,它預先假定失效數據服從某一個先驗分布(例如G-O模型假定失效數據服從指數分布),如果選擇了一個錯誤的分布,則預測的結果會有較大誤差。極值模型更加關注母體分布的尾部信息,因此對于高可靠性軟件來說可以取得更加準確的可靠性評估結果。
4.2 基于BootStrap重抽樣技術的軟件可靠性模型
BootStrap重抽樣方法可以對原始的失效數據集進行N次有放回的重抽樣從而產生多個新的失效數據集,在這些新的失效數據集上使用經典的軟件可靠性模型分別進行模型參數估計,然后對這些參數的估計值取平均來作為最終結果,進而獲取軟件的可靠性度量值。實驗證明,此方法在小樣本失效數據的情況下很多時候可以取得更準確的可靠性評估結果。
4.3 基于故障注入技術和加速壽命試驗原理的軟件可靠性評估模型
基于故障注入技術和加速壽命試驗原理的軟件可靠性評估模型的基本思路是通過故障注入技術模擬軟件運行環境(硬件、操作系統和支撐軟件)的故障,劣化軟件的運行環境從而加速被測軟件的失效過程,最終可以使軟件更快發生失效,這就可以加快軟件可靠性測試的過程,更快地獲取充足的失效時間數據來進行軟件可靠性評估。
5 結束語
總體上高可靠性軟件的可靠性評估技術仍不完善。其中,極值統計模型可以在一定程度上解決小樣本可靠性評估的問題,但其理論的假設性較強,適用范圍有限?;贐ootStrap重抽樣技術的軟件可靠性模型在一些失效數據集上的測試結果較好,但與傳統軟件可靠性模型的結果差距不大?;诠收献⑷爰夹g和加速壽命試驗原理的軟件可靠性評估模型在方法論上可以有效解決高可靠軟件的評估問題,但模型方法仍不完善,還需要進一步研究改進。
參考文獻:
[1] McCall J, Randell W, Dunham J, et al. Software reliability measurement and testing guidebook[Z]. Technical Report RL-TR-92-52, Rome Laboratory USAF, 1992.
[2] 陸民燕. 軟件可靠性工程[M]. 北京: 國防工業出版社, 2011: 282-296.
[3] IEEE Std 1633-2008, Recommend practice on software reliability[S].
[4] Kaufman L M, Dugan J B, Johnson B W. Using statistics of the extremes for software reliability analysis[J]. IEEE Transactions on Reliability, 1999, 48(3):292-299.
[5] Kaneishi T, Dohi T. Parametric bootstrapping for assessing software reliability measures[C]//Proceedings of 17th IEEE Pacific Rim International Symposium on Dependable Computing. IEEE: Pasadena, CA, 2011: 1-9.
[6] 樓俊鋼. 小樣本情況下的軟件可靠性建模研究[D]. 上海: 同濟大學, 2010.