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

技術講座

プロジェクト測定実践記[番外編]

COSMIC法とCoBRA法を組み合わせた工数見積りの改善
~改善内容とCoBRA法活用ポイント~
オージス総研 技術部 アジャイル開発センター 木村 めぐみ
2015年7月9日

CoBRA法はソフトウェア開発の見積りモデルを構築する手法です。私たちは2013年後半からCoBRA法に基づく工数見積りに取り組み、初回見積りモデルを構築しました。ところが、その後に開発が完了した複数のプロジェクトの実績データを用いて初回見積りモデルの見積り精度を検証したところ、見積り精度が下がっていることが明らかになり、今年に入って見積りモデルの改善を行いました。本記事では見積りモデルの改善で行った内容と結果を説明した上で、私たちが考えているCoBRA法を活用するポイントをご紹介します。

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

COSMIC法とはソフトウェアの規模を測定する手法です。これまでのプロジェクト測定では、ソフトウェアの規模を一貫してCOSMIC法で測定してきました。

CoBRA法とはソフトウェア開発の見積りモデルを構築する手法です。CoBRA法に基づいて構築した見積りモデルを使って工数を見積るには、構築した見積りモデルにソフトウェアの規模とプロジェクトの工数を上げる要因(変動要因)のレベルを入力して算出します。CoBRA法ではソフトウェアの規模の測定方法は統一されていればよく、測定方法に制約がありません。

そこで、CoBRA法の適用を検討するにあたり、COSMIC法で測定したソフトウェアの規模を利用してCoBRA法に基づいた工数見積りを行う取り組みを始めました。

COSMIC法とCoBRA法を組み合わせた工数見積りとは、このCOSMIC法で測定したソフトウェアの規模を利用してCoBRA見積りモデルで工数を見積る方法のことを独自に呼んだものです。

COSMICとCoBRA

COSMIC法とCoBRA法を組み合わせた工数見積りについて、詳しくは プロジェクト測定実践記 第6回 の記事をご覧ください。

CoBRA見積りモデル改善の背景

まず、本章ではCoBRA見積りモデルを改善した背景をお伝えし、次の章から具体的な改善内容をご説明します。

初回見積りモデルの評価

私たちは2013年後半からCOSMIC法とCoBRA法を組み合わせた工数見積りに取り組み、初回見積りモデルを構築しました。

CoBRA法では、モデルの精度が以下の目標値を達成すれば十分な精度を持ったモデルと言われています。

  • 見積り誤差率の絶対値の平均(MMRE)が20%以下
  • 見積り誤差率の絶対値が25%以内であるプロジェクトの比率(Pred.25)が100%

この目標値に従うと、初回見積りモデルの見積り精度は下の表に示す通りでしたので、十分な精度を持つと評価できました。

初回見積りモデルの精度
初回見積りモデルの精度

ところがその後開発が行われた複数のプロジェクトの実績データを用いて見積りモデルの精度を検証したところ、見積り誤差率が20%を上回るプロジェクトが7プロジェクト中4プロジェクトと、初回見積りモデルの精度が悪くなっていることが分かり、改善に取り組むことにしました。

初回見積りモデルの誤差率
初回見積りモデルを検証したときの見積り誤差率
(横軸のアルファベットはプロジェクトを区別するためにつけたID)

初回見積りモデルの検証では、その後のプロジェクト測定で機能規模と労力が把握できたプロジェクトについて初回見積りモデルによる工数見積りを行い、実績工数と見積り工数の誤差率を求め、見積り誤差率の絶対値が20%を上回ると見積り誤差が大きいと判断しました。

モデル改善のアプローチ

通常、CoBRA見積りモデルの改善では見積り誤差の大きなプロジェクトに着目して改善点を見つけていきます。改善では、実績データの精査や変動要因の見直しなどを行います。改善後、見積り精度を評価して目標値に達するまで改善を繰り返します。

変動要因とは

ここで、改善のポイントとなる変動要因について少し説明しておきます。変動要因とは、開発における工数の増加要因を言います。たとえば、チームの経験、システムの複雑さなどが変動要因の候補となります。

CoBRA法では、理想的な状態では工数は規模に比例するが、現実には工数を増加させる様々な変動要因によって工数が増加する、と考えます。

