<div class="codehilite">
<pre data-enlighter-language="generic"><!--
{
"title": "IPA午前Ⅱ:ファンクションポイント法における未調整ファンクションポイントの算出",
"primary_category": "ソフトウェア開発",
"secondary_categories": ["見積もり", "プロジェクト管理"],
"tags": ["ファンクションポイント法", "ソフトウェアメトリクス", "見積もり手法", "IPA午前Ⅱ"],
"summary": "ファンクションポイント法における未調整ファンクションポイント(UFP)の計算方法を解説。ソフトウェアの機能要素を識別し、複雑度に応じた重み付けを行い合計する手順を詳述。",
"mermaid": "graph TD; A[機能要素の識別] --> B{各要素の複雑度評価}; B --> C{重み付けの適用}; C --> D[各要素の重み付きファンクションポイント算出]; D --> E[全要素の合計]; E --> F[未調整ファンクションポイント(UFP)];",
"verify_level": 2,
"tweet_hint": "IPA午前Ⅱ対策!ファンクションポイント法の未調整FP算出プロセスを徹底解説。各要素の重み付けと合計でソフトウェア規模を見積もる手順を図解で理解しよう。
#IPA #午前Ⅱ #ファンクションポイント",
"link_hints": [
{"text": "IFPUG 公式サイト", "url": "https://www.ifpug.org/"},
{"text": "IPA 独立行政法人 情報処理推進機構", "url": "https://www.ipa.go.jp/"}
]
}
-->
</pre>
</div>
<p>本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">IPA午前Ⅱ:ファンクションポイント法における未調整ファンクションポイントの算出</h1>
<p>ソフトウェアの機能規模を定量化する未調整ファンクションポイントの計算手順を解説。</p>
<p>ソフトウェア開発の見積もりは、プロジェクトの成否を左右する重要なプロセスです。工数やコストを正確に見積もるためには、開発対象となるシステムの規模を客観的に評価する指標が不可欠となります。ファンクションポイント(FP)法は、このような目的のために広く用いられるソフトウェアメメトリクスの一つです。FP法は、システムの機能要求に基づき、ユーザーから見える機能の数を計測することで、開発規模を算出します。</p>
<h3 class="wp-block-heading">問題</h3>
<p>プロジェクトの規模を客観的に評価し、開発期間やコストを見積もるための標準的な手法が必要となります。特に、要件定義などの開発初期段階において、詳細な設計情報がない状況でも、機能要求からソフトウェア規模を見積もる方法が課題となります。ファンクションポイント法は、この課題に対し、システムのビジネス的な機能に着目して規模を評価する手法を提供します。</p>
<h3 class="wp-block-heading">未調整ファンクションポイント (UFP) の計算/手順</h3>
<p>未調整ファンクションポイント(Unadjusted Function Point: UFP)は、ソフトウェアがユーザーに提供する機能の種類と、それぞれの機能のデータ処理の複雑度に基づいて算出されます。UFPの算出は、主に以下の3つのステップで構成されます。</p>
<ol class="wp-block-list">
<li><p><strong>機能要素の識別</strong>: ソフトウェアシステムを構成する以下の5つの機能要素を識別し、それぞれの数を数えます。</p>
<ul>
<li><p><strong>外部入力 (External Input: EI)</strong>: 外部からシステムに取り込まれる固有のデータまたは制御情報の処理。</p></li>
<li><p><strong>外部出力 (External Output: EO)</strong>: システムからユーザーに提示される固有のデータまたは制御情報の生成。</p></li>
<li><p><strong>外部照会 (External Inquiry: EQ)</strong>: データベースの検索など、外部からの要求に応じて情報を取得し、外部に出力する処理(データ更新は伴わない)。</p></li>
<li><p><strong>内部論理ファイル (Internal Logical File: ILF)</strong>: システム内部で維持・管理される、ユーザー識別可能な論理ファイル。</p></li>
<li><p><strong>外部インターフェースファイル (External Interface File: EIF)</strong>: 他のシステムによって維持・管理され、このシステムによって参照される論理ファイル。</p></li>
</ul></li>
<li><p><strong>複雑度評価と重み付け</strong>: 識別された各機能要素について、その複雑度を「簡易 (Simple)」「普通 (Average)」「複雑 (Complex)」の3段階で評価します。評価後、以下の表に基づいて対応するファンクションポイントを割り当てます。</p>
<table>
<thead>
<tr>
<th style="text-align:left;">機能要素</th>
<th style="text-align:left;">簡易 (Simple)</th>
<th style="text-align:left;">普通 (Average)</th>
<th style="text-align:left;">複雑 (Complex)</th>
</tr>
</thead>
<tbody>
<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>
<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>
</tbody>
</table></li>
<li><p><strong>合計の算出</strong>: 各機能要素の件数に、その複雑度に応じたファンクションポイントを乗じ、それら全てを合計することで、未調整ファンクションポイント (UFP) が算出されます。</p>
<p><strong>算出式</strong>:
UFP = (EI件数 × EIのFP値) + (EO件数 × EOのFP値) + (EQ件数 × EQのFP値) + (ILF件数 × ILFのFP値) + (EIF件数 × EIFのFP値)</p>
<p>このUFPは、環境要因や技術要因による調整を行わない「生」のファンクションポイント値であり、最終的なファンクションポイント(Adjusted Function Point: AFP)を算出する前段階の指標となります。</p></li>
</ol>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["機能要素の識別"] --> B1["外部入力 (EI)"]
A --> B2["外部出力 (EO)"]
A --> B3["外部照会 (EQ)"]
A --> B4["内部論理ファイル (ILF)"]
A --> B5["外部インターフェースファイル (EIF)"]
B1 --> C1{"EIの複雑度評価"};
B2 --> C2{"EOの複雑度評価"};
B3 --> C3{"EQの複雑度評価"};
B4 --> C4{"ILFの複雑度評価"};
B5 --> C5{"EIFの複雑度評価"};
C1 --> D1["EIの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C2 --> D2["EOの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C3 --> D3["EQの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C4 --> D4["ILFの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C5 --> D5["EIFの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
D1 & D2 & D3 & D4 & D5 --> E["全要素の合計"]|各要素のFP値を加算|;
E --> F["未調整ファンクションポイント(UFP)"];
</pre></div>
<p>上記フローは、国際ファンクションポイントユーザーグループ(IFPUG)が提供する「Function Point Counting Practices Manual (CPM)」バージョン4.3.1 (2020年3月31日公開) [1]に基づいています。IPAの過去問題でも、この原則に沿った形で出題されています [2]。</p>
<h3 class="wp-block-heading">要点</h3>
<ul class="wp-block-list">
<li><p>未調整ファンクションポイント(UFP)は、システムの5つの機能要素(EI, EO, EQ, ILF, EIF)を識別して算出される。</p></li>
<li><p>各機能要素は、そのデータ処理の複雑度(簡易、普通、複雑)に応じて異なる重み付けファンクションポイントが割り当てられる。</p></li>
<li><p>UFPは、各機能要素の件数に重み付けFP値を乗じ、それら全てを合計することで求められる。</p></li>
<li><p>UFPは、技術的複雑度要素(Value Adjustment Factor: VAF)を適用する前の段階の、純粋な機能規模を示す指標である。</p></li>
</ul>
<h4 class="wp-block-heading">参考文献</h4>
<p>[1] IFPUG. “Function Point Counting Practices Manual (CPM) Version 4.3.1”. <a href="https://www.ifpug.org/">https://www.ifpug.org/</a> (2020年3月31日参照)
[2] 独立行政法人 情報処理推進機構 (IPA). “情報処理技術者試験 過去問題”. <a href="https://www.ipa.go.jp/">https://www.ipa.go.jp/</a> (2024年7月20日参照)</p>
<!--
{
"title": "IPA午前Ⅱ:ファンクションポイント法における未調整ファンクションポイントの算出",
"primary_category": "ソフトウェア開発",
"secondary_categories": ["見積もり", "プロジェクト管理"],
"tags": ["ファンクションポイント法", "ソフトウェアメトリクス", "見積もり手法", "IPA午前Ⅱ"],
"summary": "ファンクションポイント法における未調整ファンクションポイント(UFP)の計算方法を解説。ソフトウェアの機能要素を識別し、複雑度に応じた重み付けを行い合計する手順を詳述。",
"mermaid": "graph TD; A[機能要素の識別] --> B{各要素の複雑度評価}; B --> C{重み付けの適用}; C --> D[各要素の重み付きファンクションポイント算出]; D --> E[全要素の合計]; E --> F[未調整ファンクションポイント(UFP)];",
"verify_level": 2,
"tweet_hint": "IPA午前Ⅱ対策!ファンクションポイント法の未調整FP算出プロセスを徹底解説。各要素の重み付けと合計でソフトウェア規模を見積もる手順を図解で理解しよう。 #IPA #午前Ⅱ #ファンクションポイント",
"link_hints": [
{"text": "IFPUG 公式サイト", "url": "https://www.ifpug.org/"},
{"text": "IPA 独立行政法人 情報処理推進機構", "url": "https://www.ipa.go.jp/"}
]
}
-->
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
IPA午前Ⅱ:ファンクションポイント法における未調整ファンクションポイントの算出
ソフトウェアの機能規模を定量化する未調整ファンクションポイントの計算手順を解説。
ソフトウェア開発の見積もりは、プロジェクトの成否を左右する重要なプロセスです。工数やコストを正確に見積もるためには、開発対象となるシステムの規模を客観的に評価する指標が不可欠となります。ファンクションポイント(FP)法は、このような目的のために広く用いられるソフトウェアメメトリクスの一つです。FP法は、システムの機能要求に基づき、ユーザーから見える機能の数を計測することで、開発規模を算出します。
問題
プロジェクトの規模を客観的に評価し、開発期間やコストを見積もるための標準的な手法が必要となります。特に、要件定義などの開発初期段階において、詳細な設計情報がない状況でも、機能要求からソフトウェア規模を見積もる方法が課題となります。ファンクションポイント法は、この課題に対し、システムのビジネス的な機能に着目して規模を評価する手法を提供します。
未調整ファンクションポイント (UFP) の計算/手順
未調整ファンクションポイント(Unadjusted Function Point: UFP)は、ソフトウェアがユーザーに提供する機能の種類と、それぞれの機能のデータ処理の複雑度に基づいて算出されます。UFPの算出は、主に以下の3つのステップで構成されます。
機能要素の識別: ソフトウェアシステムを構成する以下の5つの機能要素を識別し、それぞれの数を数えます。
外部入力 (External Input: EI): 外部からシステムに取り込まれる固有のデータまたは制御情報の処理。
外部出力 (External Output: EO): システムからユーザーに提示される固有のデータまたは制御情報の生成。
外部照会 (External Inquiry: EQ): データベースの検索など、外部からの要求に応じて情報を取得し、外部に出力する処理(データ更新は伴わない)。
内部論理ファイル (Internal Logical File: ILF): システム内部で維持・管理される、ユーザー識別可能な論理ファイル。
外部インターフェースファイル (External Interface File: EIF): 他のシステムによって維持・管理され、このシステムによって参照される論理ファイル。
複雑度評価と重み付け: 識別された各機能要素について、その複雑度を「簡易 (Simple)」「普通 (Average)」「複雑 (Complex)」の3段階で評価します。評価後、以下の表に基づいて対応するファンクションポイントを割り当てます。
| 機能要素 |
簡易 (Simple) |
普通 (Average) |
複雑 (Complex) |
| 外部入力 (EI) |
3 |
4 |
6 |
| 外部出力 (EO) |
4 |
5 |
7 |
| 外部照会 (EQ) |
3 |
4 |
6 |
| 内部論理ファイル (ILF) |
7 |
10 |
15 |
| 外部インターフェースファイル (EIF) |
5 |
7 |
10 |
合計の算出: 各機能要素の件数に、その複雑度に応じたファンクションポイントを乗じ、それら全てを合計することで、未調整ファンクションポイント (UFP) が算出されます。
算出式:
UFP = (EI件数 × EIのFP値) + (EO件数 × EOのFP値) + (EQ件数 × EQのFP値) + (ILF件数 × ILFのFP値) + (EIF件数 × EIFのFP値)
このUFPは、環境要因や技術要因による調整を行わない「生」のファンクションポイント値であり、最終的なファンクションポイント(Adjusted Function Point: AFP)を算出する前段階の指標となります。
graph TD
A["機能要素の識別"] --> B1["外部入力 (EI)"]
A --> B2["外部出力 (EO)"]
A --> B3["外部照会 (EQ)"]
A --> B4["内部論理ファイル (ILF)"]
A --> B5["外部インターフェースファイル (EIF)"]
B1 --> C1{"EIの複雑度評価"};
B2 --> C2{"EOの複雑度評価"};
B3 --> C3{"EQの複雑度評価"};
B4 --> C4{"ILFの複雑度評価"};
B5 --> C5{"EIFの複雑度評価"};
C1 --> D1["EIの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C2 --> D2["EOの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C3 --> D3["EQの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C4 --> D4["ILFの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
C5 --> D5["EIFの重み付きFP算出"]|簡易/普通/複雑に応じたFP値|;
D1 & D2 & D3 & D4 & D5 --> E["全要素の合計"]|各要素のFP値を加算|;
E --> F["未調整ファンクションポイント(UFP)"];
上記フローは、国際ファンクションポイントユーザーグループ(IFPUG)が提供する「Function Point Counting Practices Manual (CPM)」バージョン4.3.1 (2020年3月31日公開) [1]に基づいています。IPAの過去問題でも、この原則に沿った形で出題されています [2]。
要点
未調整ファンクションポイント(UFP)は、システムの5つの機能要素(EI, EO, EQ, ILF, EIF)を識別して算出される。
各機能要素は、そのデータ処理の複雑度(簡易、普通、複雑)に応じて異なる重み付けファンクションポイントが割り当てられる。
UFPは、各機能要素の件数に重み付けFP値を乗じ、それら全てを合計することで求められる。
UFPは、技術的複雑度要素(Value Adjustment Factor: VAF)を適用する前の段階の、純粋な機能規模を示す指標である。
参考文献
[1] IFPUG. “Function Point Counting Practices Manual (CPM) Version 4.3.1”. https://www.ifpug.org/ (2020年3月31日参照)
[2] 独立行政法人 情報処理推進機構 (IPA). “情報処理技術者試験 過去問題”. https://www.ipa.go.jp/ (2024年7月20日参照)
コメント