Document

動的情報を利用したソフトウェア
部品評価手法
藤井 将人
井上研究室
2003年2月18日
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
1
研究の背景
ソフトウェア開発効率を向上するための手法として,再利
用が注目されている
再利用
既存のソフトウェア部品を同一システム内や他のシステム内で用いること
ソフトウェア部品
ソフトウェア開発者が再利用を行う単位
部品例:ソースコード,ドキュメント,・・・
再利用を用いることで,生産性と品質を改善し,結果としてコス
ト削減にもつながる
再利用を用いて開発を行うには・・・・
部品選択のための基準(評価値)が必要
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
ソフトウェア部品評価手法
再利用を用いた開発モデル
開発者は重要であると判断した部品を再利用
被利用数が多い部品ほど重要である
利用実績から部品の評価値を評価:
Component Rank法(CR法)*
被利用数の多い部品は重要
重要な部品から利用されている部品は重要
部品間の利用関係をもとに,部品の評価値を計算
よく利用される汎用性の高い部品の検索に有効
* Inoue et al: “Component Rank: Relative Significance Rank for Software Component Search ”,
ICSE2003 (to appear).
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
再利用の問題点
再利用における問題点
どの部品を利用するか?
汎用性の高い部品は?
どのように部品を利用するか?
「いつ」「どのように」に利用する?
CR法によるソフトウェア部品評価手法
静的な利用関係解析より部品評価値を計算
「どのように部品を利用するか?」という情報を完全に
取得することができない
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
提案手法
動的情報を利用したソフトウェア部品評価手法
ソフトウェアを実行し,動的な利用関係を取得
どのように部品を利用するか?
CR法を用いて,部品の評価値を求める
どの部品を利用するか?
特定の“機能”を実装するために,重要となる部品の
検出
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
部品間の利用関係
ソフトウェア部品間には利用関係が存在
利用関係例
ソースコード:メソッド呼び出し,継承
ドキュメント:リンク,参考文献
部品グラフ(Component Graph)
c4
頂点:ソフトウェア部品
有向辺:利用関係
利用関係の種類
静的な利用関係
動的な利用関係
c5
c1
c2
c3
部品グラフ例
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
動的利用関係
動的利用関係
ソフトウェア実行時に,実際に呼び出し関係が発生した部品間の
関係
動的利用関係解析
動的利用関係を抽出する解析手法
ソフトウェアを実行し,その実行履歴から利用関係を取得
C4
:
C5
:
C2
:
C3
C2
C4
C1
C6
:
:
C3
C5
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
7
動的利用関係
動的利用関係
ソフトウェア実行時に,実際に呼び出し関係が発生した部品間の
関係
動的利用関係解析
動的利用関係を抽出する解析手法
ソフトウェアを実行し,その実行履歴から利用関係を取得
特徴
実行方法により利用関係が変化
開発者が再利用したい機能に注目できる
呼び出しの順序が取得できる
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
動的部品グラフの生成
動的利用関係
実行されるまで,どの部品が利用されるか特定できない
実行中,部品が呼び出されて初めて利用関係が生じる
利用される部品は利用する部品に依存する
動的部品グラフ
有向辺の向き:利用される部品→利用する部品
C2
:
C3
C1
C4
:
C5
:
C2
C4
C6
:
:
C3
C5
c1
c4
c5
動的部品グラフ
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
9
Component Rank法の利用
利用実績を基に部品の評価値を求める
部品評価値計算方法
部品グラフの利用
計算手順
1. 各頂点に適当な重みを与える
頂点の重みの総和は1
C1
C2
v0.1665
0.167
0.200
1×50%
0.334
0.333
0.500
0.400
0.1665
0.333
0.167
0.200
v0.1665
0.167
0.200
1×50%
v30.400
×100%
0.333
0.500
2. 各有向辺の重みを求める
頂点の重みを,その頂点から出ていく辺で分配する
辺ごとに与えられた配分率を用いて計算
v20.200
×100%
0.333
0.167
C3
0.3335
0.333
0.500
0.400
3. 各頂点の重みを再計算
頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する
4. 頂点の重みが収束するまで,2.,3.を繰り返し計算する
5. 収束した頂点の重みを,その頂点に対応する部品の評価値として出力
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
システムの実装
ソフトウェア部品評価システム
対象ソフトウェア:Javaプログラム
部品
– クラス(ソースコード)
部品間の利用関係
– クラスの継承,インターフェースおよび抽象クラスの実装,メソッド呼び出し,フィールド参照
システムの構成
利用関係解析部
ソフトウェア実行の際に,実行履歴を保存し,利用関係を出力
部品グラフ生成部
利用関係より部品グラフを生成
部品評価値計算部
CR法に基づいて,部品の評価値を計算
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
システムの構成
CA ・・・
08CA
・・・・・・
00 08
・・・・・・
Component Rank
class files
Class Rank
A
B
・・
00 ・・・
利用関係解析部
Profiler
(JVMDI)
JavaVM
・・
・・
・・
Component Graph
-
A
B
・・
A
-
1
・・
B
0
-
・・
:
:
:
-
Ranker
A B
・・・A B
・・・・・・
execute
result
・・・
prof files
部品評価値計算部
Dynamic Relation
Analyzer
部品グラフ生成部
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
12
評価実験
実験対象プログラム
javac (javaコンパイラ)
全159クラス(内部クラス含む)
評価値
順位
クラス名(部品名)
1
1
2
2
com.sun.tools.javac.v8.Main
com.sun.tools.javac.v8.Main
3
3
4
4
com.sun.tools.javac.v8.comp.Gen
com.sun.tools.javac.v8.comp.Gen
5
5
6
6
com.sun.tools.javac.v8.comp.Attr
com.sun.tools.javac.v8.comp.Attr
7
7
8
8
com.sun.tools.javac.v8.comp.TransInner
com.sun.tools.javac.v8.comp.TransInner
9
9
10
10
com.sun.tools.javac.v8.JavaCompiler
com.sun.tools.javac.v8.JavaCompiler
com.sun.tools.javac.Main
com.sun.tools.javac.Main
com.sun.tools.javac.v8.comp.Enter
com.sun.tools.javac.v8.comp.Enter
com.sun.tools.javac.v8.comp.ClassReader
com.sun.tools.javac.v8.comp.ClassReader
com.sun.tools.javac.v8.comp.Enter$CompleteEnter
com.sun.tools.javac.v8.comp.Enter$CompleteEnter
com.sun.tools.javac.v8.comp.TransTypes
com.sun.tools.javac.v8.comp.TransTypes
実行方法:
「正常コンパイル終了」する
プログラムを引数に与える
部品評価値 利用部
(108 ) 品数
利用数
順位
6230715
6230715
5401857
5401857
17
17
24
24
11
11
7
7
3308156
3308156
2911060
2911060
36
36
2
2
1
1
53
53
2844601
2844601
2588095
2588095
34
34
28
28
2
2
3
3
2007288
2007288
1949322
1949322
27
27
26
26
4
4
5
5
1821256
1821256
1797646
1797646
16
16
26
26
14
14
5
5
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
評価実験
実験対象プログラム
j2sdk1.4.0_01.demo.jfc.Notepad
単純なテキストエディタプログラム
全19クラス(内部クラス含む)
複数機能実行結果
順位
クラス名
「file open」実行結果
順位
クラス名
「copy&paste」実行結果
順位
クラス名
1
<System>
1
Notepad
1
Notepad
2
Notepad
2
<System>
2
<System>
3
Notepad$UndoAction
3
Notepad$OpenAction
3
Notepad$UndoHandler
4
Notepad$OpenAction
4
Notepad$FileLoader
4
5
Notepad$ShowElementTreeAction
5
6
Notepad$UndoHandler
6
7
ElementTreePanel
8
Notepad$3
9
Notepad$FileLoader
Notepad$UndoHandler
Notepad$UndoAction
Notepad$RedoAction
Notepad$NewAction
Notepad$ExitAction
Notepad$ShowElementTreeAction
:
Notepad$UndoAction
Notepad$OpenAction
Notepad$RedoAction
Notepad$NewAction
Notepad$ExitAction
Notepad$ShowElementTreeAction
Notepad$ActionChangedListener
Notepad$1
:
:
:
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
考察
部品利用数と部品評価値
部品利用数と部品評価値に完全に相関があるわけではない
利用数が少なくても,機能実装の核となる部品が存在
提案手法による部品評価手法は有効
実行方法と部品評価値
実行された機能を実現する部品ほど、高い評価値を得られる
ファイルオープンを実行した時には,その動作に関連の高い部品が,
高い評価値を得る
「特定の機能を実現する部品」の再利用に利用できる
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
部品評価値の利用法
シーケンス図(sequence diagram)への適用
動的な部品間の利用関係をグラフ化
「いつ」「どのように」部品を利用しているか?
Greeter
Database
Massage:
browse()
部品
Recipe
Massage:
display()
return:
display()
時間軸
Planner
メッセージのやり取り
return:
browse()
Massage:
makePlan()
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
部品評価値の利用法
適当な部品評価値でフィルタリング
例:Notepad
28,475,829
Notepad
3,800,453
Notepad$
UndoHandler
<init>
<init>
3,800,453
Notepad$
UndoAction
<init>
<init>
3,800,453
Notepad$
RedoAction
10,882,916
・・・
Notepad$
OpenAction
7,715,919
・・・
Notepad$
FileLoader
<init>
<init>
<init>
<init>
<init>
<init>
getFrame
getFrame
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
部品評価値の利用法
適当な部品評価値でフィルタリング
例:Notepad
28475829
10882916
7715919
Notepad
Notepad$
OpenAction
Notepad$
FileLoader
<init>
重要な部品のみ出力
開発者が注目すべき部品,
利用関係を絞り込める
<init>
getFrame
getFrame
:
<init>
“機能の再利用”へ利用
ソフトウェア理解を支援
<init>
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
システムへの追加
動的利用関係によりシーケンス図を作成
部品評価値でフィルタリング
フィルタリング前
フィルタリング後
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
まとめ
まとめ
動的情報を利用したソフトウェア部品評価手法の提案
ソフトウェア中の特定の“機能”の再利用に利用できる
評価値の利用方法-シーケンス図への利用
ソフトウェア理解支援
今後の課題
提案手法による部品評価値計算
より多くのソフトウェアに適用
他の評価手法との比較
シーケンス図の表示
辺の重みによるフィルタリング
フィルタリングの有効性検証
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20