スライド 1

オブジェクト生成の観測に基づく
プログラム実行の要約の抽出
大阪大学大学院情報科学研究科
○中野 佑紀,渡邊 結
石尾 隆,井上 克郎
1
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
背景
• デバッグ,保守作業ではプログラムの動作理解が重要
• プログラムはデータを加工していくことで処理を実現
– データを追跡すれば,動作の理解が可能
ある予定管理プログラムでの例
予定データ
ファイル
予定データ
暦データ
表示用
データ
更新後の
予定データ
予定データ
ファイル
更新後の
表示用データ
• デバッガとブレイクポイントを用いてデータを追跡
– すべての命令をステップ実行することは非現実的
– 一気に実行するとその間のデータの様子が分からない
2
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
提案手法
• プログラムの実行時情報からデータの加工
プロセスをオブジェクトの生成関係として抽出
– 指定された実行区間を対象
• 多くのオブジェクトが生成
• 出力となるオブジェクトは少数
Register
Dialog
生成
利用
– 生成関係を要約
• 入出力に無関係なものを排除
• 生成関係を簡潔にする
• 区間における動作理解を支援
Date
Time
Schedule
生成
利用
String
Content
3
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
詳細
入力 : 実行履歴,区間,省略するクラス集合
実行履歴 : プログラムの実行時情報を記録したもの
メソッド呼び出し,フィールドアクセス等の情報を含む
1. オブジェクトの分類
2. 生成関係の特定
3. 生成関係の要約
3-1.オブジェクトの省略
3-2.オブジェクトの集約
出力 : 入出力オブジェクト一覧,要約した生成関係
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
1. オブジェクトの分類
• 入力オブジェクト
– 指定区間より前で生成
: 生成
– 区間内で利用
• 内部オブジェクト
5
出力
: 利用
• 出力オブジェクト
– 区間内で生成
– 区間終了後も利用
内部
6
4
3
入力
2
1
区間開始
– 区間内で生成
– 区間終了後は利用されない
区間終了
時間
5
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2. 生成関係の特定
• オブジェクト間の生成関係
– TRIGGER : オブジェクト生成を行ったオブジェクト
– BASE : オブジェクト生成に利用されたオブジェクト
class RegisterDialog {
..
.
newSchedule =
new Schedule (date, time, memo);
..
.
}
Register TRIGGER
Schedule
Dialog
BASE
Date
BASE
BASE
String
Time
class Schedule {
..
.
Schedule (Date date, Time time, String memo){ … }
..
.
}
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
3-1. オブジェクトの省略
内部オブジェクトのうち,いずれかの条件を満たすものを省略
• 入出力オブジェクトと無関係
– 生成関係をたどり,入出力オブジェクトに到達不可能
•
•
•
•
•
コンストラクタ内のみで利用
コールスタックの深い部分のみで利用
内部クラス
ユーザが指定したクラス
中間データ
– 自身の生成にBASEを持つ
– 他のオブジェクトの生成において,BASEにしかならない
– 最後に他のオブジェクトの生成に利用された後,利用されない
7
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3-2. オブジェクトの集約
• 同じ生成関係を持つオブジェクト集合を集約
– 対応するオブジェクトのクラス,分類が等しい
– 対応するオブジェクト間の関係が等しい
TRIGGER
B(1) : 内部
TRIGGER
B,Cの
TRIGGER
BASE
C(1) : 出力 オブジェクト集合
を集約
A : 入力 TRIGGER
A : 入力
B(2) : 内部
BASE
BASE
TRIGGER
B : 内部
2 objects
TRIGGER
C : 出力
2 objects
C(2) : 出力
8
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ケーススタディ
• 対象 : 予定管理プログラム
– 実行履歴のシナリオ
• 起動,日付の選択,予定の入力,予定の登録,終了
– 指定区間 : 日付の選択前から予定の登録後
– 省略クラス : 指定なし
9
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
入出力オブジェクトの一覧
入出力オブジェクトの情報を出力
I/O
I
I
O
O
O
ID
6
399
2358
2359
2360
Name
scheduler.domain.Scheduler
java.sql.Date
java.sql.Time
java.lang.String
scheduler.domain.Schedule
Value
2010-03-04
16:30:00
meeting
10
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
生成関係の出力例
java.sql
: 入力
Date(399)
: 出力
“2010-03-04”
36464 : TRIGGER
: 内部
36471 : BASE1
Thread : 17
Thread : 17
: STATIC
DateTimeUtils.java Line.38 RegisterDialog.java Line.112
java.sql
scheduler.domain
Time(2358)
36471 : BASE2
Schedule(2360)
“16:30:00”
Thread : 17
36479 : TRIGGER
RegisterDialog.java Line.112
Thread : 17
36471 : TRIGGER
scheduler.gui
Schedule.java Line.18
Thread : 17
RegisterDialog(2248)
RegisterDialog.java Line.112
TRIGGER
TRIGGER
Thread : 17
36471 : BASE3
Thread
:
17
RegisterDialog.java
Thread : 17
RegisterDialog.java
RegisterDialog.java Line.112
java.lang
scheduler.domain
java.lang
String
Content(2361)
String(2359)
1 object : “16”
36479
:
BASE1
“meeting”
1 object : “30”
javax.swing
Thread : 17
JComboBox
Schedule.java Line.18
2 objects
11
scheduler.util
DateTimeUtils(STATIC)
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
考察と今後の課題
要約結果の検証
• 要約によりサイズが十分に小さくなったか?
– 適用例におけるノード数(153→19)
• 任意の実行履歴,区間に適用可能か?
– 様々な実行履歴,区間に適用
• 重要な情報が省略されないか?
– 要約結果を開発者に見てもらう
• 指定区間の動作理解を支援可能か?
– ツールを用いて動作理解を行ってもらう
12
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめ
• 実行履歴上の指定区間におけるオブジェクト
の生成関係の要約を提示する手法を提案
– オブジェクト(入力,出力,内部)の分類
– 生成関係(TRIGGER,BASE)の特定
– 生成関係の要約
• 省略 : 内部オブジェクトのうち条件を満たすもの
• 集約 : 同じパターンのオブジェクト群
• Javaプログラムを対象としたツールを試作
– ケーススタディを実施
13
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University