31
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University 平平 22 平 3 平 18 平 平 167 平平平平平平平平平平平平平平 1 平平平平平平平平平平平平平平平 平平平平平平平平平平平平平平平平平平 平平平平 平平平平平平平平平平 平平平平平平平平平平平平平 平平平平平 平平平平平平 2 平 平平 平 (Munakata Satoshi)

クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Embed Size (px)

DESCRIPTION

クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価. 大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻 井上研究室 博士前期課程 2 年 宗像 聡 (Munakata Satoshi). 概要. オブジェクト指向プログラムの動作理解を支援 クラスの動作理解を支援 オブジェクトの振舞いを可視化する手法が有効 オブジェクトが多数生成されるクラスの動作理解は困難 各オブジェクトの振舞いを逐一確認するのは労力が大きい 振舞いの類似性に基づきオブジェクト群を分割する手法を提案 グループごとに振舞いを図として可視化 - PowerPoint PPT Presentation

Citation preview

Page 1: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology,Osaka University

平成 22 年 3 月 18 日 第 167 回ソフトウェア工学研究発表会 1

クラス動作シナリオ可視化手法のプログラム理解作業に対する有効性評

大阪大学 大学院情報科学研究科コンピュータサイエンス専攻 井上研究室

博士前期課程 2 年

宗像 聡 (Munakata Satoshi)

Page 2: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

2

概要

オブジェクト指向プログラムの動作理解を支援

クラスの動作理解を支援 オブジェクトの振舞いを可視化する手法が有効

オブジェクトが多数生成されるクラスの動作理解は困難 各オブジェクトの振舞いを逐一確認するのは労力が大きい

振舞いの類似性に基づきオブジェクト群を分割する手法を提案 グループごとに振舞いを図として可視化 注目クラスの代表的な振舞いのみを確認できる

6 つのオープンソースソフトウェアに適用して,有効性を検証

Page 3: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

3

クラスの動作理解

プログラムの保守にはクラスの動作理解が不可欠 [1,2] クラスの使われ方,クラスのオブジェクトの振舞い

実行時のオブジェクトの振舞いの可視化が有効1. プログラム実行時に,動作情報を実行履歴として収集2. 注目クラスのオブジェクトごとに,関係する動作情報を抽出3. 呼び出し関係図・ UML シーケンス図, DOPG 図として可視化

[3,4,5]

o1

クラス A

o2

呼び出し関係図 シーケンス図プログラム 実行履歴

Page 4: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

4

振舞いの確認における問題

注目クラスのオブジェクトが多数生成される場合 オブジェクトの振舞いはそれぞれ異なる [6]

☓ 各オブジェクトの振舞いを逐一確認することは困難

クラス A

Page 5: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

5

以前に提案した手法 [7]

目的 オブジェクトを多数生成するクラスの動作理解支援

代表的な振舞いの可視化1. 振舞いが類似するオブジェクト群を分割2. グループごとに振舞いをシーケンス図として可視化 注目クラスのオブジェクトの代表的な振舞いのみを提示

クラス A

Page 6: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

提案手法

以前に提案した手法の問題点 分割基準が固定で,多様な調査目的を反映できない UML シーケンス図だけでは,提示された複数の振舞い

の違いを比較,確認することが困難

対話的な動作理解支援手法として再定義 Step1 : 4 つの分割基準から 1 つを選びオブジェクト群

を分割 Step2 : 3 つの可視化方法から 1 つを選び,各グループ

の振舞いの違いを強調して可視化 Step3 :注目するグループについて,異なる分割基準で

含まれるオブジェクト群を,さらに分割

Page 7: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

7

Step1 :オブジェクト群の分割

オブジェクト集合 O={o1,…,on} 上の同値関係を定義 オブジェクトの振舞いの同値性に基づく同値関係 観点の異なる 4 つの同値関係 同値関係を 1 つ選び,オブジェクト群を同値分割

同値関係 Euse(os,ok) ・・・ os,ok の参加した機能が同じ

Emethods(os,ok) ・・・ os,ok の使われ方が同じ

Eused(os,ok) , Ecalled(os,ok)  ・・・ 本発表では説明を省略

Page 8: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

8

Euse(os,ok)

