OCOMO 模型 – 軟件工程

?

建設(shè)性成本模型 (COCOMO) 是一種軟件成本估算模型,可幫助預(yù)測軟件開發(fā)項目所需的工作量、成本和進度。COCOMO 由 Barry Boehm 于 1981 年開發(fā),使用基于軟件項目規(guī)模的數(shù)學(xué)公式,通常以代碼行 (LOC) 為單位。

什么是 COCOMO 模型?

COCOMO 模型是軟件項目的程序成本估算模型,通常用作可靠地預(yù)測與項目相關(guān)的各種參數(shù)(如規(guī)模、工作量、成本、時間和質(zhì)量)的過程。它由 Barry Boehm 于 1981 年提出,基于對 63 個項目的研究,這使其成為記錄最齊全的模型之一。

定義任何軟件產(chǎn)品質(zhì)量的關(guān)鍵參數(shù)(也是 COCOMO 的結(jié)果)主要是工作量和進度:

?

  1. 工作量:完成任務(wù)所需的人工量。它以人月為單位進行測量。
  2. 時間表: 這只是意味著完成工作所需的時間,當然,這與投入的努力成正比。它以時間單位(例如周和月)進行測量。

COCOMO 模型中的項目類型

在 COCOMO 模型中,軟件項目根據(jù)其復(fù)雜性、大小和開發(fā)環(huán)境分為三種類型。這些類型是:

  1. 有機: 如果所需的團隊規(guī)模足夠小,問題得到充分理解并且過去已經(jīng)解決,并且團隊成員對問題有名義上的經(jīng)驗,則稱軟件項目為有機類型。
  2. 半獨立式:如果團隊規(guī)模、經(jīng)驗和各種編程環(huán)境的知識等重要特征介于有機和嵌入式之間,則稱軟件項目為半獨立式。與有機項目相比,歸類為半獨立式的項目相對不太熟悉且難以開發(fā),并且需要更多的經(jīng)驗、更好的指導(dǎo)和創(chuàng)造力。例如:編譯器或不同的嵌入式系統(tǒng)可以被認為是 Semi-Detached 類型。
  3. 嵌入式:需要最高級別復(fù)雜性、創(chuàng)造力和經(jīng)驗要求的軟件項目屬于此類別。這種軟件需要比其他兩種模型更大的團隊規(guī)模,而且開發(fā)人員需要有足夠的經(jīng)驗和創(chuàng)造力來開發(fā)這種復(fù)雜的模型。

COCOMO 模型中這三種類型的項目比較

方面

有機

半獨立式

嵌入式

項目規(guī)模

2 至 50 KLOC

50-300 千洛

300 及以上 KLOC

復(fù)雜性

中等

團隊經(jīng)驗

經(jīng)驗豐富

一些有經(jīng)驗的員工和沒有經(jīng)驗的員工

混合經(jīng)驗,包括專家

環(huán)境

靈活、限制較少

比較靈活,適度的約束

高度嚴謹、嚴格要求

工作量方程

E = 2.4“(400)1.05

E = 3.0“(400)1.12

E = 3.6“(400)1.20

簡單的工資系統(tǒng)

新系統(tǒng)與現(xiàn)有系統(tǒng)的接口

飛行控制軟件

COCOMO 模型的詳細結(jié)構(gòu)

詳細的 COCOMO 結(jié)合了中間版本的所有特征,并評估了成本驅(qū)動因素對軟件工程過程每個步驟的影響。 詳細模型對每個成本驅(qū)動因素屬性使用不同的努力乘數(shù)。在詳細的 COCOMO 中,將整個軟件分為不同的模塊,然后我們在不同的模塊中應(yīng)用 COCOMO 來估算工作量,然后對工作量進行匯總。

詳細的 COCOMO 的六個階段是:

Cocomo 模型?

OCOMO 模型 – 軟件工程的圖2 編輯

