スライド 1

Object Group ANalizer
Graduate School of Information Science and Technology, Osaka University
• OGAN visualizes representative
interactions between a pair of classes
– 1st Classifying objects into groups so that
objects in the same group have similar
behaviors each other
• It applies to the objects of each class
– 2nd Visualizing interactions of each pair of
groups as a sequence diagram
• When the combination of groups is different, it is
expected that the interaction is also different
Representative interactions
1
Classifying Objects Into Groups
• Based on dynamic interaction contexts
– Iff : Use(o1)=Use(o2) ∧ Used(o1)=Used(o2)
– Use(obj) = Classes CALLING a method of obj
– Used(obj) = Classes CALLED by obj
It’s expected that the behaviors of o1 and o2
Class A
Class X
Method Call
Group
o2
o1
Class Y
o3
Class B
2
Visualizing interactions
• Selecting each pair of objects from each
combination of 2 groups
– In each pair, one calls the another one
• For each pair
– 1st Extracting events directly related to one of the pair
– 2nd Visualizing those events as a sequence diagram
Class A
Class B
3
1枚目
(実行履歴には大抵,人間が理解するには困難なほど大量の相互作用が含まれてい
るため,適切に量を減らし動作理解を支援する手法が必要です.)
OGANは,Javaプログラムから取得した実行履歴を解析し,開発者が注目する2つの
クラスの間の相互作用の内,特に代表的なもののみを抽出し可視化します.
この可視化は2ステップで行われます.
まず,それぞれのクラスのオブジェクト群を,振舞いの類似するものが同じグループに
なるように分類します.
(この時,それぞれのグループはそのクラスの代表的な振舞いに対応しているといえ
ます.)
次に,2つのクラスの各グループ群から,それぞれ1つずつグループを選ぶことで組を
作り,各組ごとにその間の相互作用を抽出し1枚のシーケンス図として可視化します.
この可視化は全ての組み合わせについて行われ,例えば,クラスA・Bがそれぞれ2つ
グループをもつ場合,2×2=4通りの組み合わせが考えられるため,最大で4枚のシー
ケンス図が生成されます.
グループの組み合わせが異なるとき,その間の相互作用も異なることが期待でき,抽
出した相互作用はそれぞれ2つのクラスの間の代表的な相互作用であるといえます.
以上が,OGANがとっている戦術です.
4
2枚目
1つのクラスのオブジェクト群を,振舞いの違いごとに分類するために,OGANは各オ
ブジェクトの動作コンテキスト(実行中にどのような要素を用いて,どのような相互作用
を行ったのか)を比較に用います.
具体的には,’メソッド呼び出ししたクラスの集合’ と ‘メソッド呼び出しをされた(受け
た)クラスの集合’ が完全に一致するオブジェクトを,同じグループに分類します.
(FileInputStreamクラスはファイル入力担当するなど)クラスにはそれぞれ異なる役割
があるため,関係するクラス群が等しいとき,その振舞いもまた類似することが期待で
きます.
(ただし,そうならない場合も観測されており,他の分類基準も幾つか提案しています.
これらの基準を組み合わせることで,より妥当な分類ができると考えています.)
5
3枚目
このグループ化を用いて,2つのクラスの間の代表的な相互作用の可視化を,次の手
順で行います.
まず,それぞれにグループ化を行い,両クラスのグループの全ての組み合わせについ
て,相互作用するオブジェクトのペアを1つずつ抽出します.
(相互作用するオブジェクトのペアとは,それぞれ異なるクラスのグループに所属して
いて,かつ一方がもう一方を呼び出しているものを指します.)
(同じ組み合わせで抽出されるペアは,互いに相互作用が類似することが期待できる
ため,複数抽出し確認することは効率が悪いと考えられます.)
(ペアは両クラスがそれぞれ2つグループをもつとき最大で2×2=4つ抽出されるが,実
際には高々少数のグループの組み合わせでのみ相互作用が存在する傾向があるた
め,抽出数はより少ない可能性が高いです.)
次に,この(グループの組み合わせごとの)ペア1つ1つについて,ペアのどちらかのオ
ブジェクトと直接関係のあるイベント(メソッド呼び出しや復帰イベントなど)を実行履歴
から取り出し,これをシーケンス図として可視化します.
各シーケンス図は,両クラス間の代表的な相互作用に対応しており,これらを比較しな
がら確認することで,より効果的に動作理解をすることができると考えています.
以上が,OGANが提供している可視化機能の概要です.
6