Javaを対象としたソフトウェア部品 検索システムSPARS-Jの実験的評価 梅森 文彰† 西 秀雄† 横森 励士† 山本 哲男‡ 松下 誠† 楠本 真二† 井上 克郎† †大阪大学大学院情報科学研究科 ‡独立行政法人科学技術振興機構
背景 過去開発された大量のソフトウェア資産が存在 過去の資産を有効活用するために・・・ 企業内で開発されたソフトウェアプロダクト WWWから入手可能なソフトウェア成果物 過去の資産を有効活用するために・・・ 効率的なソフトウェアの部品化,可視化が望まれる 大量のソフトウェア資産から必要な部品・情報を検索するシステムが必要 研究の背景について説明します。 近年ワールドワイドウェブの発展に伴い、SourceForgeやApacheなどのソフトウェア開発コミュニティを通じて、 大量のソフトウェア成果物が入手可能です。 また、 それらのソフトウェア資産を効率的に利用、把握するために、ソフトウェアの部品化、可視化が望まれています。 そこで、大量のソフトウェア資産から必要な部品や情報を検索するシステムが必要となります。 Javaソフトウェア部品検索システム SPARS-J† †http://demo.spars.info
SPARS-J (Software Product Archive, analysis Retrieval System for Java) 部品を解析し,自動的に情報を抽出 出現キーワード,利用関係,メトリクス 現実的な解析時間で抽出可能 検索要求と検索結果 キーワード型の検索 検索結果表示の工夫 高速な検索を実現 キーワードの出現頻度や部品の利用関係に基づく順位付け 類似部品のグループ化
研究の目的 ソフトウェア部品の効率的な検索により, SPARS-Jに対して実験的評価を行い,システムの有効性を検証する 既存部品を他のシステム開発で用いる再利用支援 部品の関連の掌握によるプログラム理解や保守支援 SPARS-Jに対して実験的評価を行い,システムの有効性を検証する
評価にあたっての問題点 検索システムの順位付け性能評価 評価用のテストコレクションを用いれば容易 ソフトウェア部品検索システムを対象としたテストコレクションは存在していない 言語,部品の単位等の違いにより,テストコレクションの構築が非常に困難 独自の評価実験を適用する
実験の内容 他の検索システムとの比較 SPARS-Jの各順位付け手法の比較 実際の開発環境におけるSPARS-Jの適用実験 各順位付け手法を比較し,最も妥当な順位付け手法を調査する 実際の開発環境におけるSPARS-Jの適用実験 企業において実際に利用してもらうことで,ソフトウェアの管理や理解に有用であることを確認する
実験1. 他の検索システムとの比較 実験の目的 比較対象 評価尺度 実験1. 他の検索システムとの比較 実験の目的 一般的な検索システムとの比較により,SPARS-Jのソフトウェア部品検索システムとしての有効性を検証する 比較対象 Google:Webページ検索システムで,様々な目的での検索に利用される Namazu:信頼性の高い日本語全文検索システム 評価尺度 適合率:検索結果のうちの適合部品数の割合 割合が高いほど,検索結果に利用できる部品が多く含まれる
適合率の対象 検索結果全てを対象として適合率を求めても意味がない 検索結果の上位10件の部品に対する 適合率を求める 適合部品数が同じであれば,上位にあっても下位にあっても同じ評価となってしまう 検索結果上位の部品について適合率を求めるべきである Webページ検索では,検索結果の最初の1ページ(10件)目に該当文書が見つからない場合,2ページ目を検索するよりは検索キーワードを変更する傾向がある† 検索結果の上位10件の部品に対する 適合率を求める †Amanda Spink, B. J. Jansen, D. Wolfram, T. Saracevic:”From E-Sex to E-Commerce: Web Search Changes” IEEE Computer,Vol.35,No.3,pp.107-109,Mar(2002).
実験1. 他の検索システムとの比較 準備 手順 データベース 検索キーワード 実験1. 他の検索システムとの比較 準備 データベース SPARS-JとNamazuに関しては, JDKおよびWeb上で公開されているソースコード(約14万個のソースファイル)で構築 Googleは公開されている検索エンジンをそのまま用いる 検索キーワード 簡単なシステムの開発を想定したクエリを10個用意する 手順 各検索システムの検索結果上位10件の部品を対象として,適合率を求める
実験1の結果 各検索システムの適合率の比較 SPARS-J Google Namazu A 1 0.7 0.9 B 0.4 0.6 C keyword SPARS-J Google Namazu A 1 0.7 0.9 B 0.4 0.6 C 0.5 0.3 D 0.8 E 0.1 F 0.2 G H I J Ave. 0.73 0.46
実験1の評価 対応のある平均値の差の検定 有意水準5%で以下の有意差が見られた 適合率 SPARS-J ≫ Namazu ≫ Google
実験1の考察 Google Namazu データベースによる差だと考えられる Webページ検索システムでありJavaソフトウェア部品に関係するページ以外のものも多く含まれているので,検索結果を絞りきれなかった Namazu SPARS-Jとデータベースは同じ Googleの結果と比較して,検索結果を絞ることができたと考えられる 日本語全文検索システムでありソースコードの構文解析を行っておらず,Javaソースコードの特性を考慮していない SPARS-Jは他の検索システムより,ソフトウェア部品を検索するときに有用である データベースによる差だと考えられる 順位付け性能による差だと考えられる
実験2. SPARS-Jの各順位付け手法の比較 実験目的 各順位付け手法を比較し,最も妥当な順位付け手法を調査する SPARS-Jでは3種類の評価手法による順位付け機能を実現 利用関係に基づく順位付け手法 キーワードの出現頻度に基づく順位付け手法 1.2.の手法を統合した順位付け手法 評価尺度
1.利用関係に基づく順位付け Component Rank(CR)法 利用関係から部品重要度を評価し,順位付けする 多くの部品から利用されている部品は重要 重要な部品から利用されている部品もまた重要 多く利用される部品や,重要な箇所で利用される部品に大きな評価値が与えられる 使用例が多く,汎用的な部品が上位に来る
2.キーワード出現頻度に基づく順位付け Keyword Rank(KR)法 文書検索システムで用いられるTF-IDF法を改変 部品を特徴付ける索引キーに適当な重みを与える 部品に繰り返しあらわれる索引キー 希少で,特定の部品に偏ってあらわれる索引キー クラス定義名など部品を象徴するトークン種類の索引キー 重みの総和を評価値として順位付け クエリと適合する部品が上位に来る
3.CRとKRを統合した順位付け 各順位付けの観点 順位を統合して,両面で優れている部品を検索結果の上位に表示する 部品の使用例の多さ,汎用さ CR法 クエリと部品内容の適合度 KR法 順位を統合して,両面で優れている部品を検索結果の上位に表示する 部品検索部で行うため高速な方法が望ましい SPARS-Jの特徴のひとつである、順位付けについて後ほど詳しく述べますが、ここで簡単に触れておきます。順位付けを行うためには、なんらかの尺度を用いて部品の評価値を算出する必要があります。SPARS-Jでは二つの観点から部品を評価し順位付けしています。 ひとつはユーザ要求と部品内容の適合度です。どれほどすばらしい部品であっても、要求する部品が上位にこなければ意味がありません。もうひとつは、部品の再利用性です。要求にヒットする部品のうち、再利用しやすい部品が上位にくればユーザはスムーズにその部品を再利用することができます。 続いて,各部の説明に移ります.
3.CRとKRを統合した順位付け Bordaの手法 順位に対して評価点を割り当て,その合計点をもとに昇順にソート 例) 部品群 = { A, B, C, D, E } 以降,CRとKRを統合した順位付けをCR+KRと呼ぶことにする CR KR 1位 A D 2位 E C 3位 4位 B 5位 CR KR 合計点 A 1 3 4 B 8 C 2 5 D 6 E 7 統合順位 1位 A 2位 C 3位 D 4位 E 5位 B 以上によって求められた検索結果は,Webインタフェースを通じてユーザに提供されます. CRとKRの順位 各部品群の評価点 統合された順位
実験2. SPARS-Jの各順位付け手法の比較 実験目的 各順位付け手法を比較し,最も妥当な順位付け手法を調査する SPARS-Jでは3種類の評価手法による順位付け機能を実現 利用関係に基づく順位付け手法(CR) キーワードの出現頻度に基づく順位付け手法(KR) 1.2.の手法を統合した順位付け手法(CR+KR) 評価尺度 適合率:検索結果のうちの適合部品数の割合 割合が高いほど,検索結果に利用できる部品が多く含まれる ndpm値:ユーザの順位付けとシステムの順位付けの違い 値が小さいほど,理想的な順位付けと言える
ndpm値の計算方法 検索文書集合の全てのペア(d,d’)における,システムとユーザで順位付けが異なるペア数(m)の割合 計算例
実験2. SPARS-Jの各順位付け手法の比較 準備 データベース (実験1と同じ)14万個のソースコード群から構築 検索キーワード (実験1と同じ)10個のクエリを用いる 手順 各順位付け手法の検索結果上位10件の部品を対象として適合率を求める 各順位付け手法による検索結果の全ての部品を対象として,ユーザの想定する理想的な順位付けとのndpm値求める
実験2の結果 適合率 ndpm値 CR KR CR+KR A 1 0.036 0.048 0.037 B 0.194 0.261 0.221 keyword CR KR CR+KR A 1 0.036 0.048 0.037 B 0.194 0.261 0.221 C 0.5 0.133 0.117 0.092 D 0.4 0.9 0.8 0.123 0.200 0.189 E 0.208 0.192 F 0.2 0.184 0.160 G 0.081 0.103 0.080 H 0.047 0.109 0.052 I 0.6 0.7 0.210 0.324 0.267 J 0.219 0.243 0.114 Ave. 0.65 0.72 0.73 0.143 0.178 0.141
実験2の評価 対応のある平均値の差の検定 有意水準5%で以下の有意差が見られた 適合率 ndpm値 KR,CR+KR ≫ CR CR,CR+KR ≫ KR
実験2の考察 CR法 KR法 CR+KR法 全体的にユーザの想定した順位で並んでいる傾向がある 上位には適合部品が多く存在しやすい 適合率とndpm値の両方で優れた順位付けを行うことができた CR法とKR法の両方で高順位になったものが上位に順位付けされていると考えられる
実験3. 企業内のソフトウェアに対する適用実験 実験3. 企業内のソフトウェアに対する適用実験 実験目的 企業において実際に利用してもらうことで,ソフトウェアの管理や理解に有用であることを確認する 実験内容 SPARS-Jついての定性的な評価 企業内のソフトウェア開発・保守を行っている従業員7名に対して,SPARS-Jについてのアンケートを実施
アンケートの結果 (良 5 4 3 2 1 悪) A B C D E F G 最頻値 パッケージブラウザの利用 5 同グループのクラスの参照 5,4 検出されたクラスを利用しているクラスの参照 検出されたクラスが利用しているクラスの参照 1 クラスのメトリクス値 4,1 ソースコードがダウンロード機能 時間的コストの削減 5,3 ソフトウェア品質の向上 企業内のソフトウェア把握 5,3,1 検索結果一覧表示の見やすさ ハイライト表示の見やすさ
アンケートの評価 特に評価の高かった点 SPARS-Jを用いることで可能になること パッケージブラウザの利用 同グループの参照 利用・被利用クラスの参照 検索結果一覧・ハイライト表示の見やすさ SPARS-Jを用いることで可能になること 部品を利用しているアプリの把握 部品改訂時の影響範囲の調査
実験3の考察 ソフトウェア部品の把握が容易となるということを意味しており,保守作業の支援に繋がっていると言える その他の感想 検索速度が速く,ストレスを感じない 前もって索引語を抽出しているため クライアントにインストールする必要がなく,ソフトウェア部品を共有できる 共有のデータベースを構築するため SPARS-Jはソフトウェア部品の検索に有用であり, また部品の把握や管理にも非常に役に立つ システムである
まとめと今後の課題 ソフトウェア部品検索システムSPARS-Jの実験的評価 今後の課題 他の検索システムとの比較 GoogleとNamazuより優れている SPARS-Jの各順位付け手法の比較 CR・KRそれぞれ特徴があり,それらを統合することで性能が向上した 企業内のソフトウェアにSPARS-Jを適用した 保守を行う時に非常に有効であった 今後の課題 再現率の調査 順位付け性能以外の観点からの定量的評価 他のソフトウェア部品への対応
END The End