丁春光
(工業和信息化部電子第五研究所,廣東 廣州510610)
1983年IEEE計算機學會對 “軟件可靠性”一詞作了正式的定義。軟件可靠性(Software Reliability)的定義:在給定的環境條件下和規定的時間內,軟件不引起系統失效的概率,該概率是系統輸入和系統使用的函數,也是軟件中存在的錯誤的函數。軟件可靠性工程(Software Reliability Engineering)中往往定義為:軟件可靠性是軟件產品在規定的條件下和規定的時間區間內完成規定功能的能力。軟件可靠性是軟件工程學與可靠性工程學結合產生的前沿學科,到目前為止軟件可靠性學科的范圍已經擴展到軟件可靠性、軟件維護性、軟件安全性和軟件保障性。
檢驗軟件的可靠性可以通過軟件可靠性建模和軟件可靠性測試來完成,這兩種方法是互補的而不是互相對立的。通過軟件可靠性建模的辦法,利用在軟件測試階段收集到的軟件失效數據進行預計,以預計軟件可靠性的實際水平,以便從可靠性的角度判斷軟件何時可停止測試。目前還沒有被推薦為廣泛應用的軟件可靠性模型,雖然目前已建立了數百種軟件可靠性模型,但均具有一定的局限性。因此,從軟件可靠性模型的假設是否合理、實際應用是否簡單方便、適用范圍是否廣泛等問題出發,如何進一步建立合理、實用的軟件可靠性模型還有待于進一步研究。
軟件可靠性模型選擇時,重點考慮的是模型的預測精度。軟件可靠性模型都是建立在一定的假設基礎上。但是,有些假設并不合理甚至是不成立的,基于這些假設得出的數學模型也就無法對軟件可靠性行為做出準確的預測。如何使建立的軟件可靠性模型更符合實際的軟件失效過程,如何選擇一個更恰當的模型來評價一個軟件的可靠性,對現有的軟件可靠性模型如何評價它們的有效性和預測能力等一系列問題。于是,模型的預測準確性評價方法的研究就顯得十分重要,目前得到公認的方法主要有:PL檢驗法、U-結構圖分析法、Y-結構圖分析法等。
軟件可靠性評估模塊(SRE)是由工業和信息化部電子第五研究所研制開發的五性工程軟件CARMES 6.0中的一個模塊。SRE通過采集軟件失效數據,利用軟件可靠性模型估計軟件的可靠性。SRE主要包括模型參數的管理和軟件可靠性的模型評估兩大功能。SRE模塊實現了7個軟件可靠性評估模型。本文將對以上7種評估模型的實現原理及過程進行簡單的介紹。
軟件可靠性評估模塊(SRE)可以處理以下7種模型:Schneidewind模型(S)、Jelinski-Moranda 模型(J-M)、Goel-Okumoto(NHPP)模型(G-O(NHPP))、Goel-Okumoto 改錯不徹底模型 (G-O)、Schick-Wolverton 模型(S-W)、Moranda 模型(M)、Yamada-Ohba-Osaki(Y-O-O)模型。
基本假設:軟件故障發生率滿足指數下降。
評估參數:軟件中初始故障發生率α;指數下降的比例因子β。
模型描述:設第i個缺陷的發現以及糾正時刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數

α和β的最大似然估計滿足:

參數解特性分析結論:Schneidewind模型存在唯一解,P≤0時唯一解釋合理解,P>0時唯一解不是合理解。其中

基本假設:軟件故障發生率與軟件中剩余錯誤的個數成正比。
評估參數:軟件中初始錯誤總數N;單位故障發生率Φ。
模型描述:設第i個缺陷的發現以及糾正時刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數

N和Φ的最大似然估計滿足:

參數解特性分析結論:Jelinski-Moranda模型存在多組解,P≤時無合理解,時有唯一合理解,其中

基本假設:單位時間內發現錯誤的平均個數與軟件中的剩余錯誤成正比。
評估參數:軟件中初始錯誤總數a:錯誤發現率b。
模型描述:由基本假設,得出錯誤平均函數

設第i個缺陷的發現及糾正時刻為ti,i=1,2,…,n,則a和b的最大似然估計滿足:

參數解特性分析結論:Goel-Okumoto(NHPP)模型存在唯一解,P≥1/2時無解,P<1/2時唯一解(合理)。其中

基本假設:軟件故障發生率與軟件中剩余錯誤的個數成正比,但不向Jelinski-Moranda模型那樣假設錯誤一旦發現即徹底改正,Goel-Okumoto假設錯誤的改正可以是不徹底的,即錯誤的改正度為q,q應大于零且小于等于1,值越大說明改錯越徹底,q為1時為徹底改錯,此時該模型等同于Jelinski-Moranda模型。
評估參數:軟件中初始錯誤的實際總數N;單位故障發生率與錯誤改正度的比值Φ。
模型描述:設第i個缺陷的發現以及糾正時刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數

