オブジェクトの広場は株式会社オージス総研グループのエンジニアによる技術発表サイトです

プロジェクト測定

プロジェクト測定実践記 第6回

COSMIC法とCoBRA法を組み合わせた工数見積りの実践
株式会社オージス総研 技術部 アジャイル開発センター
木村めぐみ
2014年8月7日

CoBRA(Cost estimation, Benchmarking, and Risk Assessment)法は、ドイツのフラウンホーファー研究機構(IESE)により開発された、ソフトウェア開発における見積りモデルなどを構築する手法です。見積りモデルは実績データと熟練者の経験値を元に構築します。工数を見積る時は、構築した見積りモデルにソフトウェアの規模とプロジェクトの工数を上げる要因(変動要因)のレベルを入力して行います。日本ではIPAが提供する「CoBRA法に基づいた見積りモデル構築ツール[1]」を使うことで気軽にCoBRA法を実施することができます。

今回、これまでにCOSMIC法で測定したプロジェクト測定の実績データを用いて、比較的容易に、初回としては有望な見積りモデルを構築することができました。

本記事では、まず、見積りモデルを使って工数見積りをする手順をご紹介した後、これまでのプロジェクト測定の実績データを元に見積りモデルを構築した手順をご紹介します。最後に、COSMIC法とCoBRA法を組み合わせた工数見積りの適用結果を考察します。

目次

CoBRA法検討の背景

プロジェクト測定結果の活用の課題

プロジェクト測定は、プロジェクトの改善点や強みを明らかにするために行っています。これまでのプロジェクト測定の分析結果はプロジェクトへフィードバックし、プロジェクトの改善に活用できるよう活動してきました。一方、プロジェクトからは、プロジェクト測定の実績を見積りにも活用できないか、という声が何度か上がっていました。

CoBRA法
CoBRA法のイメージ

このため、以前から注目していた、プロジェクト測定結果を活用できる、見積りモデルを構築する手法「CoBRA法」の適用検討を始めました。

CoBRA法は、これまでのプロジェクトの実績データと熟練者の経験値から見積りモデルを構築します。構築した見積りモデルを使って、簡単に見積り工数を出すことができます。

CoBRA法に着目した理由

見積り手法がいくつかある中で、CoBRA法を検討対象にしたのは以下のような理由からです。

  • 見積りモデル構築に必要な実績データの数が比較的少ない
  • 規模や工数の測定方法は統一されていればよく、測定方法に制約がない
  • パラメトリック法であるため見積りに透明性、再現性がある

これまでのプロジェクト測定で30件程度の実績データが蓄積されていたため、CoBRA法で見積りモデルを構築するには十分な実績がありました。また、プロジェクト測定では一貫してCOSMIC法に基づいた規模の測定をしていました。このため、実績データをそのまま利用することができました。プロジェクト測定を実践していたことによって、CoBRA法に取り組みやすかったと言えます。

CoBRA法に期待するところ

CoBRA法の良いところは、数値化された熟練者の経験値を誰でも使うことができる点、そして、見積り根拠が明確になる点です。私たちは、COSMIC法や概算法で測定した機能規模を使って、工数見積りと見積り根拠の説明を比較的簡単にできればプロジェクトが得られるメリットも多い、とCoBRA法に期待しました。

CoBRA法とは

CoBRA法とは

CoBRA法は、ドイツのフラウンホーファー研究機構(IESE)により開発された、ソフトウェア開発における見積りモデルを構築する手法です。構築した見積りモデルに、ソフトウェアの規模とプロジェクトの変動要因を入力することで工数の見積りができます。

日本では以下のツールや書籍を利用して、比較的気軽にCoBRA法に取り組めます。

  • IPA「CoBRA法に基づいた見積りモデル構築ツール[1]」
  • CoBRA研究会[2]編『CoBRA法入門-「勘」を見える化する見積り手法-[3]』オーム社

CoBRA法の考え方

CoBRA法では、プロジェクトの開発工数を以下のように考えます。

  • 理想的な状態では工数は規模に比例する
  • 現実は工数を増加させる様々な要因(変動要因)により工数が増加する
CoBRA法の考え方
[図1]CoBRA法の考え方
出典:CoBRA研究会『CoBRA法入門』p.6 図1-1を元に筆者が手を加え作成

