プロジェクトの具体的なスケジューリングに入る前に,コスト計画を作成しなければならない。まず開発範囲や規模をもとに開発負荷を見積もり,要員コストや外注費を算出する。リスクに対する予備費も考慮する必要がある。では,どのような手順で見積もり作業とコスト計画を実施すればいいのだろうか。

布川 薫/日本IBM

 前回は,プロジェクト計画における「品質管理計画」について解説した。今回は,引き続きプロジェクト計画における重要な作業である「見積もりとリスク査定」および「コスト計画」について解説する。

 プロジェクト計画段階での見積もり方法は,必ずこうしなければならないという標準手順はないが,一般には次のようなプロセスを踏むことが多い。まず,対象システムの大枠の開発規模や開発負荷を見積もる(図1のP1)。大枠の見積もりができたら,ほかの見積もり方法でこれを検証する(図1のP2)。大事なポイントは,2つ以上の異なる方法で比較検証することだ。検証結果に大きな誤差が出れば,最初の大枠見積もりに戻ってプロジェクトの対象範囲などの前提条件を含めて見直す。

図1●見積もりの手順(DFDで記述)
図1●見積もりの手順(DFDで記述)
過去のプロジェクトの実績データや統計データなどの参考データを使って,COCOMOIIやファンクション・ポイント法などで大枠の見積もりを行った後,必ず他の方法で検証を行う
[画像のクリックで拡大表示]

 大枠見積もりとその検証を行ったら,プロジェクトのWBSによって,作業範囲の過不足と見積もりの妥当性を裏付ける(図1のP3,WBSについては第2回を参照)。この際に気を付けなければならない点は,作業項目に漏れがないようにすることだ。また,ユーザー側とITベンダー側の役割分担にも十分注意しなくてはならない。「最初からWBSで見積もればいいのではないか」と考える読者もいるかもしれないが,WBSのような積み上げ方式だけで見積もると工数が多めになりがち。まず大枠の見積もりとその検証を行ってからWBSで裏付ける方法が,最も誤差が少ない。大枠見積もり,検証,WBSの3つのプロセスをセットで実施することが重要なのである。

ステップ数による見積もり

 大枠の見積もりやその検証用の見積もりには,ステップ数による見積もり,COCOMO(COnstructive COst MOdel)II,Putnamモデル,ファンクション・ポイント法,データ項目による見積もり,類似システムの実績データに基づく「類似システム比較法」などの方法を利用する。

 ステップ数による見積もりは,1969年にNATO(北大西洋条約機構)科学委員会で発表されたJ.D.アーロンの方法が最初である。アーロンの見積もりでは,総開発工数を,(開発ステップ数)÷(開発生産性)×(1+(間接要員比率))×(余裕率)という式で求める。ここで間接要員比率は,10万ステップ程度の規模で10%,100万ステップなら20%ほどである。余裕率はリスクの上乗せ分のことで,案件に応じて5%から30%くらいを考えるのが妥当だろう。

 開発ステップ数は,カウント方法が重要。カウントするのが命令数か行数か,マクロなどを展開する前か後か,コメント文はどう扱うのか,引き渡し分のステップ数のみか中間成果物も含めるのか,といった点である。カウント方法次第で,ステップ数は数倍変わってしまう。日本IBMでは,引き渡し分のソースコードをNCSS(Non Commentary Source Statement=コメント文を除いた命令数のみ)で数えるカウント方法を基本としている。

 開発生産性は,対象範囲が要件定義からシステム・テストまでなのか,内部設計から統合テストまでなのか,あるいは単にプログラミングのみなのかによって,大きく異なる。

 言語によっても大きく変わる。言語別の開発生産性は,ファンクション・ポイントやCOBOLなどの基準となる指標に換算して比較する。米SPR(Software Productivity Research)のWebページから,言語別のファンクション・ポイント換算比率を取得できるので参考にして欲しい(ただし有料)。例えば,C対Javaの開発生産性の比較は2.5:6といったデータが得られる。開発工程全体の開発生産性を示したものではないが,主にプログラミングに直接かかわる生産性の相違を検討するときには参考になる。

開発規模で変わる生産性

 開発生産性は,開発規模によっても大きく変動することに注意すべきだ。図2に,旧IBMサンノゼ研究所の調査結果を示した。図の横軸は開発規模の大きさ,縦軸は1Kステップのプログラムを開発するのに必要な労力を表している。この図から,個人差の部分を除いても,開発規模によって数倍から数十倍も生産性に差が出ることが分かる。また,開発規模が小さいときには開発担当者の能力差が生産性を大きく左右するが,規模が大きくなるに従って平準化されること,大規模開発では欠陥除去活動が生産性に決定的な影響を及ぼすことが,この図から読みとれる。

図2●開発規模と負荷の関係
図2●開発規模と負荷の関係
開発規模が大きくなるほど,1Kステップ当たりの開発負荷は増える

 筆者の経験でも,3万ステップ以下の開発では担当者によるバラツキが大きく,生産性を把握しにくい。一方,100万ステップを超えるような大規模開発では,開発手法や環境の選定,プロジェクトマネジメントの巧拙などで生産性に大きな差が出る。システム開発の見積もりでは,開発規模に応じてその生産性が大きく異なる事実に,十分な注意を払わなければならない。

 アーロンの見積もり式に即して,ステップ数による見積もりの注意点を述べてきたが,この式そのものは現在の複雑な開発環境には適用しにくいため,ほとんど使われない。代わって広く使われているのが,その発展形とも言えるDoty,COCOMO,Putnamなどの方法である(キーワード解説参照)。