(本文由北京中基數(shù)聯(lián)科技有限公司撰寫,僅供學(xué)習(xí)參考使用,版權(quán)歸中基數(shù)聯(lián)所有,轉(zhuǎn)載請(qǐng)標(biāo)明出處。)
1、概述
COCOMO(Constructive Cost Model),又稱為構(gòu)造性成本模型,是由美國(guó)著名經(jīng)濟(jì)學(xué)家、軟件工程專家Barry Boehm提出的一種軟件成本估算方法。
1981年,Barry Boehm在其發(fā)表的《軟件工程經(jīng)濟(jì)學(xué)》一書中提出了軟件估算模型層次結(jié)構(gòu),即COCOMO模型,被稱為COCOMO 81模型。該模型采用一種自底向上的微觀參數(shù)估計(jì)方法,使用成本驅(qū)動(dòng)因素從底端對(duì)軟件環(huán)境進(jìn)行描述,至今該模型已經(jīng)成為軟件界通用的估算模型。
20世紀(jì)九十年代,Barry Boehm在 COCOMO 81的基礎(chǔ)上根據(jù)軟件發(fā)展的趨勢(shì),研究并調(diào)整了模型并發(fā)表了 COCOMO II 模型。
2、COCOMO模型
2.1 計(jì)算公式
COCOMO模型一般分為三個(gè)層級(jí):基本COCOMO模型、中級(jí)COCOMO模型和詳細(xì)COCOMO模型。
基本 COCOMO 模型是一個(gè)靜態(tài)單變量模型,主要以軟件規(guī)模(已估算出來(lái)的源代碼行數(shù))為自變量來(lái)估算整個(gè)軟件系統(tǒng)的工作量和軟件開發(fā)所需要的時(shí)間。
中級(jí)COCOMO模型是一個(gè)靜態(tài)多變量模型,在用KDSI為自變量計(jì)算軟件開發(fā)工作量的基礎(chǔ)上,增加了涉及產(chǎn)品、平臺(tái)、人員、項(xiàng)目等方面屬性的影響因素來(lái)調(diào)整工作量的估算。
詳細(xì)COCOMO模型包含了中級(jí)模型的所有特性,并且還考慮了成本驅(qū)動(dòng)因素對(duì)軟件工程過(guò)程中每一個(gè)階段(分析、設(shè)計(jì)等)的影響。
COCOMO模型中的開發(fā)工作量通用公式為:
MM=a×Sb×EM
其中:MM:軟件開發(fā)工作量,單位:人月;
S:軟件規(guī)模,單位:千源指令條數(shù)(KDSI);
a、b:常數(shù),隨項(xiàng)目類型變化而變化,在基本模型中取1;
EM:工作量調(diào)整因子,其計(jì)算方式如下:

