利用関係の一致度

利用関係に基づく類似度を用いた
Javaコンポーネント分類ツールの作成
基礎工学部情報科学科
井上研究室
佐々木 裕介
コンポーネント検索システム SPARS

ソフトウェアの再利用の単位(コンポーネント)を
検索するシステム
 コンポーネント:Java

クラス
同じように利用できるコンポーネントはまとめて
表示したい
 類似コンポーネント
 例:バージョン違い,他プロジェクトからの流用
⇒ グループ化して検索結果を表示
2
コンポーネント分類ツール Luigi
A
A
B
入力
Luigi
B
出力
C
C
大量のコンポーネントを高速に分類
⇒構造を表すメトリクス値のみを用いて比較
3
Luigi の問題点

類似していないコンポーネントが同じグループに
分類されてしまう
 構造が同じ場合

類似コンポーネントが違うグループに分類されて
しまう
 コピー後,構造にわずかな変更が加えられた場合
 小さいコンポーネントは全て独立したグループに
 同じメトリクス値になりやすいため
利用する側から見た基準を用いた分類手法を提案
4
提案手法概要
コンポーネント間の類似を利用関係の一致度と名前の
一致度を組み合わせて判定
コンポーネントの対
利用関係
一致度計測
名前
一致度計測
判定
類似 または 類似でない
5
名前の一致度
高
類
似
性
完全限定名が一致
 パッケージ名は不一致だが単純名が一致
 単純名が不一致だが共通のキーワードを含
む

 例:*.Byte

低
と *.AlternativeByte
単純名が不一致,かつ共通のキーワードを
含まない
完全限定名
例: java.lang.Byte
パッケージ名
単純名
6
利用関係の一致度 1/2
X.foo( ) を定義
X.foo( )
X
X’
利用するコンポーネント集合
の一致度
インタフェースの一致度
7
利用関係の一致度 2/2

メソッドのインタフェースの一致度
 インタフェースの一致:引数,型,メソッド名の一致
(X,Y を比較する場合)
Pi(X,Y) =

一致するメソッド数
max(Xのメソッド数,Yのメソッド数)
利用するコンポーネント集合の一致度
(X,Y を比較する場合)
Pc(X,Y) =
|CX ∩ CY|
|CX ∪ CY|
(CX,CY はX,Yの利用するコンポーネント集合)
利用関係の一致度 (X,Y を比較する場合)
Pr (X,Y) = min(Pi(X,Y),Pc(X,Y))
8
類似の判定

低高
二つの一致度の組み合わせによって類似を判
定する
名前の一致度
利用関係の一致度
0
k1
k2
完全限定名が一致
単純名に含まれるキーワードが全て異なる
1
類似
単純名のみ一致
単純名に含まれるキーワードが一致
k3
非類似
9
コンポーネント分類ツールの実装
コンポーネント検索システム SPARS に組み込
んだ
 ツール詳細

 実装言語:Java
 LOC:1800
SPARS
実装ツール
DB
10
Luigi との比較実験

目的
と提案手法の判定結果を比較し,提案手法が
正しく働くことを確認する
 Luigi

データセット
 JDK

1.4及びJDK 5.0(総コンポーネント数20569)
閾値
 k1=0.50,k2=0.55,k3=0.60
11
比較実験の結果
比較するコンポーネント対
詳細
javax.swing.text.html.HTMLDocument
の新旧2ver.
新しいバージョンでメソッド 非類似
を追加
類似
com.sun.org.omg.CORBA.IRObjectOp
erationsと
org.omg.CORBA.IRObjectOperations
内容は同一だが
サイズが小さい
非類似
類似
java.lang.Byte と java.lang.Short
構造は同じだが役割は別
類似
非類似
java.net.Inet4AddressImpl と
java.net.Inet6AddressImpl
利用関係には少量の違い 非類似
しかないが役割は別
Luigi 提案
手法
類似
多くの場合で正しくコンポーネントを分類できた
が,改善の余地もあることがわかった
12
まとめ
本研究ではコンポーネント間の利用関係の類
似性に基づいた分類手法を提案した
 既存ツールとの比較を行った


今後の課題
 定量的な実験
 分類精度の向上
 意味的違いをより詳細に区別
 スケーラビリティの向上
13