閆秋粉,南振岐,姚爾果,薛小虎
(1.西北師范大學 數(shù)學與信息科學學院,甘肅 蘭州730070;2.新疆烏魯木齊市軍區(qū)測繪信息中心,新疆 烏魯木齊830000)
風險是介于確定性和不確定性之間的狀態(tài),是指未來的消極結(jié)果或損失的潛在可能。采用傳統(tǒng)的基于數(shù)學模型的風險評估方法[1-4]對評估結(jié)果的判定會產(chǎn)生較大的模糊性和主觀性,通過對軟件風險評估過程分析,提出了風險評估指標體系模型,運用模糊數(shù)學理論實現(xiàn)了對軟件風險評估因素的量化。
BP(back propagation)神經(jīng)網(wǎng)絡(luò)通常采用梯度下降法,極易陷入局部最優(yōu)值,收斂速度慢。粒子群優(yōu)化算法(particle swarm optimization,PSO)是一種基于群體相互協(xié)作的智能優(yōu)化算法,通過粒子群進化速率改進粒子群算法(dynamic particle swarm optimization,DPSO),提出慣性權(quán)重因子隨每次迭代的搜索步長動態(tài)變化的方法,增強了全局搜索能力,提高了收斂的精度和速度。通過DPSO算法訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)構(gòu)建了進化神經(jīng)網(wǎng)絡(luò)模型,最后實例驗證了基于進化神經(jīng)網(wǎng)絡(luò)模型的軟件風險評估方法可實現(xiàn)對風險因素的量化評估,為決策者及時采取風險規(guī)避措施提供了客觀依據(jù),極大地減少了軟件風險帶來的損失。
風險評估為風險管理[5-6]的重要環(huán)節(jié),其過程見圖1。
圖1 風險評估過程
(1)風險識別:根據(jù)軟件項目本身復(fù)雜性和內(nèi)外部環(huán)境,結(jié)合風險知識庫,識別主要的風險源,統(tǒng)計風險因素集。
(2)風險分析:根據(jù)已辨識的風險源發(fā)生的概率和嚴重性初步估算風險系數(shù)。
(3)風險控制:針對風險評估中風險系數(shù)超過規(guī)定范圍的高風險項進行風險控制,制定規(guī)避措施,如若規(guī)避不成功,實施緩解措施,同時對較高風險因素制定應(yīng)急方案。
(4)風險跟蹤:定期關(guān)注風險狀態(tài),對已有的風險因素重新評估風險系數(shù),同時識別新的風險源,制定風險措施。
通常風險量化[7-8]是指發(fā)生潛在損失的可能性與潛在損失兩者的乘積,Boehm將之稱為風險暴露,其關(guān)系為:RE=P(UO)×L(UO),其中,RE為風險暴露,P(UO)為結(jié)果不滿意的概率,L(UO)為由于結(jié)果不滿意而給被影響方造成的損失。該風險模型存在的問題 “低概率,高損失”與 “高概率,低損失”的風險在數(shù)值上的表現(xiàn)是一樣的。針對此問題,本文提出了風險評估指標體系,并定義了指標函數(shù)進行量化,結(jié)合粒子群算法改進BP神經(jīng)網(wǎng)絡(luò)模型,提出了基于進化的神經(jīng)網(wǎng)絡(luò)的軟件風險定量評估模型,經(jīng)仿真結(jié)果表明該模型對實際評估擬合性較好。
基于風險管理的角度提出風險評估指標體系模型,將風險分為三類進行處理 (如圖2所示):發(fā)生概率高且產(chǎn)生影響大的風險作為最高級別風險,重點關(guān)注的風險;發(fā)生概率高但影響程度中到低的風險;高影響但風險發(fā)生概率低的風險為可忽略的風險。
本文提出的軟件風險評估指標評判體系是從風險管理的角度構(gòu)建而成,如表1所示。
定義1 產(chǎn)品規(guī)模風險RPS= {r1,r2,r3}:
圖2 風險管理分布概率
表1 風險評估指標體系
(1)規(guī)模估算偏差風險是指實際用例點數(shù)與估算用例點數(shù)間的偏差風險。r1=∑ (AUC-EUC)/AUC×WUC,WUC為用例的平衡因子。
(2)技術(shù)復(fù)雜度風險,考慮了系統(tǒng)性能要求,內(nèi)部處理復(fù)雜度以及復(fù)用程度等。為技術(shù)復(fù)雜度風險因素值,WiTF為該因素值的平衡因子。
(3)環(huán)境復(fù)雜度風險,是指項目開發(fā)過程中的硬件資源以及軟件資源的不可用性風險。為環(huán)境復(fù)雜度風險因素值,為該因素的風險平衡因子。
定義2 相關(guān)干系人風險RS= {r4,r5,r6}:
干系人風險包括內(nèi)部干系人風險和外部干系人風險。
(1)開發(fā)人員數(shù)目及經(jīng)驗風險為內(nèi)部干系人風險,直接關(guān)系著軟件項目的質(zhì)量和生產(chǎn)率。r4=PN×WPN+TE×WTE+CC×WCC,PN為人員在項目開發(fā)過程中的架構(gòu)分布,TE為團隊開發(fā)經(jīng)驗,CC為團隊遵守開發(fā)準則的復(fù)雜度,∑WPN+WTE+WCC=1為各自的相關(guān)平衡因子。
(2)高層管理者決策風險為內(nèi)部干系人風險,是指管理者在決策時選擇最優(yōu)決策產(chǎn)生的風險與選擇當前決策產(chǎn)生的風險偏差。r5= (DMmax-CDM)/DMmax×WDM,DMmax為最優(yōu)決策的風險,CDM為當前決策風險,WDM為決策平衡因子。
(3)客戶特性風險為外部干系人風險,是指客戶代表所做的需求模糊風險和不參與同行評審產(chǎn)生的風險。r6=RF×WRF+PR×WPR,RF為需求模糊風險,PR為不參與同行評審風險,∑WRF+WPR=1為各自的平衡因子。
定義3 過程風險RP= {r7,r8,r9}:
(1)成本風險是指由于估算經(jīng)驗不足及使用的估算方法不成熟造成的實際消耗成本與估算成本偏差。r7=EE×WEE+EM×WEM+CV×WCV,EE為估算經(jīng)驗不足造成的風險,EM為估算方法不成熟造成的風險,CV為成本偏差率,∑WEE+WEM+WCV=1為各自的平衡因子。
(2)進度風險是指由于項目經(jīng)理經(jīng)驗不足安排進度計劃不合理和人員開發(fā)技術(shù)經(jīng)驗不足造成的風險。r8=PME×WPME+DE×WDE+SV×WSV,PME為項目經(jīng)理開發(fā)經(jīng)驗不足的風險,DE為開發(fā)人員技術(shù)經(jīng)驗不足的風險,SV為進度偏差率,∑WPME+WDE+WSV=1。
(3)性能風險是指產(chǎn)品能夠滿足需求且符合于其使用目的的不確定的程度。
r9= (RFM-AFM)/RFM×WFM,RFM為需求功能模塊,AFM為實際功能模塊,WFM為平衡因子。
定義4 風險性能RRP= {r10,r11}:
已識別風險 (identifiedrisk,IR):是指目前沒有發(fā)生但已識別出的風險,后期存在發(fā)生的可能性。
規(guī)避成功 (avoidsuccessrisk,ASR):是指風險已識別,采取了規(guī)避措施,后期沒有發(fā)生。
規(guī)避失敗 (avoidfailurerisk,AFR):是指風險已識別,采取了規(guī)避措施,但后期該風險仍然發(fā)生。
未識別風險 (unidentifiedrisk,UR):是指風險未識別出,風險系數(shù)較小,后期項目中該風險發(fā)生,但對項目影響不大。
異常 (exception,E):是指風險未識別出,風險系數(shù)較大,后期項目中該風險發(fā)生時對項目有較大影響。
風險總數(shù) (risktotal,RT):RT=IR+ASR+AFR+UR+E。
(1)不可識別性風險指未識別風險與異常占風險總數(shù)的比例,r5= (UR+E)RT。
(2)不可控制性風險是指規(guī)避失敗風險占已識別風險、規(guī)避成功風險與規(guī)避失敗風險三者之和的比例,r5=AFR/(IR+ASR+AFR)。
風險指標的風險等級劃分為5個等級,如表2所示。
表2 風險等級劃分
BP神經(jīng)網(wǎng)絡(luò)是采用反向傳播誤差調(diào)整的學習方法,本文采用三層前饋神經(jīng)網(wǎng)絡(luò),如圖3所示。其基本思想是輸入層為經(jīng)預(yù)處理的風險指標,經(jīng)隱含層的訓(xùn)練,輸出系統(tǒng)的風險評估等級;隱含層用Sigmoid函數(shù)作為傳遞函數(shù)
輸入層與隱含層的映射關(guān)系y0i=C (X0i,Wji)。
隱含層與輸出層的映射關(guān)系yk= (Wji,y0i,λ)。
輸出信息與期望目標之間的誤差e為
圖3 BP神經(jīng)網(wǎng)絡(luò)模型
粒子群優(yōu)化算法為Kennedy和Eberhart兩位博士于1995年基于鳥群覓食行為而提出的群體智能算法。此算法描述如下,作為本文的標準粒子群算法
式中:、——粒子i在第k次迭代中的速度向量和位置向量;c1、c2——學習因子;r1、r2—— [0,1]之間的隨機數(shù);pbestij、gbestij——粒子的個體最優(yōu)值和群體最優(yōu)值;w——慣性權(quán)重因子平衡局部最優(yōu)和全局最優(yōu)。
3.2.1 改進的粒子群算法
在標準PSO算法中,每一個粒子都會向最好位置的方向聚集,導(dǎo)致搜索空間的多樣性缺失,適應(yīng)值停滯。文獻[9]引入聚焦距離變化率的概念,將慣性因子表示為聚焦距離變化率的函數(shù),從而動態(tài)改變慣性權(quán)重。文獻 [10]采用自適應(yīng)均衡法調(diào)整慣性權(quán)重因子,通過壓縮因子k逐漸減小w。本文在改進的DPSO中,提出粒子群進化速率,反映了粒子進化速度,使w值根據(jù)粒子進化速率動態(tài)變化,粒子i在第t次與第t+1次迭代中隨搜索的空間步長動態(tài)變化。
本文提出的粒子進化速率φ(t)直觀地反應(yīng)了粒子i在搜索位置上進化的程度,表示了粒子的目前位置與收斂位置之間的差異,如圖4所示。
圖4 粒子進化速率
當φ(t)>1時,說明本次迭代發(fā)散,要求搜索步長增大以加強全局尋優(yōu)能力。當0<φ(t)<1時,說明本次迭代收斂,要求搜索步長減小以加快粒子的聚集度加強劇本尋優(yōu)。而當經(jīng)過若干次迭代后,φ(t)保持值為0時,說明粒子已經(jīng)找到了最優(yōu)值或者算法停滯。
改進的慣性權(quán)重w按照下式變化
式中:f(xi(t))——第i個粒子在第t次迭代時對應(yīng)的函數(shù)值:f(xi(t))=f(xi,1(t),xi,2(t),…xi,k(t))。f(xbest(t))——最優(yōu)粒子在第t次迭代時對應(yīng)的函數(shù)值:f(xbest(t))=minf(xi(t))。
3.2.2 算法測試
本算法DPSO與標準粒子群算法PSO相比較,測試該算法的優(yōu)越性。以Sphere函數(shù)和Rastirgrin函數(shù)為基準測試函數(shù),進行最小值尋優(yōu)。維數(shù)為20維,參數(shù)設(shè)置如下:兩種算法粒子群規(guī)模為40,學習因子c1=c2=2最大迭代次數(shù)1000。
表3給出了實驗結(jié)果,圖5與圖6分別給出了Sphere函數(shù)和Rastirgrin函數(shù)隨迭代次數(shù)增加函數(shù)收斂變化圖。
表3 測試結(jié)果
由圖5和圖6可以看出,DPSO算法具有更快的收斂性,其曲線基本趨于單調(diào)下降狀態(tài),而標準PSO算法上下波動幅度較大,多次出現(xiàn)水平不變。由此,改進的PSO算法不易陷入局部最優(yōu),可以進行全局尋優(yōu),尋找全局最優(yōu)點。
風險因素集R= {r1,r2,r3…rn},對于ri∈R,按第i個屬性進行評估,得到ri的評估值rij,從而構(gòu)成模糊隸屬度矩陣
神經(jīng)網(wǎng)絡(luò)輸入與輸出層權(quán)值Wji和Wkj,學習樣本Xi,期望輸出值yk,輸出值與期望目標之間的誤差為e(xi),網(wǎng)絡(luò)模型訓(xùn)練后的預(yù)設(shè)精度δ=10-3。學習因子c1=c2=2,粒子群規(guī)模為N,搜索空間維數(shù)為D,迭代次數(shù)為iter,當前迭代次數(shù)t,搜索步長為η,粒子群訓(xùn)練后的預(yù)設(shè)精度γ=10-6。粒子位置xij∈ [-1,1],粒子速度vij∈ [-10,10]。
輸入:A= {A1,A2,A3…A11}。
輸出:yk。
步驟1:初始化。c1=c2=2,N=11,D=40,iter=500,η=0.01。
步驟2:根據(jù)式 (2),經(jīng)t次訓(xùn)練輸出誤差e(xi)。
步驟3:誤差e(xi)作為粒子群的適應(yīng)度值fitness=e(xi),比較適應(yīng)度值,記錄每個粒子的歷史最優(yōu)位置和粒子群歷史最優(yōu)位置。
步驟4:根據(jù)式 (5),(6),(7)更新粒子位置和速度,若xij[-1,1]||vij[-10,10],轉(zhuǎn)步驟4。
步驟5:若fitness≥δ||t=iter,Wji=gbestmi,Wkj=gbestnj。否則轉(zhuǎn)步驟6。
步驟6:若e(xi)≤γ,算法結(jié)束,否則轉(zhuǎn)步驟3。
將所在公司的10個評估試點項目數(shù)據(jù)作為訓(xùn)練樣本,利用本文提出的軟件風險體系評估模型進行風險評估,如表4所示。
表4 風險評估列表
經(jīng)預(yù)處理后的風險指標因素值如表5所示。
表5 風險因素值
神經(jīng)網(wǎng)絡(luò)模型輸出結(jié)果與實際結(jié)果間的誤差變化如圖7所示,經(jīng)過進化網(wǎng)絡(luò)模型輸出的結(jié)果在55次迭代中就已經(jīng)達到了預(yù)設(shè)的精度,最小誤差達到了4.3826E-08,平均誤差為0.1364E-04。
圖7 誤差變化
結(jié)果分析:采用本文構(gòu)建的風險評估指標體系與依靠傳統(tǒng)的專家打分相比,風險值評估結(jié)果合理,能夠?qū)Πl(fā)生的風險進行比較精確的評估。同時運用改進粒子群算法訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),減小了誤差值,提高了模型的評估能力,為項目中及時調(diào)整項目計劃,制定風險緩解措施,達到減少風險損失的目的起到了指導(dǎo)性作用。
本文提出了風險指標體系以及將風險值量化的方法,減少了憑借專家評估的模糊性和主觀性,與定性分析和完全依靠專家評分相比較,數(shù)據(jù)比較客觀。結(jié)合風險不確定性、非線性等自身特點構(gòu)建的基于進化神經(jīng)網(wǎng)絡(luò)模型的軟件風險定量評估模型,通過智能學習算法訓(xùn)練神經(jīng)網(wǎng)絡(luò)精度,與傳統(tǒng)模型相比,有較好的性能,最后通過實例仿真結(jié)果表明此模型的評估結(jié)果比較客觀。
[1]Iranmanesh H,Nazari Shirkouhi S.Risk evaluation of information technology project based on fuzzy analytic hierarchal process [J].World Academy of Science Engineering and Technology,2008,40 (2):351-357.
[2]Avner Engel,Mark Last.Modeling software testing costs and risks using fuzzy logic paradigm [J].Journal of Systems and Software,2007,80 (6):817-835.
[3]Reyes,Cerpa,Vejar.The optimization of success probability for software projects using genetic algorithms [J].Journal of Systems and Software,2011,84 (5):775-785.
[4]DING Jianjie,HAO Kegang,HOU Hong,et al.Research of software project risk management based on set theory [J].Computer Science,2010,37 (4):117-119 (in Chinese). [丁劍潔,郝克剛,侯紅,等.基于粗糙集的軟件項目風險管理研究 [J].計算機科學,2010,37 (4):117-119.]
[5]Latifa Ben Arfa Rabai,Yan Zhi Bai,Ali Mili.A quantitative model for software engineering trends [J].Information Sciences,2011,181 (22):4993-5009.
[6]Paul L Bannerman.Risk and risk management in software projects:A reassessment[J].Journal of Systems and Software,2008,81 (12):2118-2133.
[7]Lars Grunske,David Joyce.Quantitative risk-based security prediction for component-based systems with explicitly modeled attack profiles [J].Journal of Systems and Software,2008,81(8):1327-1345.
[8]WANG Changfeng,WANG Hualan.Theoretical model for the security risk quantitative analysis of large software R&D projects [J].J Tsinghua University (Natural Science),2009,49(S2):2103-2107 (in Chinese).[王長峰,王化蘭.大型軟件研發(fā)項目安全性風險定量分析理論模型 [J].清華大學學報(自然科學版),2009,49 (S2):2103-2107.]
[9]REN Zihui,WANG Jian.New adaptive particle swarm optimization algorithm with dynamically changing intertia weight [J].Computer Science,2009,36 (2):227-256 (in Chinese).[任子暉,王堅.一種動態(tài)改變慣性權(quán)重的自適應(yīng)粒子群算法[J].計算機科學,2009,36 (2):227-256.]
[10]Ali T Al-Awami,Azzedine Zerguine.A new modified particle swarm optimization algorithm for adaptive equalization [J].Digital Signal Processing,2011,21 (2):195-207.