修士論文発表会 - Software Engineering Laboratory

ソフトウェア部品間の利用関係を用いた
再利用性評価手法の提案
横森 励士, 藤原 晃, 山本 哲男
松下 誠, 楠本 真二, 井上 克郎
大阪大学大学院基礎工学研究科
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
1
背景
ソフトウェア開発効率を向上するための手法とし
て、再利用が注目されている
再利用とは既存のソフトウェア部品を同一システム内、
他のシステム内で用いること
部品が再利用に適しているか判断するために、
再利用性を定量的に示すことが必要
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
2
従来の再利用性評価手法
従来の再利用性評価手法は、個々の部品の特性を評価
コードメトリクスを足し合わせて再利用性を評価[1]
インターフェース部分の情報から再利用性を評価[2]
個々の部品の特性だけからの評価では十分ではない
再利用性を高めた部品でも,実際はあまり使われない
利用しにくいと評価されても,実際は頻繁に利用される
利用実績に基づく再利用性を定量的に評価することが必要
[1] L. Etzkorn et al.: ``Automated reusability quality analysis of OO legacy software,''
Information and Software Technology, Vol. 43, Issue 5, pp. 295-308 (2001).
[2]山本 他: ``再利用特性に基づくコンポーネントメトリクスの提案と検証," FOSE2001, (2001).
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
SS2002
3
実績に基づく評価手法
計量社会学における手法(Influence Weight[3])
引用実績をもとに学術論文の重要度を評価
多くの論文に引用される論文は重要
重要な論文に引用される論文はまた重要
Googleで利用されている手法(Page Rank[4])
リンク実績をもとにWebページの重要度を評価
多くのページからリンクされるページは重要である
重要なページからリンクされるページはまた重要である
[3] G. Pinski et al.:``Citation Influence for Journal Aggregates of Scientific Publications: Theory,
with Application to the Literature of Physics,“ Information Processing and Management, Vol. 12,
Num 5, pp. 297-312, (1976).
[4] L. Page et al.: ``The PageRank Citation Ranking: Bringing Order to the Web,'' http://wwwdb.stanford.edu/~backrub/pageranksub.ps
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
4
本研究の目的
利用実績に基づく再利用性の定量的な評価
複数のソフトウェアシステムをソフトウェア部品の集合に分
解し利用実績に基づいて各部品の再利用性を評価する
ソフトウェア部品の集合の中で実際にどれくらい利用
されたかに関する定量的な指標を得ることができる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
5
本研究の内容
利用実績に基づくソフトウェア部品の再利用性評価
R3法の提案
提案手法による再利用性評価システムの実現
Javaソースコードを対象としたR3-systemの実現
Javaソースコードに対するR3-systemの適用実験
提案手法が利用実績を反映しているか
ソフトウェア部品検索への応用
R3-systemを検索の順位付けに用いる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
6
本研究の内容
利用実績に基づくソフトウェア部品の再利用性評価
R3法の提案
提案手法による再利用性評価システムの実現
Javaソースコードを対象としたR3-systemの実現
Javaソースコードに対するR3-systemの適用実験
提案手法が利用実績を反映しているか
ソフトウェア部品検索への応用
R3-systemを検索の順位付けに用いる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
7
ソフトウェア部品
開発者が開発を行う単位をソフトウェア部品と呼ぶ
部品の例:ソースコードファイル、ドキュメント
部品間には利用関係が存在する
ソースコード間の利用関係の例: 継承、メソッド呼び出し
c4
c5
c1
c1 '
c2
c2'
c3
(a) 部品間の関係
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
SS2002
8
類似部品群(1)
多数の部品が存在する場合,コピーした部品やコ
ピーして一部変更した部品が多く存在する
類似した部品をまとめて類似部品群とする
コピーした部品間の関係をグループ化により表現
c4
c5
cC44
c1
c1 '
c1
c2
c2'
c3
c2 C2
cC55
c1 '
C1
c2'
C3 c3
(a) 部品間の関係
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
SS2002
9
類似部品群(2)
類似部品群間の利用関係
所属する部品間の利用関係の足し合わせ
部品群をまたぐような利用関係が1つでも存在すれば、
その部品群間にも利用関係があると定義
c4
c5
c1
c1 '
c2
c2'
(a) 部品間の関係
C4
C5
C1
c3
C2
C3
(b) 部品群間の関係
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
SS2002
10
再利用を用いた開発
再利用を用いた開発では
開発者は再利用性が高いと判断した部品を再利用
既存の部品をコピーして利用
ライブラリとして利用
ソフトウェア開発が繰り返されると、時間とともにソフトウェ
アシステムが追加されていき,利用関係が変化していく
十分な時間が経過すると利用関係は収束すると仮定
複数のソフトウェアシステムから構成される
利用関係が収束したソフトウェア部品の集合を対象に
利用実績に基づいた再利用性を評価
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
11
利用実績に基づいた再利用性の評価
再利用性評価値の計算
直接部品間の利用関係から求めるのではなく,グループ
化を行った上で,類似部品群および類似部品群間の利
用関係から計算
コピーした部品や類似した部品が多数含まれるため
部品の再利用性評価値
各部品が所属する類似部品群の評価値
同一部品群に属する部品は同一評価値
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
12
利用実績に基づいた再利用性評価値の計算
1. 再利用性評価値として各部品群に適当な初期値を与える
2. 部品群間の利用関係の重みをそれぞれ計算
利用している側の部品の評価値からの分配という形で決定される
利用している側の部品の評価値が高いと利用関係の重みも高い
3. 2で求めた部品群間の利用関係の重みから部品群の再利用性評
価値を計算し,新たに定義しなおす.
部品の再利用性評価値はその部品への利用関係の重みの和
たくさんの部品から利用される部品の評価値は高くなる
4. 収束するまで2,3を繰り返す
多数の部品間の利用関係から相対的に決まる
「相対的再利用性」
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
13
相対的再利用性による評価
相対的再利用性評価値を元に部品を順位付け
再利用性評価値の絶対値自身にはさほど意味がない
相対的な順位をもとに再利用性を評価
ソフトウェア部品の集合に対して,
部品群へのグループ化を行った上で,
相対的再利用性を計算して
順位付けによって評価を行う
手法を「Relative Reusability Ranking」法(R3
法)と呼ぶ
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
14
相対的再利用性評価値の計算例
C1
0.333
vC
1 1
C1
0.200
C2
C1
C2
0.333
vC
0.400
0.200
0.167
2 2
C1×50%
0.200
C2
0.167 C2×100%
C30.333
×100%
0.200
0.167 0.400
C1 C 0.167 0.333 C2
0.333
C3 C2
C1 C2
C1 3
0.250
0.167
C
C
C2 C 0.400
C2 0.167
0.333
v
0.417
1
1
C
3
C
0.500
0.167
30.167
1
2
0.334
0.250
C
0.500
0.2500.167 0.167
3
0.500
0.334 C3 0.417
0.167
0.250
C3
C3
C
C3 0.417
0.334 3 C
C1×50%
3
0.417
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
SS2002
15
相対的再利用性評価値計算の補正
利用関係を投票とみなして,票の重みの偏りを分析すること
で相対的再利用性を評価している
票が全体に循環せず正しく評価できない場合がある
利用してない部品に対しても非常に低い重みの票を投票したとみなす
この部品の評価値が0となり,
この部品からの利用関係を
部品の利用関係を反映出来ない
評価値に反映
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
16
本研究の内容
利用実績に基づくソフトウェア部品の再利用性評価
R3法の提案
提案手法による再利用性評価システムの実現
Javaソースコードを対象としたR3-systemの実現
Javaソースコードに対するR3-systemの適用実験
提案手法が利用実績を反映しているか
ソフトウェア部品検索への応用
R3-systemを検索の順位付けに用いる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
17
Javaへの適用
R3法をもとにR3-SystemをJavaを対象として実現
部品の単位
ソースコードファイル(クラス)
Javaは原則として一つのファイルに一つのクラスを記述
部品間の利用関係
継承、インターフェイスの実装、メソッド呼び出し
類似部品群化への指標にはSlineを用いる[5]
2つのソースコード間で一致する行の割合
SMMT(Similarity Metrics Measuring Tool)を用いて計測
[5]山本, 松下, 神谷, 井上:``ソフトウェアシステムの類似度とその計測ツールSMMT'',
電子情報通信学会論文誌 D-I.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
SS2002
18
R3-Systemの構成図
Java ファイル (N個)
ファイル間の関係
抽出部
SMMT
ファイル間の類似度
(N×N個)
クラスタ分析
ツール
各部品の所属情報
(N個)
各部品の所属情報
(N個)
順位変換部
各部品群の評価値
(M個)
部品間の利用関係情報
部品群間の関係
抽出部
部品群間の利用関係情報
相対的再利用性
計算部
N個のファイルの順位
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
19
本研究の内容
利用実績に基づくソフトウェア部品の再利用性評価
R3法の提案
提案手法による再利用性評価システムの実現
Javaソースコードを対象としたR3-systemの実現
Javaソースコードに対するR3-systemの適用実験
提案手法が利用実績を反映しているか
ソフトウェア部品検索への応用
R3-systemを検索の順位付けに用いる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
20
適用例(1):JDKへの適用
JDK(Java Development Kit)1.3.0のソースコードへ適用
規模:1877 files(クラス), 18.4MB
言語仕様上、直接的、間接的に利用しなければならないクラスや
入出力に関するクラスが上位を独占
順位
1
2
3
4
5
6
7
8
9
10
クラス名
java.lang.Object
java.lang.Class
java.lang.Throwable
java.lang.Exception
java.io.IOException
java.lang.StringBuffer
java.lang.SecurityManager
java.io.InputStream
java.lang.reflect.Field
java.lang.reflect.Constructor
評価値
0.161269
0.087124
0.055101
0.031032
0.013438
0.012144
0.011700
0.010277
0.009483
0.009370
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
SS2002
21
適用例(2):研究室内ソースコードへの適用
研究室内で作成したツールと、使用したパッケージの
ソースコードへ適用(582 files, 6.1MB)
同一部品群に含まれる部品は同一評価値
作成したツールより使用パッケージの方が評価が高い
順位
1
2
2
4
5
6
7
8
8
10
クラス名
antlr.Token
antlr.debug.Event
antlr.debug.NewLineEvent
antlr.collections.impl.Vector
jp.gr.java_conf.keisuken.text.html.HtmlParameter
jp.gr.java_conf.keisuken.net.server.ServerProperties
Jama.Matrix
jp.gr.java_conf.keisuken.util.IntegerArray
jp.gr.java_conf.keisuken.util.LongArray
jp.ac.osaka_u.es.ics.iip_lab.metrics.parser.java.IdentifierInfo
評価値
0.107270
0.061890
0.061890
0.054348
0.052461
0.036995
0.015649
0.013907
0.013907
0.013654 SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
22
考察
適用例における結果
利用されなくてはならないクラスや一般的によく利用され
るクラスが上位に
利用されるライブラリのほうが上位に現れやすい
相対的再利用性評価値による順位づけは,
実際の利用実績の傾向を反映することができている
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
23
本研究の内容
利用実績に基づくソフトウェア部品の再利用性評価
R3法の提案
提案手法による再利用性評価システムの実現
Javaソースコードを対象としたR3-systemの実現
Javaソースコードに対するR3-systemの適用実験
提案手法が利用実績を反映しているか
ソフトウェア部品検索への応用
R3-systemを検索の順位付けに用いることで,部品の取
得が容易に
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
24
ソフトウェア部品検索への応用
R3法による順位付けをソフトウェア部品検索へ応用
インターネットを通じてソフトウェア部品を収集
R3法で部品を順位付け
検索エンジンを用いて検索
検索結果を相対的再利用性で順位付けして表示
R3-System
インターネット
部品の収集
部品リポジトリ
順位付け
開発者は再利用実績の高い部品を
手軽に取得できる
部品検索
エンジン
検索キー
検索結果
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
25
ソフトウェア部品検索への適用実験
ソフトウェア部品検索を想定し,R3法を用いた検索結果の
順位付けが妥当であるかを検証
実験内容
JDKおよびXMLを利用しているアプリケーションに対する検索
9アプリケーション(7171ファイル)
getNodetype というキーで検索
DOM 内のノードの種類に関する情報を得るメソッド
検索の手順
1. 7171ファイルをR3法で順位付け
2. Grepで検索
3. コメントのみに現れるクラスを検索結果から削除
検索の結果,181クラスを抽出
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
26
実験結果
DOM内のノード操作に関するクラスが上位に
上位のクラスでは getNodetype を定義しているクラスが多い
一般的な利用例が上位に (Element 操作、スタイルシート解析)
特殊な利用例は下位に集まりやすい
(例:XMLで記述された内容を解釈して実行するためのクラス)
順位
1
2
3
4
5
6
7
8
9
10
クラス名(一部省略)
\enhydra-src3.1\modules\Xerces\..\dom\Node.java
\saxon7_0\source\net\sf\saxon\..\NodeInfo.java
\saxon7_0\source\net\sf\saxon\..\NodeTest.java
\enhydra-src3.1\modules\Xerces\..\DocumentImpl.java
\saxon7_0\source\net\sf\saxon\pattern\Pattern.java
\saxon7_0\source\net\sf\saxon\Controller.java
\enhydra-src3.1\modules\Xalan\..\XSLTEngineImpl.java
\enhydra-src3.1\modules\Xerces\..\ElementImpl.java
\saxon7_0\source\net\sf\saxon\..\StyleElement.java
\saxon7_0\source\net\sf\saxon\..\NodeImpl.java
値
2.91E-02
9.69E-04
4.37E-04
3.68E-04
3.24E-04
2.96E-04
2.41E-04
2.35E-04
2.02E-04
1.98E-04
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
27
検索に関する考察
全体的な傾向
上位には定義クラスや一般的な利用例が多く存在
一般的な利用例は上位にも下位にも満遍なく存在している
特殊な利用例は下位に多い
あまり使われていないクラスが下位になっている
部品検索の順位付けにR3法を用いることで,部品
の定義に関する情報や,一般的な利用法などを容
易に取得できる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
28
まとめと今後の課題
まとめ
類似部品群間の利用関係から再利用性を評価する手法を提案
した
提案する手法に基づいて再利用性評価を行うシステムを開発し、
Javaソースコードを対象に適用した
適用結果から、提案する評価手法が利用実績を反映しているこ
とが示された
今後の課題
より多くの部品に対しての適用
解析対象をより大きく取ることで,より実績を反映した結果が期待できる
ソフトウェア部品検索システムの実現
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
29
実行環境
推奨環境
CPU:
PIII 1GHz 以上
Memory: 1GB 以上
SMMT(CCfinder) の都合上,ファイルパスに日本語は使えない
実行に必要なプログラム
Java 2 SDK Ver. 1.3
Ver1.4リリース当初に試したところ,うまく動かなかった
Active Perl Ver. 5.6.1.631
SMMTを利用する際に必要
Cygwin 最新版
Diff コマンドを実行するために必要
インストール時にネットワークに接続する必要あり
単体のDiff があれば必要ないかも
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
30
実験その1
6262ファイルに対する解析
実行環境
PentiumIII 1Ghz
Memory 2GB
クラスタ分析での閾値を変えなが
ら解析
構文解析時間は約5分
file間の関係の抽出は約20分
クラスタ分析に要する時間は閾値が
低くなると長くなる
行列計算は3分~7分
クラスタリングの結果
ファイル数
クラスタ数
7000
6000
5000
4000
3000
2000
1000
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.9
1
閾値
解析時間
解析時間
33:36:00
28:48:00
24:00:00
19:12:00
14:24:00
9:36:00
4:48:00
0:00:00
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
閾値
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
31
実験その1:部品群化に関する考察
(1/5)
6262ファイルに対する解析
クラスタ分析での閾値を変えながら解析
Spearmanの順位相関
全ての組み合わせで0.93以上の非常に高い値
大局的に見た場合、クラスタ分析での閾値を変える事によ
る影響はあまりない
一部のクラスでは、閾値を変える事で順位が変わっている
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
32
実験その1:部品群化に関する考察
(2/5)
閾値を1.0→0.8にしたときの変化
クラスタ数は5524→5039
同一内容のファイルが多いため1.0でもグループ化されている
グループ化の特徴
同じ人が同じ目的で作ったものクラス同士
(違う人が作ると、あまりくっつかない)
ほかのクラスを呼び出すだけのメインクラス的クラス
コードクローン
– 例外やエラー処理 ・ ログ出力部
– インタフェース部
– 構文解析部(クラスの名前を変えて一部変更しても追跡できるようにな
り再利用して伝播している状態がよくわかるようになった)
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
33
実験その1:部品群化に関する考察
(3/5)
閾値を0.8→0.5にしたときの変化
クラスタ数は5039→4693
これ以上閾値を下げても、あまりクラスタ数は減らない
グループ化の特徴
同じ人が同じ目的で作ったクラスはさらにくっつきやすくなる
違う人が作ると、別クラスタになりやすい
– 同じような単純な構造のやつはくっつく
周りの値が変わることによる降格もある
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
34
実験その1:部品群化に関する考察
(4/5)
閾値を下げる事で順位が大幅に変わる場合
閾値が高かったときに順位が高かったものと同じクラスタに入ったた
めに,引き上げられた場合が多い
一番順位が高いものが似た例を拾い上げている
閾値が高い時には順位が低かったクラス同士が、閾値を下げる事
でくっついて順位を上げる場合もある
独自に定義したリストや表などのデータ構造クラス
サーバテストなどの設定情報を持つクラス
例外クラス
解析対象が大規模になれば、もっと有効な例があげられそう
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
35
実験その1:部品群化に関する考察
(5/5)
まとめ
全般的に同じ人が同じ目的で作ったファイルは同一クラスタになり
やすい
クローンができやすいため
違う人が作ると、別クラスタになりやすい
クラス作成時における作法が違うから
ただ、単純な処理内容の場合は同一クラスタになる場合も
再利用して少し変更しただけのファイルが同一クラスタ内に収まるの
で、クラスタ分析を用いたグループ化は必要
なければ、クラス名の変更に対応できない
クラスタ分析での閾値を極端に下げても,時間がかかるだけであまり意味が
ない
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
36
実験その2(1/2)
6262ファイルに対して,グラフ上での遷移確率を
変えて解析
利用関係に基づいた投票(d)と 全部にいきわたる低い重みの
投票(1- d )のバランスを調整
パラメータ d により全体の順位に影響があるかどうかを実験
dは0, 0.05, 0.15, 0.25, 0.35, ………. , 0.75, 0.85, 0.95 , 1.00
– d が0だと,全部にいきわたる低い重みの投票のみ
– d が1だと, 低い重みの投票をしない
それぞれの場合に対して各ソースファイルの順位を求め,
Spearmanの順位相関を用いて評価
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
37
実験その2 (2/2)
グラフ上での遷移確率 d を変えた場合の影響
d が0.05~1 の場合, それぞれの結果の順位相関は0.97以上
非常に高い
dが1の場合, 行列計算が収束するまで時間がかかる(約10倍)
うまく値が循環できていない
d = 0 と d ≠ 0 の結果間の順位相関は低い
d = 0 の場合, 全てのクラスの評価値が同じになるため,その結果には意
味がない
利用してない部品に対して非常に低い重みの票を投票する
仕組みは必要
利用関係を表すグラフが強連結となることで,行列計算が収束し
やすくなる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
38
実験その3 (1/2)
XMLを利用しているJavaアプリケーション (7171ファ
イル)に対する解析
構文解析時間は約5分
ファイル間の関係の抽出は約21分
クラスタリングにかかる時間
クラスタリングの比較
8000
7000
6000
5000
4000
3000
2000
1000
0
40分(閾値1)~2時間(閾値0.5)~28時間(閾値0.1)
6262ファイルのときと比較した場合,同じファイルが少ないため必要な時間
0.1
0.5
0.8
1
閾値
は少し減少している
行列計算は7分~10分
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
39
実験その3 (2/2)
解析結果の考察
異なるXMLの構文解析クラスが同一クラスタになる場合を確認
0.5で半分くらいが一つのクラスタに
この部分には、派生品がいくつか存在している
それ以外は、コピーであることが容易に推測できるクラス以外で他人間のクラ
ス間のくっつきはあまりない
同一アプリ内のクラス同士は同じクラスタに入りやすい
同じ人が作っている事が多いから
同じような処理内容および記述になりやすい
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
40
実験その3:検索の例(DTD)
XMLを利用しているアプリケーション (7171ファイル)
に対する解析
DTDというクエリーで検索
Grep を用いて検出できたものの中で, DTDという単語がコメントの
みに現れるクラスを削除
128クラスを抽出
相対的再利用性評価値 でソート
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
41
実験その3:検索の結果(DTD)
DTDの実現に関するクラスが上位に多い
字句解析クラスが1位
インタフェースクラスや抽象クラスが上位も多い(3,5,7,8位)
Drop-Target-Drag-Event など関係のないクラスも(4位)
順位
1
2
3
4
5
6
7
8
9
10
クラス名(一部省略)
値
\enhydra-src3.1\modules\JTidy\..\Lexer.java
3.39E-04
\enhydra-src3.1\modules\Xalan\..\XSLTEngineImpl.java
2.43E-04
\enhydra-src3.1\modules\Xerces\..\XMLReader.java
1.34E-04
\jdk-1.3.0-src\src\java\awt\dnd\DropTarget.java
1.28E-04
\enhydra-src3.1\modules\Xerces\..\DTDHandler.java
1.21E-04
\jdk-1.3.0-src\src\javax\swing\..\parser\Element.java
1.14E-04
\enhydra-src3.1\modules\Xerces\..\XMLEntityHandler.java
1.13E-04
\enhydra-src3.1\modules\Xerces\..\LexicalHandler.java
1.05E-04
\enhydra-src3.1\modules\Xerces\..\xml\sax\Parser.java
1.02E-04
\enhydra-src3.1\modules\Xerces\..\DOMParser.java
1.00E-04
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
42
実験その3:検索結果の考察(DTD)
利用方法として一般的なものは比較的上位(10%~
25%)に存在している
構文解析関係のクラスは10位~30位に現れている
あまり一般的でない利用例は,下位に集まりやすい
XMLで記述されたモデルの生成クラス
ログファイルをXML形式で記述するためのクラス
最上位は大きいアプリケーション内に現れるクラス
Enhydra は2388クラス
まだ解析対象の規模がそれほど大きくないため、大規模アプリケー
ションに有利に出ている
もっと解析対象を広げる事で、違った結果が出ると思われる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
43
実験その3:検索の例(getNodetype)
XMLを利用しているアプリケーション (7171ファイル)に対す
る解析
getNodetype というクエリーで検索
DOM 内のノードの種類に関する情報を得る
Grep を用いて検出できたものの中で, コメントのみに現れるクラス
を削除
181クラスを抽出
相対的再利用性評価値 でソート
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
44
実験その3:検索の結果
(getNodetype)
DOM内のノード操作に関するクラスが上位に
上位のクラスでは getNodetype を定義しているクラスが多い
Elementの操作や、スタイルシートの解析に関するクラスも上位に
特殊な利用例は下位に集まりやすい
(例:XMLで記述された実行内容を実行するためのクラス)
順位
1
2
3
4
5
6
7
8
9
10
クラス名(一部省略)
\enhydra-src3.1\modules\Xerces\..\dom\Node.java
\saxon7_0\source\net\sf\saxon\..\NodeInfo.java
\saxon7_0\source\net\sf\saxon\..\NodeTest.java
\enhydra-src3.1\modules\Xerces\..\DocumentImpl.java
\saxon7_0\source\net\sf\saxon\pattern\Pattern.java
\saxon7_0\source\net\sf\saxon\Controller.java
\enhydra-src3.1\modules\Xalan\..\XSLTEngineImpl.java
\enhydra-src3.1\modules\Xerces\..\ElementImpl.java
\saxon7_0\source\net\sf\saxon\..\StyleElement.java
\saxon7_0\source\net\sf\saxon\..\NodeImpl.java
値
0.02911008
9.69E-04
4.37E-04
3.68E-04
3.24E-04
2.96E-04
2.41E-04
2.35E-04
2.02E-04
1.98E-04
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
45
実験その3:検索結果の考察
(getNodetype)
クラスタリングの閾値0.8と0.5の2種類で比較したとこ
ろ、検索結果はほぼ同じ
半分以上の要素の順位は変わらず
順位の違いが2以下の要素は全体の3/4
最大は25
Spearmanの順位相関も0.997と高い値
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
46
検索に関する考察
上位には定義に関するクラスや利用方法として一般的なも
のが多く存在
特殊な利用例は下位に多い
一般的な利用例は上位にも下位にも満遍なく存在している
あまり使われていないクラスが下位になっている
相対的再利用性評価値による順位づけは,実際の利用
実績の傾向を反映している
再利用を目的とした検索にも応用できると考えられる
解析対象をより大きく取ることで,よりいい結果が得られる事が期
待できる
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
47
相対的再利用性評価値の計算例
(2)
相対的再利用性評価値を求める計算は行列の固
有ベクトルを求める計算に帰着される
C1
50%
C1
50%
0.200
v1
0.400
100%
0.400
0.200
C3
v3
C3
0.400
C2
v2
C2
0.200
100%
 v1 
 
V   v2 
v 
 3
 0 0 1


D   0 .5 0 0 
 0 .5 1 0 


V = D・V
λ=1(絶対値最大)の固有ベクトル
0.200
 0 .4   0 0 1   0 .4 
  
  
 0 .2    0 .5 0 0    0 .2 
 0 .4   0 .5 1 0   0 .4 
  
  
SS2002
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University
48