張帆 姜月 林志超 齊鑫 李寧檸
遼寧郵電規(guī)劃設(shè)計(jì)院有限公司 遼寧 沈陽(yáng) 110179
目前較為流行的軟件成本度量技術(shù)有:利用專(zhuān)家經(jīng)驗(yàn)進(jìn)行的判定法、類(lèi)比相似項(xiàng)目數(shù)據(jù)的估算法、采用回歸函數(shù)的分析法、基于數(shù)學(xué)算法的模型估算法及PERT法等[1]。
專(zhuān)家判定法是根據(jù)估算專(zhuān)家的歷史經(jīng)驗(yàn)和主觀(guān)意識(shí),結(jié)合新項(xiàng)目的自身特征給出估算結(jié)果,這樣的估算結(jié)果往往過(guò)分依賴(lài)于專(zhuān)家的判斷,缺乏客觀(guān)性和標(biāo)準(zhǔn)性。
類(lèi)比估算法將新的軟件項(xiàng)目與以往類(lèi)似項(xiàng)目在使用環(huán)境、應(yīng)用場(chǎng)景等方面的實(shí)際數(shù)據(jù)進(jìn)行類(lèi)比,得出一個(gè)估算值,類(lèi)比結(jié)果的準(zhǔn)確性往往依賴(lài)于以往相似項(xiàng)目歷史數(shù)據(jù)的完整性和代表性。
回歸分析法利用軟件產(chǎn)品的歷史數(shù)據(jù)來(lái)預(yù)測(cè)和估算新軟件項(xiàng)目的估算成本,常用的有OLS、OSR、CART等回歸方法,其方法簡(jiǎn)單、易用,但是回歸模型需要對(duì)軟件項(xiàng)目進(jìn)行嚴(yán)格的假設(shè)條件,一旦出現(xiàn)偏差較大的參數(shù)值,就會(huì)對(duì)回歸算法的估算結(jié)果造成巨大的影響。
算法模型估算法給出了一種或多種的數(shù)學(xué)方法,由這種數(shù)學(xué)方法所引起的軟件成本度量,可以看作是主要成本與控制因素之間變化的函數(shù)。算法模型具體分類(lèi)如下表:
雖然算法模型的發(fā)展趨勢(shì)十分樂(lè)觀(guān),但其度量結(jié)果的準(zhǔn)確性仍受制于軟件項(xiàng)目的規(guī)模、模型因子及軟件環(huán)境等因素,且目前還沒(méi)有任何一個(gè)適用性及通用性很強(qiáng)的模型可以滿(mǎn)足各類(lèi)軟件項(xiàng)目的成本度量。
在實(shí)際項(xiàng)目管理中,對(duì)于實(shí)現(xiàn)復(fù)雜、采用前沿技術(shù)且無(wú)相似項(xiàng)目可以作為經(jīng)驗(yàn)參考的軟件項(xiàng)目,可以采用PERT技術(shù)。PERT實(shí)現(xiàn)原理是假設(shè)工作的時(shí)間和完成時(shí)間都是隨機(jī)的,并遵循著一定的概率分布,PERT就能夠預(yù)測(cè)該工作在特定日期內(nèi)可實(shí)現(xiàn)的可能性[2]。PERT在綜合考慮項(xiàng)目各種可能存在風(fēng)險(xiǎn)的前提下,采用三點(diǎn)估計(jì)法來(lái)估算活動(dòng)的持續(xù)時(shí)間,根據(jù)不同項(xiàng)目活動(dòng)所需要的完成時(shí)間劃分成3種情況進(jìn)行估算:
最可能持續(xù)時(shí)間(mostlikely time):是在已知該項(xiàng)目所具備的資源、資源的產(chǎn)出率及能夠支持給該活動(dòng)所需的實(shí)際可能性和依賴(lài)其余活動(dòng)參與的條件下,需要的連續(xù)的時(shí)間[3]。
樂(lè)觀(guān)持續(xù)時(shí)間(optimistic time):是在最可能持續(xù)時(shí)間所有的前提條件都是最有利的時(shí)候所預(yù)估出來(lái)的持續(xù)時(shí)間。
悲觀(guān)持續(xù)時(shí)間(pessimistic time):是在最可能持續(xù)時(shí)間所有的前提條件都是最?lèi)毫拥臅r(shí)候所預(yù)估出來(lái)的持續(xù)時(shí)間。
根據(jù)以上公式還可以進(jìn)一步計(jì)算出任一項(xiàng)工作的時(shí)間方差,公式為:通過(guò)平均值及方差計(jì)算得到的活動(dòng)持續(xù)時(shí)間相對(duì)于單點(diǎn)計(jì)算獲得的值要更加準(zhǔn)確。
為解決目前常用成本度量算法及模型存在的不足,得到客觀(guān)準(zhǔn)確的度量結(jié)果,本文采用結(jié)合方差和PERTF的動(dòng)態(tài)調(diào)整度量方法,其原理就是通過(guò)方差分析動(dòng)態(tài)的調(diào)整度量值,然后再將PERT法融入成本度量的一種新型的成本估算?;玖鞒虉D如下圖1所示。

