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