木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

18
2010/02/15 1 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka Univ 木木木木木木木木木木 木木木木木木木木木木木木木木木木木木木 木木木木木 木木木木

description

木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法. 井上研究室 伊藤芳朗. 概要. 背景 オブジェクト指向プログラムの解析 メソッド呼び出し履歴の比較 提案手法 木構造の比較に基づくメソッド呼び出し履歴の変化の可視化手法 実験 ソースコードの変更による影響を確認 まとめ. 背景. オブジェクト指向プログラム オブジェクト同士の相互作用としてシステムの振る舞いを捉える考え方 実行時の動作を理解するのは難しい クラスの継承 多態性(ポリモーフィズム) オブジェクト指向プログラムの動作理解 メソッド呼び出し履歴等の動的情報の解析が有効 - PowerPoint PPT Presentation

Transcript of 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

Page 1: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 1Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

木構造の比較に基づくメソッド呼び出し履歴の変化の可視化手

井上研究室伊藤芳朗

Page 2: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

概要背景

►オブジェクト指向プログラムの解析►メソッド呼び出し履歴の比較

提案手法►木構造の比較に基づくメソッド呼び出し履歴の変

化の可視化手法実験

►ソースコードの変更による影響を確認まとめ

Page 3: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

背景オブジェクト指向プログラム

►オブジェクト同士の相互作用としてシステムの振る舞いを捉える考え方

►実行時の動作を理解するのは難しい クラスの継承 多態性(ポリモーフィズム)

オブジェクト指向プログラムの動作理解►メソッド呼び出し履歴等の動的情報の解析が有効

オブジェクト間のメソッド呼び出し関係を可視化

Page 4: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

シーケンス図生成システム  Amida

Java プログラムのメソッド呼び出し履歴を取得し,シーケンス図を生成するシステム►メソッド呼び出し履歴はメソッド名,オブジェク

ト ID ,スレッド ID などの情報の系列►メソッドの呼び出し関係をシーケ

ンス図で表示►ループや再帰呼び出しを

圧縮する機能を持つ シーケンス図が巨大になるのを防ぐ

谷口, 石尾, 神谷, 楠本, 井上 : “ プログラム実行履歴からの簡潔なシーケンス図の作成手法” , コンピュータソフトウェア, Vol.24 , No.3 (2007) , pp.153-169 .

Page 5: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

シーケンス図オブジェクト間のメッセージ通信を時系列に沿って

表現するシステムの設計時に作成されるプログラムの動作の理解に有効

B C D EA F G H I

Page 6: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

プログラムの振る舞いの比較の必要性

ソースコードを変更すると実行時の動作が変わる►デバッグ作業でのソースコードの変更

ソースコードの変更が正しいかの確認したい 予想していない動作の変化を発見したい

実行時の動作はメソッド呼び出し履歴に記録される

メソッド呼び出し履歴を比較すれば動作の変化がわかる►ソースコードの変更前後で同じシナリオを実行する►ソースコードの変更による動作の変化が表れる

Page 7: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

メソッド呼び出し履歴の比較の問題点

メソッド呼び出し履歴は巨大►人間が比較すると時間がかかってしまう

予想していない変更点の発見が困難メソッド呼び出し履歴ごとに生成したオブジ

ェクトの ID が異なる►オブジェクト ID は生成順序やメモリ上の配置な

どを元に実行ごとに決定するため►同じ役割のオブジェクトの対応が取れない

Page 8: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

提案手法2 つのメソッド呼び出し履歴を比較し,動作

の変化を検出する►ソースコードの変更前後で同じシナリオを実行

したメソッド呼び出し履歴を取得►メソッドの呼び出し関係を木構造にして比較

動作の変化を可視化する►可視化には Amida を利用し,シーケンス図を生

成するメソッド呼び出し履歴全体のシーケンス図を生成動作の変化である部分を強調表示

Page 9: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

