はじめのコラム⑧システム開発の見積り方法について説明します!

コラム

最近、システム開発の見積りに関する調査を行いました。その理由は、今後プリセールスエンジニアとして営業に同行し、見積り作成をサポートするためです。

前職では、オンプレミスのインフラエンジニアで、プリセールスエンジニアとしても働いておりましたが、現職はクラウドになり、従来の見積り方法とは異なるアプローチを一から学び直しました。

本記事は、私がシステム開発の見積りについて行った調査の成果をまとめたものです。これからシステム開発の見積りを行う方にとって、非常に有益な内容となっています。

是非、最後までご覧いただけると嬉しいです。

システム開発の見積り

システム開発の見積りとは、開発に必要な作業量を予測し、それに伴うコストを算出するプロセスのことを指します。このプロセスは、顧客からの機能要件や非機能要件のヒアリングを通じて要件定義を行うことから始まります。要件定義を行うことで、プロジェクトで実現すべき目標が明確になり、見積りの精度が高まります。

見積りを行う際には、業務委託契約と請負契約の2種類の主要なソフトウェア開発契約形態を考慮に入れる必要があります。これらの契約形態によって、金額の算出方法が異なるため、プロジェクトの性質や顧客との合意に基づいて適切な契約形態を選択することが重要です。

見積りのプロセスでは、工数、エンジニアの単価、粗利などの基本用語を理解し、適切に利用することが求められます。これらの要素を組み合わせることで、プロジェクトの総コストを算出します。

さらに、見積りは書面で作成され、金額だけでなく、見積条件、受渡期日、検収期日などの項目を含むことが一般的です。有効期限も重要な情報であり、見積りの有効性を保証するために必要です。

見積りの手法にはいくつかの方法がありますが、最も一般的に用いられるのは積み上げ法です。この方法では、プロジェクトを構成する各タスクのコストを個別に算出し、それらを合計することで全体の見積りを作成します。また、ファンクションポイント法などの他の手法も存在し、プロジェクトの特性や要件に応じて適切な手法を選択することが重要です。

各々の手法について、詳しく説明します。

積み上げ法

積み上げ法では、プロジェクトの見積りを行う際に、以下のステップに沿って進めます。

  1. 要件定義:プロジェクトを開始するにあたって、顧客からの要望や要件を収集します。この段階で、システムに求められる機能や性能、制約条件などが明らかにされます。
  2. 機能抽出:開発者がこれらの要望や要件を基に、システムに必要な機能を抽出します。
  3. 作業タスクの分解:機能が明確になったら、さらにそれを具体的な作業タスクに分解していきます。この作業タスクの分解は、プロジェクトの全体像をより詳細に理解する上で重要なプロセスです。
  4. 作業量の予測:分解されたタスクに対して、開発者は類似の過去のプロジェクト経験をもとに、各タスクの完成に必要な作業量を予測します。この経験に基づいた予測は、見積りの精度を高める上で非常に価値があります。
  5. 全タスクの工数集計:予測された作業量をもとに、最終的に全タスクの工数を集計します。この集計により、プロジェクト全体の見積りが完成します。

積み上げ法による見積りは、プロジェクトの各段階を細分化して考えることで、見落としがちなリスクやコストを事前に把握しやすくなるという利点があります。また、顧客とのコミュニケーションを通じて要望や要件を明確にすることで、顧客の期待とプロジェクトの成果物が一致する可能性を高めることができます。

ファンクションポイント法

ファンクションポイント法のプロセスは以下のステップで構成されます。

  1. 要件・要望の抽出:プロジェクトの初期段階で、顧客からの要望や要件を収集します。これには、システムが満たすべき基本的な機能や性能、制約条件などが含まれます。
  2. インターフェース抽出:上記要件を満たすために、システムがどのようなインターフェース(ユーザーインターフェースや外部システムとの連携インターフェースなど)とアクター(システムとやり取りを行うユーザーや他のシステム)を必要とするかを特定します。
  3. 機能分類と難易度の設定:システムに必要な画面やデータベースの項目数など、具体的な機能要素を抽出します。これらの機能要素は、システムの機能規模を定量的に把握するための基礎となります。
  4. ファンクションのポイント算出:抽出された各機能要素に対してポイントを割り当てます。
  5. 調整係数の算出:調整係数は、プロジェクトや開発環境の特性、技術的な難易度などを考慮して設定されます。
  6. 調整後ファンクションポイントの算出:これらのポイントの合計に調整係数を乗じることで、プロジェクトに必要な人日数を見積ります。
  7. ファンクションポイントを工数に変換:ファンクションポイントを工数に変換します。

