ソースコードの編集内容を入力とした ソフトウェア部品の自動検索 ○島田隆次, 市井誠, 早瀬康裕, 松下誠, 井上克郎 大阪大学 大学院情報科学研究科 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
© Copyright 2024 ExpyDoc