ソフトウェアの見積り

目次

見積りとは?

見積りとは、特定のプロジェクトやタスクを完了するために必要な費用や時間、リソースなどを予測・評価することを指します。

これは、ビジネスや日常生活の様々なシチュエーションで行われます。

具体例:
引っ越しを考える場面を想像してみてください。
まず、引っ越し日、移動距離、運ぶ荷物の量と種類など、引っ越しの基本情報をまとめます。続いて口コミ、評価、サービス内容などを基に、複数の引っ越し業者を選定し、それぞれに見積りを依頼します。

引っ越し業者から提出された見積りを比較し、コストだけでなくサービスの内容(梱包材の提供、家具の組み立てサービス等)や業者の信頼性を総合的に評価して、最適な業者を選びます。

同様に、ビジネスのプロジェクトやサービスの提供、商品の製造など、多くの場面で「見積り」は重要な役割を果たします。正確な見積りを提供することは、計画を立てる上での信頼性や予期しないコストの発生を防ぐために重要です。

以下は一般的な見積書のサンプルです。システム機器を導入するための具体的な金額が記載されています。

ソフトウェアの見積り

代表的なソフトウェアの見積方法には、以下のようなものがあります。

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

ファンクションポイント法は、ソフトウェア開発の規模や工数を見積る手法の一つで、ソフトウェアの機能を基準に見積ります。

まず、ソフトウェアが提供する機能を、外部入力、外部出力、内部論理ファイル、外部インタフェースファイルなどといったカテゴリー別に分割します。そして、分割した機能ごとに開発の難易度・複雑性に基づいて評価値(ファンクションポイント)を付与し、それらを合計することでソフトウェア全体の開発工数を見積ります。

ファンクションポイント法は、開発初期の段階でも見積りが可能であり、プログラミング言語や技術に依存しないという利点があります。また、利用者側に見える外部仕様、すなわち入出力画面や帳票を基準に見積りを行うため、依頼者側とのコンセンサス(合意)が取りやすいともいわれています。

一方で、この方法は人による主観的な評価が含まれるため、評価の一貫性を保つことが課題となります。また、機能の規模だけでは評価できない要素(性能要件など)がある場合、補足的な見積り手法を併用する必要があります。

類推見積法

類推見積法は、過去の類似プロジェクトのデータを基に、新しいプロジェクトの工数やコストを見積る方法です。

過去のプロジェクトの結果と現在のプロジェクトの要件を比較することで、必要なリソースやタイムラインを推測します。この方法は、類似性が高いプロジェクトに対して特に有効で、比較的費用がかからず、プロジェクトの初期段階から活用することができます。

しかし、類推見積法は見積りの正確性において、見積りを行う人の経験とスキルに大きく依存します。したがって、新しいタイプのプロジェクトや経験が乏しいプロジェクトについては、見積りが不正確になる可能性があります。

関連用語

開発工数(人日、人月、ステップ)

開発工数は、ソフトウェア開発プロジェクトにおいて、計画から完成までに要する作業の総時間です。

プロジェクトの範囲や複雑さに応じて、これらの時間は人日にんにち人月にんげつ、ステップといった単位で計測されます。

  1. 人日: 一人の作業者が1日で進められる作業の量です。例えば、プロジェクトの工数が10人日とされる場合、それは1人が10日間、または2人が5日間、あるいは10人が1日間で完了する作業量を示します。
  2. 人月: 一人の作業者が1か月(通常は20~22人日とされます)で進められる作業の量を指し、ソフトウェア開発の総工数を示す際によく使われます。たとえば、プロジェクトの工数が2人月とされる場合、それは1人が2ヶ月、または2人が1ヶ月、あるいは4人が半月で完了する作業量を示します。
  3. ステップ: プログラムの行数による見積り方法で、主にソースコードの量を示します。例えば、5000ステップという場合、それは約5000行のソースコードが必要であることを示します。

これらの単位を用いることで、プロジェクト全体の工数見積りを行い、必要なリソースの確保やスケジュールの計画が可能になりますが、以下のような注意点もあります。

  1. 線形的ではない: 人数を増やすことで必ずしも作業時間が線形的に短縮されるわけではありません。例えば1人で1時間かかる料理があるとしましょう。しかし、その料理の工程のすべてを同時に行うことはできないので、6人が集まっても必ずしも10分で料理が完成するわけではありません。
  2. コミュニケーションの増加: 人数が増えると、コミュニケーションの複雑さが増します。
  3. タスクの分割制限: すべてのタスクが等しく分割できるわけではありません。
  4. 熟練度の差: 同じ時間であっても異なる能力・経験の労働者が達成する作業量は異なります。

これらの要因を考慮せずに、単純に人日や人月、ステップ数で作業量や期間を推計すると、誤った予測や期待を持つことになる可能性があります。

そのため、見積りの精度を高めるためには、過去のプロジェクトのデータやファンクションポイント法など他の手法と併用することが一般的です。

人月の考え方
目次