dcNavi:デバッグ支援のための グラフベース推薦システム

Slides:



Advertisements
Similar presentations
Trac と Eclipse の 便利な機能. プロジェクト管理システム: Trac 0. はじめに バージョン管理システム: Subversion 統合開発環境: Eclipse ・ Wiki による情報 管理 ・進捗状況の管理 ・プログラムの作 成 ・リポジトリに データを集める.
Advertisements

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
ネットワークプログ ラミング論 平成27年 11 月 1 6日 森田 彦. 【基礎課題 6-1 】の解答 ① サーブレットを記述して保管するとコン パイルが自動的に行われる。 ② サーブレットの記述後、開発者がコンパ イル命令を実行しなければならない。 ③ プロジェクト名が Web アプリケーション.
Struts VS SAStruts ・ STRUTS と SAStruts を比較します。. Struts のメリット1 STRUTS はディファクトスタンダード。 ↓ プログラマがたくさんいる。 ライブラリ、ツールがたくさんある。 ビジネス案件が豊富。 書籍などの情報元が豊富。
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
IO - 入出力 小西 亨.
メソッド周辺の識別子と メソッド本体のAPI利用実績に基づいたAPI集合推薦手法
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
情報伝播によるオブジェクト指向プログラム理解支援の提案
JavaServlet&JSP入門 01K0018 中村太一.
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
第20章 Flyweight ~同じものを共有して無駄をなくす~
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
情報処理技法 (Javaプログラミング)2 第2回 前期の復習(2)
コーディングにおける 細粒度作業履歴を用いた 手戻り支援ツールの検討
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
類似するコーディングパターンの 利用状況調査ツールの提案
細かい粒度で コードの再利用を可能とする メソッド内メソッドと その効率の良い実装方法の提案
ソードコードの編集に基づいた コードクローンの分類とその分析システム
例外処理 と ファイル入出力 情報システム学科 平塚 聖敏.
組込みシステムの外部環境分析のためのUMLプロファイル
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗号技術 ~JAVAプログラム③~ (7週目)
動的スライスを用いた バグ修正前後の実行系列の比較
リファクタリング中に生じる コンパイルエラーの自動解消手法
デバッグ支援のための グラフベース推薦システム
デバッギングのための 関心事指向推薦システム
EclipseでWekaのAPIを呼び出す
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
暗号技術 ~JAVAプログラム①~ (5週目)
Javaプログラムの変更を支援する 影響波及解析システム
0.2 プロジェクトの準備 DXライブラリを使うための準備.
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
ソフトウェア制作論 平成30年11月21日.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
オープンソースリポジトリにおける バグ修正履歴の再利用性評価
dcNavi: デバッグ方法をアドバイス する関心事指向リポジトリナビゲータ
既存ソフトウェア中の 頻出コード片を用いた コード補完手法の提案
プログラムの織り込み関係を可視化するアウトラインビューの提案と実装
コーディングパターンの あいまい検索の提案と実装
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
仮想マシンと物理マシンを一元管理するための仮想AMT
C#プログラミング実習 第3回.
設計情報の再利用を目的とした UML図の自動推薦ツール
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
コレクション・フレームワーク J2EE I (データベース論) 第6回 /
コレクション・フレームワーク データベース論 第7回.
暗号技術 ~JAVAプログラム②~ (6週目)
ソースコードの差分を用いた関数呼び出し パターンの抽出手法の提案と実装
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
コードクローン解析に基づく デザインパターン適用候補の検出手法
知識ベースの試作計画 ●●●研究所 ●●●技術部 稲本□□ 1997年1月.
回帰テストにおける実行系列の差分の効率的な検出手法
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラム理解のための 付加注釈 DocumentTag の提案
プログラム依存グラフを用いた ソースコードのパターン違反検出法
Presentation transcript:

dcNavi:デバッグ支援のための グラフベース推薦システム 九州工業大学 塩塚大 九州大学 鵜林尚靖

