TRACERY Lab.(トレラボ)

TRACERY開発チームが、要件定義を中心として、システム開発で役立つ考え方や手法を紹介します。

RDRAで見積りを行う方法その2〜ウォーターフォール開発・工数編

シリーズ: モデルベース要件定義手法RDRA

TRACERYプロダクトマネージャーの haru です。

システム開発の見積りは、多くの場合「経験」と「勘」に依存しています。 同じシステムでも、担当者によって見積りが大きく異なることも珍しくありません。

「RDRAx見積りシート」は、RDRAで整理された要件モデルをもとに、機能規模(SFP)を算出し、それを工数・工期・見積金額に変換することで、根拠のある見積りを作成できる仕組みです。

本記事では、ウォーターフォール用見積りシートを例に、最初のステップである「工数算出」の仕組みと考え方を解説します。

ウォーターフォール用見積りシートの全体像

下図にウォーターフォール用見積りシートの全体像を示します。

ウォーターフォール用見積りシートの全体像

ウォーターフォール用見積りシートは、次の3段階で見積りを算出します。

  1. 要件モデルから機能規模(SFP)を算出
  2. 機能規模を生産性で割り、開発工数を算出
  3. 工数から工期見積金額を算出

本記事では、そのうち工数の算出方法に絞って説明します。

SFPを算出する

SFPとは、シンプルファンクションポイント法(Simple Function Point)の略で、システムの機能規模を簡易的に定量化するための計測手法です。

「RDRAx見積りシート」のSFPでは、次の2種類の要素をカウントすることで開発規模をポイントとして算出します。

  • EP(要素処理)
    • RDRAの要素
      • 画面
      • イベント(外部システムとのインターフェース)
      • タイマー(定時バッチ処理)
  • LF(論理ファイル)
    • RDRAの要素
      • 情報(データ)

SFPの詳細は、前回の記事の「シンプルファンクションポイント法(SFP)とは」を参照してください。

EP数とLF数の確定

参照設定」シートで実施します。

EP(要素処理)基礎数は、RDRAから抽出した画面・イベント・タイマーを元に自動で算出されます。算出値を変更したい場合は、「EP基礎数(補正)」列に値を入力することで上書きできます(下図)。

EP基礎数の補正

たとえば、特定の画面やイベントなどのビジネスロジックが複雑であることが事前に分かっている場合は、その複雑さを反映した値に修正することで、より実態に即した工数算出が可能になります。

LF(論理ファイル)数は、シート上での直接変更はできません。変更が必要な場合は、「RDRA定義・分析Sheet」の「情報」シートを修正してください。

ここからは、ウォーターフォール用見積りシートの各項目について説明します。

SFPの算出

参照設定」シートで算出された「EP(要素処理)数」と「LF(論理ファイル)数」をもとに、SFPで定められた計算式に従ってSFPが算出されます(下図の「全体SFP」)。

SFP算出

ポイントとは

開発の見積りにおいて、ポイントとは「開発規模の尺度」であり、システムの「大きさ」を表す単位です。画面数や機能数など、システムが持つ要素をもとに算出するため、人やチームのスキル・開発環境に依存しない客観的な指標となります。

同じ規模のシステムであれば、プロジェクトや組織が異なっても同じポイントが算出されることが理想であり、見積りの根拠を共通言語として関係者間で共有できる点が大きなメリットです。

アジャイル開発では、ユーザーストーリーごとに相対的な規模を見積もるストーリーポイントが広く使用されます。

絶対的な作業時間ではなく、チーム内の相対比較で規模を表すため、見積りのスピードと柔軟性が高まる点が特徴です。

SFPを開発工数(人月)に変換する

ポイントから工数を算出するには、「生産性」を用いて以下の式で計算します。

工数 = ポイント ÷ 生産性

生産性は、組織の開発能力を表す重要な指標です。

見積りの精度は、この「生産性」の設定に大きく依存します。

実際のプロジェクトでは、同じ規模のシステムでも以下によって生産性は大きく変化します。

  • 開発チームのスキル
  • 開発プロセス
  • 技術スタック
  • 非機能要件の厳しさ

ウォーターフォール用見積りシートでは、「全工程開発生産性」を入力することで、開発工数(人月)が自動で算出されます。

全工程開発生産性とは、1人月あたりに消化できるポイント数を示す指標です。たとえば、値が10の場合、1人月で10ポイント分の開発が可能であることを意味します。この値はチームのスキルや過去の実績をもとに設定するため、プロジェクトの特性や組織の経験値を見積りに反映できます。

なお、アジャイル開発における生産性の指標としてベロシティがあります。これは、1スプリント(通常1〜4週間)で完了できる作業量をストーリーポイントの合計値で表したものです。

ウォーターフォールの「全工程開発生産性」とアジャイルの「ベロシティ」は、どちらも「単位期間あたりの生産性」を示すという点で共通しており、概念として対応しています。

下図の例では、240ポイントの開発規模に対して、全工程開発生産性を10SFP/人月と設定した結果、開発工数が24人月と算出されています。

