楊小明,樓俊鋼,2,沈張果,胡文軍
(1.湖州師范學(xué)院信息工程學(xué)院 湖州 313000;2.浙江大學(xué)控制科學(xué)與工程學(xué)系 杭州 310058)
軟件可靠性模型是指為預(yù)測(cè)軟件可靠性,利用己有失效數(shù)據(jù),根據(jù)對(duì)軟件失效行為的假設(shè),采用一定數(shù)學(xué)方法建立軟件可靠模型的過(guò)程[1]。近年來(lái),研究者提出了許多軟件可靠性模型,這些模型都是基于一些對(duì)軟件的開(kāi)發(fā)環(huán)境和使用環(huán)境的關(guān)鍵假設(shè),利用測(cè)試獲得的軟件失效信息,對(duì)軟件系統(tǒng)的失效過(guò)程進(jìn)行建模,評(píng)估軟件系統(tǒng)的可靠性,預(yù)測(cè)軟件實(shí)際工作時(shí)的現(xiàn)場(chǎng)行為[2]。軟件可靠性是最重要的可信性屬性之一,而軟件可靠性建模是目前提高軟件可靠性水平主要工具之一。軟件可靠性模型多是基于一些對(duì)軟件的開(kāi)發(fā)環(huán)境和使用環(huán)境的關(guān)鍵假設(shè),利用測(cè)試獲得的軟件失效信息,對(duì)軟件系統(tǒng)的失效過(guò)程進(jìn)行建模,評(píng)估軟件系統(tǒng)的可靠性水平,預(yù)測(cè)軟件實(shí)際工作時(shí)的現(xiàn)場(chǎng)行為。隨機(jī)過(guò)程模型是軟件可靠性建模研究中最廣泛使用的,也是實(shí)際項(xiàng)目中應(yīng)用最廣泛的一類(lèi),目前這類(lèi)模型的絕大部分研究工作集中于模型的統(tǒng)一、對(duì)非齊次泊松過(guò)程類(lèi)(non-homogeneous Poisson process,NHPP)等模型的改進(jìn)、可靠性成本模型等[3~8],模型改進(jìn)的出發(fā)點(diǎn)是提出更加合理的假設(shè)以提高模型預(yù)測(cè)精度,如考慮測(cè)試環(huán)境與實(shí)際運(yùn)行環(huán)境的差別、考慮故障的相關(guān)性、不完美調(diào)試以及測(cè)試者學(xué)習(xí)能力、測(cè)試效用函數(shù)、測(cè)試工作量與覆蓋率等。此外,也有學(xué)者提出采用馬爾可夫更新過(guò)程、廣義Pareto分析、排隊(duì)論模型、順序統(tǒng)計(jì)量模型、多維隨機(jī)過(guò)程等來(lái)描述軟件失效過(guò)程,取得了很多不錯(cuò)的研究成果[9~11]。接著,人們嘗試?yán)酶喔鼜?fù)雜的數(shù)學(xué)方法對(duì)軟件失效行為進(jìn)行建模及分析,如人工神經(jīng)網(wǎng)絡(luò)、未確知理論、混沌理論、時(shí)間序列、模糊數(shù)學(xué)理論、遺傳編程、強(qiáng)化學(xué)習(xí)[12~15]等,相比隨機(jī)過(guò)程模型,這些方法可以取得更好的預(yù)測(cè)性能或擬合效果,但在實(shí)際軟件系統(tǒng)可靠性評(píng)估的應(yīng)用還較為少見(jiàn)。最近,研究者開(kāi)始考慮核函數(shù)方法在軟件可靠性建模方面的研究,最主要的包括支持向量機(jī)(support vector machines,SVM)、相關(guān)向量機(jī)(relevance vector machine,RVM)等方法的應(yīng)用,核函數(shù)方法一般對(duì)軟件失效時(shí)刻與在它之前的發(fā)生m個(gè)失效時(shí)刻數(shù)據(jù)之間的對(duì)應(yīng)關(guān)系進(jìn)行建模。Tian等把SVM引入軟件可靠性建模中[16],Xing等[17]、Yang等[18]、Yuan等[19]、Park等[20]對(duì)SVM用于可靠性建模進(jìn)行了適當(dāng)?shù)母倪M(jìn)。樓俊鋼等人使用RVM等核函數(shù)技術(shù)在軟件可靠性建模方面做了一些研究工作[21,22]。與其他方法相比,SVM、RVM等基于核函數(shù)模型具有自適應(yīng)能力和學(xué)習(xí)功能,通過(guò)歸納學(xué)習(xí)和訓(xùn)練,能發(fā)現(xiàn)數(shù)據(jù)輸入與輸出之間的關(guān)系,經(jīng)過(guò)自適應(yīng)調(diào)整求取問(wèn)題的解,適用于系統(tǒng)開(kāi)發(fā)環(huán)境較復(fù)雜,對(duì)問(wèn)題的機(jī)理不能用數(shù)學(xué)模型表示的系統(tǒng),對(duì)大量原始數(shù)據(jù)的處理往往表現(xiàn)出極大的靈活性和自適應(yīng)性,容錯(cuò)和抗干擾能力較強(qiáng),在軟件可靠性建模問(wèn)題上也得到了較好地應(yīng)用,在模型適用性以及評(píng)估預(yù)測(cè)能力上均有較好的表現(xiàn),是目前軟件可靠性模型研究中較為重要的一個(gè)突破口。筆者在使用核函數(shù)理論進(jìn)行軟件可靠性預(yù)測(cè)的前期研究中,發(fā)現(xiàn)用于建模的軟件失效數(shù)據(jù)數(shù)量的改變對(duì)模型的預(yù)測(cè)性能和適用性有較大影響[22]。然而目前的研究工作中,還很少有專(zhuān)門(mén)針對(duì)軟件失效數(shù)據(jù)數(shù)量選取的工作,本文應(yīng)用Mann-Kendall及配對(duì)T-檢驗(yàn)等統(tǒng)計(jì)方法在5個(gè)常用軟件失效數(shù)據(jù)集上對(duì)基于相關(guān)向量機(jī)的軟件可靠性預(yù)測(cè)模型中m值選取問(wèn)題進(jìn)行研究。
假設(shè)已發(fā)生的軟件失效時(shí)間為t1,t2,…,tn,基于相關(guān)向量機(jī)的軟件可靠性預(yù)測(cè)問(wèn)題可以描述為:從已知失效時(shí)間間隔數(shù)據(jù)序列預(yù)測(cè)未知的軟件失效時(shí)間間隔數(shù)據(jù)ti+d,使用核函數(shù)對(duì)軟件失效時(shí)間與在它之前的m個(gè)失效時(shí)間數(shù)據(jù)建模,以此捕捉失效時(shí)間內(nèi)在的依賴(lài)關(guān)系,一般地,令tl=f(tl-m,tl-m+1,…,tl-1),則tl服從固定但未知的條件分布函數(shù)F(tl|tl-m,tl-m+1,…,tl-1)。假設(shè)用于學(xué)習(xí)的失效時(shí)間序列為t1,t2,…,tk(k>m),則在t1,t2,…,tk已知條件下對(duì)tk+1進(jìn)行預(yù)測(cè)變?yōu)椋阂阎猭-m個(gè)觀(guān)測(cè)(T1,tm+1),(T2,tm+2),…,(Tk-m,tk)和第k-m+1個(gè)輸入Tk-m+1的情況下,估計(jì)第k-m+1個(gè)輸出值,其中Ti表示m維向量[ti,ti+1,…,tm+i]。 把[t2,ti+1,…]作為輸入,則可以預(yù)測(cè),同理可以預(yù)測(cè)得到對(duì)可以獲得的部分系統(tǒng)輸出數(shù)據(jù)即失效數(shù)據(jù)進(jìn)行分析,將其蘊(yùn)涵的系統(tǒng)失效特征用核函數(shù)進(jìn)行學(xué)習(xí)并表達(dá)出來(lái),構(gòu)造軟件故障過(guò)程的等價(jià)系統(tǒng),從而完成對(duì)軟件系統(tǒng)失效行為的刻畫(huà),并依據(jù)所建模型完成對(duì)系統(tǒng)未來(lái)失效行為的預(yù)測(cè)。對(duì)基于相關(guān)向量機(jī)的軟件可靠性模型的詳細(xì)描述可參見(jiàn)參考文獻(xiàn)[13,14]。
預(yù)測(cè)的具體實(shí)現(xiàn)步驟如圖1所示。具體介紹如下。
采用10個(gè)來(lái)自不同類(lèi)型軟件的失效數(shù)據(jù)集[23]對(duì)m不同時(shí)模型預(yù)測(cè)性能進(jìn)行實(shí)驗(yàn)分析,見(jiàn)表1,在實(shí)驗(yàn)過(guò)程中,取所有數(shù)據(jù)集的前2/3作為學(xué)習(xí)數(shù)據(jù),對(duì)后面1/3數(shù)據(jù)進(jìn)行預(yù)測(cè)后與真實(shí)數(shù)據(jù)進(jìn)行比較。
圖1 基于相關(guān)向量軟件可靠性預(yù)測(cè)的基本步驟
使用軟件可靠性預(yù)測(cè)模型性能分析中最常用的指標(biāo)平均相對(duì)預(yù)測(cè)誤差 (average relative prediction error,AE)[23]對(duì)模型性能進(jìn)行評(píng)價(jià),AE的值越小說(shuō)明模型的預(yù)測(cè)能力越強(qiáng),計(jì)算式為其中,n表示失效數(shù)據(jù)集總共記錄的失效次數(shù),k表示用于核函數(shù)學(xué)習(xí)的失效次數(shù)表示第i次失效時(shí)間估計(jì)值而ti失效時(shí)間實(shí)測(cè)值。
前期工作[22]表明模型中選用高斯核函數(shù)K(xi,xj)=exp時(shí)可以取得最好預(yù)測(cè)效果,r>0是高斯核函數(shù)的帶寬參數(shù)。核函數(shù)參數(shù)選取是一個(gè)最優(yōu)化問(wèn)題,采用網(wǎng)格搜索法進(jìn)行核函數(shù)參數(shù)選擇,令r∈[r1,r2],設(shè)置變化步長(zhǎng)為rs,選取其中預(yù)測(cè)效果最好的值作為模型參數(shù)。在數(shù)據(jù)集1~數(shù)據(jù)集5上采用不同的r值進(jìn)行的實(shí)驗(yàn)研究結(jié)果如圖2所示,其中,r1,r2,rs的取值分別為0、12和0.1,其余取值如下:m=8,αi(i=1,2,3,…,m)的初始值均為0.5,σ2的初始值為1。從圖2中可以看出,r的取值對(duì)模型預(yù)測(cè)性能有較大的影響,本文實(shí)驗(yàn)中對(duì)5個(gè)數(shù)據(jù)集上r的取值見(jiàn)表2。
圖2 10個(gè)數(shù)據(jù)集上r值不同時(shí)模型預(yù)測(cè)性能變化曲線(xiàn)
表2 模型性能最佳時(shí)的r值
假定x1,x2,…,xn為m值不同時(shí)的AE值序列變量,n為序列的長(zhǎng)度。檢驗(yàn)統(tǒng)計(jì)值可由計(jì)算[25],如果檢驗(yàn)統(tǒng)計(jì)值S的值接近于0,則序列數(shù)據(jù)中不存在趨勢(shì);如果檢驗(yàn)統(tǒng)計(jì)值S的絕對(duì)值較大,則可以斷定數(shù)據(jù)中存在趨勢(shì)。定義檢驗(yàn)統(tǒng)計(jì)值:在給定的α置信水平上,時(shí)拒絕原假設(shè)。即在α置信水平上,m取值不同時(shí)的AE值序列數(shù)據(jù)存在明顯的上升或下降趨勢(shì),其中Var(S)=
表3列出了在m取值分別為6,7,…,30情況下各個(gè)數(shù)據(jù)集上模型的預(yù)測(cè)AE值,圖3顯示了其變化趨勢(shì)。模型中σ2的初始值為1,αi(i=1,2,3,…,m)的初始值均為0.5,r的取值為1、10以及表2中的值。從表3中可以看出,隨著m值的不同,模型預(yù)測(cè)性能也有極大差異。例如,在使用數(shù)據(jù)集1、r=3.8時(shí),AE的值在0.87(m=9)與2.42(m=28)之間浮動(dòng);使用數(shù)據(jù)集4、r=1時(shí),AE的值在1.68(m=13)與6.15(m=25)之間浮動(dòng)。
表3 數(shù)據(jù)集1~數(shù)據(jù)集5上m值不同時(shí)模型單步預(yù)測(cè)值
表4中給出了各數(shù)據(jù)集上m值變化時(shí)的Z統(tǒng)計(jì)量及置信區(qū)間為95%(α=0.5,Z1-α/2=1.96)時(shí)的變化趨勢(shì)分析。從表4中可以看出,m值增加時(shí),在各數(shù)據(jù)集的AE值均存在上升趨勢(shì),說(shuō)明隨著m的增加,模型的預(yù)測(cè)性能存在下降的趨勢(shì)。合理的解釋是,最近的失效數(shù)據(jù)更能反映失效過(guò)程中的最新特性,早期失效數(shù)據(jù)對(duì)預(yù)測(cè)未來(lái)短期失效行為作用較小,現(xiàn)時(shí)失效時(shí)間數(shù)據(jù)能比很久之前觀(guān)測(cè)的失效時(shí)間數(shù)據(jù)更好地用于預(yù)測(cè)未來(lái)。
本節(jié)將設(shè)計(jì)隨機(jī)化實(shí)驗(yàn),采用配對(duì)T檢驗(yàn)的方法找出10個(gè)數(shù)據(jù)集上模型預(yù)測(cè)能力相對(duì)較好的m值。配對(duì)T檢驗(yàn)的過(guò)程,是對(duì)兩個(gè)同質(zhì)的樣本分別接受兩種不同的處理,判斷不同的處理是否有差別,實(shí)驗(yàn)中,將m值作為處理,判斷其不同時(shí)模型預(yù)測(cè)能力是否有差別。令{X}、{Y}為m值取值集合,定義集合運(yùn)算>,{X}>{Y}表示采用集合X中的數(shù)值比采用集合Y中數(shù)值具有更好的預(yù)測(cè)性能。實(shí)驗(yàn)中,把m值分成5組:
圖3 各數(shù)據(jù)集上m值不同時(shí)模型預(yù)測(cè)值變化趨勢(shì)
{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},
配對(duì)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假設(shè)下,小樣本情況下配對(duì)檢驗(yàn)可用統(tǒng)計(jì)量表示[18],其中n表示樣本數(shù)量,di第i個(gè)配對(duì)樣本數(shù)據(jù)的差值di=xi-yi,i=1,2,…,n,表示配對(duì)樣本數(shù)據(jù)差值的平均值表示配對(duì)樣本數(shù)據(jù)差值的總體標(biāo)準(zhǔn)差,Sd表示配對(duì)樣本數(shù)據(jù)差值的標(biāo)準(zhǔn)差。表5中給出了D0=0的檢驗(yàn)結(jié)果,Sig.表示significance,在置信度α取值為95%的雙側(cè)檢驗(yàn)情況下,如果0.01<Sig.<0.05則表示差異顯著,如果Sig.<0.01表示差異極顯著,這兩種情況下,拒絕H0假設(shè)。從表中可以看出,{A}>{C}、{A}>{D}、{A}>{E}、{B}>{C}、{C}>{D}、{C}>{E}的結(jié)論均極顯著,因此可以得出結(jié)論:使用基于RVM的軟件可靠性模型時(shí),在區(qū)間[6,30]中,m∈{6,7,8,9,10}為最佳取值。
表4 各數(shù)據(jù)集上的AE值趨勢(shì)檢驗(yàn)
表5 配對(duì)T-檢驗(yàn)分析結(jié)果
基于相關(guān)向量機(jī)理論,對(duì)軟件失效時(shí)間數(shù)據(jù)與在其之前發(fā)生的m個(gè)失效時(shí)間數(shù)據(jù)進(jìn)行建模,對(duì)10個(gè)數(shù)據(jù)集上用于建模的失效數(shù)據(jù)數(shù)量進(jìn)行實(shí)驗(yàn)研究。首先,通過(guò)Mann-Kendall檢驗(yàn)發(fā)現(xiàn),m值變大時(shí),模型預(yù)測(cè)性能存在下降趨勢(shì),然后采用配對(duì)T檢驗(yàn)發(fā)現(xiàn),在10個(gè)數(shù)據(jù)集上,m∈{6,7,8,9,10}時(shí),模型具有最好的預(yù)測(cè)性能。
進(jìn)一步工作包括以下內(nèi)容:采用模糊遺傳算法、粒子群算法或者模擬退火算法等優(yōu)化技術(shù)對(duì)核函數(shù)參數(shù)的自動(dòng)賦值算法進(jìn)行研究;適合于軟件可靠性建模的核函數(shù)選擇及構(gòu)建,進(jìn)一步提高模型預(yù)測(cè)性能。
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 李海峰,王栓奇,劉暢等.考慮測(cè)試工作量與覆蓋率的軟件可靠性模型.軟件學(xué)報(bào),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 陸文,徐鋒,呂建.一種開(kāi)放環(huán)境下的軟件可靠性評(píng)估方法.計(jì)算機(jī)學(xué)報(bào),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 謝景燕,安金霞,朱紀(jì)洪.考慮不完美排錯(cuò)情況的NHPP類(lèi)軟件可靠性增長(zhǎng)模型.軟件學(xué)報(bào),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 陸文,徐鋒,呂建.一種開(kāi)放環(huán)境下的軟件可靠性評(píng)估方法.計(jì)算機(jī)學(xué)報(bào),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 樓俊鋼,蔣云良,申情等.軟件可靠性預(yù)測(cè)中不同核函數(shù)的預(yù)測(cè)能力評(píng)估.計(jì)算機(jī)學(xué)報(bào),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