武 岳
(河南工業(yè)貿(mào)易職業(yè)學(xué)院信息工程學(xué)院,河南 新鄭 451191)
軟件技術(shù)在社會(huì)的不同領(lǐng)域快速發(fā)展、應(yīng)用,它在系統(tǒng)安全、工程和開發(fā)方面扮演著越來(lái)越重要的角色,特別是對(duì)于大型和復(fù)雜的系統(tǒng)。在軟件工程中,評(píng)估在軟件開發(fā)中起著不可或缺的作用,是基于不完整的、不確定的以及大量的數(shù)據(jù)輸入來(lái)預(yù)測(cè)開發(fā)或保持軟件所需的工作量的過(guò)程,是軟件項(xiàng)目管理的一個(gè)重要部分。
軟件開發(fā)項(xiàng)目所需的工作量評(píng)估對(duì)于成功整體安排交付極為重要。在軟件行業(yè)內(nèi)急需改進(jìn)軟件整體性能評(píng)估的技術(shù),這也是對(duì)軟件行業(yè)的一個(gè)重大挑戰(zhàn)?,F(xiàn)有的評(píng)估方式經(jīng)常會(huì)導(dǎo)致預(yù)算超支、交付延遲、不滿足法律約束力等,并間接影響軟件的質(zhì)量。因此,軟件開發(fā)項(xiàng)目失敗的一個(gè)常見的原因就是因?yàn)檐浖u(píng)估方法不正確。
評(píng)估工作直接影響到軟件開發(fā)過(guò)程生命周期的多個(gè)方面:根據(jù)投資方向,決定軟件的開發(fā)決策,確定項(xiàng)目預(yù)算和產(chǎn)品市場(chǎng)價(jià)格,影響軟件項(xiàng)目計(jì)劃與交付。在實(shí)際工作中,到軟件項(xiàng)目結(jié)束時(shí),軟件評(píng)估的工作量往往比預(yù)期的要少很多,在這種情況下,軟件開發(fā)團(tuán)隊(duì)在工作中就會(huì)遇到很多問(wèn)題,如增加預(yù)算和延遲交付等。根據(jù)Jorgensen 的研究,軟件評(píng)估計(jì)劃工作量與實(shí)際工作量偏差30%左右[1]。準(zhǔn)確的項(xiàng)目工作評(píng)估會(huì)影響到對(duì)現(xiàn)有資源的有效使用,為了滿足設(shè)計(jì)的需求,在定義軟件模塊的實(shí)踐中引入軟件開發(fā)模型。程序代碼的核心包括:描述、架構(gòu)、實(shí)例、測(cè)試等。
在一些大型軟件公司,雖然軟件工作評(píng)估模型已經(jīng)開發(fā)很多年了,但是在實(shí)際工作中關(guān)于成本和時(shí)間方面的控制效果都不是很理想,也對(duì)業(yè)務(wù)的開展帶來(lái)了一定的影響。根據(jù)Standish Group CHAOS發(fā)表的一項(xiàng)調(diào)查報(bào)告指出,在8 000 個(gè)軟件項(xiàng)目中,只有16%的完整的軟件項(xiàng)目在預(yù)算和時(shí)間內(nèi)交付;31%的軟件項(xiàng)目在完成前就取消了;53%的軟件項(xiàng)目在預(yù)算和進(jìn)度上超支;大約60%的大型軟件項(xiàng)目基本上超額完成了他們的估算;15%的軟件項(xiàng)目由于對(duì)開發(fā)成本的嚴(yán)重錯(cuò)誤估計(jì)而無(wú)法完成,導(dǎo)致軟件項(xiàng)目失敗。導(dǎo)致這種失敗困境的因素有很多,錯(cuò)誤的和不準(zhǔn)確的軟件工作量是導(dǎo)致這種失敗的重要原因[2]。
通過(guò)關(guān)系法進(jìn)行的軟件工作評(píng)估稱為模糊灰色關(guān)聯(lián)分析(Fuzzy-Grey Relational Analysis,F(xiàn)GRA),它可以克服以往關(guān)系方法評(píng)估的困難,特別是現(xiàn)有的相似性方法中的不足之處。相似性的基本思想是與關(guān)系法的評(píng)估過(guò)程聯(lián)系在一起的,目標(biāo)項(xiàng)目和其他源項(xiàng)目之間的成功關(guān)系取決于它們之間存在某種程度的可比性因素。
FGRA 軟件工作評(píng)估模型(以下簡(jiǎn)稱“FGRA模型”) 由3 個(gè)基本階段組成:數(shù)據(jù)準(zhǔn)備階段、屬性選擇階段和軟件工作評(píng)估預(yù)測(cè)階段,見第6頁(yè)圖1。處理后的數(shù)據(jù)集在屬性選擇階段被用于確定最佳預(yù)測(cè)屬性及其相應(yīng)的權(quán)重??梢钥闯?,屬性子集的選擇利用了所提出的相似度量,產(chǎn)生了相似網(wǎng)格。屬性選擇階段中減少的數(shù)據(jù)集被用于軟件工作評(píng)估預(yù)測(cè)階段,以真正執(zhí)行軟件工作評(píng)估預(yù)測(cè)[3]。
圖1 FGRA軟件工作評(píng)估模型框架
用于構(gòu)建和調(diào)整軟件工作評(píng)估模型的大型記錄數(shù)據(jù)集在數(shù)據(jù)收集過(guò)程中有時(shí)是不完整的、不充分的和不精確的,這通常是由于數(shù)據(jù)收集工具的不足和測(cè)量標(biāo)準(zhǔn)的缺失,如果使用了缺失值可能會(huì)導(dǎo)致軟件工作評(píng)估出現(xiàn)嚴(yán)重的錯(cuò)誤。通??梢允褂貌煌椒ㄌ幚砣笔е?,例如多類邏輯回歸、列表記錄刪除、回歸屬性、期望最大化算法等。在軟件工作評(píng)估中普遍使用的技術(shù)方法是列表記錄刪除,該方法操作起來(lái)較為簡(jiǎn)單,可以刪除整個(gè)項(xiàng)目中所有缺失值的樣本,即忽略整個(gè)項(xiàng)目記錄或缺失值的屬性,并從數(shù)據(jù)集中排除。當(dāng)缺失值較少時(shí),該方法得出的結(jié)果令人滿意;當(dāng)缺失值增加時(shí),該方法得出的結(jié)果就會(huì)造成較大偏差。雖然該方法直接有效,但是可能會(huì)造成有價(jià)值數(shù)據(jù)的丟失,從而導(dǎo)致軟件工作評(píng)估的準(zhǔn)確性下降,影響成本模型的建立。
這個(gè)階段包括確定軟件工作評(píng)估預(yù)測(cè)屬性以及相應(yīng)的權(quán)重。本文提出了一種新的屬性選擇算法,該算法基于項(xiàng)目選擇屬性的網(wǎng)絡(luò)中心性和基于項(xiàng)目相似度模型的屬性一致性,提出了與肯德爾線性相關(guān)系數(shù)的屬性加權(quán)方法。同時(shí),采用歐氏距離對(duì)軟件工作評(píng)估方法的效率進(jìn)行測(cè)算,并將所提出的算法整合到FGRA 模型中。在該模型中,采用提出的相似度來(lái)構(gòu)建網(wǎng)絡(luò),在結(jié)果中減少了具有相應(yīng)屬性和權(quán)重的數(shù)據(jù)集。
一旦確定了預(yù)測(cè)屬性,目標(biāo)項(xiàng)目pt和所有可驗(yàn)證的源項(xiàng)目pi之間的相似度將根據(jù)這些屬性進(jìn)行評(píng)估。也就是說(shuō),先根據(jù)不同屬性的類型,精確計(jì)算每個(gè)鄰近的相似度(aj(pi),aj(pt)):aj×aj→[0,1],aj∈A;再利用FGRA 對(duì)它們的值進(jìn)行匯總。如果可以計(jì)算出相似度Γ(pt,pi),i∈{1,2,…,n},那么源項(xiàng)目pi與目標(biāo)項(xiàng)目pt按照兩者相似度進(jìn)行排名。
為了預(yù)測(cè)目標(biāo)項(xiàng)目pt的工作量,應(yīng)從中選出前N 個(gè)可比較的項(xiàng)目TOP(pt),并將其相應(yīng)的工作量值存儲(chǔ)在E(pt)中。首先必須決定將用于預(yù)測(cè)E(pt)的類比項(xiàng)目數(shù)量N。從本質(zhì)上來(lái)說(shuō),確定合適的類比項(xiàng)目數(shù)量可以從兩個(gè)角度來(lái)確定,主要的方法涉及所有屬性特定的項(xiàng)目在一定的可比性閾值β 范圍內(nèi),TOP(pt)={pi∈|Γ(pt,pi)≥β}。在一些其他方法中,可能會(huì)造成某些項(xiàng)目提供的數(shù)據(jù)被忽略,如果這些具有相似度的項(xiàng)目提供的數(shù)據(jù)是可用的、必要的,那么忽略這些數(shù)據(jù)就會(huì)造成軟件工作評(píng)估的數(shù)據(jù)缺失,因此,在類比時(shí)需要特別注意相似度項(xiàng)目數(shù)據(jù)問(wèn)題。因此,當(dāng)數(shù)據(jù)集的規(guī)模很小的時(shí)候,只考慮少量的類比是比較合理的??梢允鞘褂? 個(gè)、2 個(gè)、3 個(gè)類比,或者單一的相似性來(lái)產(chǎn)生預(yù)測(cè),都是可行的。在本文中,采用的是第二種方法,使用1、2、3 進(jìn)行類比[4]。
軟件工作預(yù)測(cè)的另一個(gè)重要問(wèn)題是選擇轉(zhuǎn)換技術(shù),它將從一組TOP N 個(gè)比較項(xiàng)目的工作量E(pt)中產(chǎn)生一個(gè)估計(jì)值。差異化是一種用來(lái)推導(dǎo)得出新的預(yù)測(cè)值的新機(jī)制,通過(guò)這種方式,使檢索到的項(xiàng)目與當(dāng)前項(xiàng)目之間的差異實(shí)現(xiàn)最小化,這是根據(jù)關(guān)系模型進(jìn)行軟件工作評(píng)估預(yù)測(cè)的重要步驟,因?yàn)樗从沉四繕?biāo)項(xiàng)目在檢索到的源項(xiàng)目中的結(jié)構(gòu)。需要注意的是,當(dāng)類比的數(shù)量N=1 時(shí),則完全不需要差異化技術(shù)。在軟件工作評(píng)估中,軟件成本估算通常使用的轉(zhuǎn)換技術(shù)是:當(dāng)N≥2 時(shí),得出的結(jié)果最接近類比的平均值,N>2 時(shí)的中位數(shù)、N≥2 時(shí)的反距離加權(quán)平均值和反位置加權(quán)平均值都需要考慮對(duì)每個(gè)項(xiàng)目的影響,其中較高相似度比較低相似度具有更好的影響力。例如,有6 個(gè)類比項(xiàng)目,反向排名的權(quán)重平均值的計(jì)算如下:有3 項(xiàng)的估算值最為接近,2 項(xiàng)其次,1 項(xiàng)再次之[5]。
在軟件工作的可靠性評(píng)估過(guò)程中,通過(guò)過(guò)程化目標(biāo)評(píng)估軟件開發(fā)的實(shí)際工作量,其中包括數(shù)據(jù)采集、數(shù)據(jù)集中、數(shù)據(jù)分析、數(shù)據(jù)可視化,然后對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,迭代實(shí)驗(yàn)以滿足軟件開發(fā)的基本要求、實(shí)際需求。每個(gè)項(xiàng)目的實(shí)際工作量記錄為一個(gè)常數(shù)數(shù)值,然后轉(zhuǎn)換為分類值[6]。定義3 個(gè)類別,每個(gè)類別對(duì)應(yīng)的是每個(gè)項(xiàng)目所涉及的實(shí)際工作量的級(jí)別。通過(guò)對(duì)數(shù)據(jù)的分析、研究,發(fā)現(xiàn)需要對(duì)數(shù)據(jù)進(jìn)行更多的預(yù)處理。根據(jù)項(xiàng)目模式和FGRA 模型,將這些由FGRA 模型給出的數(shù)據(jù)中的乘數(shù)轉(zhuǎn)換為相應(yīng)的數(shù)值,發(fā)現(xiàn)乘數(shù)的值與實(shí)際工作量的預(yù)測(cè)不相關(guān),因此,可以使用乘數(shù)來(lái)構(gòu)建一個(gè)新屬性,稱之為項(xiàng)目乘數(shù),然后刪除第一個(gè)單獨(dú)的乘數(shù)。由于項(xiàng)目參數(shù)會(huì)影響代碼,新構(gòu)建的乘數(shù)屬性乘以等效的物理代碼屬性,并利用日志功能將結(jié)果轉(zhuǎn)化。圖2為3 個(gè)工作類別的密度圖。
圖2 3 個(gè)工作類別的密度圖
同時(shí),預(yù)測(cè)結(jié)果表明,軟件工作評(píng)估預(yù)測(cè)與項(xiàng)目規(guī)模、時(shí)間周期、代碼大小有密切聯(lián)系,其映射圖也顯示出負(fù)向性關(guān)系,見圖3。
圖3 軟件工作評(píng)估映射圖
本文通過(guò)將模糊集理論和灰色關(guān)聯(lián)分析的技術(shù)與現(xiàn)有的FGRA 軟件工作評(píng)估模型估算方法相結(jié)合,提出了新的高效和靈活的方法。此外,結(jié)合屬性子集選擇算法和權(quán)重技術(shù)相結(jié)合,提出一個(gè)全面的、綜合的、完善的模型,可以克服以前類比估計(jì)方法的主要障礙。