熟練者の経験・知識を用いたソフトウェア開発のコスト見積り手法

 ソフトウェアの開発コストは、開発規模(製作したソースコード量や実現した機能量など)だけではなく、 要求内容の変動や顧客の協力度合いなど、開発プロジェクトに介在する多種多様な要因(変動要因)に影響されます。 しかしプロジェクトの初期段階では、組織やプロジェクトに特有の変動要因を見極めること、また、その影響を定量的に把握することが困難であることから、 それに近い値を推定する手法で開発コストの見積りが行われてきました。
 CoBRA法は、経験豊富なプロジェクト・マネージャ等の見積り熟練者の経験・知識を抽出し、 それを変動要因として定義・定量化することで、透明性と説明性が高い見積り(コストマネジメント)を実現する方法です。

ソフトウェア開発の代表的なコスト見積り手法
手法 概要 メリット デメリット
類推法 過去の類似プロジェクトの実績コストから類推する方法。 要件定義の完了前に、ある程度根拠のあるコスト推定が可能。 過去に類似案件のないプロジェクトへの適用は困難。
積上げ法 コストを推し測れる粒度に実施項目を詳細化(作業単位と呼ぶ)し、作業単位ごとにコストを推定し、積み上げる方法。 作業単位が明確になるため、プロジェクト開始後に、作業単位で進捗とコストの予実管理が可能。開発スタイルが固定化している組織では、高い見積り精度が見込まれる。 見積り精度は、作業単位の網羅度、厳密度に依存する。よって要件がある程度固まった段階でないと適用不可。
パラメトリック法 コストを目的変数、規模や環境要因などを説明変数とし、それらの関係を定式化する方法。CoBRA法はパラメトリック法に分類される。他にはCOCOMOU法がある 見積りに再現性がある。また、見積り条件を変えたコスト・シミュレーションが可能である。環境要因をリスクと捉えることで、プロジェクトのリスク把握につながる。 妥当な数式モデルを得るためには、実績データの収集が必要となる。また、不確定な説明変数が多いと誤差が大きくなる。

CoBRAモデル

 CoBRAモデル(CoBRA法で構築した見積りモデル)は、次の仮説に基づいてコストを算定します。

仮説(1): 変動要因の存在しない理想的な状態においては、開発コストは開発規模に比例する。
仮説(2): 現実のソフトウェア開発においては、開発コストを増加させる複数の変動要因が存在し、その影響度の総和だけ開発コストが増加する。

 以上の仮説をコスト算定式として表わすと次のようになります。

(コスト)=α×(規模)×(1+任Oi)

 規模の尺度には、ソースコード行数やファンクション・ポイント(ソフトウェアの機能量を表す尺度)などを用いることができます。
 COiはi番目の変動要因によるコスト増加率を表します。 COはCost Overheadの略記であり、開発コストを低減させる要因は考慮せず、 全ての変動要因をoverhead、すなわちコストを増加させる要因として定義する点に特徴があります。
 また、αは変動要因が全くない理想的な状態での単位規模あたりの必要工数を表し、現実の単位規模あたりの必要工数は α×(1+任Oi) で表されます。

CoBRAモデルの構築方法 その1:変動要因の抽出と定義

 経験豊富なプロジェクト・マネージャ等の複数の見積り熟練者の協力の下に、 ブレーンストーミング形式で開発プロジェクトに介在する多種多様な要因(変動要因)を抽出し、 CoBRAモデルの変動要因として定義します。
 変動要因は、組織や開発対象となるシステムなど、様々な種類があります。
 熟練者の感覚を視覚的に確認するために要因の関係図を作成すると、下図のように描くことができます。

変動要因

 次に、実際に見積りを行う現場の担当者が解釈や判断に迷わないよう、抽出した変動要因の各々について客観的、かつ分かりやすく定義します。
 さらに、変動要因の影響度を4段階(レベル0からレベル3)で設定します。 レベル3はその変動要因が最も強くコストに影響を及ぼす状態を表し、レベル0はその変動要因の影響が全くない状態を表します。 例えば上図の開発期間の制約(CO6)については、以下のように定義することができます。

