宋亞魁 張 剛 王 瑞(中國航天系統(tǒng)科學(xué)與工程研究院,北京 100048)
軍用軟件測試工作量的動態(tài)估計方法研究
宋亞魁 張 剛 王 瑞(中國航天系統(tǒng)科學(xué)與工程研究院,北京 100048)
軍用軟件測試通常作為一個獨立的項目進(jìn)行管理。對軟件測試項目進(jìn)行合理、準(zhǔn)確的工作量估計是保證測試工作順利完成的重要前提。為解決目前軟件測試項目工作量估計準(zhǔn)確率較低的問題,采用一種動態(tài)的估計方法,將工作量估計貫穿于軟件測試項目的整個生命周期,實現(xiàn)了工作量估計方法的持續(xù)改進(jìn)。實驗結(jié)果表明,該動態(tài)估計方法能夠有效地提高估計精度。
軍用軟件,軟件測試,工作量估計,生命周期,動態(tài)估計
在軍用軟件的整個生命周期中,軟件測試已作為一項強(qiáng)制性要求被納入到其研制生產(chǎn)過程當(dāng)中。要保證軍用軟件的測試質(zhì)量,就必須確保軟件測試過程的獨立性。目前,軍用軟件測試工作通常由獨立的軟件評測中心負(fù)責(zé)完成,軍用軟件測試通常作為一個獨立的項目進(jìn)行管理。對軍用軟件測試項目進(jìn)行合理、準(zhǔn)確的工作量估計,是保證軍用軟件測試工作順利完成的重要前提之一。目前,研究人員已提出了一些估計軟件測試工作量的方法,但這些方法大都從軟件工作量估算模型轉(zhuǎn)化而來,估算結(jié)果的準(zhǔn)確率都非常低。
考慮到獨立的軟件測試項目與軟件開發(fā)項目一樣,具有本身的生命周期,所以,軍用軟件測試工作量估計應(yīng)該是一個隨著測試項目進(jìn)行而不斷改進(jìn)的過程,而且,該過程應(yīng)貫穿于軍用軟件測試項目的整個生命周期,這就要求對軍用軟件測試項目的工作量進(jìn)行動態(tài)估計。
考慮到項目信息是隨著項目的推進(jìn)而不斷豐富和細(xì)化的,所以,在具體的軍用軟件測試項目管理當(dāng)中,工作量估計應(yīng)該是一個持續(xù)改進(jìn)、優(yōu)化的過程。如圖1所示,可以將工作量估計分為3個階段:
一是初始階段,確定當(dāng)前項目的測試類型和測試范圍,在歷史數(shù)據(jù)庫中選擇同類項目數(shù)據(jù)進(jìn)行估計模型的定制,并使用定制的模型,估算當(dāng)前軟件測試項目的工作量。
二是在軟件測試項目執(zhí)行過程中,跟蹤項目進(jìn)度,當(dāng)實際進(jìn)度與計劃進(jìn)度偏差較大時,及時調(diào)整項目過程或重新估計工作量。
圖1 軟件工作量估算過程框架
三是項目結(jié)束后,對工作量估算方法與估計結(jié)果進(jìn)行評價,并將測試項目的過程數(shù)據(jù)匯總到歷史數(shù)據(jù)庫中,以提高未來工作量估算工作的準(zhǔn)確性。
目前,研究人員已經(jīng)開發(fā)出了一些軟件測試工作量估算模型,但由于通用模型參數(shù)的設(shè)置與各軟件測試項目的實際情況不符等原因,這些模型的估算準(zhǔn)確率通常都不高。所以,本文采用基于經(jīng)驗的回歸分析法來估算軍用軟件測試工作量。工作量影響因子相關(guān)會使回歸分析算法的結(jié)果不穩(wěn)定,為解決這一問題,本文引入主成分分析方法來提取特征值,提出了一種基于主成分分析的回歸分析法,并采用該方法進(jìn)行軍用軟件測試工作量的估計。
2.1 基于主成分分析的回歸估算模型的建立
大量實踐經(jīng)驗表明,傳統(tǒng)的主成分分析法僅在處理樣本矩陣呈現(xiàn)線性結(jié)構(gòu)的問題時才具有良好的效果,而對于軍用軟件測試工作量估計問題,工作量影響因子通常都是非線性結(jié)構(gòu)的,這一點在COCOMO模型的表達(dá)式中得到了明顯的體現(xiàn)。所以,要將主成分分析方法引用到軍用軟件測試工作量估計當(dāng)中,就必須對主成分分析方法的過程進(jìn)行擴(kuò)展改進(jìn),使其適用于非線性結(jié)構(gòu)的樣本數(shù)據(jù)。本文在應(yīng)用主成分分析方法之前,先將原樣本數(shù)據(jù)取對數(shù),這樣原樣本空間數(shù)據(jù)的數(shù)乘關(guān)系就轉(zhuǎn)化成了線性關(guān)系。
改進(jìn)后的主成分分析方法的一般步驟為:(1)確定原始數(shù)據(jù)集
其中,第j個因子Xj=(x1jx2jx3j… xnj)T。
(2)求樣本相關(guān)矩陣
對X進(jìn)行對數(shù)化處理,將對數(shù)化數(shù)據(jù)陣記為Y=(yij)n×p,其中yij=lg(xij)。
再將對數(shù)化后的樣本數(shù)據(jù)采用相關(guān)系數(shù)法來構(gòu)建樣本相關(guān)矩陣。
記相關(guān)矩陣為R=(rij)n×p,則:
顯然,R為對稱矩陣,且對角線上元素全為1。
(3)求相關(guān)矩陣的特征值和特征向量
然后,求解齊次線性方程組(R-λI)L=0,可以得到λ1、λ2、…、λp對應(yīng)的特征向量L1、L2、…、Lp,其中,Lj=(l1jl2j… lpj)T。
(4)計算各主成分的貢獻(xiàn)率。記第j個主成分的貢獻(xiàn)率為bj,則:
(5)計算累計貢獻(xiàn)率,前k個主成分的累計貢獻(xiàn)率為:
(6)建立主成分
首先提取主成分,按照累計貢獻(xiàn)率wk>95%的準(zhǔn)則,確定提取前k個主成分。然后,計算主成分,第j個主成分為:Zj=YLj=l1jY1+l2jY2+…+lpjYp,其中,Y1、Y2、…、Yp為對數(shù)化指標(biāo)變量,Yj=(y1jy2j… ypj)T。
所以有:
可以用新的主成分因子樣本值Z=(zij)n×k來代替原樣本值X進(jìn)行統(tǒng)計分析。而Z中因子是不相關(guān)的。
考慮到主成分分析方法中的貢獻(xiàn)率實際上實現(xiàn)了對各個主成分權(quán)重的客觀賦值表現(xiàn),所以,在經(jīng)過拓展的主成分分析完成后,可以對各主成分進(jìn)行加權(quán)平均,得到綜合了各個影響因子的綜合評價指標(biāo):
然后,分析綜合評價指標(biāo)與工作量之間的相關(guān)性,建立綜合評價指標(biāo)與工作量之間的非線性或線性回歸模型。本文采用的回歸模型為:
然后根據(jù)歷史數(shù)據(jù)進(jìn)行回歸分析,確定系數(shù)a0、a1、a2、a3的值。
2.2 初始階段工作量估算
完成主成分分析和回歸分析后,就可以利用分析的結(jié)果來估算軍用軟件測試新項目的工作量了。
估算軍用軟件測試新項目的工作量的一般過程如下:
(1)提取項目的影響因子為:α=(α1α2… αp);
(2)將影響因子對數(shù)化:β=(lgα1lgα2… lgαp);
(3)提取主成分:ω=βL=[ω1ω2…ωk],其中ωj=βLi;
(4)綜合評價指標(biāo)為:(5)計算工作量的對數(shù)估算值:
(6)計算工作量的估算值:E=10m。
2.3 初始工作量估計實例驗證
表1給出了16個已完成的同類功能軟件測試項目在初始階段的工作量影響因子信息及最后實際的首輪軟件測試工作量信息。
對于以上樣本前15組數(shù)據(jù)中的因子矩陣,采用拓展的主成分分析方法提取主成分,并計算綜合評價值,然后將其與實際工作量擬合,工作量對數(shù)與綜合評估值擬合曲線如圖2所示,結(jié)果如表2所示。
表2 模型匯總和參數(shù)估計值
由R2=0.999可以看出,擬合結(jié)果非常好,工作量與綜合評估指標(biāo)滿足:lg(E)=15.305Q-48.327Q2+54.778Q3。
計算第16組數(shù)據(jù)的綜合評估值為0.2891,代入上式中可得到估計的工作量為51.19人日,而實際工作量為48人日。計算相對誤差為6.64%,這個結(jié)果對于初始階段來說估計效果較好。
表1 軟件測試項目初始影響因子和工作量信息
圖2 工作量對數(shù)與綜合評估值擬合曲線
考慮到項目計劃的制定都是以事先估計的工作量為依據(jù),所以,對軟件測試工作量的估計不僅僅是對未來工作量的簡單預(yù)測,更是以此獲得項目管理的目標(biāo)。制定目標(biāo)后,項目組就應(yīng)該嚴(yán)格按照項目計劃執(zhí)行項目過程,盡量使整個軟件測試項目最終按照計劃完成。這就需要對項目執(zhí)行過程中的工作量完成情況進(jìn)行監(jiān)控。
3.1 項目中的進(jìn)度監(jiān)控
在項目執(zhí)行過程中,要定期對軍用軟件測試項目的實際進(jìn)度信息進(jìn)行采集,并與計劃情況進(jìn)行對比。當(dāng)兩者偏差不是特別大,并處于可控范圍內(nèi)時,可以針對誤差產(chǎn)生原因進(jìn)行分析,并及時對項目實施過程進(jìn)行調(diào)整,以使實際進(jìn)度與計劃相符;而當(dāng)偏差值太大,超過了軟件測試項目的重大偏差標(biāo)準(zhǔn)時,微調(diào)手段已經(jīng)無效,說明實際的軟件測試執(zhí)行進(jìn)度與計劃安排不符,測試任務(wù)不可能在計劃安排的時間附近完成,也就是說初始制定的計劃不合理,這時候就需要對軟件測試項目的工作量進(jìn)行重新估計,制定新的項目計劃,以適應(yīng)實際的項目進(jìn)度。
本文將工作量估計作為貫穿于軟件測試項目整個生命周期的動態(tài)過程進(jìn)行管理。完成整體項目的工作量估計并制定項目計劃后,在項目實施過程中通過實時監(jiān)控和人為干預(yù)等手段,使軟件測試工作進(jìn)度盡量按照制定的項目計劃來完成(只有在發(fā)生重大偏差時,才需要重新估計工作量和制定新計劃)。這樣,可以達(dá)到盡可能降低軟件測試項目延誤率的目標(biāo),從某種意義上來說,也提高了軟件測試項目工作量估計的準(zhǔn)確度。
3.2 動態(tài)工作量估算方法應(yīng)用實例
如圖3所示,是采用動態(tài)工作量估計方法跟蹤一個軟件測試新項目的進(jìn)程所得到的結(jié)果。
從圖中可以看出,項目前2周為需求分析階段,實際進(jìn)度比計劃進(jìn)度稍快;第3周后,工作進(jìn)展變慢,使得計劃值與實際值達(dá)到一致,這主要是因為用例設(shè)計和執(zhí)行的第1周測試人員對實際系統(tǒng)還不夠熟悉;之后雖然隨著測試的進(jìn)行,工作效率有所提高,但是實際進(jìn)度還是逐漸落后于計劃值;尤其到第10周左右,項目進(jìn)展開始變緩,到第11周時實際進(jìn)度與計劃進(jìn)度的偏差達(dá)到最大值,這主要是因為項目進(jìn)行到后期,已經(jīng)完成的測試中發(fā)現(xiàn)的問題需要與軟件開發(fā)方進(jìn)行確認(rèn),并且需要集中解決項目中的復(fù)雜用例和前期由于缺少數(shù)據(jù)等原因暫時無法執(zhí)行的用例。據(jù)項目組中經(jīng)驗豐富的軟件測試項目負(fù)責(zé)人估計,如果按部就班地按照測試流程走下來,該項目會超期將近3周才能完成,如圖中虛線所示。這時候就需要項目組采取一定的措施,使得這個偏差值逐步減少。
圖3 某軟件測試新項目工作量監(jiān)控圖
所以,從第12周開始,留下經(jīng)驗豐富的項目組成員負(fù)責(zé)與開發(fā)方溝通并完成剩下的復(fù)雜用例測試,分出一部分項目組成員開始編寫測試總結(jié)和報告,這樣就大大加快了項目進(jìn)度,使實際進(jìn)度與計劃值偏差持續(xù)縮小,最終測試項目實際進(jìn)度比計劃值僅落后1周,如圖3中實線所示,相應(yīng)的工作量估計相對誤差僅為6%左右。
項目計劃是項目監(jiān)控的比較基準(zhǔn),為了避免項目計劃的頻繁變更,在項目初始階段就要盡量準(zhǔn)確地估計工作量,而初始階段對工作量的估計準(zhǔn)確性,取決于歷史項目經(jīng)驗和估計方法選擇的合理性。而這些經(jīng)驗的積累依賴于每次項目結(jié)束后對估計方法的評價總結(jié)。
項目結(jié)束后,該項目的實際工作量數(shù)據(jù)成為已知,因此,可以將實際工作量數(shù)據(jù)與計劃工作量數(shù)據(jù)進(jìn)行比較,對工作量估計方法與估計結(jié)果進(jìn)行評價,找出工作量估計中偏差出現(xiàn)的原因,并制定相應(yīng)的改進(jìn)方法,將本次項目的相關(guān)數(shù)據(jù)反饋給企業(yè)建立數(shù)據(jù)庫,以持續(xù)改進(jìn)工作量估計方法,最終達(dá)到提高工作量估計精度的目的。這是對項目工作量進(jìn)行動態(tài)管理的必要措施。
例如,在驗證實例中,到項目后期,工作人員發(fā)現(xiàn),開發(fā)方的研發(fā)水平及測試數(shù)據(jù)準(zhǔn)備的充分性等因素也會影響軟件測試項目的工作量,而且,這些因素在項目初期也是可以進(jìn)行初步評估量化的。因此,可以在歷史數(shù)據(jù)庫中補(bǔ)充歷史項目的這些因素信息,以在之后估算同類項目的工作量時考慮這些附加因素的影響。
另外,在項目實施過程中還發(fā)現(xiàn),項目復(fù)雜程度對工作量的影響相對于其它因子更為顯著,所以,在對該因子量化處理時可以對權(quán)重值進(jìn)行適當(dāng)調(diào)整。具體如何調(diào)整還有待進(jìn)一步研究。
軍用軟件測試通常作為一個獨立的項目來進(jìn)行管理,具有完整的生命周期,因此,對軍用軟件測試項目工作量的估計應(yīng)該是一個動態(tài)過程,只有通過持續(xù)的改進(jìn)才能提高工作量估計的準(zhǔn)確性,才能保證項目按計劃完成。
本文針對軍用軟件測試項目執(zhí)行前、執(zhí)行中和執(zhí)行后3個階段來闡述工作量的動態(tài)估計方法,將工作量估計貫穿于項目的始終,可以減少軍用軟件測試項目的延誤率,進(jìn)而提高軍用軟件測試項目的工作量估計精度。
研究發(fā)現(xiàn),實現(xiàn)工作量估計的動態(tài)管理,不僅需要在初始估計時使用正確的、符合項目實際情況的估計方法,在項目實施過程中也要以偏差為依據(jù),對工作量進(jìn)行實時監(jiān)控。在項目實施完成后,還要對工作量估計方法與估計結(jié)果進(jìn)行評價,并將本次項目的相關(guān)數(shù)據(jù)納入歷史項目數(shù)據(jù)庫中,以持續(xù)改進(jìn)工作量估計方法。
另外,隨著軟件行業(yè)的蓬勃發(fā)展,為了提高競爭力,民用軟件行業(yè)對軟件質(zhì)量的要求也越來越高,軟件測試也逐漸從軟件開發(fā)項目中獨立出來。所以,本文提出的軍用軟件測試項目的工作量估計方法,在民用軟件行業(yè)也具有廣闊的應(yīng)用前景。
1 江震. 軟件項目工作量估算的規(guī)模不經(jīng)濟(jì)[J]. 中國科技信息, 2008, (19): 109~111
2 William E. Lewis Gunasekaran Veerapillai. 軟件測試與持續(xù)質(zhì)量改進(jìn)(第2版)[M]. 陳紹英, 張河濤, 劉建華, 等譯. 北京: 人民郵電出版社, 2008
3 李希燦, 邢文潔. 多目標(biāo)系統(tǒng)多維模糊決策理論模型[J]. 山東農(nóng)業(yè)人學(xué)學(xué)報, 2001, (3): 336~340
4 CAPES J. Applied software measurement: global analysis of productivity and quality[J]. McGraw Hill, 2008, (3): 120~125
5 劉杰生. 軟件成本估算方法與技術(shù)現(xiàn)狀探討[J]. 艦船電子工程, 2000, 20(4): 13~16
6 SINHAL A, VERMA B. A novel fuzzy based approach for effort estimation in software development[J]. ACM SIGSOFT Software Engineering Notes, 2013, 38(5): 1~6
7 CAIVANO D, LANCBILE F, VISAGGIO G. Software renewal process comprehension using dynamic effort estimation [C]. //Pros of IEEE International Conference on Software Maintenance. [S. 1.]: IEEE Press, 2001: 209~218
8 楊光宇, 曾東方, 羅平. 考慮短板效應(yīng)的一種度量模型及其在軟件可信性中的應(yīng)用[J]. 計算機(jī)應(yīng)用研究, 2012, 29(1): 165~167
Study on Dynamic Estimation Method of Military Software Testing Work
Song Yakui Zhang Gang Wang Rui
(China Academy of Aerospace Systems Science and Engineering, Beijing 100048)
Military software testing has often been managed as a separate project. The reasonable and accurate estimation of effort for software testing project is an important premise for the completion of software testing work. To solve the problem of low accuracy in the current effort estimation methods, the dynamic estimation method has been proposed. The dynamic estimation method will be carried out throughout the entire life cycle of the software testing project and can improve the estimation method continuously. The results of experiments show that the estimation method can improve the estimation precision effectively.
Military Software, Software testing, Effort estimation, Life cycle, Dynamic estimation
1009-8119(2015)10(1)-0054-04