プログラム実行履歴を用いたトラン ザクションファンクション抽出手法 大阪大学 大学院情報科学研究科 ‡ 株式会社 日立システムアンドサービス † 森岡 佑 , 谷口考治 , 楠本真二 , 井上克郎 , ‡ ‡ ‡ ‡ 英 繁雄 , 芝元俊久 , 前田憲一 , 津田道夫 † 2007/2/2 † ソフトウェアサイエンス研究会 † † 1 構成 ファンクションポイント計測の概要 研究の動機と目的 プログラムを利用したファンクションポイント計 測法 提案手法の説明 トランザクションファンクション抽出手法 メソッド呼び出しのクラスタリング 適用実験、考察 まとめ、今後の課題 2007/2/2 ソフトウェアサイエンス研究会 2 ファンクションポイント(FP)計測の概要 アプリケーションソフトウェアに含まれるデータや処理を 分類し,それぞれ点数をつけて数値化し,機能量を算 出 データファンクション(データのまとまり) トランザクションファンクション(データの入出力処理) トランザクション ファンクション ユーザ データ ファンクション 入力(EI) 出力(EO) 照会(EQ) 計測対象ソフトウェア 2007/2/2 ソフトウェアサイエンス研究会 3 研究の動機と目的 ファンクションポイントはソフトウェアの設計仕様書から 求められることが多い 過去に開発されたソフトウェアのFP計測は困難 設計仕様書が存在しない 最終成果物で実現されている機能が設計仕様書と一致しな い 最終成果物であるプログラム自身からファンク ションポイントを計測したい トランザクションファンクションの検出に着手 2007/2/2 ソフトウェアサイエンス研究会 4 プログラムを利用したFP計測方針 プログラムから計測する際のデータファンクション (DF), トランザクションファンクション(TF)の仮定 DF ・・・ 対応するクラスとして実装されている フィールド値にデータを保持する TF ・・・ メソッド呼び出しのまとまりとして実装されている DFに対して何らかの処理を行うメソッド群を含んでいる トランザクションファンクションは「アプリケーションに対するデータの出入りを伴う処 理」を指す 仮定に基づいた計測方針 DFはユーザがクラス単位で指定 「DFに相当するクラス」を以降DFCとする TFは実行履歴上から自動で特定 DF ・ 特定したTFからFP値計測 2007/2/2 ソフトウェアサイエンス研究会 5 各クラスタで使用しているデータファンクションクラスと プログラムを実行して履歴を 類似したクラスタがあればまとめる クラスタの種類を決定する メソッド呼び出しをクラスタリング 各クラスタからもFPを求める データファンクションクラスからFPを求める 未調整FPを求める そのフィールド値の個数を求める 取得する プログラムからFPを計測する手順 データファンクション クラス テストケース 実行履歴 DFC1 DFC1 DFC2 DFC3 DFC4 DFC2 DFC3 DFC4 FP EQ プログラム EO ユーザ 2007/2/2 ソフトウェアサイエンス研究会 自動化 6 FP値計測までの手順 1. 2. 3. 4. メソッド呼び出しのクラスタリング TFの抽出 各クラスタの種類(EI,EO,EQ)の判定 類似したクラスタをまとめる 残ったクラスタをTFと考えてそれぞれFP値を計 測 5. 各DFのFP値を計測 6. 合計して全体のFP値を求める 2007/2/2 ソフトウェアサイエンス研究会 7 メソッド呼び出しのクラスタリング:手順1 DFCのフィールド値から のデータ依存関係(デー タフロー)とフィールド値 へのデータ依存関係を 解析 実行履歴上でのデータ フロー範囲を決定 実行履歴 DFC1 DFC2 DFC3 DFC4 データフロー範囲 2007/2/2 ソフトウェアサイエンス研究会 8 メソッド呼び出しのクラスタリング: 手順2 次の条件にあてはまるデータフローを除去 複数のトランザクションに跨っていると考え られるデータフロー 例. ログイン時に入力した情報を他トランザ クションで使用 全メソッド呼び出し回数のうち、対象データ フローが占める割合の閾値を設定 DFCのデータの一時格納処理 メソッド外に出て行かないデータフロー DFC データベース - DFC 間のデータフロー 実行履歴 データが他メソッドに遷移しない DFCの同一インスタンスへの処理を行う、 隣接するデータフローを結合 1つのトランザクションファンクション中の処 理とみなす 隣接データフローの結合 2007/2/2 ソフトウェアサイエンス研究会 9 メソッド呼び出しのクラスタリング:手順3 範囲が重複するデータフ ローの範囲を1つにまとめる 実行履歴 DFC1 DFC2 DFC3 DFC4 1つのトランザクション中で 複数のデータを処理してい ると考える 得られたデータフロー範囲 中に含まれるメソッド呼び出 し群を1つのクラスタとする 1クラスタがトランザクション 1回の実行に対応 データフロー範囲が 重なる部分 2007/2/2 ソフトウェアサイエンス研究会 10 適用実験 対象プログラム ツール貸し出しシステム 約37000LOC 38トランザクションファンクション データファンクション 実際のデータファンクションに対応 するクラスを8個指定 使用する実行履歴 ユーザが実行できる全ての処理を 実行 16トランザクションファンクションが 含まれる 2007/2/2 表1. 含まれるトランザクション ファンクション 利用中物品検索 使用中物品検索(条件付) 物品検索 物品詳細 物品貸出 物品登録未承認案件一覧 物品新規登録(一般向け) 物品登録未承認案件詳細 物品管理品一覧 物品管理品詳細 物品追加登録 備考表示 備考更新 アイテムグループ検索(大分類) アイテムグループ検索(中分類) コードテーブル検索 重複を含め、35回のTF実行 ソフトウェアサイエンス研究会 11 評価方法 実行履歴中のメソッド呼び出しには、 TFに対応する メソッド呼び出しの 呼び出された順に時系列でID番 ID番号範囲 号を付加 TFが実行されている箇所に対応す るメソッド呼び出し群のID番号の 範囲を、実行履歴やソースコードか ら判断 提案手法で検出した データフロー範囲 取得データを 画面出力 提案手法によって検出したデータ フロー範囲が、TF実行箇所のメ ソッド呼び出しに付けられたID番 号範囲と対応するかどうかを確認 2007/2/2 1対1で対応するとき、TFが抽出 できたと判定 同一TFが複数回出現する場合は、 全ての出現時においてデータフ ローと1対1で対応するときのみ正 しくTFが抽出できたと判定 ソフトウェアサイエンス研究会 12 結果 35回のTF実行に対して、32個のデータフ ローを検出 検出した32個のデータフローのうち、28個はトラ ンザクションファンクションと1対1で対応 重複して現れるトランザクションファンクションを含 む トランザクションファンクションの検出結果 含まれるトランザクションファンクション16個のうち、 11個を正しく検出 2007/2/2 ソフトウェアサイエンス研究会 13 TF検出結果 16個中11個を正しく検出 コードグループ検索 TFを正しく検出できなかっ 選択肢の情報を取得 たケース あるTFで生成されたデータ が、次に実行されるTFでも利 用される (表2.※) データの詳細をユーザに与え るTF 複数のTFが同時に実行され る (表2. *) 画面に表示する選択肢 画面に表示する選択肢の のデータ項目を検索・取 データ項目を検索するTF 得するTF 2007/2/2 表2. TF抽出結果 トランザクションファンクション名 判定 利用中物品検索 ○ 使用中物品検索(条件付) ○ 物品検索 ○ × ※ 物品詳細 物品貸出 ○ 物品登録未承認案件一覧 ○ 物品新規登録(一般向け) ○ 物品登録未承認案件詳細 ○ 物品管理品一覧 ○ ※ 物品管理品詳細 × 物品追加登録 ○ 備考表示 ○ 備考更新 ○ * アイテムグループ検索(大分類) × × * アイテムグループ検索(中分類) アイテムグループ検索 × * コードテーブル検索 選択肢の情報を取得 ソフトウェアサイエンス研究会 14 考察 あるTFで生成されたデータが、次に実行されるTFで も利用される場合に正しく検出できない 取得した情報をそのまま次のTFで処理 異なる実行履歴を使用した実験では検出可能 詳細情報取得のみ実行した際の実行履歴 16個中13個のTFの検出に成功 複数のTFが同時に実行される場合に正しく検出でき ない データフローは発生しているが、1つの大きなデータフロー に含まれる 現状の提案手法ではデータフローのマージ処理を行うため 検出できない 対処法検討中 2007/2/2 ソフトウェアサイエンス研究会 15 まとめと今後の課題 まとめ 実行履歴を利用してメソッド呼び出し群をクラス タリングすることによって、トランザクションファン クションを抽出する手法を提案 実際のプログラムを対象に適用実験 今後の課題 適用実験によって見つかった問題点への対策 複数のTFが同時に実行される場合の処理 別の実験対象ソフトウェアを用いて適用実験 2007/2/2 ソフトウェアサイエンス研究会 16
© Copyright 2024 ExpyDoc