COCOMO(COnstructive COst MOdel)は、ソフトウェア開発における工数や期間の見積もり手法として、長年にわたって広く用いられてきた古典的なモデルである。
1981年にTRW社のバリー・ボーム氏によって提唱され、過去のソフトウェア開発プロジェクトのデータに基づいて構築された統計モデルである。
COCOMOの3つのモデル
COCOMOは、プロジェクト規模や目的に合わせて選択できる3つのモデルから構成される。
基本モデル(Basic COCOMO)
最もシンプルなモデルで、プログラム規模(KLOC:千行コード)と開発者の能力を主な入力情報として、開発工数(人月)を算出する。以下の式で表される。
PM = a * (KLOC)^b
- PM:開発工数(人月)
- a、b:プロジェクト特性に基づいて決定される定数
基本モデルは、小規模なプロジェクトや、詳細な情報が少ないプロジェクトに適している。
中間モデル(Intermediate COCOMO)
基本モデルに15個のコストドライバと呼ばれる補正係数を導入し、開発規模、開発環境、開発チームの能力などの影響を考慮したより詳細な見積もりを行う。以下の式で表される。
PM = EAF * (KLOC)^b * C
- EAF:規模調整係数(1.4~0.7)
- b:開発モードに基づいて決定される定数(1.05~1.20)
- C:コストドライバの積(0.63~2.94)
中間モデルは、中規模なプロジェクトや、ある程度の情報があるプロジェクトに適している。
詳細モデル(Detailed COCOMO)
さらに詳細な見積もりを行うためのモデルで、ソフトウェアの機能、品質、制約条件などの要素を考慮する。以下の式で表される。
PM = (a * (KLOC)^b) * (EM * CM)
- EM:努力乗数(1.0~5.0)
- CM:環境乗数(0.65~1.56)
詳細モデルは、大規模なプロジェクトや、詳細な情報が豊富なプロジェクトに適している。
COCOMOの特徴
客観性
COCOMOは、プログラム言語などに左右されず、客観的な見積もりを可能にする。これは、過去のプロジェクトデータに基づいた統計モデルを採用しているためである。プログラミング言語によって開発効率は異なるものの、COCOMOは開発規模や開発者の能力といった要素を考慮することで、言語の影響を排除し、客観的な見積もりを実現する。
拡張性
COCOMOは、様々なプロジェクト規模や開発環境に対応できるよう、上記3つのモデルが用意されているプロジェクト規模や目的に合わせて、適切なモデルを選択することで、より精度の高い見積もりを行うことができる。
使いやすさ
COCOMOは、比較的シンプルな計算式で、専門知識がなくても利用しやすい。基本モデルは、プログラム規模と開発者の能力のみを入力すれば、開発工数を算出できる。中間モデルや詳細モデルは、より詳細な情報が必要となるが、それでも計算式自体は複雑ではない。
その他
COCOMOは、長年にわたって多くのプロジェクトで活用されてきた実績のある見積もり手法である。また、無料で利用できるツールも存在する。
COCOMOの適用範囲
COCOMOは、以下のいずれかに該当するプロジェクトに適している。
新規開発プロジェクト
過去のプロジェクトデータが少ない場合でも、プログラム規模と開発者の能力に基づいて、客観的な見積もりを行うことができる。
類似プロジェクトのデータが少ないプロジェクト
過去のプロジェクトデータが少ない場合でも、COCOMOのモデルを活用することで、類似プロジェクトの見積もりを行うための参考情報を得ることができる。
客観的な見積もりが必要なプロジェクト
経営層や顧客に対して、客観的な見積もりを提示する必要があるプロジェクトにおいて、COCOMOは有効なツールとなる。
ソフトウェア開発プロジェクト
COCOMOは、ソフトウェア開発プロジェクトに特化したモデルである。そのため、ハードウェア開発やシステム開発など、ソフトウェア以外の要素を含むプロジェクトには適用できない。
その他
-
COCOMOは、以下のようなプロジェクトにも適用できる可能性がある。
- ソフトウェア保守プロジェクト
- ソフトウェア開発プロジェクトの一部
- 教育や研究目的
COCOMOの注意点
COCOMOは、ソフトウェア開発プロジェクトの工数・期間見積もりを行うための有効なツールである。しかし、以下の点に注意する必要がある。
見積もり誤差の可能性
COCOMOは統計モデルに基づいており、過去のプロジェクトデータから算出した平均的な値を元に算出を行う。そのため、個々のプロジェクトの状況によっては、見積もり誤差が発生する可能性がある。
専門知識の必要性
中間モデルや詳細モデルを利用する場合は、開発規模、開発環境、開発チームの能力などの要素を評価するための専門知識が必要となる。
適用範囲
COCOMOは、ソフトウェア開発プロジェクトに特化したモデルである。そのため、ハードウェア開発やシステム開発など、ソフトウェア以外の要素を含むプロジェクトには適用できない。
モデルの選択
COCOMOには3つのモデルが存在するが、どのモデルを選択するべきかは、プロジェクト規模や目的に よって異なる。不適切なモデルを選択すると、見積もり誤差が大きくなる可能性がある。
最新情報の確認
COCOMOは1981年に提唱されたモデルであり、その後改良を重ねてきた。そのため、最新の情報に基づいて見積もりを行う必要がある。
COCOMOの活用例
新規ソフトウェア開発プロジェクト
新規ソフトウェア開発プロジェクトでは、COCOMOを用いて、開発に必要な工数やコスト、期間を見積もる。見積もり結果は、プロジェクト計画や予算編成に活用される。
既存ソフトウェアの改修プロジェクト
既存ソフトウェアの改修プロジェクトでは、COCOMOを用いて、改修に必要な工数やコスト、期間を見積もる。見積もり結果は、プロジェクト計画やリスク管理に活用される。
アウトソーシングプロジェクト
アウトソーシングプロジェクトでは、COCOMOを用いて、開発ベンダーの見積もりを検証する。検証結果は、ベンダー選定や契約交渉に活用される。
その他
COCOMOは、ソフトウェア開発の教育や研究にも活用されている。
COCOMOとファンクションポイント法の違い
COCOMOとファンクションポイント法は、ソフトウェア開発プロジェクトの工数・期間見積もりを行うための代表的な手法である。しかし、両者にはいくつかの重要な違いがある。
見積り対象
- COCOMOは、プログラム規模(KLOC:千行コード)に基づいて見積もりを行う。
- ファンクションポイント法は、ソフトウェアが提供する機能に基づいて見積もりを行う。
見積り精度
- COCOMOは、過去のプロジェクトデータに基づいた統計モデルであるため、ある程度の精度が期待できる。
- ファンクションポイント法は、主観的な判断が入り込む余地があるため、見積り誤差が大きくなる可能性がある。
適用範囲
- COCOMOは、ソフトウェア開発プロジェクト全般に適用できる。
- ファンクションポイント法は、業務系システムなど、機能が明確に定義できるプロジェクトに適している。
計算方法
- COCOMOは、比較的シンプルな計算式で、専門知識がなくても利用しやすい。
- ファンクションポイント法は、複雑な計算式であり、専門知識が必要となる。
その他
- COCOMOは、開発規模や開発環境などの要素を考慮できる。
- ファンクションポイント法は、ソフトウェアの品質や制約条件などの要素を考慮できない。
まとめ
COCOMOは、長年にわたって多くのプロジェクトで活用されてきた実績のある見積もり手法である。シンプルなモデルから詳細なモデルまで、プロジェクト規模や目的に合わせて選択できる点が特徴である。注意点も理解した上で、適切に活用することで、ソフトウェア開発プロジェクトの成功確率を高めることができる。