簡介
COCOMO模型——常見的軟體規模估算方法。代碼行分析方法作為一種度量估計方法,在20世紀80和90年代得到非常廣泛的發展,在業界開發中有許多種估算 工作量和進度的參數模型,其中最著名的就是COCOMO模型,它的最新版本是COCOMO II模型。
在COCOMO模型中,工作量調整因子(Effort Adjustment Factor, EAF)代表多個參數的綜合效果,這些參數使得項目可以特徵化和根據COCOMO資料庫中的項目規格化。每個參數可以定為很低,低,正常,高,很高。每個參數都作為乘數,其值通常在0.5到1.5之間,這些參數的乘積作為成本方程中的係數。
(概述內容來源:)
模型
COCOMO用3個不同層次的模型來反映不同程度的複雜性,他們分別為:
● 基本模型 (Basic Model)。 是一個靜態單變數模型,它用一個以已估算出來的原始碼行數 (LOC) 為自變數的函式來計算軟體開發工作量。
● 中間模型 (Intermediate Model)。 則在用 LOC 為自變數的函式計算軟體開發工作量的基礎上,再用涉及產品、硬體、人員、項目等方面屬性的影響因素來調整工作量的估算。
● 詳細模型 (Detailed Model) 包括中間 COCOMO 模型的所有特性,但用上述各種影響因素調整工作量估算時,還要考慮對軟體工程過程中分析、設計等各步驟的影響。
同時根據不同套用軟體的不同套用領域,COCOMO模型劃分為如下3種軟體套用開發模式:
● 組織模式(Organic Mode)。這種套用開發模式的主要特點是在一個熟悉穩定的環境種進行項目開發,該項目與最近開發的 其他項目有很多相似點,項目相對較小,而且並不需要許多創新。
● 嵌入式套用開發模式 (Embedded Mode)。在這種套用開發模式種,項目受到接口要求的限制。接口對整個套用的開發要求非常高,而且要求項目有很大的創新,例如開發一種全新的遊戲。
● 中間套用開發模式 (Semidetached Mode)。這時介於組織模式和嵌入式套用開發模式之間的類型。
特點
COCOMO 模型具有估算精確、易於使用的特點。在該模型中使用的基本量有以下幾個: (1)DSI( 源指令條數 ) ,定義為代碼行數,包括除注釋行以外的全部代碼。若一行有兩個語句,則算做一條指令。 (2)MM( 度量單位為人月 ) 表示開發工作量。 (3)TDEV( 度量單位為月 ) 表示開發進度,由工作量決定。 (4)COCOMO 模型重點考慮 15 種影響軟體工作量的因素,並通過定義乘法因子,從而準確、合理地估算軟體的工作量。
算法
通過基礎COCOMO的計算可以得出每個開發者需要投入的時間,整個項目的開發時間以及需要的人數,所需要的輸入是軟體的大小(以代碼的行數(千行)為單位,記做SLOC)
針對不同三種不同的工程結構,基礎cocomo提供不同的係數:
•基礎工程 - 小組擁有經驗的開發人員開發需求定義不是十分嚴格的項目
•半獨立項目 - 擁有不同程度的經驗的中等規模的開發組開發部分需求是嚴格定義的,部分需求不是十分嚴格定義的項目
•嵌入式項目 - 開發擁有著嚴格的約束的項目,在軟硬體等需求方面基礎工程和半獨立項目的組合
基礎COCOMO等式:
需要的工作 (E) = ab(KLOC)^bb [ 單位是人員×月 ]
開發時間 (D) = cb(Effort Applied)^db [單位是月]
需要的人數 (P) = E/D [單位是個]
其中KLOC是以千行代碼為單位的軟體大小,其他係數如: ab, bb, cb,db 如下圖所示
工程類型 | ab | bb | cb | db |
基礎項目 | 2.4 | 1.05 | 2.5 | 0.38 |
半獨立項目 | 3.0 | 1.12 | 2.5 | 0.35 |
嵌入式項目 | 3.6 | 1.20 | 2.5 | 0.32 |
缺點
但是COCOMO也存在一些很嚴重的缺陷,例如分析時的輸入時優先的,不能處理意外的環境變換,得到的數據往往不能直接使用,需要校準,只能得到過去的情況總結,對於將來的情況無法進行校準等。