メソッド呼び出し元のクラスが完全一致 o1,o2 ・・・ { クラスX } , o3 ・・・ { クラス Y }

クラスはそれぞれ異なる役割を持つ 複数の役割のクラスが協調動作して,システムの機能が実現 [7]

参加した機能の違いからくる,振舞いの差を識別

クラス Y

クラス X

クラス Ao1

o2

o3

o1.print()

o2.input()

o3.input()

Page 9: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

9

Emethods(os,ok)

動作したメソッドが完全一致 o1 ・・・ { print() } , o2,o3 ・・・ { input() }

動作したメソッドからは,クラスの使われ方が分析できる [8] 使われ方の違いからくる,振舞いの差を識別

クラス Y

クラス X

クラス Ao1

o2

o3

o1.print()

o2.input()

o3.input()

Page 10: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

10

Step2 :振舞いの可視化

1. 各同値類からオブジェクトを 1 つランダムに選択 同値関係から,ある観点では振舞いの性質が同じことがわかっ

ている

2. 可視化方法を選び,各オブジェクトの振舞いを可視化 呼び出し関係図, UML シーケンス図, DOPG 図 抽象度,識別できる振舞いの差が異なる

クラス A

Euse Euse

Page 11: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

11

Step3 :再帰的な分割

異なる同値関係を用いて,再帰的に分割複数の観点から,より詳細に振舞いの差を確認

できる

クラス A

Euse Euse

Page 12: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

12

実装

Amida-OGAN GUI ベースの対話的ツール 対話的に,分析クラス・同値類,分割基準,可視化方法を選択 呼び出し関係図・ UML シーケンス図・ DOPG 図

分析クラス・同値類

分割基準

可視化方法

Page 13: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

13

適用実験

目的 クラス動作理解に対する有効性を検証

調査質問1. 可視化するオブジェクトの選び方により,獲得する知識が変わる

か?2. オブジェクト群の同値分割により,代表的な振舞いを提示できる

か?3. 各クラスは同値分割により,幾つの同値類に分割されるか?

方法 6 つのオープンソースソフトウェアから取得した実行履

歴に,提案手法を適用1. ケーススタディとして,特定クラスの動作理解を実施2. 各クラスの分割結果の調査

Page 14: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

14

分析対象

ソフトウェア

イベント数

クラス数 オブジェクト数

Scheduler 8578 (12) 17 1,973

JHotDraw 128,796 (97) 185 6,286

Apache PMD 633,309 (67) 105 8,431

MASU 3,198,125 (80) 309 12,414

Apache FOP 3,657,813 (120) 502 27,342

Antlr 7,305,687 (42) 60 21,022

オブジェクトが複数存在するクラスの割合約 24~ 71% ,平均で約 36%

Page 15: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

15

Scheduler

Java で実装された,予定管理用カレンダープログラム予定を記入したい日付に対応するセルをクリック登録ダイアログが開き,予定を編集できる

実行シナリオ 異なる日付に計 3 つの予定を追加

実行開始から終了までに 1973個のオブジェクトが出現

Page 16: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

16

クラス CalendarDate の分析

クラス CalendarDate 日付ごとの予定データを管理する 実行履歴中には 731個のオブジェクトが出現 731個のオブジェクトの振舞いを確認することは困難

Euse による分割を適用 呼び出し元のクラスに基づく同値分割

参加した機能の違いを識別することが目的 3個の同値類 { s1, s2, s3 } に分割

s1 は,オブジェクト数 641 s2 は,オブジェクト数 87 s3 は,オブジェクト数 3

Page 17: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

17

{s1,s2,s3} の呼び出し関係図

s3

s1 s2

共通する呼び出し関係同じ処理を行っていると予測できる

注目オブジェクトと,他のクラスのオブジェクトとのメソッド呼び出し関係を有効グラフとして可視化

・同じクラスは同じ色で表現・少数の同値類としか関係しないクラスほど,大きいノードで表現

Page 18: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

18

s3 の呼び出し関係図

s3

登録ダイアグラムと予定データを CalendarDate が仲介

予定データ追加に関係したと予測

Page 19: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

19

s3 の UML シーケンス図の一部

1.登録ダイアログ上でユーザからのマウス操作

2.登録ダイアログから予定の追加要求を受ける

