システム開発の見積もりのやり方
システム開発の見積もりのやり方については多種多様あると思います。
システム開発をするにあたって非常に重要な部分になりますが、僕なりの見積もりのやり方をまとめたいと思います。
※ぱっと思いつきで書いたので、また何かあったら追加、変更したいと思います。
大事なポイント
・リスクを計上しておく
・システム開発の前提を明確にしておく
開発に関する技術やサービスの使用経験などで、システム開発工数は変わってきます。
各種項目の見積もりでカバーするのですが、それでもカバーしきれない場合があるので、どういったリスクが想定されるかを考えて、リスク工数を計上しておいた方が良いと思います。
また、前提を明確にしておくのが大事で、例えば、
・受領した資料は「XXXXXXの資料」を前提とする
・見積もりを超える範囲については別途見積もりとする
・見積もりの内容については、承認をしてもらうようにする
・承認してもらったあとの要件変更は別途見積もりにする
・各種必要なアカウントは、顧客に準備してもらうようにする
などです。
他にもあると思うのですが、明記しておいても上手くいかず顧客とゴネることになるのがシステム開発です(笑)
相手がゴネってきた時に戦える武器を作っておくことが重要です。
管理
PMやPLなどの管理工数です。
まず定例タスク。
主に以下の作業に対して、1週当たりどのくらい工数が掛かるかを出します。
・進捗管理
・タスク管理
・課題管理
・資料作成
例えば、以下のように時間が掛かるとします。
・進捗管理:週1時間
・タスク管理:週1時間
・課題管理:週2時間
・資料作成:週1時間
・顧客打ち合わせ:週3時間(移動時間込み)
と、すると週8時間なので、4週分として×4をして1ヶ月分を出します。
8時間/週 × 4週 = 32時間/月
続いて、開発期間を掛けます。
例えば、3ヶ月の案件なら、
32時間/月 × 3ヶ月 = 96時間
続いて、単発のタスクです。
・スケジュール作成
・顧客調整
などのタスクがあると思います。
こちらのタスクを例として10時間と見積もります。
そうすると、①定例タスク96時間 + ②単発タスク10時間 = 106時間となります。
見積もりは大抵人月で出すので、1ヶ月稼働20日として
106時間 ÷ 20日 = 5.3日
1日の稼働を8時間として
5.3日 ÷ 8時間/月 = 0.66人月(小数点3位四捨五入)
とします。
要件定義
まず、機能ごとに要件を定義する工数です。
機能は、ユーザー登録、ログイン、メール送信、ファイルアップロード、PDFダウンロードなど、分かる限り機能を細かく分けて、工数を出した方が良いと思います。
各機能で、顧客打ち合わせをして要件のヒアリング、QAのやり取り、確認の資料作成などの工数を見積もります。
また、要件定義の段階で、モックなどを作成するパターンもあるので、その場合はモック作成の工数も見積もります。
外部設計
システム全体について、主に以下の観点で見積もります。
・方式設計
・アーキテクチャ設計
・画面設計
・バッチ設計
・データベース設計
・運用設計
・セキュリティ設計
・URL設計
・ログ設計
・外部IF設計
・帳票設計
・性能設計
・移行設計
など、色々項目があるかと思います。
外部設計では、設計する作業と、資料作成、レビュー、打ち合わせ、資料修正などの工数を見積もります。
内部設計&製造&単体テスト
ひとくくりにしましたが、各機能ごとに開発する部分を見積もります。
内部設計として設計書を作る場合は設計書を作成する工数、プログラムを作成する工数、作成したプログラムの単体テストを実施する工数などを見積もります。
この辺りはプロジェクトによってやり方がだいぶ変わると思うので、必要な成果物を明確にして、それに掛かる工数を見積もります。
デザイン
各画面のデザインを作成する工数を見積もります。
僕はここは本職ではないので、詳しいことは分かりませんが、ワイヤーフレームを作成して、Photoshop、Illustratorなどを使って成果物を作るところまでを見積もります。
PC用のデザインとレスポンシブ用のデザインを作成すると思うので、それぞれ見積もります。
テスト(結合テスト以降)
主に以下のテストについて見積もります。
・結合テスト
・総合テスト(システムテスト)
・マルチブラウザテスト
・性能テスト
・障害テスト
・ユーザーテスト
実施する作業は、テスト仕様書作成、テストデータ作成、テスト実施、テスト結果確認、不具合修正などがあると思うので、それぞれの工数を見積もります。
インフラ
各インフラ環境の構築に掛かる工数を見積もります。
開発環境、ステージング環境、本番環境などの構築や、各種バックアップ、クリーニング、監視などに掛かる工数を見積もります。
リリース
リリースに掛かる作業を見積もります。
リリースまでの全体のスケジュールや、各種テスト、各種リリース、リハーサルに掛かる時間を見積もります。
リリースに関しては、コンティンジェンシープランやリリース切り戻し作業、リリースのタイムスケジュールなどを見積もります。
データ移行などがある場合は、その工数も含めておきます。
運用
運用に掛かるコストを見積もります。
運用作業が発生する場合は、その作業工数を見積もります。
また、各種サーバーやサービスなどのランニングコストを算出して、運用コストに含めておきます。