楊小明,樓俊鋼,2,沈張果,胡文軍
(1.湖州師范學院信息工程學院 湖州 313000;2.浙江大學控制科學與工程學系 杭州 310058)
軟件可靠性模型是指為預測軟件可靠性,利用己有失效數據,根據對軟件失效行為的假設,采用一定數學方法建立軟件可靠模型的過程[1]。近年來,研究者提出了許多軟件可靠性模型,這些模型都是基于一些對軟件的開發環境和使用環境的關鍵假設,利用測試獲得的軟件失效信息,對軟件系統的失效過程進行建模,評估軟件系統的可靠性,預測軟件實際工作時的現場行為[2]。軟件可靠性是最重要的可信性屬性之一,而軟件可靠性建模是目前提高軟件可靠性水平主要工具之一。軟件可靠性模型多是基于一些對軟件的開發環境和使用環境的關鍵假設,利用測試獲得的軟件失效信息,對軟件系統的失效過程進行建模,評估軟件系統的可靠性水平,預測軟件實際工作時的現場行為。隨機過程模型是軟件可靠性建模研究中最廣泛使用的,也是實際項目中應用最廣泛的一類,目前這類模型的絕大部分研究工作集中于模型的統一、對非齊次泊松過程類(non-homogeneous Poisson process,NHPP)等模型的改進、可靠性成本模型等[3~8],模型改進的出發點是提出更加合理的假設以提高模型預測精度,如考慮測試環境與實際運行環境的差別、考慮故障的相關性、不完美調試以及測試者學習能力、測試效用函數、測試工作量與覆蓋率等。此外,也有學者提出采用馬爾可夫更新過程、廣義Pareto分析、排隊論模型、順序統計量模型、多維隨機過程等來描述軟件失效過程,取得了很多不錯的研究成果[9~11]。接著,人們嘗試利用更多更復雜的數學方法對軟件失效行為進行建模及分析,如人工神經網絡、未確知理論、混沌理論、時間序列、模糊數學理論、遺傳編程、強化學習[12~15]等,相比隨機過程模型,這些方法可以取得更好的預測性能或擬合效果,但在實際軟件系統可靠性評估的應用還較為少見。最近,研究者開始考慮核函數方法在軟件可靠性建模方面的研究,最主要的包括支持向量機(support vector machines,SVM)、相關向量機(relevance vector machine,RVM)等方法的應用,核函數方法一般對軟件失效時刻與在它之前的發生m個失效時刻數據之間的對應關系進行建模。Tian等把SVM引入軟件可靠性建模中[16],Xing等[17]、Yang等[18]、Yuan等[19]、Park等[20]對SVM用于可靠性建模進行了適當的改進。樓俊鋼等人使用RVM等核函數技術在軟件可靠性建模方面做了一些研究工作[21,22]。與其他方法相比,SVM、RVM等基于核函數模型具有自適應能力和學習功能,通過歸納學習和訓練,能發現數據輸入與輸出之間的關系,經過自適應調整求取問題的解,適用于系統開發環境較復雜,對問題的機理不能用數學模型表示的系統,對大量原始數據的處理往往表現出極大的靈活性和自適應性,容錯和抗干擾能力較強,在軟件可靠性建模問題上也得到了較好地應用,在模型適用性以及評估預測能力上均有較好的表現,是目前軟件可靠性模型研究中較為重要的一個突破口。筆者在使用核函數理論進行軟件可靠性預測的前期研究中,發現用于建模的軟件失效數據數量的改變對模型的預測性能和適用性有較大影響[22]。然而目前的研究工作中,還很少有專門針對軟件失效數據數量選取的工作,本文應用Mann-Kendall及配對T-檢驗等統計方法在5個常用軟件失效數據集上對基于相關向量機的軟件可靠性預測模型中m值選取問題進行研究。
假設已發生的軟件失效時間為t1,t2,…,tn,基于相關向量機的軟件可靠性預測問題可以描述為:從已知失效時間間隔數據序列預測未知的軟件失效時間間隔數據ti+d,使用核函數對軟件失效時間與在它之前的m個失效時間數據建模,以此捕捉失效時間內在的依賴關系,一般地,令tl=f(tl-m,tl-m+1,…,tl-1),則tl服從固定但未知的條件分布函數F(tl|tl-m,tl-m+1,…,tl-1)。假設用于學習的失效時間序列為t1,t2,…,tk(k>m),則在t1,t2,…,tk已知條件下對tk+1進行預測變為:已知k-m個觀測(T1,tm+1),(T2,tm+2),…,(Tk-m,tk)和第k-m+1個輸入Tk-m+1的情況下,估計第k-m+1個輸出值,其中Ti表示m維向量[ti,ti+1,…,tm+i]。 把[t2,ti+1,…]作為輸入,則可以預測,同理可以預測得到對可以獲得的部分系統輸出數據即失效數據進行分析,將其蘊涵的系統失效特征用核函數進行學習并表達出來,構造軟件故障過程的等價系統,從而完成對軟件系統失效行為的刻畫,并依據所建模型完成對系統未來失效行為的預測。對基于相關向量機的軟件可靠性模型的詳細描述可參見參考文獻[13,14]。
預測的具體實現步驟如圖1所示。具體介紹如下。
采用10個來自不同類型軟件的失效數據集[23]對m不同時模型預測性能進行實驗分析,見表1,在實驗過程中,取所有數據集的前2/3作為學習數據,對后面1/3數據進行預測后與真實數據進行比較。

