姚偉力 焦玉婷
【摘 要】隨著軟件行業(yè)的不斷進(jìn)步,軟件成本估算在軟件工程領(lǐng)域扮演著重要的角色。本文主要對統(tǒng)計學(xué)中的回歸分析方法進(jìn)行研究,闡述了利用回歸分析方法進(jìn)行軟件估算的具體流程,建立回歸估算模型并對其進(jìn)行檢驗(yàn),最后通過對歷史數(shù)據(jù)集的仿真驗(yàn)證該回歸模型預(yù)測能力的提高?!娟P(guān)鍵詞】回歸分析,軟件成本估算,估算模型,檢驗(yàn),預(yù)測
【中圖分類號】TP311.5 【文獻(xiàn)標(biāo)識碼】A 【文章編號】1672-5158(2013)03-0448-02
引言
隨著軟件行業(yè)的發(fā)展及軟件規(guī)模的擴(kuò)大和復(fù)雜度的不斷增加,軟件在整個計算機(jī)系統(tǒng)中已經(jīng)變成了開銷最大的部分。然而,自上個世紀(jì)歷史年代開始,以預(yù)算超支、質(zhì)量缺陷及項目延期等為典型特征的軟件危機(jī)不斷出現(xiàn)。其中,對軟件成本的估算不足和需求不穩(wěn)定是造成軟件項目失控的最普遍的原因,因此,為了能夠保證軟件項目能夠在預(yù)定的時間內(nèi)順利完成且不超出預(yù)算,軟件成本估算變得尤為重要。
一、軟件成本估算方法
軟件成本估算方法多種多樣,包括以線性模型、分析模型及復(fù)合模型為典型的數(shù)學(xué)算法模型,也包括類比法、專家判斷法、功能點(diǎn)分析法及COCOMO模型法等。但是由于軟件成本受到許多不確定因素的影響使得我們很難構(gòu)建一個明確的估算模型。本文旨在通過數(shù)學(xué)的方法,基于線性回歸分析方法建立軟件成本與其各影響因子間的多變量估算模型,進(jìn)而對此模型進(jìn)行檢驗(yàn),論證該模型的實(shí)用性。
(一)回歸分析方法
回歸分析方法主要是通過建立各個變量之間的統(tǒng)計模型來研究它們之間的關(guān)系[7]。
回歸分析的算法原理:
最小二乘法是回歸分析中最常用的算法原理,通過最小化誤差的平方和試圖找到數(shù)據(jù)的最佳函數(shù)匹配,在回歸分析中最小二乘法通常被用來估計回歸系數(shù)[2]。就軟件成本估算這一問題而言,其影響因子有很多,例如包括軟件代碼行、人員基本工資等等。假設(shè)定義變量軟件成本和軟件代碼行分別為Y和X,在平面坐標(biāo)系上做出關(guān)于它們的觀測值的散點(diǎn)圖,當(dāng)所有觀測值大致落在一條直線上時,說明二者之間有較強(qiáng)的線性關(guān)系。對于每一個軟件代碼行的觀測值X,構(gòu)造一條直線,使得觀測值X在此直線上所對應(yīng)的y值盡可能接近觀測值Y,從而可以利用此直線預(yù)測與軟件代碼行所對應(yīng)的軟件成本。對于每一個觀測值(xi,yi),觀測值yi與其回歸值E(yi)=β0+β1xi的離差值越小越好,定義離差平方和為最小二乘法原理就是找到和的估計值,記為,使得上述公式中的離差平方和的值達(dá)到最小,利用求極值的算法可求得估計值如下:
以上就是一元線性回歸中利用最小二乘法求回歸系數(shù)估計值的原理,同樣的,多元線性回歸中算法原理與此相同,即求出多元線性函數(shù)y=+中的估計值。
二、軟件成本估算建模
利用回歸分析進(jìn)行軟件成本估算的具體流程主要包括數(shù)據(jù)集的選取與預(yù)處理、回歸模型的建立、回歸模型的校準(zhǔn)、回歸模型的檢驗(yàn)、回歸模型的性能分析及回歸模型的預(yù)測六個步驟。下面將通過具體的數(shù)據(jù)進(jìn)行仿真及分析。
三、軟件成本估算的仿真
(一)數(shù)據(jù)集的選取及預(yù)處理
本文主要選取公開數(shù)據(jù)集ISBSGv9中的一個子集進(jìn)行研究。該數(shù)據(jù)集中包括12個因子,在研究過程中,定工作量作為因變量,其他為自變量。
通常,數(shù)據(jù)的預(yù)處理包括數(shù)據(jù)集的選取、驗(yàn)證及對缺失值和異常數(shù)據(jù)的處理等幾個方面。利用Spearman相關(guān)系數(shù)對所有變量在SPSS中進(jìn)行分析,得知各自變量之間存在較強(qiáng)的相關(guān),如Afp與Input,說明各因子之間可能存在多重共線性,需要對其進(jìn)行處理。
(二)回歸模型的建立
將數(shù)據(jù)集導(dǎo)入到SPSS中,對其進(jìn)行回歸分析,為了進(jìn)行比較,分別對其利用前進(jìn)法、后退法及逐步回歸法三種不同的回歸方法進(jìn)行分析,得出前進(jìn)法與逐步回歸法的擬合結(jié)果完全相同,而后退法中增加了兩個因子,對三種回歸結(jié)果的因子系數(shù)進(jìn)行觀察,可知Input與File兩因子的系數(shù)全為負(fù)值,因此,需要對因子間的多重共線性進(jìn)行分析。為了全面分析,將目前兩個模型都保留,分別對其進(jìn)行校準(zhǔn)。
(三)回歸模型的校準(zhǔn)
因子間存在多重共線性使得因子系數(shù)變?yōu)樨?fù)值,本文采用回歸分析中的嶺回歸對模型進(jìn)行校準(zhǔn)。對保留下來的模型中七個因子進(jìn)行嶺回歸,得到其系數(shù)表與嶺跡圖,由嶺跡圖可清楚的觀察到Input和File兩個因子系數(shù)由負(fù)轉(zhuǎn)正,且當(dāng)K=0.2以后,各因子系數(shù)趨于穩(wěn)定。因此,為消除多重共線性,刪除上述兩個因子,采用逐步回歸模型,取嶺參數(shù)K=0.2 。此時各因子系數(shù)如下表所示:
表1 K=0.2時回歸模型系數(shù)表
Afp Enquiry Duration Added File Input 常數(shù)項
(四)回歸模型的檢驗(yàn)
對回歸模型的檢驗(yàn)主要包括對模型的顯著性檢驗(yàn)及對模型系數(shù)的顯著性檢驗(yàn),其中,前者主要采用F檢驗(yàn)法,后者采用t檢驗(yàn)法[4],在SPSS中的檢驗(yàn)結(jié)果顯示模型及模型中的因子回歸效果都是顯著的。
接下來還要對殘差值進(jìn)行檢驗(yàn),主要采用殘差分布圖進(jìn)行檢驗(yàn), 由圖可知,殘差值集中分布在工作量1000以下的區(qū)間,總體成正態(tài)分布,分布情況良好。
(五)回歸模型的預(yù)測
對回歸模型進(jìn)行預(yù)測主要通過衡量去平均誤差率和預(yù)測范圍概率來判斷其預(yù)測能力[2]。整理回歸分析各流程中的模型信息如下表所示:
由上表可知,在對數(shù)據(jù)進(jìn)行預(yù)處理后,擬合度和平均誤差率都有了明顯的提升;校準(zhǔn)后平均誤差率由1.39降至1.28,預(yù)測范圍概率上漲2%。
四、結(jié)論
本文分析了回歸分析的算法原理,并按照回歸分析的基本流程對現(xiàn)有數(shù)據(jù)集進(jìn)行仿真分析,利用不同的回歸方法從不同角度對數(shù)據(jù)集進(jìn)行研究,并對因子間存在的多重共線性問題進(jìn)行了有效的處理,通過對模型的檢驗(yàn)及預(yù)測性能分析驗(yàn)證了回歸分析在軟件成本估算中的可行性,并取得了良好的效果。
參考文獻(xiàn):
[1]J rgensen M. A review of studies on expert estimation of software development effort. Journal of Systems & Software,2004(1-2):37 60
[2] 王松桂,陳敏,陳立萍. 線性統(tǒng)計模型: 線性回歸與方差分析.北京: 高等教育出版社, 1999
[3] Boehm, Christ Abts, Sunita Chulani. Software