(本文由北京中基數(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
 
       在中級(jí)和詳細(xì)COCOMO模型中,各項(xiàng)參數(shù)取值如表2:

表 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
 
       在基本COCOMO模型中,可以快速簡(jiǎn)略地估算出軟件開發(fā)成本和時(shí)間等信息,但其未考慮到技術(shù)、環(huán)境和人為因素等變化。因此,在中級(jí)和詳細(xì)COCOMO模型中引入了4大類15個(gè)子類的成本驅(qū)動(dòng)因素,并將它們的乘積作為工作量調(diào)整因子。成本驅(qū)動(dòng)因素分類及取值見表3。

表 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 主要變化

       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)
  1. Barry Boehm著,李師賢譯.軟件成本估算 COCOMO II模型方法[M].北京:機(jī)械工業(yè)出版社,2005
  2. 甘寅.基于COCOMO_Ⅱ模型的FG公司APP項(xiàng)目成本管理研究[D].上海:東華大學(xué),2021
  3. 雷楊.COCOMO_Ⅱ改進(jìn)模型的軟件成本估算方法研究與實(shí)現(xiàn)[D].江蘇:南京理工大學(xué),2020
  4. 田力軍.COCOMO模型在噴氣燃料系統(tǒng)測(cè)試項(xiàng)目估算中應(yīng)用[J].艦船電子工程.2019
  5. 陳廷斌,侯麗,翁競(jìng)雄.基于COCOMO_Ⅱ模型的軟件項(xiàng)目成本估算[J].價(jià)值工程,2018
  6. 杜海鳳.基于COCOMO模型的軟件定價(jià)方法研究[D].北京:北京交通大學(xué),2012
  7. Barry Boehm. Software Engineering Economics [M].Prentice-Hall,1981