適当ではなく、精度が高い見積もりを行うには、以下がポイントです。
- 作業を細分化して個々に数字を出す。
- 過去の実績をフィードバックする。
- バッファを加算する。
- 上長のクロスチェックを受ける。
作業の細分化
趣味でソフトウェア開発をしている場合は、ただひたすらにプログラミングするだけであることが多く、概ね以下の流れになります。
- バグの原因を調べる
- バグのコードを修正する
- プログラムを動かして修正確認する
これが仕事となると、作業工程が大きく変わってきます。会社やプロジェクトにより文化が異なりますが、一般的には以下の流れになります。
- バグの原因を調べる。
- 原因が根本原因6であるかを判断する。根本原因でなければ1へ戻る。
- なぜ、そのバグが摘出されたのかを見解を作る。
- バグの修正方法を検討する。もっとも影響範囲が少なくなるように。
- 設計バグであれば設計書を修正する。
- ソースコードを修正する。
- エビデンス7のクロスレビューを行う。レビューが完了するまで5と6を繰り返す。
- 修正箇所に関して、プログラムの単体テストを行う。
- 修正箇所に関して、プログラムの機能テストを行う。
- 修正箇所に関して、レグレッションテスト8を行う。
以上のように、単純にソースコードを直せばよいとはならないことを理解する必要があります。一口に「バグ修正」と言っても、複数の項目に細分化されます。項目ごとに工数を見積もります。
項目 | 工数(人H) |
原因調査 | 8 |
修正検討 | 3 |
設計書修正 | 2 |
コード修正 | 2 |
テスト項目作成 | 2 |
レビュー対応 | 2 |
単体テスト | 3 |
機能テスト | 5 |
退行テスト | 3 |
合計 | 30 |
バッファの加算
見積もった工数にかならずバッファを足し込みます。バッファというのは余剰工数のことです。見積もりなんて、所詮は予測値でしかないため、実際に作業を進めてみると、事前に予想していなかった作業が出現することがありますし、思いのほか時間がかかる作業項目があるかもしれません。
そういったトラブルに対応するために、工数に余裕を持たせておくのです。
見積もった工数を1.5倍しておくとよいです。この「1.5倍」という数字に意味はなく、単なる筆者の経験則です。
コメントを残す