変動要因とはプロジェクトの開発工数を増加させる様々な要因のことを言います。変動要因には影響がないものから大きいものまで4段階のレベルがあります。また、レベルによって、工数を何%増加させるかという影響度が変わります。この影響度によって増加した工数が、コストオーバーヘッド(CO)です。

実際にはプロジェクトの特性によって、どの変動要因がどの程度のレベルで影響するかが異なります。このため、右図のように、例えば規模が同じであっても、変動要因のレベルが違うプロジェクトAとBのコストオーバーヘッドは異なり、見積り工数が異なります。

すなわち、工数は理想の状態に対して変動要因によるコストオーバーヘッドが加わったものとなります。

CoBRA見積りモデル

この考え方に基づき、CoBRA法の見積りモデルは以下の式で表します。

工数の見積り

係数α(アルファ)は理想の状態における単位規模あたりの必要工数です。αはこれまでのプロジェクトの実績データを元に、回帰分析をして算出することができます。

COは変動要因によるコストオーバーヘッドです。工数を増加させる変動要因にはどのような種類があるか、また、各変動要因によるコスト増加率はどの程度かを、経験豊富なプロジェクトマネージャなどの熟練者が定義します。

見積りモデルの構築は、IPAが提供する「CoBRA法に基づいた見積りモデル構築ツール」を利用して行うことができます。構築の手順は後の章でご紹介します。

CoBRA見積りモデルを利用した工数見積り

工数の見積りは、「CoBRA法に基づいた見積りモデル構築ツール」で構築した見積りモデルに、規模と変動要因のレベルを入力するだけで行うことができます。工数見積りの手順は次の章をご覧ください。

COSMIC法とCoBRA法を組み合わせた工数見積りの手順

まず、COSMIC法とCoBRA法を使った工数見積りの手順をご紹介します。一旦、見積りモデルを構築すれば、以下のように簡単な手順で工数見積りを実施することができます。見積りモデルの構築については次の章で説明します。

  1. COSMIC法に基づく機能規模の測定
  2. 変動要因のレベル評価[CoBRA法]
  3. 見積りの実行[CoBRA法]

1.COSMIC法に基づく機能規模の測定

ソフトウェアの規模はCOSMIC法で測定します。プロジェクトの初めの段階で素早く測定したい場合はCOSMIC概算法を用います。COSMIC法と概算法の測定手順は前回の記事で詳しくご説明していますので、そちらをご覧ください。

測定した規模は、統合見積りモデルツールに入力します。統合見積りモデルツールには、既に見積りモデルが構築されているものとします。

◎統合見積りモデルツール

統合見積りモデルツールはIPAが提供する「CoBRA法に基づく見積り支援ツール」のうちの1つです。

「CoBRA法に基づく見積り支援ツール」には簡易見積りモデルツール統合見積りモデルツールがあります。簡易見積りモデルツールは体験版と位置づけられておりWeb上で簡単にCoBRA法を体験できます。統合見積りモデルツールは本格版でExcel上で動作します。

「CoBRA法に基づく見積り支援ツール」を利用するには利用者登録が必要です。利用許諾に同意した上で、無料で利用できます。

私たちは、見積りモデル構築時に変動要因を定義する際は簡易見積りモデルツールを利用し、見積りモデル構築と見積り実行の際は統合見積りモデルツールを利用しました。

2.変動要因のレベル評価[CoBRA法]

プロジェクトマネージャがプロジェクトの変動要因のレベルを評価します。評価結果は、統合見積りモデルツールに入力します。見積りモデルを構築済みの統合見積りモデルツールには変動要因と影響度が定義してあるので、各変動要因のレベルを選択するだけです。

◎変動要因

変動要因とは、チームの経験・知識やシステムの複雑さ、など、開発における工数の増加要因を言います。見積りモデルを構築する時に、そのモデルで考慮する変動要因の種類を定義します。また、それぞれの変動要因について、レベル0(影響なし)からレベル3(影響最大)までの4段階を定義します。

変動要因の例を[表1]に示します。

