摘要:軟件可靠性工程研究在軟件工程研究領域占有了越來越重的地位。由于對軟件的依賴性越來越大,人們也越來越重視軟件的質量。到目前為止,已經出現了上百種的評價軟件質量的軟件可靠性模型。但是由于軟件本身的復雜性,還沒能找到一種“普遍”適應的模型。通過介紹了四種經典的建模思想,分析了它們的特點、適用范圍以及側重點,建議廣大的工程技術人員在實際評估軟件的質量時要充分的考慮各種因素,選擇合適的模型和方法。
關鍵詞:軟件可靠性;J-M模型;G-O模型;Musa模型;時間序列
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)35-2192-02
Comparing Software Reliability Modeling Thought
WU Ye-qing, CHEN Zhong-min
(Computer Science Department, Huazhong Agricultural University, Wuhan 430070, China)
Abstracts: The research of software reliability engineering has more and more status in software engineering field. As a result of depending on software increasingly, people also give the quality of software much more attention. Up to now, it has hundreds of evaluating the software quality’s software reliability models. But as software per se of complexity, people have not been found the model which could use in all software systems. By introduced four classical modeling thought, analysed their characteristics, applying range and emphasized particularly point, and suggested that when evaluated the software’s quality the project technology people should consider enough of diversiform factors and chose appropriate model and method.
Key words: software-reliability; J-M Model; G-O Model; Musa Model; time series
1 引言
隨著科學技術的飛速發展,隨著社會信息化程度的不斷提高,計算機在社會中扮演著越來越重的角色,同時社會對計算機軟件的需求也就越來越大,各行各業的日常運行也都越來越依賴于軟件系統,這就意味著軟件系統的失效給社會帶來的影響也會越來越大。這也就促使了社會越來越注重軟件質量的提高。眾所周知,為了保證軟件的質量,對軟件進行窮盡測試是不現實的。那么,如何有效地評價軟件的質量,在客戶和開發商之間找到一個可以接受的平衡點,就成了廣大的科研人員和軟件開發工作者共同關注的焦點。
2 軟件可靠性的概念
可靠性表示人們可以指望系統完成所期望功能的這樣一些特質,它包含很多因素,如成熟性、容錯性及易恢復性等。1983年美國IEEE計算機協會對“軟件可靠性”正式做出如下定義:
1) 在規定條件下,在規定時間內,軟件不引起系統失效的概率,該概率是系統輸入和系統使用的函數,也是軟件中存在的錯誤的函數;系統輸入將確定是否會遇到已存在的錯誤(如果錯誤存在的話);
2) 在規定的時間周期內,在所述條件下程序執行所要求的功能的能力。
軟件可靠性源于傳統工業的硬件可靠性,由于軟件的抽象性和高度的復雜性軟件可靠性與傳統的硬件可靠性有著本質上的區別。
如何快速有效的評價一個軟件系統的質量好壞,是我們研究軟件可靠性工程的核心。其最根本的問題就是如何建立起一個合理的、可用的軟件可靠性模型以及正確的、有效的評估方法,從而保障軟件的質量。從上個世紀60年代至今,國內外已經有很多的杰出的科學家們,在這個問題上取得了大量的進展,研究出了上百種軟件可靠性模型。但是,到目前為止還沒有研究出一個“萬能”的軟件可靠性模型來應用于所有的軟件系統的質量評估。各種模型各有其優缺點和適用范圍。
3 幾種模型的主要思想
在實際的軟件可靠性評估過程當中,由于軟件的抽象性、復雜性和實際操作環境的不同,使得要完全精確的得出一個具體的數字是不現實的。因此,針對于不同的環境和不同情況,以及便于對問題的處理,到目前為止,絕大多數的軟件可靠性模型都是建立在一定的假設條件上的,即各種模型都是一定意義上理想化的模型,不可能完全精確的反應軟件的可靠性,他們反應的都是在一個可以接受的范圍內的一個軟件的可靠度。這也決定了各種不同模型的特點和適用范圍。
3.1 J-M模型
馬爾科夫過程模型是一類典型的隨機過程類的軟件可靠性模型,這類模型一般都是假定錯誤的出現率在軟件無改動的區間內是常數,并且隨著錯誤數目的減少而下降,J-M模型是最具代表性的馬爾科夫模型。
基本假設:
1) 程序中的固有錯誤數No是一個未知的常數。
2) 程序中各個錯誤是相互獨立的,每個錯誤導致系統發生失效的可能性大致相同,各次失效間隔時間(即錯誤發生間隔時間相同)也相互獨立。
3) 測試中檢測到的錯誤都被排除,每次排錯只排除一個錯誤,排除時間可以忽略不計,在排錯過程中不引入新的錯誤。
4) 程序的失效率在每個失效間隔時間內是常數,其數值正比于程序中殘留的錯誤數,在第i個測試區間,其失效率函數為:
λ(Xi)= #981;(No-i+1)
式中:i=1,2,…,N;
#981;——比例常數;
Xi ——第i次失效間隔中以i-1次失效為起點的時間變量。
5) 程序測試環境與預期的使用環境相同。
3.2 G-O非齊次泊松過程模型(NHPP)
G-O 非齊次泊松過程模型也是一類典型的隨機過程模型,其建模思想是用非齊次泊松過程開刻畫軟件的故障過程。
基本假設:
1) 軟件是在與預期的操作環境相似的條件下運行。
2) 在任何時間序列|t0 3) 每個錯誤的嚴重性和被檢測到的可能性大致相同。 4) 在t時刻檢測出的累積錯誤數[N(t),t≥0]是一個獨立增量的過程,N(t)服從期望函數M(t)的Poisson分布,在(t,t+Δt)時間區間中發現的錯誤數的期望值正比于t時刻剩余錯誤的期望值。 5) 累計錯誤數的期望函數m(t)是一個單調有界增函數,并滿足: m(0)=0 式中:a——最終可能被檢出的失效總數的期望值。 6) 錯誤被檢測時失效是獨立的。 3.3 Musa執行時間模型 Musa執行時間模型由Musa1975年提出,此模型是應用最為廣泛的可靠性模型,它是最先將軟件部件在計算機上的實際執行時間用于建模過程的模型之一。該模型以CPU時間為基礎描述程序的可靠性特征,建立了CPU時間與日歷時間的聯系,并且該模型表明了程序的可靠性特征和測試過程中資源消耗的關系。 基本假設: 1) 程序是在與預期操作相似的環境中運行。 2) 錯誤的檢測是相互獨立的。 3) 所有的軟件失效都能夠觀察到。 4) 各次失效間隔時間分段服從指數分布,即在任何一個測試區間中失效率為常數,進入下一個區間失效率改為另一個常數。 5) 失效率正比于程序中殘留的錯誤數。 6) 測試中錯誤改正率正比于錯誤發生率。 7) 錯誤識別人員,錯誤改正人員和計算機時間這三項資源的數量在測試過程中是固定的。 8) 程序的MTBF從 增加到 時,資源的消耗增加量可以近似的表示為: Δγk≈θkΔτ+μkΔm 式中:Δγk -----指第k項資源的消耗量; Δτ------執行時間增量,用CPU時間表示; Δm------失效次數增量; θk------第k次資源消耗的時間系數; 9) 在測試過程中,錯誤識別人員可以充分使用的計算機時間是常數。 10) 測試過程中錯誤改正人員的使用要受錯誤排隊長度的影響,錯誤排隊長度可由假定錯誤改正過程中服從Poisson過程得出,所以錯誤排隊長度也是一個隨機變量。 在這十項假設當中,前六項是研究軟件可靠性特征所必須的假設,后面四項假設僅在研究軟件可靠性特征與資源消耗的關系時用到。 3.4 時間序列分析模型 時間序列是指按時間順序排列的隨時間變化的數值的集合,這些數值通常是等時間間隔的測得的數據。在實際的生活中,時間序列普遍的存在,如股票的每日價格,產品銷售的記錄,地區的降雨量等等。在金融,經濟,工程,天氣預等領域時間序列建模分析的思想已經得到了廣泛的應用,并且都能得到比較好的效果。 在軟件可靠性建模研究當中,科研人員也正在研究應用時間序列的分析思想來進行建模,雖然研究的時間還比較短,但是也取得了一些很好的成果。 時間序列分析方法是軟件可靠性建模當中的非隨機過程分析方法之一,該方法是將失效數據作為時間相關序列,根據現在和過去的時序值來預測未來的時間相關的數據,同時能給出這些預測值的準確度。該方法主要考慮故障發生過程的動態特性,不需要對故障過程進行任何先決條件的假設就可以進行數據的分析,廣義上來說,適用的范圍相對于以上的幾種模型來說要大。有效的避免了當模型的假設條件與實際的工程實踐情況不一致時,導致的軟件可靠性評估的無意義。 正是由于時間序列分析方法在基于傳統的分析方法上,對于假設條件的要求逐步的弱化,因此,該方法引起了很多科研人員的關注,對于經典的時間序列模型在軟件可靠性建模上的應用也取得了很多階段性的成果,但是總體上來說,該類方法目前還處在嘗試階段,沒有前幾種方法研究的透徹。該方法的缺點也很明顯,數學依賴太強,需要反復的修改模型,在選擇最后模型的時候過程比較復雜。 4 各模型的比較分析 不論是在簡單的短期預測中還是在較長時間段的預測中,各種模型所表現出來的可靠性度量的準確性差異很大,目前還無法給出一個普遍適應的模型,我們在評價軟件可靠性模型的時候需要充分的考慮到它們與各種系統軟件和實際操作環境之間的關系。 1) 預報的有效性:預報的有效性是模型從軟件系統現在和過去的故障行為(即失效數據)來預報其將來的故障行為的能力,即模型是否能夠準確的反映出軟件的可靠性,這是最重要的。 2) 模型的能力:這取決于軟件工程師、軟件管理人員以及用戶的具體要求,他們對軟件可靠性評價結果的精確度的一個令人滿意的要求。特別地,對于不同的用戶,可能對于軟件可靠性各項指標的可靠度要求并不一樣,不同的模型也側重于不同的可靠性指標。 3) 假設條件的品質:模型的基本假設條件應該盡量的和實際的工程實踐環境相一致。這樣的模型才能更加真實的反應出軟件的可靠性,得到的結果才有意義。 4) 模型的適用性:模型的適用性就是模型對于不同規模、結構和功能的軟件產品的適用程度。可以從軟件的規模、結構;運行剖面;開發環境;測試策略;軟件的完善程度等五個方面進行評價。 5) 模型的易用性:應該充分的考慮到模型在實際應用中的易用性,這就需要模型具備以下三個特點: ① 最重要的是在模型收集所需要的數據時應盡可能簡單且代價較低; ② 模型的概念簡單明了,在實際應用中易于理解; ③ 模型中的參數應易于理解且估值過程簡單。 5 結束語 軟件可靠性工程研究已經成為了軟件工程學科領域的一個重要的研究方向,其受重視程度也越來越高。基于計算機軟件在各行各業中都發揮著至關重要的作用,一旦軟件失效,或者出現故障,那么隨之帶來的損失將會及其的慘重,有時候甚至能夠危害到人類的生命。 而盡管軟件的可靠性問題非常重要,全世界的科研人員也都積極努力的在研究,并且也取得了許多階段性甚至革命性的成果,但是至今仍然沒有得到一個普遍的行之有效的方法來解決該問題。對于目前研究出來的數百種模型來看,不同的模型有不同的特點,適用范圍以及它的側重點。軟件工程師在考慮對自己的軟件系統進行可靠性評估時,應該充分的綜合各方面的因素以及自己主要要求的指標來選擇合適的模型。 參考文獻: [1] 姚珍.基于失效數據的軟件可靠性評估及分析工具的實現[D].成都:電子科技大學,2007. [2] 馬颯颯,王光平,趙守偉.基于時間序列的軟件可靠性預測模型研究[J].計算機工程與設計,2007,28(11):2520-2523. [3] 孫勇.軟件可靠性模型應用研究[D].南京:東南大學,2004. [4] 白曉波.實用軟件可靠性模型探討[J].計算機與網絡,2005,7(10):149-150. [5] 鄒豐忠,劉海青,王林.軟件可靠性綜合模型[J].武漢大學學報:工學版,2003,36(1):86-88. [6] 向書堅,李銳.我國時間序列分析研究工作綜述[J].統計教育,2006(7):6-8.