利用実績に基づくソフトウェア部品検索システム SPARS-J
横森 励士†

山本哲男††

松下誠†††

楠本真二†††

井上 克郎†††

あらまし 本論文では，利用実績に基づいたソフトウェア部品の解析・検索システム SPARS-J(SoftwareProduct Archive, analysis and Retrieval System for Java) の紹介を行う．SPARS-J は Java を対象とした部品検索システムで，収集されたソフトウェア部品の集合に対して利用関係に基づいて各部品の重要度を計算し，検索結果の順位付けを行う．これにより，実際によく利用されている部品が検索結果の上位に現れるため，検索キーと関連したソフトウェアのソースコード等を容易に検索できる．
キーワード

ソフトウェア部品，部品検索システム，再利用，利用関係重要になってきている．これを実現するため，近年のProduct Archiving, analyzing, and Retrieving System for Java) について紹介する．SPARS-J は収集してきた Java のプログラムを解析し，リポジトリに保存し，利用実績に基づいた評価値 (ComponentRank [2]) により順位付けを行う．開発者は必要な部

ソフトウェア開発において再利用を用いた開発がよく品に関する情報を検索キーとして入力することで，検行われている．再利用とは，既存のソフトウェア部品索にヒットした部品に関する情報を得ることができを同一システム内や他のシステムで利用することを指る．結果の出力における表示順位として Component

1. ま え が き
ソフトウェアの大規模化と複雑化に伴い，高品質なソフトウェアを一定期間内に効率良く開発することがし，開発期間の短縮や品質向上を期待できるといわれRank を利用することで，開発者の必要としている機ている．ソフトウェアの再利用による効果を最大限に能を持つ部品の中でも利用実績の高い汎用的な部品を引き出すためには，開発者が今から開発しようとする検索結果の上位に置くことができる．

ソフトウェアに必要な部品およびライブラリに関する知識を得ることが重要になる．しかし，知識の共有が2. SPARS-J満足になされていないために，同種のソフトウェアがSPARS-J は Java プログラムを対象とした部品検別々の場所で独立して開発されていることも多い．

索システムで，収集された部品に対して解析および一方でインターネットの普及により，SourceForge [1]インデックス付けを行うことで検索機能を提供する．などのソフトウェア開発に関する情報を交換するコ

SPARS-J は現在のところキーワード検索に対応してミュニティが誕生し，大量のソフトウェアソースコーおり，検索結果はクラス単位で表示される．検索結果

ドが容易に入手できるようになった．これらの公開さを表示する際，検索された部品を評価し順位付けし選れている大量の部品の中から，開発者の必要としてい別して表示する仕組みが必要となるが，SPARS-J にる機能を持つ部品，その機能の使い方を示している部

おいては，部品間の利用関係を元に定められた Com-品のような，再利用に有益な情報を提供する検索シス

ponent Rank [2] に基づいて順位付けを行うことで，テムを実現することで，知識の共有が実現でき，再利利用実績の高い汎用的な部品の取得を容易にしている．

用を促進することができると考えられる．

図 1 に SPARS-J の構成を示す．SPARS-J は，入力

