<p><!--
{
"title": "IPA午前Ⅱ:ファンクションポイント法によるソフトウェア規模見積もり",
"primary_category": "情報処理技術者試験",
"secondary_categories": ["プロジェクトマネジメント", "ソフトウェア開発"],
"tags": ["IPA午前Ⅱ", "ファンクションポイント法", "見積もり", "ソフトウェア開発", "プロジェクト管理"],
"summary": "ファンクションポイント法(FP法)は、ソフトウェアの機能要件に基づいてその規模を定量的に測定する手法です。外部入出力や内部論理ファイルなどの項目をカウントし、調整係数を適用することで、開発工数やコストの見積もりに活用されます。",
"mermaid": "graph TD\n A[機能要件分析] --> B{データ機能?}; \n B — Yes –> C[ILF/EIFカウント];\n B — No –> D{トランザクション機能?};\n D — Yes –> E[EI/EO/EQカウント];\n D — No –> A;\n C –> F[複雑度評価];\n E –> F;\n F –> G[非調整ファンクションポイント(UFP)算出];\n G –> H[汎用システム特性評価 (14項目)];\n H –> I[価値調整因子(VAF)算出];\n I –> J[調整ファンクションポイント(AFP)算出];\n J –> K[工数/コスト見積もり];\n style A fill:#f9f,stroke:#333,stroke-width:2px\n style K fill:#bbf,stroke:#333,stroke-width:2px”,
“verify_level”: “draft”,
“tweet_hint”: “IPA午前Ⅱ対策!ソフトウェア規模見積もりの定番「ファンクションポイント法」の概要と計算手順を図解で解説。”,
“link_hints”: []
}
–>
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">IPA午前Ⅱ:ファンクションポイント法によるソフトウェア規模見積もり</h1>
<p>ファンクションポイント法は、ソフトウェアの機能要件を基にその規模を定量化し、開発工数やコストを見積もるための標準的な手法である。</p>
<h2 class="wp-block-heading">背景</h2>
<p>ソフトウェア開発プロジェクトにおける見積もりは、その成否を左右する重要な要素である。従来、開発者の経験や過去の類似プロジェクトのデータに基づいて工数見積もりが行われることが多かったが、これは属人性が高く、客観性や再現性に欠けるという課題があった。プロジェクトの初期段階で精度高く規模を把握することは、計画策定やリソース配分において不可欠である。</p>
<h2 class="wp-block-heading">問題点</h2>
<p>経験に基づく見積もり手法は、特に新規性の高いプロジェクトや開発チームの変更があった場合にその精度が低下しやすかった。また、要求変更が生じた際の影響度を客観的に評価することも困難であった。このような背景から、ソフトウェアの「機能」に着目し、その数を定量的に測定することで、より客観的で標準化された見積もり手法が求められた。</p>
<h2 class="wp-block-heading">計算/手順</h2>
<p>ファンクションポイント法(FP法)は、以下の手順でソフトウェアの規模(ファンクションポイント:FP)を算出する。</p>
<ol class="wp-block-list">
<li><p><strong>データ機能およびトランザクション機能の識別とカウント</strong>
ソフトウェアが持つ機能は、大きく「データ機能」と「トランザクション機能」に分類される。</p>
<ul>
<li><p><strong>データ機能</strong></p>
<ul>
<li><p><strong>内部論理ファイル (ILF: Internal Logical File)</strong>: システム内部で管理される主要なデータの論理グループ。例:顧客情報ファイル。</p></li>
<li><p><strong>外部インターフェースファイル (EIF: External Interface File)</strong>: 他のシステムから参照または更新される、システム外部の主要なデータの論理グループ。例:外部システムの在庫情報。</p></li>
</ul></li>
<li><p><strong>トランザクション機能</strong></p>
<ul>
<li><p><strong>外部入力 (EI: External Input)</strong>: システム外部からデータを受け取り、内部のILFを更新したり、システムの状態を変更したりする処理。例:新規顧客登録。</p></li>
<li><p><strong>外部出力 (EO: External Output)</strong>: システム外部にデータを出力する処理で、その際、計算や集計などのロジックを含むもの。例:月次報告書生成。</p></li>
<li><p><strong>外部照会 (EQ: External Inquiry)</strong>: システム外部からの要求に応じて、内部データを検索し、出力する処理。ILFを更新しない。例:顧客情報参照。</p></li>
</ul></li>
</ul></li>
<li><p><strong>複雑度の評価と非調整ファンクションポイント (UFP) の算出</strong>
識別した各機能(ILF, EIF, EI, EO, EQ)に対し、データ要素タイプ (DET: Data Element Type) やファイル参照タイプ (FTR: File Type Referenced) の数に基づいて「単純」「平均」「複雑」の3段階で複雑度を評価する。
各複雑度レベルには、以下に示すような重み付けがされている(具体的な数値はIFPUG基準に準拠)。</p>
<table>
<thead>
<tr>
<th style="text-align:left;">機能タイプ</th>
<th style="text-align:left;">単純</th>
<th style="text-align:left;">平均</th>
<th style="text-align:left;">複雑</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;">ILF</td>
<td style="text-align:left;">7</td>
<td style="text-align:left;">10</td>
<td style="text-align:left;">15</td>
</tr>
<tr>
<td style="text-align:left;">EIF</td>
<td style="text-align:left;">5</td>
<td style="text-align:left;">7</td>
<td style="text-align:left;">10</td>
</tr>
<tr>
<td style="text-align:left;">EI</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">6</td>
</tr>
<tr>
<td style="text-align:left;">EO</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">5</td>
<td style="text-align:left;">7</td>
</tr>
<tr>
<td style="text-align:left;">EQ</td>
<td style="text-align:left;">3</td>
<td style="text-align:left;">4</td>
<td style="text-align:left;">6</td>
</tr>
</tbody>
</table>
<p>各機能タイプについてカウントした数に重み付け値を乗じ、それら全てを合計したものが<strong>非調整ファンクションポイント (UFP: Unadjusted Function Point)</strong> となる。</p>
<p><code>UFP = Σ (各機能タイプのカウント数 × 重み付け値)</code></p></li>
<li><p><strong>汎用システム特性 (GCF) の評価と価値調整因子 (VAF) の算出</strong>
ソフトウェア全体が持つ14の汎用システム特性(データ通信、分散機能、性能、利用頻度など)について、それぞれ0(関係なし)から5(不可欠)の6段階で評価する。この14項目の評価点の合計を<strong>汎用システム特性合計点 (TDI: Total Degree of Influence)</strong> とする。</p>
<p><code>TDI = Σ (14項目の評価点)</code></p>
<p>次に、TDIを用いて<strong>価値調整因子 (VAF: Value Adjustment Factor)</strong> を算出する。</p>
<p><code>VAF = 0.65 + (TDI × 0.01)</code></p>
<p>VAFは0.65から1.35の範囲で変動し、システム全体の非機能要件や開発環境の特性を考慮する。</p></li>
<li><p><strong>調整ファンクションポイント (AFP) の算出</strong>
最後に、UFPにVAFを乗じることで、最終的なソフトウェア規模を示す<strong>調整ファンクションポイント (AFP: Adjusted Function Point)</strong> を算出する。</p>
<p><code>AFP = UFP × VAF</code></p>
<p>このAFPは、開発工数(人月)やコストを見積もる際の根拠となる。例えば、「1FPあたりX人月」といった形で、過去の実績データに基づいた変換係数を用いて工数を見積もる。</p></li>
</ol>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["機能要件分析"] --> B{"データ機能?"};
B -- Yes --> C["ILF/EIFカウント"];
B -- No --> D{"トランザクション機能?"};
D -- Yes --> E["EI/EO/EQカウント"];
D -- No --> A;
C --> F["複雑度評価"];
E --> F;
F --> G["非調整ファンクションポイント(UFP)算出"];
G --> H["汎用システム特性評価 (14項目)"];
H --> I["価値調整因子(VAF)算出"];
I --> J["調整ファンクションポイント(AFP)算出"];
J --> K["工数/コスト見積もり"];
style A fill:#e0e7ff,stroke:#333,stroke-width:2px
style K fill:#e0e7ff,stroke:#333,stroke-width:2px
</pre></div>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li><p>ファンクションポイント法は、ソフトウェアの機能要件に基づいて規模を定量的に測定する。</p></li>
<li><p>主要なステップは、機能の識別とカウント、非調整FP (UFP) の算出、価値調整因子 (VAF) の適用、そして調整FP (AFP) の算出である。</p></li>
<li><p>UFPはデータ機能(ILF, EIF)とトランザクション機能(EI, EO, EQ)の数とその複雑度から導き出される。</p></li>
<li><p>VAFは14の汎用システム特性を評価することで、システム全体の複雑性や特性を考慮する。</p></li>
<li><p>AFPは、開発工数やコストの見積もりの客観的な根拠として活用される。</p></li>
</ul>
B{データ機能?}; \n B — Yes –> C[ILF/EIFカウント];\n B — No –> D{トランザクション機能?};\n D — Yes –> E[EI/EO/EQカウント];\n D — No –> A;\n C –> F[複雑度評価];\n E –> F;\n F –> G[非調整ファンクションポイント(UFP)算出];\n G –> H[汎用システム特性評価 (14項目)];\n H –> I[価値調整因子(VAF)算出];\n I –> J[調整ファンクションポイント(AFP)算出];\n J –> K[工数/コスト見積もり];\n style A fill:#f9f,stroke:#333,stroke-width:2px\n style K fill:#bbf,stroke:#333,stroke-width:2px”,
“verify_level”: “draft”,
“tweet_hint”: “IPA午前Ⅱ対策!ソフトウェア規模見積もりの定番「ファンクションポイント法」の概要と計算手順を図解で解説。”,
“link_hints”: []
}
–>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
IPA午前Ⅱ:ファンクションポイント法によるソフトウェア規模見積もり
ファンクションポイント法は、ソフトウェアの機能要件を基にその規模を定量化し、開発工数やコストを見積もるための標準的な手法である。
背景
ソフトウェア開発プロジェクトにおける見積もりは、その成否を左右する重要な要素である。従来、開発者の経験や過去の類似プロジェクトのデータに基づいて工数見積もりが行われることが多かったが、これは属人性が高く、客観性や再現性に欠けるという課題があった。プロジェクトの初期段階で精度高く規模を把握することは、計画策定やリソース配分において不可欠である。
問題点
経験に基づく見積もり手法は、特に新規性の高いプロジェクトや開発チームの変更があった場合にその精度が低下しやすかった。また、要求変更が生じた際の影響度を客観的に評価することも困難であった。このような背景から、ソフトウェアの「機能」に着目し、その数を定量的に測定することで、より客観的で標準化された見積もり手法が求められた。
計算/手順
ファンクションポイント法(FP法)は、以下の手順でソフトウェアの規模(ファンクションポイント:FP)を算出する。
データ機能およびトランザクション機能の識別とカウント
ソフトウェアが持つ機能は、大きく「データ機能」と「トランザクション機能」に分類される。
データ機能
トランザクション機能
外部入力 (EI: External Input): システム外部からデータを受け取り、内部のILFを更新したり、システムの状態を変更したりする処理。例:新規顧客登録。
外部出力 (EO: External Output): システム外部にデータを出力する処理で、その際、計算や集計などのロジックを含むもの。例:月次報告書生成。
外部照会 (EQ: External Inquiry): システム外部からの要求に応じて、内部データを検索し、出力する処理。ILFを更新しない。例:顧客情報参照。
複雑度の評価と非調整ファンクションポイント (UFP) の算出
識別した各機能(ILF, EIF, EI, EO, EQ)に対し、データ要素タイプ (DET: Data Element Type) やファイル参照タイプ (FTR: File Type Referenced) の数に基づいて「単純」「平均」「複雑」の3段階で複雑度を評価する。
各複雑度レベルには、以下に示すような重み付けがされている(具体的な数値はIFPUG基準に準拠)。
| 機能タイプ |
単純 |
平均 |
複雑 |
| ILF |
7 |
10 |
15 |
| EIF |
5 |
7 |
10 |
| EI |
3 |
4 |
6 |
| EO |
4 |
5 |
7 |
| EQ |
3 |
4 |
6 |
各機能タイプについてカウントした数に重み付け値を乗じ、それら全てを合計したものが非調整ファンクションポイント (UFP: Unadjusted Function Point) となる。
UFP = Σ (各機能タイプのカウント数 × 重み付け値)
汎用システム特性 (GCF) の評価と価値調整因子 (VAF) の算出
ソフトウェア全体が持つ14の汎用システム特性(データ通信、分散機能、性能、利用頻度など)について、それぞれ0(関係なし)から5(不可欠)の6段階で評価する。この14項目の評価点の合計を汎用システム特性合計点 (TDI: Total Degree of Influence) とする。
TDI = Σ (14項目の評価点)
次に、TDIを用いて価値調整因子 (VAF: Value Adjustment Factor) を算出する。
VAF = 0.65 + (TDI × 0.01)
VAFは0.65から1.35の範囲で変動し、システム全体の非機能要件や開発環境の特性を考慮する。
調整ファンクションポイント (AFP) の算出
最後に、UFPにVAFを乗じることで、最終的なソフトウェア規模を示す調整ファンクションポイント (AFP: Adjusted Function Point) を算出する。
AFP = UFP × VAF
このAFPは、開発工数(人月)やコストを見積もる際の根拠となる。例えば、「1FPあたりX人月」といった形で、過去の実績データに基づいた変換係数を用いて工数を見積もる。
graph TD
A["機能要件分析"] --> B{"データ機能?"};
B -- Yes --> C["ILF/EIFカウント"];
B -- No --> D{"トランザクション機能?"};
D -- Yes --> E["EI/EO/EQカウント"];
D -- No --> A;
C --> F["複雑度評価"];
E --> F;
F --> G["非調整ファンクションポイント(UFP)算出"];
G --> H["汎用システム特性評価 (14項目)"];
H --> I["価値調整因子(VAF)算出"];
I --> J["調整ファンクションポイント(AFP)算出"];
J --> K["工数/コスト見積もり"];
style A fill:#e0e7ff,stroke:#333,stroke-width:2px
style K fill:#e0e7ff,stroke:#333,stroke-width:2px
要点
ファンクションポイント法は、ソフトウェアの機能要件に基づいて規模を定量的に測定する。
主要なステップは、機能の識別とカウント、非調整FP (UFP) の算出、価値調整因子 (VAF) の適用、そして調整FP (AFP) の算出である。
UFPはデータ機能(ILF, EIF)とトランザクション機能(EI, EO, EQ)の数とその複雑度から導き出される。
VAFは14の汎用システム特性を評価することで、システム全体の複雑性や特性を考慮する。
AFPは、開発工数やコストの見積もりの客観的な根拠として活用される。
コメント