眞鍋 雄貴,石尾 隆 大阪大学 ※論文リストでの表記順序と, 発表順序は異なりますのでご注意ください

Slides:



Advertisements
Similar presentations
紹介担当: 石尾 隆(大阪大学) Q11.  Feature Model によって定義される「プロダクトの集合」 (プロダクトライン)の振舞いを検証する手法の拡張 ◦ 通常の振舞い検証: たとえば Promela を使って,1プロダクトの 振舞いを表現したオートマトンの取りうる状態遷移を調べる ◦
Advertisements

シーケンス図の生成のための実行履歴圧縮手法
Heap Cloning: Enabling Dynamic Symbolic Execution of Java Programs
第6章 トランザクション管理 6.1 トランザクションの概念 6.2 同時実行制御 6.3 障害回復.
プログラムの動作を理解するための技術として
Observable modified Condition/Decision coverage
F11: Analysis III (このセッションは論文2本です)
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
プログラム静的解析手法の効率化と 解析フレームワークの構築に関する研究
静的情報と動的情報を用いた プログラムスライス計算法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
ベイジアンネット混合モデルによる 強化学習エージェントの方策改善
決定木とランダムフォレスト 和田 俊和.
動的スライスを用いた バグ修正前後の実行系列の比較
5 テスト技術 5.1 テストとは LISのテスト 故障診断 fault diagnosis 故障解析 fault analysis
動的依存グラフの3-gramを用いた 実行トレースの比較手法
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
シーケンス図を用いて実行履歴を可視化するデバッグ環境の試作
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
Online Decoding of Markov Models under Latency Constraints
T2統計量・Q統計量 明治大学 理工学部 応用化学科 データ化学工学研究室 金子 弘昌.
雑音環境下における 非負値行列因子分解を用いた声質変換
限られた保存領域を使用する Javaプログラムの実行トレース記録手法の 提案と評価
社会シミュレーションのための モデル作成環境
動的データ依存関係解析を用いた Javaプログラムスライス手法
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローンに対する一貫性のない変更に起因する欠陥の検出
GPSを使わないBebop Droneの 自動飛行
Javaバイトコードの 動的依存解析情報を用いた スライシングシステムの実現
Data Clustering: A Review
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
プログラミングコンテストシステムへの 提出履歴データとその分析
プログラム理解におけるThin sliceの 統計的調査による有用性評価
バイトコードを単位とするJavaスライスシステムの試作
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
コーディングパターンの あいまい検索の提案と実装
第3章 線形回帰モデル 修士1年 山田 孝太郎.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
ソフトウェアプロダクト集合に対する 派生関係木の構築
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
静的情報と動的情報を用いた Javaプログラムスライス計算法
HMM音声合成における 変分ベイズ法に基づく線形回帰
プログラムスライスを用いた凝集度メトリクスに基づく 類似メソッド集約候補の順位付け手法
依存関係の局所性を利用した プログラム依存グラフの 効率的な構築法
保守請負時を対象とした 労力見積のためのメトリクスの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
アスペクト指向プログラミングの 動的プログラムスライスへの応用
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
動的スライスを用いたバグ修正前後の実行系列の差分検出手法の提案
回帰テストにおける実行系列の差分の効率的な検出手法
メソッド抽出リファクタリングが 行われるメソッドの特徴調査
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
市松模様を使用した カメラキャリブレーション
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
プログラム理解のための 付加注釈 DocumentTag の提案
FSE/ASE勉強会 A10:Software Maintenance II
プログラム依存グラフを用いた ソースコードのパターン違反検出法
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

眞鍋 雄貴,石尾 隆 大阪大学 ※論文リストでの表記順序と, 発表順序は異なりますのでご注意ください F05: Debugging 眞鍋 雄貴,石尾 隆 大阪大学 ※論文リストでの表記順序と, 発表順序は異なりますのでご注意ください

Partial Replay of Long-Running Applications 論文著者:Alvin Cheung, Armando Soloar-Lezama, and Samuel Madden (MIT CSAIL) 担当者:眞鍋雄貴(大阪大学)

