ファンクションポイント法とは、ソフトウェアの機能規模を客観的に測定する方法である。1979年にIBMのアレン・J・アルブレヒトによって考案され、国際標準規格ISO/IEC 24774として制定されている。
ファンクションポイント法の概要
ファンクションポイント法は、ソフトウェアの機能に着目し、その複雑性に基づいてポイントを算出することで、規模を測定する方法である。ファンクションポイント法は、以下の用途に利用される。
- 開発工数見積もり
- 開発コスト見積もり
- プロジェクト管理
- リスク管理
- ベンチマーク
- 投資意思決定
ファンクションポイントの評価対象
具体的には、以下の14種類の機能要素をカウントし、それぞれに重み付けを行う。
- 外部入力データファイル
- 外部出力データファイル
- 内部論理ファイル
- 外部参照ファイル
- 入力データ項目
- 出力データ項目
- 内部処理ファイル項目
- 外部インターフェース
- ユーザーインターフェース
- 機能処理
- 複雑な処理
- 呼び出し機能
- データベースアクセス
- ファイルアクセス
これらの要素をカウントし、それぞれの要素に定義された重み付けを乗じて合計することで、ファンクションポイントが算出される。
ファンクションポイント法の計算方法
ファンクションポイント法の計算方法は、以下の手順で実行される。
機能の特定
まず、システムの機能を特定する。機能は、ユーザーにとって価値のあるサービスを提供する処理単位と定義される。具体的な機能の例としては、以下が挙げられる。
- 顧客情報の登録
- 商品情報の検索
- 注文処理
- レポート作成
機能の種類の分類
次に、特定した機能を以下の5つの種類に分類する。
- 外部入力 (EI): ユーザーからシステムへのデータ入力
- 外部出力 (EO): システムからユーザーへのデータ出力
- 外部照会 (EQ): システムへのデータ問い合わせ
- 内部論理ファイル (ILF): システム内部で保持するデータ
- 外部インターフェースファイル (EIF): 他のシステムとのデータ連携
ファンクションポイントの算出
各機能の種類ごとに、以下の表に基づいてファンクションポイント (FP) を算出する。
機能の種類 | 基準値 | 調整値 | 重み付け |
---|---|---|---|
外部入力 (EI) | 3 | データ項目数 | 0.65 |
外部出力 (EO) | 4 | データ項目数 | 0.65 |
外部照会 (EQ) | 3 | データ項目数 | 0.35 |
内部論理ファイル (ILF) | 7 | データ項目数 | 1.00 |
外部インターフェースファイル (EIF) | 5 | ファイル参照数 | 0.70 |
調整値は、機能の複雑さを表す指標であり、以下の要素を考慮して算出する。
- データ項目の複雑性
- 処理の複雑性
- ファイルの複雑性
- 分散処理の有無
- 性能要件
未調整FPと調整FP
上記の計算によって算出したFPは、未調整FPと呼ばれる。未調整FPに調整値を乗じて、調整FPを算出する。
調整FP = 未調整FP × (0.65 + 調整値 / 100)
システム規模の算出
システム規模は、調整FPを以下の式で算出する。
システム規模 = 調整FP × 環境係数
環境係数は、開発環境や開発チームの成熟度などを考慮した係数であり、0.65から1.35までの範囲で設定される。
ファンクションポイント法のメリット
ファンクションポイント法には、以下のメリットがある。
客観性と再現性
ファンクションポイント法は、明確な定義に基づいて機能を測定するため、見積もりに客観性と再現性を高めることができる。誰が算定しても同じ結果が得られるため、見積もり作業のばらつきを抑えることができ、見積もり誤差を減らすことができる。これは、開発コストの適切な管理、効率的なプロジェクト計画、関係者間の合意形成に役立つ。
早期の見積もり
ファンクションポイント法は、詳細設計が完了する前に、システム規模を概算することができる。これは、開発プロジェクトの初期段階でコストやスケジュールを把握することができ、経営層や顧客への説明、早期の意思決定を可能にする。また、開発過程の早い段階で問題を発見し、修正することができるため、開発コストの削減に繋がる。
言語やプラットフォームに依存しない
ファンクションポイント法は、システムの機能に着目するため、プログラミング言語やプラットフォームに依存しない。異なる開発環境でも共通の尺度でシステム規模を測定することができるため、異なる環境での開発コストの比較、技術選定、アウトソーシングなどが容易になる。
要件変更の影響分析
ファンクションポイント法は、機能ごとにポイントを算定するため、要件変更の影響を分析することができる。要件変更によって機能が追加されたり、削除されたりした場合、その影響をポイント数の変化として把握することができる。これは、開発スケジュールやコストへの影響を事前に予測し、適切な対策を講じることを可能にする。
他の見積もり手法との連携
ファンクションポイント法は、他の見積もり手法と連携して利用することができる。例えば、COCOMO IIなどのコスト見積もりモデルと組み合わせることで、より精度の高い見積もりを行うことができる。
ファンクションポイント法のデメリット
主観性の入り込み
ファンクションポイント法は、機能の複雑さを評価する際に、主観的な判断が入り込む。例えば、同じ機能でも、評価者によって複雑さの評価が異なる場合があり、見積もり誤差に繋がる可能性がある。
適用範囲の限定
ファンクションポイント法は、主に業務系ソフトウェアの規模測定に用いられる。リアルタイムシステムや組み込みシステムなど、非機能要件が重要なシステムには適用しにくい。また、データ処理量や処理速度などの性能要件も考慮できないため、システム全体の規模を正確に把握するには不十分な場合がある。
学習コスト
ファンクションポイント法を正しく理解し、実践するには、一定の学習コストが必要となる。明確な定義やルールに基づいているとはいえ、専門知識や経験がないと、正確な見積もりを行うことが難しい。
精度の限界
ファンクションポイント法は、あくまでも概算見積もり手法である。詳細設計が完了していない段階で算定するため、実際の開発規模と乖離が生じる可能性がある。特に、複雑な機能や特殊な技術を用いる場合、見積もり誤差が大きくなる傾向がある。
その他の課題
ファンクションポイント法は、以下の課題も抱えている。
- 機能要件定義書などの詳細な文書が必要
- 算定作業に時間がかかる
- ツールやテンプレートが不足している
これらの課題を克服するために、国際ファンクションポイントユーザーグループ (IFPUG) などが、ガイドラインやツールの開発に取り組んでいる。
まとめ
ファンクションポイント法は、ソフトウェアの規模を測定する方法として広く利用されている。
ファンクションポイント法は、客観性、再現性、早期の見積もり、言語・プラットフォームへの依存性の低さ、要件変更の影響分析、他の見積もり手法との連携などのメリットがあるが、あくまでも概算見積もり手法であるため、実際の開発規模と乖離が生じる可能性がある。
これらメリットとデメリットを理解した上で、適切に利用することで、ソフトウェア開発の効率化に役立てることができる。