Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
モデル検査という技術/2019-04-24-llt9
Search
Satoshi SAKAO
April 24, 2019
Technology
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モデル検査という技術/2019-04-24-llt9
社内のLTイベント「えるLT Vol.9」で発表した資料です
Satoshi SAKAO
April 24, 2019
More Decks by Satoshi SAKAO
See All by Satoshi SAKAO
Testcontainers/2024-11-20-llt32
ottijp
0
120
Pkl/2024-04-17-llt31
ottijp
0
140
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
210
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
1
370
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
200
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
240
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
200
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
130
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
130
Other Decks in Technology
See All in Technology
Building Audio Plugin Ecosystem for Android in 2026
atsushieno
2
160
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
110
[General] 개발자로 해외 기업에서 일하기
skydoves
1
310
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
3
1.7k
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
830
BALLAS Technology Deck
ballas_inc
0
300
eBPF 簡介 2026 版
shunghsiyu
0
190
AWS Quick 入門 | 目指せ Quick マスター 01
inariku
PRO
2
210
Context Ontology Accelerator 入門 (業務データの意味を、AI エージェントに渡す)
inariku
PRO
3
570
GCASアップデート(202607-202610)
techniczna
1
240
Ebitengine製iOSアプリ公開ボタンを押す会
eiei114
0
110
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
620
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Music & Morning Musume
bryan
48
7.5k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
360
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
1
300
Between Models and Reality
mayunak
4
570
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
280
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
980
Thoughts on Productivity
jonyablonski
76
5.5k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Bash Introduction
62gerente
615
220k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
450
Transcript
モデル検査という技術 Satoshi SAKAO えるLT Vol.9 2019/04/24 (Wed) H1
話すひと H2 インフォコム株式会社 品質マネジメント推進室 " ソフトウェアエンジニア JS (ES6) / Node.js
/ GCP / IoT / iOS (Swift) フォーカスリーディング / 技術士試験の学習 Satoshi SAKAO @ottijp
話すこと • モデル検査とはなにか • 具体例 • 特徴,適用領域,課題 H3
H4 モデル検査 %
モデル検査とはなにか • 仕様や設計が正しいことを検査する自動化技術 • 形式システムの時相論理の検査を行う手法 • 「いつも,そのうち,まで」などを表す論理式で評価する • 状態遷移や相互作用などの評価を行う H5
どのように実施するか H6 仕様書 設計書 ソースコード 要求仕様書 テスト仕様書 ソースコード SMVファイル モデル定義
検査式 (時相論理式) モデル検査ツール Success or Failure
具体例(仕様) • 仕様 • レベルが1ずつ上がる • レベルは10がMAX • テスト仕様 •
レベルはいつか必ず10になる • レベルは決して11にはならない H7 Lv.10
具体例(SMVファイル) H8 MODULE main VAR level: 1..10; ASSIGN init(level) :=
1; next(level) := level=10 ? 10 : level+1; LTLSPEC F (level=10); LTLSPEC F ! (level=11); 仕様のモデル化 検査式
具体例(実行: success) H9 $ NuSMV tweet-level.smv *** This is NuSMV
2.6.0 (compiled on Wed Oct 14 15:31:33 2015) (...中略...) -- specification F level = 10 is true -- specification F !(level = 11) is true 検査式が満たされている
具体例(実行: failure) H10 $ NuSMV tweet-level.smv *** This is NuSMV
2.6.0 (compiled on Wed Oct 14 15:31:33 2015) (...中略) -- specification F level = 10 is true -- specification F level = 11 is false -- as demonstrated by the following execution sequence Trace Description: LTL Counterexample Trace Type: Counterexample -> State: 1.1 <- level = 1 (..中略...) -> State: 1.9 <- level = 9 -- Loop starts here -> State: 1.10 <- level = 10 -> State: 1.11 <- 検査式が満たされない 反例 検査式を LTLSPEC F (level=11); (レベルはいつか必ず11になる) に変更して実行
H11 特徴,適用領域,課題
特徴 • ツールによる自動化で,例外的な状態や状態遷移パスを 網羅的に検査できるため,品質向上が期待できる • 反例の出力により問題の特定が容易 • 動的なテストに比べ厳密で網羅的であるが, 難易度(学習コスト)は高く検査対象は小規模である H12
手作業での検査が困難だったり, ミッションクリティカルな領域への利用が考えられる
適用領域の例 • マルチスレッドにおける実行パターンの検査 • 複数スレッドが同時にクリティカルセクションに入らないこと • プログラムがデッドロックに陥らないこと • ハンドシェイクプロトコルが必ず終了すること •
微妙なタイミングや複雑な状態遷移による不具合 H13
課題(状態爆発) • 状態やイベントが多いと組み合わせが膨大になる • 巨大な状態空間を持つシステムでは, 現実的な計算量での検査が不可能 • どうするか • 絞り込みや抽象化により,モデルを極力小さくする
• サブシステム単位にモデル化する H14
課題(形式化による弊害) • 設計や実装を忠実に再現したモデル化が困難 • 例えばアナログ(連続)値のモデル化 • どうするか • 再現性を考慮したモデルの抽象化や絞り込み •
トライ&エラーでモデルを洗練させる H15
話したこと • モデル検査とはなにか • 具体例 • 特徴,適用領域,課題 H16
$ exit H17
H18 Appendix
参考 • システムの網羅的なテストができるモデル検査 実課題を扱ったモデル検 査のコンテスト「MoCCon」を振り返る (1/3):CodeZine(コードジン) • https://codezine.jp/article/detail/10164 • モデル検査とは •
http://www.formaltech.co.jp/whatMC.pdf • NuSMVによるモデル検査入門 (1) ステートマシンを定義する - Qiita • https://qiita.com/shinsa82/items/cd4d95c616bf1da852ce • モデル検査入門 #wacate • https://www.slideshare.net/kjstylepp/ss-42413829 H19