圖1 結(jié)合方差和PERT的軟件成本動(dòng)態(tài)調(diào)整度量模型
此方法適用性廣、運(yùn)用方便具體實(shí)現(xiàn)步驟如下:
步驟1:
步驟2:
分析估計(jì)結(jié)果:項(xiàng)目經(jīng)理對(duì)每個(gè)活動(dòng)負(fù)責(zé)人的估計(jì)結(jié)果進(jìn)行匯總,并對(duì)每個(gè)活動(dòng)不同的成本估算算法模型計(jì)算出的成本進(jìn)行分析。分析方法如下:
(1)分析每個(gè)活動(dòng)中不同算法模型的估計(jì)值M與活動(dòng)計(jì)算出的三點(diǎn)估計(jì)值之間的誤差,若存在S>30%,即有一個(gè)偏差值大于所設(shè)定的偏差值標(biāo)準(zhǔn),此時(shí)跳轉(zhuǎn)執(zhí)行步驟 1;
(2)此次執(zhí)行步驟1時(shí)需要由所有專(zhuān)家參與,分析并動(dòng)態(tài)的調(diào)整算法模型涉及的影響因素,重新計(jì)算該活動(dòng)的成本,否則 為該活動(dòng)成本的最終成本估計(jì)值;
(3)計(jì)算項(xiàng)目整體工期的成本值=(各活動(dòng)成本的最終估計(jì)值)。
步驟3:
活動(dòng)負(fù)責(zé)人將上述估計(jì)結(jié)果進(jìn)行統(tǒng)一匯總,計(jì)算出項(xiàng)目成本的總估計(jì)值,確定出最終的項(xiàng)目成本估計(jì)值。
本文應(yīng)用上述方法來(lái)完成一個(gè)軟件開(kāi)發(fā)項(xiàng)目的成本度量,將軟件項(xiàng)目的生命周期大概分為3個(gè)主要活動(dòng):需求分析、需求設(shè)計(jì)和系統(tǒng)開(kāi)發(fā)。各項(xiàng)活動(dòng)通過(guò)3種不同類(lèi)型的算法模型進(jìn)行成本的估計(jì),然后根據(jù)PERT方法的三點(diǎn)估算計(jì)算出每個(gè)活動(dòng)成本的估計(jì)值。如下圖所示:

圖2 軟件項(xiàng)目活動(dòng)圖
設(shè)定項(xiàng)目的偏差標(biāo)準(zhǔn)為30%,本例在估算過(guò)程中參考了三種不同類(lèi)型算法模型的成本估算數(shù)據(jù)。本例中選擇不同類(lèi)型的算法模型分別是:復(fù)合模型中的COCOMOⅡ模型、乘法模型中的Bailey Basili模型和線(xiàn)性模型中的SDC模型[3]?;顒?dòng)成本估算結(jié)果如表2所示:

