ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

24
1 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka Univ ソソソソソソソソソソソソソソソ ソソソソソソソソソソソソソソソ ○ ソソソソ , ソソソ , ソソソソ ソソソ , ソソソソ ソソソソ ソソソソソソソソソソ SIGSE 162

Upload: raphael-park

Post on 31-Dec-2015

47 views

Category:

Documents


0 download

DESCRIPTION

ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法. ○島田隆次 , 市井誠 , 早瀬康裕 松下誠 , 井上克郎 大阪大学 大学院情報科学研究科. 発表概略. 再利用可能なソフトウェア部品を自動的に推薦する手法 開発者によるソースコードの編集を監視 自動的に情報を収集して検索条件を生成 フィールド名,メソッド名,クラス名などの識別子 コメント,ドキュメントコメント 再利用候補部品を検索し,開発者に提示 提案手法を実装した部品自動推薦システム を紹介. 発表の流れ. 背景 部品の再利用 部品検索システム 部品自動推薦 提案手法について - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

1Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ソースコードの編集内容を用いたソフトウェア部品の自動推薦手法

○島田隆次 , 市井誠 , 早瀬康裕松下誠 , 井上克郎

大阪大学 大学院情報科学研究科

SIGSE 162

Page 2: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

発表概略

再利用可能なソフトウェア部品を自動的に推薦する手法

開発者によるソースコードの編集を監視自動的に情報を収集して検索条件を生成

フィールド名,メソッド名,クラス名などの識別子コメント,ドキュメントコメント

再利用候補部品を検索し,開発者に提示

提案手法を実装した部品自動推薦システムを紹介

Page 3: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

発表の流れ

背景部品の再利用部品検索システム部品自動推薦

提案手法について部品自動推薦システム A-SCORE

概略デモ

まとめ

Page 4: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

発表の流れ

背景部品の再利用部品検索システム部品自動推薦

提案手法について部品自動推薦システム A-SCORE

概略デモ

まとめ

Page 5: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ソフトウェア部品の再利用

ソフトウェアの品質や生産性の向上のために,ソフトウェア部品の再利用が行われている

ソフトウェア部品(部品)モジュールやクラスなど,ソフトウェアの構成要素

再利用既存の部品の一部分または全体を別のシステムで利用すること

Page 6: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

部品検索システム

再利用する部品を探すのが困難部品の数が膨大

大量の部品を蓄積して管理・検索を行うシステム本研究室で開発している SPARS

Google による Google Code Search

etc…

キーワード検索などで部品を検索

Page 7: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

部品検索システムを用いた再利用

開発者

3.検索キーワードを入力

5.既存部品一覧の提示

開発環境

1. 部品を探そう2. 検索キーワードは***

6.部品を再利用

問題点 1:意識的に探そうとしなければならない問題点 2:適切なキーワードが必要

部品検索システム

4. 検索

処理

Page 8: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

部品自動推薦

特徴システムが適当なタイミング ( トリガ ) で自動的に検索を行うシステムが検索条件 ( クエリ ) を自動的に決定する

利点開発者が検索しようとしなくても検索が行われる開発者がキーワードを考える必要がない

Page 9: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

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. 検索キーワードは**

*だ

Page 10: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

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).

Page 11: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

対象とする再利用の範囲

CodeBroker は対象としている再利用の範囲が狭い引数と戻値の一致による絞込みを行っているメソッドの書き始めで得られる情報しか利用していない

形態 \ 場面メソッドの書き始め

メソッドの本体を書いている時

クラス定義を書いている時

・・・・・・

部品を修正なしでそのまま使う

部品に修正を加えて使う

部品の一部(コード片)のみを使う

この範囲全てをカバーしたい

CodeBrokerが対象とする

範囲

Page 12: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

発表の流れ

背景部品の再利用部品検索システム部品自動推薦

提案手法について部品自動推薦システム A-SCORE

概略デモ

まとめ

Page 13: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

提案手法の概要

目的広い範囲の再利用に対応した部品自動推薦手法

方針曖昧さを許容した検索を行うメソッド本体の情報も利用して検索を行う

⇒ 編集中のソースコードから特徴を抽出して利用ローカル変数,フィールド,メソッド,クラスなどの識別子に含まれる単語コメント,ドキュメントコメントに含まれる単語

Page 14: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

本手法の流れ

エディタ

編集の区切り検出

検索クエリ生成

検索

特徴抽出

索引作成

索引

特徴

編集内容

ソースコード

と編集位置

検索開始指示

推薦部品一覧

ソースコードの

編集

開発者

部品の推薦

部品のソースコー

推薦画面

検索クエリ

事前処理推薦処理

Page 15: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

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(); }}

文の区切りとなる記号が入力された時

コメントの編集後に別の行へ移動した時

Page 16: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

16Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

編集の区切りの検出 (2/2)

編集の区切りの種類区切り文字の入力

セミコロン中括弧「 {」「 }」コメントの終了を表す「 */」

カーソルの移動文の変更後に別の文へカーソルが移動したコメントの変更後にコメント外へカーソルが移動した

編集の区切りを検出したら検索を開始

Page 17: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

17Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

検索クエリの生成

ソースコードとカーソル位置を元に検索クエリを生成検索クエリの内容組<特徴,重み>の集合特徴:識別子やコメント類に含まれる単語

エディタ

特徴抽出ソースコー

検索クエリ生成

重み付けカーソル位

特徴とその位置情報

検索クエリ

Page 18: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

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

エディタで編集中のソースコード 抽出した特徴と位置情報

Page 19: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

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

エディタで編集中のソースコード

抽出した特徴と位置情報

Page 20: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

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

検索クエリ

Page 21: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

21Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

発表の流れ

背景部品の再利用部品検索システム部品自動推薦

提案手法について部品自動推薦システム A-SCORE

概略デモ

まとめ

Page 22: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

22Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

部品自動推薦システム A-SCORE

クライアント:統合開発環境 Eclipse+ A-SCOREプラグインサーバ: Webサービス

赤色が本研究で実装した部分

統合開発環境Eclipse

検索クエリ生成部

部品提示部

部品検索部 索引作成部

部品データベース

索引

開発者ソースコード

検索クエリ

クライアント サーバ

事前に構築

カーソル位置

部品一覧

編集

部品の提示

エディタ

Page 23: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

23Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ツールデモ

デモ内容ソースコードを編集中に自動的に部品が推薦される部品のソースコードを閲覧して再利用できるかどうかを判断する部品をプロジェクトにインポートして再利用する

ソースコード編集中の状況ファイルパスを表す Fileオブジェクトから拡張子を取り出したい

Page 24: ソースコードの編集内容を用いた ソフトウェア部品の自動推薦手法

24Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

まとめと今後の課題

広い範囲の再利用に対応した部品自動推薦手法を提案

開発者による編集を監視して自動的に検索識別子とコメントを元に再利用候補部品を提示

今後の課題手法の詳細の調整重みの付け方など

評価実験