ソフトウェア部品の検索
ソフトウェア部品とは
一般の工業製品,たとえば車などは,多くの部品を組み合わせることにより作られます.同様に,コンピュータ上で動作するソフトウェアも多くの部品から成り立っています.これをソフトウェア部品と呼びます.ソフトウェア開発の現場では,まずソフトウェア部品を作成し,部品同士を組み合わせることでソフトウェアを作り上げるということがよく行われます.

ソフトウェア部品の再利用
過去に作ったソフトウェア部品は,それぞれはある程度独立しており,次に作成するソフトウェアにそのまま,もしくは少しの変更で使える場合があります.このようにソフトウェア部品を再利用すれば,新しくソフトウェア部品を作成するコストが削減できます.また,以前のソフトウェアで正しく動作した実績のあるソフトウェア部品を利用することにより,ソフトウェア自体の品質も向上します.
このようにメリットの多いソフトウェア部品の再利用ですが,実践するにはいくつかのハードルがあります.まず,新しく作るソフトウェアの機能などに応じてソフトウェア部品を取得する必要がありますが,過去に開発された多くのソフトウェア部品の中から必要なものを見つけるには,非常に大きな労力を必要とします.そして,目的に応じたものを取得することができたとしても,その部品が本当につかえるものなのか分からない,また,似たものが複数見つかった場合,どれを使えば良いか分からない,という問題があります.
ソフトウェア部品検索システム
肥後研究室では,ソフトウェア部品を管理し,再利用の支援を行うためのシステムとしてソフトウェア部品検索システムSPARSを提案しており,プログラミング言語Javaのソースコードを対象としたシステムSPARS-Jの開発を行っています.

SPARS-J は以下のような特徴を持ち,部品の再利用を効率的に行うことができます.さらに,SPARS-Jは大規模なソフトウェア資産を登録し検索できるという面から,開発されたソフトウェアそのものの管理にも利用されています.
大規模なソフトウェア資産を容易に登録
一般のソフトウェア部品検索システムには,ソフトウェア部品の登録の際に部品に関する情報を関連付けて登録するものがありますが,そのような関連付けはデータベースの構築に労力を必要とするために現実的ではありません.SPARS-Jでは,ハードディスク上のソフトウェア部品の場所を指定するのみで部品登録を行うことができるため,登録作業に手間がかかりません.また,10万部品以上の大量の部品を扱うことができるため,多くのソフトウェア部品をもつ実際の現場にも導入することができ,非常に実用的であるといえます.
利用関係に基づく部品の順位付け
ソフトウェア部品の間には利用する・されるという利用関係があり,SPARSでは部品間の利用関係に基づいた部品の順位付けを行います.この手法はコンポーネントランク法と呼ばれ,多くの部品から利用される部品は重要であり,また,重要な部品から利用される部品もまた重要であるという方針により,部品の重要度を評価します.この手法により重要と評価された部品は,利用例が多く,再利用性の高い部品であると言えます.部品の検索時には,重要度の高い部品を高く順位付けして表示を行うことにより,利用者が再利用性の高い部品を取得しやすくなっています.

Webインターフェースを通じたキーワード検索
SPARS-Jは,キーワードにより部品ソースコードの全文検索を行います.このようなキーワード検索はWeb検索などでなじみのある検索方法であるため,利用者は特別な説明を受けること無くシステムを使うことができます.また,一般のWebブラウザを通じて検索を行うことができ,利用者ごとに検索用ソフトウェアをインストールする必要がありません.

関連する部品の取得
SPARS-Jでは,Javaのパッケージ階層を表示する機能や,利用関係にある部品の一覧を取得する機能があります.これにより,検索により得た部品と関連のある部品を容易に取得することができ,再利用などに役立てることができます.
今後の研究課題
SPARSを用いることで,再利用性の高い部品を検索することができますが,その利用方法,すなわち,どうすれば新しいソフトウェアで部品を使えるのか,ということが分からなければ部品の再利用はできません.検索された部品は過去のソフトウェア中で利用されている部品であり,その利用方法はそれらのソフトウェアを参照することで調べることができますが,個々のソフトウェアの一部として埋め込まれた部品の使用方法を調査することは,簡単ではありません.そこで,登録されたソフトウェア群から,ソフトウェア部品の利用方法に関する本質的な部分のみを取り出し,利用者へ提示することが必要となっています.
また,SPARSは現在Javaのみが対象となっていますが,より広い分野に適用するために,他のプログラミング言語,たとえばC言語などへの対応が必要です.
さらに詳しい情報
SPARSのページをご覧下さい.