木構造への変換メソッド呼び出し履歴を木構造に変換する

►1 つのメソッド呼び出しを 1 つのノードにする►メソッドの実行中に呼ばれたメソッドを子ノード

として親子関係を作る►これをメソッド呼び出し関係木と呼ぶ

2 3

4

1 5

0

666

B C D EA F G

0 23

41

5 6

Page 10: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

メソッド呼び出し関係木の比較一方のメソッド呼び出し関係木の中から部分

木を取り出し,一致する部分木があるか判定する►トップダウン方式で比較していく►部分木が一致したら,ノードにマークをつける

マークのついた部分木は変化していない部分である►全ての部分木で探索が終わったら比較が終わる

最終的にマークのないノードが変化した部分だとわかる

Page 11: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

部分木の一致条件部分木 T1 と T2 が以下の全てを満たすと一致する

►T1 の根 r 1 と T2 の根 r 2 が一致する

►r 1 と r 2 の子ノードの数が一致する

►r 1 の i 番目の子ノード r 1i を根とする部分木 T1i と r 2

の i 番目の子ノード r 2i を根とする部分木 T2i が一致する

ノード r 1 と r 2 が以下の全てを満たすと一致する►メソッド呼び出し名が等しい►引数の型が等しい►返り値の型が等しい►呼び出し元オブジェクトのクラス名が等しい►呼び出し先オブジェクトのクラス名が等しい

Page 12: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

メソッド呼び出し関係木の比較の例

2 3

4

1

2 3

4

1 5

0

66

0

7

6

左側の木の部分木に一致する部分木を探す1. ノード 1 と一致するノードを探す2. ノード 1 の子ノードが一致するか調べる3. ノード 3 の子ノードが一致するか調べる

一致する部分のないノードは変化した部分とする

Page 13: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

シーケンス図へ可視化メソッド呼び出し履歴全体をシーケンス図に

する►変化した部分を強調して表示►変化した部分を自動で探索

シーケンス図が巨大になると探すのが困難 変化した部分に関係する一連のメソッド呼び出しを抜

き出す1 2 3 40 5 6 3 5 6

抽出

Page 14: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

適用実験実験の目的

►提案手法で実際にソースコードの変更による影響を確認する

実験対象►画像編集ソフト JHotDraw のメソッド呼び出し履

歴バージョン 7.3 と 7.3.1 で同じシナリオを実行

– プログラムを起動し,三角形を 1 つ描き保存せずに終了する

評価方法►バージョン間の変更点を発見できるかバージョン イベント数 ファイルサイズ

(KB)

7.3 55789 5580

7.3.1 49127 4858

Page 15: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 15Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験結果実際にソースコードの変更を動作の変化と

して表示できた►3 つのクラスで変更点を発見

新しいメソッドの追加 (DefaultDrawingEditor クラス )メソッドの処理の変更 (AbstractTool クラス )コンストラクタの処理の変更 (DefaultDrawingView ク

ラス )

ソースコードが変更されていないのに動作の変化があると判定された►実行時に派生クラスが変わっていたため

Page 16: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 16Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

スクリーンショット

Page 17: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 17Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

考察提案手法のメリット

►全体の流れが追える メソッドを追加したときにどのような影響が出たのか

が分かる►ソースコードの変更以外での変化を捉えられる

設定ファイルや入力データの変更による動作の変化– 入力による振る舞いの変化の理解– バグ検出に応用

Page 18: 木構造の比較に基づく メソッド呼び出し履歴の変化の可視化手法

2010/02/15 18Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

まとめまとめ

►木構造の比較に基づくメソッド呼び出し履歴の変化の可視化手法を提案したプログラムの変更による動作の変化を検出検出した動作の変化をシーケンス図に視覚化

►実験を行い,動作の変化からソースコードの変更点を発見した

今後の課題►比較計算にかかる時間の削減

アルゴリズムの改良Amida のループ圧縮処理と組み合わせる