初回見積りモデルの誤差率
CoBRA法の考え方
出典:CoBRA研究会『CoBRA法入門』[[2](#ref2)]p.6 図1-1を元に筆者が手を加え作成

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

見積りモデルの式

CoBRA法で見積りモデルを構築するときには、どのような変動要因が工数の増加に影響するかを検討して変動要因の種類を決め、各変動要因について4段階のレベルを定義します。そして、影響が最も大きいレベルになったとき工数が何%増えるかを影響度として数値で定義して見積りモデルを構築します。

工数見積り時には、このモデルを使ってプロジェクトの変動要因のレベルを評価し(たとえば、このプロジェクトは経験者が少ないため、「チームの経験」変動要因は影響度最大のレベル3にする、など)、評価に基づいた影響度から増加工数を算出し、規模と掛け合わせて工数を見積ります。

このように、変動要因の種類と影響度の定義はCoBRA見積りモデルにおいて重要なポイントであると言えます。

なお、ここでご説明した見積りモデルの構築とモデルを使った工数見積りは、IPAが提供する「CoBRA法に基づく見積り支援ツール」[1] を用いて簡単に行うことができます。詳しくは プロジェクト測定実践記 第6回 をご覧ください。

今回のモデル改善のアプローチ

今回のモデル改善では、初回見積りモデルの検証時に見積り誤差が大きかったプロジェクトだけに着目しても改善点が見出しにくかったため、変動要因を見直す目的で、次のアプローチを取りました。

  1. すべてのプロジェクトの変動要因のレベル評価を影響なし(レベル0)にして見積りモデルを構築し直し、他のプロジェクトと生産性が異なるプロジェクトを確認する
    補正規模と実績工数
    規模と工数の関係
    赤い矢印で指した点が他と生産性が異なるプロジェクト
  2. 他のプロジェクトと生産性が異なるプロジェクトの特徴を再度分析して生産性に影響した変動要因を洗い出す
  3. 生産性に影響した変動要因だけを有効にし、更に変動要因のレベル評価を見直した上で、再度見積りモデルを構築する
  4. 再構築したモデルで見積り誤差が大きいプロジェクトに共通して影響する変動要因を追加定義し、再度見積りモデルを構築する

モデル改善の内容

新たに追加した変動要因

「今回のモデル改善のアプローチ」で述べた手順で見積りモデルの変動要因を見直したところ、初回見積りモデルではその後開発が完了したプロジェクトに共通して影響する変動要因が定義されていなかったことが分かりました。定義されていなかった要因は初回見積りモデルを構築したプロジェクトでは強く影響していなかったのですが、その後のプロジェクトの実績データを加えると影響が明らかになったものです。

見直しの結果、追加した変動要因は以下のとおりです。いずれも人的要因に分類できる要因です。

追加した変動要因 定義の説明
チームの経験・知識(業務知識) 業務知識・経験の度合い
チームの経験・知識(過去資産) 過去資産の有無と過去資産の経験者の有無の組み合わせで評価
メンバのスキル 開発環境、言語、ツールの経験者の確保度合い (いずれかを経験している人数÷チーム人数)
アーキテクチャ、フレームワークの開発経験 使用するアーキテクチャ、フレームワークでの開発経験の有無
技術的なリスク 必要な技術の経験の有無(言語そのものではなく具体的な実装方法などの経験)

上記変動要因の一部は書籍『CoBRA法入門[2] 』の付録A.変動要因定義サンプルを参考にして定義しました。

追加した変動要因を見ると、経験に関する複数の要因が含まれています。初回見積りモデルでは、経験に関する変動要因は「チームの経験・知識」(顧客要求に対するチームとしての業務知識、開発スキルの充足度)だけでしたが、この変動要因だけでは工数増加の影響を十分に表すことができていませんでした。工数増加の要因を分析した結果、上で挙げた経験に関する複数の変動要因が存在したのです。

これ以外に初回見積りモデルの変動要因のうち、どのプロジェクトにも影響しない変動要因を除くなどの見直しを行い、最終的に15個の変動要因を定義しました。

以上のような変動要因の追加と変更を行い、変動要因のレベルを評価し直してモデルを再構築しました。実際には一度に変動要因の見直しができたたわけではなく、モデルを再構築して精度を確認し、精度が悪ければもう一度見直し、という作業を、最終的なモデルが構築できるまで3回繰り返しました。

モデル改善の結果

最終的に構築した見積りモデルの精度は以下のとおりとなり、一時的に精度が下がっていたモデルの精度を改善することができました。

改善後の見積りモデルの精度
改善後の見積りモデルの精度

CoBRA法を活用するポイント

さいごに、CoBRA見積りモデルを改善した結果分かったことをCoBRA法の活用ポイントとしてまとめたいと思います。

継続して見積りモデルを検証する

初回見積りモデルを構築した当初からプロジェクトの実績データが蓄積できた時点で見積りモデルを検証することを続けていましたが、5件目の実績データを追加した時点で初回見積りモデルの精度が下がっていると判断し、今回の改善に至りました。

実績データの蓄積にはプロジェクトの開発が完了するのを待つ必要があるため、ある程度の期間が必要ですが、継続して検証することでプロジェクトの実状に合った見積りモデルが構築できると実感しました。当たり前のようですが、見積りモデルのメンテナンスはやはり必要だということが分かりました。

変動要因は組織内のプロジェクトを分析して独自に定義する

初回見積りモデル構築時には、変動要因を独自に定義するのは難しいと考え、IPAが用意されている変動要因をそのまま用いました。初回見積りモデルではこれらの変動要因でモデルを構築できましたが、今回の改善で変動要因を見直した結果、組織内で特有の変動要因が実際には存在するので、変動要因を独自に定義することがモデルの精度を上げるうえで重要だと感じました。

プロジェクト測定の結果を活かす

私たちの場合、変動要因を洗い出すときに助けになったのはプロジェクト測定の分析結果でした。プロジェクト測定分析では定量データに基づいて生産性に影響した要因を分析しているので、この生産性に影響した要因が変動要因の候補となります(最終的には定性的な分析の視点も加えて分析結果を出しています)。今回追加した、経験に関する変動要因もプロジェクト測定分析の結果を振り返りながら洗い出しました。

CoBRA見積りモデルを構築するにはプロジェクトの実績データが必要ですのでプロジェクトを測定されると思いますが、分析を意識した細かさ(機能×作業種別など)で測定することをおすすめします。これにより、生産性を機能単位や作業単位で見ることができるので工数増加の要因を分析するのが容易になります。私たちが行っているプロジェクト測定の方針については、プロジェクト測定実践記 第1回に詳しく記載していますのでご興味があればご覧ください。

CoBRA見積りモデルを使って工数を見積る

社内の多くのプロジェクトにCoBRA見積りモデルを使ってもらい、実績データを更に蓄積することでモデルの精度を維持することができます。今回、見積り精度が上がったことは見積りモデルのアピールにつながるため、今後も継続してCoBRA法に基づく見積りを社内ですすめていきたいと思います。

おわりに

本記事では、CoBRA法に基づいて構築した見積りモデルの精度を上げるため変動要因を見直して、複数のプロジェクトに共通して工数増加の要因となっていた、経験に関する変動要因を追加してモデルを構築し直し、結果として見積りモデルの精度が上がった取り組みについてご紹介しました。

プロジェクト測定実践記 第6回の最後に初期見積りモデルを改善することを課題として挙げていましたが、改善方法について言うと以下の2点を実施したことになります。

  • 初期見積りモデルの変動要因の定義と影響度を修正してモデルを改善する
  • 初期見積りモデルに新たな変動要因を定義してモデルを改善する

実は、新たな変動要因を定義することは難しいのではないかと始めは躊躇していたのですが、CoBRA法を活用するポイントで述べたとおり、プロジェクト測定分析の結果を活かして、何が工数増加に影響しているかを考えていけば、それほど難しいものではありませんでした。プロジェクト測定では定量的な視点だけでなく定性的な視点でも分析しているので、これら両方の視点でプロジェクトを見つめたことがよかったと思います。

工数見積りにご興味のある方は多いと思います。この記事が工数見積りに取り組む方に少しでも役に立てば幸いです。

参考文献

[1] CoBRA法に基づく見積り支援ツール,https://sec.ipa.go.jp/index.html
[2] CoBRA研究会編(2011)『CoBRA法入門 -「勘」を見える化する見積り手法-』オーム社