ファンクションポイント法 - ソフトウェア機能に基づく規模尺度 - 奈良先端科学技術大学院大学 講義資料
出典 Capers Jones, Applied Software Measurement -Assuring Productivity and Quality, 2nd edition, McGraw-Hill (1997). D. Garmus and D. Herron, Measuring the Software Process: A Practical Guide to Function Measurements, Prentice Hall (1996). 阪田勇夫 ( 訳 ), ソフトウェア機能性の計測 : ファンクションポイント技法の実践的入門, トッパン (1999). 大筆豊, ソフトウェアのコスト見積り技術, 情報処理,Vol.33, No.8,pp.906-911 (Aug. 1992).
ファンクションポイント (FP) 法 IBM の A.J.Albrecht が 1970 年代半ばに考案. アプリケーションにおける, 入力, 出力, 照会, 論理ファイル ( ユーザデータ ) の加重和によってその機能的規模を表す方法. ソフトウェアを製品, あるいは, サービスとして経済学的に表すための単位を提供
アプリケーションモデルと FP パラメータ 外部ユーザ 入力型出力型照会型 内部ユーザデータ 入力型 出力型 照会型 アプリケーション領域 外部ユーザデータ 他のアプリケーション
経済的生産性 単位工数, あるいは, 単位費用当りに生産された製品, あるいは, サービス ユーザが直接関心を持っていない文書量やプログラム行数に基づいて, ソフトウェアを製品やサービスとして評価することは出来ない.
FP に基づく経済的評価 開発者サイド 1 人月当りの FP FP 当りの作業時間, 開発, 保守コスト FP 当りのテストケース数, バグ数 利用者サイド 企業が所有する FP エンドユーザが必要とする FP 開発, リース, 購入の判断 プロジェクトの価値分析
業界基準曲線 (1):FP と工数 3500 3000 2500 2000 1500 1000 FP 500 0 0 100 200 300 400 500 人月 600
業界基準曲線 (2):FP と開発期間 3500 3000 2500 2000 1500 1000 FP 500 月 0 0 10 20 30 40
業界基準曲線 (3):FP と生産性 3500 3000 2500 2000 1500 1000 FP 500 FP/ 人月 0 0 5 10 15 20 25
業界基準曲線 (4):FP と欠陥 3500 3000 2500 2000 1500 1000 FP 500 バグ数 0 0 500 1000 1500 2000 2500
開発言語による生産性の差 基本アセンブラ マクロアセンブラ C Fortran/COBOL Ada ジェネレータ言語 / 照会言語 オブジェクト指向言語 ビジュアル言語 / 再利用 10 20 30 FP/ 人月
企業は所有する FP 企業分野小規模地方銀行中堅商業銀行大規模国際銀行中規模生命保険会社大規模生命保険会社大規模電話会社大規模電話メーカー中規模メーカー大規模メーカー大規模コンピュータメーカー 所有 FP 125,000 350,000 450,000 400,000 550,000 450,000 600,000 200,000 375,000 1,650,00
職種別の利用 FP 職種航空予約担当者旅行業者企業の会計監査役銀行の貸付担当役保険クレーム審査官航空技術者電気技術者通信技術者ソフトウェア技術者機械技術者ソフトウェアプロジェクト管理者 利用 FP 30,000 35,000 20,000 15,000 5,000 25,000 25,000 20,000 15,000 12,500 3,500
代表的な計算法 IBM 法 (1979) IBM 法改訂版 (1984) SPR 法,SPR 逆算法 (1985) フィーチャポイント法 (1986) Mark IIファンクションポイント法 (1988)
IBM 法 (1979) FP 法のオリジナルバージョン. 次の 5 つの目的を果たす尺度として考案された. ソフトウェアの外部機能を扱う. ユーザにとって重要な機能を扱う. 開発初期から適用できる. 経済的生産性と結び付けることが出来る. プログラムや言語から独立である.
IBM 法 (1979) におけるパラメータ 外部ユーザ 入力出力照会 マスターファイル 入力出力照会アプリケーション領域 他のアプリケーション
計算方法 重要なパラメータ入力数出力数照会数マスタファイル数 重み 4 = 5 = 4 = 10 = 補正前の合計 複雑さの補正 (±25%) 補正後のファンクションポイント
問題点 複雑さ ( による補正値 ) を全くの主観で決めなければならない. 現実のプロジェクトの観察結果からすると, 複雑さの影響による補正の範囲 (±25%) が狭すぎる.
IBM 法改訂版 (1984) 新たなパラメータとして 外部インタフェースファイル を追加した. パラメータ毎に複雑さのランク ( 単純, 平均, 複雑 ) を設け, 重み係数もランク毎に設定した. 14 個の要因 ( 主要補正要因 ) に基づいて, 複雑さ ( による補正値 ) を決定する.
IBM 法改訂版 (1984) におけるパラメータ 外部ユーザ 外部入力外部出力外部照会 内部論理ファイル 外部入力 外部出力 外部照会 アプリケーション領域 外部インタフェースファイル 他のアプリケーション
パラメータ : 外部入力 アプリケーションのユーザ, または, 他のプログラムが, 新たなデータを投入したり, 既存のデータを更新するために用いる画面, または, 様式 入力画面が大きすぎて通常の1 画面に入りきらない場合でも入力数は1とする.
パラメータ : 外部出力 ユーザ, または, 他のプログラムのために, アプリケーションが生成する画面, または, レポート. 一つの目的のために複数の画面やレポートが生成される場合でも出力数は1とする.
パラメータ : 照会 ユーザがアプリケーションに質問したり, 助力や情報を求めたりすることが出来るHELP 画面のような画面. ユーザによる入力に呼応して比較的短時間に出力が生成される ( 返される ) ような場合が該当する.
パラメータ : 内部論理ファイル アプリケーション内に存在し, アプリケーションが管理する論理レコードの集合. 1つのフラットファイル, 階層データベースの1つのノード, 関係データベースの1つのテーブル, ネットワークデータベースの1 つのパスなどが1つのデータファイルである.
パラメータ : 外部インタフェースファイル 他のアプリケーション内に存在し, 他のアプリケーションが管理する論理レコードの集合. 入出力テープファイル, 共有データベースといった, 他のアプリケーションと共有するファイルが該当する. 最小単位はデータファイルと同じ.
計算方法 外部入力 外部出力 内部論理ファイル 外部インタフェースファイル 照会 ( 問合せ処理 ) 重要なパラメータ 重み 単純 3 = 平均 4 = 複雑 6 = 単純 4 = 平均 5 = 複雑 7 = 単純 7 = 平均 10 = 複雑 15 = 単純 5 = 平均 7 = 複雑 10 = 単純 3 = 平均 4 = 複雑 6 = 補正前の合計
計算方法 ( つづき ) 主要補正要因 データ通信分散機能性能運用負荷 ( 利用制約 ) トランザクション密度オンラインデータエントリエンドユーザ能力オンライン更新複雑処理再利用性設置容易性運用容易性複数サイト設置変更 DI 値 0~5 0~5 補正前の合計 0~5 0~5 0~5 処理複雑度調整値 0~5 0~5 補正後のFP 0~5 0~5 0~5 0~5 0~5 0~5 0~5 処理複雑度調整値 (DI 合計値 ) 0.01+0.65= =
主要補正要因の例 C1データ通信 0 バッチアプリケーション 1 遠隔からの印刷あるいはデータエントリ 2 遠隔からの印刷とデータエントリ 3 アプリケーションへの遠隔処理フロントエンド 4 遠隔処理を頻繁に行うアプリケーション 5 遠隔処理中心のアプリケーション
計算例 重要なパラメータ外部入力外部出力内部論理ファイル外部インタフェースファイル照会 ( 問合せ処理 ) 重み 10 4 = 40 10 5 = 50 1 10 = 10 1 7 = 7 10 4 = 40 補正前の合計 147 ( パラメータの複雑度は全て平均的であるとする )
計算例 ( つづき ) 主要補正要因 データ通信分散機能性能運用負荷 ( 利用制約 ) トランザクション密度オンラインデータエントリエンドユーザ能力オンライン更新複雑処理再利用性設置容易性運用容易性複数サイト設置変更 DI 値 0 0 補正前の合計 147 4 3 3 処理複雑度調整値 1.05 4 4 2 補正後のFP 154 3 0 4 4 5 4 処理複雑度調整値 40(DI 合計値 ) 0.01+0.65=1.05 =
SPR 法,SPR 逆算法 (1985) 複雑さの取り扱いを単純にし,FP 計算の工数を削減した. IBM 法の 5 つの目的に加えて次の 3 つの目的を持つ. FP を容易に, かつ, ソフトウェア開発のより早い段階で算出可能とする. ソースプログラムの規模を予測することが出来る. 既存ソフトウェアの FP を逆算することが出来る.
複雑さの計算 複雑さの主要因を次の3つのみとし, 簡単な評価基準によってそれぞれの複雑さを求める. 解決すべき問題, または, アルゴリズムの複雑さ プログラムの複雑さ データの複雑さ
問題の複雑さの評価基準 1 単純なアルゴリズムと計算である. 2 ほとんどが単純なアルゴリズムと計算である. 3 平均的な複雑さのアルゴリズムと計算である. 4 かなり難しいか複雑なアルゴリズムと計算である. 5 非常に難しいアルゴリズムと複雑な計算である.
プログラムの複雑さの評価基準 1 自動生成等により得られたもの. 2 再利用可能モジュールを用いたきれいな構造を持っている. 3 小さなモジュールと単純なパスのみで構成されている. 4 多少複雑なモジュールとパスを含んでいる. 5 大きなモジュールと複雑なパスで構成されている.
データの複雑さの評価基準 1 変数がほとんどなく, 複雑さも低い単純なデータである. 2 変数の数は多いが単純なデータ構造である. 3 多数のファイル, フィールドとデータを含む. 4 複雑なファイル構造とデータを含む. 5 非常に複雑なファイル構造とデータを含む.
計算方法 重要なパラメータ外部入力外部出力論理内部ファイルインタフェースファイル照会 ( 問合せ処理 ) 重み 4 = 5 = 10 = 7 = 4 = 補正前の合計 ( 問題の複雑さ + データの複雑さ ) 0.1+0.4 補正後のファンクションポイント
ソースプログラムの規模予測 FP 当りのプログラム行数を調べた統計データに基づいて行う. ANSI COBOL 74 C... 105 LOC 128 LOC
既存ソフトウェアの FP 算出 FP 当りのプログラム行数を調べた統計データに基づいて行う. 複雑さの 3 要因の合計値で補正する.
逆算の例 対象 :COBOL で 10,500 行のプログラム 複雑さの 3 要因の合計値 6 10,500 105 0.85 ( 複雑さ 6 の場合の補正係数 )= 117.6 FP
まとめ ファンクションポイント法は, ソフトウェアの目に見える機能, 特に, ユーザによって意味のある機能を数え挙げることが出来る. 経済的生産性を測定することが出来る. ソフトウェア開発の初期にも適用可能である. ソースプログラムから独立である. 測定には訓練が必要であり, 一貫性を保つためには注意深さが必要である.