毛子劍
(北方民族大學 計算機科學與工程學院,寧夏 銀川 750021)
人們普遍認為,軟件開發是很難預測的,在軟件產品完成后,軟件質量可能不容易提高。可靠性是軟件應用的一個基本屬性,具有較高可靠性的軟件在交付給用戶之后,在實際使用過程中出現故障的概率小,可避免因軟件發生故障而給用戶造成不必要的損失。因此,軟件的性能和可靠性在各個領域都至關重要,若不能保證軟件的可靠性,那么會給企業和用戶帶來巨大的損失。針對此問題,為了提高軟件在發布前的可靠性程度,軟件可靠性模型可以對軟件的可靠性進行預測與評估,并通過軟件可靠性增長測試這一方法來不斷地提高軟件產品的質量[1]。軟件可靠性模型可以從已知或假定的條件,例如軟件的歷史故障數據,預測軟件未來可能發生故障的行為并及時修復已發現的軟件故障,軟件的可靠性程度會隨著軟件錯誤的減少而呈現不斷增長的趨勢,從而有利于對軟件的發布時間進行決策。在對軟件進行測試的階段所使用的可靠性模型稱之為軟件可靠性增長模型,進而應用SRGM對軟件測試過程進行預測和評估[2]。
SRGM是評估軟件產品質量和可靠性的工具,對可靠性的評測、保證和產品發布具有重要作用[3]。軟件可靠性建模的基本方法是對軟件過去發生失效的數據進行建模,并能預測未來的失效情況,達到可靠性增長分析的目的[4]。SRGM為軟件的預測與評估提供了支持,并提高了軟件可靠性,保障了用戶的正常使用[5]。經過幾十年的不斷發展,SRGM已經成為用于軟件可靠性分析的最為成熟的方法之一。軟件可靠性模型可以分為隨機過程模型和非隨機過程模型[6],且可靠性模型的種類較多,不同模型評估可靠性的方法也不同。
在軟件測試階段,軟件故障定義為在測試過程中系統出現錯誤。在運用軟件可靠性增長模型時,常見的假設有軟件系統因發生錯誤而隨機地出現故障行為,以及每次發生軟件故障時,對出現的故障及時修復,并且在修復過程中不會額外引入新的軟件錯誤。將SRGM應用到歷史故障數據中,可以估計軟件可靠性信息,比如軟件中剩余的故障數、發現下一個故障的時間及可靠性函數等。
大多數的SRGM假設m(t)是一個滿足非齊次泊松過程(Nonhomogeneous Poisson Process,NHPP)的均值函數,其利用在特定時間內檢測到的故障數來評估軟件失效信息。SRGMS中的m(t)表示實際測試過程的累積檢測故障數的函數,它是求解軟件可靠性的關鍵。設{N(t),t≥0}表示軟件測試過程中發現故障的計數過程,且m(0)=0,可得
在軟件測試階段,x表示軟件發生故障的間隔時間,在(t,t+x)內的軟件可靠性R(x∣t)表示為

常用的軟件可靠性模型主要有超幾何分布模型、Jelinski Moranda(J-M)模型以及G-O模型等,不同可靠性模型含有不同的可靠性參數,在不同的測試環境下來預測和評估可靠性的準確度也各不相同。例如,J-M模型是軟件可靠性模型的研究基礎,該模型被認為是最早用于軟件測試的可靠性模型之一[7],其假設一個軟件系統中包含N個故障數且所有故障均具有相同概率,假定條件有:(1)發現故障的概率和當前檢測到的故障數成正比;(2)故障檢測率在故障發生的時間間隔內保持恒定;(3)在軟件測試過程中檢測出軟件故障,則立即對故障進行修復,且不引入新故障。
J-M模型不需要引入人為錯誤,根據每次測試的失效間隔時間來預測軟件中存在的總故障數N和測試強度φ。由于計算過程較為復雜,所以需要建立方程式并得到令方程兩邊近似相等的解值,則該數值表示預測軟件中的總故障數。然后,建立N值和φ值的關系,由已知的估計值解得測試人員每次執行測試的強度,但J-M模型也存在參數估計誤差大的不足。J-M模型應用操作簡單且易于理解,所以很多SRGM對該模型的假設條件進行豐富與拓展,從而提出了更為完善的預測軟件可靠性的方法。而超幾何分布模型應用離散分布來分析軟件可靠性[8],它以添加人為錯誤的方式排除軟件中的固有錯誤,測試人員通過在發現人為錯誤的過程中發現并排除軟件中的固有錯誤,以此提高軟件可靠性。超幾何分布模型假設如下:(1)軟件中的固有錯誤數不超過N0,且N0大于0;(2)在測試開始之前,在軟件系統中添加N1個人為錯誤;(3)執行測試,直到找出所有因N1引起的故障。根據每一測試階段的N1值,運用極大似然法估計軟件中N0的個數,從而達到預測軟件可靠性的目的。由此可見,不同模型存在各自的優勢,但也存在一些不足之處。
在軟件測試階段發生故障行為具有隨機性的特點,當遇到故障發生時將其記錄下來并進行修復操作,而且還需要考慮是否產生了額外的故障,進而消除潛在的故障,這稱為一個可靠性增長的過程。因此,應用SRGM對可靠性進行建模可以有效地評估軟件可靠性,根據軟件失效數據來預測可靠性程度,最終達到提高軟件質量的目的。
使用SRGM對可靠性進行建模的主要步驟包括:(1)測試人員通過運行被測試軟件,收集故障數據信息;(2)建立SRGM模型,對測試、修復過程進行建模;(3)進行參數估計并預測軟件中剩余的故障總數;(4)根據分析結果評估軟件可靠性程度。首先針對一個具體軟件提出符合該測試過程的研究假設,然后在執行測試的過程中排除故障并建立排錯過程的微分方程式,從而預測出當前測試時間內的累計故障數。最后,通過對估計的參數進行擬合,繪制該軟件的可靠性函數圖像,從而更好地對所建立的SRGM進行評估與分析。
本文介紹了SRGM的基本概念、SRGM在可靠性分析中的應用以及使用SRGM對可靠性進行建模等內容,由此可知SRGM對與預測和評估軟件可靠性具有重要作用。通過對比J-M模型和超幾何分布模型在可靠性分析方面的應用可知,不同模型的假設條件和分析方法不同,但也存在一些不足之處。SRGM不僅提高了軟件的可靠性和質量,而且還有助于開發人員和測試人員確定最佳的軟件發布決策。