2020/03/22

開発工数と開発期間の見積方程式 (COCOMO)

開発規模が大きくなれば、開発工数が大きくなり、開発期間も長くなる。

ソフトウェア・エンジニアでなくても当たり前ですよね。
でも、開発規模が大きくなったとき開発工数がどれくらい大きくなるのか、開発工数が大きくなったとき開発期間がどれくらい長くなるのか、と言うと、ちょっと難しい質問になります。

例えば、開発規模が10倍になったとき、開発工数って単純に10倍でしょうか?
ソフトウェア・エンジニアや開発プロジェクトのプロジェクト・マネージャをやったことがある人は何となく経験があると思いますが、10倍より増えますよね。

あるいは、開発工数が10倍になったとき、要員を10倍に増員して、開発期間を据え置いて欲しいとお客様に言われたら?
無理です、と答えるでしょう。

実は、開発規模、開発工数、開発期間の関係性についての方程式があります。Barry Boehm (バリー・ベーム) という人が1981年に提唱した、COCOMOです。
概算見積を行う際に便利な指標になりますので、紹介したいと思います。

COCOMO の方程式

以下のように定義された、規模、工数、期間の関係を方程式にしたのが COCOMO の方程式です。

$工数 = a \cdot 規模^b$
$期間 = 2.5 \cdot 工数^c$
$規模: 開発対象の規模をプログラム行数で表現したもの (単位: kLoC)$
$工数: 開発にかかる総工数 (単位: 人月)$
$期間: 開発にかかる期間 (単位: 月)$

$a, b, c$ はリスクの度合いに応じて、3パターンが定められています。

低リスク (小規模、高熟練度) 開発

$工数 = 2.4 \cdot 規模^{1.05}$
$期間 = 2.5 \cdot 工数^{0.38}$

中リスク開発

$工数 = 3 \cdot 規模^{1.12}$
$期間 = 2.5 \cdot 工数^{0.35}$

高リスク (大規模、強制約) 開発

$工数 = 3.6 \cdot 規模^{1.2}$
$期間 = 2.5 \cdot 工数^{0.32}$

COCOMO の方程式の解釈

この方程式からは、以下のようなことが読み取れます。

規模が大きくなると、工数は正比例より少し強く増える

工数の式を見ると、規模に対して1より少し大きい指数 (1.05〜1.2) が付いています。指数が1なら正比例 (規模が10倍になったら工数も10倍) ですが、この方程式では11.2〜15.8倍に増大することを示しています。グラフにすると、以下のようになります。


指数が1に近いのでほぼ直線に見えますが、良く見ると少し上振れしています。

工数が大きくなると当然期間も延びるが、低リスクの方が顕著

工数に対して、指数 0.32〜0.38 で期間も長くなります。0.33…… が立方根ですから、概ね立方根だと覚えておくと良いでしょう。工数が10倍になると、期間は2.1〜2.4倍という関係です。
こちらもグラフにしてみました。

高リスクプロジェクトよりも低リスクプロジェクトの方が、工数に対して期間の延びが強いのは、一見奇妙に思えるかもしれません。
これは、低リスクプロジェクトでは人員を投入して分業する余地が少ないことを示しています。こう考えると納得ですよね。
ちなみにこれは同一工数で見たときの話です。高リスクプロジェクトは規模に対して工数が大きいですから、同一規模で見ると、話は変わってきます。

規模と期間の関係は、リスク度合いに依存しない

先程の期間や平均要員数に関するグラフを、今度は横軸を規模にとって見てみます。


これを見ると、実は規模と期間の関係は、リスク度合いの依らないことが分かります。変わるのは投入すべき人員数ということになります。難しいプロジェクトでは人員を多く投入します。

COCOMO の方程式をどう使うか?

COCOMO をそのまま当てはめれば、何でも正確に見積もれるかというと、そういうわけにはいきません。

まず、何をもって低リスク、中リスク、高リスクと色分けするか、という問題があります。ここはむしろ、自分たちの実績データを分析して、どのくらいの係数がよくあてはまるかを見てみた方が良いと思います。自分たちの仕事がどれくらいのリスクを掲えているのかを結果から逆算するイメージです。

もう1つの問題は、規模をどう見積もるか、ということです。ファンクションポイント法などから見積もる方法もありますし、やはり実績データを分析して自分たち独自のメトリクスを持つのも良いでしょう。

COCOMO の活用における悪いアプローチ

よく見かける悪いアプローチが、自分たちの係数を決めるのにあたって、規模を無視して工数を中心としたメトリクスを集めることです。工数は規模とリスク度合いの両方の影響を受けており、あまり安定した指標になりません。規模と期間の関係が安定していることなども考えると、規模を中心にメトリクス収集を行うのが良いでしょう。
規模の見積は、類似のシステムのメトリクスを活用して出せるようにしておくと良いですね。

COCOMO は40年も前に考え出された見積手法ですが、現代でも言語に依らずよくあてはまりますので、活用してみてください。