Presentation is loading. Please wait.

Presentation is loading. Please wait.

利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成

Similar presentations


Presentation on theme: "利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成"— Presentation transcript:

1 利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
基礎工学部情報科学科 井上研究室 佐々木 裕介

2 コンポーネント検索システム SPARS ソフトウェアの再利用の単位(コンポーネント)を検索するシステム
コンポーネント:Java クラス 同じように利用できるコンポーネントはまとめて表示したい 類似コンポーネント 例:バージョン違い,他プロジェクトからの流用 ⇒ グループ化して検索結果を表示

3 Luigi コンポーネント分類ツール Luigi 大量のコンポーネントを高速に分類 ⇒構造を表すメトリクス値のみを用いて比較 入力 出力 A
B B C C 大量のコンポーネントを高速に分類 ⇒構造を表すメトリクス値のみを用いて比較

4 Luigi の問題点 類似していないコンポーネントが同じグループに分類されてしまう 類似コンポーネントが違うグループに分類されてしまう
構造が同じ場合 類似コンポーネントが違うグループに分類されてしまう コピー後,構造にわずかな変更が加えられた場合 小さいコンポーネントは全て独立したグループに 同じメトリクス値になりやすいため 利用する側から見た基準を用いた分類手法を提案

5 提案手法概要 コンポーネント間の類似を利用関係の一致度と名前の一致度を組み合わせて判定 利用関係 一致度計測 名前 一致度計測
コンポーネントの対 利用関係 一致度計測 名前 一致度計測 判定 類似 または 類似でない

6 名前の一致度 完全限定名が一致 パッケージ名は不一致だが単純名が一致 単純名が不一致だが共通のキーワードを含む
類似性 完全限定名が一致 パッケージ名は不一致だが単純名が一致 単純名が不一致だが共通のキーワードを含む 例:*.Byte と *.AlternativeByte 単純名が不一致,かつ共通のキーワードを含まない 完全限定名 例: java.lang.Byte パッケージ名 単純名

7 利用関係の一致度 1/2 X.foo( ) を定義 X.foo( ) X X’ 利用するコンポーネント集合の一致度 インタフェースの一致度

8 Pr (X,Y) = min(Pi(X,Y),Pc(X,Y))
利用関係の一致度 2/2 メソッドのインタフェースの一致度 インタフェースの一致:引数,型,メソッド名の一致 利用するコンポーネント集合の一致度 (X,Y を比較する場合) 一致するメソッド数 max(Xのメソッド数,Yのメソッド数) Pi(X,Y) = (X,Y を比較する場合) |CX ∩ CY| |CX ∪ CY| Pc(X,Y) = (CX,CY はX,Yの利用するコンポーネント集合) 利用関係の一致度 (X,Y を比較する場合) Pr (X,Y) = min(Pi(X,Y),Pc(X,Y))

9 類似の判定 二つの一致度の組み合わせによって類似を判定する 類似 非類似 利用関係の一致度 0 k1 k2 k3 1 名前の一致度 高 低
高        低 完全限定名が一致 単純名のみ一致 単純名に含まれるキーワードが一致 単純名に含まれるキーワードが全て異なる 類似 非類似

10 コンポーネント分類ツールの実装 コンポーネント検索システム SPARS に組み込んだ ツール詳細 実装言語:Java LOC:1800
DB 実装ツール

11 Luigi との比較実験 目的 データセット 閾値 Luigi と提案手法の判定結果を比較し,提案手法が正しく働くことを確認する
JDK 1.4及びJDK 5.0(総コンポーネント数20569) 閾値 k1=0.50,k2=0.55,k3=0.60

12 比較実験の結果 多くの場合で正しくコンポーネントを分類できたが,改善の余地もあることがわかった 比較するコンポーネント対 詳細 Luigi
提案手法 javax.swing.text.html.HTMLDocument の新旧2ver. 新しいバージョンでメソッドを追加 非類似 類似 com.sun.org.omg.CORBA.IRObjectOperationsとorg.omg.CORBA.IRObjectOperations 内容は同一だが サイズが小さい java.lang.Byte と java.lang.Short 構造は同じだが役割は別 java.net.Inet4AddressImpl と java.net.Inet6AddressImpl 利用関係には少量の違いしかないが役割は別 多くの場合で正しくコンポーネントを分類できたが,改善の余地もあることがわかった

13 まとめ 本研究ではコンポーネント間の利用関係の類似性に基づいた分類手法を提案した 既存ツールとの比較を行った 今後の課題 定量的な実験
分類精度の向上 意味的違いをより詳細に区別 スケーラビリティの向上


Download ppt "利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成"

Similar presentations


Ads by Google