宮麗娜,馬懷志
棗莊學院 信息科學與工程學院,山東 棗莊 277160
粒子群算法優(yōu)化的BP網(wǎng)絡(luò)預測軟件質(zhì)量
宮麗娜,馬懷志
棗莊學院 信息科學與工程學院,山東 棗莊 277160
對于軟件項目來說,越早地獲得軟件的質(zhì)量級別,就會越大地減少軟件項目的開發(fā)和維護成本。質(zhì)量預測建模技術(shù)是軟件質(zhì)量評價體系中的關(guān)鍵技術(shù),通過該技術(shù)可以建立起軟件中度量數(shù)據(jù)和質(zhì)量要素間的非線性關(guān)系,這樣可以避免主觀因素的干擾,得到更加客觀的軟件質(zhì)量級別,從而更有利于管理決策[1]。
目前國內(nèi)外對質(zhì)量預測建模技術(shù)已經(jīng)有了一些研究。主要有兩方面:基于軟件錯誤測試報告或者軟件質(zhì)量度量來預測軟件的缺陷數(shù)和基于軟件質(zhì)量度量來預測軟件的可靠性。
在傳統(tǒng)的軟件質(zhì)量預測建模技術(shù)中,主要采用回歸方法,基于軟件的規(guī)模、復雜度或者測試數(shù)據(jù)來預測軟件的缺陷數(shù)[2-3]。Khoshgoftaar和Seliya[4]提出了采用回歸樹(Regression Tree)預測軟件各模塊中的錯誤數(shù)的質(zhì)量預測模型,Khoshgoftaar等提出了一種結(jié)合模糊聚類的質(zhì)量預測模型[5]。我國的蔡開元教授提出了一種結(jié)合模糊方法的模糊軟件可靠性的確認模型[6-7]。
1992年,Karunanithi第一次將人工神經(jīng)網(wǎng)絡(luò)技術(shù)應(yīng)用于軟件質(zhì)量預測模型中,他建立了基于一個實際項目的錯誤數(shù)據(jù)集合來估計累計錯誤數(shù)的質(zhì)量預測模型,并采用三種不同的神經(jīng)網(wǎng)絡(luò)進行實驗,得出了比傳統(tǒng)的方法更好的結(jié)果[8]。Nidhi Gupta和Manu Pratap Singh采用BP神經(jīng)網(wǎng)絡(luò)建立基于執(zhí)行時間來預測軟件可能發(fā)生的錯誤數(shù)的軟件質(zhì)量預測模型[9]。俞立軍,賁可榮采用前向級聯(lián)神經(jīng)網(wǎng)絡(luò)建立軟件質(zhì)量預測模型[10]。Liang Tian和Afzel Noore利用遺傳算法優(yōu)化的神經(jīng)網(wǎng)
CNKI網(wǎng)絡(luò)優(yōu)先出版:2013-05-21,http://www.cnki.net/kcms/detail/11.2127.TP.20130521.1027.002.html絡(luò)建立了軟件質(zhì)量預測模型[11-12]。
基于以上研究,在軟件質(zhì)量建模技術(shù)中,基于軟件質(zhì)量度量利用神經(jīng)網(wǎng)絡(luò)和改進的神經(jīng)網(wǎng)絡(luò)成了主流,但是選擇哪些軟件質(zhì)量度量指標作為模型的輸入,以及怎樣改進神經(jīng)網(wǎng)絡(luò)都是研究的內(nèi)容?;诖耍疚奶岢隽嘶诹W尤核惴ǖ腂P神經(jīng)網(wǎng)絡(luò)預測模型,該模型是以C&K度量指標表征面向?qū)ο筌浖亩攘繉傩裕篊BO、RFC、DIT、LCOM、NOC、WMC作為輸入。
軟件度量就是對影響軟件質(zhì)量的內(nèi)部屬性進行量化測量[13]。而在量化的基礎(chǔ)上建立的質(zhì)量預測模型能夠?qū)τ脩羲P(guān)心的軟件質(zhì)量特性進行客觀的評價。軟件的可靠性、功能性等這些質(zhì)量要素是無法直接度量的,需要通過度量軟件的內(nèi)部屬性來間接地得到。所以,軟件度量和軟件質(zhì)量預測模型間的關(guān)系,如圖1所示[14]。
圖1 軟件度量和軟件預測模型間的關(guān)系
圖中可以直接度量的度量1,度量2,…,度量n作為軟件質(zhì)量預測模型的輸入,通過這n個度量指標來得到度量n+1的預測值,從而反映出軟件的質(zhì)量特性。
軟件質(zhì)量預測模型的實質(zhì)就是從歷史數(shù)據(jù)中尋找軟件度量與軟件質(zhì)量要素之間的關(guān)系。
1985年,D.Ruvmelhar和McClelland提出了BP神經(jīng)網(wǎng)絡(luò),主要包含輸入層、隱含層和輸出層。圖2所示模型是只有一層隱含層的BP網(wǎng)絡(luò)。
圖2 BP網(wǎng)絡(luò)結(jié)構(gòu)
BP網(wǎng)絡(luò)是誤差反傳誤差反向傳播算法的學習過程,分為正向傳播和反向傳播兩個階段。在正向傳播中,信息從輸入層傳遞給中間層(中間層可以設(shè)計為單隱層或者多隱層),經(jīng)過中間層的處理傳遞給輸出層,完成一次學習的正向傳播處理過程。當實際輸出與期望輸出不符時,就會進入誤差的反向傳播階段。誤差通過輸出層,按誤差梯度下降的方式修正各層權(quán)值,向隱層、輸入層逐層反傳。神經(jīng)元節(jié)點的特性函數(shù)是S型函數(shù),如公式(1)所示:
3.1 粒子群優(yōu)化算法
粒子群優(yōu)化(Particle Swarm Optimizer,PSO)算法是通過模擬鳥群覓食行為而發(fā)展起來的一種基于群體協(xié)作的隨機搜索算法。PSO中,每個優(yōu)化問題的潛在解就是搜索空間中的一只鳥,稱之為“粒子”,所有的粒子都有一個由被優(yōu)化的函數(shù)決定的適應(yīng)值,每個粒子還有一個速度決定它們飛翔的方向和距離,通過粒子間的相互作用在解空間中進行搜索,從而得到最優(yōu)解。
粒子群算法的主要思想是初始化一群隨機粒子,然后通過迭代找到最優(yōu)解,每次迭代中粒子跟蹤兩個極值來更新自己。其中粒子個數(shù)稱為種群規(guī)模m;第i個粒子在 d 維空間的速度表示為Vi=(Vi1,Vi2,…,Vid);位置表示為 Xi=(Xi1,Xi2,…,Xid)(i=1,2,…,m)。在每次迭代中,根據(jù)每一個粒子的適應(yīng)度,更新每個粒子的個體最優(yōu) pbest=(p1,p2,…,pd)和全局最優(yōu)值 gbest=(g1,g2,…,gd)粒子通過動態(tài)跟蹤個體極值和全局最優(yōu)值來更新其速度和位置的公式如下:
式中 j=1,2,…,d ;t為迭代次數(shù);C1,C2是學習因子;w為慣性權(quán)值;rand()是介于(0,1)之間的隨機數(shù)。
3.2 粒子群算法優(yōu)化BP網(wǎng)絡(luò)
3.2.1 算法簡介
BP網(wǎng)絡(luò)采用的梯度下降法,使得權(quán)值收斂到某個值時,不能保證它是誤差平面的全局最小值,而PSO算法避免了梯度下降法中的缺點,可以避免BP網(wǎng)絡(luò)的缺陷,同時也可以縮短神經(jīng)網(wǎng)絡(luò)的訓練時間。因此用粒子群算法代替梯度下降法訓練BP網(wǎng)絡(luò)的參數(shù),可以改善BP算法性能[15-18]。優(yōu)化的學習算法中,粒子向量 Xi= (Xi1,Xi2,…,Xid)各元素的值表示BP網(wǎng)絡(luò)中神經(jīng)元的權(quán)值或閾值,其中d為BP網(wǎng)絡(luò)中的所有權(quán)值和閾值個數(shù)。粒子群算法中的粒子的適應(yīng)度函數(shù)為式(5)所示:
式中,n表示樣本個數(shù),popIndex=1,2,…,popSize,popSize表示粒子的個數(shù),Yi,j表示第i個樣本的第 j個理想輸出值,yi,j表示第i個樣本的第 j個實際輸出值。算法的流程圖如圖3所示。
圖3 算法流程圖
3.2.2 算法設(shè)計與實現(xiàn)
該算法是將PSO替代BP網(wǎng)絡(luò)中的梯度下降法。該算法的主要思想是通過PSO算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的連接權(quán)值和閾值,這樣能夠改善BP算法的性能。具體如下:
步驟1初始化BP網(wǎng)絡(luò)結(jié)構(gòu),主要初始化神經(jīng)網(wǎng)絡(luò)各層的神經(jīng)元個數(shù)以及隱含層的層數(shù)。
步驟2初始化粒子群,主要初始化粒子的位置向量、速度向量的維數(shù)(dimsize)、粒子群的規(guī)模(popSize)、學習因子C1,C2、慣性權(quán)重w、粒子群及每個粒子的速度和個體極值和全局最優(yōu)值;確定適應(yīng)度函數(shù)。
步驟3計算各粒子的適應(yīng)度值。使用訓練樣本對每一粒子進行前向傳播計算訓練誤差,然后根據(jù)公式(5)計算粒子的適應(yīng)度。
步驟4根據(jù)各粒子的適應(yīng)度值更新個體極值和全局最優(yōu)值。
步驟5根據(jù)個體極值和全局最優(yōu)值更新各粒子速度和位置。
步驟6判斷算法停止條件。計算迭代產(chǎn)生的新的粒子群的適應(yīng)度,判斷算法是否達到最大迭代次數(shù)或者達到規(guī)定的誤差標準,如果條件滿足則生成最優(yōu)解。算法停止迭代;否則迭代次數(shù)增1后返回步驟3繼續(xù)迭代。
通過上述具體的該算法的步驟可以知道,該算法的復雜度為O(n),在訓練網(wǎng)絡(luò)模型時要比BP網(wǎng)絡(luò)節(jié)省很多時間。
4.1 參數(shù)設(shè)置
本文采用該算法對面向?qū)ο蟮能浖目煽啃再|(zhì)量屬性進行實驗。采用C&K度量指標:CBO、NOC、DIT、LCOM、RFC、WMC作為預測模型的輸入變量,軟件的可靠性作為模型的輸出[19-22]。先通過訓練數(shù)據(jù)對該網(wǎng)絡(luò)模型進行訓練,得到 CBO、NOC、DIT、LCOM、RFC、WMC六個指標和軟件可靠性之間的非線性關(guān)系,然后通過訓練好的這個網(wǎng)絡(luò)模型,對需要驗證的軟件進行軟件可靠性預測。
本實驗基于美國宇航局的度量數(shù)據(jù)計劃中的KC1數(shù)據(jù)庫中的28個歷史數(shù)據(jù),其中20個為訓練數(shù)據(jù),8個為驗證數(shù)據(jù)。為了加快訓練速度,對歷史數(shù)據(jù)進行歸一化處理。
BP網(wǎng)絡(luò)結(jié)構(gòu)中,隱含層數(shù)為1,輸入層節(jié)點數(shù)為6,隱層節(jié)點初始化12,輸出層節(jié)點數(shù)為1。PSO算法中粒子數(shù)為30;C1=2,C2=1.8;w隨迭代次數(shù)由0.9線性地減小為0.3。
本實驗的機器配置為CPU:Intel?CoreTMi5-2430M,內(nèi)存:4 GB的聯(lián)想筆記本,采用C#語言進行代碼實現(xiàn)。
4.2 結(jié)果分析
實驗與BP算法進行了比較,兩個算法的誤差曲線如圖4,5所示。
圖4 BP網(wǎng)絡(luò)誤差曲線
圖5 基于PSO的BP網(wǎng)絡(luò)誤差曲線
由表1可知,BP網(wǎng)絡(luò)迭代2 049次達到預期結(jié)果,而PSO-BP網(wǎng)絡(luò)只迭代了100次就達到預期誤差由此可知訓練時間明顯縮短,收斂速度得到了提高,而訓練得到的MSE也更小。
表1 學習算法的比較
由圖6可知,基于PSO的BP網(wǎng)絡(luò)優(yōu)于傳統(tǒng)的BP網(wǎng)絡(luò),PSO-BP訓練出來的神經(jīng)網(wǎng)絡(luò)能更好地對數(shù)據(jù)進行驗證。也就是說基于PSO的BP網(wǎng)絡(luò)建立的軟件質(zhì)量預測模型能夠更好地反應(yīng)軟件度量和質(zhì)量要素之間的非線性關(guān)系。
圖6 驗證數(shù)據(jù)的曲線擬合
質(zhì)量預測建模技術(shù)是軟件質(zhì)量評價體系中的關(guān)鍵技術(shù),本文將BP神經(jīng)網(wǎng)絡(luò)和粒子群算法相結(jié)合,用粒子群算法替代BP網(wǎng)絡(luò)中的梯度下降法,并將該方法應(yīng)用于軟件質(zhì)量的可靠性預測中,建立了考慮6個度量元的軟件可靠性的預測模型,實驗表明,粒子群優(yōu)化神經(jīng)網(wǎng)絡(luò)模型能夠迅速而精確地預測軟件的質(zhì)量,正確地描述軟件度量和質(zhì)量要素之間的非線性關(guān)系。
[1]李虎,史曉華,楊海燕,等.軟件質(zhì)量評價技術(shù)[J].計算機研究與發(fā)展,2002,39(1):61-67.
[2]Hatton L C.Safety related software development:standards,subsets,testing,metrics,legal issues[M].[S.l.]:McGraw-Hill,1994.
[3]Fenton N E,Lawrence S,Glass R.Science and substance:a challenge to software engineers[J].IEEE Software,1994:86-95.
[4]Khoshgoftaar T M,Seliya N.Tree-based software quality estimation models for fault prediction[C]//Proceedings of the 8th IEEE Symposium on Software Metrics,2002:203-214.
[5]Khoshgoftaar T M,Liu Y.Multiobjective module-order model for software quality enhancement[J].IEEE Transactions on Evolutionary Computation,2004,8(6):593-608.
[6]蔡開元.軟件可靠性工程基礎(chǔ)[M].北京:清華大學出版社,1995.
[7]蔡開元.一個模糊軟件可靠性確認模型[J].航空學報,1993(11):95-98.
[8]Karunanithi N,Whitley D,Malaiya Y K.Using neural networks in reliability prediction[J].IEEE Software,1992,9(4):53-59.
[9]Gupta N,Singh M P.Estimation of software reliability with execution time model using the pattern mapping technique ofartificialneuralnetwork[J].Computerand Operations Research,2005,32(1):187-199.
[10]俞立軍,賁可榮.基于神經(jīng)網(wǎng)絡(luò)的軟件可靠性模型的實現(xiàn)與分析[J].計算技術(shù)與自動化,2002,21(3):1-4.
[11]Tian L,Noore A.Evolutionary neural modeling for software cumulative failure time prediction[J].Reliability Engineering and System Safety,2005,87(1):45-51.
[12]Tian L,Noore A.On-line prediction of software reliability using an evolutionary connectionist model[J].Journal of Systems and Software,2005,77(2):173-180.
[13]程杜平,錢紅兵.軟件質(zhì)量與度量[J].計算機工程與應(yīng)用,2002,38(7):80-83.
[14]陳起.軟件度量與評測技術(shù)研究及Java軟件度量與評測工具的實現(xiàn)[D].北京:北京航空航天大學,2001.
[15]陳樹,徐保國,王海霞,等.基于粒子群優(yōu)化神經(jīng)網(wǎng)絡(luò)算法在發(fā)酵過程控制中的研究[J].計算機與應(yīng)用化學,2007,24(7):885-887.
[16]曾萬里,危韌勇,陳紅玲.基于改進PSO算法的BP神經(jīng)網(wǎng)絡(luò)的應(yīng)用研究[J].計算機技術(shù)與發(fā)展,2008,18(4):49-51. [17]葛哲學,孫志強.神經(jīng)網(wǎng)絡(luò)理論與MATLAB R2007實現(xiàn)[M].北京:電子工業(yè)出版社,2007.
[18]劉洪波,王秀坤,孟軍.神經(jīng)網(wǎng)絡(luò)基于粒子群優(yōu)化的學習算法研究[J].小型微型計算機系統(tǒng),2005,26(4):638-640.
[19]Thwin M M T,Quah T S.Application of neural network for predicting software development faults using object-oriented design metrics[C]//Proceedingsof9th InternationalConference on NeuralInformation Processing(ICONIP’02),2002,5:2312-2316.
[20]Quah J T S,Thwin M M T.Prediction of software readiness using neural network[C]//Proceedings of 1st International Conference on Information Technology&Applications(ICITA 2002),Australia,2002.
[21]Thwin M M T,Quah T S.Application of neural networks forsoftware quality prediction using objectoriented metrics[J].Journal of Systems and Software,2005,76(2):147-156.
[22]Kanmani S,Rhymend Uthariaraj V,Sankaranarayanan V,et al.Object oriented software quality prediction using generalregressionneuralnetworks[J].ACM SIGSOFT Software Engineering Notes,2004,29(5):1-6.
GONG Lina,MA Huaizhi
College of Information Science and Engineering,Zaozhuang University,Zaozhuang,Shandong 277160,China
The modeling technology of software which can find the nonlinear relationship between metric data and quality factors is the key technology in the software quality evaluation system.BP neural network is a kind of modeling method for the nonlinear relationship between metric data and quality factors,but there are some problems,such as slow convergence speed and easily getting into local minimum.So it proposes that using the optimized BP network based on PSO to establish the prediction model of software quality,which solves the problem of slow convergence speed and easily getting into local minimum well.In the basis of the evolutionary BP neural network,through the experiment with 28 groups of data,and by comparing with the result of BP model,the model is validated.
prediction model of software quality;software metrics;neural network;Particle Swarm Optimization(PSO)
預測軟件質(zhì)量的技術(shù)中,軟件建模技術(shù)是軟件質(zhì)量評價體系中的關(guān)鍵技術(shù),它可以發(fā)現(xiàn)軟件中度量數(shù)據(jù)和軟件質(zhì)量要素之間的非線性關(guān)系。BP神經(jīng)網(wǎng)絡(luò)能夠很好地模擬度量數(shù)據(jù)和質(zhì)量要素之間的非線性關(guān)系,但是BP網(wǎng)絡(luò)存在易于陷入局部極小和收斂速度慢的問題,所以提出了用粒子群算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),通過優(yōu)化的BP網(wǎng)絡(luò)建立軟件質(zhì)量模型,這樣能很好地解決BP網(wǎng)絡(luò)收斂速度慢和局部極小的問題。在實現(xiàn)該進化BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,利用28組數(shù)據(jù)進行實驗,并通過與BP模型的結(jié)果的比較,驗證了該模型。
軟件質(zhì)量預測模型;軟件度量;神經(jīng)網(wǎng)絡(luò);粒子群算法
A
TP311
10.3778/j.issn.1002-8331.1301-0180
GONG Lina,MA Huaizhi.Software quality prediction of BP network based on PSO.Computer Engineering and Applications,2014,50(23):65-68.
宮麗娜(1985—),女,助教,主要研究方向為軟件工程;馬懷志(1984—),男,助教,主要研究方向為模式識別。E-mail:390701387@qq.com
2013-01-16
2013-04-27
1002-8331(2014)23-0065-04