COCOMO 模型的階段

  1. 規(guī)劃和要求:此初始階段涉及定義項目的范圍、目標和約束。它包括制定概述時間表、資源和里程碑的項目計劃
  2. 系統(tǒng)設(shè)計: : 在這個階段,創(chuàng)建軟件系統(tǒng)的高級架構(gòu)。這包括定義系統(tǒng)的整體結(jié)構(gòu),包括主要組件、它們的交互以及它們之間的數(shù)據(jù)流
  3. 詳細設(shè)計:此階段涉及為系統(tǒng)的每個組件創(chuàng)建詳細規(guī)范。它將系統(tǒng)設(shè)計分解為每個模塊的詳細描述,包括數(shù)據(jù)結(jié)構(gòu)、算法和接口。
  4. 模塊代碼和測試:這涉及為詳細設(shè)計中定義的每個模塊或組件編寫實際源代碼。它包括對功能進行編碼、實現(xiàn)算法和開發(fā)接口。
  5. 集成和測試:此階段涉及將各個模塊組合成一個完整的系統(tǒng),并確保它們按預(yù)期協(xié)同工作。
  6. 成本建設(shè)模型: 建設(shè)性成本模型 (COCOMO) 是一種廣泛使用的方法,用于估算軟件開發(fā)項目所需的成本和工作量。

    ?

已經(jīng)提出了不同的 COCOMO 模型,以根據(jù)所需的準確性和正確性來預(yù)測不同級別的成本估算。所有這些模型都可以應(yīng)用于各種項目,這些項目的特性決定了后續(xù)計算中使用的常數(shù)值。下面提到了不同系統(tǒng)類型的這些特性。Boehm 對有機、半獨立和嵌入式系統(tǒng)的定義:

COCOMO 模型的重要性

  1. 成本估算:為了幫助進行資源規(guī)劃和項目預(yù)算,COCOMO 提供了一種有條不紊的軟件開發(fā)成本估算方法。
    資源管理:通過考慮團隊經(jīng)驗、項目規(guī)模和復(fù)雜性,該模型有助于有效分配資源。
    ?
  2. 項目規(guī)劃: COCOMO 協(xié)助制定實用的項目計劃,其中包括可實現(xiàn)的目標、截止日期和基準。
  3. 風(fēng)險管理:在開發(fā)過程的早期,COCOMO 通過包含風(fēng)險元素來協(xié)助識別和減輕潛在危害。
  4. 支持決策:在項目規(guī)劃期間,該模型為范圍、優(yōu)先級和資源分配的選擇提供了定量基礎(chǔ)。
  5. 基準測試:為了根據(jù)行業(yè)標準比較和評估各種軟件開發(fā)項目,COCOMO 提供了一個基準測試。
  6. 資源優(yōu)化:該模型有助于最大限度地利用資源,從而提高生產(chǎn)率并降低成本。

COCOMO 模型的類型

COCOMO 模型有三種類型:

  • 基本 COCOMO 模型
  • 中級 COCOMO 模型
  • 詳細的 COCOMO 模型

1. COCOMO 基本模型

Basic COCOMO 模型是估算軟件開發(fā)項目所需工作量的一種簡單方法。它使用一個簡單的數(shù)學(xué)公式,根據(jù)項目的大小預(yù)測需要多少人月的工作,以數(shù)千行代碼 (KLOC) 為單位。

它使用以下表達式估計開發(fā)所需的工作量和時間:

E = a*(KLOC)b下午

Tdev = c*(E)d

所需人員 = 工作量 / 時間

哪里

E 表示以個人-月為單位應(yīng)用的工作量

KLOC 是軟件產(chǎn)品的估計大小,以 Kilo 行代碼表示

Tdev 是以月為單位的開發(fā)時間

a、b、c 是由下表中給出的軟件項目類別確定的常數(shù)。

上述公式用于基本 COCOMO 模型的成本估算,也用于后續(xù)模型。對于不同類別的軟件項目,基本模型的常量值 a、b、c 和 d 為:

