スライド 1

ソースコードの編集内容を入力とした
ソフトウェア部品の自動検索
○島田隆次, 市井誠, 早瀬康裕, 松下誠, 井上克郎
大阪大学 大学院情報科学研究科
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソフトウェア部品の再利用
ソフトウェアの品質や生産性の向上のために,
ソフトウェア部品の再利用が行われている
ソフトウェア部品(部品)
モジュールやクラスなど,ソフトウェアの構成要素
再利用
既存の部品の一部分または全体を別のシステムで利用するこ
と
2
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品検索システム
大量の部品群から目的のものを探すのは大変
大量の部品を蓄積して管理・検索を行うシステム
我々の研究グループで開発しているSPARSなど
開発者はキーワード検索などで部品を検索する
3
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品検索システムを利用する際の問題点
必要な部品を見つけることが難しい
部品についての知識が必要になる
適切な検索キーワードが思いつかない
検索しないと部品を見つけることができない
開発者が存在を期待していない部品は検索されない
4
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品の自動検索
開発者がソースコードを編集している時に,明示的
な指示なしに,システムが自動的に検索条件を生
成して検索を行うこと
利点
開発者が検索しようとしなくても検索が行われる
開発者が検索対象について知っている必要がない
先の問題に対して自動検索が有効であると言われ
ている*
* Ye, Y. and Fischer, G.: Reuse-Conducive Development Environments,
Automated Software Engineering, Vol. 12, No. 2, pp. 199–235 (2005).
5
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
従来研究 : CodeBroker
メソッドを書き始めたときに再利用可能なメソッドを自
動検索するシステム
利用する情報
メソッドのドキュメントコメント
メソッドのシグネチャ
問題点
自動検索されることを意識してコーディングする必要がある
利用できる場面が限られる
6
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
本研究の概要
目的
先の問題を改善した部品自動検索システムの開発
コーディングスタイルに依存しない
より多くの場面で利用できる
方針
ソースコード編集中にソースコードから特徴的な情報(特
徴情報)を抽出して自動検索を行う
ドキュメントコメント
通常のコメント
利用しているメソッド
出現する識別子とその型
7
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
利用シナリオ
1. クラスの一部を入力
2. システムが類似部品を検索・提示
3. 必要ならプロジェクトに部品を取り込んで置き換え
大きな整数を扱うクラスが欲しいけど
誰も作ってないだろうから自作しよう
クラスの一部を入力
開発者
類似部品の提示
class LargeInteger {
private int[] data;
public LargeInteger
add(LargeInteger i) {}
public LargeInteger
sub(LargeInteger i) {}
1 BigInteger
arbitary-precision
integer
開発環境
8
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
検索手法
1. 編集を監視し,セミコロン入力等の編集の区切りを検出
2. 編集中のソースコードから特徴情報を抽出
3. 似た特徴情報を含む部品をLSIで検索
入力:編集中のソースコードに含まれる特徴情報とその重み
出力:似た特徴情報を含む部品
•LargeInteger
特徴情報
•add
•sub
編集中の
ソースコード
•AddOp
•eval
•getChild
•BigInteger
•add
•sub
•SubOp
•eval
•getChild
蓄積された部品群
(オープンソースソフトウェア集合など)
9
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
システムの構成
クライアント・サーバ型
クライアント
編集の監視,特徴情報の抽出,検索結果の提示
サーバ
部品データベースに対する検索
開発者
クライアント
統合開発環境
Eclipse
エディタ
編集
編集
位置
部品
データ
ベース
ソース
コード
検索クエリ生成部
部品の提示
サーバ
部品提示部
検索クエリ
部品一覧
赤色が本研究で実装した部分
部品検索部
索引作成部
事前に構築
索引
10
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
システムの動作
1.
2.
3.
4.
事前に部品データベースから索引を作成
編集の区切りを検出して検索クエリを生成
索引を用いて部品検索
得られた部品を開発者に提示
開発者
クライアント
統合開発環境
Eclipse
エディタ
編集
編集
位置
部品
データ
ベース
ソース
コード
検索クエリ生成部
部品の提示
サーバ
部品提示部
検索クエリ
部品一覧
赤色が本研究で実装した部分
部品検索部
索引作成部
事前に構築
索引
11
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
利用シナリオでの動作例
1.
2.
3.
4.
開発者がソースコードを入力
編集の区切りを検出して特徴情報を抽出,検索クエリとして送信
重み
索引を用いて部品検索
得られた部品を開発者に提示 class
0.5 LargeInteger {
開発者
編集
private
0.6 int[] data;
クライアント
public LargeInteger
サーバ
統合開発環境
0.8 add(LargeInteger i) {}
Eclipse
public LargeInteger
エディタ
部品
java.math.BigInteger
0.9 sub(LargeInteger
i) {}
データ
ソース
編集
:
ベース
コード
位置
:
カーソル
検索クエリ生成部
特徴情報
部品の提示
重み
部品提示部
検索クエリ
部品一覧
部品検索部
(LargeInteger, 0.5), (int[] data, 0.6),
索引
(add, 0.8), (sub, 0.9)
赤色が本研究で実装した部分
索引作成部
事前に構築
12
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
スクリーンショット(自動検索)
エディタ
部品一覧
13
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
スクリーンショット(ソース表示)
部品のソースコードが表示される
見たい部品をダブルクリックすると…
14
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
スクリーンショット(インポート)
部品がプロジェクトにインポートされる
右クリックして「インポート」を選ぶと…
15
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実装状況
部品検索部,部品提示部
実装済
検索クエリ生成部,索引作成部
ドキュメントコメントを利用する部分のみ実装済
他の特徴情報を利用する部分は現在実装中
16
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめと今後の課題
ソフトウェア部品の自動検索システムを開発
コーディングスタイルに依存しない
多くの場面で利用できる
メソッドの中身を書いているとき
クラスの定義を書いているとき
今後の課題
未実装部分の実装
大量の部品群を対象とした適用実験
検索時間(応答性)
検索精度
17
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University