17
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka Univ ソソソソソソソソソソソソソソソソソ ソソソソソソソソソソソソソ ○ ソソソソ , ソソソ , ソソソソ , ソソソ , ソソソソ ソソソソ ソソソソソソソソソソ

ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

Embed Size (px)

DESCRIPTION

ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索. ○島田隆次 , 市井誠 , 早瀬康裕 , 松下誠 , 井上克郎 大阪大学 大学院情報科学研究科. ソフトウェア部品の再利用. ソフトウェアの品質や生産性の向上のために, ソフトウェア部品 の 再利用 が行われている ソフトウェア部品 ( 部品 ) モジュールやクラスなど,ソフトウェアの構成要素 再利用 既存の部品の一部分または全体を別のシステムで利用すること. 部品検索システム. 大量の部品群から目的のものを探すのは大変 大量の部品を蓄積して管理・検索を行うシステム - PowerPoint PPT Presentation

Citation preview

Page 1: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

ソースコードの編集内容を入力としたソフトウェア部品の自動検索

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

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

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

部品検索システム大量の部品群から目的のものを探すのは大変

大量の部品を蓄積して管理・検索を行うシステム

我々の研究グループで開発している SPARS など開発者はキーワード検索などで部品を検索する

Page 4: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

部品検索システムを利用する際の問題点

必要な部品を見つけることが難しい部品についての知識が必要になる適切な検索キーワードが思いつかない

検索しないと部品を見つけることができない

開発者が存在を期待していない部品は検索されない

Page 5: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

Page 6: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

従来研究 : CodeBroker

メソッドを書き始めたときに再利用可能なメソッドを自動検索するシステム利用する情報

メソッドのドキュメントコメントメソッドのシグネチャ

問題点自動検索されることを意識してコーディングする必要がある利用できる場面が限られる

Page 7: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

本研究の概要目的

先の問題を改善した部品自動検索システムの開発コーディングスタイルに依存しないより多くの場面で利用できる

方針ソースコード編集中にソースコードから特徴的な情報 ( 特徴情報 ) を抽出して自動検索を行う

ドキュメントコメント通常のコメント利用しているメソッド出現する識別子とその型

Page 8: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

大きな整数を扱うクラスが欲しいけど誰も作ってないだろうから自作しよう

利用シナリオ1. クラスの一部を入力2. システムが類似部品を検索・提示3. 必要ならプロジェクトに部品を取り込んで置き換

1 BigInteger arbitary-precision integer開発者

開発環境

クラスの一部を入力

class LargeInteger { private int[] data;   public LargeInteger add(LargeInteger i) {}   public LargeInteger sub(LargeInteger i) {}

類似部品の提示

Page 9: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

検索手法1. 編集を監視し,セミコロン入力等の編集の区切り

を検出2. 編集中のソースコードから特徴情報を抽出3. 似た特徴情報を含む部品を LSI で検索

入力:編集中のソースコードに含まれる特徴情報とその重み出力:似た特徴情報を含む部品•LargeInteger

•add•sub

特徴情報 •SubOp•eval•getChild

•BigInteger•add•sub

•AddOp•eval•getChild

蓄積された部品群( オープンソースソフトウェア集合な

ど )

編集中のソースコー

Page 10: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

システムの構成 クライアント・サーバ型

クライアント編集の監視,特徴情報の抽出,検索結果の提示

サーバ部品データベースに対する検索

統合開発環境Eclipse

検索クエリ生成部

部品提示部

部品検索部 索引作成部

部品データベース

索引

開発者ソースコード

検索クエリ

クライアント サーバ

事前に構築

編集位置

部品一覧

編集

部品の提示

エディタ

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

Page 11: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

システムの動作1. 事前に部品データベースから索引を作成2. 編集の区切りを検出して検索クエリを生成3. 索引を用いて部品検索4. 得られた部品を開発者に提示

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

統合開発環境Eclipse

検索クエリ生成部

部品提示部

部品検索部 索引作成部

部品データベース

索引

開発者ソースコード

検索クエリ

クライアント サーバ

事前に構築

編集位置

部品一覧

編集

部品の提示

エディタ

Page 12: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

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

利用シナリオでの動作例1. 開発者がソースコードを入力2. 編集の区切りを検出して特徴情報を抽出,検索クエリとし

て送信3. 索引を用いて部品検索4. 得られた部品を開発者に提示

統合開発環境Eclipse

検索クエリ生成部

部品提示部

部品検索部 索引作成部

部品データベース

索引

開発者ソースコード

検索クエリ

クライアント サーバ

事前に構築

編集位置

部品一覧

編集

部品の提示

エディタ

class LargeInteger { private int[] data;   public LargeInteger add(LargeInteger i) {}   public LargeInteger sub(LargeInteger i) {}java.math.BigInteger

::

(LargeInteger, 0.5), (int[] data, 0.6),

(add, 0.8), (sub, 0.9)

重み特徴情報

カーソル

0.5

0.6

0.8

0.9

重み

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

スクリーンショット ( インポート )

右クリックして「インポート」を選ぶと…

部品がプロジェクトにインポートされる

Page 16: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

実装状況部品検索部,部品提示部

実装済検索クエリ生成部,索引作成部

ドキュメントコメントを利用する部分のみ実装済他の特徴情報を利用する部分は現在実装中

Page 17: ソースコードの編集内容を入力と した ソフトウェア 部品の自動検索

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

まとめと今後の課題ソフトウェア部品の自動検索システムを開発

コーディングスタイルに依存しない多くの場面で利用できる

メソッドの中身を書いているときクラスの定義を書いているとき

今後の課題未実装部分の実装大量の部品群を対象とした適用実験

検索時間 ( 応答性 )

検索精度