圖1 基于相關向量軟件可靠性預測的基本步驟
使用軟件可靠性預測模型性能分析中最常用的指標平均相對預測誤差 (average relative prediction error,AE)[23]對模型性能進行評價,AE的值越小說明模型的預測能力越強,計算式為其中,n表示失效數據集總共記錄的失效次數,k表示用于核函數學習的失效次數表示第i次失效時間估計值而ti失效時間實測值。
前期工作[22]表明模型中選用高斯核函數K(xi,xj)=exp時可以取得最好預測效果,r>0是高斯核函數的帶寬參數。核函數參數選取是一個最優化問題,采用網格搜索法進行核函數參數選擇,令r∈[r1,r2],設置變化步長為rs,選取其中預測效果最好的值作為模型參數。在數據集1~數據集5上采用不同的r值進行的實驗研究結果如圖2所示,其中,r1,r2,rs的取值分別為0、12和0.1,其余取值如下:m=8,αi(i=1,2,3,…,m)的初始值均為0.5,σ2的初始值為1。從圖2中可以看出,r的取值對模型預測性能有較大的影響,本文實驗中對5個數據集上r的取值見表2。

圖2 10個數據集上r值不同時模型預測性能變化曲線

表2 模型性能最佳時的r值
假定x1,x2,…,xn為m值不同時的AE值序列變量,n為序列的長度。檢驗統計值可由計算[25],如果檢驗統計值S的值接近于0,則序列數據中不存在趨勢;如果檢驗統計值S的絕對值較大,則可以斷定數據中存在趨勢。定義檢驗統計值:在給定的α置信水平上,時拒絕原假設。即在α置信水平上,m取值不同時的AE值序列數據存在明顯的上升或下降趨勢,其中Var(S)=
表3列出了在m取值分別為6,7,…,30情況下各個數據集上模型的預測AE值,圖3顯示了其變化趨勢。模型中σ2的初始值為1,αi(i=1,2,3,…,m)的初始值均為0.5,r的取值為1、10以及表2中的值。從表3中可以看出,隨著m值的不同,模型預測性能也有極大差異。例如,在使用數據集1、r=3.8時,AE的值在0.87(m=9)與2.42(m=28)之間浮動;使用數據集4、r=1時,AE的值在1.68(m=13)與6.15(m=25)之間浮動。

