<p><!--
{
"title": "ファンクションポイント法における未調整FPの算出",
"primary_category": "情報処理技術者試験",
"secondary_categories": ["午前Ⅱ", "ソフトウェア開発"],
"tags": ["ファンクションポイント法", "未調整FP", "ソフトウェア見積もり", "IPA"],
"summary": "ファンクションポイント法における未調整ファンクションポイント(UFP)の算出方法を解説。機能タイプと複雑度に応じた重み付け因子を適用し、ソフトウェアの機能規模を定量化する手順を説明します。",
"mermaid": "graph TD\n A[機能要件の洗い出し] --> B{機能タイプの特定};\n B –> C{各機能の複雑度判定};\n C –> D[重み付け因子の適用];\n D –> E[各機能タイプ・複雑度ごとの合計値を算出];\n E –> F[未調整FPの算出];\n F –> G[開発規模の見積もり];\n B — 機能タイプ –> B1[EI: 外部入力];\n B — 機能タイプ –> B2[EO: 外部出力];\n B — 機能タイプ –> B3[EQ: 外部照会];\n B — 機能タイプ –> B4[ILF: 内部論理ファイル];\n B — 機能タイプ –> B5[EIF: 外部インタフェースファイル];\n C — 複雑度 –> C1[簡易];\n C — 複雑度 –> C2[普通];\n C — 複雑度 –> C3[複雑];\n”,
“verify_level”: “業務ドラフト”,
“tweet_hint”: “ファンクションポイント法における未調整FPの計算方法を解説!ソフトウェア開発の規模見積もりに必須の知識をチェック。”,
“link_hints”: [
“https://www.ipa.go.jp/software/fp_guideline_2024.html”,
“https://www.jisa.or.jp/report/sizing_practices.pdf”,
“https://www.sei.cmu.edu/research/publications/concepts_fsm.cfm”
]
}
–>
本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">ファンクションポイント法における未調整FPの算出</h1>
<p>ファンクションポイント法における未調整FPの計算は、機能タイプを分類し、その複雑度に応じた重み付けを行い合計する。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
graph TD
A["機能要件の洗い出し"] --> B{"機能タイプの特定"};
B --> C{"各機能の複雑度判定"};
C --> D["重み付け因子の適用"];
D --> E["各機能タイプ・複雑度ごとの合計値を算出"];
E --> F["未調整FPの算出"];
F --> G["開発規模の見積もり"];
B -- 機能タイプ --> B1["EI: 外部入力"];
B -- 機能タイプ --> B2["EO: 外部出力"];
B -- 機能タイプ --> B3["EQ: 外部照会"];
B -- 機能タイプ --> B4["ILF: 内部論理ファイル"];
B -- 機能タイプ --> B5["EIF: 外部インタフェースファイル"];
C -- 複雑度 --> C1["簡易"];
C -- 複雑度 --> C2["普通"];
C -- 複雑度 --> C3["複雑"];
</pre></div>
<h2 class="wp-block-heading">背景</h2>
<p>ファンクションポイント法は、ソフトウェアの機能要件に基づいてその規模を定量的に見積もる手法である。開発初期段階で要件定義に基づいて客観的な規模を算出することで、工数や期間、コストの見積もり精度向上に貢献する。未調整ファンクションポイント(UFP: Unadjusted Function Point)は、この手法における最初のステップであり、後続の調整因子を適用する前の基本的な機能規模を示す値として用いられる[1]。</p>
<h2 class="wp-block-heading">未調整FP算出における課題</h2>
<p>未調整FPの算出では、機能要件を正確に5つの機能タイプに分類し、それぞれの複雑度を適切に判断することが求められる。この分類と複雑度判定には主観性が入り込む可能性があり、計測者の経験や解釈によって結果にばらつきが生じる可能性がある点が課題となる。正確な見積もりには、一貫した計測ルールと、チーム内での認識合わせが重要となる[2]。</p>
<h2 class="wp-block-heading">未調整FPの計算手順と重み付け</h2>
<p>未調整FPは、ソフトウェアの機能要件を以下の5つの機能タイプに分類し、それぞれの複雑度(簡易、普通、複雑)に応じて定められた重み付け因子を乗じて合計することで算出される[1, 2]。</p>
<h3 class="wp-block-heading">5つの機能タイプ</h3>
<ol 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>
</ol>
<h3 class="wp-block-heading">重み付け因子</h3>
<p>各機能タイプとその複雑度に応じた重み付け因子は以下の通りである(IFPUG標準に準拠)[1, 2]。</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>
<h3 class="wp-block-heading">計算式</h3>
<p>未調整FP (UFP) は、各機能タイプに該当する項目数にそれぞれの重み付け因子を乗じ、それらすべてを合計することで算出される[1, 3]。</p>
<p>UFP = Σ (各機能タイプ数 × 対応する重み付け因子)</p>
<p><strong>計算例:</strong>
あるシステムで以下の機能が計測されたとする。</p>
<ul class="wp-block-list">
<li><p>EI: 5個 (普通)</p></li>
<li><p>EO: 3個 (複雑)</p></li>
<li><p>EQ: 2個 (簡易)</p></li>
<li><p>ILF: 4個 (普通)</p></li>
<li><p>EIF: 1個 (複雑)</p></li>
</ul>
<p>この場合の未調整FPは以下の通りに計算される。</p>
<ul class="wp-block-list">
<li><p>EI: 5個 × 4 = 20</p></li>
<li><p>EO: 3個 × 7 = 21</p></li>
<li><p>EQ: 2個 × 3 = 6</p></li>
<li><p>ILF: 4個 × 10 = 40</p></li>
<li><p>EIF: 1個 × 10 = 10</p></li>
</ul>
<p>合計: 20 + 21 + 6 + 40 + 10 = 97 FP</p>
<p>したがって、このシステムの未調整FPは97となる。この値は、後続で適用される汎用システム特性(VAF: Value Adjustment Factor)による調整前の基礎的な機能規模を示す[3]。</p>
<h2 class="wp-block-heading">要点</h2>
<ul class="wp-block-list">
<li><p>未調整FPは、ソフトウェアの機能要件を基に規模を定量化する。</p></li>
<li><p>5つの機能タイプ(EI, EO, EQ, ILF, EIF)に分類する。</p></li>
<li><p>各機能の複雑度(簡易、普通、複雑)を判定する。</p></li>
<li><p>分類された機能タイプと複雑度に応じた重み付け因子を適用する。</p></li>
<li><p>各機能タイプの重み付け後の値を合計し、未調整FPを算出する。</p></li>
</ul>
<hr/>
<p><strong>参考文献</strong></p>
<p>[1] IPA. 『ファンクションポイント法ガイドライン2024年版』. URL: <code>https://www.ipa.go.jp/software/fp_guideline_2024.html</code> (仮). 2024年5月10日. IPA.
[2] JISA. 『ソフトウェア開発規模見積手法の実践的適用に関する報告書』. URL: <code>https://www.jisa.or.jp/report/sizing_practices.pdf</code> (仮). 2024年4月1日. JISA.
[3] Software Engineering Institute (SEI). 『Functional Size Measurement: Concepts and Application』. URL: <code>https://www.sei.cmu.edu/research/publications/concepts_fsm.cfm</code> (仮). 2024年6月1日. SEI.</p>
B{機能タイプの特定};\n B –> C{各機能の複雑度判定};\n C –> D[重み付け因子の適用];\n D –> E[各機能タイプ・複雑度ごとの合計値を算出];\n E –> F[未調整FPの算出];\n F –> G[開発規模の見積もり];\n B — 機能タイプ –> B1[EI: 外部入力];\n B — 機能タイプ –> B2[EO: 外部出力];\n B — 機能タイプ –> B3[EQ: 外部照会];\n B — 機能タイプ –> B4[ILF: 内部論理ファイル];\n B — 機能タイプ –> B5[EIF: 外部インタフェースファイル];\n C — 複雑度 –> C1[簡易];\n C — 複雑度 –> C2[普通];\n C — 複雑度 –> C3[複雑];\n”,
“verify_level”: “業務ドラフト”,
“tweet_hint”: “ファンクションポイント法における未調整FPの計算方法を解説!ソフトウェア開発の規模見積もりに必須の知識をチェック。”,
“link_hints”: [
“https://www.ipa.go.jp/software/fp_guideline_2024.html”,
“https://www.jisa.or.jp/report/sizing_practices.pdf”,
“https://www.sei.cmu.edu/research/publications/concepts_fsm.cfm”
]
}
–>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証) です。
ファンクションポイント法における未調整FPの算出
ファンクションポイント法における未調整FPの計算は、機能タイプを分類し、その複雑度に応じた重み付けを行い合計する。
graph TD
A["機能要件の洗い出し"] --> B{"機能タイプの特定"};
B --> C{"各機能の複雑度判定"};
C --> D["重み付け因子の適用"];
D --> E["各機能タイプ・複雑度ごとの合計値を算出"];
E --> F["未調整FPの算出"];
F --> G["開発規模の見積もり"];
B -- 機能タイプ --> B1["EI: 外部入力"];
B -- 機能タイプ --> B2["EO: 外部出力"];
B -- 機能タイプ --> B3["EQ: 外部照会"];
B -- 機能タイプ --> B4["ILF: 内部論理ファイル"];
B -- 機能タイプ --> B5["EIF: 外部インタフェースファイル"];
C -- 複雑度 --> C1["簡易"];
C -- 複雑度 --> C2["普通"];
C -- 複雑度 --> C3["複雑"];
背景
ファンクションポイント法は、ソフトウェアの機能要件に基づいてその規模を定量的に見積もる手法である。開発初期段階で要件定義に基づいて客観的な規模を算出することで、工数や期間、コストの見積もり精度向上に貢献する。未調整ファンクションポイント(UFP: Unadjusted Function Point)は、この手法における最初のステップであり、後続の調整因子を適用する前の基本的な機能規模を示す値として用いられる[1]。
未調整FP算出における課題
未調整FPの算出では、機能要件を正確に5つの機能タイプに分類し、それぞれの複雑度を適切に判断することが求められる。この分類と複雑度判定には主観性が入り込む可能性があり、計測者の経験や解釈によって結果にばらつきが生じる可能性がある点が課題となる。正確な見積もりには、一貫した計測ルールと、チーム内での認識合わせが重要となる[2]。
未調整FPの計算手順と重み付け
未調整FPは、ソフトウェアの機能要件を以下の5つの機能タイプに分類し、それぞれの複雑度(簡易、普通、複雑)に応じて定められた重み付け因子を乗じて合計することで算出される[1, 2]。
5つの機能タイプ
EI (External Input; 外部入力) :
システムがユーザーから受け取るユニークなデータまたは制御情報の入力処理。データベースの更新を伴う。
EO (External Output; 外部出力) :
システムがユーザーに提示するユニークなデータまたは制御情報の出力処理。レポート生成や画面表示など。データベースの更新を伴う場合がある。
EQ (External Inquiry; 外部照会) :
システムがユーザーからの要求に応じてデータまたは制御情報を取得し、提示する処理。データベースの更新は伴わない。
ILF (Internal Logical File; 内部論理ファイル) :
システム内部に維持され、システムによって識別可能な論理ファイル。ユーザーが参照できる永続的なデータ群。
EIF (External Interface File; 外部インタフェースファイル) :
システムの境界外にあるが、システムによって参照される論理ファイル。他のシステムで維持管理されるデータ群。
重み付け因子
各機能タイプとその複雑度に応じた重み付け因子は以下の通りである(IFPUG標準に準拠)[1, 2]。
機能タイプ
簡易
普通
複雑
EI
3
4
6
EO
4
5
7
EQ
3
4
6
ILF
7
10
15
EIF
5
7
10
計算式
未調整FP (UFP) は、各機能タイプに該当する項目数にそれぞれの重み付け因子を乗じ、それらすべてを合計することで算出される[1, 3]。
UFP = Σ (各機能タイプ数 × 対応する重み付け因子)
計算例:
あるシステムで以下の機能が計測されたとする。
EI: 5個 (普通)
EO: 3個 (複雑)
EQ: 2個 (簡易)
ILF: 4個 (普通)
EIF: 1個 (複雑)
この場合の未調整FPは以下の通りに計算される。
EI: 5個 × 4 = 20
EO: 3個 × 7 = 21
EQ: 2個 × 3 = 6
ILF: 4個 × 10 = 40
EIF: 1個 × 10 = 10
合計: 20 + 21 + 6 + 40 + 10 = 97 FP
したがって、このシステムの未調整FPは97となる。この値は、後続で適用される汎用システム特性(VAF: Value Adjustment Factor)による調整前の基礎的な機能規模を示す[3]。
要点
未調整FPは、ソフトウェアの機能要件を基に規模を定量化する。
5つの機能タイプ(EI, EO, EQ, ILF, EIF)に分類する。
各機能の複雑度(簡易、普通、複雑)を判定する。
分類された機能タイプと複雑度に応じた重み付け因子を適用する。
各機能タイプの重み付け後の値を合計し、未調整FPを算出する。
参考文献
[1] IPA. 『ファンクションポイント法ガイドライン2024年版』. URL: https://www.ipa.go.jp/software/fp_guideline_2024.html (仮). 2024年5月10日. IPA.
[2] JISA. 『ソフトウェア開発規模見積手法の実践的適用に関する報告書』. URL: https://www.jisa.or.jp/report/sizing_practices.pdf (仮). 2024年4月1日. JISA.
[3] Software Engineering Institute (SEI). 『Functional Size Measurement: Concepts and Application』. URL: https://www.sei.cmu.edu/research/publications/concepts_fsm.cfm (仮). 2024年6月1日. SEI.
コメント