EM:工作量調(diào)整因子;
Fi:15個(gè)成本驅(qū)動(dòng)因子,取值見表3。
根據(jù)計(jì)算出的工作量,可以得到開發(fā)所需的時(shí)間,公式如下:
T=c×MMd
其中:T :開發(fā)所需要的時(shí)間,單位:月;
MM:軟件開發(fā)工作量,單位:人月;
c、d:常數(shù),隨項(xiàng)目類型變化而變化。
在COCOMO模型中,將項(xiàng)目類型分為三類:組織型(Organic Model)、半獨(dú)立型(Embedded Model)、嵌入型(Semi-detached Model)。
組織型(Organic):項(xiàng)目規(guī)模較小,難度較低,由有經(jīng)驗(yàn)的開發(fā)團(tuán)隊(duì)完成。
半獨(dú)立型(Embedded Model):項(xiàng)目規(guī)模介于組織型和嵌入型之間,復(fù)雜度和難度中等,由不同經(jīng)驗(yàn)水平的人組成的開發(fā)團(tuán)隊(duì)完成。
嵌入型(Semi-detached Model):開發(fā)工作緊密地與系統(tǒng)中的平臺(tái)、軟件和運(yùn)行限制聯(lián)系在一起,項(xiàng)目需要在嚴(yán)格的約束條件下開發(fā)。
2.2 參數(shù)取值
在COCOMO模型中,根據(jù)不同的模型層級(jí)和項(xiàng)目類型,參數(shù)的取值也不同。
在基本COCOMO模型中,工作量調(diào)整因子(EM)取值為1,其余各項(xiàng)參數(shù)取值見表1:
表 1 基本COCOMO模型參數(shù)取值
項(xiàng)目類型 | a | b | c | d |
組織型 | 2.4 | 1.05 | 2.5 | 0.38 |
半獨(dú)立型 | 3.0 | 1.12 | 2.5 | 0.35 |
嵌入型 | 3.6 | 1.20 | 2.5 | 0.32 |
表 2 中級(jí)和詳細(xì)COCOMO模型參數(shù)取值
項(xiàng)目類型 | a | b | c | d |
組織型 | 3.2 | 1.05 | 2.5 | 0.38 |
半獨(dú)立型 | 3.0 | 1.12 | 2.5 | 0.35 |
嵌入型 | 2.8 | 1.20 | 2.5 | 0.32 |
表 3 COCOMO模型成本驅(qū)動(dòng)因素分類及取值

在詳細(xì)COCOMO模型中,Barry Boehm在中級(jí)COCOMO模型的基礎(chǔ)上將軟件進(jìn)行了模塊和階段劃分,分成了四個(gè)階段—需求和產(chǎn)品設(shè)計(jì),詳細(xì)設(shè)計(jì),編程和單元測(cè)試和集成與測(cè)試,并按照不同階段給出了個(gè)成本驅(qū)動(dòng)因素的等級(jí)度量分值表和相應(yīng)說(shuō)明。在不同模塊和階段中應(yīng)用COCOMO模型進(jìn)行工作量估算,然后對(duì)工作量進(jìn)行求和。
3、COCOMO II 模型
3.1 主要變化
3、COCOMO II 模型
3.1 主要變化
20世紀(jì)九十年代,Barry Boehm根據(jù)軟件工程市場(chǎng)的發(fā)展,在之前的COCOMO模型基礎(chǔ)上提出了具有估算螺旋和進(jìn)化開發(fā)能力的COCOMO II模型。與原來(lái)的COCOMO模型不同的是,新的COCOMO II模型主要有以下變化:
1:根據(jù)軟件開發(fā)流程,COCOMO II模型分為三個(gè)子模型,分別是:應(yīng)用組合模型(Applications Composition Model)、早期設(shè)計(jì)模型(Early Design Model)和后體系結(jié)構(gòu)模型(Post-Architecture Model)。
2:項(xiàng)目的規(guī)模經(jīng)濟(jì)性使用冪指數(shù)E來(lái)計(jì)算,取代了原來(lái)基本、中級(jí)和詳細(xì)COCOMO模型使用固定指數(shù)的方式,冪指數(shù)E由5個(gè)規(guī)模度因子計(jì)算得到。
3:使用源代碼行(KLOC)代替原來(lái)的源指令條數(shù)(KDSI)。
4:新增7個(gè)成本驅(qū)動(dòng)因子:DOCU、RUSE、PVOL、PCON、PEXP、LTEX、SITE。
5:刪除原有的5個(gè)成本驅(qū)動(dòng)因子:VIRT、TURN、VEXP、LEXP、MODP。
6:更新并調(diào)整了原有成本驅(qū)動(dòng)因子的參數(shù)值。
3.2 計(jì)算公式
應(yīng)用組合模型:該模型是基于對(duì)象點(diǎn)的度量模型,主要用于軟件開發(fā)項(xiàng)目初始規(guī)劃階段的粗略工作量和進(jìn)度估算。它通過(guò)計(jì)算屏幕、報(bào)表、第三代語(yǔ)言模塊等對(duì)象點(diǎn)的數(shù)量來(lái)確定基本的規(guī)模,每個(gè)對(duì)象點(diǎn)都有權(quán)重,由一個(gè)三級(jí)的復(fù)雜性因子表示,將各個(gè)對(duì)象點(diǎn)的權(quán)值累加起來(lái)得到一個(gè)總體規(guī)模,然后再針對(duì)復(fù)用進(jìn)行調(diào)整。
早期設(shè)計(jì)模型:在項(xiàng)目開始后,如果項(xiàng)目管理人員收集到的軟件項(xiàng)目信息不能夠詳細(xì)的估算軟件成本估算,這時(shí)可采用早期設(shè)計(jì)模型。
后體系結(jié)構(gòu)模型:在詳細(xì)設(shè)計(jì)階段,項(xiàng)目成員已經(jīng)對(duì)軟件功能結(jié)構(gòu)有了一定的了解,已經(jīng)確定好軟件的基本架構(gòu),可使用后體系模型。
早期設(shè)計(jì)模型與后體系結(jié)構(gòu)模型的計(jì)算公式基本相同,但早期設(shè)計(jì)模型有7個(gè)成本驅(qū)動(dòng)因子,而后體系結(jié)構(gòu)模型的成本驅(qū)動(dòng)因子有17個(gè)。
公式如下:

