150 likes | 308 Views
Y. Tools. 立命館大学 丸山研 2013 年 7 月 9 日. ICSE 2013 勉強会 (2013 年 7 月 9 日 ). 担当者 : 大森 隆行 (takayuki@fse.cs.ritsumei.ac.jp). Nicholas Sawadsky , Gail C. Murphy, Rahul Jiresal , "Reverb : recommending code-related web pages," ICSE '13. 概要. ソフトウェア開発において Web はよく利用される. しかしながら,開発環境と Web ブラウザは別々.
E N D
Y. Tools 立命館大学丸山研 2013年7月9日
ICSE 2013勉強会 (2013年7月9日) 担当者: 大森 隆行 (takayuki@fse.cs.ritsumei.ac.jp) Nicholas Sawadsky, Gail C. Murphy, Rahul Jiresal, "Reverb: recommending code-related web pages," ICSE '13
概要 ソフトウェア開発においてWebはよく利用される. しかしながら,開発環境とWebブラウザは別々. 開発者が頻繁に行っている,Webページの再訪問に着目. IDE上で,現在のコードに関係するWebページ(以前見たことがあるもの)をプロアクティブに推薦. コードエディタ 貢献 • 開発者の再訪問に関する実証的データを提供 • Reverb:コードに関係するWebページの発見支援ツール • フィールドスタディ local code context (参照クラス,メソッド等)はWebページ推薦に有用 クエリ(自動抽出) 推薦Webページ Fig.2 Reverb Nicholas Sawadsky, Gail C. Murphy, Rahul Jiresal, "Reverb: recommending code-related web pages," ICSE '13
(1) 開発者の再訪問に関する実証的データ • 実験方法 • Firefox, Chrome の閲覧履歴を使用 • リダイレクトやGoogle検索は無視 / <script>要素を除去 • コードに関係するページかどうか判断 • キャメルケースか/アンダースコアを含むか • AND 引数ありメソッド宣言・呼出がある/"()"を含む • 利用データ • 被験者11名 • 8名が院生,3名がプロの開発者 / 7名がChromeを使用,4名がFirefoxを使用 • 延べ906日分の閲覧履歴を使用 • 結果 • 再訪問率=(訪問ページ数-異なる訪問ページの数)/訪問ページ数 * 100% • 平均訪問ページ数=6048, コードに関係するページ訪問数=250 • 全体の再訪問率=27.3%(コードに関係するページでは 13.7%) • 15分以内の再訪問は無視 • 再訪問のうち,ブックマーク利用は3.7% (リンクとアドレスバー直打ちが大半) デリミタ文字を使用する方法,LSIに基づく方法は採用せず Fig.1 Nicholas Sawadsky, Gail C. Murphy, Rahul Jiresal, "Reverb: recommending code-related web pages," ICSE '13
(2) Reverbの実装 • (A) Webページの索引付け(Indexing) • Luceneを使用 • (B) エディタ作業のモニタリング,クエリの生成 • 開発者のクリック → 選択箇所に関するクエリを生成 • (C) 結果のランキング,グルーピング • Luceneのランキング(若干補正),訪問の頻度・経過時間からスコアを生成,Top10を表示 (3) Reverbに関するフィールドスタディ • 実験 • 6時間のJavaアプリケーション開発 • 9人の被験者 • 結果 • 推薦したページがクリックされたか: • Reverbビューは開かれていても,あまりクリックされない • Usefulかどうか5段階評価: • 2.5~3.5 • 推薦の精度 ブラウザでのアクセス(提示したものをクリックしなかった場合)を含む • 平均42% (改善後51%) 「ページタイトルだけ表示されても分からない」 ツールに慣れていない Nicholas Sawadsky, Gail C. Murphy, Rahul Jiresal, "Reverb: recommending code-related web pages," ICSE '13
担当者: 木津 栄二郎 (kitsu@fse.cs.ritsumei.ac.jp) Dynamic Injection of Sketching Features into GEF Based Diagram Editors 本手法の概要: 本ツールをインストールすると, 既存のUML図エディタなどで 手書きで図が生成可能になる Andreas Scharf, Till Amma 他のフレームワークとの比較 本論文の貢献点: 手法の提案, ツールの実装と評価, 拡張プラグインの 開発環境の作成支援
Scribbleの概要 パレットからオブジェクトを選ぶ(通常操作) Scribble 対象エディタ ユーザー オブジェクト 生成イベント 手書き入力 (ストローク) オブジェクト候補 決定オブジェクト 評価器 決定器 変換器 決定戦略A 分類器A 認識器A
評価実験と課題 3つのツールでScribbleが 実用できることを確認 似ているオブジェクトは ストロークを工夫して 呼び分けることができる “I” Interface “D” Data type ・エッジの識別・手書き文字認識・ラベルへの書き込み ・オンラインで学習データの共有・手書き情報の保持 ・マルチタッチのジェスチャ・他環境へのサポート 未実装 ・手書き入力による操作はユーザーにとって自然か ・スマホなどの装置でユーザーの使用感が高まるか 未評価
担当者: 木津 栄二郎 (kitsu@fse.cs.ritsumei.ac.jp) Discovering Essential Code Elements in Informal Documentation Peter C. Rigby ,Martin P. Robillard 非形式な自然言語の文章からコード要素を見つける ・非形式的なドキュメントが対象 ・「closed-world」に依存しない ・重要なコード要素を判別 新規性 ・非形式文章のコード要素抽出手法 ・重要なコード要素の判別手法 ・重要なコード要素の判別指標の分析 貢献点
非形式文章のコード要素抽出手法 おおまかなコード要素抽出手順 1.Island Parser を使って 全てのドキュメントから コード要素のリストを作る コード片と文章が 混ざっていても 要素を抽出可能 2.全ドキュメントを再度 パースして,ドキュメントと コード要素を対応付ける コード要素の コンテキストなど を使い対応付け 非形式文章で前提知識を与えない にもかかわらず,パフォーマンスを あまり落とさずに抽出できている
重要なコード要素の判別手法と指標 判別手法 決定木アルゴリズムで分類指標を組み合わせる 判別に有効な分類指標の調査 :抽出場所(コード片の中 or 自然言語文章の中) :要素の種類(クラス・メソッド・アノテーションなど) :TF−IDF 有効な分類指標を組み合わせ,3プロジェクトで評価実験 精度が0.65〜0.74,再現率が0.30〜0.65となった
Y4 ICSE 2013勉強会 (2013年7月9日) 担当者: 丸山勝久(maru@cs.ritsumei.ac.jp) 研究目的と性能向上が明確 - ★★★★ SEにおけるTR技法の 適用例の提示 - ★★ 実験結果に関する考察が不足 (性能向上の根拠に不明な部分あり) - 実際の開発に役立つレベルなのかどうかが疑問(開発や修正時間などが真に減少するのかどうか) -
Text Retrieval(TR)の活用 背景 テキスト検索(TR)の適用はSEにおいても一般的になっている クエリ requirements analysis code retrieval and reuse traceability link recovery 検索結果 defect prediction concept/feature/concern location coupling and cohesion measurement impact analysis bug triage 検索の性能はクエリおよびクエリとテキストとの関係に大きく依存➡良いクエリを与えることが重要だけど… refactoring and restructuring reverse engineering クエリの再構築(reformation) • クエリの持つ特性は? • どのクエリに対しても同じ再構築戦略で良いのか? 動機
Refoqus クエリの特性により クエリの再構築の戦略を変更 特徴 • 機械学習に基づく再構築クエリの推薦システム • 事前訓練による(28+1)個の属性値を利用して,適切なクエリの再構築戦略を選択 クエリの再構築戦略 クエリの特性 • 検索しないで決定 • Specificity • Similarity • Coherency • Term relatedness • 擬似フィードバックによるクエリ拡張 • Dice expansion • Rocchio expansion • Robertson Selection Value(RSV) 21個 3個 28個の特性 ➡ 1個の戦略 • 検索して決定 • Robustness • Score distribution 7個 出現頻度によるクエリ削減
評価実験の結果 • Concept locationを対象としたシミュレーション • バグレポート(94個のバグ)から,282個のクエリを作成 • バグのタイトル,内容,人手(Ph.D.学生による) • 実際の修正箇所(メソッドやクラス)を正解 • クエリ拡張には検索結果のトップ5の文書を利用 RQ2:Refoqusによるクエリの再構築は有効か? RQ1:どちらの訓練が 有効か? RQ3: 単独戦略より 良いか? (Table III, IV, Vより作成)