連載
» 2012年01月23日 11時22分 UPDATE

山浦恒央の“くみこみ”な話(39):ついに登場! 究極の見積もり技法(その2:実践編) (1/2)

「ソフトウェア技術者の最高の能力は、見積もりだ!」――今回はSLIMのソフトウェア開発関係式を実際に使用し、工数(コスト)、開発期間(月)、機能総量(規模)、(プロセス)生産性の具体的な算出法(Excelによる算出)を解説する。

[山浦恒央 東海大学 大学院 組込み技術研究科 准教授(工学博士),@IT MONOist]

 「見積もり」は、ソフトウェア開発における大きなテーマであり、ソフトウェア工学における最重要課題の1つでもあります。

 今回お届けしている“見積もり・シリーズ”では、「見積もりの目的(正確に見積もるだけでは不十分)」「見積もりの具体的な方法(精度を上げるため、少なくとも、2つ以上の方法で見積もる必要がある)」「見積もりの応用(見積もり値に合わせる制御と再見積もり)」「見積もりの調整(状況に応じて開発量とスケジュールを再見積もりしなければならない)」について、具体的に解説していきます。

 見積もり技法は「類推法」「積み上げ法」「パラメトリックス法」の3つに分類することができます。前回からパラメトリックス法の1つとして、「SLIM(Software Life Cycle Management)」を取り上げています。「ソフトウェアの規模」をFP(Function Point)試算法で見積もり、その見積もり値にSLIMを適用すると、「工数(コスト)」「開発期間(月)」「機能総量(規模)」「(プロセス)生産性」「品質」の5つの関係を分析できます(例えば、規模が20%増えたり、開発期間を18カ月から14カ月に短縮したりした場合、それがスケジュールや人月にどう影響するかを簡単に計算できます)。

 今回は、マイクロソフトの表計算ソフト「Excel」の計算式を使い、具体的、かつ、簡単に算出する方法を紹介します。

SLIMの概要(再掲)

 アメリカの陸軍で長年にわたり、ソフトウェア開発の管理を担当してきたローレンス・H・パトナムが、世界の6300以上のソフトウェア開発プロジェクト(もちろん、日本のプロジェクトも入っています)を分析し、工数(コスト)、開発期間(月)、機能総量(規模)、(プロセス)生産性、品質の5つの相互関係を表す式、「ソフトウェア開発関係式」を求めました。これが以下の式です。

式1

 ただし、SLIMにおける「品質の高低」は、ソースコード行数(生産量)を調整することで表現しています(詳細については前回を参照)。そのため、ソフトウェア開発関係式は、正確には、“5つ”の開発要素の関係を表す式ではなく、品質以外の“4つ”の要素の関係を表す式といえます(以下)。

式2

ソフトウェア開発関係式の実践的な使い方

 それでは、現実のソフトウェア開発プロジェクトにおけるソフトウェア開発関係式の具体的な使い方を解説します。

 ソフトウェア開発プロジェクトでは、以下(1)〜(3)のようにいろいろな状況が考えられます。

(1)コストと開発期間が絶対条件として決まっている

 例えば、顧客から「何が何でも、このプログラムを7月20日までにリリースしてほしい。それと全部で2000万円しか出せない!!」といわれたケースです。コストと開発期間が絶対条件ならば、その範囲で開発できるステップ数を求めないと、この話を受けていいのかどうかを判断できません。そして、ここでの最大の問題は、「“工数(コスト)”と“開発期間(月)”をソフトウェア開発関係式に適用した結果、80KLOC(8万行)しかできないことが判明したが、顧客の提示した機能概要から規模見積もりをしてみると、120KLOCになってしまった……」という場合です。一体どうしたらいいのか? 単に「できませんのでお断りします」では子どもの使いです。これは非常に大きなテーマですので、別の機会で取り上げたいと思います。

(2)開発規模(ステップ数)とリリース日が前提条件として提示されている

 例えば競争入札のように、機能概要とリリース日(開発期間)が決まっている場合、コストを算出する必要があります。機能概要をベースに、FP試算法(参考:FP試算法について)で“機能総量(規模)”を見積もり、“開発期間(月)”を考慮して、“工数(コスト)”を算出しないと、入札価格を出せません。

(3)開発規模(ステップ数)とコストが決まっている

 例えば、機能概要とコスト(投入可能な人月)が決まっているケースです。この場合、機能概要をベースに、FP試算法で“機能総量(規模)”を見積もり、“工数(コスト)”を「投入可能工数」に変換して、“開発期間(月)”を算出できます。


 上記3つのケースについて、具体的な算出ステップを以下に示します。

  • ステップ1:プログラムサイズ、工数、開発時間から生産性指標を計算
  • ステップ2:算出したい項目に応じて、以下から選ぶ 
    (1)工数、開発時間からプログラムサイズ(LOC)を計算 
    (2)プログラムサイズ(LOC)、開発時間から工数を計算 
    (3)工数、プログラムサイズ(LOC)から開発時間を計算

 ソフトウェア開発関係式を適用する場合、大前提として、“(プロセス)生産性”(=生産性指標)が確定していなければなりませんので、最初のステップ1でこれを算出します。なお、以降では筆者が作成したExcelの計算シートを用います(Excelファイル「slim.xls」のダウンロードはこちらから(注))。

※注:Excelファイルは、自由にコピーしてお使いいただいて構いませんが、コピー時は、著作権表示を削除しないでください。


       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.