ファンクションポイント法を用いることで、開発プロジェクトの機能的な規模を客観的に評価し、その結果を基にした合理的な見積りを行うことが可能になります。この手法は、特に要求が複雑または多岐にわたる大規模なプロジェクトにおいて、その見積りの精度を高めるのに役立ちます。

このように、システム開発の見積りは、開発プロジェクトの成功に不可欠なステップです。正確で詳細な見積りを行うことで、プロジェクトのリスクを最小限に抑え、顧客との信頼関係を築くことができます。

見積りの進め方

プロジェクトの見積りは、その成功の鍵を握る重要なプロセスです。正確な見積りは、プロジェクトの範囲、予算、スケジュールを定義し、リソースを適切に割り当てるための基礎を提供します。ここでは、効率的で正確な見積りを行うための進め方を説明します。

  1. ニーズの特定と利用シナリオの構築:まずプロジェクトの目標を把握するために、顧客からのニーズを特定し、それに基づいて利用シナリオを構築します。この工程で、プロジェクトが取り組むべき具体的なシナリオや利用者の動向がはっきりします。
  2. 機能的・非機能的要求の同定:その後、プロジェクトの要求を満たすために、どんな機能的要求(システムが提供すべき機能)と非機能的要求(システムの動作条件や品質基準)が必要かを同定します。
  3. システム構造図の策定:システムが非機能的要求に応えるための構造図を策定します。これはシステム全体の設計や各部品の相互作用を示します。
  4. プロセス図の作成と要求の精緻化:プロセス図を通じて要求についてより深く理解を深め、具体的な機能要求をさらに詳細化します。
  5. 一貫性の検証:既存のビジネスプロセスやシステムとの一貫性を検証し、矛盾が無いか確認します。
  6. プロジェクト規模と段階の設定:プロジェクトの規模やその重要性を踏まえ、どのような段階を設けるか決定します。
  7. 作業項目の洗い出し:特定された要求とプロジェクトの段階を比較し、実施すべき具体的な作業項目を洗い出します。
  8. 作業項目ごとの見積り算出:各作業項目に必要な時間や費用を見積り、それを算出します。
  9. 計画表の作成:見積もった工数を基に、作業項目を計画表に配置し、全体の計画表を作成します。
  10. 組織構成図の策定:プロジェクト実施に必要な人材やリソースの規模を考慮し、組織構成図を策定します。
  11. 見積りの精査:最終的に見積りを精査し、重要なチェックポイントを再確認します。ここで、計画の見落としや予算及びスケジュールの実現可能性を再評価します。

このプロセスを通じて、プロジェクトの見積りはより精度高く、信頼性のあるものとなります。プロジェクトの成功に向けて、正確な見積りは不可欠です。

見積り作成時の確認ポイント

見積りを完成させる際には、以下のチェックポイントを確認することが重要です。これらの点を慎重に確認し、見積りの精度を高めることでプロジェクトの成功につなげます。

要件と現在の業務プロセスの照合

  • プロジェクトの要件が現在の業務プロセスとどのように関連しているかを比較検討します。
  • プロジェクトの体制図やスケジュールには、顧客の役割を明確に記載します。
  • 非機能要件を詳細に記載し、それらが顧客に十分に説明されているかを確認します。
  • 開発作業だけでなく、その他の費用も見積りに含めているかチェックします。
  • 値引きの要望に対して、適切な対応策が検討されているかを見直します。

非機能要件の確認

  • 非機能要件として、パフォーマンス、セキュリティ、可用性などを特に重視します。
  • 非機能要件を満たすためのアーキテクチャやミドルウェアの選定を慎重に行い、必要なコストを見積りに盛り込みます。
  • パフォーマンステストやセキュリティ診断など、非機能要件を検証するためのコストも予測し、見積りに反映させます。

開発作業以外の費目の盛り込み

プロジェクトには開発作業だけでなく、様々な追加費用が発生します。本番環境の準備、ドメインや証明書の取得、ユーザー教育資料の作成など、プロジェクト全体で必要となる費用を見積りに含めます。

これらのチェックポイントを丹念に確認し、見積りを作成することで、プロジェクトの成功に不可欠な精度と透明性を確保します。全ての要素を慎重に検討し、顧客との信頼関係を築きながら、プロジェクトを円滑に進めるための基盤を作りましょう。

まとめ

今回は、下記3点について説明しました。

  1. システム開発の見積り
  2. 見積りの進め方
  3. 見積り作成時の確認ポイント

システム開発の見積りを行う際は、顧客の要望を基にタスクを細分化し、それらを積み上げることで、より正確な見積りを出すことが可能です。

これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!

それでは、次回のブログで!

タイトルとURLをコピーしました