表3 數據集1~數據集5上m值不同時模型單步預測值
表4中給出了各數據集上m值變化時的Z統計量及置信區間為95%(α=0.5,Z1-α/2=1.96)時的變化趨勢分析。從表4中可以看出,m值增加時,在各數據集的AE值均存在上升趨勢,說明隨著m的增加,模型的預測性能存在下降的趨勢。合理的解釋是,最近的失效數據更能反映失效過程中的最新特性,早期失效數據對預測未來短期失效行為作用較小,現時失效時間數據能比很久之前觀測的失效時間數據更好地用于預測未來。
本節將設計隨機化實驗,采用配對T檢驗的方法找出10個數據集上模型預測能力相對較好的m值。配對T檢驗的過程,是對兩個同質的樣本分別接受兩種不同的處理,判斷不同的處理是否有差別,實驗中,將m值作為處理,判斷其不同時模型預測能力是否有差別。令{X}、{Y}為m值取值集合,定義集合運算>,{X}>{Y}表示采用集合X中的數值比采用集合Y中數值具有更好的預測性能。實驗中,把m值分成5組:

圖3 各數據集上m值不同時模型預測值變化趨勢
{A}={6,7,8,9,10}
{B}={11,12,13,14,15}
{C}={16,17,18,19,20}
{D}={21,22,23,24,25}
{E}={26,27,28,29,30},
配對10次:
{A}→{B},{A}→{C},{A}→{D},{A}→{E}
{B}→{C},{B}→{D},{B}→{E}
{C}→{D},{C}→{E}
{D}→{E}。
在H0:μ1-μ2≥D0假設下,小樣本情況下配對檢驗可用統計量表示[18],其中n表示樣本數量,di第i個配對樣本數據的差值di=xi-yi,i=1,2,…,n,表示配對樣本數據差值的平均值表示配對樣本數據差值的總體標準差,Sd表示配對樣本數據差值的標準差。表5中給出了D0=0的檢驗結果,Sig.表示significance,在置信度α取值為95%的雙側檢驗情況下,如果0.01<Sig.<0.05則表示差異顯著,如果Sig.<0.01表示差異極顯著,這兩種情況下,拒絕H0假設。從表中可以看出,{A}>{C}、{A}>{D}、{A}>{E}、{B}>{C}、{C}>{D}、{C}>{E}的結論均極顯著,因此可以得出結論:使用基于RVM的軟件可靠性模型時,在區間[6,30]中,m∈{6,7,8,9,10}為最佳取值。

表4 各數據集上的AE值趨勢檢驗

