|重み付け| B[調整前ファンクションポイント(UFP)の算出]\n C[14の汎用システム特性(GSC)の評価] –>|影響度| D[総合的な複雑度調整係数(VAF)の算出]\n B & D –>|積算| E[最終ファンクションポイント(FP)の算出]\n E –>|過去データに基づく変換| F[開発工数・コストの見積もり]”, “verify_level”: “Level 3”, “tweet_hint”: “ファンクションポイント法による開発規模見積もりをIPA午前Ⅱ対策として解説!UFP、VAF、最終FPの算出プロセスを理解しよう。#IPA午前Ⅱ #ファンクションポイント法 #ソフトウェア開発”, “link_hints”: [ “https://www.ipa.go.jp/archive/publish/pr_project/management/fp.html”, “https://www.ifpug.org/resources/” ] } –> 本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
IPA午前Ⅱ対策:ファンクションポイント法による開発規模見積もり
ファンクションポイント法は、ソフトウェアの機能的な複雑さを定量化し、開発規模を客観的に見積もる手法であり、その算出は要求定義段階から可能です。
graph TD
A["機能要素の識別"] -->|重み付け| B["調整前ファンクションポイント(UFP)の算出"]
C["14の汎用システム特性(GSC)の評価"] -->|影響度| D["総合的な複雑度調整係数(VAF)の算出"]
B & D -->|積算| E["最終ファンクションポイント(FP)の算出"]
E -->|過去データに基づく変換| F["開発工数・コストの見積もり"]
背景
ソフトウェア開発プロジェクトにおいて、開発規模の見積もりは、工数、コスト、納期の計画を立てる上で非常に重要です。初期段階での見積もり精度が低いと、プロジェクト全体のリスクを高めることになります。伝統的な見積もり手法であるソースコード行数(LOC)法は、プログラミング言語や開発者のスキルに依存し、要求定義段階では適用が難しいという課題がありました。
ファンクションポイント法は、このようなLOC法の欠点を補完するために、1970年代にIBMのアレン・J・アルブレヒトによって考案された手法です。ソフトウェアの機能的な複雑さに着目し、ユーザーが利用する機能の数や種類に基づいて規模を定量化します。この方法は、特定のプログラミング言語に依存せず、開発の初期段階(要求定義段階)から適用できるという大きなメリットがあります[1]。
問題点(IPAにおける出題の要点)
IPAの午前Ⅱ試験では、ファンクションポイント法における具体的な算出方法、特に「調整前ファンクションポイント(UFP)」と「総合的な複雑度調整係数(VAF)」の計算プロセスが問われることが多くあります。これらの要素の定義と、それらを組み合わせて最終的なファンクションポイント(FP)を導き出す計算式を正確に理解することが重要です。
計算手順と詳細
ファンクションポイント法による開発規模の見積もりは、主に以下の3つのステップで構成されます。
1. 調整前ファンクションポイント(UFP: Unadjusted Function Point)の算出
UFPは、ソフトウェアが提供する機能要素の数を数え、それぞれに重み付けをして合計したものです。機能要素は以下の5つのカテゴリに分類されます[2]。
| 機能要素 | 説明 | 重み付け(簡易/普通/複雑) |
|---|---|---|
| 外部入力 (EI) | システムにデータや制御情報を入力する機能 | 3 / 4 / 6 |
| 外部出力 (EO) | システムからデータや制御情報を出力する機能 | 4 / 5 / 7 |
| 外部照会 (EQ) | システムにデータ照会し、結果を出力する機能 | 3 / 4 / 6 |
| 内部論理ファイル (ILF) | システム内部に論理的に管理されるデータ群 | 7 / 10 / 15 |
| 外部インタフェースファイル (EIF) | 他システムで管理され、参照されるデータ群 | 5 / 7 / 10 |
各機能要素について、その複雑度(簡易、普通、複雑)を評価し、対応する重み付け係数を乗じて点数を算出します。これら全ての点数を合計したものがUFPです。
UFP = Σ (各機能要素の数 × 重み付け係数)
2. 総合的な複雑度調整係数(VAF: Value Adjustment Factor)の算出
VAFは、システムの全体的な特性が開発規模に与える影響を考慮するための係数です。以下の14の汎用システム特性(GSC: General System Characteristics)を、それぞれ0(影響なし)から5(強い影響)の6段階で評価します[2]。
データ通信
分散データ処理
処理性能
高頻度利用
取引率
オンラインデータ入力
エンドユーザー効率性
オンライン更新
複雑な処理
再利用性
インストール容易性
運用容易性
多地点利用
変更容易性
これらの評価点(Fi)を合計し、合計影響度(DI: Degree of Influence)を算出します。
DI = Σ Fi (i=1から14)
DIは0から70の範囲になります。VAFはDIを用いて以下の式で算出されます。
VAF = 0.65 + (0.01 × DI)
VAFは、DIが0の場合に0.65、DIが70の場合に1.35となり、0.65から1.35の範囲で変動します。
3. 最終ファンクションポイント(FP: Function Point)の算出
UFPとVAFを乗算することで、最終的なファンクションポイントを算出します。
FP = UFP × VAF
4. 開発工数・コストの見積もり
算出されたFP値は、過去の類似プロジェクトのデータに基づいて、開発工数やコストに変換されます。例えば、「1FPあたりの開発工数(人月)」や「1FPあたりの開発コスト(円)」といった生産性指標を使用します。
開発工数 = FP × 単位FPあたりの工数 開発コスト = FP × 単位FPあたりのコスト
これにより、客観的で比較的精度の高い見積もりが可能になります。
要点箇条書き
ファンクションポイント法は、ソフトウェアの機能的複雑さに基づき開発規模を見積もる手法である。
主な算出ステップは、調整前ファンクションポイント(UFP)の算出と、総合的な複雑度調整係数(VAF)による調整である。
UFPは、外部入力、外部出力、外部照会、内部論理ファイル、外部インタフェースファイルの5種類の機能要素に重み付けをして合計する。
VAFは、14の汎用システム特性(GSC)の合計影響度(DI)から算出される調整係数である(0.65 ≦ VAF ≦ 1.35)。
最終FPは FP = UFP × VAF で計算され、これを基に工数やコストを見積もる。
メリットは、要求定義段階での適用可能性、言語非依存性、生産性比較の容易さである。
参考文献
[1] IPA 独立行政法人情報処理推進機構. 「情報システム開発見積りガイドライン」関連資料. 2023年4月1日更新. https://www.ipa.go.jp/archive/publish/pr_project/management/fp.html [2] IFPUG (International Function Point Users Group) Official Website. Resources. 2024年3月15日更新. https://www.ifpug.org/resources/