[表1]変動要因の例
IPA「CoBRA法に基づく見積り支援ツール」の変動要因を引用
変動要因名 定義の説明 レベル0
定義
レベル1
定義
レベル2
定義
レベル3
定義
チームの経験・知識 顧客要求に対する、チームとしての業務知識、開発スキルの充足度 チームとして、業務知識、開発スキルともに充足している チームとして、業務知識は不足していないが開発スキルが不足している チームとして、開発スキルは不足していないが業務知識が不足している チームとして、業務知識、開発スキルともに不足している
システムの複雑さ 画面、帳票、アルゴリズムの複雑さ 画面、帳票、アルゴリズムの全てにおいて複雑なものがない 画面、帳票、アルゴリズムのいずれか1つが複雑 画面、帳票、アルゴリズムのいずれか2つが複雑 画面、帳票、アルゴリズムの全てが複雑
〔中略〕

◎変動要因の影響度

変動要因によって工数が何%増えるかを数値で表します。3~6名程度の熟練者に変動要因毎の影響度を最小・最大・最頻の3点で回答してもらいます(三角分布)。見積り時は、この三角分布値を元に工数見積りを算出します(三角分布を元にモンテカルロ法でシミュレーションした増加工数の分布の中央値をコストオーバーヘッドとし、これから見積り工数を推定)。

3.見積りの実行[CoBRA法]

統合見積りモデルツールで見積りを実行します。見積り工数が算出されます。見積りの実行は以上で終わりです。

◎見積り結果の見直し

統合見積りモデルの見積り結果には、見積り工数の他に、工数超過確率分布と変動要因の寄与度が表示されます。デフォルトでは工数超過確率を50%としたときの見積り工数が算出されますが、プロジェクトの状況に応じて工数超過確率を調整して見積り工数を出すことができます。

また、変動要因の寄与度は、どの変動要因が見積り工数に影響しているかが分かります。これを見ながら、変動要因のレベル評価を見直すなどして見積り工数を調整することも可能です。

CoBRA法に基づいた見積りモデルの構築

見積りモデルの構築は、CoBRA法で工数見積りを行うために、必ず一度行います。あらかじめ目標とする見積り精度の達成基準を決めておき、構築した見積りモデルが基準を達成しない場合はモデルを改善します。達成基準を満たせば、ある程度妥当な初期見積りモデルを構築できたと判断します。

見積りモデルを構築したら、これを元に工数見積りが可能です。

本章では、CoBRA法に基づいた見積りモデルを構築する際に、私たちが実践した内容を紹介します。見積りモデル構築の詳しい内容については、参考文献をご参照ください。

CoBRA法に基づいた見積りモデルの構築手順

見積りモデルは、以下の手順で構築します。

  1. 変動要因モデルの作成
  2. 実績データの収集
  3. 見積りモデルの構築

1.変動要因モデルの作成

変動要因モデルの作成では、変動要因の定義と、定義した各変動要因の工数への影響度を定義します。

変動要因は、IPAのサンプルを用いるか、熟練者に協力してもらい定義します。

各変動要因の工数への影響度は、IPAのサンプルの数値をそのまま用いるか、熟練者へのアンケートを元に決定します。具体的には、レベル3の場合を想定したとき何%工数が増えるかを、最小・最頻・最大の3点で回答してもらいます(三角分布)。見積り時にはこの影響度を用いて工数を算出します。

◎変動要因モデルの作成で行ったこと

変動要因モデルを作成する際は、IPAであらかじめ用意されたデフォルトの変動要因の中から15個の変動要因を選択しました。この時、特定の要因の重みが大きくなり過ぎないように、例えば、「チームの知識・経験」と「メンバのスキル」など似通った定義がある場合は片方の「チームの知識・経験」を選択する、というようにしました。

選択した変動要因は下記の通りです。

  • チームの経験・知識
  • プロジェクトマネージャの経験・知識
  • プロジェクト目標の明確さ・共有度合い
  • システムの再利用可能度合い
  • システムの複雑さ
  • 信頼性要求のレベル
  • 見積り時の要求内容の曖昧さ
  • 要求変更の発生想定時期
  • 業務の複雑さ
  • 顧客の参画度合い
  • 統制の取れた要求管理
  • 開発期間の厳しさ
  • チーム内の役割分担や責任の明確さ
  • 品質管理に対する要求
  • 並行開発案件の本数

