プログラム実行履歴を用いたトランザクションファンクション抽出手法

Slides:



Advertisements
Similar presentations
API 呼び出し列の差分を利用した Android アプリケーション比較ツールの 試作 井上研究室 神田 哲也.
Advertisements

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 保守支援を目的とした コードクローン情報検索ツール.
OWL-Sを用いたWebアプリケーションの検査と生成
シーケンス図の生成のための実行履歴圧縮手法
背景 ソフトウェアの大規模化・複雑化 生産性と品質の向上 ↓ オブジェクト指向分析設計の適用 開発ツールの投入.
高度情報演習1A “テーマC” 実践 画像処理プログラミング 〜画像認識とCGによる画像生成〜 第四回 演習課題 画像中からの物体抽出処理(背景情報を手がかりとして) 芝浦工業大学 工学部 情報工学科 青木 義満 2006/05/15.
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
Javaプログラムの開発履歴における アクセス修飾子過剰性の分析
アクセス修飾子過剰性の変遷に着目したJavaプログラム部品の分析
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
日本大学 文理学部 情報システム解析学科 谷研究室 益田真太郎
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
ソースコードに対する適用可能な修正手順を 可視化するリファクタリング支援手法の提案
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
類似するコーディングパターンの 利用状況調査ツールの提案
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
識別子の共起関係に基づく類似コード検索法の提案と 欠陥検出への適用
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
動的依存グラフの3-gramを用いた 実行トレースの比較手法
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
実行時情報に基づく OSカーネルのコンフィグ最小化
Javaプログラムの変更を支援する 影響波及解析システム
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
高度情報演習1A “テーマC” 実践 画像処理プログラミング 第六回 最終課題 画像処理による動物体自動抽出、モーションキャプチャ
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
インスタンスの型を考慮したJavaプログラムの実行経路の列挙手法の提案
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
オブジェクトの動的支配関係解析を 用いたシーケンス図の縮約
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
クラスタリングを用いた ベイズ学習モデルを動的に更新する ソフトウェア障害検知手法
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
オブジェクト生成の観測に基づく プログラム実行の要約の抽出
Presentation transcript:

プログラム実行履歴を用いたトランザクションファンクション抽出手法 †大阪大学 大学院情報科学研究科 ‡株式会社 日立システムアンドサービス 森岡 佑†, 谷口考治†, 楠本真二†, 井上克郎†, 英 繁雄‡, 芝元俊久‡, 前田憲一‡, 津田道夫‡ 2007/2/2 ソフトウェアサイエンス研究会

構成 ファンクションポイント計測の概要 研究の動機と目的 プログラムを利用したファンクションポイント計測法 提案手法の説明 適用実験、考察 トランザクションファンクション抽出手法 メソッド呼び出しのクラスタリング 適用実験、考察 まとめ、今後の課題 2007/2/2 ソフトウェアサイエンス研究会

ファンクションポイント(FP)計測の概要 アプリケーションソフトウェアに含まれるデータや処理を分類し,それぞれ点数をつけて数値化し,機能量を算出 データファンクション(データのまとまり) トランザクションファンクション(データの入出力処理) トランザクション ファンクション データ ファンクション 入力(EI) 出力(EO) 照会(EQ) ユーザ 計測対象ソフトウェア 2007/2/2 ソフトウェアサイエンス研究会

研究の動機と目的 最終成果物であるプログラム自身からファンクションポイントを計測したい ファンクションポイントはソフトウェアの設計仕様書から求められることが多い 過去に開発されたソフトウェアのFP計測は困難 設計仕様書が存在しない 最終成果物で実現されている機能が設計仕様書と一致しない 最終成果物であるプログラム自身からファンクションポイントを計測したい トランザクションファンクションの検出に着手 2007/2/2 ソフトウェアサイエンス研究会

プログラムを利用したFP計測方針 プログラムから計測する際のデータファンクション(DF), トランザクションファンクション(TF)の仮定 フィールド値にデータを保持する TF ・・・ メソッド呼び出しのまとまりとして実装されている DFに対して何らかの処理を行うメソッド群を含んでいる トランザクションファンクションは「アプリケーションに対するデータの出入りを伴う処理」を指す 仮定に基づいた計測方針 DFはユーザがクラス単位で指定 「DFに相当するクラス」を以降DFCとする TFは実行履歴上から自動で特定 DF ・ 特定したTFからFP値計測 2007/2/2 ソフトウェアサイエンス研究会

プログラムからFPを計測する手順 各クラスタで使用しているデータファンクションクラスと そのフィールド値の個数を求める 類似したクラスタがあればまとめる クラスタの種類を決定する プログラムを実行して履歴を取得する メソッド呼び出しをクラスタリング 各クラスタからもFPを求める プログラムからFPを計測する手順 データファンクションクラスからFPを求める 未調整FPを求める ユーザ 実行履歴 DFC1 DFC2 DFC3 DFC4                       自動化 DFC1 DFC2 DFC3 DFC4 データファンクション クラス FP テストケース EQ プログラム EO 2007/2/2 ソフトウェアサイエンス研究会

