工数見積もりの見える化
重回帰分析によるモデル構築
COCOMOなどでは、開発規模をはじめとして、コストドライバ、スケールファクタなど工数見積もりに用いるパラメータ(説明変数)があらかじめ決められている。いわば既製服のようなもので、自分たちのソフトウエア開発の実態に合致し、高い見積もり精度が得られていればよいが、そうでない場合には、見積もりモデルをオーダーメードすることになる。そこで用いられるのが重回帰分析である。
重回帰分析は多変量解析の一手法であり、見積もり対象の変数(目的変数。ここでは工数)と、目的変数に影響を与える複数の変数(説明変数)との関係を表す図3-1のような一次式(回帰式)を作成する。
ここで、Eは目的変数である工数、v_i (i=1, 2, …, n)は説明変数、a_i (i=1, 2, …, n)は各説明変数に対する係数、cは定数項である(_i、_jはそれぞれ下付き文字を表す)。説明変数としては、開発規模、開発期間、要員の人数やスキルレベル、発見バグ数、使用される開発技術など、ソフトウエアの特性や開発プロジェクトの特性を用いる。
すでに終了したソフトウエア開発プロジェクトなどから、それら説明変数v_iと工数Eの実績値を集めてくれば、上式の右辺に説明変数v_iの実績値を代入して得られる値と、左辺となる工数Eの実績値の絶対誤差(残差)の二乗和が最小となるよう各係数a_iと定数項cを求めることができる。そうして求めた回帰式の右辺に、見積もり対象プロジェクトにおける説明変数v_iの値を代入すれば工数の見積値が得られることになる。
なお、重回帰分析によるモデル構築では、見積もり精度を向上させるために、説明変数候補の中から、見積もり精度の向上に寄与すると予想される変数を選択して回帰式を作成する方法がとられる。
特に、ソフトウエア開発の工数見積もりにおいては、説明変数候補となるソフトウエアの特性や開発プロジェクトの特性が多数あり、かつ、どのようなプロジェクトにおいても見積もりに必要不可欠な説明変数が明らかになっているわけでもないので、この変数選択は重要である。代表的な変数選択法としては、「ステップワイズ変数選択法」が知られている。詳細については文献「協調フィルタリングに基づく工数見積り手法のデータの欠損に対するロバスト性の評価」(http://www.empirical.jp/EASE_DVD/Papers/PDFs/2006-19.pdf)を参照されたい。
以上が、モデルに基づく工数見積もりのあらましである。モデルによる工数見積もりが提案されて30年余り、見積もりの現状はどうであろうか。少し前になるが2005年に社団法人 情報サービス産業協会(JISA)が、エンタープライズ系ソフトウエア開発を対象に行った調査の結果が図3-2である。
エンタープライズ系ソフトウエア開発における見積もり手法
図3-2を見ると、「類似プロジェクトからの類推」「プロジェクトリーダや担当者の経験」、そして「積み上げ」が三強で全体の90%以上を占める。モデルを使った見積もりは全体の7%に過ぎない。なぜこのような状況となっているのだろうか?
次回は、従来モデルによる見積もりが思うように普及していない理由とその解決策の1つとなる「協調フィルタリング技術を用いた工数見積もり法」について紹介する。
なお、本稿の執筆にあたって、以下を参考にした。
B. W. Boehm, C. Abts, A. W. Brown, S. Chulani, B. K. Clark, E. Horowitz, R. Madachy, D. J. Reifer, B. Steece『Software Cost Estimation With COCOMO II』Prentice Hall(発行年:2000)
岩谷誠治『ソフトウェア業における工事進行基準の実務』中央経済社(発行年:2008)
柿元 健,角田 雅照,大杉 直樹,門田 暁人,松本 健一「協調フィルタリングに基づく工数見積もり手法のデータの欠損に対するロバスト性の評価」『電子情報通信学会論文誌 D,J89-D,12,pp.2602-2611』電子情報通信学会(発行年:2006)
EASEプロジェクトホームページ(http://www.empirical.jp/)(アクセス:2008/09)