概要 DCG また、プロジェクトの初期段階でデータが十分に無い場合を想定し、既存のリポジトリを活用した方法を提案します。 推薦 生成 関心事 見たことない 例外に直面! 例)同じ例外に関連した修正 例)APIの誤りやすい例 public class Property { public String readFile (String pathname) throws IOException { File file = new File(pathname); String val = null; FileReader fileReader = new FileReader(file) ; return val; val = br.readLine(); BufferedReader br = new BufferedReader(fileReader); } } public class Property { public String readFile (String pathname) throws IOException { String val = null; FileReader fileReader = new FileReader(file) ; File file = new File(pathname); BufferedReader br = new BufferedReader(fileReader); return val; val = br.readLine(); } } public class Property { public String readFile (String pathname) throws IOException { File file = new File(pathname); String val = null; FileReader fileReader = new FileReader(file) ; return val; val = br.readLine(); BufferedReader br = new BufferedReader(fileReader); } } プロジェクトXXXの リポジトリ プロジェクトXXXの リポジトリ APIの 使い方が間違ってる?! プロジェクトXXXの リポジトリ 推薦 生成 DCG 関心事 既存のリポジトリを活用! 他プロジェクトを活用! Debug Concern Graph 実行 生成  研究の概要を説明します。 デバッグをする際にはいろいろな問題に直面します。 例えば「見たことのない例外に直面して、修正方法が分からなかったり」あるいは「APIの正しい使い方が分からない」などです。 ここではそういった、頻繁に直面するような問題を関心事と呼んでいます。  本研究では、デバッグの際の知識・ノウハウを再利用することで、こういったよく起こる問題に応じた情報推薦をおこないます。  推薦を実現するために、テスト結果、プログラム要素、修正パターンを関連付けたデバッグ関心事グラフ(DCG)を提案します。  また、プロジェクトの初期段階でデータが十分に無い場合を想定し、既存のリポジトリを活用した方法を提案します。 TDD(テスト駆動開発) デバッグのノウハウの収集  ・テスト結果の取得  ・関連したプログラム要素の取得  ・修正パターンの取得

DCG デバッグ時のテスト結果、プログラム要素(クラス、メソッド、フィールド)、修正パターンの3情報を収集 テスト成功 ⇒ デバッグ終了 readFile のデバッグ :クラス :テスト結果 :メソッド :修正パターン diff-1 diff-2 バグ修正パターン(全27種) MC-DAP: メソッド呼出しのパラメータの変更 SQ-AROB: メソッド呼出しの追加 MC-DM:同一オブジェクトに対する呼び出すメソッドの変更 BufferedReader File Property PropertyTest Property File PropertyTest FileReader 修正パターン*: メソッド呼出の追加 exist readFile testReadFileFileNotExist testReadFile readLine DCGについて説明します。 DCGでは、テスト失敗をデバッグの開始ととらえ、その時点で関連していたクラス、メソッド、フィールドなどのプログラム要素を収集し、そして発生したテスト結果を保存します。 そして、なんらかの修正をした後、テストを再実行し成功したときを、デバッグの終了と判断します。 テスト失敗時点とテスト成功時点のファイルの編集の差分から、どういった修正をおこなったか、つまり修正パターンをもとめます。 修正パターンは、Toward an understanding of bug fix patternsという論文で提案されたものを使っています。 全部で27種類あり、代表的なものに、メソッド呼出しのパラメータの変更、メソッド呼出しの追加、呼び出すメソッドの変更などがあります。 とくにこの3パターンが、プログラマが間違えやすいと知られているので、DCGでもこの3パターンの誤りを支援の対象とします。 情報推薦の際にはこの修正パターンを軸におこないます。 DCGを活用することで、ある例外が発生した際にどのような修正をしたか、 あるAPIを利用する際に、どういった誤りをおかしやすいか、といったことの取得が容易となります。 readFile テスト成功 assertEquals testReadFileFileNotExist テスト成功 ⇒ デバッグ終了 テスト失敗 例外:FileNotFound *Pan, K., et al.: Toward an understanding of bug fix patterns. Empirical Software Engineering, pp.286-315, 2009. テスト成功 テスト失敗 ⇒ デバッグ開始

実験 準備.リポジトリからのDCG生成 実験.推薦量/推薦時間/推薦の質の確認 Eclipseプラグインで、Mylynに関連した9つのオープンソース 実験.推薦量/推薦時間/推薦の質の確認 上記で生成したDCGを利用 [実施環境] CPU: Atom N280(1.66GHz), RAM:1GB, OS:Windows XP 実験をおこないました。 DCG生成時間の確認を目的とし、EclipseプラグインでMylynに関連した9つのオープンソースで実施しました。 これがオープンソースの一覧です。 たとえば、下から4番目プロジェクトは、Eclipse上でMylynとプロジェクト管理ツールのRedmineを連携して使うためのプラグインです。 一番下のプロジェクトは、subversionをEclipseから使うためのプラグインがあります。 実験では、生成したDCGを利用して推薦量、推薦時間、および推薦の質を確認しました。 以上でポスターの概要紹介を終わります。興味が御有りの方はポスター展示の際におこしください。