7 ソフトウェア工学 Software Engineering モデル検査 MODEL CHECKING.

Slides:



Advertisements
Similar presentations
0章 数学基礎.
Advertisements

プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
OWL-Sを用いたWebアプリケーションの検査と生成
モデル検査の応用 徳田研究室 西村太一.
モデル検査のためのコンカレントシステムの仕様記述
Model Checking (1) Modeling Concurrent Systems
Model Checking (1) Modeling Concurrent Systems
ASE 2011 Software Model Checking
班紹介 描画班一同.
Verilog HDL 12月21日(月).
計算の理論 I 決定性有限オートマトン(DFA) と 非決定性有限オートマトン(NFA)
データ構造と アルゴリズム 理工学部 情報システム工学科 新田直也.
5.チューリングマシンと計算.
5.チューリングマシンと計算.
プログラミング基礎I(再) 山元進.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
ブロック線図によるシミュレーション ブロック線図の作成と編集 ブロック線図の保存と読込み ブロック線図の印刷 グラフの印刷
Model Checking (2) Temporal Logic
データ構造と アルゴリズム 知能情報学部 新田直也.
Systems and Software Verification 10. Fairness Properties
CSP記述によるモデル設計と ツールによる検証
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
UML入門 UML PRESS vol.1 より 時松誠治 2003年5月19日.
モデル検査(1) 並行システムとモデル検査 1.並行システム 2.モデル検査 3.モデル検査の実施 4.システムとアルゴリズム
CONCURRENT PROGRAMMING
オブジェクト プログラミング 第1回.
Solving Shape-Analysis Problems in Languages with Destructive Updating
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
オントロジーを使用した プログラム開発支援システムの提案
チューリング機械 状態の有限集合 ヘッドの方向を表す。 L:1コマ左へ R:1コマ右へ テープ記号の有限集合 入力記号の有限集合 動作関数
Occam言語による マルチプリエンプティブシステムの 実装と検証
アルゴリズムとチューリングマシン 「もの」(商品)としてのコンピュータ 「こと」(思想)としてのコンピュータ アルゴリズム
プログラムの制御構造 選択・繰り返し.
モデル検査(2) プロセス代数に基づくモデリング
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
その他の図 Chapter 7.
2. 論理ゲート と ブール代数 五島 正裕.
モデル検査 状態遷移系 PLTL(propositional linear-time temporal logic) PLTLのモデル検査
Model Checking (2) Temporal Logic
第二回 時制論理とリアルタイムリソース.
SPINを用いたウェブアプリケーションにおける 階層別モデル検査支援方法
社会シミュレーションのための モデル作成環境
論文紹介: Time Limited Model Checking
逐次プログラムの正当性(2) 帰納的アサーション法(フロイド法)
モデル検査(3) 手続き型言語に基づくモデリング
Structural operational semantics
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
シナリオのアニメーション表示による 妥当性確認支援
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
知能情報システム特論 Introduction
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
ソフトウェア開発における形式化技術と環境
関数型言語による Timed CSP 検証技法の提案
モデル検査(5) CTLモデル検査アルゴリズム
モデル検査(1) 並行システムのモデリング 知能ソフトウェア特論 Intelligent Software
並列処理プロセッサTPCOREの 組み込みシステムへの応用 理工学研究科数理情報科学専攻 福永 力,岩波智史,情報システム研究室.
INTRODUCTION TO SOFTWARE ENGINEERING
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
All Rights Reserved, Copyright © 2004, Kobayashi
4 形式的設計検証技術 検証 verification 形式的検証 (4.1.2)
米澤研究室 全体ミーティング 2010/07/07 M2 渡邊裕貴.
ディペンダブル組込みシステムのためのコンテキスト分析手法
型理論 ラッセルのパラドックス: 「集合の集合」は矛盾を引き起こす。 ラッセル、ホワイトヘッド 「プリンキピアマセマティカ」
信頼関係に基づくシステムセキュリティ の構造記述
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
練習問題.
Generating Obstacle Conditions for Requirements Completeness
Presentation transcript:

7 ソフトウェア工学 Software Engineering モデル検査 MODEL CHECKING

