スライド 0

プログラム動作理解支援を目的とした
オブジェクトの振舞いの同値分割手法
大阪大学 大学院情報科学研究科
コンピュータサイエンス専攻 井上研究室
博士前期課程2年
宗像 聡(Munakata Satoshi)
Department of Computer Science,
Graduate School of Information Science & Technology,
Osaka University
平成22年2月15日
修士論文発表会
0
概要

オブジェクト指向プログラムの動作理解を支援

クラスの動作理解を支援



オブジェクトが多数生成されるクラスの動作理解は困難


各オブジェクトの振舞いを逐一確認するのは労力が大きい
振舞いの類似性に基づきオブジェクト群を分割する手法を提案



クラスの使われ方,クラスのオブジェクトの振舞い
プログラム実行時のオブジェクトの振舞いを可視化する手法が有効
グループごとに振舞いを図として可視化
注目クラスの特徴的な振舞いのみを確認できる
オープンソースソフトウェアに適用して,有効性を検証
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
1
クラスの動作理解
プログラムの保守にはクラスの動作理解が不可欠[1,2]
 実行時のオブジェクトの振舞いの可視化が有効

1.
2.
3.
プログラム実行時に,動作情報を実行履歴として収集
注目クラスのオブジェクトごとに,関係する動作情報を抽出
呼び出し関係図・UMLシーケンス図,DOPG図として可視化
[3,4,5]
プログラム
実行履歴
クラス A
呼び出し関係図 シーケンス図
o1
o2
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
2
振舞いの確認における問題

注目クラスのオブジェクトが多数生成される場合
 オブジェクトの振舞いはそれぞれ異なる[6]
☓ 各オブジェクトの振舞いを逐一確認することは困難
クラス A
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
3
提案手法

目的


オブジェクトを多数生成するクラスの動作理解支援
手順
1.
2.

分割) 振舞いが類似するオブジェクト群をグループ化
可視化) グループごとに振舞いを図として可視化
注目クラスのオブジェクトの特徴的な振舞いのみを提示
クラス A
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
4
Step1:オブジェクト群の同値分割

オブジェクト集合O={o1,…,on}上の同値関係を定義



観点の異なる4つの同値関係を定義




E(os,ok) os,ok∈O
オブジェクトの振舞いの同値性に基づく同値関係
Euse(os,ok)
・・・ os,okの参加した機能が同じ
Emethods(os,ok) ・・・ os,okの使われ方が同じ
Eused(os,ok),Ecalled(os,ok) ・・・ 本発表では説明を省略
同値関係を1つ選び,オブジェクト群を同値分割
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
5
Euse(os,ok)

メソッド呼び出し元のクラスが完全一致
 o1,o2 ・・・ { クラスX }, o3 ・・・ { クラスY }


クラスはそれぞれ異なる役割を持つ
複数の役割のクラスが協調動作して,システムの機能が実現[7]
 参加した機能の違いからくる,振舞いの差を識別
クラス A
o1.print()
o1
o2.input()
o2
o3.input()
修士論文発表会
o3
クラス X
クラス Y
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
6
Emethods(os,ok)

動作したメソッドが完全一致
 o1 ・・・ { print() }, o2,o3 ・・・ { input() }

動作したメソッドからは,クラスの使われ方が分析できる[8]
 使われ方の違いからくる,振舞いの差を識別
クラス A
o1.print()
o1
o2.input()
o2
o3.input()
修士論文発表会
o3
クラス X
クラス Y
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
7
Step2:振舞いの可視化
各同値類からオブジェクトを1つランダムに選択
1.

同値関係から,ある観点では振舞いの性質が同じことがわかっている
可視化方法を1つ選び,各オブジェクトの振舞いを可視化
2.



呼び出し関係図
UMLシーケンス図
DOPG図
クラス A
Euse
Euse
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
8
再帰的な分割

異なる同値関係を用いて,再帰的に分割
 複数の観点から,より詳細に振舞いの差を確認で
きる
クラス A
Euse
Euse
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
9
実装

提案手法をツールとして実装
 Amida-Agent
 Javaプログラムから動作情報を取得するトレーサ
 Amida-OGAN
 GUIベースの対話的ツール
 対話的に,解析対象クラス,同値分割基準,可視化方法
を選択
 呼び出し関係図・UMLシーケンス図・DOPG図
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
10
適用実験

目的


方法


クラス動作理解に対する有効性を検証
オープンソースソフトウェアから取得した実行履歴に,提
案手法を適用
1. ケーススタディとして,特定クラスの動作理解を実施
2. 各クラスの分割結果の調査
本発表では,ソフトウェア”Scheduler”に対して行っ
たケーススタディのみを説明
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
11
Scheduler

Javaで実装された,予定管理用カレンダープログラム
 予定を記入したい日付に対応するセルをクリック
 登録ダイアログが開き,予定を編集できる

実行シナリオ
 異なる日付に計3つの予定を追加

実行開始から終了までに1974個のオブジェクトが出現
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
12
クラスCalendarDateの分析

クラスCalendarDate




日付ごとの予定データを管理する
実行履歴中には731個のオブジェクトが出現
731個のオブジェクトの振舞いを確認することは困難
Euseによる分割を適用

呼び出し元のクラスに基づく同値分割


参加した機能の違いを識別することが目的
3個の同値類{ s1, s2, s3 }に分割
 s1は,オブジェクト数 641
 s2は,オブジェクト数 87
 s3は,オブジェクト数 3
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
13
{s1,s2,s3}の呼び出し関係図
s1
s2
s3
共通する呼び出し関係
同じ処理を行っていると予測できる
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
14
s3の呼び出し関係図
s3
登録ダイアグラムと予定データ
をCalendarDateが仲介
予定データ追加に関係したと予測
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
15
s3のUMLシーケンス図の一部
1.登録ダイアログ上でユーザからのマウス操作
2.登録ダイアログから予定の追加要求を受ける
3.予定データベースに予定を追加
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
16
分析結果(1/2)

