2 - Software Engineering Laboratory

Download Report

Transcript 2 - Software Engineering Laboratory

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