N和Φ的最大似然估計滿足:

參數解特性分析結論:Goel-Okumoto改錯不徹底模型存在多組

基本假設:他們認為隨著軟件調試過程的深入,軟件中的錯誤會越來越少,因此從總體上講軟件的故障發生率是呈下降趨勢,但是在每次錯誤改正后投入繼續調試以尋找下一個錯誤時,有時卻隨著調試時間的增加故障發生率是局部上升的,即時間越長越易出故障。該模型的故障發生率是一條呈鋸齒性的變化曲線。
評估參數:軟件中初始錯誤總數N;鋸齒每次下降的幅度Φ。
模型描述:設第i個缺陷的發現以及糾正時刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為時間函數

N和Φ的最大似然估計滿足:

參數解特性分析結論:Schick-Wolverton模型存在多組解,P≤

基本假設:軟件故障發生率呈幾何下降。
評估參數:軟件中初始故障發生率D:故障發生率幾何下降的比例常數k。
模型描述:設第i個缺陷的發現以及糾正時刻為ti,i=1,2,…,n,則在[ti-1,ti)間的軟件故障率為常數

D和k的最大似然估計滿足:

參數解特性分析結論:Moranda模型存在唯一解,P≥0時唯一解釋合理解,P<0時唯一解不是合理解。其中

基本假設:查出錯誤數的增長是S形,即開始增長緩慢,然后快速增長,最后趨于飽和。
評估參數:軟件中初始錯誤總數a;穩定狀態下的錯誤發現率b。
模型描述:假設S形的錯誤平均函數

設第i個缺陷的發現及糾正時刻為ti,i=1,2,…,n,則a和b的最大似然估計滿足:

參數解特性分析結論:Yamada-Ohba-Osaki模型當P≥2/3時無解,P<2/3時有唯一解(合理)。其中

SRE主要包括模型參數的管理和軟件可靠性的模型評估兩大功能。
軟件可靠性評估模塊的模型參數管理分為軟件錯誤統計數據組別管理和軟件錯誤統計數據管理兩個功能模塊。
軟件錯誤統計數據組別管理模塊的數據格式如下:
組名:軟件錯誤統計數據組別的名稱:
錯誤統計數據描述:對軟件錯誤統計數據的獲取、檢測方式等進行說明;
說明:對本組別的說明(可選);
時間單位:軟件錯誤統計數據的單位,可選擇的時間單位有三個,小時、分鐘和秒;
錯誤改進度:軟件錯誤的改進程度;
軟件錯誤統計數據的管理的數據格式如下:
序號:軟件錯誤統計數據編號,于添加數據時系統自動生成;
間隔時間:軟件發生故障的上一時間到本次軟件發生故障的時間之差;
累計時間:本組別所有軟件故障間隔時間之和;
軟件可靠性評估模塊實現了7個軟件可靠性評估模型,通過計算可以得到可靠性指標及誤差分析結果。得到的可靠性指標包括當前故障率、誤差系數、MTTF、下一次故障可能時間。各個模型的評估指標計算公式如表1:

表1 模型評估指標計算公式
在進行模型評估計算時,需要指定錯誤統計數據的起始序號M,系統將抽取從起始序號開始到統計表表尾序號結束的該部分軟件錯誤統計數據用于軟件可靠性評估。因為隨著軟件開發過程的深入,程序中殘存的錯誤會不斷地被檢出,并得到改正,軟件故障發生的平均時間間隔將會逐漸變長,軟件的可靠性會越來越高,此時軟件開發的階段將會改變。當軟件進入新階段時,新階段的軟件錯誤統計數據顯然比前一階段的數據更具參考價值,因此,用戶可通過錯誤統計數據計算起始序號來選擇不同階段的統計數據用于軟件可靠性評估。SRE模塊界面如圖2。

圖1 CARMES 6.0運行主界面

圖2 SRE模塊運行界面
3 結束語
軟件可靠性評估模塊(SRE)實現了7種軟件可靠性評估模型,雖然還有一些模型有待實現,如Musa執行時間模型、Littlewood-Verrall模型、Seeding模型、Nelson模型,但已對軟件可靠性評估模型的軟件工程化進行了初步的探索,在以后的研究工作中將進一步逐步完善優化,形成一個強有力的軟件可靠性評估工具。
[1]宋曉秋.軟件可靠性與軟件測試[Z].信息產業部軍工電子裝備可靠性工程技術中心.2002.10