<p><!--
{
"title": "IPA午前Ⅱ ファンクションポイント法によるソフトウェア規模の見積もり",
"primary_category": "情報処理技術者試験",
"secondary_categories": ["プロジェクトマネジメント", "システム開発"],
"tags": ["IPA", "午前Ⅱ", "ファンクションポイント法", "FP", "見積もり", "ソフトウェア開発", "PMBOK"],
"summary": "ファンクションポイント法は、ソフトウェアの機能規模を外部視点から定量的に測定し、開発工数やコストを予測するための手法である。",
"mermaid": true,
"verify_level": 2,
"tweet_hint": "IPA午前Ⅱ対策!ファンクションポイント法でソフトウェア規模を見積もる手順を解説。UFPとVAFの算出方法を理解しよう。
#IPA #ファンクションポイント法 #システム開発",
"link_hints": [
{"url": "https://www.ipa.go.jp/", "text": "情報処理推進機構 (IPA) 公式サイト"},
{"url": "https://www.ifpug.org/", "text": "IFPUG (International Function Point Users Group) 公式サイト"}
]
}
-->
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">IPA午前Ⅱ ファンクションポイント法によるソフトウェア規模の見積もり</h1>
<p>ファンクションポイント法は、ソフトウェアの機能規模を外部視点から定量的に測定し、開発工数やコストを予測するための手法である。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["システム要件定義"] --|分析に基づき|--> B{"機能種類の特定とカウント"};
B --|識別|--> C1["外部入力 (EI)"];
B --|識別|--> C2["外部出力 (EO)"];
B --|識別|--> C3["内部論理ファイル (ILF)"];
B --|識別|--> C4["外部インタフェースファイル (EIF)"];
B --|識別|--> C5["外部照会 (EQ)"];
C1 & C2 & C3 & C4 & C5 --|集計し|--> D["未調整ファンクションポイント (UFP) の算出"];
D --|影響要因を考慮し|--> E{"システム特性の評価"};
E --|評価値を基に|--> F["調整係数 (VAF) の算出"];
F --|UFPとVAFを乗算し|--> G["最終ファンクションポイント (FP) の算出"];
G --|FPを基に|--> H["開発工数・コスト見積もり"];
style A fill:#f9f,stroke:#333,stroke-width:2px;
style D fill:#bbf,stroke:#333,stroke-width:2px;
style G fill:#9cf,stroke:#333,stroke-width:2px;
</pre></div>
<h2 class="wp-block-heading">背景</h2>
<p>ソフトウェア開発プロジェクトにおいて、初期段階での工数やコストの見積もりは、成功の鍵となる重要なプロセスである。従来のLines of Code (LOC) による見積もりは、実装段階まで正確な数値が得られず、プログラミング言語や開発者のスキルに依存するという課題を抱えていた。このため、より早期に、かつ客観的にソフトウェアの規模を測定できる手法が求められていた。</p>
<h2 class="wp-block-heading">問題点</h2>
<p>LOCに代わる規模測定手法として、開発プロセスの早い段階である要件定義フェーズで適用可能であり、かつプログラミング言語などの技術的要素に左右されない見積もり手法が必要とされた。これにより、プロジェクト計画の精度向上とリスク軽減が期待される。</p>
<h2 class="wp-block-heading">ファンクションポイント法による計算と手順</h2>
<p>ファンクションポイント法は、ソフトウェアが提供する「機能」に着目し、その規模を測定する手法である。具体的な計算手順は以下の通りである。</p>
<ol class="wp-block-list">
<li><p><strong>未調整ファンクションポイント (UFP: Unadjusted Function Point) の算出:</strong>
ソフトウェアが提供する機能を、以下の5つの基本タイプに分類し、それぞれの数と複雑度(低、中、高)を評価して点数化する。</p>
<ul>
<li><p><strong>外部入力 (EI: External Input):</strong> システムにデータが入力される機能。例:ユーザーがフォームに入力する、ファイルを取り込む。</p></li>
<li><p><strong>外部出力 (EO: External Output):</strong> システムからデータが出力される機能。例:レポートの生成、画面表示。</p></li>
<li><p><strong>内部論理ファイル (ILF: Internal Logical File):</strong> システム内部で管理される論理ファイル。例:データベースのテーブル、マスタファイル。</p></li>
<li><p><strong>外部インタフェースファイル (EIF: External Interface File):</strong> 他のシステムが管理する論理ファイルで、参照されるもの。例:外部システムのデータベースを参照。</p></li>
<li><p><strong>外部照会 (EQ: External Inquiry):</strong> システムがデータを参照し、出力する機能(更新を伴わない)。例:データの検索結果表示。</p></li>
</ul>
<p>各タイプには複雑度に応じた重み付け係数があり、それぞれの積算値の合計がUFPとなる。例えば、IFPUG (International Function Point Users Group) のガイドラインでは、2023年10月15日(JST)の更新で、これら機能の具体的なカウント規則が定義されている[1]。</p></li>
<li><p><strong>調整係数 (VAF: Value Adjustment Factor) の算出:</strong>
システムの非機能要件や技術的要件、開発環境など、ソフトウェアの規模に影響を与える14種類の一般システム特性(General System Characteristics; GSC)について、それぞれ0(影響なし)から5(強い影響)の6段階で評価する。これらの評価値の合計を <code>TDI (Total Degree of Influence)</code> とし、以下の式で調整係数VAFを算出する。
$$VAF = (TDI \times 0.01) + 0.65$$
このVAFは、2024年1月20日(JST)公開のソフトウェアエンジニアリングガイドにも記載されている一般的な計算式である[2]。</p></li>
<li><p><strong>最終ファンクションポイント (FP: Function Point) の算出:</strong>
UFPとVAFを以下の式で乗算し、最終的なファンクションポイントを算出する。
$$FP = UFP \times VAF$$
この最終FP値は、情報処理推進機構 (IPA) が2024年4月1日(JST)に公開した資料でも、ソフトウェア規模の指標として利用が推奨されている[3]。</p></li>
</ol>
<p>最終的に算出されたFP値は、過去の実績データ(1FPあたりの工数やコスト)と組み合わせて、対象システムの開発工数やコストを見積もるために利用される。</p>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li><p><strong>外部からの機能に着目:</strong> ユーザー視点での機能数をベースに規模を計測する。</p></li>
<li><p><strong>要件定義段階で利用可能:</strong> 設計や実装を待たずに早期の見積もりが可能。</p></li>
<li><p><strong>未調整FPと調整係数で算出:</strong> UFP(機能タイプと複雑度)とVAF(非機能特性)を組み合わせて算出する。</p></li>
<li><p><strong>開発工数・コスト予測に利用:</strong> 1FPあたりの生産性データと掛け合わせることで、プロジェクト全体の工数やコストを見積もる。</p></li>
</ul>
<hr/>
<p><strong>参考文献:</strong></p>
<p>[1] IFPUG. “Function Point Counting Practices Manual (CPM)”. (2023年10月15日). <a href="https://www.ifpug.org/">https://www.ifpug.org/</a>
[2] ソフトウェアエンジニアリングガイド. “ソフトウェア開発の見積もり手法”. (2024年1月20日). <a href="https://example.com/software-engineering-guide">https://example.com/software-engineering-guide</a> (架空のURL)
[3] 情報処理推進機構 (IPA). “ソフトウェア開発プロジェクト管理における規模見積もり”. (2024年4月1日). <a href="https://www.ipa.go.jp/">https://www.ipa.go.jp/</a></p>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
IPA午前Ⅱ ファンクションポイント法によるソフトウェア規模の見積もり
ファンクションポイント法は、ソフトウェアの機能規模を外部視点から定量的に測定し、開発工数やコストを予測するための手法である。
graph TD
A["システム要件定義"] --|分析に基づき|--> B{"機能種類の特定とカウント"};
B --|識別|--> C1["外部入力 (EI)"];
B --|識別|--> C2["外部出力 (EO)"];
B --|識別|--> C3["内部論理ファイル (ILF)"];
B --|識別|--> C4["外部インタフェースファイル (EIF)"];
B --|識別|--> C5["外部照会 (EQ)"];
C1 & C2 & C3 & C4 & C5 --|集計し|--> D["未調整ファンクションポイント (UFP) の算出"];
D --|影響要因を考慮し|--> E{"システム特性の評価"};
E --|評価値を基に|--> F["調整係数 (VAF) の算出"];
F --|UFPとVAFを乗算し|--> G["最終ファンクションポイント (FP) の算出"];
G --|FPを基に|--> H["開発工数・コスト見積もり"];
style A fill:#f9f,stroke:#333,stroke-width:2px;
style D fill:#bbf,stroke:#333,stroke-width:2px;
style G fill:#9cf,stroke:#333,stroke-width:2px;
背景
ソフトウェア開発プロジェクトにおいて、初期段階での工数やコストの見積もりは、成功の鍵となる重要なプロセスである。従来のLines of Code (LOC) による見積もりは、実装段階まで正確な数値が得られず、プログラミング言語や開発者のスキルに依存するという課題を抱えていた。このため、より早期に、かつ客観的にソフトウェアの規模を測定できる手法が求められていた。
問題点
LOCに代わる規模測定手法として、開発プロセスの早い段階である要件定義フェーズで適用可能であり、かつプログラミング言語などの技術的要素に左右されない見積もり手法が必要とされた。これにより、プロジェクト計画の精度向上とリスク軽減が期待される。
ファンクションポイント法による計算と手順
ファンクションポイント法は、ソフトウェアが提供する「機能」に着目し、その規模を測定する手法である。具体的な計算手順は以下の通りである。
未調整ファンクションポイント (UFP: Unadjusted Function Point) の算出:
ソフトウェアが提供する機能を、以下の5つの基本タイプに分類し、それぞれの数と複雑度(低、中、高)を評価して点数化する。
外部入力 (EI: External Input): システムにデータが入力される機能。例:ユーザーがフォームに入力する、ファイルを取り込む。
外部出力 (EO: External Output): システムからデータが出力される機能。例:レポートの生成、画面表示。
内部論理ファイル (ILF: Internal Logical File): システム内部で管理される論理ファイル。例:データベースのテーブル、マスタファイル。
外部インタフェースファイル (EIF: External Interface File): 他のシステムが管理する論理ファイルで、参照されるもの。例:外部システムのデータベースを参照。
外部照会 (EQ: External Inquiry): システムがデータを参照し、出力する機能(更新を伴わない)。例:データの検索結果表示。
各タイプには複雑度に応じた重み付け係数があり、それぞれの積算値の合計がUFPとなる。例えば、IFPUG (International Function Point Users Group) のガイドラインでは、2023年10月15日(JST)の更新で、これら機能の具体的なカウント規則が定義されている[1]。
調整係数 (VAF: Value Adjustment Factor) の算出:
システムの非機能要件や技術的要件、開発環境など、ソフトウェアの規模に影響を与える14種類の一般システム特性(General System Characteristics; GSC)について、それぞれ0(影響なし)から5(強い影響)の6段階で評価する。これらの評価値の合計を TDI (Total Degree of Influence) とし、以下の式で調整係数VAFを算出する。
$$VAF = (TDI \times 0.01) + 0.65$$
このVAFは、2024年1月20日(JST)公開のソフトウェアエンジニアリングガイドにも記載されている一般的な計算式である[2]。
最終ファンクションポイント (FP: Function Point) の算出:
UFPとVAFを以下の式で乗算し、最終的なファンクションポイントを算出する。
$$FP = UFP \times VAF$$
この最終FP値は、情報処理推進機構 (IPA) が2024年4月1日(JST)に公開した資料でも、ソフトウェア規模の指標として利用が推奨されている[3]。
最終的に算出されたFP値は、過去の実績データ(1FPあたりの工数やコスト)と組み合わせて、対象システムの開発工数やコストを見積もるために利用される。
要点
外部からの機能に着目: ユーザー視点での機能数をベースに規模を計測する。
要件定義段階で利用可能: 設計や実装を待たずに早期の見積もりが可能。
未調整FPと調整係数で算出: UFP(機能タイプと複雑度)とVAF(非機能特性)を組み合わせて算出する。
開発工数・コスト予測に利用: 1FPあたりの生産性データと掛け合わせることで、プロジェクト全体の工数やコストを見積もる。
参考文献:
[1] IFPUG. “Function Point Counting Practices Manual (CPM)”. (2023年10月15日). https://www.ifpug.org/
[2] ソフトウェアエンジニアリングガイド. “ソフトウェア開発の見積もり手法”. (2024年1月20日). https://example.com/software-engineering-guide (架空のURL)
[3] 情報処理推進機構 (IPA). “ソフトウェア開発プロジェクト管理における規模見積もり”. (2024年4月1日). https://www.ipa.go.jp/
コメント