こんにちは、Hです。
みなさん、プロジェクトはいかですか?
いいことも悪いことも起こるのがプロジェクト。
リスクをマネジメントしつつ、先を予測しながら適切な手を打っていきたいですね。
ちょうどプロジェクトで見積もりを作成する機会があったので今日は見積もりの話です。
見積もり方法
みなさんの現場ではどのような見積もりを行っていますか?
FP法、積み上げ法そして類推法など様々なやり方があります。
IPA(情報処理推進機構)のホームページでもソフトウェア開発における見積もり手法の概要を
わかりやすくまとめてくれたり、関連書籍のダウンロードができます。
今回、私が利用したのはFPによる規模見積もりとWBSによる積み上げ見積もりの合わせ技です。
結論を先に行ってしまうとFP法のほうが大きくなり、積み上げ法のほうが少なくなりました。
どんな感じで見積もったかを記載しておこうと思います。
ちなみに今回見積もったタイミングは下記の状態でした。
■工程
システム要件定義フェーズ後半
見積もり対象は基本設計~結合テストまで■成果物
業務・機能一覧
画面一覧
画面遷移図
画面仕様書
帳票・ファイル一覧
データモデル(ただし項目未精査)
機能・データフロー図
(いわゆるDFDではなく、機能とデータをステータスを記載しながらつなげた図)
要求分析資料
規模見積もり
今回、規模見積もりはIFPUG法を利用しています。
まず手始めに行ったのは業務・機能一覧とデータモデル、画面仕様書から機能ごとの
入出力情報・処理内容を記載することでした。
ただそんなに細かく記載するわけではなく、大雑把に記載しました。
これは見積もり作業というよりは機能設計を少し先どりして、
ある程度の規模間を見るためのもととなる資料です。
そこで一度洗い出したら入出力情報をもとにデータファンクションである
ILF(内部論理ファイル)とEIF(外部インタフェースファイル)を
機能ごとに数値化していきました。
さらに処理内容を見ながらトランザクションファンクションである
EI(外部入力)、EO(外部出力)、EQ(外部照会)に割り当てていきます。
難易度は3段階。高中低です。
その後、規模見積もりを微修正します。たとえば難しい処理がある機能とか、
逆にこれは単純だからもう少し下げようとかFPの調整を実施します。
調整後のFPを合計して、1時間あたりの消化FP(FP/時)で割って工数(時間)を算出します。
(例)1000FP => 1000(FP) / 0.059(FP/時) = 16,950(人時)
16,950人時 ≒ 2,118人日 ≒ 105人月
※1日8h、1人月20人日で計算
できあがったのはこんなイメージです。

いったんこれで規模見積もりを終わりにします。
積み上げ見積もり
つづいて規模見積もりです。
まずはWBSで工程ごとに必要なタスクを洗い出していきます。
今回だと工程は下記の分類にしました。
・基本設計
方式設計
アプリケーション設計
運用設計
・詳細設計
クラス設計
イベント処理設計
・実装・単体テスト
・結合テスト
・プロジェクトマネジメント
あとは現場のタスク標準を参考にしながらタスクをピックアップしていきます。
各工程で必要なタスクがそろったら各タスクの工数(期間、人数)を
算出していきます。

すべての工数を算出したら工程ごとの合計値を算出して完了です。
下記のようなイメージの表ができあがりました。
見積もりを精査する
最後に見積もった内容の精査です。
まずは規模見積もりの精査です。
すでにFPの係数が会社標準としてあればよいのですが
特になかったので過去の類似の案件について
同様の作業を実施しました。
ただ過去の案件については見積もりや実績工数があるので
実績FP係数を出すことができます。
そのときのFP係数と今回適用する係数を比較して
大きくずれがないことを確認しました。
つづいては規模見積もりと積み上げ見積もりの比較。
大きくぶれていないか、ぶれているとしたらどこか、
ぶれの内容はどちらが適切かを1つずつつぶしていきます。
最後はバッファの検討です。
どれぐらいバッファを積むのか、リスクが高い機能や作業は何かを見ながら
バッファを入れていきます。
こういった作業を繰り返して最終的に提示する工数を決めていきました。
最後に
ここでは特に営業的な観点は考慮せずに見積もりを実施しました。
最終的には営業ともすり合わせて、経営的な観点で実際に提示する見積もりが決まると思います。
とはいえ、KKDだけで「エイヤ」と出してしまっては希望的観測(根拠なし)の見積もりになってしまいます。
仮に見積もりの調整が入ったとしても削った部分をリスクとして捉えて、対策を考えることができます。
見積もりには様々な方法があると思いますが、どのような観点で、どのようにして算出したか
きちんと説明できるようにしておくことが大切ではないかと思います。
みなさんはどんな基準で見積もりをされていますか?