ASE 2011 Software Model Checking

Slides:



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

OWL-Sを用いたWebアプリケーションの検査と生成
メタモデル記述を用いた成果物間の依存関係追跡手法
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
シーケンス図の生成のための実行履歴圧縮手法
ファイルキャッシュを考慮したディスク監視のオフロード
Chapter11-4(前半) 加藤健.
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
SSR 論文調査 Safety and Cyber-Physical Systems
報告 (2006/9/6) 高橋 慧.
Heap Cloning: Enabling Dynamic Symbolic Execution of Java Programs
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
Systems and Software Verification 10. Fairness Properties
画像処理ボード上での 高速テンプレートマッチングの 実装と検証
ネストした仮想化を用いた VMの安全な帯域外リモート管理
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
SAP & SQL Server テクニカルアーキテクチャ概要 マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
モデル検査(1) 並行システムとモデル検査 1.並行システム 2.モデル検査 3.モデル検査の実施 4.システムとアルゴリズム
3次元剛体運動の理論と シミュレーション技法
プログラム静的解析手法の効率化と 解析フレームワークの構築に関する研究
サーバ負荷分散におけるOpenFlowを用いた省電力法
プログラム実行履歴を用いたトランザクションファンクション抽出手法
進捗 Javaバイトコード変換による 細粒度CPU資源管理
型付きアセンブリ言語を用いた安全なカーネル拡張
過負荷時の分散ソフトウェアの 性能劣化を改善する スケジューリングの提案
静的情報と動的情報を用いた プログラムスライス計算法
分散IDSの実行環境の分離 による安全性の向上
7 ソフトウェア工学 Software Engineering モデル検査 MODEL CHECKING.
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
卒論進捗発表(4) 11/ 山崎孝裕.
限られた保存領域を使用する Javaプログラムの実行トレース記録手法の 提案と評価
通信機構合わせた最適化をおこなう並列化ンパイラ
動的データ依存関係解析を用いた Javaプログラムスライス手法
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
Javaバイトコードの 動的依存解析情報を用いた スライシングシステムの実現
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
バイトコードを単位とするJavaスライスシステムの試作
ウェブアプリケーションサーバの Degradation Schemeの 制御に向けて
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
Javaバーチャルマシンを利用した 動的依存関係解析手法の提案
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
モデル検査(5) CTLモデル検査アルゴリズム
JAVAバイトコードにおける データ依存解析手法の提案と実装
インスタンスの型を考慮したJavaプログラムの実行経路の列挙手法の提案
マイグレーションを支援する分散集合オブジェクト
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
静的情報と動的情報を用いた Javaプログラムスライス計算法
全体ミーティング (5/23) 村田雅之.
メソッドの同時更新履歴を用いたクラスの機能別分類法
アスペクト指向プログラミングの 動的プログラムスライスへの応用
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
強制パススルー機構を用いた VMの安全な帯域外リモート管理
SMP/マルチコアに対応した 型付きアセンブリ言語
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
3 分散システムのフォールトトレランス 分散システム Distributed Systems
アーキテクチャパラメータを利用した並列GCの性能予測
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
全体ミーティング(9/15) 村田雅之.
全体ミーティング (9/12) 村田 雅之.
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
ソケットの拡張によるJava用分散ミドルウエアの高信頼化
FSE/ASE勉強会 A10:Software Maintenance II
Presentation transcript:

ASE 2011 Software Model Checking 論文1 Identifying Future Field Accesses in Exhaustive State Space Traversal Pavel Parizek and Ondrej Lhotak

概要 内容 研究の対象 モデル検査の効率化 検証対象 モデル検査器 モデル検査:自動検証手法 Java のマルチスレッドプログラム システムの取り得る状態を網羅的に探索 研究の対象 検証対象 Java のマルチスレッドプログラム モデル検査器 Java PathFinder (JPF)

Java PathFinder In-Situ モデルチェッカー 実装をそのまま検証 独自のVM上でプログラムを制御/実行 実装をそのまま検証  独自のVM上でプログラムを制御/実行 考慮が必要なスケジューリングを実行 スレッドで共有しているオブジェクトが更新された場合、可能なスレッド切り替えをすべて考慮 A Thread 1 Thread 2 C B A, B, C: 命令列 C A C sharedObj.set(foo); A C B sharedObj.get(); B B sharedObj.set(foo);

状態削減のアイデア 観察 アプローチ 共有しているオブジェクトでも、将来、他のスレッドが実際にアクセスするとは限らない 現在のJPFでは、参照をたどってアクセス可能なオブジェクトは共有されていると判断 Conservative Approximation アプローチ 現状態で更新しようとしているオブジェクトのフィールドを、他のスレッドが将来アクセスする可能性があるかどうかを、静的解析をつかって調べる。 アクセスされないのであれば、ローカルな処理と見なせるので、コンテキストスイッチを考慮しなくてよい。