軟件項目 一個 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
  1. 工作量以 Person-Months 為單位衡量,從公式中可以明顯看出,它依賴于 Kilo-Lines 代碼。開發(fā)時間以月為單位。
  2. 這些公式在基本模型計算中是這樣使用的,因為沒有過多考慮可靠性和專業(yè)知識等不同因素,因此估計是粗略的。

基本 COCOMO 模型示例

假設(shè)一個 Basic 項目估計為 400 KLOC(千字節(jié)代碼)。計算三種開發(fā)模式中每一種的工作量和時間。下表中提供了所有常量值:

溶液

從上表中,我們?nèi)〕?shù) a、b、c 和 d 的值。

  1. 對于有機模式,
    • 努力 = 2.4 × (400)1.05≈ 1295 人月。
    • 開發(fā)時間 = 2.5 × (1295)0.38≈ 38 個月。
  2. 對于半分離模式,
    • 工作量 = 3 × (400)1.12≈ 2462 人月。
    • 開發(fā)時間 = 2.5 × (2462)0.35≈ 38 個月。
  3. 對于 Embedded 模式,
    • 工作量 = 3.6 × (400)1.20≈ 4772 人月。
    • 開發(fā)時間 = 2.5 × (4772)0.32≈ 38 個月。

以下是 Basic COCOMO Model 的程序:

C++爪哇島蟒C#JavaScript (英語)
// Javascript program to implement basic COCOMO

// Function to calculate parameters of Basic COCOMO
function calculate(table,n,mode,size)
{
    var effort,time,staff,model;

    // Check the mode according to size

    if (size >= 2 && size <= 50)
        model = 0; // organic

    else if (size > 50 && size <= 300)
        model = 1; // semi-detached

    else if (size > 300)
        model = 2; // embedded
    

    console.log("The mode is ",mode[model]);
    
    // Calculate Effort
    effort = table[model][0] * (size ** table[model][1]);

    // Calculate Time
    time = table[model][2] * (effort ** table[model][3]);

    // Calculate Persons Required
    staff = effort / time;

    console.log("Effort = ",effort," Person-Month");
    console.log("Development Time = ",time," Months");
    console.log("Average Staff Required = ",Math.round(staff)," Persons");
}


var table = [[2.4,1.05,2.5,0.38],[3.0,1.12,2.5,0.35],[3.6,1.20,2.5,0.32]]
var mode = ["Organic","Semi-Detached","Embedded"]
var size = 4;
calculate(table, 3, mode, size);

// This code is contributed by satwiksuman.

輸出
The mode is Organic
Effort = 10.289 Person-Month
Development Time = 6.06237 Months
Average Staff Required = 2 Persons

2. 中級 COCOMO 模型

基本的 COCOMO 模型假設(shè)工作量只是代碼行數(shù)和根據(jù)不同軟件系統(tǒng)評估的一些常數(shù)的函數(shù)。然而,在現(xiàn)實中,沒有系統(tǒng)的工作量和時間表可以僅根據(jù) Lines of Code 來計算。為此,還需要各種其他因素,例如可靠性、經(jīng)驗和能力。這些因素被稱為成本驅(qū)動因素(乘數(shù)),中間模型利用 15 個這樣的驅(qū)動因素進行成本估算。

成本驅(qū)動因素的分類及其屬性:

成本驅(qū)動因素分為四類

產(chǎn)品特性:

  • 所需的軟件可靠性范圍
  • 應(yīng)用程序數(shù)據(jù)庫的大小
  • 產(chǎn)品的復(fù)雜性

硬件屬性

  • 運行時性能約束
  • 內(nèi)存約束
  • 虛擬機環(huán)境的波動性
  • 所需周轉(zhuǎn)時間

個人屬性

  • 分析師能力
  • 軟件工程能力
  • 應(yīng)用經(jīng)驗
  • 虛擬機體驗
  • 編程語言經(jīng)驗

