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

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

Building text features for object image classification
メソッド周辺の識別子と メソッド本体のAPI利用実績に基づいたAPI集合推薦手法
利用実績に基づくソフトウェア部品検索システムSPARS-J
アクセス修飾子過剰性の変遷に着目したJavaプログラム部品の分析
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
プログラム実行履歴を用いたトランザクションファンクション抽出手法
大規模ソースコード集合を対象とした 類似関数集合群の抽出
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
類似するコーディングパターンの 利用状況調査ツールの提案
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
識別子の共起関係に基づく類似コード検索法の提案と 欠陥検出への適用
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
類似度を用いたプログラムの再利用性尺度の提案と実現
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
只見町 インターネット・エコミュージアムの「キーワード」検索の改善
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
利用実績に基づくソフトウェア部品検索システムSPARS-J
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
コンポーネントランク法を用いたJavaクラス分類手法の提案
ソースコードの特徴量を用いた機械学習による メソッド抽出リファクタリング推薦手法
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローンに対する一貫性のない変更に起因する欠陥の検出
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
不確実データベースからの 負の相関ルールの抽出
バイトコードを単位とするJavaスライスシステムの試作
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
シナリオを用いたレビュー手法PBRの追証実験 - UMLで記述された設計仕様書を対象として -
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
類似度メトリクスを用いた Javaソースコード間類似度測定ツールの試作
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
項目間の対応関係を用いた XBRL財務報告書自動変換ツールの試作
コーディングパターンの あいまい検索の提案と実装
JAVAバイトコードにおける データ依存解析手法の提案と実装
インスタンスの型を考慮したJavaプログラムの実行経路の列挙手法の提案
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
コードクローンの分布情報を用いた特徴抽出手法の提案
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
クラスタリングを用いた ベイズ学習モデルを動的に更新する ソフトウェア障害検知手法
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
Webページタイプによるクラスタ リングを用いた検索支援システム
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
コードクローン解析に基づく デザインパターン適用候補の検出手法
石尾 隆 (大阪大学) 山本 哲男 (立命館大学) 佐々木 裕介 (大阪大学)
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
Presentation transcript:

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

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

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

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

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

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

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

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))

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

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

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

比較実験の結果 多くの場合で正しくコンポーネントを分類できたが,改善の余地もあることがわかった 比較するコンポーネント対 詳細 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 利用関係には少量の違いしかないが役割は別 多くの場合で正しくコンポーネントを分類できたが,改善の余地もあることがわかった

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