Enviar pesquisa
Carregar
猫でもわかる! モデル検査器 SPIN 入門
•
4 gostaram
•
6,505 visualizações
y_taka_23
Seguir
2014 年の名古屋合同懇親会 (NGK2014B) LT 大会で使用したスライドです。
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 9
Baixar agora
Baixar para ler offline
Recomendados
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
トランザクション入門
トランザクション入門
Kumazaki Hiroki
Dokkuの活用と内部構造
Dokkuの活用と内部構造
修平 富田
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
超簡単!!なTestLinkの使い方
超簡単!!なTestLinkの使い方
Cake YOSHIDA
Recomendados
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
トランザクション入門
トランザクション入門
Kumazaki Hiroki
Dokkuの活用と内部構造
Dokkuの活用と内部構造
修平 富田
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeNA
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
モノビット エンジン
超簡単!!なTestLinkの使い方
超簡単!!なTestLinkの使い方
Cake YOSHIDA
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
SEGADevTech
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
Railsで作るBFFの功罪
Railsで作るBFFの功罪
Recruit Lifestyle Co., Ltd.
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
NTT DATA Technology & Innovation
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
Excel でパケット分析 - グラフ化
Excel でパケット分析 - グラフ化
彰 村地
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
Sho Nakazono
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Raft
Raft
Preferred Networks
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
SEGADevTech
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
y_taka_23
Hello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight Java
y_taka_23
Mais conteúdo relacionado
Mais procurados
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
SEGADevTech
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
Railsで作るBFFの功罪
Railsで作るBFFの功罪
Recruit Lifestyle Co., Ltd.
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
NTT DATA Technology & Innovation
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
Excel でパケット分析 - グラフ化
Excel でパケット分析 - グラフ化
彰 村地
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
Sho Nakazono
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Raft
Raft
Preferred Networks
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
SEGADevTech
Mais procurados
(20)
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Railsで作るBFFの功罪
Railsで作るBFFの功罪
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
コレクションフレームワーク関連セッション(JavaOne & Devoxx報告会 2022 発表資料)
できる!並列・並行プログラミング
できる!並列・並行プログラミング
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Excel でパケット分析 - グラフ化
Excel でパケット分析 - グラフ化
Akkaで分散システム入門
Akkaで分散システム入門
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
TLS, HTTP/2演習
TLS, HTTP/2演習
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Raft
Raft
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
Destaque
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
y_taka_23
Hello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight Java
y_taka_23
すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!
y_taka_23
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
y_taka_23
Learn You a Frege for Great Good!
Learn You a Frege for Great Good!
y_taka_23
Frege, What a Non-strict Language
Frege, What a Non-strict Language
y_taka_23
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
y_taka_23
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
y_taka_23
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
y_taka_23
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
y_taka_23
Destaque
(10)
Fission で 始める Containerless Kubernetes #serverlesstokyo
Fission で 始める Containerless Kubernetes #serverlesstokyo
Hello, Type Systems! - Introduction to Featherweight Java
Hello, Type Systems! - Introduction to Featherweight Java
すごい Frege たのしく学ぼう!
すごい Frege たのしく学ぼう!
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
Learn You a Frege for Great Good!
Learn You a Frege for Great Good!
Frege, What a Non-strict Language
Frege, What a Non-strict Language
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
机上の Kubernetes - 形式手法で見るコンテナオーケストレーション #NGK2016B
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法で捗る!インフラ構成の設計と検証
形式手法で捗る!インフラ構成の設計と検証
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
思ったほど怖くない! Haskell on JVM 超入門 #jjug_ccc #ccc_l8
猫でもわかる! モデル検査器 SPIN 入門
1.
猫でもわかる! モデル検査器 SPIN
入門 チェシャ猫 (@y_taka_23) 2014年12月6日 NGK2014B 昼の部 LT
2.
リソース共有問題 ● スキャナとプリンタを同時に使用したい
● スキャナ・プリンタの使用は一度に 1 人のみ ● クライアントが 2 人いる場合 – クライアント A がスキャナを確保 – クライアント B がプリンタを確保 – A はプリンタの、B はスキャナの解放待ち – 両者ともに動けない (デッドロック) ● 並行プロセスの相互作用による不具合
3.
現実はさらに複雑 ● イレギュラーな挙動
– 突然エラーが発生してプロセスが死ぬ – パケットが通信中に消失・破損する ● プロセス間の複雑な相互作用 – 非同期処理と同期処理が混在している – 通信に遅延が発生する
4.
あり得る状態を全探索 = モデル検査
(Model Checking)
5.
Promela / SPIN
● Promela (PROcess MEta LAnguage) – プロセスの振る舞いを記述する DSL – 手続き指向、C 言語風文法 ● SPIN (Simple Promela INterpreter) – Promela でモデル化されたシステムを検証 – モデルが取り得るすべての状態を全探索
6.
非決定的選択 ● 複数の遷移の可能性を考えられる
● システムから制御不可能な要素をモデリング ● SPIN は発生し得るすべての分岐を検査 if :: mode == 0 -> input = 0; :: mode == 1 -> input = 0; :: mode == 1 -> input = 1; fi
7.
インタリーブ実行 ● 文ごとに割り込みが発生し得る
● 非同期マルチプロセスをモデリング ● SPIN は発生し得るすべての実行順序を検査 proctype incrementer() { tmp = acc; /* A */ acc = tmp + 1; /* B */ } proctype decrementer() { tmp = acc; /* C */ acc = tmp – 1; /* D */ }
8.
線形時相論理 ● LTL
(Linear Temporal Logic) とも呼ばれる ● 時間的な前後関係を含む条件を検証 – □ … 現在以降の任意の状態で条件が成立 – ◇ … 現在以降のある状態で条件が成立 ● 例 : リクエストに対しいつかは応答がある [] (request => <> response) ● 例:初期化後は常に有効 [] (initialized => [] active)
9.
興味のある人は ● Basic
Spin Manual – http://whitewash-net.or.jp/~hs7m-kwgc/ spin/Man/Manual_japanese.html ● 書籍『SPIN モデル検査入門』 – Mordechai Ben-Ari 著、中島震ら訳 ● 名古屋モデル検査勉強会 #2 資料 – https://gist.github.com/y-taka-23/8419128 presented by チェシャ猫 (@y_taka_23)
Baixar agora