利用関係に基づく類似度を用いた 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
© Copyright 2025 ExpyDoc