最初は既成の係数を使用して見積りを行っても、すぐに精度の高い見積りができるわけではありません。やはり見積りの精度を上げる努力が必要となります。そのために必要な作業は大きく分けて"結果のフィードバック"と"実績データの蓄積"の2つです。

例えば、ゴルフのスコアを上げようと思ったら、第一打目のドライバーだけを練習していてもなかなか上達しません。途中のプロセスを見直して改善することが大切でしょう。ドライバーだけではなく、アプローチやパットについても飛距離や確度を定量的に把握し、フォームやスタンスなどを見直します。これが"結果のフィードバック"です。

また、実際のゴルフコースでプレーすると、練習場とはまったく違うことがわかると思います。同じ距離でも「登り」だったり、「下り」だったり、当然芝も違います。風や雨といった自然条件も加わります。ですから、同じように打ったつもりでもまったく違う飛び方をします。そんな時に役に立つのは"実績データの蓄積"です。いろいろなコースを回り、その経験を自分の教訓として生かすことが大切なのです(筆者もわかってはいるのですが、なかなかスコアは良くなりません……)。

ドライバーだけ練習してもスコアが良くならない。見積り精度を上げるには"結果のフィードバック"と"実績データの蓄積"が重要

見積りで"結果のフィードバック"を行う際に重要なのは、振り返った結果をちゃんと見積り方法へフィードバックすることです。見積り値と実績値を比較してその原因を分析するだけでは見積りの精度の向上につながりません。見積り方法やその他のプロセスにフィードバックするためには、結果の比較だけではなく、見積りの入力情報も比較する必要があります。

例えば、規模見積り方法として以下の式を利用した場合の"結果のフィードバック"について考えてみましょう。

規模見積り式 f(X): Y=aX+b Y  : 規模(SLOC数) X  : 機能数 a,b : 係数

見積り時の機能数をx、規模をy、実績の機能数をx'、規模をy'とするとします。この時xとx'を比較し、同じであればx(= x')とy'の関係から、aやbの係数を自身のプロジェクトに合うように見直します。xとx'が違うようであれば、見積り式を使用する前のお客様要件から機能へと分解するプロセスの問題ですので、そのプロセスを見直します。

例えば、1つの機能の粒が設計者によって違っていなかったか、見落としてしまっていた機能はなかったのかなどの観点から、機能分解のプロセスへ教訓をフィードバックします。その上で、x'とy'の関係から見積り式の係数を見直します。このような作業を続けていくと見積り精度は向上していきます。yとy'だけを見比べていてもダメなのです。

さらに精度を上げていくためには、掛け算の中身を性質ごとに足し算へと分解していくと良いでしょう。上述の式で言えば、aXの部分を分けていくのです。例えば、同じ機能でも入力系の機能と出力系の機能では規模の分布が異なります。(a×機能数)を(c×入力系の機能数)+(d×出力系の機能数)としていけば、より見積り精度は向上していきます。 足し算に分解する時の観点としては、変動しない固定的な部分、量に比例する部分、回数に比例する部分などのパラメータの異なるものや、入力系機能、出力系機能などの係数が異なるものを見つけて分解すると良いでしょう。

係数が異なるものを見つけて分解する

執筆者プロフィール

藤貫美佐 (Misa Fujinuki)
株式会社NTTデータ SIコンピテンシー本部 SEPG 設計積算推進担当 課長。IFPUG Certified Function Point Specialist。日本ファンクションポイントユーザー会の事務局長を務める。

『出典:システム開発ジャーナル Vol.3(2008年3月発刊)
本稿は原稿執筆時点での内容に基づいているため、現在の状況とは異なる場合があります。ご了承ください。