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
© Copyright 2024 ExpyDoc