過去に開発されたソフトウェアの中には多数の有用な部品が含まれていることから,これらの部品を抽出し,再利用することによってソフトウェア開発の効率を向上することが期待されています. ソフトウェア部品を見つけ出し,また,それらの部品の利用規約(ライセンス)など,再利用に必要な情報を抽出する手法を研究しています.
自動車などの一般の工業製品が多数の部品から構成されているように,ソフトウェアも同様に多数のソフトウェア部品から構成されています.
ソフトウェア開発では個々のソフトウェア部品を開発し,それらの部品を組み合わせることで,ソフトウェア全体を構築することが多く行われています. ソフトウェア部品はある程度相互に独立しているため,そのまま,もしくは少し修正を加えれば,別のソフトウェアに再利用できる場合があります. 過去に開発したソフトウェアで正しく動作していた実績のあるソフトウェア部品を再利用することにより,ソフトウェアの開発コストを削減し,またソフトウェア自体の品質も向上すると期待できます.
肥後研究室では,
という2つの観点から研究を行っています.
ソフトウェアの機能をソフトウェア部品として抽出し再利用するためには,その機能がソフトウェアのどの部分で実装されているかを知る必要があります. そこで,私たちは,ソフトウェアの開発履歴とクラス間の呼び出し関係を用いて, 1つの機能を実装しているJavaクラス群をソフトウェア部品として抽出する 手法の提案を行っています.
ソフトウェア部品を利用するためには,開発者がソフトウェアの利用条件(ライセンス)を調べる必要があります. この手間を減らすため,私たちは,大規模なソースファイル集合に対して,ソースファイルのライセンスを特定する手法を提案しています.
この手法では,ソースファイルのライセンスはコメント中で指定され,その記述も複数のファイルで共通する場合が多いことに着目し,ソースファイルのコメント間で共通する文字列を抽出します. そして,ライセンスと結びつけることにより効率よくライセンスを特定することができます.