そこで本論文では，我々が提案する利用実績に基づされたソースコードに対してリポジトリを構築するリくソフトウェア部品検索システム SPARS-J(Software

ポジトリ構築部と，検索に必要な情報を保存するリポジトリ，リポジトリから情報を取得することで部品の† 大阪大学大学院基礎工学研究科，大阪府

Graduate School of Engineering Science, Osaka University,Toyonaka, Osaka, 560-8531 Japan†† 科学技術振興事業団，埼玉県

Japan Science and Technology Corporation, 4-1-8, Honmachi, Kawaguchi, Saitama, 332-8531 Japan†††

大阪大学大学院情報科学研究科，大阪府
Graduate School of Information Science and Technology, Osaka University, Toyonaka, 560-8531 Japan

検索を行う部品検索部から構成されている．以下，リポジトリ構築部および部品検索部について説明する．

2. 1 リポジトリ構築部
リポジトリ構築部では，検索時に必要なデータを提供するために，次の手順で入力された Java ソース
コードからリポジトリの構築を行う．部品のグループ化，Component Rank の計算については後述する．

第 2 回クリティカル・ソフトウェア・ワークショップ 2003 年 3 月

第 2 回クリティカル・ソフトウェア・ワークショップ 2003 年 3 月

入力
ソースファイルJavaSPARS-J
部品検索部

データベース
照会

おいて各部品が参照されている確率を求め，その値をリポジトリ構築部

構文解析
キーワード抽出
キーワード
リポジトリ

部品グループ化

利用関係抽出

評価値計算

部品情報
リポジトリ

Component Rank としている．Component Rank を用いることで，ただ単に利用数が多い部品だけでなく利用数が多い部品が利用している部品も重要であると評価することができる．

2. 2 部品検索部
部品検索部では，部品情報リポジトリおよびキー出力生成
クエリー解析

Ｗｅｂ
ブラウザ

ワードリポジトリを用いて部品の検索を行う．現在の

キーワード
入力

システムでは，基本検索として全てのソースコードか開発者

図 1 SPARS-J の構成らのキーワード検索を実現している．さらに検索条件を指定することで，コメントのみにキーワードが現れる部品を省く，クラスやメソッドの定義にキーワードが出現する部品のみを表示する，などの詳細な検索を（ 1 ） 入力されたソースコードに対して構文解析を行うことができる．検索の手順は以下のようになって行い，利用クラス名や，LOC，トークン数などのメトいる．

リクスを抽出し部品情報リポジトリに保存する．

（ 1 ） 開発者はブラウザを通じてキーワードを入力（ 2 ） ソースコード中で出現する単語に対してインすることで，部品検索部にクエリーを投げる．

デックス付けを行い，キーワードリポジトリを構築（ 2 ） 部品検索部はクエリーをキーワードの集合にする．

分解し，キーワードリポジトリに対してそれぞれの（ 3 ） 各部品が利用しているクラスが実際にどのクキーワードが出現する部品を照会する．

ラスかを意味解析により判定し，利用関係情報として（ 3 ） 部品検索部は検索条件およびクエリーにマッ部品情報リポジトリに保存する．SPARS-J では，クチした部品を Component Rank の順に並べ，それをラス継承，メソッド呼び出し，フィールド参照，抽象検索結果として出力する．

クラスの実装を利用関係とみなしている．

（ 4 ） 開発者はブラウザを通じて検索結果を受け取（ 4 ） 似た部品を一つの部品として扱うために，メる．開発者はさらにキーワードを追加することでよりトリクスを用いて部品のグループ化を行う．

詳しい検索を行うことや，検索結果として表示された（ 5 ） 利用関係から各部品の Component Rank を部品に関して，ソースコードやその部品のメトリクス求め，部品情報リポジトリに保存する．などの部品の詳しい情報を取得することができる．

2. 1. 1 部品のグループ化
一般に部品の集合には，コピーした部品やコピーし3. ま と めて一部を変更しただけの部品が数多く存在する．異な

本論文では，利用実績に基づくソフトウェア部品検るシステムをまたいで全く同じもしくはほとんど似た索システム SPARS-J を紹介した．SPARS-J では，部品が現れる場合，それらの部品が再利用されたので検索機能を提供する際に部品間の利用関係を元に定めはないかと推測することができる．そこで，取得したられた Component Rank に基づいて結果を表示してメトリクスから類似部品を判定し，それらをまとめている．そのため，結果上位に利用実績の高い汎用的な一つの部品群とみなすことでグループ化を行う．その部品を表示でき，部品の再利用に関する情報を取得し際，それぞれの部品への辺が一つの部品群への辺とみやすくなる．今後の課題としては，部品グループ化手なされるため，コピーされた部品への評価を高くする法の効率化，検索システムの評価および性能向上などことができる．

が挙げられる．

2. 1. 2 Component Rank の計算
SPARS-J では ，部 品間の 利用関 係を元 に評 価値（Component Rank）を計算する．計算の際には，各謝辞

本研究は，科学技術振興事業団計算科学技術活用型特定研究開発推進事業 (ACT-JST) の支援を受けている．

部品を頂点，部品間の利用関係を利用する側から利用

文される側への有向辺として，部品間の関係を部品グラ[1] “SourceForge”,http://sourceforge.net/

フとして表現する．この時，開発者はある部品を参照[2] K. Inoue, R. Yokomori, H. Fujiwara, T. Yamamoto,

した後にグラフ中の有向辺に沿って利用関係のある部

献M. Matsusita and S. Kusumoto: “Component Rank:
Relative Significance Rank for Software Component

品の一つを参照すると仮定することで，我々はこの部

Search”,to be appeared in Proceedings of 25th Inter-

品グラフを開発者の閲覧行動に関するマルコフ連鎖モ

national Conference on Software Engineering (ICSE

デルとみなしている．このモデルにおける定常状態に

2003), Portland, Oregon, 2003.