ユーザー企業に納得してもらい,かつプロジェクトの利益を確保するためには,どんな見積もりを行えばよいのか。そのカギを握るのが,システム特性とリスクをしっかりと検証,分析し,すべての費用項目を洗い出すことだ。

中村 一世(なかむら いっせい)
東洋ビジネスシステムサービス 取締役 テクニカルダイレクター

 「標準的な見積もり技法を使って見積もりを行っているのに,大きなずれが生じることが多い」──。見積もりに関して,こうした悩みを抱えるITエンジニアは多い。

 第1部でも触れたように,システムに求められる要件やシステム構築の手法はますます複雑化し,見積もりもどんどん困難になっている。そうした状況で精度の高い見積もりを行うためには,標準的な見積もり技法を的確に使いこなす必要がある。ただし,それだけでは十分ではない。標準的な見積もり技法を使っていても,(1)システム特性を十分に考慮した見積もりを行っていない,(2)リスクの徹底的な洗い出しとその対策を実施していない,(3)投入資源や経費などを含めたすべての費用項目を洗い出していない,といった理由で,結果的に大きなずれが生じてくるからだ。

 言い換えれば,精度の高い見積もりを行うためには,これらをきちんと実施することが欠かせない。見積もりに「王道」や「近道」は存在しないのだ。そこでここでは以上の3つのポイントについて,具体的に実施すべき作業や,作業時の注意点を解説する。

システム特性の把握が前提

 まず見積もりの作業手順を確認しておこう(図1)。「システム特性の見極め」や「見積もり対象のスコープ決定」から,「利益を算出」までの大きく9つのステップから成る。

 この中で,最初の「システム特性の見極め」は,見積もりの前提となる非常に重要な作業である。システム特性は見積もり工数に大きな影響を与えるだけに,できるだけ詳細に検証することが欠かせない。

 見積もり技法によっては,確認すべきシステム特性の項目を独自に定義しているものがある。例えばFP法では,「性能目標」や「トランザクション量」など14項目を定義している。しかし,「データ通信」や「利用制約(セキュリティ)」などの項目は,今や常識的なものであり,複雑度の指標としてはそぐわない。

 そこで筆者は,各種見積もり技法が定義しているシステム特性から現時点で有効と思われるものを選択し,それに自身の経験をプラスして,システム特性のチェックリストを作成した(表1)。ここでは,システム特性を「システムの形態」や「ユーザー要件」,「データ処理量」など大きく7つに分類した。ウエイト計算を加味する定量化部分ができていないため,まだまだ未完成だが,これを使えばシステム特性に関する項目の見落としが減るはずだ。またユーザー企業にとっても,RFP(提案依頼書)作成時の参考になるだろう。

図1●実践的な見積もりの手順
図1●実践的な見積もりの手順
見積もりの精度を高める際のポイントは,採用する見積もり技法にかかわらず,「システム特性」と「リスク」をいかにして見極め,見積もりに反映させられるかにある。システム特性については,検討もれがないようにチェックリストを作成するなどして対応すべきだ

表1●見積もりの前提となるシステム特性のチェックリストの例
表1●見積もりの前提となるシステム特性のチェックリストの例
見積もりを行う際は,ベンダーがRFPを基にして,以下の項目について詳細を洗い出す必要がある。洗い出した結果は「複雑度」として係数化して,見積もりに反映させることが望ましい
[画像のクリックで拡大表示]

前提条件が見積もりを左右

 表1に掲げたシステム特性の項目の中で,見積もりを左右するものとして最も重要なのが「システムの形態」だ。システムの形態とは,システムの種類やデータ・ファイル数,パッケージの利用有無などを指す。

 システムの種類には,企業の基幹業務をこなす基幹系や,ビジネス上の意思決定や判断を支援する情報系,マスターデータの登録に特化したリソース系などがある。これらの種類によって,扱うデータの種類や量,確保すべき品質,作成するドキュメントなどが異なってくる。それらが工数の違いにつながることは言うまでもない。

 システムの種類を十分に見極めた上で,次に行うのがシステムを構成する機能の洗い出しだ。把握すべき機能の種類は,見積もり技法によって異なるので注意が必要である。

 例えばLOC(Line of Code)法では,オンライン系(3種類)とバッチ系(4種類)に分けて機能を洗い出す。またファンクション・ポイント法の場合は,外部入力,外部出力,外部照会など5種類について洗い出す。

 洗い出した結果は,見積もりのベースとなり,各技法で定義している手順に従って,システム規模や工数に換算する(図2図3)。

 どれほど工数を正確に積み上げたところで,システム特性を見誤ると見積もりはずれてしまう。システム特性の的確な把握が精度の高い見積もりにつながることを忘れないでほしい。

図2●LOC法による規模と工数の算出手順
図2●LOC法による規模と工数の算出手順
LOC法では,「1機能当たりのステップ数」と「生産性係数」はプログラミング言語ごとに別途用意する。LOC法はメインフレーム時代の標準的な見積もり技法だったが,システムの主要な形態がクライアント・サーバーシステム,Webシステムへと変化するに伴い,使われなくなってきている

図3●Dファンクション・ポイント法による規模と工数の算出手順
図3●Dファンクション・ポイント法による規模と工数の算出手順
国際標準の「IFPUG」に沿った流れを示した。FP法を用いる際のポイントは,過去の開発実績を蓄積して,「一般調整係数」と「生産性係数」の精度を高めることである