付方智,沈元隆
(南京郵電大學(xué) 電子科學(xué)與工程學(xué)院,江蘇 南京 210003)
從1972年至今,為了研究軟件可靠性,已經(jīng)提出一百多種模型,但這其中大部分模型主要是從消除軟件中的錯誤數(shù)的角度來研究軟件的可靠性模型。而另一種現(xiàn)象也逐漸被重視起來,就是一種軟件在發(fā)布后,軟件產(chǎn)品的可靠性伴隨著時間增長,而錯誤數(shù)并沒有糾正的情況下,軟件的可靠性也得到了改善。為了描述這種軟件產(chǎn)品可靠性的增長,2008年P(guān)ankajJalote和Brendan Murphy從用戶角度,針對軟件產(chǎn)品銷售后可靠性增長的現(xiàn)象提出一種關(guān)于軟件產(chǎn)品的可靠性預(yù)計模型[1]。但是,在 Pankaj Jalote和Brendan Murph提出的模型中,其假設(shè)在某些方面過于嚴(yán)格,特別是所提出的模型中忽視了軟件補(bǔ)丁的作用。而現(xiàn)在軟件補(bǔ)丁的作用越來越大,因而軟件的補(bǔ)丁不能被忽視了。本文全面分析了實(shí)際情況,提出了考慮軟件補(bǔ)丁的關(guān)于軟件產(chǎn)品的軟件可靠性增長模型。
2008年P(guān)ankaj Jalote和Brendan Murphy提出的一種關(guān)于軟件產(chǎn)品的可靠性增長模型[1],假定如下:
(1)假定軟件銷售出去以后,沒有新的版本發(fā)布出來,不考慮軟件的補(bǔ)丁的問題,認(rèn)為補(bǔ)丁的影響微乎其微。
(2)假定用戶初始的失效率為(λ0+λf),穩(wěn)定時的失效率 為 λf。
(3)假定可以通過軟件產(chǎn)品技術(shù)支持服務(wù),獲得每個月的產(chǎn)品銷售量與每個月的總的失效總數(shù)。
(4)針對用戶,軟件的失效率以常數(shù)每個月來進(jìn)行衰減,并且 αi+1為 αi的 k倍(k>1),直到它達(dá)到穩(wěn)定的狀態(tài)。
失效率的定義:假定用戶安裝了N套某種軟件產(chǎn)品,從安裝時刻開始,經(jīng)歷了T的時間間隔,總的失效數(shù)為 F,則:
從用戶的角度,給一個失效率公式:
基于以上的假定,可以得出如下模型:
假定:第一月賣出 N1套,第二個月賣出 N2套,…,第i個月賣出 Ni套;令這種軟件的暫態(tài)的失效率是 λ0,每個月軟件衰退率為α,穩(wěn)態(tài)的失效態(tài)是λf,由此可以得到每個月的總的失效數(shù)Fi:
由于α1=α,則可以得到:
將式(4)代入式(3)得:
由于任何一個月的故障率都是不可能增加的,故k的限定條件為:
利用收集到每月的失效總數(shù)和每月的產(chǎn)品銷售數(shù),并采用最大擬然法或者最小二乘法來對 λ0、λf、α、k進(jìn)行估計,以改進(jìn)模型。然后,軟件產(chǎn)品公司再利用估計的參數(shù)和模型,對某種軟件產(chǎn)品進(jìn)行可靠性預(yù)測,從而根據(jù)預(yù)測進(jìn)行對產(chǎn)品的改進(jìn)。利用最小二乘法對于模型參數(shù)的估計公式如下:
基于前面的分析,本文重新修正2008年P(guān)ankaj Jalote和Brendan Murphy提出的關(guān)于軟件產(chǎn)品的軟件可靠性預(yù)計模型的假設(shè),并提出改進(jìn)的模型,并稱其為FP模型。
FP模型是對改進(jìn)的模型考慮了補(bǔ)丁之后的模型,并認(rèn)為補(bǔ)丁雖然可以糾正軟件中的錯誤,但是同樣會帶來新的錯誤,因此引進(jìn)2個新的參數(shù)β、γ,其假設(shè)如下:
(1)假定軟件銷售出去以后,沒有新的版本發(fā)布出來,補(bǔ)丁及時發(fā)布,用戶能及時安裝和使用,而新的補(bǔ)丁安裝后會帶來新的錯誤。
(2)假定用戶初始的失效率為 λ0+λf,穩(wěn)定時的失效率 為 λf。
(3)假定可以通過軟件產(chǎn)品技術(shù)支持服務(wù)獲得每個月的產(chǎn)品銷售量與每個月的總的失效率。
(4)針對用戶,由于考慮到了補(bǔ)丁的影響以及會帶來新的問題,所以軟件的每個月失效率為 αi,直到它達(dá)到穩(wěn)定的狀態(tài)。
根據(jù)上述假設(shè)可以得到此模型的失效率公式:
其中λ為時間。
將原模型的公式修正為:
利用收集的每月的失效總數(shù)和每月的產(chǎn)品銷售數(shù),并采用最大似然法或者最小二乘法來對 λ0、λf、α、β、γ、k進(jìn)行估計FP改進(jìn)模型,軟件產(chǎn)品公司再利用估計的參數(shù)和模型,對某種軟件產(chǎn)品進(jìn)行可靠性預(yù)測,從而根據(jù)預(yù)測進(jìn)行對產(chǎn)品的改進(jìn)。利用最小二乘法對模型參數(shù)的估計公式如下:
本實(shí)例仿真數(shù)據(jù)是來源于2008年P(guān)ankaj Jalote和Brendan Murphy在ACM Trans發(fā)表的文獻(xiàn)[1]。仿真數(shù)據(jù)如表1所示。
表1 某公司每月銷售情況和每月失效總數(shù)
通過數(shù)值方法求得FP模型和原模型的參數(shù)值如表2所示。
表2 FP模型和原模型的參數(shù)值
用Matlab 7.1仿真FP模型和原模型,仿真結(jié)果如圖1所示。
圖1 Matlab 7.1仿真圖
從圖1可以看出,改進(jìn)的模型比原來的模型更接近實(shí)際的數(shù)據(jù)。
誤差平方和SSE[2]用來描述累計失效數(shù)的觀測值與預(yù)測值之間的距離,定義如下:
在式(12)中,n表示實(shí)效數(shù)據(jù)集中失效樣本的數(shù)量,yi表示到時間ti為止累計故障數(shù)的實(shí)測值,ti)表示到時間ti為止累計故障數(shù)的估計值。
SSE越小,則表示曲線的擬合能力越好[3]。由表3可知,改進(jìn)的FP模型在預(yù)測能力上優(yōu)于原來的模型。
表3 兩種模型的常用預(yù)測能力參數(shù)AE比較
通過分析和研究原始的關(guān)于軟件產(chǎn)品的軟件可靠性預(yù)計模型,考慮到軟件補(bǔ)丁的作用不能忽視,提出了軟件發(fā)布后的軟件可靠性模型——一種考慮軟件補(bǔ)丁的軟件可靠性模型。本文首先分析了原模型的假設(shè)和軟件補(bǔ)丁對軟件可靠性的影響,提出修訂的假設(shè)條件,并由假設(shè)條件推出改進(jìn)的FP模型,然后對改進(jìn)的FP模型的參數(shù)估計展開討論,并得到相應(yīng)的函數(shù)表達(dá)式。利用最小二乘法求得模型參數(shù),再通過仿真實(shí)驗(yàn)對原始的關(guān)于軟件產(chǎn)品的軟件可靠性預(yù)計模型和改進(jìn)的FP模型進(jìn)行分析比較,可以得出改進(jìn)的FP模型的預(yù)測精度比原始模型要高,并且其擬合效果都要優(yōu)于原始模型。
[1]JALOTE P,MURPHY B.Post-release reliability growth in software products[J].ACM Transactions on Software Engineering and Methodology(TOSEM), 2008,17(4).
[2]ZHANG Xue Mei, TENG Xiao Lin, PHAM H.Considering fault removal efficiency in software reliability assessment[J].IEEE Transactions on Systems, Man, and Cybernetics-PartA:Systems And Humans, 2003,33(1):114-119.
[3]趙靖,劉宏偉,崔剛,等.考慮測試與運(yùn)行差別的軟件可靠性增長模型[J].計算機(jī)研究與發(fā)展,2006,43(3):503-508.