Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法 井上研究室 宮崎 宏海 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 背景 ソフトウェアに対する品質要求の高まり ソフトウェアの大規模化・複雑化 →ソフトウェア部品の再利用の重要性 高品質なソフトウェアの開発 開発に掛かるコストの削減 ソフトウェア部品の量は膨大 様々なソフトウェア部品検索システム 2 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ソフトウェア部品検索システム キーワード検索システム 入力したキーワードに適合する部品を出力する 利点:Web検索で馴染みがあり,自由度の高い検索ができる 既存のソフトウェア部品検索システム 例:SPARS-J,Google Code Search カテゴリ検索システム あらかじめ用意された階層状のカテゴリから目的の部品を探す 利点:適当なキーワードが思いつかない場合でも,漠然とした目的から検索 ができる 既存のソフトウェア部品検索システム ソースコードの特徴語を用いたJavaソフトウェア部品の分類システム[19] [19]:仁井谷,松下,井上, “ソースコードの特徴語を用いたJavaソフトウェア部品の 自動分類手法の提案 ” 情報処理学会研究報告, Vol.2005, No.75, 2005-SE-149, pp.49-56, 2005 3 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 既存のカテゴリ検索システム構築手法 ソフトウェア部品のカテゴリ検索の問題点 カテゴリは人手による維持が困難 部品をどのカテゴリに入れるかの判断には部品の知識が必要 部品の量が膨大 →カテゴリを自動で作成する手法が必要 既存の手法 Javaのソースコードから特徴語を抽出,カテゴリ名とする 特徴語:クラス名など 4 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 既存手法の問題点 カテゴリ間の親子関係でカテゴリ名の意味的な繫が りを考慮していない 対象:ロボコードのロボット Mirror … Mirrorはロボットの Approachの一種 Author Approach … … カテゴリ名に意味的な繫がりがない カテゴリ名による段階的な絞り込みが出来ない 5 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 研究の目的 目的 カテゴリ名による段階的な絞り込みに適したカテゴリ階層 の自動構築 →シソーラスに着目 単語間の関係を記した辞書 同義(類義)関係 反義関係 上位下位関係 上位下位関係のシソーラスを用いることでカテゴリ名の 意味的な関係にもとづいたカテゴリ階層を構築する 6 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ソフトウェア部品に適したシソーラス 既存のシソーラス 自然言語に基づく単語間の関係を表している ソフトウェア部品には自然言語とは用途が異なる単 語や複合語が多い →既存のシソーラスをソフトウェア部品のカテゴリ階層に 用いるのは適当ではない ソフトウェア部品に適したシソーラスを作成 7 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 提案手法の概要 1. Javaクラスの利用関係を用いてシソーラスを作成 2. Javaクラスの集合からJavaクラスのクラスタと特徴語の集 合を作成 3. ソフトウェア部品のカテゴリ階層を構築 A 1 2 3 1 2 3 4 1.シソーラス 作成 シソーラス 4 2.部品の クラスタ作成 部品 (Javaクラス) (既存の手法を 利用) 3.シソーラスと クラスタから カテゴリ階層を構築 1 4 特徴語1, 特徴語2,... 2 3 特徴語3, 特徴語4,... クラスタ B C 1 4 2 3 カテゴリ階層 8 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1.Javaクラスの利用関係を用いてシソーラスの作成 Javaクラスの利用関係と識別子を用いる 上位下位関係が期待できる利用関係を選択 利用関係ごとに設定した閾値以上の出現回数のもののみ取得 以下の関係にある識別子の組を取得 上位 下位 継承関係 親クラス名 実装関係 親インタフェース名 子インタフェース名 インタフェース名 実装するクラス名 フィールド変数の型と変数名 型名(クラス名) 子クラス名 変数名 例: java.util.List が java.util.Collection を継承しているので Collectionを上位,Listを下位とする 9 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1.Javaクラスの利用関係を用いたシソーラスの作成 取得した識別子と上位下位関係の有向グラフ 頂点:識別子 有向辺:上位の識別子から下位の識別子に引いた辺 A B C D E F G 10 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 2.Javaクラスのクラスタと特徴語の作成 部品集合から部品のクラスタと特徴語の集合を作成 研究室で開発されたツールを用いた 出現する単語に基づく部品のクラスタを作成 クラスタに定数個の特徴語を付ける 1 2 3 1 2 特徴語1,特徴語2 特徴語3 ,.... 3 4 特徴語4,特徴語5 特徴語6,..... 4 部品(Javaクラス) クラスタ結果 11 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 3.カテゴリ階層の構築(1) クラスタリング結果を用いてカテゴリを作成する クラスタの特徴語がシソーラス内にあればカテゴリを作成 作成したカテゴリにクラスタに含まれる部品を割り当てる 下位に2個以上カテゴリ名に対応する頂点を持つ頂点の カテゴリを作成 A 部品 A B 1 2 E F 5 6 特徴語 クラスタ A E 3 4 単語 A B 2 3 4 F 1 2 D D クラスタリング結果 1 C E B E G シソーラス F 3 4 5 6 5 6 12 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 3.カテゴリ階層の構築(2) シソーラスからカテゴリの親子関係を作成 カテゴリ名に対応する2つの頂点の間に,他のカテゴリに対 応する頂点を経由しない経路がある場合 A 部品 A B 1 2 特徴語 クラスタ A 3 E F 5 6 単語 A B 1 2 3 4 E D クラスタリング結果 E F G シソーラス 1 2 D C 4 B E F 3 4 5 6 5 6 13 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 適用実験 実験の目的 カテゴリ名による段階的な絞り込みを行うためのカテゴリが作成でき ているかを調べる 実験内容 入力:JDK1.4の全クラス(約11000クラス) シソーラスへの登録の閾値 継承関係,実装関係:1回 フィールド変数の型と変数名:10回 出力結果 総カテゴリ数 カテゴリ間の親子関係 カテゴリに割り当てられた部品数 カテゴリに割り当てられた延べ部品数 カテゴリに含まれる部品(平均) 1109個 2501組 6000個 18583個 16.75個 14 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 評価方法 評価項目 こちらの実験のみ説明する カテゴリ間の親子関係が適切か カテゴリに含まれている部品が適切か 15 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University カテゴリ間の親子関係の評価 評価 出力した親子関係2501組からランダムに200組を選出 親子関係の適合率を求める 適合条件:子カテゴリが親カテゴリの一種 適合例 不適合例 親カテゴリ JComponent ClassFile 子カテゴリ JLabel ClassReader 結果 64.0%(128組 / 200組) 16 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 考察 意味的な絞り込みを行えるカテゴリ階層が出来た 継承関係として機能を利用するためのものがみられ た →より柔軟な閾値の設定方法による親子関係の適合率 の向上 17 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University まとめと今後の課題 まとめ Javaの利用関係を用いたシソーラスの作成 シソーラスを用いたカテゴリ階層の構築 実際のソースコードを用いた実験 今後の課題 カテゴリ間の親子関係の精度向上 親子関係以外の関係をカテゴリ階層に追加 カテゴリ検索のユーザーインターフェースの開発 18 部品ware Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
© Copyright 2025 ExpyDoc