背景・目的 プログラム実行の再現 プログラムを実行する時にログを記録し,そのログを用いてプログラムの実行を再現する バグを起こしている正確な位置を調べるのに用いる 問題点 通常の実行時に大きなオーバーヘッドがかかる 非常に大きなログを生成してしまう Symbolic executionを用いてオーバーヘッドを削減する手法 ログをとる部分を減らす 足りない部分をSymbolic executionで実行することで補足し,オーバーヘッドを減らす 既存の手法は実行の最初から再現するため,現状のSymbolic executionエンジンでは何か月も動くようなプログラムの実行を再現できない ⇒実行の途中から部分的にリプレイできるようにする

主な貢献 プログラムの実行の途中から再現するプログラム実行の再現手法を提案 提案手法を用いたデバッガ(bbr)を実装した. 特徴 チェックポイントを設定 ある特定処理に設定したり,パラメータによる設定も行える ログは最後のチェックポイント到達時点から,プログラムが停止するまでの部分だけ残す チェックポイントに到達したとき,その時点の状態をスナップショットとして取る ログとスナップショットに基づき.Symbolic executionを用いて,チェックポイントから実行を再現する チェックポイント到達 プログラム停止 C C 時刻 通常の実行 ログを残す部分 スナップショット (チェックポイントを取れること,ログを残すのはチェックポイントから欠陥起こして止まるまでだけ残す,Symbolic executionで足りない部分を埋める) Symbolic execution による再現

記録するもの ログとして 条件分岐の値 分岐をどう進んだかが決定的に定まる アクセスされた配列のインデックス スナップショットとして その時点でのスタック 開いているファイルの状態

評価 目的:オーバーヘッドとログの圧縮効果の測定 手法:6個のアプリケーションの実行を対象に,提案手法と他のログの取り方との間で実行時間とログサイズを比較する. 結果 オーバーヘッドは平均10%(1~33%)で他より小さい ログも他の手法より小さい その他の実験結果から,提案手法によりデバッグできることも示されている(4.2節) 図はCheung et.al., “Partial Replay of Long-Running Applications” p141より

Fault Localization for Data-Centric Programs 論文著者:Diptikalyan Saha, Mangala Gowri Nanda, Pangaj Dhoola, V. Krishna Nandivada, Vibha Shinha(IBM Research-India) , Satish Chandra(IBM T. J. Watson Research Ctr) 担当者:眞鍋雄貴(大阪大学)

背景・目的 目的:ABAPで記述されたデータ中心プログラムに対するプログラムエラーの高速な解決の支援 ABAP:SAP-ERPで使用される手続型+宣言型言語 データ中心プログラム:データベースなどにある大規模なデータ集合を処理する プログラムスライスを用いた 欠陥の局所化 ある変数について正常な値と,異常な値をとる場合,それぞれの場合におけるスライスの差分に欠陥がある可能性が高い 本研究では動的スライスを用いる 図はSaha et.al., “Fault Localization for Data-Centric Programs” pp.157より

データ中心プログラム における問題 従来のfield-row sensitiveな動的スライスではデータベースの要素の追加削除が起こったとき,スライス基準に影響を与えうるかわからない キーの値によっては影響が出ないことがある ⇒キーとその値を考慮する データ中心プログラムでは,従来の実行系列に基づく差分検出では差が出ない場合がある ⇒実行時の振る舞いの差異を考慮する 図はSaha et.al., “Fault Localization for Data-Centric Programs” pp.158より

主な貢献 Key based Slicing 従来のfield-row sensitiveな動的スライスアルゴリズムに,key-value pairの集合を入力とする,データベースへの変更がkey-value pairと関係があるかを調べる処理が追加された動的スライスアルゴリズム Semantic Difference Corner-case Differences: 実行された各文について,特殊な状況が起こっているかどうか 特殊な状況は各文の種類に対して設定されている Mutation Differences: 正常系のスライスに影響を与えないよう,異常系のスライスが正常系のスライスと同じふるまいになるようにするにソースコードを変異させたとき,その変異部分 提案手法により,出力における行の欠落もわかる

