ファンクションポイント計測のための 実行履歴からトランザクションファンク ションを抽出する手法の提案 井上研究室 博士前期課程2年 森岡 佑 2007/2/19 CS専攻 修士論文発表会 1 構成 ファンクションポイント計測の概要 研究の動機と目的 プログラムを利用したファンクションポイント計 測法 提案手法の説明 トランザクションファンクション抽出手法 適用実験、考察 まとめ、今後の課題 2007/2/19 CS専攻 修士論文発表会 2 ファンクションポイント(FP)計測の概要 アプリケーションソフトウェアに含まれるデータや処理を 分類し,それぞれ点数をつけて数値化し,機能量を算 出 データファンクション(データのまとまり) トランザクションファンクション(データの入出力処理) トランザクション ファンクション ユーザ データ ファンクション 入力(EI) 出力(EO) 照会(EQ) 計測対象ソフトウェア 2007/2/19 CS専攻 修士論文発表会 3 研究の動機と目的 ファンクションポイントはソフトウェアの設計仕様書から 求められることが多い 過去に開発されたソフトウェアのFP計測は困難 設計仕様書が存在しない 最終成果物で実現されている機能が設計仕様書と一致しな い 最終成果物であるプログラム自身からファンク ションポイントを計測したい トランザクションファンクションの検出に着手 2007/2/19 CS専攻 修士論文発表会 4 プログラムからのFP計測方針 プログラムから計測する際のデータファンクション(DF), トランザク ションファンクション(TF)の仮定 DF ・・・ 対応するクラスとして実装されている [1] フィールド値にデータを保持する getter, setter メソッドをもつ TF ・・・ メソッド呼び出しのまとまりとして実装されている DFに対して何らかの処理を行うメソッド群を含んでいる [1] トランザクションファンクションは「アプリケーションに対するデータの出入りを伴う処理」を指す 仮定に基づいた計測方針 DFはユーザがクラス単位で指定 「DFに相当するクラス」を以降DFCとする TFは実行履歴上から自動で特定 DF ・ 特定したTFからFP値計測 [1] G.Antoniol, C.Lokan, G.Caldiera, R.Fiutem: “A Function Point-Like Measure for ObjectOriented Software”, Empirical Software Engineering, vol.4, No.3, pp.263-287, 1999. 2007/2/19 CS専攻 修士論文発表会 5 各クラスタで使用しているデータファンクションクラスと プログラムを実行して履歴を 類似したクラスタがあればまとめる クラスタの種類を決定する メソッド呼び出しをクラスタリング 各クラスタからもFPを求める データファンクションクラスからFPを求める FPを求める そのフィールド値の個数を求める 取得する プログラムからFPを計測する手順 データファンクション クラス テストケース 実行履歴 DFC1 DFC1 DFC2 DFC3 DFC4 DFC2 DFC3 DFC4 FP EQ プログラム EO ユーザ 2007/2/19 CS専攻 修士論文発表会 自動化 6 想定するFP値計測の手順 1. 2. 3. 4. メソッド呼び出しのクラスタリング TFの抽出 各クラスタの種類(EI,EO,EQ)の判定 類似したクラスタをまとめる 残ったクラスタをTFと考えてそれぞれFP値を計 測 5. 各DFのFP値を計測 6. 合計して全体のFP値を求める 2007/2/19 CS専攻 修士論文発表会 7 メソッド呼び出しのクラスタリング:手順1 DFCのフィールド値から のデータ依存関係(デー タフロー)とフィールド値 へのデータ依存関係を 解析 実行履歴上でのデータ フロー範囲を決定 実行履歴 DFC1 DFC2 DFC3 DFC4 データフロー範囲 2007/2/19 CS専攻 修士論文発表会 8 メソッド呼び出しのクラスタリング: 手順2 次の条件にあてはまるデータフローを 除去 複数のトランザクションに跨っている と考えられるデータフロー 実行履歴 DFC 例. ログイン時に入力した情報を他ト ランザクションで使用 データベース - DFC 間のデータフ ロー DFCのデータの一時格納処理 メソッド外に出て行かないデータフ ロー データが他メソッドに遷移しない DFCの同一インスタンスへの処理を行 う、隣接するデータフローを結合 1つのトランザクションファンクション 中の処理とみなす 隣接データフローの結合 2007/2/19 CS専攻 修士論文発表会 9 メソッド呼び出しのクラスタリング:手順3 範囲が重複するデータフ ローの範囲を1つにまとめる 実行履歴 DFC1 DFC2 DFC3 DFC4 1つのトランザクション中で 複数のデータを処理してい ると考える 得られたデータフロー範囲 中に含まれるメソッド呼び出 し群を1つのクラスタとする 1クラスタがトランザクション 1回の実行に対応 データフロー範囲が 重なる部分 2007/2/19 CS専攻 修士論文発表会 10 適用実験1 対象プログラム ツール貸し出しシステム 約37000LOC 38トランザクションファンクション データファンクション データファンクションに対応するク ラスを8個指定 実行するテストケース 一般ユーザが実行できる全ての 処理を実行 16種類のトランザクションファンク ションが含まれる 表1. テストケースに含まれる トランザクションファンクション 利用中物品検索 使用中物品検索(条件付) 物品検索 物品詳細 物品貸出 物品登録未承認案件一覧 物品新規登録(一般向け) 物品登録未承認案件詳細 物品管理品一覧 物品管理品詳細 物品追加登録 備考表示 備考更新 アイテムグループ検索(大分類) アイテムグループ検索(中分類) コードテーブル検索 重複を含む35回のTF実行 2007/2/19 CS専攻 修士論文発表会 11 評価方法 TFが実行されているメソッド呼 び出し群の範囲を、実行履歴 やソースコードから特定しておく TFを実行する メソッド呼び出し群の 範囲 提案手法で検出した データフロー範囲 提案手法によって検出したデー タフロー範囲と、TF実行メソッド 呼び出し群の対応を確認 2007/2/19 1対1で対応するとき、TFが抽 出できたと判定 同一TFが複数回出現する場 合は、全ての出現時において データフローと1対1で対応す るときのみ正しくTFが抽出で きたと判定 CS専攻 修士論文発表会 12 結果 履歴中のTF出現回数(重複含む) 35回 検出したデータフロー数 32個 TFに対応するデータフロー数 28個 適合率 : 0.875 再現率 : 0.800 TF16種類のうち、11種類のTFを正しく検出 2007/2/19 CS専攻 修士論文発表会 13 TF検出結果 16種類中11種を正しく検 出 TFを正しく検出できなかっ たケース あるTFで生成されたデータ が、次に実行されるTFでも利 用される (表2.※) 複数のTFが同時に実行され る (表2. *) 2007/2/19 表2. TF抽出結果 トランザクションファンクション名 判定 利用中物品検索 ○ 使用中物品検索(条件付) ○ 物品検索 ○ × ※ 物品詳細 物品貸出 ○ 物品登録未承認案件一覧 ○ 物品新規登録(一般向け) ○ 物品登録未承認案件詳細 ○ 物品管理品一覧 ○ ※ 物品管理品詳細 × 物品追加登録 ○ 備考表示 ○ 備考更新 ○ * アイテムグループ検索(大分類) × * アイテムグループ検索(中分類) × × * コードテーブル検索 CS専攻 修士論文発表会 14 適用実験2 目的 同一の設計仕様に基づいて実装が行われた複数 のシステムに対して、提案手法を適用 同じ結果が得られることを検証 対象プログラム 図書管理システム 学生4グループが同じ設計仕様に基づいて作成 各グループが作成した4個のシステム(A,B,C,D)が対象 データファンクション データファンクションに対応するクラスを2個指定 実行するテストケース ユーザが実行できる全ての処理を実行 12種類のトランザクションファンクションが含まれる 2007/2/19 表3. テストケースに含まれる トランザクションファンクション ログイン 新規ユーザ登録 図書一覧表示 ウォッチリスト表示 貸出中図書表示 図書詳細表示 ラック一覧照会 図書追加 図書貸出 図書返却 図書ウォッチ開始 図書ウォッチ解除 重複を含む21回のTF実行 CS専攻 修士論文発表会 15 結果 表4. グループA 表5. グループB 履歴中のTF出現回数(重複含む) 21回 履歴中のTF出現回数(重複含む) 21回 検出したデータフロー数 89個 検出したデータフロー数 97個 TFに対応するデータフロー数 12個 TFに対応するデータフロー数 12個 表6. グループC 表7. グループD 履歴中のTF出現回数(重複含む) 21回 履歴中のTF出現回数(重複含む) 21回 検出したデータフロー数 105個 検出したデータフロー数 109個 TFに対応するデータフロー数 12個 TFに対応するデータフロー数 12個 トランザクションファンクションと対応していなかったデータフロー範囲 DFCのデータ項目から読み出したURLを使って画像を表示 仕様上のTFではないが,本手法ではシステム内で実装されたひとつの 機能として抽出された 4グループ全てのTFに対応するデータフロー数が一致 TF12種類のうち、5種類のTFを正しく検出 2007/2/19 CS専攻 修士論文発表会 16 TF検出結果 12種類中5種を正しく検出 表8. TF抽出結果 TF TFを正しく検出できなかった ケース データファンクションクラスの実 装が提案手法の想定と異なる (表8. ▲) 2007/2/19 CS専攻 修士論文発表会 ▲ ▲ ▲ ▲ ▲ ▲ ▲ ログイン 新規ユーザ登録 図書一覧表示 ウォッチリスト表示 貸出中図書表示 図書詳細表示 ラック一覧照会 図書追加 図書貸出 図書返却 図書ウォッチ開始 図書ウォッチ解除 判定 × × ○ ○ ○ ○ × ○ × × × × 17 考察 あるTFで生成されたデータが、次に実行されるTFで も利用される場合に正しく検出できない 取得した情報をそのまま次のTFで処理 異なる実行履歴を使用した実験では検出可能 データファンクションクラスの実装が提案手法の想定 と異なる場合に、TFを検出できない 適用対象の実装に依存 複数のTFが同時に実行される場合に正しく検出でき ない データフローは発生しているが、1つの大きなデータフロー に含まれる 現状の提案手法ではデータフローのマージ処理を行うため 検出できない データフローのマージの際に条件を設定 2007/2/19 CS専攻 修士論文発表会 18 まとめと今後の課題 まとめ 実行履歴を利用してメソッド呼び出し群をクラス タリングすることによって、トランザクションファン クションを抽出する手法を提案 実際のプログラムを対象に適用実験 今後の課題 適用実験によって見つかった問題点への対策 更に他の実験対象を用いた適用実験 2007/2/19 CS専攻 修士論文発表会 19
© Copyright 2024 ExpyDoc