3.予定データベースに予定を追加

Page 20: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

{s1,s2,s3} の DOPG 図

s3

s1 s2

1.クラスの動作の全体像の把握

2.段階的にクラスの動作を調査

Page 21: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

21

分析結果 (1/2)

同値関係 Euse による分割参加した機能の違いを反映していたs1 ・・・ 初期化  s2 ・・・ 初期化 & 描画s3 ・・・ 初期化 & セル描画 & 予定追加

オブジェクトの選び方により,獲得できる知識が変わる

Page 22: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

22

分析結果 (2/2)

全オブジェクトの呼び出し関係図は, 3パターン 可視化した 3 図で網羅されていた 提示した以外の振舞いを図として可視化することで,新たに得られる知識は少ない

DOPG 図では, 6パターン 提示していない 3パターンがある

動作したスレッド,推移的な呼び出しの違いなど新たに同値関係を定義して,この様な振舞いの差を識

別し分割することは可能 注目クラスのオブジェクトの振舞いとして,どの程度

の差を識別する必要があるか,今後調査が必要

Page 23: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

23

Euse に基づく分割結果

0

10

20

30

40

50

60

70

1 10 100 1000 10000

同値類数

オブジェクト数

同値類が 9 個以下である( 1画面で図を並べて確認できる)クラスの割合

全クラス → 約 97%オブジェクト数が 50 以上 → 約 82%

Page 24: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

24

多数の同値類に分割されるクラス

イベント通知,データ保持,ユーティリティの役割のクラス

MASU のクラス StateChangeEvent 8344個のオブジェクト, 45個の同値類

JHotDraw のクラス ResourceBundleUtil 959個のオブジェクト, 58個の同値類

多数のクラスから横断的に使用されるため

Page 25: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

25

再帰的な分割

分割基準によって分割数は大きく変わることがある例)  MASU のクラス StateChangeEvent

Euse では, 45個の同値類に分割Emethods では, 3個の同値類に分割

分割数の少ない分割基準から適用することで,興味あるオブジェクト群を絞ることが可能

Euse か Emethods のどちらかが分割数 9 以下であるクラス全体で約 99%オブジェクト数が 50 以上のクラスで約 93%

Page 26: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

26

調査結果

1. ケーススタディから,可視化するオブジェクトの選び方により,獲得できる知識が変わる場合が実際にあることを確認した.

2. ケーススタディでは,クラスに代表的な振舞いを提示できた. Scheduler では,異なる機能に対応する 3 つの振舞いを,網羅的に提示できた

3. オブジェクトが 50 個以上あるクラスの内,約 84~ 95% と大多数のクラスで,各分割数は 9 以下だった 各振舞い図を, 1 画面で比較,確認できる数

Page 27: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

27

まとめ

クラスの動作理解を支援する手法 注目クラスの代表的な振舞いのみを可視化

1. 振舞いの同値性に基づいて,オブジェクト群を同値分割

2. 同値類ごとに振舞いを可視化 動作理解作業に対する有効性評価

6 つのオープンソースソフトウェアから取得した実行履歴に,提案手法を適用

今後の課題 実際のメンテナンス作業に対する有効性評価

被験者を用いた対照実験,主観的評価など

Page 28: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

28

Page 29: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

29

DOPG(Dynamic Object Process Graph)

1 つのオブジェクトについて注目した制御依存グラフ

class ClassB { void newClassA() { ClassA a = new ClassA (); for(int i=0; i<a.max(); i++) passClassA( a ); }

void passClassA( ClassA a ) { a.call(); System.out.println(); }}

Java プログラム

123456789101112

ClassB # newClassA()

ClassB # passClassA( ClassA )

ClassA # max()

ClassB # passClassA( ClassA )

ClassA # call()

Create

DOPG 図

o1

Page 30: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

30

Methods に基づく分割結果

010203040506070

1 10 100 1000 10000

同値類数

オブジェクト数

同値類が 9 個以下であるクラスの割合

全クラス → 約 99%オブジェクト数が 50 以上 → 約 87%

Page 31: クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

第 167 回ソフトウェア工学研究発表会 平成 22 年 3 月 18 日

31

Use と Methods の分割結果の相関

1

10

100

1 10 100

#Euse

#Emethods