評価 目的:Key based slicing, Semantic diff, 出力における行の欠落の評価 手法:提案手法をIBM Global Bussiness Servicesに組み込んだものを用い,バグのある13のABAPサンプルについて欠陥箇所を特定する. 結果:13プログラム中12のプログラムで欠陥箇所を特定できた.また,そのうち9プログラムのバグは従来の手法では見つからない. 図はSaha et.al., “Fault Localization for Data-Centric Programs” p165より

論文著者:George K. Baah, Andy Podgurski, Mary Jean Harrold 担当者:石尾 隆(大阪大学) Mitigating the Confounding Effects of Program Dependencies for Effective Fault Localization 論文著者:George K. Baah, Andy Podgurski, Mary Jean Harrold 担当者:石尾 隆(大阪大学)

論文の概要 統計的な Fault Localization 手法 既存研究から続く考え方: 失敗テストケースで実行された文のほうが, 成功テストケースで実行された文よりも疑わしい プログラム文の疑わしさを求める方法が研究のポイント 提案手法: 成功・失敗のテストケースが「同じ条件で,その文を実行した」と言えるようにテストケースを選択 文の実行に影響を与える文のカバレッジを比較 著者らの従来手法では動的制御依存を考慮していたが,今回は動的データ依存も加えた

アプローチの基本モデル 論文 Figure 1 テストケース5個 基本モデル: Equation (1) 文 s がテスト失敗に テスト対象 関与している度合い τ = E[Y1] – E[Y0] Y1: sを実行した文がテストに 失敗するとき1,成功するとき 0 となる確率変数. Y0: sを実行しなかった文が テストに失敗するとき1, そうでないとき0 . E[Y1] = Y1の期待値. すなわち,sを実行した文が テストに失敗する確率. テスト対象 プログラム 各文のカバレッジ. 実行したら1. テストの成否. 失敗したら1.

Confounding Effect の問題 1つの条件分岐が複数の文の実行を制御する           単純なカバレッジでは違いを区別できない 成功と失敗をそれぞれ公平にサンプリングしていない  統計的モデルの適用に相応しくない 同一のIF文(3行目)に 制御されるすべての文で τ の値が同じになってしまう

本研究の提案 文 s の評価値 τ を決める「対等な」 テストケースの選択法 Dynamic PDG から, s への依存辺を持つ文の集合 D を取り出す 文を頂点とし,動的な依存関係を辺とするPDG (SDGではない) 各テストケースを,D のカバレッジを表現するベクトルに変換する テストケースが, D の各文を実行していたら 1, そうでなければ 0 の値として,|D| 個の要素の数値ベクトルとする. ベクトル間のマハラノビス距離を求め,成功テストケースと失敗テストケースの組を,距離が近いものから,できるだけ多く取り出す. 「文 s が実行された状況ができるだけ近い」成功テストケースと失敗テストケースの組を選んでいくことになる マハラノビス距離で,相関を考慮

既存手法との組み合わせ テストケースの組が取り出せない場合は,著者らの従来手法で推定 ある文 s を実行したテストケースがすべて成功である場合や,類似度が低い場合にこちらの処理を使う Equation (6): 「文 s が実行されたかどうか」と「文 s に動的制御依存を与える文が実行されたかどうか」の2つの値から,テストケースの失敗を表現する線形回帰モデル データ依存が入っていないことには注意

評価実験 プログラム文を,文の評価値 τ でソートしたとき,バグ修正の対象となった文が,何番目に来るかで評価 τ の値に従って上位から順に調べた場合の開発者の労力を評価 評価値が同じ文は,すべて同時に調査対象となると考える 既存手法 Tarantula, Ochiai との比較実験で改善を示した 50%程度のバグには,既存手法よりも良い結果を出す.改善幅は0.05%~60% 20%程度のバグには,既存手法よりも悪い結果を出す

おわり