FP値計測までの手順 合計して全体のFP値を求める メソッド呼び出しのクラスタリング TFの抽出 各クラスタの種類(EI,EO,EQ)の判定 類似したクラスタをまとめる 残ったクラスタをTFと考えてそれぞれFP値を計測 各DFのFP値を計測 合計して全体のFP値を求める TFの抽出 EO(外部出力), EQ(外部照会)はともに出力を表すため、この段階ではともに「出力」を表すTFとして判定 2007/2/2 ソフトウェアサイエンス研究会

メソッド呼び出しのクラスタリング:手順1 DFCのフィールド値からのデータ依存関係(データフロー)とフィールド値へのデータ依存関係を解析 実行履歴上でのデータフロー範囲を決定 実行履歴 DFC1 DFC2 DFC3 DFC4 データフロー範囲 2007/2/2 ソフトウェアサイエンス研究会

メソッド呼び出しのクラスタリング: 手順2 次の条件にあてはまるデータフローを除去 実行履歴 次の条件にあてはまるデータフローを除去 複数のトランザクションに跨っていると考えられるデータフロー 例. ログイン時に入力した情報を他トランザクションで使用 全メソッド呼び出し回数のうち、対象データフローが占める割合の閾値を設定 データベース - DFC 間のデータフロー DFCのデータの一時格納処理 メソッド外に出て行かないデータフロー データが他メソッドに遷移しない DFCの同一インスタンスへの処理を行う、隣接するデータフローを結合 1つのトランザクションファンクション中の処理とみなす DFC 同一クラスへ戻るデータフロー : 「備考表示」と「備考更新」を分けるため 隣接データフローの結合 2007/2/2 ソフトウェアサイエンス研究会

メソッド呼び出しのクラスタリング:手順3 範囲が重複するデータフローの範囲を1つにまとめる 1つのトランザクション中で複数のデータを処理していると考える 得られたデータフロー範囲中に含まれるメソッド呼び出し群を1つのクラスタとする 1クラスタがトランザクション1回の実行に対応 実行履歴 DFC1 DFC2 DFC3 DFC4 データフロー範囲が 重なる部分 2007/2/2 ソフトウェアサイエンス研究会

適用実験 対象プログラム ツール貸し出しシステム データファンクション 使用する実行履歴 約37000LOC 38トランザクションファンクション データファンクション 実際のデータファンクションに対応するクラスを8個指定 使用する実行履歴 ユーザが実行できる全ての処理を実行 16トランザクションファンクションが含まれる 重複を含め、35回のTF実行 表1. 含まれるトランザクション ファンクション 2007/2/2 ソフトウェアサイエンス研究会

評価方法 実行履歴中のメソッド呼び出しには、呼び出された順に時系列でID番号を付加 提案手法で検出した データフロー範囲 TFに対応する メソッド呼び出しの ID番号範囲 実行履歴中のメソッド呼び出しには、呼び出された順に時系列でID番号を付加 TFが実行されている箇所に対応するメソッド呼び出し群のID番号の範囲を、実行履歴やソースコードから判断 提案手法によって検出したデータフロー範囲が、TF実行箇所のメソッド呼び出しに付けられたID番号範囲と対応するかどうかを確認 1対1で対応するとき、TFが抽出できたと判定 同一TFが複数回出現する場合は、全ての出現時においてデータフローと1対1で対応するときのみ正しくTFが抽出できたと判定 取得データを 画面出力 2007/2/2 ソフトウェアサイエンス研究会

結果 35回のTF実行に対して、32個のデータフローを検出 トランザクションファンクションの検出結果 検出した32個のデータフローのうち、28個はトランザクションファンクションと1対1で対応 重複して現れるトランザクションファンクションを含む トランザクションファンクションの検出結果 含まれるトランザクションファンクション16個のうち、11個を正しく検出 2007/2/2 ソフトウェアサイエンス研究会

TF検出結果 16個中11個を正しく検出 TFを正しく検出できなかったケース コードグループ検索 選択肢の情報を取得 アイテムグループ検索 16個中11個を正しく検出 TFを正しく検出できなかったケース あるTFで生成されたデータが、次に実行されるTFでも利用される (表2.※) データの詳細をユーザに与えるTF 複数のTFが同時に実行される (表2. *) 画面に表示する選択肢のデータ項目を検索するTF 表2. TF抽出結果 ※ ※ * 画面に表示する選択肢のデータ項目を検索・取得するTF * * 2007/2/2 ソフトウェアサイエンス研究会

考察 あるTFで生成されたデータが、次に実行されるTFでも利用される場合に正しく検出できない 異なる実行履歴を使用した実験では検出可能 詳細情報取得のみ実行した際の実行履歴 16個中13個のTFの検出に成功 複数のTFが同時に実行される場合に正しく検出できない データフローは発生しているが、1つの大きなデータフローに含まれる 現状の提案手法ではデータフローのマージ処理を行うため検出できない 対処法検討中 2007/2/2 ソフトウェアサイエンス研究会

まとめと今後の課題 まとめ 実行履歴を利用してメソッド呼び出し群をクラスタリングすることによって、トランザクションファンクションを抽出する手法を提案 実際のプログラムを対象に適用実験 今後の課題 適用実験によって見つかった問題点への対策 複数のTFが同時に実行される場合の処理 別の実験対象ソフトウェアを用いて適用実験 2007/2/2 ソフトウェアサイエンス研究会