1 モデル検査の概要 並行システム: 相互排他,デッドロック,スタベーションなどの現象 1 モデル検査の概要 並行システム: 相互排他,デッドロック,スタベーションなどの現象 入出力関係に着目した 「停止性+部分正当性」 のみでは正当性を言えない 振る舞い(途中の状態遷移)の考慮の必要性 behaviors モデル検査: 有限状態遷移系の振る舞いの検証を自動で行う技術 model checking モデル = 有限状態遷移系: 状態数が有限個の状態遷移系 finite state transition system 検 査 = 検 証: システムが期待される性質(仕様)を満たすことの確認 verification properties (specifications)

モデル:状態遷移系 4-counter 1 1 q p p q p,q event tick label initial state reset reset reset reset state 1 state 2 state 3 state 0 (p=1,q=0) (p=0,q=1) (p=q=1) (p=q=0) 状態数は数百万くらいはOK

検証できる主な性質 安全性 (safety) 「悪いことは決して起こらない」 活性(liveness) 「良いことはいつか必ず起こる」 モデル検査は,状態遷移系の振る舞いについて,主につぎの2つの性質を検証 安全性 (safety)   「悪いことは決して起こらない」 例:このエレベータは,ドアが開いたまま昇降することは決してない 活性(liveness)   「良いことはいつか必ず起こる」 例:緊急停止ボタンを押したら,いつか必ず停止する 「0.5秒以内に」というようなリアルタイム性を調べられることも なにが「悪いこと」で,なにが「良いこと」かは,応用目的にあわせて設計者が決定

モデル検査の実施手順 (1)モデリング:システムを状態遷移系として表現 (2)性質の記述:検査したい性質を具体的に表現 モデル検査の実施手順   モデル検査はつぎの3ステップで実施 (1)モデリング:システムを状態遷移系として表現 (2)性質の記述:検査したい性質を具体的に表現 (3)モデル検査:モデル検査器で自動検査

(1) モデリング システムの振る舞いを表すモデル(状態遷移系)を記述する. 記述には一般に,モデル記述言語を用いる. モデル記述言語の分類   - プロセス代数に基づく数理的な言語 - プログラミング言語風の言語 process algebra

(2) 性質の記述 システムが満たすべき(検査したい)性質を具体的に記述する. 記述には一般的に,時間の概念を扱う時相論理を用いる. (2) 性質の記述   システムが満たすべき(検査したい)性質を具体的に記述する. 記述には一般的に,時間の概念を扱う時相論理を用いる. 時相論理として,LTLとCTLがよく知られている. property temporal logic LTL (Linear Temporal Logic) CTL (Computation Tree Logic) Req Ack 【LTL の例】 G(Req → F Ack) Reqが真になると,その後いつか必ずAckが真になる It is globally (always) true that if Req is true then in future Ack will be true.

(3) モデル検査 モデルが,与えられた性質を満たすかどうか,自動的に検査 モデル検査器 性質が成り立つ場合:検査終了 (3) モデル検査   モデルが,与えられた性質を満たすかどうか,自動的に検査 モデル検査器 model checker 性質が成り立つ場合:検査終了 性質が成り立たない場合:反例(エラートレース)を出力 counterexample (error trace) モデル検査アルゴリズムの基本原理 すべての入力とすべての状態遷移列について 振る舞いを網羅的に検査 (検査終了=数学的な正しさが証明されたのと同等)

モデル検査器の例 SMV, NuSMV カーネギーメロン大学 IEEE Futurebus+ standardのバグ発見 SPIN ベル研究所 ACM Software System Award受賞 LTSA ロンドン王立大学 FSP言語(プロセス代数),アニメーション Java PathFinder (JPF) NASA Javaのバイトコードの検査 きょうの授業では これを紹介

モデル検査器の概要 モデル検査器 モデル 検査結果 性質 状態遷移系 OK/反例 【モデル記述言語】 プロセス代数 プログラミング言語風言語 モデル検査器の概要   モデル検査器 モデル 検査結果 状態遷移系 OK/反例 性質 【モデル記述言語】 プロセス代数 プログラミング言語風言語 安全性,活性 【性質記述言語】 時相論理