各変動要因の影響度は、IPAのサンプルの全平均の数値をそのまま用いました。

これらの定義は、統合見積りモデルツールの操作手順に従い、統合見積りモデルツール上に作成しました。

2.実績データの収集

見積りモデルを構築するために、これまでに測定したプロジェクトから規模と工数の実績データを収集します。規模と工数の測定方法は、収集するデータ間で統一されている必要があります。プロジェクトの数は少なくとも6個(望ましいのは10個程度)集めます。

◎実績データの収集で行ったこと

まず、これまでに測定したプロジェクトの実績データから改修案件を除き、新規開発案件を選定しました。次に、この中から明らかに突出して生産性が高いプロジェクトを除きました。後は言語やフレームワークを問わず全てのプロジェクトを含め、この結果、12件のプロジェクトの実績データを選定することができました。

CoBRA法では、規模の測定方法は統一されていれば何でもよく、ソースコード行数やファンクションポイント法を使うこともできますが、私たちが行っているプロジェクト測定ではCOSMIC法で規模を測定しているため、COSMIC法の実績データを使いました。COSMIC法の実績データには概算法で測定したものも含みます。

◎変動要因のレベル評価

収集した12件のプロジェクトそれぞれの変動要因のレベルは、開発当時のプロジェクトマネージャに依頼して評価してもらいました。評価結果は、変動要因を定義済みの統合見積りモデルツールに入力しました。

3.見積りモデルの構築

見積りモデル構築
[図2]見積りモデルのイメージ

統合見積りモデルツールに、プロジェクト毎の規模と工数の実績データと、変動要因のレベル評価を入力し、モデル構築処理を実行します。

ツールは、規模の実績と変動要因のレベル評価を元に補正規模を算出し、工数の実績と補正規模から回帰分析でαを算出します。下記の式のαが求まり、これで見積りモデルが構築できます。

工数の見積り

統合見積りモデルツールが出力する見積り結果には見積り精度が表示されるのでこれを評価し、必要であれば見積りモデルを改善します。

◎初期見積りモデルの構築の結果

統合見積りモデルツールに、12件のプロジェクトの規模と工数の実績データと、変動要因のレベル評価を入力し、モデル構築処理を実行しました。初回の見積り精度は[表2]の通りでした。

[表2]IPA統合見積りモデルツールの初回出力結果(部分)

初回モデル見積り精度情報

目標とする見積り精度を、MMREが20%未満、Pred.25が100%としていましたが、この初期モデルはMMREとPred.25共に目標を達成していません。このため初期見積モデルの改善を行いました。

◎初期見積りモデルの改善内容

まず、プロジェクト毎の見積り誤差率を比較しました。そして、見積り誤差率が60~80%と他より大きいプロジェクト5件を除外した7件のプロジェクトで、再度、モデル構築処理を実行しました。この結果、MMREは17.6%、Pred.25は71.4%と初回の結果より良くなりました。

次に、この7件のプロジェクトのうち、見積り誤差率が25%以上だった2件のプロジェクトについて、見積り誤差の原因となりそうな変動要因のレベル評価を洗い出しました。そして、15個の変動要因のうち、2つの変動要因のレベル定義と影響度が実際のプロジェクトにそぐわない可能性があると判断しました。2つの変動要因とは、「信頼性要求のレベル」と「並行開発案件の本数」です。

そこで、これら2つの変動要因を除外して、再度、モデル構築処理を実行しました。その結果、見積り精度は[表3]の通り、MMREが20%未満、Pred.25が100%となり、目標に達しました。

[表3]IPA統合見積りモデルツールの3回目出力結果(部分)

2回目モデル見積り精度情報

これで初期見積りモデルを確定しました。

COSMIC法とCoBRA法を組み合わせた工数見積りの適用結果

工数見積りの結果

構築したCoBRA見積りモデルを使って、プロジェクト測定が完了した2つのプロジェクトの見積り工数を算出しました。そして、見積り工数と実績工数から求まる見積り誤差率を確認しました。結果は以下の通りです。

  • プロジェクトP1の見積り誤差率・・・125.6%
  • プロジェクトP2の見積り誤差率・・・10.8%

