ユースケースポイント法で工数を見積もる

n-ozawan

皆さん、こんにちは。技術開発グループのn-ozawanです。
チョコレートの原料であるカカオ豆は、昔はその貴重さから貨幣としても使われていました。1545年に書かれた記録では、野ウサギ1匹あたり、カカオ豆100粒で取引されていたそうです。

本題です。
前回、ユースケースでそのシステムの振る舞いを整理するお話をしました。そのユースケースを元に開発に必要な工数を見積もる手法「ユースケースポイント法」があります。今回はユースケースポイント法のやり方についてのお話です。

ユースケースポイント法

概要

ユースケースポイント法は、ユースケースを元にシステムの規模を計測し、工数を求める手法です。ユースケースポイント法に必要なインプットはユースケースのみですので、まだドメインモデルがない状態でも見積もれるのが強みと言えます。

ユースケースポイント法は以下に対して重み付けを行い、そこから得られた結果からシステムの規模 (UCP) を計測します。そして計測したUCPから工数を求めます。

  • ユースケース (UUCW)
  • アクター (UAW)
  • 技術要因 (TCF)
  • 環境要因 (EF)

やり方

UUCW (ユースケースへの重み付け)

ユースケースのトランザクション数をカウントして、そのユースケースの重み付けを行います。トランザクションとは、そのユースケースの基本経路と代替経路のステップの総数です。全てのユースケースに対して重み付けを行い、それらすべてを合計したのがUUCW (Unadjusted Use Case Weight)となります。

例えば、基本経路が以下の場合、トランザクション数は3とカウントして重みは5となります。もし該当のユースケースに代替経路がある場合は4以上となり重みは10(もしくは15)となります。

①システムは購入可能な商品を提示する。
②アクターは商品を選択して購入する。
③システムは購入結果(代金や消費税など)を提示する。

複雑度トランザクション数重み
単純1~35
平均4~710
複雑8~15

UAW (アクターへの重み付け)

アクターに対して重み付けをします。厳密にはアクターとシステム間でのやり取りの方法に対しての重み付けとなります。ユースケースごとにアクターの重み付けを行い、それらすべてを合計したのがUAW (Unadjusted Actor Weight)となります。

例えば、そのユースケースが単に関数コールで行われるのであれば、重みは1となります。もし、そのユースケースが画面操作で行われるのであれば、重みは3となります。

複雑度重み
単純プログラム同士のやり取り
関数呼び出し等
1
平均プロトコルを介したやり取り
WebAPI等
2
複雑画面操作によるやり取り3

TCF (技術要因への重み付け)

そのプロジェクトにおける技術要因に対して重み付けを行い、TCF (Technical Complexity Factor)を求めます。以下の各要因に対して、0~5の6段階(0は無関係、3は平均的、5は非常に重要)で評価します。

TFactor = 各要因を「重み × 評価」で計算した合計
TCF = 0.6 + (0.01 × TFactor)

番号要因重み
T1分散システムで構築するのか2
T2高いパフォーマンスを要求されているか2
T3オンラインで効率的に使えるようにする必要があるか1
T4内部構造が複雑か1
T5コードの再利用を求められているか1
T6インストール(構築)のし易さを求められているか0.5
T7高い使用性(使い勝手の良さ、高いUX)を要求されているか0.5
T8高い移植性を要求されているか2
T9変更のしやすさを求められているか1
T10同時使用を想定する必要があるのか1
T11セキュリティに特別な配慮が必要か1
T12サードパーティからAPIが利用されることを想定する必要があるか1
T13ユーザーの特別なトレーニングが必要か1

EF (環境要因への重み付け)

そのプロジェクトにおける環境要因に対して重み付けを行い、EF (Environmental Factor)を求めます。以下の各要因に対して、0~5の6段階(0は無関係、3は平均的、5は非常に重要)で評価します。

EFactor = 各要因を「重み × 評価」で計算した合計
EF = 1.4 + (-0.03 × EFactor)

番号要因重み
E1参画するメンバーが、採用するプロセス(工程)に慣れているか1.5
E2アプリケーション開発の経験があるか0.5
E3採用する方法論に慣れているか1
E4リーダーの能力が十分か0.5
E5メンバーのモチベーションが十分か1
E6仕様が安定しているか2
E7メンバーに外注もしくはアルバイトが含まれているか-1
E8難しいプログラミング言語を採用しているか-1

UCP (ユースケースポイント値の算出)

UUCWUAWTCFEFからUCPを求めます。

UCP = (UUCW + UAW) * TCF * EF

工数算出

ユースケースポイント法では二通りの計算方法が提唱されています。1つは「1UCP = 20時間」で計算することです。例えば300UCPの場合、開発に必要な工数は 300 × 20 で 6000人時(37.5人月)となります。

もう1つは、環境要因の評価から判断する方法です。E1~E6までの環境要因の評価が3より少ない数と、E7~E8の環境要因の評価が3より多い数を合計して、2個以下の場合は「1UCP = 20時間」、3~4個の場合は「1UCP = 28時間」、5個以上の場合はリスクが大きすぎると判断して開発を保留にします。

ただし、ユースケースポイント法では上記の計算方法はあくまで参考程度とし、1UCPを何時間とするかは過去の実績から各々のプロジェクトで決定した方が良いとされています。

おわりに

ユースケースポイント法は、ユースケースさえあれば工数が求められる手軽さがある一方、データ構造などのその他の要素を考慮していないため、その精度に懸念はあります。個人的には超概算見積もりとして利用するのが良いかと思います。

ではまた。

Recommendおすすめブログ