COCOMO
出自 MBA智库百科(https://wiki.mbalib.com/)
COCOMO(Constructive Cost Model; 構造性成本模型)
目錄 |
COCOMO英文全稱為Constructive Cost Model,中文為構造性成本模型,是指由巴裡·勃姆(Barry Boehm)於 1981 年提出的一種精確、易於使用的,基於模型的軟體成本估算方法。從本質上說是一種參數化的項目估算方法,參數建模是把項目的某些特征作為參數,通過建立一個數字模型預測項目成本的回歸分析公式。
COCOMO最初發表於1981年巴裡·勃姆《軟體工程經濟學》一書中,做為一種在軟體項中估算工作量、成本以及時間表的模型。它基於對TRW飛機製造公司的63個項目的研究。巴裡·勃姆於1981年在該公司擔任軟體研究與技術總監。這項研究中的項目所包含的代碼量從2000行到10000行,包含的編程語言從彙編語言到PL/I。這些項目採用瀑布模型進行軟體開發,這是在1981年時主流的軟體開發模式。
通常把上述模型稱作為“COCOMO 81”。1997年,“COCOMO II”開始研發,並最終於2001年發表於《軟體成本估算:COCOMO Ⅱ模型方法》一書中。COCOMO II是COCOMO 81的繼承者,並且更適用於對現代軟體開發項目進行估算。它為現代軟體開發流程提供了更多支持,並提供了一個更新了的資料庫。對於新模型的需求來源於軟體開發技術從基於大型電腦和整晚的批處理到桌面開發、代碼重用以及利用即有軟體模塊的改變。
COCOMO由三個不斷深入和詳細的層次組成。第一層,“基本COCOMO”,適用對軟體開發進行快速、早期地對重要的方面進行粗略的成本估計,但因其缺少不同的項目屬性(“成本驅動者”)的因素,所以準確性有一定的局限性。“中級COCOMO”中考慮進了這些成本驅動者。“詳細COCOMO”加入了對不同軟體開發階段影響的考量。
COCOMO模型中,考慮到開發環境的不同,軟體開發項目的類型可以分為3種:
組織型(organic):相對較小、較簡單的軟體項目。開發人員對開發目標理解比較充分,與軟體系統相關的工作經驗豐富,對軟體的使用環境很熟悉,受硬體的約束較小,程式的規模不是很大(<50000行)。
嵌入型(embedded):要求在緊密聯繫的硬體、軟體和操作的限制條件下運行,通常與某種複雜的硬體設備緊密結合在一起。對介面、數據結構、演算法的要求很高,軟體規模任意。如大而複雜的事務處理系統,大型/超大型操作系統,航天用控制系統,大型指揮系統等。
半獨立型(semidetached):介於上述兩種軟體之間。規模和複雜度都屬於中等或更高。最大可達30萬行。
COCOMO模型按其詳細程度可以分為三級:基本COCOMO模型,中間COCOMO模型,詳細COCOMO模型。
基本COCOMO模型是一個靜態單變數模型,它用一個已估算出來的原代碼行數(LOC)為自變數的經驗函數計算軟體開發工作量。
中級COCOMO模型在基本COCOMO模型的基礎上,再用設計產品、硬體、人員、項目等方面的影響因素調整工作量的估算。
詳細COCOMO模型包括中間COCOMO模型的所有特性,但更進一步考慮了軟體工程中每一步驟(如分析、設計)的影響。
E=aLb
D=cEb
其中:E表示工作量,單位是人月(PM)。
D表示開發時間,單位是月(M)。
L是項目的代碼行估計值,單位是千行代碼。
a,b,c,d是常數,取值如下表所示
對於基本COCOMO模型,通過統計63個歷史項目的歷史數據,得到如下計算公式
總體類型 工作量 進度 組織型 E=10.4×(KLOC)1.05 D=10.5(E)0.38 半獨立型 E=3.0×(KLOC)1.12 D=10.5(E)0.35 嵌入型 E=3.0×(KLOC)1.20 D=10.5(E)0.32
例如:某公司開發一個CAD軟體,源代碼行數為目標代碼行數為33.3KLOC。CAD軟體開發屬於中等規模、半獨立型。
從表中查到
a=3.0,b=1.12。
E=3.0×L1.12
=3.0×33.31.12
=152人月
假設每人每月費用為10000元,則總費用為152萬元。
中級COCOMO對軟體工作量的估算使用了程度大小以及一組“成本驅動者”,包括對產品、硬體、人員及項目屬性的客觀評價。這種擴展包含了四類“成本驅動者”,每個類又有15個屬性,每一個屬性都會得到一個6點的評估,從“非常低”到“非常高”(重要性或大小)。下表中列出了可用的因數值。所有這些因數的乘積的結果就是“工作量調整因數(EAF)”通常這些因數的值是從0.9到1.4。
成本驅動者 評估 非常低 低 正常 高 很高 非常高 產品屬性 軟體可靠性需求 0.75 0.88 1.00 1.15 1.40 應用資料庫的大小 0.94 1.00 1.08 1.16 產品複雜度 0.70 0.85 1.00 1.15 1.30 1.65 硬體屬性 運行時的性能約束 1.00 1.11 1.30 1.66 記憶體約束 1.00 1.06 1.21 1.56 虛擬機穩定性 0.87 1.00 1.15 1.30 回覆時間的需求 0.87 1.00 1.07 1.15 人員屬性 分析能力 1.46 1.19 1.00 0.86 0.71 應用經驗 1.42 1.17 1.00 0.86 0.70 虛擬機的經驗 1.12 1.10 1.00 0.90 編程語言經驗 1.14 1.07 1.00 0.95 項目屬性 採用的軟體工具 1.24 1.10 1.00 0.91 0.82 採用的軟體工程手段 1.24 1.10 1.00 0.91 0.83 虛擬機穩定性 1.23 1.08 1.00 1.04 1.10 回覆時間的需求 0.87 1.00 1.07 1.15
中級COCOMO的計算公式如下:
E=aLb
對於中級COCOMO模型,通過統計63個歷史項目的歷史數據,得到如下計算公式
總體類型 工作量 組織型 E=3.2×(KLOC)1.05 半獨立型 E=3.0×(KLOC)1.12 嵌入型 E=2.8×(KLOC)1.20