ファンクションポイント法(FP法:Function Point Method)について

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

ファンクションポイント法(FP法)とは

FP法とは、外部入出力や内部論理ファイル、外部照会、外部インタフェースなどの個数や特性などから、開発規模を見積もる手法です。
システムの外部仕様の情報から、その「システム機能」の量を算定してファンクションポイント(FP)を算出し、それを基にシステムの開発規模を見積もります。

FP法は、1979年に米国IBMのAllan Albrecht氏により考案された手法です。
1986年に設立されたIFPUG(International Function Point Users Group)が標準化を推進し、実施方法を「CPM(Counting Practice Manual)」という文書にまとめています。


FP法の特徴

FP法は、依頼者側とのコンセンサス(合意)が取りやすいという特徴があります。
FP法はソースコード規模や実装難易度という開発者の論理よりも、機能や操作というエンドユーザ目線の論理で見積りを行います。
例えば、入出力画面や帳票などはユーザに見える機能であるため、必要となる機能の充実度や機能数について、依頼者側とイメージを共有しながら見積りをすり合わせることができます。


FP法の計算方法

FP法の計測手法には、IFPUG 法、COSMIC 法、フルファンクションポイント法、フィーチャポイント法、MarkⅡ法、NESMA 概算法、SPR 法など様々な手法が提案されています。
一般的には、ISO/JIS規格にも採用されているIFPUG法が最も利用されています。


IFPUG法について

IFPUG法とは

IFPUG(International Function Point Users Group)とは、1986年にアメリカに設立された非営利組織です。
このIFPUGがファンクションポイントの計測手法を定義し、ISO / IEC 20926:2009の承認を得た計算方法がIFPUG法です。
IFPUG法はファンクションポイントの計算手法の1つであり、最も一般的に利用されている手法です。


IFPUG法の計算方法

(1)扱うデータを5 つのファンクション型に分類する。


 外部入力(EI)、外部出力(EO)、外部照会(EQ)、内部論理ファイル(ILF)、外部インタフェースファイル(EIF)

(2)ファンクションの複雑さを3段階に分類する。
 機能(データ)ごとの複雑さを「低」「中」「高」の3段階に分類して、それぞれに点数を与えます。
 ※過去の類例をもとにして分類する必要があります。

(3)システム全体の未調整FP(UFP:Unadjusted FP)を計算します。
 未調整FPとは、開発する機能ごとに複雑さの重みを付けたものを合算した値(調整係数)のことです。
 各データに3段階のファンクションの複雑さに応じた未調整FPを掛けて合計することで、システム全体の未調整FPを計算します。
 これは、システムの難易度を評価することになります。

(4) 複雑さを評価する。
システム特性として、以下の14項目について複雑さを0~5の6段階で評価し、システム特性の調整値を算出します。

データ通信、分散処理、性能、高負荷構成、要素処理(トランザクション)量、オンラインデータ入力、エンドユーザ効率
オンライン更新、複雑な処理、再利用可能性、インストール容易性、運用性、複数サイト、変更容易性

(5) システム特性係数を計算する。

システム特性係数 = システム特性の調整値 × 0.01+0.65

(6) FPを計算する。

FP = 未調整FP × システム特性係数


IFPUG法の計算例(基本情報試験の問題を引用)

下記表から、未調整FPは、24(4+10+10)となります。
複雑さの補正係数とは、システム特性係数のことです。
つまり、24×0.75を計算し、FP値は18と算出されます。



COSMIC法について

COSMIC法(The Common Software Measurement International Consortium)とは

COSMIC法とは、FP法の計算手法の1つであり、データ移動の数を数えることで機能規模を測定する手法です。
COSMIC-FFP(The Common Software Measurement International Consortium - Full Function Point)とも呼ばれます。

COSMIC法は、2002年にISO/IEC 19761として国際規格となり、日本では2006年にJIS X 0143としてJIS規格化されています。


COSMIC法の計算方法

(1)データ移動を型として識別し、エントリ、エグジット、読込み及び書込みの4種類に分類する。

指定 説明
エントリ(Entry) 外部からソフトウェアの入力
システムの境界からユーザインタフェースや通信を通じて入力されることに対応するデータ移動
エグジット(Exit) 外部からソフトウェアからの出力
UI や通信によりシステムの境界に出力されることに対応するデータ移動
読込み(Read) ソフトウェアから永続的ストレージからの読込み
書込み(Write) ソフトウェアから永続的ストレージへの書込み

(2)データ移動の型ごとに、その個数に単位規模を乗じる。
(3)2で得た型ごとの値の合計を、機能プロセスの機能規模とする。


関連ページ