後に詳細なプログラム理解を実施

クラスCalendarDateが関わった処理
 初期化処理
 描画処理
 予定追加処理

・・・ s1,s2,s3
・・・ s2, s3
・・・ s3
{s1,s2,s3}は,それぞれ参加した機能が異なる
同値関係
Euse による分割の目的と一致する
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
17
分析結果(2/2)

呼び出し関係図が何パターンあるか調査
 ラベル付き有向グラフとみて同型判定
 呼び出し関係図は3パターン
 可視化した3図で網羅している
可視化した以外の図から,新たに得られる知識は
少ない
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
18
考察(1/2)

呼び出し関係図では,すべてのパターンを提示
 特徴的な振舞いのみを提示できたと言える
 可視化するオブジェクトにより獲得できる知識に違いがある

DOPG図では,提示できなかった3パターンがある
 実行スレッドの違いなど
 描画処理・予定追加処理に関係する呼び出し系列
 オブジェクトの振舞いとして,どの程度の動作の違いを識別
する必要があるか,調査が必要

同値類ごとの振舞いの比較することで,共通の振舞い
と,限定的な振舞いとを区別して確認できた
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
19
考察(2/2)

多くのクラスでは,各分割基準で, 10個以下の同値
類に分割される

一部のクラスでは Euseで多数の同値類に分割される
 MASUのクラスStateChangeEvent

8344個のオブジェクトは,45個の同値類に分割
 多数のクラスから横断的に使用されるクラス
 Emethodsによる分割では,10個前後の同値類
 EmethodsからEuseの,再帰的な分割が有効
 効果的な分割順序が提示できるか,調査が必要
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
20
まとめ

オブジェクト指向プログラムのクラスの動作理
解支援

オブジェクトの振舞いを可視化する手法が有効


オブジェクトが多数生成されるクラスには適用困難
特徴的な振舞いのみを可視化
振舞いの同値性に基づいて,オブジェクト群を同値分割
2. 同値類ごとに振舞いを可視化
1.
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
21
その他の適用結果

一部のクラスでは, Euseで多数の同値類に分
割される
 MASUのクラスStateChangeEvent
 8344個のオブジェクト,45個の同値類
 JHotDrawのクラスResourceBundleUtil
 959個のオブジェクト,58個の同値類
イベント通知,データ保持,ユーティリティの役
割のクラスでは,多数のクラスから横断的に使
用されるため
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
22
DOPG(Dynamic Object Process Graph)

1つのオブジェクトについて注目した制御依存グラフ
DOPG図
ClassB # newClassA()
Javaプログラム
1 class ClassB {
void newClassA() {
2
ClassA a = new ClassA ();
3
for(int i=0; i<a.max(); i++)
4
passClassA( a );
5
}
6
7
void passClassA( ClassA a ) {
8
a.call();
9
System.out.println();
10
}
11
12 }
Create
o1
ClassA # max()
ClassB # passClassA( ClassA )
ClassB # passClassA( ClassA )
ClassA # call()
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
23
実装

提案手法をツールとして実装

Amida-Agent


Javaプログラムから実行履歴を取得するトレーサー
Amida-OGAN

GUIベースの対話的ツール
 ユーザは対話的に,解析したいクラス,分割基準,可視化方法を選べる
 UMLシーケンス図の可視化には,Amida[9]を使用
注目クラス
分割基準
+
Amida-Agent
Amida-OGAN
可視化方法
実行履歴
Javaプログラム
クラス A
Amida
シーケンス図
呼び出し関係図
修士論文発表会
ユーザー
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
24
その他の適用結果からの考察

SchedulerのクラスScheduleList
 予定データを保持するクラス
 Euseでは,1グループに分割
 Emethodsでは,3グループに分割
 日付ごとの予定データ,曜日ごとの予定データ
 データの使われ方の違いが識別されている
 識別したい振舞いの違いに応じて,分割基準を選
ぶ必要がある
修士論文発表会
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
25
分割数の調査
平均グループ数
生成されたオブジェクト数でクラスをカテゴリ分け
30.0
25.0
20.0
2≦N
1000≦N≦9999
100≦N≦999
10≦N≦99
2≦N≦9_
15.0
10.0
5.0
0.0
Use
Used
分類規則
Methods
Called
Use Used
Use,Usedは,
修士論文発表会
UseとUsedが完全に一致
Methods
Called
Use Used
Methods
Called
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
26
Methods
グループ数
12
10
8
6
データ保持用のクラスで
呼び出したメソッドに基づくグループ数が多い
4
2
0
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79
修士論文発表会
クラス平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
27
Methods
グループ数
12
10
8
6
4
2
0
1
10
100
修士論文発表会
1000
10000
オブジェクト数
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
28
Use
グループ数
50
45
40
35
30
イベント通知用クラスで
呼び出し元クラスに基づくグループ数が多い
25
20
15
10
5
0
1
3
5
7
9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63
修士論文発表会
クラス平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
29
Use
グループ数
50
45
40
35
30
25
20
15
10
5
0
1
10
100
修士論文発表会
1000
10000
オブジェクト数
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
30
DOPG
グループ数
[Dopg]
140
120
100
80
[Dopg]
60
40
20
0
1
11 21 31 41 51 61 71 81 91 101 111 121 131 141 151 161 171 181 191 201 211 221 231 241 251 261 271 281 291 301
修士論文発表会
クラス平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
31
DOPG
グループ数
140
120
100
80
60
40
20
0
1
10
100
修士論文発表会
1000
10000
オブジェクト数
平成22年2月15日
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
32