全工程開発生産性を自組織の実績に即した適切な値に設定することで、規模に対して精度の高い工数算出が可能になります。

値を変更する場合は、「全工程開発生産性」の欄を直接入力してください。

過去のプロジェクト実績や業界標準値を参考に設定することを推奨します。

SFPを開発工数(人月)に変換する

開発工数(工程別)の算出

全工程開発工数をもとに、各工程(基本設計・詳細設計・製造・結合テスト・総合テスト)の開発工数を算出します。

全工程開発工数は、以下の比率に基づいて各工程に分配されます。

  • 基本設計: 15.0%
  • 詳細設計: 20.0%
  • 製造: 35.0%
  • 結合テスト: 15.0%
  • 総合テスト: 15.0%

この比率は「ソフトウェアデータ白書2018-2019(IPA発行)*1」を参考に設定されています。

一般的なウォーターフォール開発では、製造工程が最も工数を占めますが、設計工程・テスト工程も相応の割合を要します。多くの統計データでは、以下のような傾向が見られます。

  • 製造(実装、単体テスト):30〜40%
  • 設計(基本設計、詳細設計):30〜40%
  • テスト(結合テスト、総合テスト):20〜30%

初期値はこの傾向に沿った設定となっていますが、プロジェクトの特性や組織の標準工程比率に合わせて変更したい場合は、「開発工数比率(見直し後)」欄の値を直接入力することで、各工程の開発工数を調整できます。

SFPを開発工数(人月)に変換する

開発規模に比例しない工数(基盤工数、移行工数など)をユーザーが入力する

SFPで算出したポイントに関係のない工数を、工程ごとに入力します(下図)。

開発規模に比例しない工数(工程別)

  • 基盤工数
    • インフラ構築・ミドルウェア設定・開発環境整備など、システム基盤の構築に必要な工数
  • 移行工数
    • 既存システムのデータや機能を新システムへ移行するための設計・実装・検証に必要な工数
  • 運用準備工数
    • 運用マニュアルの整備・監視設定・運用担当者へのトレーニングなど、本番稼働に向けた準備に必要な工数
  • その他の工数
    • 上記に分類されないプロジェクト固有の作業(外部機関との調整、セキュリティ対応など)に必要な工数

各工程の全体工数欄には、開発工数(工程別)と、開発規模に比例しない工数の合計値が算出されます。

管理工数を算出する

管理工数とは、プロジェクトマネジメントに必要な工数です。

進捗管理・品質管理・リスク管理・顧客折衝(定例会議・報告業務を含む)・メンバーへの指示・調整など、開発作業そのものではなく、プロジェクトを円滑に推進するために必要な作業が該当します。

管理工数は、一般的に以下の式で算出されます。

管理工数 = (開発工数 + 開発規模に比例しない工数)× 管理工数率

管理工数率は初期値として10%が設定されており、各工程の「管理工数」欄に自動で算出されます(下図)。

管理工数の算出

プロジェクトの規模や複雑さ、組織の標準に応じて「管理工数比率」欄の値を変更することで、管理工数を調整できます。

一般的に、プロジェクトの規模が大きいほど、あるいは関係者や開発拠点が多いほど、管理工数の割合は高くなる傾向があります。

過去のプロジェクト実績を参考に、実態に即した値を設定することを推奨します。

全体工数と開発工程ごとの工数を算出する

これまで算出した各種の工数を、以下の式で合計します。

全体工数 = 開発工数 + 開発規模に比例しない工数 + 管理工数

全体および工程別の工数合計が自動で算出されます(下図)。

全体工数

この合計値が、工期算出や見積金額算出の基礎となります。

最後に

本記事では、「RDRAx見積りシート」のウォーターフォール開発用シートにおける工数算出の仕組みを説明しました。

工数算出の流れを整理すると、以下のようになります。

  1. RDRAの要件モデルからSFPを算出する
  2. SFPと全工程開発生産性をもとに、開発工数(工程別)を算出する
  3. 開発規模に比例しない工数(基盤・移行・運用準備など)を入力する
  4. 管理工数を算出する
  5. 手順2〜4で算出・入力した工数を合計し、全体工数と工程別工数を確定する

RDRAx見積りシートの特徴は、以下の構造で見積りを行う点にあります。

要件モデル → 機能規模 → 工数 → 工期・金額

これにより、見積りの根拠を「経験」ではなく「モデル」に基づいて説明できるようになります。プロジェクト関係者との合意形成や、見積り精度の継続的な改善にもつながります。

次回の記事では、算出した工数をもとに工期見積金額を算出する方法について説明します。

この記事を書いた人
haru

佐藤治夫。株式会社ビープラウド代表取締役社長。TRACERYのプロダクトマネージャー。エンジニアとして活動を始めて以来、モデリングを中心としたソフトウェアエンジニアリングを実践している。Xアカウント: https://x.com/haru860

*1:「ソフトウェアデータ白書2018-2019(IPA発行)」のp.184、図表7-1-16「工程別の実績工数の比率の基本統計量(新規開発)」における"中央値"。)