表5 配對T-檢驗分析結果
基于相關向量機理論,對軟件失效時間數據與在其之前發生的m個失效時間數據進行建模,對10個數據集上用于建模的失效數據數量進行實驗研究。首先,通過Mann-Kendall檢驗發現,m值變大時,模型預測性能存在下降趨勢,然后采用配對T檢驗發現,在10個數據集上,m∈{6,7,8,9,10}時,模型具有最好的預測性能。
進一步工作包括以下內容:采用模糊遺傳算法、粒子群算法或者模擬退火算法等優化技術對核函數參數的自動賦值算法進行研究;適合于軟件可靠性建模的核函數選擇及構建,進一步提高模型預測性能。
1 IEEE Std 1633-2008.IEEE Recommended Practice on Software Reliability,2008
2 Inoue S,Yamada S.Generalized discrete software reliability modeling with effect of program size.IEEE Transactions on Systems,Man and Cybernetics,Part A:Systems and Humans,2007,37(2):170~179
3 Liu M X,Miao L,Zhang D Q.Two stage cost sensitive learning for software defect prediction.IEEE Transactions on Reliability,2014,63(2):676~686
4 李海峰,王栓奇,劉暢等.考慮測試工作量與覆蓋率的軟件可靠性模型.軟件學報,2013,24(4):749~760 Li H F,Wang S Q,Liu C,et al.Software reliability model considering both testing effort and testing coverage.Journal of Software,2013,24(4):749~760
5 Peng W,Huang H Z,Xie M,et al.A Bayesian approach for system reliability analysis with multilevel pass fail,lifetime and degradation data sets.IEEE Transactions on Reliability,2013,62(3):689~699
6 陸文,徐鋒,呂建.一種開放環境下的軟件可靠性評估方法.計算機學報,2010,33(3):452~462 Lu W,Xu F,Lv J.An approach of software reliability evaluation in the open environment.Chinese Journal of Computers,2010,33(3):452~462
7 Sun Z B,Song Q B,Zhu X Y.Using coding based ensemble learning to improve software defect prediction.IEEE Transactions on Systems,Man,Cybernetics,2012,42(6):1806~1817
8 Chatzis S,Andreou A.Maximum entropy discrimination poisson regression for software reliability modeling.IEEE Transactions on Neural Networks and Learning,2015,has been accepted by inclusion in a future issue
9 謝景燕,安金霞,朱紀洪.考慮不完美排錯情況的NHPP類軟件可靠性增長模型.軟件學報,2010,21(5):942~949 Xie J Y,An J X,Zhu J H.NHPP software reliability growth model considering imperfect debugging.Journal of Software,2010,21(5):942~949
10 陸文,徐鋒,呂建.一種開放環境下的軟件可靠性評估方法.計算機學報,2010,33(3):452~462 Lu W,Xu F,Lv J.An Approach of Software Reliability Evaluation in the Open Environment.Chinese Journal of Computers,2010,33(3):452~462
11 Schneidewind N,Hinchey M.A complexity reliability model.Proceedings of 20th International Symposium on Software Reliability Engineering,Mysuru,India,2009:1~10
12 Cotroneo D,Pietrantuono R,Russo S.Combining operational and debug testing for improving reliability.IEEE Transactions on Reliability,2013,62(2):408~423
13 Liu M X,Miao L,Zhang D Q.Two stage cost sensitive learning for software defect prediction.IEEE Transactions on Reliability,2014,63(2):676~686
14 Wayne M,Modarres M.A bayesian model for complex system reliability growth under arbitrary corrective actions.IEEE Transactions on Reliability,2015,64(1):206~220
15 Li X N,Mabu S,Hirasawa K.A novel graph based estimation of the distribution algorithm and its extension using reinforcement learning.IEEE Transactions on Evolutionary Computation,2014,18(1):98~113
16 Tian L,Noore A.Dynamic software reliability prediction:an approach based on support vector machines.International Journal of Reliability,Quality and Safety Engineering,2005,12(4):309~321
17 Xing F,Guo P,Lyu M R.A novel method for early software quality prediction based on support vector machines.Proceedings of International Symposium on Software Reliability Engineering(ISSRE’05),Chicago,Illinois,USA,2005:213~222
18 Yang B,Li X.A study on software reliability prediction based on support vector machines.Proceedings of IEEE International Conference on Industrial Engineering and Engineering Management,Singapore,2007:1176~1180
19 Yuan F Q,UDAY K,MISRA K B.Complex system reliability evaluation using support vector machine for incomplete data-set.International Journal of Performability Engineering,2011,7(3):32~42
20 Park J,Lee N,Baik J.On the long-term predictive capability of data-driven software reliability model:an empirical evaluation.Proceedings of 25th International Symposium on Software Reliability Engineering,Naples,2014:45~54
21 樓俊鋼,蔣云良,申情等.軟件可靠性預測中不同核函數的預測能力評估.計算機學報,2013,33(6):1303~1311 Lou J G,Jiang Y L,Shen Q,et al.Evaluating the prediction performance of different kernel functions in kernel based software reliability models.Chinese Journal of Computers,2013,36(6):1303~1311
22 Lou J G,Jiang J H,Shuai C Y.A study on software reliability prediction based on transduction inference.Proceedings of IEEE 19th Asian Test Symposium,Los Alamitos:IEEE Computer Society,Shanghai,China,2010:77~80
23 Ohba M.Software reliability analysis models.IBM Journal of Research and Development,1984,28(4):428~443
24 Kendall M G.A new measure of rank correlation.Biometrical,1938,30(2):81~93
25 Douglas C D.Design and Analysis of Experiments,6th Edition.New York:John Wiley & Sons.Inc,2007