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