状態削減のアイデア A C B A, B, C: 命令列 C A C A C B B B A C A, B, C: 命令列 A B C C Thread 1 Thread 2 C B A, B, C: 命令列 C A C sharedObj.set(foo); A C B sharedObj.get(); B B sharedObj.set(foo); Thread 1 Thread 2 A C A, B, C: 命令列 A B C C sharedObj.set(foo); A B C B sharedObj.set(foo);

静的解析手法 Field access analysis Pointer analysis CFGを利用 Pointer analysis 同じインスタンスかどうかを判定 Immutable fields analysis フィールドがimmutableかどうかを判定

結果 実装 実験 結果 感想 様々な静的解析法をJPFに導入 WALA library を用いて実装 7つのプログラムへ適用 Field access analysis が有効 Pointer analysis はだめ ほとんど寄与しない Immutable fields analysisは効果が少ないが、コストも少ない 感想 JPFはJava Memory Modelを仮定していない。 Synchronizedでロックを取るような行儀のよいプログラムでも効果があるか?

ASE 2011 Software Model Checking 論文2 Model Checking Distributed Systems by Combining Caching and Process Checkpointing Watcharin Leungwattanakit, Cyrille Artho, Masami Hagiya Yoshinori Tanabe and Mitsuharu Yamamoto

概要 内容 基本方針 外部プロセスと相互作用するプログラムのモデル検査 JPFによる実装 SUTのみJPF上で実行 スケーラブル Peerがjavaである必要 がない SUT: System Under Test Peer 1 SUT Peer 2

Checkpointing Environment 提案手法 Process Checkpointing 外部プロセス(peer)の応答が非決定的であった場合の取り扱い 例.鍵交換 (例. Diffie-Hellman) 乱数値を送信 IO Caching (ASE’09) SUTの非決定性の扱い SUTの状態がバックトラックした際、Peerをリスタートしてキャッシュした送信メッセージを再送し、Peerの状態もバックトラックする JPF Model Checker C a c h e Peer 1 Peer 2 SUT Checkpointing Environment

Process Checkpointing プロセスの状態を二次記憶に保存し、その状態からのリスタートを可能にする チェックポイントをとるタイミング (1 or 2) 非決定性の原因となるシステムコール発生時 time (乱数のシード値となりうる), read (/dev/randomなどを読む) 必要なときだけチェックポイントをとるため、オーバーヘッド小 ネットワークIOオペレーション発生時 Peerのバックトラック時に、リスタート+メッセージ再送の手間が不要

結果 実装 実験 実験結果 Process CheckpointingはDMTCPを利用 5種類のアプリケーションの検証を実行 Peerが決定的でcheckpointingを使わない場合とくらべて、実行時間が1分を超えるような例では、実行時間はそれほど遅くならない 多くて10%の増加 前頁の2つのチェックポイントのとり方による差はほとんどない

ASE 2011 Software Model Checking 論文3 Supporting Domain-Specific State Space Reductions through Local Partial-Order Reduction Peter Bokor, Johannes Kinder, Marco Serafini and Neeraj Suri

概要 半順序簡約(Partial Order Reduction)の新しい手法の提案 POR a b c モデル検査における主要な状態削減手法 SPIN、LTSAなどのモデルチェッカーで実装 互いに依存していない並行トランジションがある場合に、検証に必要なものだけを考慮 1,1,1 a b c t1 t2 1 1 1 2,1,1 1,2,1 [c = 1] t1 t2 [a = 1 & b = 2] t3 t3 t2 t1 2 2 2 2,2,1 1,2,2

Partial Order Reduction 各状態で検証に必要なトランジションだけを考慮 どのトランジションを選ぶかが重要 正しい簡約 t1 t2 全体の遷移系 1,1,1 t3 t1 t2 t1 t2 誤った簡約 2,1,1 1,2,1 t1 t2 t3 t2 t1 2,2,1 1,2,2 t3 t2 t1

提案手法LPOR (Local POR) 単純な遷移選択方法 保存される性質 トランジションのローカルな情報だけで選択 言語、フォーマリズムに容易に適用可能 論文では分散システムのモデルへ適用 保存される性質 デッドロック インバリアント (詳細はテクニカルレポート) 時相論理CTL*_x (詳細はテクニカルレポート)

実験と結果 MP-Basset モデルチェッカーに適用 3種類のフォールトトレラント分散アルゴリズムに適用 結果 著者らによるJPFベースのモデルチェッカー 3種類のフォールトトレラント分散アルゴリズムに適用 プロセス数 5~7 結果 何もしない場合に比べて大幅に状態数・時間を削減(90%に達する場合も) Dynamic POR(別手法)よりも、モデルにエラーがない場合(全探索が必要な場合)は高速