張丹 宋曉秋
【摘要】 針對軟件質(zhì)量評價的問題,提出了一種基于遺傳算法和BP人工神經(jīng)網(wǎng)絡(luò)的軟件質(zhì)量評價方法,建立了軟件質(zhì)量評價模型,提高軟件質(zhì)量評價的準確性。利用遺傳算法的全局隨機搜索能力彌補了網(wǎng)絡(luò)容易陷入局部最優(yōu)解的問題。最后通過實驗得到的數(shù)據(jù)結(jié)果,證明了該方法能夠更加準確的評估軟件質(zhì)量。
【關(guān)鍵詞】 遺傳算法 BP神經(jīng)網(wǎng)絡(luò) 軟件質(zhì)量評價
隨著云計算、大數(shù)據(jù)等新理念、新技術(shù)被應(yīng)用到了軟件當中,人們對軟件質(zhì)量的要求變得越來越高。對于軟件產(chǎn)品來說,越早的獲得軟件產(chǎn)品的質(zhì)量水平,就能夠越早的減少軟件產(chǎn)品開發(fā)維護的失敗因素。而軟件質(zhì)量評價[1]也漸漸成為保證軟件質(zhì)量的一個重要手段。軟件質(zhì)量評價是一個復雜的系統(tǒng)工程,如何深入研究軟件質(zhì)量評價的模型和方法,尋找一個準確性高的軟件質(zhì)量評價方法是十分重要的,也是對軟件質(zhì)量進行更深理解和更好控制的重要手段之一,是控制軟件開發(fā)、提高軟件質(zhì)量的有效保證。
軟件質(zhì)量要求的提高增加了軟件評價技術(shù)研究的重要性,因為只有能夠被定性評價的軟件才是可被控制的。目前對軟件質(zhì)量評價的方法過于主觀性,如層次分析法、模糊綜合評價法,或通過簡單的數(shù)學運算來評價軟件質(zhì)量,忽略了各度量元和軟件質(zhì)量之間的非線性的關(guān)系,這樣會有很大的主觀因素的干擾,所得到的結(jié)果也難以真正的反應(yīng)軟件的質(zhì)量的好壞。在傳統(tǒng)的軟件質(zhì)量度量方法中,當度量的數(shù)據(jù)量很大時,無法得到精確地評價結(jié)果且計算過程復雜,求解繁瑣,這些方法也缺乏自學習的能力。
人工神經(jīng)網(wǎng)絡(luò)具有自學習自適應(yīng)的能力,可以解決傳統(tǒng)方法無法解決的問題,但由于神經(jīng)網(wǎng)絡(luò)自身存在很多的限制和不足,如網(wǎng)絡(luò)的訓練時間較長、易收斂于局部極小值等。本文將用遺傳算法[3]對神經(jīng)網(wǎng)絡(luò)進行改進[4],將改進后的BP人工神經(jīng)網(wǎng)絡(luò)應(yīng)用到軟件質(zhì)量的評價中,通過研究軟件質(zhì)量評價的特征,建立了基于遺傳算法和BP神經(jīng)網(wǎng)絡(luò)的軟件質(zhì)量評價系統(tǒng)[5] [6],先通過遺傳算法對神經(jīng)網(wǎng)絡(luò)的初始權(quán)值閾值進行訓練確定,然后再利用BP神經(jīng)網(wǎng)絡(luò)進行精確的訓練,最后獲得結(jié)果。實驗證明該方法能夠科學準確的對軟件的質(zhì)量進行定量的評估,也能夠克服BP神經(jīng)網(wǎng)絡(luò)收斂速度慢、易陷入局部最小值的缺陷。
一、軟件質(zhì)量評價指標體系
軟件質(zhì)量評價是為了揭示當前狀態(tài)的軟件質(zhì)量[7] [8],為軟件質(zhì)量的管理提供有力的手段。軟件質(zhì)量評價是使用合適的技術(shù)對被評價軟件的質(zhì)量特性、子特性等進行度量并對度量的結(jié)果進行評估,從而給出軟件產(chǎn)品能否滿足特定需求的評價結(jié)果。軟件質(zhì)量評價可以定量的給出軟件的質(zhì)量水平,可以根據(jù)軟件質(zhì)量的評價結(jié)果數(shù)據(jù)對軟件進行相應(yīng)的管理和質(zhì)量改進。
BP神經(jīng)網(wǎng)絡(luò)具有很強的非線性映射和自適應(yīng)的學習能力,但由于BP神經(jīng)網(wǎng)絡(luò)是基于梯度的算法,收斂速度慢,因此將遺傳算法與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合,解決BP神經(jīng)網(wǎng)絡(luò)訓練時間長和易陷入局部最優(yōu)的缺點,有效地克服傳統(tǒng)軟件質(zhì)量度量方法的不足之處[9]。
軟件質(zhì)量的評價是一個復雜的過程,評價指標涉及面廣、不確定性因素多、難以量化,因此至今沒有一個統(tǒng)一的標準。作為軟件質(zhì)量評價模型,需要通過對一組軟件質(zhì)量度量元指標進行監(jiān)測分析,以此來綜合反映軟件質(zhì)量的情況,因此建立科學地軟件質(zhì)量評價指標是建立軟件質(zhì)量評價模型的重要環(huán)節(jié)。
本文在設(shè)計軟件質(zhì)量評價指標體系時,綜合考慮了基于設(shè)計分析、軟件測試和軟件內(nèi)部結(jié)構(gòu)等多方面的部分對軟件可靠性與安全性進行評價技術(shù)的研究。在參考《軍用軟件安全性設(shè)計指南》、《C/C++語言編程安全子集》、軟件代碼結(jié)構(gòu)的指標及軟件測試相關(guān)信息的基礎(chǔ)上,初步構(gòu)建了航天系統(tǒng)軟件質(zhì)量評價指標體系,如圖1所示。
針對航天系統(tǒng)軟件質(zhì)量評價指標體系,將各個因素自上而下劃分為三個層次,最高層即目標層為軟件質(zhì)量綜合評價,作為神經(jīng)網(wǎng)絡(luò)的輸出層;中間層為基于設(shè)計分析的評價、基于軟件內(nèi)部結(jié)構(gòu)的評價和基于軟件測試的評價;準則層為圖中的評價指標,作為神經(jīng)網(wǎng)絡(luò)的輸入。
創(chuàng)建一個三層的BP神經(jīng)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)的輸入變量是上述指標體系中的所有指標,網(wǎng)絡(luò)的輸出層結(jié)點數(shù)為1。采用樣本數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)進行訓練,訓練完畢后得到滿足訓練精度的權(quán)重系數(shù)矩陣,便可通過所得到的權(quán)重系數(shù)矩陣,利用待測軟件的數(shù)據(jù)信息對軟件進行質(zhì)量評價,得到的軟件質(zhì)量評價結(jié)果減少了主觀隨意性和思維上的不確定性,結(jié)果更加科學、準確。
二、人工神經(jīng)網(wǎng)絡(luò)
人工神經(jīng)網(wǎng)絡(luò)是人工智能領(lǐng)域的一個重要分支,是由大量稱為神經(jīng)元的信息單元連接組成的復雜網(wǎng)絡(luò),可以模擬人腦神經(jīng)網(wǎng)絡(luò)對信息處理機制的智能式的計算模式。它有著很強的自適應(yīng)性和自組織能力。對軟件質(zhì)量評價模型的構(gòu)造主要是根據(jù)已知的軟件數(shù)據(jù),對軟件質(zhì)量評價模型中的各種因素之間的相互關(guān)系進行分析研究。
BP網(wǎng)絡(luò)[10]是使用最多的一種神經(jīng)網(wǎng)絡(luò)。BP神經(jīng)網(wǎng)絡(luò)由D.Ruvmelhar和McClelland于1985年提出,是一種基于誤差反向傳遞算法的前向多層神經(jīng)網(wǎng)絡(luò)。 BP神經(jīng)網(wǎng)絡(luò)通常由一個輸入層、一層或多層隱含層和一個輸出層構(gòu)成,各層神經(jīng)元間由連接權(quán)重相連接在一起。每一層內(nèi)神經(jīng)元的輸出均傳送到下一層,這種傳送由連接權(quán)來達到增強、減弱或抑制這些輸出地作用,除了輸入層的神經(jīng)元之外,隱蔽層和輸出層神經(jīng)元的凈輸入是前一層神經(jīng)元輸出地加權(quán)和。
在設(shè)計BP網(wǎng)絡(luò)時,一般考慮設(shè)計一個隱層,當一個隱層節(jié)點很多仍不能改善網(wǎng)絡(luò)性能時,才考慮再增加一層。BP神經(jīng)網(wǎng)絡(luò)每次學習訓練過程都是由每一階段對權(quán)重和閾值的更新組成,其目的就是將目標輸出與實際輸出所得到的輸出誤差的平方和最小化。
BP神經(jīng)網(wǎng)絡(luò)是一種梯度下降算法[11],在實際的應(yīng)用中還存在很多不足:①BP神經(jīng)網(wǎng)絡(luò)的誤差函數(shù)是一種沿梯度下降方向的單點搜索算法,很容易陷入局部極小值;②BP神經(jīng)網(wǎng)絡(luò)初始參數(shù)的隨機性會導致網(wǎng)絡(luò)收斂速度慢,訓練容易陷入癱瘓狀態(tài);③BP神經(jīng)網(wǎng)絡(luò)的初始結(jié)構(gòu)參數(shù)隨機,對權(quán)值學習的結(jié)構(gòu)也會存在一定的隨機性。
基于上述原因,將遺傳算法引入到BP神經(jīng)網(wǎng)絡(luò)中,利用遺傳算法高效的自動過程設(shè)計輔助神經(jīng)網(wǎng)絡(luò)。
三、基于遺傳算法的BP神經(jīng)網(wǎng)絡(luò)軟件質(zhì)量度量
3.1算法的簡介
遺傳算法是一種基于自然選擇和群體遺傳進行尋優(yōu)的算法,它模擬了自然選擇和遺傳過程中的繁殖、雜交和突變的現(xiàn)象,將遺傳算法與神經(jīng)網(wǎng)絡(luò)結(jié)合,利用遺傳算法的多點搜索性可使其具有全局搜索型,從而可使搜索結(jié)果免于收斂于局部最優(yōu)解,獲得全局最優(yōu)解。利用遺傳算法改進BP神經(jīng)網(wǎng)絡(luò),可彌補BP神經(jīng)網(wǎng)絡(luò)容易陷入局部極小值和收斂速度慢等缺陷[12]。
編碼方法:將要構(gòu)建的神經(jīng)網(wǎng)絡(luò)中的所有權(quán)值作為一組染色體。編碼長度為N,基為1-N的實數(shù)按順序排列,如N=5,則一個染色體可表示為:[5.2,2.11,4.435,1.598,2.456]。
交叉算法:將交叉算子作用于群體,以某概率相互交換某個個體之間的部分染色體,采用單點交叉的方法進行隨機配對。在染色體上隨機產(chǎn)生兩個點,將兩個染色體的兩個位點之間的基因片段進行交換。
變異算法:變異算法是針對個體的某個或某些基因位上的基因值按某較小的概率進行改變,從而產(chǎn)生新的個體。
精英保留:選取m個最優(yōu)的染色體作為精英庫,每次迭代當代種群中的最優(yōu)染色體,如果比精英庫中的染色體更優(yōu),則將其存入庫中替代精英庫中最差的染色體,然后隨機選擇一個染色體替代為當代種群中的最差染色體,實現(xiàn)精英保留。
自適應(yīng):采用線性遞增公式計算變異率,采用線性遞減公式計算交叉率。
其中Pm1,Pm2為變異率最小值和最大值。Pc1,Pc2為交叉率最小值和最大值。gen為當前迭代次數(shù),maxgen為最大迭代次數(shù)。
3.2 算法的設(shè)計與實現(xiàn)
該算法的主要思想是將遺傳算法與神經(jīng)網(wǎng)絡(luò)相結(jié)合,通過遺傳算法對神經(jīng)網(wǎng)絡(luò)的初始權(quán)重和閾值進行求解,在求解過程中采用自適應(yīng)算法計算變異率和交叉率,并在神經(jīng)網(wǎng)絡(luò)的訓練過程中采用精英保留的方法進行訓練。具體算法過程如下:
步驟1:讀取算例數(shù)據(jù)。
步驟2:設(shè)置遺傳算法的參數(shù)。
步驟3:初始化染色體,令i=1。
步驟4:執(zhí)行第i次迭代。
步驟5:采用自適應(yīng)算法計算變異率和交叉率。
步驟6:對染色體進行變異操作。
步驟7:對染色體進行交叉操作。
步驟8:對染色體進行解碼。
步驟9:用染色體基因?qū)P神經(jīng)網(wǎng)絡(luò)的初始權(quán)重和閾值進行賦值。
步驟10:訓練BP神經(jīng)網(wǎng)絡(luò)。
步驟11:計算訓練誤差,并以此為目標函數(shù)。
步驟12:以目標函數(shù)為評價準則,更新精英庫并保留精英。
步驟13:如果i<迭代次數(shù),那么i=i+1,,轉(zhuǎn)4,否則轉(zhuǎn)14。
步驟14:輸出結(jié)果,算法結(jié)束。
算法的流程圖如圖2所示:
四、 實驗
通過以上研究及理論分析,我們將通過一些實際的實驗來驗證研究的結(jié)論。利用Matlab工具箱函數(shù)設(shè)計改進的BP神經(jīng)網(wǎng)絡(luò)模型,對軟件的質(zhì)量數(shù)據(jù)進行學習,誤差基本上能達到0.01的精度,BP網(wǎng)絡(luò)輸入層到隱含層的傳遞函數(shù)采用transig函數(shù),隱含層到輸出層的傳遞函數(shù)采用purelin函數(shù),網(wǎng)絡(luò)的精度為0.000000001,訓練次數(shù)為1000,訓練誤差小于目標誤差訓練結(jié)束。遺傳算法的運行參數(shù)為:遺傳算法種群規(guī)模為50,迭代次數(shù)為200,交叉概率范圍0.5~0.85,變異概率范圍為0.05~0.15。
首先從3個不同的航天系統(tǒng)軟件中選擇140個樣本作為仿真的數(shù)據(jù),其中測試樣本40,訓練樣本100個,導入建立的評價模型中,然后初始化BP網(wǎng)絡(luò),并設(shè)置訓練的各項參數(shù),接著進行樣本學習,進行測試并輸出評估結(jié)果。
將未結(jié)合遺傳算法的神經(jīng)網(wǎng)絡(luò)作為對比模型,對于未引入遺傳算法的BP神經(jīng)網(wǎng)絡(luò)的預測結(jié)果和將遺傳算法與神經(jīng)網(wǎng)絡(luò)相結(jié)合改進后的軟件質(zhì)量的預測結(jié)果如圖3所示。
對于對于未引入遺傳算法的BP神經(jīng)網(wǎng)絡(luò)和將遺傳算法與神經(jīng)網(wǎng)絡(luò)相結(jié)合改進后的軟件質(zhì)量的相對誤差和絕對誤差結(jié)果如圖4所示。
從實際的評價結(jié)果來看,建立的基于遺傳算法和神經(jīng)網(wǎng)絡(luò)的軟件質(zhì)量評價系統(tǒng)的評價結(jié)果精度較單純的BP神經(jīng)網(wǎng)絡(luò)的預測結(jié)果更為準確可信在可接受范圍內(nèi),是一個合理可行的軟件質(zhì)量預測方法。
五、結(jié)束語
本文將BP神經(jīng)網(wǎng)絡(luò)與遺傳算法相結(jié)合建立了軟件質(zhì)量評價模型,充分發(fā)揮了二者的優(yōu)勢,克服了BP神經(jīng)網(wǎng)絡(luò)中局部極小的缺陷,評價結(jié)果相對準確、客觀、科學、有一定的研究價值。利用MATLAB對實際的數(shù)據(jù)進行實證分析,結(jié)果表明所建立的評價模型誤差小,評估更加準確,具有較好的實際應(yīng)用效果。
參 考 文 獻
[1]廖錦舜,何锫.基于模糊神經(jīng)網(wǎng)絡(luò)的軟件質(zhì)量評價方法[D].計算機技術(shù)與發(fā)展,2006,2
[2] 袁曾任.人工神經(jīng)網(wǎng)絡(luò)及其應(yīng)用[M].北京:清華大13 學出版社,2000.
[3]王小平,曹立明.遺傳算法——理論、應(yīng)用于軟件設(shè)計實現(xiàn)[M].西安:西安交通大學出版社,2002
[4]蚩志鋒,閏珍珠,黃彪.基于遺傳算法與BP算法的水質(zhì)評價模型[J].重慶科技學院學報:自然科學版,2009,11(1):122—124.
[5]盧雯嘉,童杰等.基于遺傳算法和BP神經(jīng)網(wǎng)絡(luò)的大電力客戶信用評價模型[J].重慶大學學報,2009,34(8).
[6]蚩志鋒。閏珍珠,黃彪.基于遺傳算法與BP算法的水質(zhì)評價模型[J].重慶科技學院學報:自然科學版,2009,11(1):122—124.
[7]楊愛民,張文祥.軟件質(zhì)量及其量化評價方法[J].計算機工程與設(shè)計,2006,27(21):39-88.
[8]黃錫滋.軟件可靠性安全性與質(zhì)量保證[M].北京:電子工業(yè)出版社,2002:32-65.
[9]王李進,吳保國,鄭德祥.基于人工神經(jīng)網(wǎng)絡(luò)的軟件質(zhì)量評價[J].計算機應(yīng)用與軟件,2008,25(12):134-150.
[10] 肖國榮.BP神經(jīng)網(wǎng)絡(luò)在基金價格預測中的應(yīng)用研究[J].計算機仿真,2011,28(3):120—123.
[11]李建珍.基于遺傳算法的人工神經(jīng)網(wǎng)絡(luò)學習算法[J].西北師范大學學報,2002,38(2).
[12]周明,李樹棟.遺傳算法原理及應(yīng)用[M].北京:國防工業(yè)出版社,1999.