類似した振舞いのオブジェクトの グループ化による...
DESCRIPTION
類似した振舞いのオブジェクトの グループ化による クラス動作シナリオの可視化. 大阪大学 大学院情報科学研究科 〇宗像 聡・石尾 隆・井上 克郎. 発表の概要. オブジェクト指向システムのクラスの動作理解は困難 1つのクラスからは多数のオブジェクトが生成される オブジェクトの動作はそれぞれ異なる 実行履歴からクラスの代表的な動作を可視化 呼び出し関係が類似したオブジェクトをグループ化 各グループの代表オブジェクトの動作のみを可視化する スケジュール管理プログラムの実行履歴に対して適用 1008 個の GUI オブジェクトから4つの動作例を抽出 - PowerPoint PPT PresentationTRANSCRIPT
Department of Computer Science, Graduate School of Information Science & Technology,Osaka University
類似した振舞いのオブジェクトのグループ化によるクラス動作シナリオの可視化
大阪大学 大学院情報科学研究科〇宗像 聡・石尾 隆・井上 克郎
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
2
発表の概要 オブジェクト指向システムのクラスの動作理解は困難
1つのクラスからは多数のオブジェクトが生成される オブジェクトの動作はそれぞれ異なる
実行履歴からクラスの代表的な動作を可視化 呼び出し関係が類似したオブジェクトをグループ化 各グループの代表オブジェクトの動作のみを可視化する
スケジュール管理プログラムの実行履歴に対して適用 1008 個の GUI オブジェクトから4つの動作例を抽出 730 個のデータ管理オブジェクトから3つの動作例を抽出 GUI とデータ管理オブジェクトの2つの相互作用例を抽出
表示するデータがある場合、ない場合
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
3
オブジェクト指向システムの動作理解
[1] Wild, N. and Huitt, R.: Maintenance Support Object-Oriented Programs. IEEE Transactions on Software Engineering, Vol.18, No.12, pp.1038-1044, 1992.
オブジェクト指向システム オブジェクトが相互にメッセージを交換して処理
を行う 実行される処理は、受信するオブジェクトにより
異なる オブジェクトは動的に生成される
実際の動作は、実行時に動的に決定☓ ソースコードの解析だけでは困難 [1]
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
4
実行履歴の可視化
[2] 谷口考治 , 石尾隆 , 神谷年洋 , 楠本真二 , 井上克郎 : プログラム実行履歴からの簡潔なシーケンス図の生成手法 , コンピュー タソフトウェア , Vol.24, No.3, pp.153-169, 2007.
実行履歴の可視化が有効 実行履歴 = システムの実行時情報の記録1. 実行履歴として、オブジェクト間のメソッド
呼び出し情報を取得2. UML のシーケンス図として可視化 [2]
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
5
クラスの動作理解 システムの保守作業では、クラスの動作理解が必要
対象クラスのインスタンスの典型的な動作例 他のクラスのオブジェクトとの典型的な相互作用例
オブジェクトの実行時の振舞いを確認することが有効 [3] オブジェクトに関係する、メソッド呼び出し系列を取得 オブジェクトごとのメソッド呼び出し系列を確認
[3] Reiss, S.P., and Renieris, M.: Encoding program executions. Proceedings of the 23rd International Conference on Software Engineering, pp.221-230, 2001.
クラス A
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
6
オブジェクトの振舞いの確認における問題
解析対象クラスのオブジェクトが多数ある場合☓ それぞれの振舞いを逐一確認することは困難
クラス A
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
7
提案手法のアプローチ 互いに振舞いの類似しているオブジェクトが多
数あると期待できる解析対象のクラスのオブジェクトを振舞いの類
似性に基づいてグループ化グループごとに振舞いを可視化確認する振舞いの数を削減できる
クラス A
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
8
振舞いの類似性の判定
オブジェクトと呼び出し関係にあるクラスに注目 呼び出し関係にあるオブジェクトが所属するクラス
クラスは特定の役割を持つ 例) FileOutputStream = ファイル出力 異なるクラスから使用される 参加した処理が異なる 異なるクラスを使用する 実行した処理が異なる
呼び出し関係にあるクラスとオブジェクトの振舞いには、強い対応関係がある 完全一致するとき、互いの振舞いは類似しているとみな
す
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
9
関連クラスに基づくグループ化
オブジェクトごとの動作コンテキスト Use,Used を比較Use(o)
オブジェクト o のメソッドを呼び出したクラスの集合Used(o)
オブジェクト o がメソッドを呼び出したクラスの集合
オブジェクトのグループ化ルールオブジェクト o1 、 o2 が同じグループに所属
Use(o1) = Use(o2) かつ Used(o1) = Used(o2)
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
10
クラスの代表的な動作例の可視化
1. 実行履歴から、オブジェクトごとのメソッド呼び出し系列を抽出
2. オブジェクトを動作コンテキストに基づいてグループ化3. 各グループから代表オブジェクトをランダムに選択4. 直接呼び出し関係のあるオブジェクト群との、メソッド
呼び出しを表現するシーケンス図を生成
クラス A
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
11
クラス間の相互作用例の抽出 あるクラスの動作と、他のクラスの動作が対応することがある
GUI オブジェクトへのクリック操作処理の ある/なし と、データ管理オブジェクトへのデータ登録処理の ある/なし
動作の対応する組み合わせごとに、相互作用例を抽出
1. 2つのクラスのグループ間で、メソッド呼び出し関係を抽出2. 呼び出し関係にあるグループの組を相互作用例として抽出
A1
B1
B2 ( , )
( , )A1
A1
B1
B2
A2 A3 B3 ( , )
B3A3
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
12
1. 呼び出し関係にあるグループの組から、呼び出し関係にあるオブジェクトの代表ペアをランダムに選択
2. ペアの振舞いを表現するシーケンス図を生成 ペアの一方と、直接呼び出し関係のあるオブジェクト
群との相互作用 ペアの一方からもう一方へ推移的に到達するメソッド
呼び出し系列
クラス間の相互作用例の可視化
( , )( , )
A1B1
B2
A1
A1
B1
B2
B1A1
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
13
ケーススタディ
適用対象 = ‘ Scheduler’ Java で実装された、予定管理用カレンダープログラム 予定を記入したい日付に対応するセルをクリックすると、
新たにダイアログが開き、予定を編集できる セルの役割を担う、クラス DateCell の動作理解を行う
実行履歴の取得 実行シナリオ
異なる日付に計 3 つの予定を追加 1975 個のオブジェクト、 7523 個のメソッド呼び出し
情報 java , javax , sun , com.sun パッケージに含まれるクラスの
イベントは除外
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
14
DateCell のグループ化
クラス DateCell カレンダーの各日付を表現するセル 実行履歴中には 1008 個のオブジェクトが出現
関連クラスに基づいて { s1, s2, s3, s4 } に分類#Ins Use(o) Used(o)
s1 882 MonthTableModel
s2 33 MonthTableModel, DateCellRenderer
s3 90 MonthTableModel, DateCellRenderer CalendarDate
s4 3MonthTableModel, DateCellRendererCalendarFrame
CalendarDate
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
15
DateCell のグループ s2 の振舞い
DateCellRenderer からの描画情報の要求に応答 日付の無いセルの振舞いに対応
DateCell
テキスト表現を返す
セルの色情報を返す繰り返しの回数
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
16
繰り返し構造の展開後
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
17
DateCell のグループ s3 の振舞い
更に、 CalendarDate に予定データを問い合わせ 予定が追加されていない、日付の有るセルの振舞いに対応
CalendarDate予定データを管
理テキスト表現を生成するため
に日付情報を問い合わせ
セルの色情報を生成するために
予定の有無を問い合わせ
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
18
DateCell のグループ s4 の振舞い
応答に加えて、マウス操作に関する処理 予定が追加された、日付の有るセルの振舞いに対応
CalendarFrameGUI のオーナー
ユーザのマウスクリック検出
CalendarDate を渡す
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
19
DateCell と CalendarDate の相互作用の抽出
クラス CalendarDate 実行履歴中には 730 個のオブジェクトが出現 関連クラスに基づいて { t1, t2, t3 } に分類
2 つの組み合わせで、相互作用するオブジェクトのペアが出現 組み合わせは最大で 4×3 = 12 通り考えられる
t1(637) t2(90) t3(3)
s1(882)
s2(33)
s3(90) 90 組( 1 対1 )
s4(3) 3 組( 1 対 1 )
※DateCell のグループ { s1, s2, s3 , s4 } 、 CalendarDate のグループ { t1, t2, t3 }
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
20
s4 と t3 の相互作用
マウスクリック操作検出後、 DateCell はCalendarFrame に CalendarDate を渡す
RegisterDialog は CalendarDate を受け取り、
日付情報を問い合わせ
RegisterDialog予定編集用ダイアロ
グ
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
21
s4 と t3 の相互作用
RegisterDialog が CalendarDateに
予定データの追加を依頼
テキスト表現の再生成のため日付情報を問い合わせ
セルの色情報の再生成のため予定の有無の問い合わせ
セルがマウスクリックされてから、対応する日付に
予定データが追加されるまでの相互作用に対応
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
22
考察:グループ化の妥当性 DateCell の関連クラスに基づくグループ化
グループ内の振舞いの違いは、繰り返しの回数だけ 他のケーススタディでは、明らかに互いに振舞い
の異なるオブジェクトがあった☓ 関連クラスでは認識できない振舞いの違いが存在
グループ化の妥当性を評価する方法が必要 適切な代表オブジェクトを選択する方法が必要
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
23
考察:相互作用するグループの組み合わせ 2つのクラスのグループ間で相互作用するオ
ブジェクトのペアは、限られた組み合わせで出現? オブジェクトは限られた振舞いのオブジェクトと
のみ、相互作用する傾向があるのかもしれない一般にこの傾向があるのか調査が必要
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
24
まとめ 実行履歴からクラスの代表的な動作を可視化する手法
1. オブジェクトを呼び出し関係にあるクラスの集合に基づいてグループ化
2. グループの代表オブジェクトの振舞いのみを可視化3. 2 つのクラスのグループ間の代表的な相互作用例のみを可視
化
1 つのクラスから生成された多数のオブジェクトから、代表的な動作例を抽出できた DateCell の 1008 のオブジェクトから、 4 つの動作例を抽出 CalendarDate の 730 のオブジェクトから、 3 つの動作例を
抽出 両クラスのオブジェクトから、 2 つの相互作用例を抽出
今後の計画 より大規模なシステムでの有用性の調査
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
25
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
26
付録:‘ Scheduler’ への適用結果
Package Class#Insクラス メソッ
ド
scheduler.gui DateCell 1008
4 4
scheduler.domain CalendarDate 730 3 3
scheduler.domain ScheduleList 100 1 3
scheduler.domain CalendarMonth 24 2 2
scheduler.gui CalendarFrame$2
24 2 2
scheduler.gui DateCellRenderer 24 2 2
scheduler.gui MonthTable 24 1 1
scheduler.gui MonthTableModel 24 2 2
scheduler.domain Content 3 1 1
scheduler.domain FixedSchedule 3 1 1
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
27
付録: DateCell のグループ内の振舞いメソッド呼び出し系列 #Ins
s1 a 882
s2abdbdbd 1
abdbd 32
s3abcdebcde 69
abcdebcdebcde 21
s4
abcdebcdebcdefbcdebcde 1
abcdebcdefbcdebcdebcde 1
abcdebcdefbcdebcde 1
宣言クラス メソッド
a DateCell <init>(CalendarDate)
b DateCell toString()
c CalendarDate getDay()
d DateCell getColor()
e CalendarDate hasSchedules()
f DateCell getCalendarDate()
※『文字』とメソッドの対応
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
28
付録:‘ JHotDraw’ への適用結果
Package Class#Insク メ
-.util ResourceBundleUtil 919 62 17
-.draw.action AbstractSelectedAction$1 734 32 2
-.draw.action
AbstractSelectedAction$EventHandler 734 36 5
-.util ReversedList 713 2 2
-.draw.action AttributeAction 541 2 2
-.draw FigureEvent 334 7 3
-.draw.action ColorIcon 279 3 3
-.draw.action PaletteMenuItemUI 166 1 1
-.geom BezierPath$Node 80 2 2
-.draw AttributeKey 36 13 15
※『 org.jhotdraw 』は『 - 』で省略
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
29
付録:呼び出し関係グラフ※ DateCell のグループ { s1, s2, s3, s4 } , CalendarDate のグループ { t1, t
2, t3 }
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
30
付録:関連メソッドに基づくグループ化 相互作用に利用されるメソッド群の違いを識別
オブジェクトごとに、動作コンテクスト Methods, Called を抽出 Methods(o)
オブジェクト o の呼び出されたメソッドの集合 Called(o)
オブジェクト o が呼び出したメソッドの集合
オブジェクト o1 、 o2 が同じグループに所属Methods(o1) = Methods(o2) かつ Called(o1) = Called(o2)
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
31
付録:グループ間の呼び出し関係の可視化 呼び出し関係グラフによる可視化
頂点は、グループと、他のクラスを表現 ある頂点に属するオブジェクトのどれか 1 つでも、 ある別の頂点に属するオブジェクトにメソッド呼び出しする場
合、 その頂点間に有向辺を作成
例 ) クラス B のグループ s1 = { B10, B11 }, s2 = { B12, B13 } B のオブジェクトは、クラス A のオブジェクトからメソッド呼び出
しされる オブジェクト B12 は、クラス C のオブジェクトにメソッド呼び出し
する
As1 s2C
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
32
付録: ScheduleList のグループ化
クラス ScheduleList 予定データを保持するリスト 実行履歴中には 100 個のオブジェクトが出現 関連クラスに基づくと、 1 つのグループに分類された
関連メソッドに基づいて { u1, u2, u3 } に分類 u1,u2 と u3 では、明らかに振舞いが異なっていた#Ins Methods(o) Called(o)
u1 90 <init>(), iterator(), hasValids()
u2 3 <init>(), iterator(), hasValids() add(Scheduler)
u3 7 <init>(), iterator(), hasValids() clear()
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
33
付録: CalendarDate と ScheduleList の相互作用の抽出
相互作用のあるオブジェクトのペアの関係性が異なる同じクラスの組み合わせであっても、相互作用の関係性が
異なる場合がある グループ u1,u2 は、日付ごとの予定データのリストに対応 グループ u3 は、曜日ごとの予定データのリストに対応
u1(90) u2(3) u3(7)
t1(637)
t2(90) 90 組( 1 対1 )
90 組(多対1 )
t3(3) 3 組( 1 対 1 ) 3 組(多対 1 )
※CalendarDate のグループ { t1, t2, t3 } 、 ScheduleList のグループ { u1, u2, u3 }
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
34
付録:提案手法の手順( 1/2 )
1. 実行履歴から、オブジェクトごとのメソッド呼び出し系列を抽出
2. オブジェクトの動作コンテキストに基づくグループ化
3. グループごとに代表的な振舞いを可視化 各グループから代表オブジェクトを1つ選択 代表オブジェクトの振舞いを、シーケンス図
として可視化
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
35
付録:提案手法の概要 (2/2)
特定クラスとの相互作用に注目? どうような相互作用を行うのか? どのような振舞いのオブジェクトと相互作用するのか
4. クラス間の相互作用の抽出 他のクラスのオブジェクトをグループ化 グループ間で相互作用するオブジェクトのペア集合を
抽出
5. クラス間の相互作用の可視化 ペア集合から代表ペアを選択 代表ペアの振舞いを、シーケンス図として可視化