プロジェクトP2の見積り工数の精度が非常に良かったのに対し、プロジェクトP1は実績工数と見積り工数が大きく乖離しました。

適用結果についての考察

◎見積りモデルの構築は容易

まずCoBRA法に基づいた見積りモデルの構築について振り返ります。

IPAで用意されたデフォルトの変動要因を少しカスタマイズするだけで、標準的な7件のプロジェクトについては精度の良い見積りモデルを構築できました。

また、これまでのプロジェクト測定の実績データが蓄積されていたこと、プロジェクト測定の方針によって規模と工数の測定方法が統一されていたことから、見積りモデルの構築が比較的容易でした。

プロジェクト測定で規模と工数を測定している場合は、抵抗なく簡単にCoBRA法を試行できることが分かりました。

◎標準的なプロジェクトは初期見積りモデルを適用可能

結果的に、初期見積りモデルは12件のプロジェクト中、標準的な7件のプロジェクトの実績データを元に構築しました。構築した見積りモデルで2つのプロジェクトの見積り工数を算出したところ、上で示した通り、1つのプロジェクトについては見積り誤差率が非常に小さく、精度が良いことが分かりました。

これら見積り誤差率が小さかったプロジェクトに共通しているのは、生産性が標準的で、他のプロジェクトより特に高くも低くもないことです。また、プロジェクトの規模が小~中規模で、1つのプロジェクトを除き社内で標準のフレームワークを使ったプロジェクトでした。このような標準的なプロジェクトについては、IPAで用意されたデフォルトの変動要因を元に簡易に構築した今回の初期見積りモデルでも、見積り精度が良く、使えることが分かりました。

このことから、上に挙げた特性と類似したプロジェクトの場合、現在の初期見積りモデルを使った工数見積りを適用することは可能だと判断しました。

◎今後は初期見積りモデルを改善

一方、見積り誤差率が大きく、初期見積りモデルの構築で除外した6件(見積りモデル構築時5件の見積り誤差率は60~80%、見積り工数算出時1件の見積り誤差率は125.6%)のプロジェクトについては、時間の都合上できていない変動要因の見直しなどの改善が今後必要です。

今後の改善では、まず除外した6件のプロジェクトの特性を再度確認し、変動要因のレベル評価が妥当だったか、除外したプロジェクトの特性が初期見積りモデルの変動要因で表されているかを見直します。見直した結果、いずれかの方法でモデルを改善する予定です。

  • 初期見積りモデルの変動要因の定義と影響度を修正してモデルを改善する
  • 初期見積りモデルに新たな変動要因を定義してモデルを改善する
  • 初期見積りモデルとは別のモデルを新たに構築してプロジェクトの特性によって使い分ける

◎今後ますます活用できることを期待

今後は、変動要因を見直して初期見積りモデルを改善すると共に、新たな実績データを反映してモデルの精度を高めていきたいと考えています。これにより、今後ますます活用できる見積りモデルが構築できると期待しています。

おわりに

今回の記事では、これまでにご紹介したプロジェクト測定の実績データである規模と工数を活用して、CoBRA法に基づいた見積りモデルの構築と工数見積りの適用を検討した過程をご紹介しました。

CoBRA法への取り組みは、まだ始めたばかりでそれほど実績がありませんが、今後、見積りモデルを改善していけば、より一層プロジェクトに役立つものになると確信しています。これまで、プロジェクト測定は改善のために振り返りの場面で活用することが多かったのですが、見積りにも活用することで、より多くのプロジェクトに役立てることができます。そしてこれが、より多くの実績データの蓄積に結び付けば、見積り精度が上がることが期待できます。今後、ますますプロジェクトでの活用の場が増えることを願っています。

さて、プロジェクト測定実践記の連載は今回が最終回です。半年に渡って読んでいただき、どうもありがとうございました。

CoBRA見積りモデルの改善(2015年7月追記)

本記事掲載から半年ほど経過した2015年初め、本記事で課題として挙げているCoBRA見積りモデルの改善を行い、モデルの精度を向上することができました。モデル改善の取り組みについては「番外編 COSMIC法とCoBRA法を組み合わせた工数見積りの改善 ~改善内容とCoBRA法活用ポイント~」に詳しく記載しています。ぜひご覧ください。

参考文献