ファンクションポイント法とは
ファンクションポイント法(FP法:Function Point)は、開発するソフトウェアの「規模」や「開発工数(必要な人数や時間)」を見積もる手法の1つです。プログラムの「行数」を数えるのではなく、ユーザーから見たソフトウェアの「機能(インプット画面の数、レポート出力の数、連携するデータベースの数など)」の件数と、それぞれの「複雑さ(難易度)」を基準にポイントを点数化し、その合計点数から開発規模を見積もります。これにより、開発に使用する言語に関わらず、システム仕様書が固まった段階で客観的にお見積りを行えます。
具体例
例えば、新しく顧客管理システムを開発する際、「顧客登録画面(中難易度:4点)」「顧客データ保存(低難易度:5点)」「売上レポート印刷(高難易度:10点)」のように、各機能に点数を割り振って足し合わせます。合計が「19ファンクションポイント(FP)」となり、過去の実績データから「1FPあたり10時間かかる」とすれば、全体の開発見積もりは190時間と算出されます。
【見積もりの算出要素(例)】\n・外部入力 (EI): 入力画面、更新フォームの数と複雑さ\n・外部出力 (EO): 帳票印刷、PDF出力、メール送信機能の数と複雑さ\n・内部論理ファイル (ILF): システムが内部に持つテーブル・データベースの数と複雑さ\nこれらに重み(点数)をつけて合計値を求めます。もう少し詳しく
ファンクションポイント法(IFPUG法が一般的です)による見積もり手順は、大きく「未調整ファンクションポイント(UFP)」の算出と「調整ファンクションポイント(AFP)」の算出の2ステップに分かれます。まず、システムを構成する以下の5つの機能タイプを識別し、それぞれの複雑さ(低・中・高)に応じて定められた「重み係数(ポイント)」を掛けて足し合わせ、未調整FP(UFP)を求めます。・データファンクション:内部論理ファイル(ILF)、外部インターフェースファイル(EIF)。・トランザクションファンクション:外部入力(EI)、外部出力(EO)、外部照会(EQ)。次に、システムの「信頼性要求の高さ」「分散処理の有無」「変更の容易性」など、14項目の「技術的複雑さ特性値(値は0〜5)」を評価し、その合計から算出される「複雑さ補正係数(VAF:通常0.65〜1.35の範囲)」を未調整FPに乗算して、最終的な調整FP(AFP)を決定します。この手法により、プログラミング言語が何であるか(Java、Python、C++など)や、開発者の個人的な生産性の差に依存せず、要件定義書や画面設計書などの上流工程の成果物から客観的かつ標準的な「システム規模」を測定することができます。
試験でのポイント
応用情報技術者試験では、ファンクションポイント法の特徴、分類要素、および計算問題が頻出です。特徴として、「プログラムの記述行数(ソースコード行数:LOC)に依存せず、ユーザーが求める機能数や複雑さを基に、開発初期段階で見積もりが可能である」という点を選択させる問題が非常に多いです。また、5つのファンクションタイプ(EI, EO, EQ, ILF, EIF)の名前と意味を問う問題や、簡単な表が与えられて「未調整ファンクションポイントを計算し、補正係数を掛けて全体のファンクションポイントを求める」という基本計算もよく出題されます。記述式試験では、LOC法(ソースコード行数見積もり)の弱点(使用言語で生産性が変わる、開発初期には行数が分からない)を補う手法として、FP法が優れている理由を論理的に説明できるように準備しておくことが大切です。
関連する用語
ソースコードの行数から見積もるLOC法(ソースコード行数法)、数学的モデルを用いて見積もるCOCOMO(ココモ)、および画面や帳票の数から見積もる類推見積法があります。それぞれの見積もり手法のメリット・デメリットを整理して理解を深めましょう。