夏雙成
(長春工業(yè)大學(xué)人文信息學(xué)院,吉林 長春 130000)
嵌入式系統(tǒng)軟件工作量的估算是計劃開發(fā)軟件的基礎(chǔ),為軟件項目制定合適的開發(fā)計劃,是軟件項目管理的核心。軟件工作量估算是其中的主要部分,估算結(jié)果是否正確也十分重要,軟件工作量較低的估算會影響軟件項目的完成時間,較高的估算將會增加成本[1],導(dǎo)致公司承擔較高的費用。估算軟件工作量一直是一個難題,首先,軟件的本質(zhì)使軟件具有不可見性和復(fù)雜性;其次,由于項目經(jīng)驗數(shù)據(jù)不斷減少,或者新技術(shù)的應(yīng)用和出現(xiàn)使經(jīng)驗數(shù)據(jù)無效,導(dǎo)致評估參考準確性差,同樣也會影響軟件工作量估算結(jié)果的可信度[2];最后,軟件工作量評估人員的一些主觀因素也會影響軟件工作量的估算。目前,軟件組織和部分學(xué)者也開始投入到嵌入式系統(tǒng)軟件工作量估算的研究中。
亓卓亞[3]提出軟件項目中軟件工作量多源線性估算方法,首先,給出軟件工作量估算方法,并對COCOMO模型估算方法進行了簡單介紹;其次,對軟件工作量估算中項目規(guī)模度量方法,主要對功能點分析方法進行了描述;最后,利用三步法對軟件工作量進行多源線性估算,實驗結(jié)果表明,該方法合理性較高。盛玉強和楊春花[4]提出基于軟件量化的嵌入式系統(tǒng)軟件工作量多源線性估算方法,對軟件開發(fā)過程進行量化,可以獲得量化數(shù)據(jù),對量化數(shù)據(jù)進行統(tǒng)計和分析來確定其指標,在此基礎(chǔ)上,對嵌入式系統(tǒng)軟件工作量進行估算,實驗結(jié)果表明,該方法簡單合理。但是以上兩種方法對軟件工作量估算的平均誤差率較高,不能夠準確的完成對軟件工作量的估算。張文等[5]人對嵌入式系統(tǒng)工作量多源線性估算方法展開了相應(yīng)研究,對軟件工作量數(shù)據(jù)缺失內(nèi)在機理進行介紹,利用樸素貝葉斯算法對嵌入式軟件工作量進行估算,實驗結(jié)果表明,該方法可以對工作量的缺失數(shù)據(jù)進行處理,但該方法存在軟件工作量估算效率低的問題。
針對上述三種研究結(jié)果中存在的問題,提出基于灰色關(guān)聯(lián)分析的嵌入式系統(tǒng)軟件工作量多源線性估算方法。建立軟件度量數(shù)據(jù)模型,并計算軟件項目之間的關(guān)聯(lián)度,以嵌入式系統(tǒng)軟件項目的歷史數(shù)據(jù)為基準,采用灰色關(guān)聯(lián)分析方法對嵌入式系統(tǒng)軟件工作量進行估算。研究表明,本文方法軟件工作量的估算平均誤差率較低、估算效率較高,可以準確、有效的完成對軟件工作量的估算。
統(tǒng)計學(xué)中的回歸分析方法可以解決軟件工作量中相互關(guān)聯(lián)變量之間的關(guān)系,多元線性回歸模型是指變量Y和多個變量X1,X2,…,Xk間的線性關(guān)系,假設(shè)Y和X1,X2,…,Xk間存在線性關(guān)系,并且為變量的多元線性函數(shù),稱其為線性回歸模型,有如下表達式
Y=β0+β1X1+β2X2+…+βkXk+μ
(1)
式中,Y表示因變量,Xj(j=1,2,…,k)表示k個自變量,βj(j=0,1,2,…,k)表示k+1個未知參數(shù),μ表示隨機誤差[6],通常情況下,設(shè)μ~N(0,σ2)。
因變量Y和自變量X1,X2,…,Xk的線性方程如下
E(Y)=β0+β1X1+β2X2+…+βkXk
(2)
式(2)被稱作總體回歸方程。對于n組觀測值X1i,X2i,…,Xki(i=1,2,…,n),方程組為
Yi=β0+β1X1i+β2X2i+…+βkXki+μi
(3)
式中,μi表示第i個隨機誤差。即
(4)
矩陣表達式如下
(5)
即
Y=Xβ+μ
(6)
總體回歸方程如下
E(Y)=Xβ
(7)
根據(jù)觀測樣本對模型中的參數(shù)進行估計,并統(tǒng)計和檢驗回歸方程和估計參數(shù),多元線性回歸模型中有多個因變量[8],多個因變量同時對自變量產(chǎn)生作用,若觀察一個因變量對自變量的影響,需要假定其它因變量不變來展開分析。
參數(shù)β0,β1,β2,…,βk為未知,采用樣本觀測值來估計以上參數(shù),假設(shè)計算獲得的估計值為0,1,2,…,k,利用參數(shù)的估計值來代替β0,β1,β2,…,βk,可以得到如下方程
i=0+1X1i+2X2i+…+kXkn
(8)
=X
(9)
樣本回歸方程所獲得的因變量Yi和i間的偏差為殘差ei,表達式為
ei=Yi-i=Yi-(0+1X1i+2X2i+…+kXkn)
(10)
根據(jù)獲得的殘差,構(gòu)建軟件度量數(shù)據(jù)模型U,其表達式為
U=eiβ
(11)
在選取樣本的過程中,樣本的容量需要滿足
1)最小樣本容量:以最大自然和最小二乘法原理為基礎(chǔ),可以獲得參數(shù)的估計量,其容量必須大于軟件度量數(shù)據(jù)模型中自變量的數(shù)量,由此得到樣本容量大于n+1。
2)符合基本要求的容量。從參數(shù)的估計角度出發(fā),容量應(yīng)該是自變量數(shù)量的5倍多;從檢驗有效性的方面來說,應(yīng)大于30。
3)在大樣本下,軟件度量數(shù)據(jù)模型的性質(zhì)可以得到證明。
構(gòu)建回歸方程時,估計模型中的參數(shù)有利于檢驗軟件度量數(shù)據(jù)模型的有效性。
嵌入式系統(tǒng)軟件項目的歷史數(shù)據(jù),為軟件工作量估算提供了理論依據(jù),建立軟件項目的歷史數(shù)據(jù)對軟件工作量估算的準確性起著重要作用,采用軟件項目歷史數(shù)據(jù)可以避免對軟件工作量估算過程中出現(xiàn)的無依據(jù)性和主觀性,對采集數(shù)據(jù)進行定義以及數(shù)據(jù)的采集是構(gòu)建軟件項目歷史數(shù)據(jù)的兩個任務(wù)。在構(gòu)建軟件度量數(shù)據(jù)模型的基礎(chǔ)上,以嵌入式系統(tǒng)軟件項目的歷史數(shù)據(jù)為基準,對嵌入式系統(tǒng)軟件工作量進行估算研究。
嵌入式系統(tǒng)軟件工作量的估算屬于比較復(fù)雜的系統(tǒng)工程。通常情況下,利用特征對軟件項目進行描述,特征也能夠?qū)η度胧较到y(tǒng)軟件工作量展開估算,軟件項目特征給軟件工作量所帶來的影響不同,在估算前需要將影響最大的特征選取出來。過程為:將軟件項目特征當作比較序列,將軟件工作量當作參考序列,采用灰色關(guān)聯(lián)分析方法對軟件工作量和項目特征間的關(guān)聯(lián)度進行計算;隨后,按照回歸技術(shù)選出最優(yōu)項目特征集合,采用灰色關(guān)聯(lián)分析方法對嵌入式系統(tǒng)軟件工作量進行估算。
嵌入式系統(tǒng)軟件項目集合D的矩陣表達式如下
(12)
灰色關(guān)聯(lián)分析方法確定軟件項目子集的步驟為建立參考和比較數(shù)列。將D的每一列當作一組數(shù)據(jù),可以獲得數(shù)列
(13)
(14)
(15)
(16)
(17)
對灰色關(guān)聯(lián)度進行計算。在計算比較和參考序列灰色關(guān)聯(lián)度的過程中,關(guān)聯(lián)度越大說明軟件項目特征對工作量越重要。在計算關(guān)聯(lián)度時,需要分析不同軟件項目特征所帶來的影響,可以提高計算的準確度。
當x0(k′)與xi′(k′)為數(shù)值型特征時,有
Δi′k′=|x0(k′)-xi′(k′)|
(18)
當x0(k′)與xi′(k′)為類別型特征時,有
(19)
按照灰色關(guān)聯(lián)度構(gòu)建軟件工作量和軟件項目特征的關(guān)聯(lián)序χf。
采用回歸技術(shù)選擇最優(yōu)軟件項目特征集合Sbest,步驟為
1)將χf中對嵌入式系統(tǒng)軟件工作量帶來最大影響的特征放入Sbest中;
2)對平均誤差進行計算;
3)將χf中的剩余項目特征添加在Sbest中;
4)按照最優(yōu)項目特征集合Sbest對軟件工作量進行估算,添加項目特征之后軟件工作量估算的平均誤差率較高時,則刪除該特征集合;
5)判斷χf中的項目特征是否添加結(jié)束,結(jié)束則終止算法,輸出Sbest。
在確定了最優(yōu)軟件項目特征集合之后,采用灰色關(guān)聯(lián)分析方法對軟件工作量進行估算。步驟如下:
1)構(gòu)建數(shù)據(jù)集。將D1的每行當作一組數(shù)據(jù),參考序列為
x0={x1(1),x1(2),…,x1(q)}
(20)
比較序列為
(21)
式中,q代表Sbest中軟件項目的特征數(shù)量。
2)標準化處理。利用均值化變換方法做標準化處理,可以去除不同綱量對灰色關(guān)聯(lián)分析方法帶來的影響。
3)計算灰色關(guān)聯(lián)度。
4)估算軟件工作量。根據(jù)計算結(jié)果,確定x0與x1,x2,…,xn′的關(guān)聯(lián)序ωi′,采用關(guān)聯(lián)度較大的ι個軟件項目對x0的軟件工作量進行估算
(22)
(23)
基于灰色關(guān)聯(lián)分析的嵌入式系統(tǒng)軟件工作量多源線性估算方法的實驗開發(fā)環(huán)境為:操作系統(tǒng)為WindowsXP,服務(wù)器為Tomcat5.5,數(shù)據(jù)庫為Microsoft SQL2000,開發(fā)工具為Eclipse。為了驗證本文方法的有效性,選取某公司網(wǎng)站的嵌入式系統(tǒng),圖1為嵌入式系統(tǒng)軟件結(jié)構(gòu)。
圖1 嵌入式系統(tǒng)軟件結(jié)構(gòu)
根據(jù)嵌入式系統(tǒng)的需求分析和概念設(shè)計,采用本文方法、文獻[3]方法和文獻[4]方法對其進行工作量估算。估算結(jié)果如表1所示。
表1 工作量估算結(jié)果對比
根據(jù)表1可知,文獻[3]方法的工作量估算平均結(jié)果為415;文獻[4]方法的工作量估算平均結(jié)果為405;本文方法的工作量估算平均結(jié)果為443,僅與實際工作量估算平均結(jié)果差5 bit,本文方法的工作量估算結(jié)果更接近實際的工作量估算結(jié)果。說明本文方法的工作量估算準確性較高。
為了驗證軟件工作量估算方法的有效性,對其估算的誤差率展開實驗研究,誤差率越高,估算的越不準確,測試結(jié)果如圖2所示。
圖2 不同方法的工作量估算誤差率對比
分析圖2可知,在對嵌入式系統(tǒng)軟件工作量進行估算的過程中,對本文方法與文獻[3]方法、文獻[4]方法的估算誤差率展開了相應(yīng)的測試。對比可知,文獻[3]方法在進行工作量估算時,呈現(xiàn)散點狀態(tài),估算誤差率最高;而本文方法的工作量估算誤差率最低,其次是文獻[4]方法,說明本文方法所得到的估算結(jié)果更加準確。
在對嵌入式系統(tǒng)軟件工作量估算平均誤差率測試的基礎(chǔ)上,進一步測試軟件工作量的估算效率,測試結(jié)果如圖3所示。
圖3 不同方法軟件工作量的估算效率對比結(jié)果
分析圖3可知,本文方法軟件工作量為200小時的估算效率為60%,文獻[5]方法軟件工作量為1400小時的估算效率為60%,本文方法工作量1400小時的估算效率為90%,對比可知,本文方法最少工作量的估算效率與文獻[5]方法最多工作量的估算效率相同,說明本文方法軟件工作量的估算效率更高。
為了深入研究有關(guān)嵌入式系統(tǒng)的軟件工作量,提出基于灰色關(guān)聯(lián)分析的嵌入式系統(tǒng)軟件工作量多源線性估算方法,分別對軟件工作量估算的誤差率和效率展開了相應(yīng)測試。
1)提出方法軟件工作量估算的誤差率較低,并且還具有較高的估算效率,可以準確且有效的實現(xiàn)對嵌入式系統(tǒng)軟件工作量的估算,同時也驗證了提出方法的有效性。
2)提出方法在傳統(tǒng)方法的基礎(chǔ)上將軟件工作量當作參考序列,采用灰色關(guān)聯(lián)分析方法對軟件工作量和項目特征間的關(guān)聯(lián)度進行計算,從而提高計算的準確度;并采用灰色關(guān)聯(lián)分析方法對嵌入式系統(tǒng)軟件工作量進行估算,提高了軟件工作量的估算效率。
3)提出方法還能夠為軟件工作量估算的下一步研究提供參考意見,為軟件項目的開發(fā)奠定了實用性的基礎(chǔ)。