(本文由北京中基數聯(lián)科技有限公司撰寫(xiě),僅供學(xué)習參考使用,版權歸中基數聯(lián)所有,轉載請標明出處。)
1、概述
COCOMO(Constructive Cost Model),又稱(chēng)為構造性成本模型,是由美國著(zhù)名經(jīng)濟學(xué)家、軟件工程專(zhuān)家Barry Boehm提出的一種軟件成本估算方法。
1981年,Barry Boehm在其發(fā)表的《軟件工程經(jīng)濟學(xué)》一書(shū)中提出了軟件估算模型層次結構,即COCOMO模型,被稱(chēng)為COCOMO 81模型。該模型采用一種自底向上的微觀(guān)參數估計方法,使用成本驅動(dòng)因素從底端對軟件環(huán)境進(jìn)行描述,至今該模型已經(jīng)成為軟件界通用的估算模型。
20世紀九十年代,Barry Boehm在 COCOMO 81的基礎上根據軟件發(fā)展的趨勢,研究并調整了模型并發(fā)表了 COCOMO II 模型。
2、COCOMO模型
2.1 計算公式
COCOMO模型一般分為三個(gè)層級:基本COCOMO模型、中級COCOMO模型和詳細COCOMO模型。
基本 COCOMO 模型是一個(gè)靜態(tài)單變量模型,主要以軟件規模(已估算出來(lái)的源代碼行數)為自變量來(lái)估算整個(gè)軟件系統的工作量和軟件開(kāi)發(fā)所需要的時(shí)間。
中級COCOMO模型是一個(gè)靜態(tài)多變量模型,在用KDSI為自變量計算軟件開(kāi)發(fā)工作量的基礎上,增加了涉及產(chǎn)品、平臺、人員、項目等方面屬性的影響因素來(lái)調整工作量的估算。
詳細COCOMO模型包含了中級模型的所有特性,并且還考慮了成本驅動(dòng)因素對軟件工程過(guò)程中每一個(gè)階段(分析、設計等)的影響。
COCOMO模型中的開(kāi)發(fā)工作量通用公式為:
MM=a×Sb×EM
其中:
MM:軟件開(kāi)發(fā)工作量,單位:人月;
S:軟件規模,單位:千源指令條數(KDSI);
a、b:常數,隨項目類(lèi)型變化而變化,在基本模型中取1;
EM:工作量調整因子,其計算方式如下:
其中:
EM:工作量調整因子;
Fi:15個(gè)成本驅動(dòng)因子,取值見(jiàn)表3。
根據計算出的工作量,可以得到開(kāi)發(fā)所需的時(shí)間,公式如下:
T=c×MMd
其中:
T :開(kāi)發(fā)所需要的時(shí)間,單位:月;
MM:軟件開(kāi)發(fā)工作量,單位:人月;
c、d:常數,隨項目類(lèi)型變化而變化。
在COCOMO模型中,將項目類(lèi)型分為三類(lèi):組織型(Organic Model)、半獨立型(Embedded Model)、嵌入型(Semi-detached Model)。
組織型(Organic):項目規模較小,難度較低,由有經(jīng)驗的開(kāi)發(fā)團隊完成。
半獨立型(Embedded Model):項目規模介于組織型和嵌入型之間,復雜度和難度中等,由不同經(jīng)驗水平的人組成的開(kāi)發(fā)團隊完成。
嵌入型(Semi-detached Model):開(kāi)發(fā)工作緊密地與系統中的平臺、軟件和運行限制聯(lián)系在一起,項目需要在嚴格的約束條件下開(kāi)發(fā)。
2.2 參數取值
在COCOMO模型中,根據不同的模型層級和項目類(lèi)型,參數的取值也不同。
在基本COCOMO模型中,工作量調整因子(EM)取值為1,其余各項參數取值見(jiàn)表1:
表 1 基本COCOMO模型參數取值
項目類(lèi)型 |
a |
b |
c |
d |
組織型 |
2.4 |
1.05 |
2.5 |
0.38 |
半獨立型 |
3.0 |
1.12 |
2.5 |
0.35 |
嵌入型 |
3.6 |
1.20 |
2.5 |
0.32 |
在中級和詳細COCOMO模型中,各項參數取值如表2:
表 2 中級和詳細COCOMO模型參數取值
項目類(lèi)型 |
a |
b |
c |
d |
組織型 |
3.2 |
1.05 |
2.5 |
0.38 |
半獨立型 |
3.0 |
1.12 |
2.5 |
0.35 |
嵌入型 |
2.8 |
1.20 |
2.5 |
0.32 |
在基本COCOMO模型中,可以快速簡(jiǎn)略地估算出軟件開(kāi)發(fā)成本和時(shí)間等信息,但其未考慮到技術(shù)、環(huán)境和人為因素等變化。因此,在中級和詳細COCOMO模型中引入了4大類(lèi)15個(gè)子類(lèi)的成本驅動(dòng)因素,并將它們的乘積作為工作量調整因子。成本驅動(dòng)因素分類(lèi)及取值見(jiàn)表3。
表 3 COCOMO模型成本驅動(dòng)因素分類(lèi)及取值
在詳細COCOMO模型中,Barry Boehm在中級COCOMO模型的基礎上將軟件進(jìn)行了模塊和階段劃分,分成了四個(gè)階段—需求和產(chǎn)品設計,詳細設計,編程和單元測試和集成與測試,并按照不同階段給出了個(gè)成本驅動(dòng)因素的等級度量分值表和相應說(shuō)明。在不同模塊和階段中應用COCOMO模型進(jìn)行工作量估算,然后對工作量進(jìn)行求和。
3、COCOMO II 模型
3.1 主要變化
20世紀九十年代,Barry Boehm根據軟件工程市場(chǎng)的發(fā)展,在之前的COCOMO模型基礎上提出了具有估算螺旋和進(jìn)化開(kāi)發(fā)能力的COCOMO II模型。與原來(lái)的COCOMO模型不同的是,新的COCOMO II模型主要有以下變化:
1:根據軟件開(kāi)發(fā)流程,COCOMO II模型分為三個(gè)子模型,分別是:應用組合模型(Applications Composition Model)、早期設計模型(Early Design Model)和后體系結構模型(Post-Architecture Model)。
2:項目的規模經(jīng)濟性使用冪指數E來(lái)計算,取代了原來(lái)基本、中級和詳細COCOMO模型使用固定指數的方式,冪指數E由5個(gè)規模度因子計算得到。
3:使用源代碼行(KLOC)代替原來(lái)的源指令條數(KDSI)。
4:新增7個(gè)成本驅動(dòng)因子:DOCU、RUSE、PVOL、PCON、PEXP、LTEX、SITE。
5:刪除原有的5個(gè)成本驅動(dòng)因子:VIRT、TURN、VEXP、LEXP、MODP。
6:更新并調整了原有成本驅動(dòng)因子的參數值。
3.2 計算公式
應用組合模型:該模型是基于對象點(diǎn)的度量模型,主要用于軟件開(kāi)發(fā)項目初始規劃階段的粗略工作量和進(jìn)度估算。它通過(guò)計算屏幕、報表、第三代語(yǔ)言模塊等對象點(diǎn)的數量來(lái)確定基本的規模,每個(gè)對象點(diǎn)都有權重,由一個(gè)三級的復雜性因子表示,將各個(gè)對象點(diǎn)的權值累加起來(lái)得到一個(gè)總體規模,然后再針對復用進(jìn)行調整。
早期設計模型:在項目開(kāi)始后,如果項目管理人員收集到的軟件項目信息不能夠詳細的估算軟件成本估算,這時(shí)可采用早期設計模型。
后體系結構模型:在詳細設計階段,項目成員已經(jīng)對軟件功能結構有了一定的了解,已經(jīng)確定好軟件的基本架構,可使用后體系模型。
早期設計模型與后體系結構模型的計算公式基本相同,但早期設計模型有7個(gè)成本驅動(dòng)因子,而后體系結構模型的成本驅動(dòng)因子有17個(gè)。
公式如下:
其中:
PM:軟件開(kāi)發(fā)工作量,單位:人月;
A:常數,通常取值為2.94;
S:軟件規模,單位:千代碼行(KLOC);
Fi:成本驅動(dòng)因子,早期設計模型取值見(jiàn)表4,后體系結構模型取值見(jiàn)表5;
E:項目規模的經(jīng)濟性,計算方式如下:
其中,Wi是指規模度因子,共5個(gè),取值見(jiàn)表6。
3.3 參數取值
表 4 早期設計模型成本驅動(dòng)因子取值
表 5 后體系結構模型成本驅動(dòng)因子取值
表 6 COCOMO II 模型規模度因子取值
4、與基于NESMA功能點(diǎn)方法的軟件工作量費用估算的比較
基于NESMA功能點(diǎn)方法的軟件開(kāi)發(fā)成本估算是從用戶(hù)角度出發(fā),對軟件的規模從邏輯設計的角度進(jìn)行度量的標準方法,再通過(guò)調整因子和行業(yè)基準數據估算軟件開(kāi)發(fā)工作量和成本費用。它與COCOMO模型估算方法主要有以下共同點(diǎn):
1:估算技術(shù)路線(xiàn)相同。都是通過(guò)規模,進(jìn)而估算工作量和成本費用。
2:估算方法相同。都是方程法,都有估算模型,通過(guò)調整因子參數適配不同類(lèi)型項目的評估。
3:為適用項目不同階段估算,有不同的模型。COCOMO模型有基本、中期、后期模型以用于項目不同階段的估算,NESMA功能點(diǎn)方法也有預估、估算和詳細功能點(diǎn)法適應不同場(chǎng)景的估算。
不同之處有:
1:軟件規模度量單位不同
功能點(diǎn)方法從用戶(hù)的角度出發(fā),將系統分為數據功能和事物功能兩大類(lèi),分別根據具體的規則來(lái)計算功能點(diǎn),最后結合系統的特征因子來(lái)調整功能點(diǎn)數,從而得到系統規模。
COCOMO模型通過(guò)計算軟件系統的代碼行數來(lái)確定軟件規模。
2:工作量估算模型不同
功能點(diǎn)方法通過(guò)軟件規模和基準生產(chǎn)率來(lái)進(jìn)行軟件項目工作量的估算。
COCOMO模型通過(guò)軟件規模和多個(gè)成本驅動(dòng)因子來(lái)調整軟件項目工作量。
3:調整因子不同
功能點(diǎn)方法在進(jìn)行軟件項目工作量計算時(shí),根據項目的實(shí)際情況,從計數時(shí)機、質(zhì)量特性、完整性級別和開(kāi)發(fā)因素等系統特征出發(fā),進(jìn)行軟件規模和工作量的調整。
COCOMO模型在進(jìn)行軟件項目工作量計算時(shí),主要根據不同的項目類(lèi)型,采取不同的計算模型,并根據產(chǎn)品、平臺、人員和項目等多個(gè)成本驅動(dòng)因子的參數取值進(jìn)行工作量調整。
5 分析結論
1:COCOMO模型估算的基礎是代碼行,是從開(kāi)發(fā)視角進(jìn)行軟件規模、工作量、進(jìn)度、成本費用的估算方法。NESMA功能點(diǎn)方法是從用戶(hù)視角進(jìn)行估算的方法。估算視角不同,應用場(chǎng)景不同。
2:基于NESMA功能點(diǎn)方法估算軟件規模、工作量和成本費用的模型中各個(gè)參數有國標、聯(lián)盟團標和行業(yè)基準數據支撐,相比之下COCOMO模型各個(gè)參數的選取有一定主觀(guān)因素。故COCOMO模型在組織內橫向對標、同業(yè)對標、行業(yè)對標方面不如基于NESMA功能點(diǎn)方法的估算。
3:COCOMO模型估算過(guò)程簡(jiǎn)單,經(jīng)簡(jiǎn)單培訓后就可以開(kāi)展估算,功能點(diǎn)方法較為復雜,需經(jīng)過(guò)專(zhuān)業(yè)培訓后才可開(kāi)展估算。
綜上所述,COCOMO模型適用于開(kāi)發(fā)團隊估算自身項目的工作量、進(jìn)度?;贜ESMA功能點(diǎn)方法的估算模型適用于組織內軟件項目管理、對外招投標等場(chǎng)景。
6 參考文獻
-
Barry Boehm著(zhù),李師賢譯.軟件成本估算 COCOMO II模型方法[M].北京:機械工業(yè)出版社,2005
-
甘寅.基于COCOMO_Ⅱ模型的FG公司APP項目成本管理研究[D].上海:東華大學(xué),2021
-
雷楊.COCOMO_Ⅱ改進(jìn)模型的軟件成本估算方法研究與實(shí)現[D].江蘇:南京理工大學(xué),2020
-
田力軍.COCOMO模型在噴氣燃料系統測試項目估算中應用[J].艦船電子工程.2019
-
陳廷斌,侯麗,翁競雄.基于COCOMO_Ⅱ模型的軟件項目成本估算[J].價(jià)值工程,2018
-
杜海鳳.基于COCOMO模型的軟件定價(jià)方法研究[D].北京:北京交通大學(xué),2012
-
Barry Boehm. Software Engineering Economics [M].Prentice-Hall,1981
以上就是軟件造價(jià)評估公司中基數聯(lián)為您帶來(lái)的“COCOMO模型介紹”所有內容,更多軟件開(kāi)發(fā)成本估算知識敬請關(guān)注中基數聯(lián)!