コスト変動要因の定義例
No. 名称 概要 影響度レベルの定義
レベル3 レベル2 レベル1 レベル0
6 開発期間の制約 顧客の要求する開発期間が、自社の標準工期からどの程度圧縮されているか 標準工期から30%以上圧縮 標準工期から20%以上30%未満圧縮 標準工期から10%以上20%未満圧縮 標準工期から10%未満の圧縮

CoBRAモデルの構築方法 その2:変動要因の影響度の定量化

 その1で抽出・定義したそれぞれの変動要因に対し、”全ての変動要因のレベルが0であるときのコスト”と、”当該変動要因のみがレベル3であるときのコスト”とを比較し、どれだけ増加するかの割合を、熟練者の経験を基に設定します。
 感覚を表現するものであるため、1つの割合だけではなく、以下に示す3ケースについて、幅のある値を設定します。

  • コストへの影響が最小と考えられるときの割合(最小値)
  • コストへの影響が最もありそうなときの割合(最頻値)
  • コストへの影響が最大と考えられるときの割合(最大値)
 レベル3のみについて割合を設定すれば、レベル2からレベル0の影響度は、下図のように2/3倍、1/3倍、0倍することで、自動的に設定されます。 (このコストへの影響度を感覚的に表現する3つの数値の組を「三角分布」と呼びます。)

三角分布

CoBRAモデルの構築方法 その3:係数αの算出

 過去に実施した複数のプロジェクトに対してコスト増加割合(ΣCOi)の算定を行い、コスト算定式中のαの値を算出するため、まずは過去のプロジェクトを複数(N件)集めます。
 そしてそれぞれのプロジェクトに対し、各変動要因のレベルが0〜3のどれにあたるかを、プロジェクト・マネージャ及びメンバへのアンケートにより定めます。
 次にそれぞれのプロジェクトに対して、モンテカルロ・シミュレーションでΣCOiを多数回計算することでΣCOiの安定した分布を作り、その分布の中央値を当該プロジェクトにおけるコスト増加割合とします。 これより、コスト算定式における (規模)×(1+任Oi) (補正規模と呼ぶ)と実際のコストの値の組が、N組得られます。
 最後に得られたN組の (補正規模、コスト) に対して直線回帰分析を行うと、その回帰係数としてαが算出され、CoBRAモデルの初期モデルが完成します。

 初期モデルでは望ましい見積り精度が得られない場合は、次に示すモデルの改善を行います。

CoBRAモデルの構築方法 その4:見積り精度の評価とモデルの改善

 完成したCoBRAモデル(初期モデル)の見積り精度は、クロスバリデーション(交差検定法)により評価することができます。 まず、その3で得たN組の (補正規模、コスト) のデータを使い、「そのうちの1組を除いた残りN−1組のデータから回帰係数αを求め、 そのαを使って、除いた1組のコストを見積もる」ということを、除く対象を変えてN回行うことで、見積り誤差に関するデータをN個取得します。
 見積り誤差率の絶対値の平均からモデルの精度を評価し、標準偏差からモデルの安定度を評価することができます。
 評価結果が良好でない場合は、構築したモデルの見積り精度の改善を行います。一般的な改善ポイントは次のようになります。

  • 実績データ(コスト、規模)、変動要因のレベル値の見直し。
  • 変動要因の見落としの有無の確認。
  • 変動要因の定義の見直し(曖昧な定義は無いか)。
  • 三角分布の値の見直し(影響度の評価は妥当か)。
  • プロジェクトの層別の可能性の確認。

CoBRAモデルによるソフトウェア開発プロジェクトのコスト見積り

 構築したCoBRAモデルによる見積り結果は、次の手順で得ることができます。

  1. 当該プロジェクトの開発規模を推定する。
  2. 各変動要因のレベルを評価する。
  3. モンテカルロ・シミュレーションにより、コスト増加割合の分布を作成する。
  4. 得られた分布の中央値をコスト算定式のΣCOiに当てはめ、開発コストの推定値を得る。

ページのトップへ▲