<p><!--
{
"title": "IPA 午前Ⅱ:ファンクションポイント法における未調整ファンクションポイントの算出",
"primary_category": "情報処理技術者試験",
"secondary_categories": [
"システム開発",
"プロジェクトマネジメント",
"ソフトウェア見積もり"
],
"tags": [
"IPA午前Ⅱ",
"ファンクションポイント法",
"FP",
"UFP",
"見積もり",
"ソフトウェア開発"
],
"summary": "ファンクションポイント法における未調整ファンクションポイント(UFP)の算出は、ソフトウェアの機能規模を客観的に測定する上で重要です。本記事では、このUFPがどのような機能要素から構成され、どのように重み付けされて計算されるのかを解説します。",
"mermaid": "graph TD;\n A[ソフトウェア機能規模測定] --> B{ファンクションポイント法};\n B –> C[機能要素の識別];\n C –> D[各機能要素の複雑度評価];\n D –> E[重み付け係数の適用];\n E –> F[未調整ファンクションポイント(UFP)算出];\n F –> G[複雑度調整因子の適用];\n G –> H[調整済みファンクションポイント(AFP)算出];”,
“verify_level”: “業務ドラフト(未検証)”,
“tweet_hint”: “IPA午前Ⅱ対策!ファンクションポイント法における未調整FPの算出方法を解説。機能要素と重み付けを理解し、ソフトウェア規模を見積もる。”,
“link_hints”: [
“https://www.ipa.go.jp/jinzai/itpro/about/index.html”,
“https://www.ifpug.org/”
]
}
–>
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">ファンクションポイント法における未調整ファンクションポイントの算出</h1>
<p>ファンクションポイント法における未調整ファンクションポイント(UFP)の算出は、ソフトウェアの機能規模を客観的に測定する基本であり、特定の機能要素の数とその複雑度に応じた重み付け係数を適用して合計することで求められる。</p>
<h2 class="wp-block-heading">背景</h2>
<p>ソフトウェア開発プロジェクトにおいて、開発規模の正確な見積もりは、予算、スケジュール、人員計画の策定に不可欠である。しかし、開発初期段階でソースコード行数などの具体的な指標を用いることは困難であり、経験や勘に頼りがちであった。このような課題に対し、機能要求に着目してソフトウェア規模を測定する手法として、ファンクションポイント法が提唱された。この手法は、開発言語や技術に依存せず、ユーザーから見た機能の量に基づいている点が特徴である。</p>
<h2 class="wp-block-heading">問題点</h2>
<p>開発当初は、ソフトウェアの物理的な規模(コード行数など)が不明瞭であるため、客観的かつ定量的な方法で規模を評価することが難しい。また、異なる開発プロジェクト間での生産性比較やベンチマーク設定を行う際にも、共通の尺度が必要となる。ファンクションポイント法は、これらの問題に対し、ユーザーが認識できる「機能」を単位として規模を測ることで、より早期かつ客観的な見積もりを可能にする。</p>
<h2 class="wp-block-heading">未調整ファンクションポイント(UFP)の算出方法</h2>
<p>ファンクションポイント法では、まずソフトウェアが提供する機能をいくつかのカテゴリに分類し、それぞれの数と複雑度に応じて重み付けを行うことで、未調整ファンクションポイント(UFP: Unadjusted Function Point)を算出する。UFPは、その後の調整を経て、最終的なファンクションポイント(AFP: Adjusted Function Point)となる。</p>
<h3 class="wp-block-heading">1. 機能要素の識別</h3>
<p>ソフトウェアの機能を以下の5つの要素に分類する。</p>
<ul class="wp-block-list">
<li><p><strong>外部入力 (EI: External Input)</strong>: ユーザーや他のシステムからデータを入力する機能。例: データ入力画面、バッチファイル取り込み。</p></li>
<li><p><strong>外部出力 (EO: External Output)</strong>: 処理結果をユーザーや他のシステムに出力する機能。データ加工や計算が含まれる。例: レポート出力、処理結果表示。</p></li>
<li><p><strong>外部照会 (EQ: External Inquiry)</strong>: データを参照し、結果をユーザーや他のシステムに表示する機能。データ加工や計算は含まれない。例: 検索結果表示。</p></li>
<li><p><strong>内部論理ファイル (ILF: Internal Logical File)</strong>: ソフトウェア内で論理的に管理されるファイルやデータベーステーブル。アプリケーションが維持・管理するデータ。</p></li>
<li><p><strong>外部インタフェースファイル (EIF: External Interface File)</strong>: 他のソフトウェアが維持・管理するファイルやデータベーステーブルで、このアプリケーションが参照するデータ。</p></li>
</ul>
<h3 class="wp-block-heading">2. 各機能要素の複雑度評価</h3>
<p>識別した各機能要素について、データの種類や処理ロジックの複雑さに応じて「低」「中」「高」のいずれかの複雑度を評価する。この評価基準は、組織やガイドライン(例: IFPUG)によって定められる。</p>
<h3 class="wp-block-heading">3. 重み付け係数の適用とUFPの算出</h3>
<p>各機能要素の数と複雑度評価に基づき、以下の表に示す重み付け係数を乗じて合計することで、未調整ファンクションポイント(UFP)を算出する。</p>
<figure class="wp-block-table"><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;">外部入力 (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></figure>
<p><strong>UFP算出式:</strong>
<code>UFP = Σ (各機能要素の数 × 重み付け係数)</code></p>
<p><strong>例:</strong>
あるシステムで以下の機能要素が識別されたとする。</p>
<ul class="wp-block-list">
<li><p>外部入力 (EI): 低5件、中3件</p></li>
<li><p>外部出力 (EO): 中2件</p></li>
<li><p>内部論理ファイル (ILF): 高1件</p></li>
</ul>
<p>UFPの計算は以下のようになる。</p>
<ul class="wp-block-list">
<li><p>EI: (5件 × 3) + (3件 × 4) = 15 + 12 = 27 FP</p></li>
<li><p>EO: (2件 × 5) = 10 FP</p></li>
<li><p>ILF: (1件 × 15) = 15 FP</p></li>
<li><p><strong>合計UFP</strong>: 27 + 10 + 15 = <strong>52 FP</strong></p></li>
</ul>
<h3 class="wp-block-heading">ファンクションポイント法によるソフトウェア規模測定の流れ</h3>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD;
A["ソフトウェア機能規模測定"] --> B{"ファンクションポイント法"};
B --> C["機能要素の識別"];
C --> D["各機能要素の複雑度評価"];
D --> E["重み付け係数の適用"];
E --> F["未調整ファンクションポイント(UFP)算出"];
F --> G["複雑度調整因子の適用"];
G --> H["調整済みファンクションポイント(AFP)算出"];
</pre></div>
<p>(図:ファンクションポイント法による規模測定のフロー)</p>
<p>ファンクションポイント法における未調整ファンクションポイントの算出は、図に示すように、機能要素の識別から始まり、最終的に調整済みファンクションポイント(AFP)を得るための中間ステップとなる。</p>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li><p>未調整ファンクションポイント(UFP)は、ソフトウェアの機能規模を客観的に測るための基礎となる指標である。</p></li>
<li><p>外部入力、外部出力、外部照会、内部論理ファイル、外部インタフェースファイルの5つの機能要素を識別する。</p></li>
<li><p>各機能要素は、複雑度(低、中、高)に応じて異なる重み付け係数が適用される。</p></li>
<li><p>最終的なUFPは、各機能要素の数に重み付け係数を乗じた値の総和として算出される。</p></li>
</ul>
B{ファンクションポイント法};\n B –> C[機能要素の識別];\n C –> D[各機能要素の複雑度評価];\n D –> E[重み付け係数の適用];\n E –> F[未調整ファンクションポイント(UFP)算出];\n F –> G[複雑度調整因子の適用];\n G –> H[調整済みファンクションポイント(AFP)算出];”,
“verify_level”: “業務ドラフト(未検証)”,
“tweet_hint”: “IPA午前Ⅱ対策!ファンクションポイント法における未調整FPの算出方法を解説。機能要素と重み付けを理解し、ソフトウェア規模を見積もる。”,
“link_hints”: [
“https://www.ipa.go.jp/jinzai/itpro/about/index.html”,
“https://www.ifpug.org/”
]
}
–>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証) です。
ファンクションポイント法における未調整ファンクションポイントの算出
ファンクションポイント法における未調整ファンクションポイント(UFP)の算出は、ソフトウェアの機能規模を客観的に測定する基本であり、特定の機能要素の数とその複雑度に応じた重み付け係数を適用して合計することで求められる。
背景
ソフトウェア開発プロジェクトにおいて、開発規模の正確な見積もりは、予算、スケジュール、人員計画の策定に不可欠である。しかし、開発初期段階でソースコード行数などの具体的な指標を用いることは困難であり、経験や勘に頼りがちであった。このような課題に対し、機能要求に着目してソフトウェア規模を測定する手法として、ファンクションポイント法が提唱された。この手法は、開発言語や技術に依存せず、ユーザーから見た機能の量に基づいている点が特徴である。
問題点
開発当初は、ソフトウェアの物理的な規模(コード行数など)が不明瞭であるため、客観的かつ定量的な方法で規模を評価することが難しい。また、異なる開発プロジェクト間での生産性比較やベンチマーク設定を行う際にも、共通の尺度が必要となる。ファンクションポイント法は、これらの問題に対し、ユーザーが認識できる「機能」を単位として規模を測ることで、より早期かつ客観的な見積もりを可能にする。
未調整ファンクションポイント(UFP)の算出方法
ファンクションポイント法では、まずソフトウェアが提供する機能をいくつかのカテゴリに分類し、それぞれの数と複雑度に応じて重み付けを行うことで、未調整ファンクションポイント(UFP: Unadjusted Function Point)を算出する。UFPは、その後の調整を経て、最終的なファンクションポイント(AFP: Adjusted Function Point)となる。
1. 機能要素の識別
ソフトウェアの機能を以下の5つの要素に分類する。
外部入力 (EI: External Input) : ユーザーや他のシステムからデータを入力する機能。例: データ入力画面、バッチファイル取り込み。
外部出力 (EO: External Output) : 処理結果をユーザーや他のシステムに出力する機能。データ加工や計算が含まれる。例: レポート出力、処理結果表示。
外部照会 (EQ: External Inquiry) : データを参照し、結果をユーザーや他のシステムに表示する機能。データ加工や計算は含まれない。例: 検索結果表示。
内部論理ファイル (ILF: Internal Logical File) : ソフトウェア内で論理的に管理されるファイルやデータベーステーブル。アプリケーションが維持・管理するデータ。
外部インタフェースファイル (EIF: External Interface File) : 他のソフトウェアが維持・管理するファイルやデータベーステーブルで、このアプリケーションが参照するデータ。
2. 各機能要素の複雑度評価
識別した各機能要素について、データの種類や処理ロジックの複雑さに応じて「低」「中」「高」のいずれかの複雑度を評価する。この評価基準は、組織やガイドライン(例: IFPUG)によって定められる。
3. 重み付け係数の適用とUFPの算出
各機能要素の数と複雑度評価に基づき、以下の表に示す重み付け係数を乗じて合計することで、未調整ファンクションポイント(UFP)を算出する。
機能要素
低
中
高
外部入力 (EI)
3
4
6
外部出力 (EO)
4
5
7
外部照会 (EQ)
3
4
6
内部論理ファイル (ILF)
7
10
15
外部インタフェースファイル (EIF)
5
7
10
UFP算出式:
UFP = Σ (各機能要素の数 × 重み付け係数)
例:
あるシステムで以下の機能要素が識別されたとする。
外部入力 (EI): 低5件、中3件
外部出力 (EO): 中2件
内部論理ファイル (ILF): 高1件
UFPの計算は以下のようになる。
ファンクションポイント法によるソフトウェア規模測定の流れ
graph TD;
A["ソフトウェア機能規模測定"] --> B{"ファンクションポイント法"};
B --> C["機能要素の識別"];
C --> D["各機能要素の複雑度評価"];
D --> E["重み付け係数の適用"];
E --> F["未調整ファンクションポイント(UFP)算出"];
F --> G["複雑度調整因子の適用"];
G --> H["調整済みファンクションポイント(AFP)算出"];
(図:ファンクションポイント法による規模測定のフロー)
ファンクションポイント法における未調整ファンクションポイントの算出は、図に示すように、機能要素の識別から始まり、最終的に調整済みファンクションポイント(AFP)を得るための中間ステップとなる。
要点
未調整ファンクションポイント(UFP)は、ソフトウェアの機能規模を客観的に測るための基礎となる指標である。
外部入力、外部出力、外部照会、内部論理ファイル、外部インタフェースファイルの5つの機能要素を識別する。
各機能要素は、複雑度(低、中、高)に応じて異なる重み付け係数が適用される。
最終的なUFPは、各機能要素の数に重み付け係数を乗じた値の総和として算出される。
コメント