オブジェクト生成の観測に基づく プログラム実行の要約の抽出 大阪大学大学院情報科学研究科 ○中野 佑紀,渡邊 結 石尾 隆,井上 克郎 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
© Copyright 2024 ExpyDoc