其中:
PM:軟件開發(fā)工作量,單位:人月;
A:常數(shù),通常取值為2.94;
S:軟件規(guī)模,單位:千代碼行(KLOC);
Fi:成本驅(qū)動(dòng)因子,早期設(shè)計(jì)模型取值見表4,后體系結(jié)構(gòu)模型取值見表5;
E:項(xiàng)目規(guī)模的經(jīng)濟(jì)性,計(jì)算方式如下:
其中,Wi是指規(guī)模度因子,共5個(gè),取值見表6。
3.3 參數(shù)取值
表 4 早期設(shè)計(jì)模型成本驅(qū)動(dòng)因子取值

表 5 后體系結(jié)構(gòu)模型成本驅(qū)動(dòng)因子取值

表 6 COCOMO II 模型規(guī)模度因子取值

4、與基于NESMA功能點(diǎn)方法的軟件工作量費(fèi)用估算的比較
基于NESMA功能點(diǎn)方法的軟件開發(fā)成本估算是從用戶角度出發(fā),對(duì)軟件的規(guī)模從邏輯設(shè)計(jì)的角度進(jìn)行度量的標(biāo)準(zhǔn)方法,再通過(guò)調(diào)整因子和行業(yè)基準(zhǔn)數(shù)據(jù)估算軟件開發(fā)工作量和成本費(fèi)用。它與COCOMO模型估算方法主要有以下共同點(diǎn):
1:估算技術(shù)路線相同。都是通過(guò)規(guī)模,進(jìn)而估算工作量和成本費(fèi)用。
2:估算方法相同。都是方程法,都有估算模型,通過(guò)調(diào)整因子參數(shù)適配不同類型項(xiàng)目的評(píng)估。
3:為適用項(xiàng)目不同階段估算,有不同的模型。COCOMO模型有基本、中期、后期模型以用于項(xiàng)目不同階段的估算,NESMA功能點(diǎn)方法也有預(yù)估、估算和詳細(xì)功能點(diǎn)法適應(yīng)不同場(chǎng)景的估算。
不同之處有:
1:軟件規(guī)模度量單位不同
功能點(diǎn)方法從用戶的角度出發(fā),將系統(tǒng)分為數(shù)據(jù)功能和事物功能兩大類,分別根據(jù)具體的規(guī)則來(lái)計(jì)算功能點(diǎn),最后結(jié)合系統(tǒng)的特征因子來(lái)調(diào)整功能點(diǎn)數(shù),從而得到系統(tǒng)規(guī)模。
COCOMO模型通過(guò)計(jì)算軟件系統(tǒng)的代碼行數(shù)來(lái)確定軟件規(guī)模。
2:工作量估算模型不同
功能點(diǎn)方法通過(guò)軟件規(guī)模和基準(zhǔn)生產(chǎn)率來(lái)進(jìn)行軟件項(xiàng)目工作量的估算。
COCOMO模型通過(guò)軟件規(guī)模和多個(gè)成本驅(qū)動(dòng)因子來(lái)調(diào)整軟件項(xiàng)目工作量。
3:調(diào)整因子不同
功能點(diǎn)方法在進(jìn)行軟件項(xiàng)目工作量計(jì)算時(shí),根據(jù)項(xiàng)目的實(shí)際情況,從計(jì)數(shù)時(shí)機(jī)、質(zhì)量特性、完整性級(jí)別和開發(fā)因素等系統(tǒng)特征出發(fā),進(jìn)行軟件規(guī)模和工作量的調(diào)整。
COCOMO模型在進(jìn)行軟件項(xiàng)目工作量計(jì)算時(shí),主要根據(jù)不同的項(xiàng)目類型,采取不同的計(jì)算模型,并根據(jù)產(chǎn)品、平臺(tái)、人員和項(xiàng)目等多個(gè)成本驅(qū)動(dòng)因子的參數(shù)取值進(jìn)行工作量調(diào)整。
5 分析結(jié)論
1:COCOMO模型估算的基礎(chǔ)是代碼行,是從開發(fā)視角進(jìn)行軟件規(guī)模、工作量、進(jìn)度、成本費(fèi)用的估算方法。NESMA功能點(diǎn)方法是從用戶視角進(jìn)行估算的方法。估算視角不同,應(yīng)用場(chǎng)景不同。
2:基于NESMA功能點(diǎn)方法估算軟件規(guī)模、工作量和成本費(fèi)用的模型中各個(gè)參數(shù)有國(guó)標(biāo)、聯(lián)盟團(tuán)標(biāo)和行業(yè)基準(zhǔn)數(shù)據(jù)支撐,相比之下COCOMO模型各個(gè)參數(shù)的選取有一定主觀因素。故COCOMO模型在組織內(nèi)橫向?qū)?biāo)、同業(yè)對(duì)標(biāo)、行業(yè)對(duì)標(biāo)方面不如基于NESMA功能點(diǎn)方法的估算。
3:COCOMO模型估算過(guò)程簡(jiǎn)單,經(jīng)簡(jiǎn)單培訓(xùn)后就可以開展估算,功能點(diǎn)方法較為復(fù)雜,需經(jīng)過(guò)專業(yè)培訓(xùn)后才可開展估算。
綜上所述,COCOMO模型適用于開發(fā)團(tuán)隊(duì)估算自身項(xiàng)目的工作量、進(jìn)度。基于NESMA功能點(diǎn)方法的估算模型適用于組織內(nèi)軟件項(xiàng)目管理、對(duì)外招投標(biāo)等場(chǎng)景。
6 參考文獻(xiàn)
- Barry Boehm著,李師賢譯.軟件成本估算 COCOMO II模型方法[M].北京:機(jī)械工業(yè)出版社,2005
- 甘寅.基于COCOMO_Ⅱ模型的FG公司APP項(xiàng)目成本管理研究[D].上海:東華大學(xué),2021
- 雷楊.COCOMO_Ⅱ改進(jìn)模型的軟件成本估算方法研究與實(shí)現(xiàn)[D].江蘇:南京理工大學(xué),2020
- 田力軍.COCOMO模型在噴氣燃料系統(tǒng)測(cè)試項(xiàng)目估算中應(yīng)用[J].艦船電子工程.2019
- 陳廷斌,侯麗,翁競(jìng)雄.基于COCOMO_Ⅱ模型的軟件項(xiàng)目成本估算[J].價(jià)值工程,2018
- 杜海鳳.基于COCOMO模型的軟件定價(jià)方法研究[D].北京:北京交通大學(xué),2012
- Barry Boehm. Software Engineering Economics [M].Prentice-Hall,1981