項目屬性

  • 軟件工具的使用
    軟件工程方法的應(yīng)用
    所需的開發(fā)時間表
    ?

這 15 個這樣的屬性中的每一個都可以按照它們的相對重要性順序,從“非常低”到“特別高”的六分制進行評級。每個屬性都有一個根據(jù)評級固定的努力乘數(shù)。下表代表了成本驅(qū)動因素及其各自的評級:

工作量調(diào)整系數(shù) (EAF) 是通過將與 15 個屬性中的每個屬性關(guān)聯(lián)的工作量乘數(shù)相乘來確定的。

工作量調(diào)整因子 (EAF) 用于增強基本 COCOMO 模型在以下表達式中生成的估計值:

中級 COCOMO 模型方程:

E = a*(KLOC)b* 電弧爐 PM

Tdev = c*(E)d

哪里

  • E 表示以個人-月為單位應(yīng)用的工作量
  • KLOC 是軟件產(chǎn)品的估計大小,以 Kilo 行代碼表示
  • EAF 是工作量調(diào)整因子 (EAF) 是一個乘數(shù),用于優(yōu)化從基本 COCOMO 模型獲得的工作量估計。
  • Tdev 是以月為單位的開發(fā)時間
  • a、b、c 是由下表中給出的軟件項目類別確定的常數(shù)。

對于不同類別的軟件項目,基本模型的常量值 a、b、c 和 d 為:

軟件項目 一個 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

3. 詳細的 COCOMO 模型

詳細的 COCOMO 超越了基礎(chǔ)和中級 COCOMO,更深入地研究了項目特定的因素。它考慮了更廣泛的參數(shù),例如團隊經(jīng)驗、開發(fā)實踐和軟件復(fù)雜性。通過更詳細地分析這些因素,Detailed COCOMO 為軟件項目提供了高度準確的工作量、時間和成本估算。這就像放大項目的獨特特征,以更清楚地了解成功完成它需要什么。

案例研究和示例

  1. NASA 航天飛機軟件開發(fā):NASA 估計了使用 COCOMO 模型為航天飛機計劃構(gòu)建軟件所需的時間和金錢。NASA 能夠通過考慮包括項目規(guī)模、復(fù)雜性和團隊經(jīng)驗在內(nèi)的變量,在資源分配和項目調(diào)度方面做出明智的決策。
  2. 大企業(yè)軟件開發(fā):COCOMO 模型已被大企業(yè)廣泛用于預(yù)測構(gòu)建復(fù)雜的商業(yè)軟件系統(tǒng)所需的時間和金錢。通過使用 COCOMO 的估算方法,這些組織能夠更好地為其軟件項目規(guī)劃和分配資源。
  3. 商業(yè)軟件產(chǎn)品:事實證明,COCOMO 方法對于創(chuàng)造商業(yè)產(chǎn)品的軟件公司也是有利的。這些企業(yè)能夠通過精確計算構(gòu)建新軟件產(chǎn)品或功能的時間和費用來決定定價、上市時間和資源分配。
  4. 學(xué)術(shù)研究計劃:為了估計創(chuàng)建軟件原型或進行實驗研究所需的時間和費用,學(xué)術(shù)研究計劃采用了 COCOMO。研究人員能夠使用 COCOMO 的估算方法更好地規(guī)劃他們的項目和分配資源。

COCOMO 模型的優(yōu)勢

  1. 系統(tǒng)成本估算:提供一種系統(tǒng)化的方法來估算軟件項目的成本和工作量。
  2. 幫助估算成本和工作量:這可用于估算軟件項目在開發(fā)過程的不同階段的成本和工作量。
  3. 有助于處理高影響因子:幫助確定對軟件項目的成本和工作量影響最大的因素。
  4. 幫助評估項目的可行性: 這可用于通過估計完成軟件項目所需的成本和工作量來評估軟件項目的可行性。

