李寧
摘 要: 軟件可靠性是軟件質量評價的一個重要標準,針對傳統方法存在軟件可靠性評估精度低,結果不可信等缺陷,提出基于改進粒子群算法的軟件可靠性評估模型。首先對當前軟件可靠性評估的研究現狀進行分析,然后建立軟件可靠性評估模型,最后采用改進粒子群算法對模型參數進行求解,并通過具體軟件可靠性評估實驗對模型的性能進行分析,結果表明,改進粒子群算法可以對軟件可靠性進行高精度評估,而且評估結果要明顯優于其他軟件可靠性評估模型,具有更高的實際應用價值。
關鍵詞: 軟件質量; 粒子群優化算法; 可靠性評估模型; 仿真實驗
中圖分類號: TN911.1?34; TP309 文獻標識碼: A 文章編號: 1004?373X(2017)21?0102?03
Software reliability evaluation based on improved particle swarm optimization algorithm
LI Ning
(Xian Railway Vocational & Technical Institute, Xian 710014, China)
Abstract: The software reliability is an important standard of software quality evaluation. Since the traditional methods have the defects of low software reliability evaluation accuracy and incredible evaluation result, a software reliability evaluation model based on improved particle swarm optimization algorithm is put forward. The current research status of software reliability evaluation is analyzed. The software reliability evaluation model is established, and its parameters are solved with the improved particle swarm optimization algorithm. The performance of the model is analyzed with the specific experiment of software reliability evaluation. The experimental results show that the improved particle swarm optimization algorithm can evaluate the software reliability accurately, and its evaluation result is much better than that of other software reliability evaluation models. It has high practical application value.
Keywords: software quality; particle swarm optimization algorithm; reliability evaluation model; simulation experiment
0 引 言
隨著計算機技術的不斷發展,其在各行各業得到了迅速應用,各行各業均出現了許多軟件,軟件規模越來越大,也變得越來越復雜,而軟件可靠性是評價軟件質量的一個重要標準,因此對軟件可靠性進行評估顯得十分重要[1?3]。
硬件可靠性與時間密切相關,隨著時間增加,可靠性降低,相對于硬件可靠性,軟件系統的可靠性更加復雜,軟件可靠性與時間不成正比。在軟件測試過程中,故障會慢慢被發現和消除,軟件可靠性會越來越高[4?5]。當前軟件可靠性主要采用軟件失效率來評價,理想狀態下,軟件失效率為零,但是在軟件開發過程中,會不斷產生新的故障,所以要使軟件失效率完全達到零是不可能的,因此主要對軟件失效率進行評估和預測,達到對軟件可靠性進行評價的目的[6]。當前軟件可靠性模型超過一百多種,最早軟件可靠性評估模型為最小二乘算法,它對軟件可靠性參數進行線性估計,對于小規模軟件,可靠性評估的精度高,對于大規模軟件,其工作效率低,而且評估結果的可靠性急劇下降[7]。隨后有學者提出了基于極大似然法的軟件可靠性評估模型,但也存在一些不足,如簡化了模型的約束條件,太理想化,難以應用于實際,同時它屬于線性評估模型,而軟件可靠性具有明顯的非線性變化趨勢[8?9]。隨著人工智能技術的成熟,有學者將神經網絡引入到軟件可靠性評估中,對軟件可靠性進行預測,獲得了較好的軟件可靠性評估結果。然而神經網絡的訓練時間長,泛化能力差,獲得了過擬合的軟件可靠性評估結果。有學者將支持向量機引入到軟件可靠性評估建模中,泛化能力要明顯優于神經網絡,評估結果的可信度高,但學習時間長,影響軟件可靠性評估實時性[10]。智能優化算法具有強大的求解問題能力,有學者提出基于粒子群算法的軟件可靠性評估模型,由于該算法可以結合軟件可靠性變化的特點,可以對軟件可靠性評估模型參數進行估計,提高了軟件可靠性評估準確性,然而基于粒子群算法存在易陷入局部最優的缺陷,使得軟件可靠性評估的精度有待進一步提高[11?12]。
針對標準粒子群算法存在軟件可靠性評估精度低,結果不可信等難題,提出改進粒子群算法的軟件可靠性評估模型,結果表明改進粒子群算法可以對軟件可靠性進行高精度評估,而且評估結果要明顯優于其他軟件可靠性評估模型。endprint
1 改進粒子群算法
1.1 標準粒子群算法
隨著智能優化理論研究的不斷深入,出現許多智能優化算法,其中粒子群算法就是其中的一種。粒子群算法對鳥群覓食行為進行模擬,通過個體和集體協作與競爭模擬問題的求解過程,從而找到問題的最優解。問題解的空間維數為[N,]共有[M]個粒子,粒子均有一個位置和速度向量,采用[Xi]和[Vi]描述,每個粒子群通過不斷更新位置和飛行速度調整自己的飛行軌跡,在第[t]代,粒子[i]的最優位置為[pti=(pti1,pti2,…,ptid)],相應的速度和位置為[vti=(vti1,vti2,…,vtid)]和[xti=(xti1,xti2,…,xtid)],粒子群的最好位置為[ptg=(ptg1,ptg2,…,ptgd)],[g=argmin1≤i≤mPti,]粒子速度和位置更新方式為:
[vt+1id=vtid+c1r1(ptid-xtid)+c2r2(ptgd-xtid)] (1)
[xt+1id=xtid+vt+1id] (2)
式中:[c1]為認知項系數;[c2]表示社會項系數;[r1,r2]為服從(0,l)的隨機數。
為了更好地搜索問題的最優解,引入慣性權重[w],式(1)變為:
[vt+1id=wvtid+c1r1(ptid-xtid)+c2r2(ptgd-xtid)] (3)
當慣性權重[w]較大時,全局搜索能力強,較小時,局部搜索能力較強,為此,有學者采用動態的變化方式,具體為:
[w=wmax-wmax-wminintermax×inter] (4)
1.2 粒子群算法的改進
1.2.1 混沌技術
在自然界的非線性系統中,大多數都具有混沌運動特征,混沌就是一種看似沒有規律,實際有規律的運動,遍歷性能相當好,可以逃離局部最優陷阱。混沌系統動力學的Logistic方程為:
[Cr(t+1)=k×Cr(t)×(1-Cr(t))] (5)
式中:[Cr(0)]為隨機數;[k]為一常數。
1.2.2 速度更新公式的混沌粒子群算法
將混沌理論引入到粒子群算法的速度改善中,通過采用混沌技術的遍歷特性提高算法的搜索能力,這樣式(3)變為:
[vt+1id=wvtid+c1Cr(ptid-xtid)+c2(1-Cr)(ptgd-xtid)] (6)
2 改進粒子群算法的軟件可靠性評估模型
2.1 軟件可靠性評估模型的適應度函數
設軟件失效的發生時間為[t,]模型參數為[E,]那么軟件可靠性的累計失效數可以表示為:
[Failure=F(t,E)] (7)
式中:[E=(e1,e2,…,ek),][k]為估計參數數量。
適應度函數采用累計失效數與實際累計失效數([F(t)])之間的偏差表示,具體為:
[f(E)=i=0TF(i,E)-F(t)2n] (8)
式中:[T]為軟件測試時間;[n]為測試樣本數。
2.2 改進粒子群算法的軟件可靠性評估步驟
Step1:對具體一個軟件可靠性數據進行收集,計算軟件可靠性的累計失效數。
Step2:設置粒子的初始位置、位置的下界與上界的值。
Step3:初始化粒子群,當迭代次數為[t=0]時,粒子[i]和種群的當前最好位置均為[x0i,]即有[P0i=x0i]。
Step4:對粒子個體的最優位置向量進行更新操作,并計算其適應度值[f(Xt+1i)]。
Step5:如果[f(Xt+1i) Step6:對粒子群的最優位置向量進行更新操作,計算其適應度值[f(Gt),]如果[f(Pt+1i) Step7:通過式(4)對粒子的慣性權值進行更新操作。 Step8:采用混沌技術對粒子的速度進行處理。 Step9:如果[xt+1i,j>Xmax,]那么有:[xt+1i,j=Xmax;]如果[xt+1i,j Step10:檢查是否滿足終止條件,如果不滿足,[t=t+1,]執行Step2,否則得到軟件可靠性參數估計值。 Step11:根據參數的估計值建立軟件可靠性評估模型,具體如圖1所示。 3 仿真實驗 3.1 數據源 當前軟件可靠性模型的類型很多,本文選擇常用的非齊次泊松過程模型,其表達式為: [F(t,E)=α×(1-e-b×t)] (9) 式中:[E=(a,b),][a]為期望的軟件出現的故障數量,[b]為故障被檢測的概率。 非齊次泊松過程模型包括7組數據,它們由失效間隔的時間序列表示,選擇標準粒子群算法進行對比測試,選擇軟件可靠性評估精度和平均評估時間對性能進行分析。 3.2 結果與分析 3.2.1 適應度值比較分析 統計改進粒子群算法和標準粒子群算法的不同數據集的適應度值,結果如表1所示。 從表1可知,改進粒子群算法的軟件可靠性模型的適應度值要小于標準粒子群算法,這表明改進粒子群算法的軟件可靠性評估誤差更小,軟件可靠性評估結果更好,這是因為改進粒子群算法克服了標準粒子群算法存在的局限性,具有更好的收斂性,能夠找到軟件可靠性評估模型參數的全局最優值。
3.2.2 軟件可靠性評估的正確率比較
統計改進粒子群算法和標準粒子群算法的不同數據集的軟件可靠性評估精度,結果如圖2所示。對軟件可靠性評估精度進行對比和分析可以發現,改進粒子群算法的軟件可靠性評估精度要遠遠高于標準粒子群算法,這表明改進粒子群算法可以獲得更加理想的軟件可靠性評估模型參數,建立了更優的軟件可靠性評估模型。
統計改進粒子群算法和標準粒子群算法的不同數據集的軟件可靠性評估時間,結果如圖3所示。從圖3可知,標準粒子群算法的平均評估時間長,這是因為它極易陷入局部最優解,而改進粒子群算法由于引入了混沌理論對粒子速度進行處理,加快了軟件可靠性評估模型的參數尋優速度,可以避免進入局部最優解,保證求得全局最優值。
4 結 語
軟件可靠性具有重要的研究價值,當前軟件評估模型存在評估精度低的難題,為此,提出基于改進粒子群算法的軟件可靠性評估模型,通過粒子群算法對模型的參數進行優化和估計,并通過多個數據對模型的有效性進行了測試。測試結果表明,改進粒子群算法可以對軟件可靠性評估模型參數進行準確估計,建立了性能優異的軟件可靠性評估模型,評價精度要遠遠高于當前其他軟件可靠性評估模型,具有較高的實際應用價值。
參考文獻
[1] 鄭艷艷,郭偉,徐仁佐.軟件可靠性工程學綜述[J].計算機科學,2009,36(2):20?25.
[2] 徐高潮,劉新忠,胡亮,等.引入關聯缺陷的軟件可靠性評估模型[J].軟件學報,2011,22(3):439?450.
[3] 樓俊鋼,江建慧,靳昂.考慮軟件不同失效過程偏差的軟件可靠性模型[J].計算機學報,2010,33(7):1263?1266.
[4] 賈治宇,康銳.軟件可靠性預測的ARIMA方法研究[J].計算機工程與應用,2008,44(35):17?19.
[5] 余正偉,吳玉美.基于失效分析的軟件可靠性評估方法研究[J].計算機工程與應用,2008,44(35):16?17.
[6] 許寧,張毅坤.基于正交分層聚類算法軟件可靠性模型的預測分析[J].計算機應用,2007,27(3):635?638.
[7] 李東林,徐燕凌,蔣心怡.軟件可靠性數據預處理研究[J].電子技術應用,2010,36(8):153?156.
[8] XIAO X, DOHI T. Wavelet shrinkage estimation for non?homogeneous Poisson process based software reliability models [J]. IEEE transactions on reliability, 2013, 62(1): 211?225.
[9] 趙靖,張汝波,顧國昌.考慮故障相關的軟件可靠性增長模型研究[J].計算機學報,2007,30(10):1713?1720.
[10] 梁軍濤,蔣曉原,張海.根據軟件體系結構評估軟件可靠性[J].應用科學學報,2009,27(3):277?281.
[11] MOHANTY R, RAVI V, PATRA M R. Hybrid intelligent systems for predicting software reliability [J]. Applied soft computing journal, 2013, 13(1): 189?200.
[12] PARK J, BAIK J. Improving software reliability prediction through multi?criteria based on dynamic model selection and combination [J]. Journal of systems and software, 2015, 101(C): 236?244.endprint