表1 算法模型分類(lèi)表

表2 活動(dòng)成本估算表
以表中1中 “需求分析”的數(shù)據(jù)為例,對(duì)其最終的估計(jì)結(jié)果進(jìn)行計(jì)算。
對(duì)于需求分析活動(dòng)而言,每個(gè)估算模型的估計(jì)值與三點(diǎn)估計(jì)值之間的偏差的絕對(duì)值分別為:2,2,0。因?yàn)樗孕枨蠓治龌顒?dòng)的其他兩個(gè)算法模型的S分別為:15%,0,均在偏差標(biāo)準(zhǔn)30%之內(nèi)。所以該為該活動(dòng)的最終成本估計(jì)值,即該活動(dòng)的最終估計(jì)成本估計(jì)為13。以此類(lèi)推,其他活動(dòng)的每個(gè)算法模型的S也都在偏差標(biāo)準(zhǔn)30%之內(nèi),因此需求設(shè)計(jì)和系統(tǒng)開(kāi)發(fā)的最終成本估計(jì)值分別為:68,99。因此,可得項(xiàng)目的總工期為t=t1+t2+t3=13+68+99=180人天。
計(jì)算得到以上3個(gè)活動(dòng)的期望成本和標(biāo)準(zhǔn)差為:

根據(jù)概率理論,每個(gè)活動(dòng)消耗的成本服從正態(tài)概率分布;舉例說(shuō)明:系統(tǒng)開(kāi)發(fā)活動(dòng)的期望成本為=99,其方差為=3.5;則根據(jù)上面的數(shù)據(jù),可以得出成本在范圍內(nèi)即95.5與102.5之間,完成項(xiàng)目的概率為68%;成本在范圍內(nèi)即在92與106之間,完成項(xiàng)目的概率95%;成本在范圍內(nèi)即在88.5與109.5之間,完成項(xiàng)目的概率為99%。系統(tǒng)開(kāi)發(fā)的三個(gè)算法中Bailey Basili模型估計(jì)成本110大于=109.5,說(shuō)明Bailey Basili模型算法計(jì)算出的成本對(duì)于系統(tǒng)分析而言估算準(zhǔn)確度比較高;需求分析活動(dòng)中COCOMOⅡ模型算法計(jì)算出的成本值準(zhǔn)確度比較高;需求設(shè)計(jì)活動(dòng)中三個(gè)算法中Bailey Basili模型估計(jì)成本55小于=58.1,在此成本下完成的概率幾乎為0,因此Bailey Basili模型不適用于需求設(shè)計(jì)活動(dòng),估算成本值的準(zhǔn)確度比較低;通過(guò)算法模型的準(zhǔn)確度的判斷,可以分析出每個(gè)算法模型適用的活動(dòng)類(lèi)型,具有項(xiàng)目成本度量估算的參考價(jià)值;例如本文中所舉案例的估算出得的成本是180,而項(xiàng)目最終實(shí)際成本為185,其誤差在5%之內(nèi),因此估算方法是切實(shí)可行的。
本文研究的方差分析和PERT方法結(jié)合的動(dòng)態(tài)調(diào)整技術(shù),將不同類(lèi)型的度量算法模型一起計(jì)算得到估算的成本,從而提高了度量成本的準(zhǔn)確性及靈活性,而且還可以得出每個(gè)算法估算模型最為適用的活動(dòng)。最后本文按照算法的理論原理,以一個(gè)實(shí)際項(xiàng)目為例子進(jìn)行了驗(yàn)證,通過(guò)實(shí)驗(yàn)結(jié)果可以看出,在軟件成本度量的準(zhǔn)確性上本文介紹的方法明顯優(yōu)于其他算法模型,通過(guò)算法計(jì)算得到的成本度量結(jié)果與實(shí)際成本之間的偏差最小,用數(shù)據(jù)結(jié)果證實(shí)了該算法的準(zhǔn)確性。