Download - ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法
1Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソースコードの編集内容を用いたソフトウェア部品の自動推薦手法
○島田隆次 , 市井誠 , 早瀬康裕松下誠 , 井上克郎
大阪大学 大学院情報科学研究科
SIGSE 162
2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
発表概略
再利用可能なソフトウェア部品を自動的に推薦する手法
開発者によるソースコードの編集を監視自動的に情報を収集して検索条件を生成
フィールド名,メソッド名,クラス名などの識別子コメント,ドキュメントコメント
再利用候補部品を検索し,開発者に提示
提案手法を実装した部品自動推薦システムを紹介
3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
発表の流れ
背景部品の再利用部品検索システム部品自動推薦
提案手法について部品自動推薦システム A-SCORE
概略デモ
まとめ
4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
発表の流れ
背景部品の再利用部品検索システム部品自動推薦
提案手法について部品自動推薦システム A-SCORE
概略デモ
まとめ
5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソフトウェア部品の再利用
ソフトウェアの品質や生産性の向上のために,ソフトウェア部品の再利用が行われている
ソフトウェア部品(部品)モジュールやクラスなど,ソフトウェアの構成要素
再利用既存の部品の一部分または全体を別のシステムで利用すること
6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品検索システム
再利用する部品を探すのが困難部品の数が膨大
大量の部品を蓄積して管理・検索を行うシステム本研究室で開発している SPARS
Google による Google Code Search
etc…
キーワード検索などで部品を検索
7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品検索システムを用いた再利用
開発者
3.検索キーワードを入力
5.既存部品一覧の提示
開発環境
1. 部品を探そう2. 検索キーワードは***
だ
6.部品を再利用
問題点 1:意識的に探そうとしなければならない問題点 2:適切なキーワードが必要
部品検索システム
4. 検索
処理
8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品自動推薦
特徴システムが適当なタイミング ( トリガ ) で自動的に検索を行うシステムが検索条件 ( クエリ ) を自動的に決定する
利点開発者が検索しようとしなくても検索が行われる開発者がキーワードを考える必要がない
9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品自動推薦を用いた再利用
開発者
検索エンジン
1.コードの入力
2. トリガを検出
4.クエリを送信 5. 検索
処理7.既存部品の提示 6.既存部品を返す
3. クエリを生成
8.部品を再利用 Number, Integer, BigInteger
統合開発環境
class Num { private int[] data; public Num add(Num i) {} public Num sub(Num i) {}
2. 部品を探そう3. 検索キーワードは**
*だ
10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
既存研究 – CodeBroker
特徴メソッドを部品として扱うトリガ:メソッド定義の書き始めクエリ:メソッドの引数や戻値の型とドキュメントコメント
手法1. ドキュメントコメントの類似した部品を検索2. 引数や戻値の型が一致する部品だけを抽出
* Ye, Y. and Fischer, G.: Reuse-Conducive Development Environments, Automated Software Engineering, Vol. 12, No. 2, pp. 199–235 (2005).
11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
対象とする再利用の範囲
CodeBroker は対象としている再利用の範囲が狭い引数と戻値の一致による絞込みを行っているメソッドの書き始めで得られる情報しか利用していない
形態 \ 場面メソッドの書き始め
メソッドの本体を書いている時
クラス定義を書いている時
・・・・・・
部品を修正なしでそのまま使う
部品に修正を加えて使う
部品の一部(コード片)のみを使う
この範囲全てをカバーしたい
CodeBrokerが対象とする
範囲
12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
発表の流れ
背景部品の再利用部品検索システム部品自動推薦
提案手法について部品自動推薦システム A-SCORE
概略デモ
まとめ
13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
提案手法の概要
目的広い範囲の再利用に対応した部品自動推薦手法
方針曖昧さを許容した検索を行うメソッド本体の情報も利用して検索を行う
⇒ 編集中のソースコードから特徴を抽出して利用ローカル変数,フィールド,メソッド,クラスなどの識別子に含まれる単語コメント,ドキュメントコメントに含まれる単語
14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
本手法の流れ
エディタ
編集の区切り検出
検索クエリ生成
検索
特徴抽出
索引作成
索引
特徴
編集内容
ソースコード
と編集位置
検索開始指示
推薦部品一覧
ソースコードの
編集
開発者
部品の推薦
部品のソースコー
ド
推薦画面
検索クエリ
事前処理推薦処理
15Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
編集の区切りの検出 (1/2)
エディタ上でのソースコードの編集を監視編集の区切り(下図参照)を検出
import java.awt.event.*;
// Select all text in editorclass SelectAllAction implements ActionListener {
public void actionPerformed( final ActionEvent e) { JEditCommanderTable table = JEditCommanderPlugin.leftTable; table.selectAll(); }}
文の区切りとなる記号が入力された時
コメントの編集後に別の行へ移動した時
16Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
編集の区切りの検出 (2/2)
編集の区切りの種類区切り文字の入力
セミコロン中括弧「 {」「 }」コメントの終了を表す「 */」
カーソルの移動文の変更後に別の文へカーソルが移動したコメントの変更後にコメント外へカーソルが移動した
編集の区切りを検出したら検索を開始
17Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
検索クエリの生成
ソースコードとカーソル位置を元に検索クエリを生成検索クエリの内容組<特徴,重み>の集合特徴:識別子やコメント類に含まれる単語
エディタ
特徴抽出ソースコー
ド
検索クエリ生成
重み付けカーソル位
置
特徴とその位置情報
検索クエリ
18Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
検索クエリの生成 – 特徴抽出 (1/2)
フィールド名,メソッド名,クラス名などの識別子1. それぞれの宣言を抽出2. CamelCase で単語に分割例: getUIClassID (“get”, ”ui”, ”class”, ”id”)⇒
3: class SelectAllAction { 4: 5: public void action() { 6: int length; ・
・・
3 行目 : select, all, action5 行目 : action6 行目 : length
エディタで編集中のソースコード 抽出した特徴と位置情報
19Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
検索クエリの生成 - 特徴抽出 (2/2)
コメント,ドキュメントコメント1. スペース区切りで単語ごとに分割2. 記号や数字のみからなる単語,一般的すぎる単語を除去
3. 語幹を抽出例: /* Check first 16 bytes */ (“check”, “byte”)⇒
2: // Select all text in editor 3: class SelectAllAction { 4:
・・・
2 行目 : select, text, edit
エディタで編集中のソースコード
抽出した特徴と位置情報
20Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
検索クエリの生成 –重み付け
各特徴に,カーソルからの距離に応じた重みをつける近いものほど重み大=検索時に重視
2 行目 : select, text, edit3 行目 : select, all, action5 行目 : action6 行目 : length
select, text, edit 重み0.8select, all, action 重み1.0action 重み0.8length 重み0.6
抽出した特徴と位置情報
カーソル位置情報カーソル位置: 3 行目
重み付け
重み付き特徴
集計
select 重み 1.8text 重み 0.8edit 重み 0.8all 重み 1.0action 重み 1.8length 重み 0.6
検索クエリ
21Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
発表の流れ
背景部品の再利用部品検索システム部品自動推薦
提案手法について部品自動推薦システム A-SCORE
概略デモ
まとめ
22Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品自動推薦システム A-SCORE
クライアント:統合開発環境 Eclipse+ A-SCOREプラグインサーバ: Webサービス
赤色が本研究で実装した部分
統合開発環境Eclipse
検索クエリ生成部
部品提示部
部品検索部 索引作成部
部品データベース
索引
開発者ソースコード
検索クエリ
クライアント サーバ
事前に構築
カーソル位置
部品一覧
編集
部品の提示
エディタ
23Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ツールデモ
デモ内容ソースコードを編集中に自動的に部品が推薦される部品のソースコードを閲覧して再利用できるかどうかを判断する部品をプロジェクトにインポートして再利用する
ソースコード編集中の状況ファイルパスを表す Fileオブジェクトから拡張子を取り出したい
24Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめと今後の課題
広い範囲の再利用に対応した部品自動推薦手法を提案
開発者による編集を監視して自動的に検索識別子とコメントを元に再利用候補部品を提示
今後の課題手法の詳細の調整重みの付け方など
評価実験