簡介
構造性成本模型最初發表於1981年巴里·勃姆《軟體工程經濟學》一書中,做為一種在軟體項中估算工作量、成本以及時間表的模型。它基於對TRW飛機製造公司的63個項目的研究。巴里·勃姆於1981年在該公司擔任軟體研究與技術總監。這項研究中的項目所包含的代碼量從2000行到10000行,包含的程式語言從彙編語言到PL/I。這些項目採用瀑布模型進行軟體開發,這是在1981年時主流的軟體開發模式。通常把上述模型引用為“COCOMO 81”。1997年,“COCOMO II”開始研發,並最終於2001年發表於《軟體成本估算:COCOMO Ⅱ模型方法》一書中。COCOMO II是COCOMO 81的繼承者,並且更適用於對現代軟體開發項目進行估算。它為現代軟體開發流程提供了更多支持,並提供了一個更新了的資料庫。對於新模型的需求來源於軟體開發技術從基於大型計算機和整晚的批處理到桌面開發、代碼重用以及利用即有軟體模組的改變。
模型結構
COCOMO模型分為套用組合模型、早期設計模型、後體系結構模型三個子模型,分別採用不同的規模估算方法、成本因子及套用於不同的估算階段:
套用組合模型:它是基於對象點來進行軟體項目工作量的估算,針對採用集成化計算機輔助軟體工程環境進組件組裝式快速套用開發的項目,主要用於項目規劃階段。
早期設計模型:它是基於功能點或可用代碼行以及 5 個規模指數因子、7個工作量乘數因子來進行軟體項目工作量的估算,針對在項目開始後的一個階段或者螺旋周期探索體系結構的可供選擇方案或增量開發測量,主要用於信息還不足以支持詳細的細粒度估算階段。
後體系結構模型:它是基於原始碼行和/或功能點以及 5 個規模指數因子、17 個工作量乘數因子來進行軟體項目工作量的估算,發生在確定好軟體體系結構之後,主要用於完成頂層設計和獲取詳細項目信息階段 。
COCOMO 模型具有估算精確、易於使用的特點。在該模型中使用的基本量有以下幾個: (1)DSI( 源指令條數 ) ,定義為代碼行數,包括除注釋行以外的全部代碼。若一行有兩個語句,則算做一條指令。(2)MM( 度量單位為人月 ) 表示開發工作量。(3)TDEV( 度量單位為月 ) 表示開發進度,由工作量決定。(4)COCOMO 模型重點考慮 15 種影響軟體工作量的因素,並通過定義乘法因子,從而準確、合理地估算軟體的工作量。
背景
知識經濟、資訊時代的到來使得計算機軟體業迅猛發展,軟體投入增加的同時,風險也在加大。隨著軟體成本的提高和人們對軟體的依賴性的增強,人們越來越難以接受軟體項目開發的失敗。對軟體開發實施有效治理是決定軟體產業發展的至關重要的因素。成本治理是軟體項目治理的一個主要內容,就發展來看,成本治理是軟體項目治理中一個比較薄弱的方面,而成本預算又是有效成本治理的關鍵環節。許多軟體項目由於成本預算不準確,導致軟體開發進度和質量受到嚴重影響以及資金的嚴重浪費,估算錯誤已被列入軟體項目失敗的四大原因之一。因此,精確而有效的軟體成本估算是進行有效的軟體治理的一個必不可少的組成部分。
開發初期,軟體人員對項目的整體情況知之甚少,且由於客戶的需求不斷變化,使得工作內容和工作量不斷變化造成初期的估算極為粗糙,精確性相當低。隨著軟體項目開發的逐步深入,軟體人員需要更為具體的估算信息來對軟體開發過程進行控制,以保證項目的開發能按進度順利進行,這就希望有比較系統而成熟的軟體成本估算方法,並希望有一個統一的量化體系來進行軟體成本的估算。隨著軟體開發技術的發展,軟體成本在計算機總成本中的影響越來越大,它直接影響到投資者的決策和軟體項目的開發,成熟的成本估算方案就成為必不可少的關鍵。
國外已開發國家在軟體估算上比國內要成熟得多,有很多先進方法和一些專業的估算輔助工具。國內大多數項目的軟體成本估算僅依靠經驗、產能相關(capacity related)和價格決策 (Price-to-win)的方法,這對關心過程改進的軟體企業來說遠遠不夠的。
基本模型
基本COCOMO是一種靜態的單值模型,它使用以每千原始碼行數(KLoC)來度量的程式大小來計算軟體開發的工作量(及成本)。COCOMO可以套用於三種不同的軟體項目:
有機項目 - 相對較小、較簡單的軟體項目,由較小的有經驗的團隊來完成,需求較少並且沒有過份嚴格的限定。
中度分離項目 - 指中等規模(大小及複雜度)的軟體項目,由不同經驗水平的人組成的團隊來完成,需求中即有嚴格的部分也有不太嚴格的部分。
嵌入式項目 - 指軟體項目必須依賴於一套緊湊的硬體、軟體以及符合操作限制
基本COCOMO的等式如下:
E=ab(KLOC)bb
D=cb(E)db
P=E/D
其中E是用“人月”來計算的工作量,D是指累積的開發時間(月),KLOC是指對最終發布的代碼行數的估計(千行代碼),P指需要的人數。其中的一些係數 ab,bb, cb和db如下表所示:
基本COCOMO適用於快速、早期地粗略估算軟體成本,但它沒有考慮如不同的硬體條件、人員素質及經驗、對現代工具與技術的使用,等其它會對軟體成本有深遠影響的項目屬性,所以它的準確程度有限。