スライド 1

ソースコードの編集状況に応じた
ソフトウェア部品の自動推薦システム
井上研究室
島田 隆次
修士論文発表会
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
1
発表概略
背景
ソフトウェア部品の再利用⇒開発効率や品質の向上
提案手法・システム
再利用できる部品を開発中に自動的に推薦する手法
部品自動推薦システム A-SCORE を作成
評価実験
被験者(学生)にプログラミング課題を行ってもらった
A-SCOREが再利用を促進させることが示された
2
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソフトウェア部品の再利用
ソフトウェアの品質や生産性の向上のために,
ソフトウェア部品の再利用が行われている
ソフトウェア部品(部品)
モジュールやクラスなど,ソフトウェアの構成要素
再利用
既存の部品を別のシステムで利用すること
再利用を支援する手法が広く研究されている
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
既存研究 – CodeBroker
検索手法
メソッド定義を書き始めた時に検索開始
1. ドキュメントコメントの類似したメソッドを検索
2. 引数や戻値の型が一致するメソッドだけを抽出
形態
\
場面
部品を修正なしで
そのまま使う
部品に修正を加えて使う
メソッドの書き始め
メソッドの本体
を書いている時
クラス定義を
書いている時
・・・・
CodeBrokerが
対象とする範囲
この範囲全てをカバーしたい
部品の一部(コード片)
のみを使う
* Ye, Y. and Fischer, G.: Reuse-Conducive Development Environments,
Automated Software Engineering, Vol. 12, No. 2, pp. 199–235 (2005).
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
提案手法の概要
目的
広い範囲の再利用に対応した部品自動推薦手法
方針
メソッド本体の情報も利用して検索を行う
曖昧さを許容した検索を行う
⇒編集中のソースコードから特徴を抽出して利用
ローカル変数,メソッド,クラスなどの識別子に含まれる単語
コメント,ドキュメントコメントに含まれる単語
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
編集の区切りの検出
編集の区切り
文やコメントを入力し終わったタイミング
import java.awt.event.*;
// Select all text in editor
class SelectAllAction implements
ActionListener {
区切り記号が
入力された時など
●
●
●
エディタ上でのソースコードの編集を監視
編集の区切りを検出したら検索開始
8
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
検索クエリの生成
ソースコードとカーソル位置を元に検索クエリを生成
検索クエリの内容:組<特徴,重み>の集合
特徴:識別子やコメントに含まれる単語
重み:カーソル位置に近い特徴ほど大きな値
3: class SelectAllAction {
4:
5: public void action() {
6:
int length;
3行目: select, all, action
5行目: action
6行目: length
●
●
●
抽出した特徴と位置情報
●
●
●
カーソル位置:3行目
select
all
action
length
重み1.0
重み1.0
重み1.8
重み0.6
●
●
●
エディタで編集中のソースコード
カーソル位置情報
検索クエリ
9
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
部品自動推薦システム A-SCORE
エディタ
インポート
ソ
ー
ス
表
示
推薦画面
10
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
評価実験
被験者(学生4人)にプログラミング課題を行ってもらった
課題
課題α:CSVファイル読込処理の実装
課題β:ファイルコピー処理の実装
開発効率と品質について以下の3点を評価
部品の再利用数 ⇒ ○増加
不具合の数
⇒ ○減少
作業時間
⇒ ×増加
結果
11
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験結果:再利用した部品数
(値は再利用部品数の合計)
A-SCOREあり
A-SCOREなし
課題α
2
0
課題β
4
0
A-SCOREを使用しなかった場合は再利用が行われていない
何故,再利用しなかったのか?
「目的の機能を持った部品があるとは思わなかった」
「探したけど使えそうな部品が見つからなかった」
A-SCOREを使用した場合は再利用が行われている
CodeBrokerでは対応できない種類の再利用も行われていた
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