COCOMO 模型的缺點

  1. 假設(shè)項目大小為主要因素:假設(shè)軟件的大小是決定軟件項目成本和工作量的主要因素,但情況可能并非總是如此。
  2. 不計算開發(fā)團隊的特定特征:不考慮開發(fā)團隊的具體特征,這些特征可能會對軟件項目的成本和工作量產(chǎn)生重大影響。
  3. 不夠精確的成本和工作量估計:這并不能提供對軟件項目的成本和工作量的精確估計,因為它是基于假設(shè)和平均值的。

使用 COCOMO 的最佳實踐

  1. 識別支撐模型的假設(shè): 熟悉 COCOMO 模型的基本假設(shè),包括它對團隊體驗、規(guī)模和復(fù)雜性的強調(diào)。要知道,盡管 COCOMO 提供了有用的近似值,但無法準確預(yù)測項目結(jié)果。
  2. 自定義模型:根據(jù)您項目的獨特要求調(diào)整 COCOMO 的輸入和參數(shù),包括組織能力、開發(fā)流程和行業(yè)標準。通過這樣做,您可以確信 COCOMO 生成的估計值更精確且更適合您的情況。
  3. 利用歷史數(shù)據(jù): 為了驗證 COCOMO 輸入并改進估算參數(shù),請收集和檢查以前項目的歷史數(shù)據(jù)。由于真實數(shù)據(jù)考慮了項目特定的方面和經(jīng)驗教訓(xùn),因此 COCOMO 預(yù)測變得更加準確和可靠。
  4. 驗證和確認:將 COCOMO 估算與實際項目結(jié)果進行比較,并根據(jù)反饋和發(fā)現(xiàn)的經(jīng)驗教訓(xùn)對估算程序進行必要的調(diào)整。審查已完成的項目以發(fā)現(xiàn)錯誤并提高未來項目估算的準確性。
  5. 結(jié)合其他技術(shù):為了減少任何一種方法中的偏差或不準確之處并對結(jié)果進行三角測量,請將 COCOMO 估計添加到其他估計技術(shù)中,包括專家判斷、相似估計和自下而上估計。

關(guān)于 COCOMO 模型的重要問題

1. 一家公司需要為其一項最新發(fā)明開發(fā)數(shù)字信號處理軟件。該軟件預(yù)計有 20000 行代碼。該公司需要確定使用基本 COCOMO 模型開發(fā)此軟件所需的人力(以月為單位)。對于嵌入式系統(tǒng)上的軟件開發(fā),該模型的乘法因子為 2.2,而冪因子為 1.50。以個人月為單位的估計工作量是多少?

(一) 196.77

(二) 206.56

(C) 199.56

(D) 210.68

解決方案:正確答案是 (A)。

2. 基本 COCOMO 中有機軟件的軟件開發(fā)工作量估計為 

(A) E = 2.0(千塊)1.05下午

(B) E = 3.4(千塊)1.06下午

(C) E = 2.4(千塊)1.05下午

(D) E = 2.4(千塊)1.07下午

解決方案:正確答案是 (C)。

結(jié)論

COCOMO 模型提供了一種結(jié)構(gòu)化的方法,可以根據(jù)項目規(guī)模和各種影響因素來估計軟件開發(fā)所需的時間、精力和成本。它可以幫助項目經(jīng)理和開發(fā)人員有效地規(guī)劃資源并設(shè)定切合實際的時間表和預(yù)算,從而提高整體項目管理和成功率。

關(guān)于 COCOMO Model 的常見問題 - 常見問題

1. COCOMO 有多少種型號?

COCOMO 模型有三種類型:

  • 基本 COCOMO 模型
  • 中級 COCOMO 模型
  • 詳細的 COCOMO 模型

2. COCOMO Model 代表什么?

COCOMO 模型代表建設(shè)性成本模型。

3. 為什么使用 COCOMO II?

COCOMO II 對于非順序、快速且可重用的軟件開發(fā)非常有用。它給出了工作和時間表的估計。它提供的估計值在最可能估計值的一個標準差內(nèi)。

?

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

1