2 逐次プロセスのモデリング 台 代数: 要素の集合(台)およびその上での演算の集まりからなる計算系 例: (整数の集合,+,×) a b 2 逐次プロセスのモデリング 代数: 要素の集合(台)およびその上での演算の集まりからなる計算系 algebra universe operation a b 台 演算 e d c c = a ○ b 演算子 operator 例: (整数の集合,+,×) 等号 equality

プロセス代数 Q = a  P プロセス代数: プロセスやイベント等の集合を台とし, プロセス合成などの演算を定義した代数 process algebra プロセス代数: プロセスやイベント等の集合を台とし,         プロセス合成などの演算を定義した代数 b Event a P 演算子の例  : アクション接頭辞 | : 選択 || : 並列合成 Process Process R Q Q = a  P

アクション接頭辞 (a  P) 最初にアクション a を実行し,つぎにプロセス Pと同じ 振る舞いをするプロセス. action prefix アクション接頭辞 (a  P) 最初にアクション a を実行し,つぎにプロセス Pと同じ 振る舞いをするプロセス.

スイッチの例(1) action initial state OFF ON

スイッチの例(2) FSPによる記述 SWITCH = OFF, OFF = (on  ON), ON = (off  OFF). (FSP: Finite State Processes) スイッチの例(2) FSPによる記述 SWITCH = OFF, OFF = (on  ON), ON = (off  OFF). OFF ON プロセス名 (大文字) アクション名 (小文字) 代入によってより簡潔な表現を得る SWITCH = OFF, OFF = (on (off  OFF)). SWITCH = (on  off  SWITCH). ( は右結合演算子)

choice 選択 (a  P | b  Q) 最初にアクション a ,b のいずれかを実行する. そのアクションが a ならつぎにプロセス P を実行し, b ならつぎにプロセス Q を実行するプロセス.

自動販売機の例 DRINKS = ( red  coffee  DRINKS | blue  tea  DRINKS ). ボタンの色で飲み物を指定 DRINKS = ( red  coffee  DRINKS | blue  tea  DRINKS ).

3 並行プロセスのモデリング プロセスの並列合成 (P||Q) プロセス P と Q の並行実行を表すプロセス.

アクションのインタリーブ プロセス間で共有されないアクションはインタリーブされる ITCH = (scratch  STOP). action interleaving アクションのインタリーブ プロセス間で共有されないアクションはインタリーブされる かゆいところをかく ITCH = (scratch  STOP). CONVERSE = (think  talk  STOP). || CONVERSE_ITCH = (ITCH || CONVERSE). 共有アクション 無し 会話する 並列合成は || で書き始める インタリーブで可能となるアクション列 think  talk  scratch think  scratch  talk scratch  think  talk CONVERSE_ITCH =

並列合成の結果 3 states 2 states 2 x 3 states Pの状態pとQの状態qの組(p,q)が,P||Qの状態となる (0,0) (0,1) (0,2) (1,2) (1,1) (1,0) from ITCH from CONVERSE

共有アクションによるインタラクションと同期 共有アクション:並列合成されたプロセスがもつ共通のアクション 共有アクションで,プロセスのインタラクション(相互作用)をモデル化 共有アクションは,それを共有する全プロセスにおいて同時に同期実行 shared action interaction synchronization

インタラクションの例 共有アクション ready, used MAKER = (make  ready  used  MAKER). USER = (ready  use  used  USER). || MAKER_USER = (MAKER || USER). 3 状態 3 状態 3 x 3 状態? 4 状態 インタラクションは 振舞いを制約する

演習問題 7 二人のユーザーを表すプロセス USER_A,USER_B,共有資源を表すプロセス RESOURCE,それらを並列合成したプロセス RESOURCE_SHARE が,つぎのように定義されている. USER_A = (a_acquire -> a_use -> a_release -> USER_A). USER_B = (b_acquire -> b_use -> b_release -> USER_B). RESOURCE = IDLE,    IDLE = (a_acquire -> BUSY | b_acquire -> BUSY),    BUSY = (a_release -> IDLE | b_release -> IDLE). || RESOURCE_SHARE = (USER_A || USER_B || RESOURCE). ユーザーAが資源を獲得(a_acquire)しているときにはユーザーBは資源を獲得(b_acquire)できない仕組みになっていることを説明しなさい. また,これら4つのプロセスの状態遷移系をそれぞれ描画しなさい.