Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
モデル検査という技術/2019-04-24-llt9
Search
Satoshi SAKAO
April 24, 2019
Technology
1
140
モデル検査という技術/2019-04-24-llt9
社内のLTイベント「えるLT Vol.9」で発表した資料です
Satoshi SAKAO
April 24, 2019
Tweet
Share
More Decks by Satoshi SAKAO
See All by Satoshi SAKAO
Testcontainers/2024-11-20-llt32
ottijp
0
65
Pkl/2024-04-17-llt31
ottijp
0
91
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
160
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
1
290
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
160
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
180
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
160
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
95
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
110
Other Decks in Technology
See All in Technology
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
220
Trust as Infrastructure
bcantrill
1
370
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
1
590
社内報はAIにやらせよう / Let AI handle the company newsletter
saka2jp
8
1.3k
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
520
Performance Insights 廃止から Database Insights 利用へ/transition-from-performance-insights-to-database-insights
emiki
0
150
防災デジタル分野での官民共創の取り組み (2)DIT/CCとD-CERTについて
ditccsugii
0
150
『OCI で学ぶクラウドネイティブ 実践 × 理論ガイド』 書籍概要
oracle4engineer
PRO
3
190
スタートアップにおけるこれからの「データ整備」
shomaekawa
2
350
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
700
セキュアな認可付きリモートMCPサーバーをAWSマネージドサービスでつくろう! / Let's build an OAuth protected remote MCP server based on AWS managed services
kaminashi
3
280
これがLambdaレス時代のChatOpsだ!実例で学ぶAmazon Q Developerカスタムアクション活用法
iwamot
PRO
5
900
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
525
40k
The Cost Of JavaScript in 2023
addyosmani
53
9k
Into the Great Unknown - MozCon
thekraken
40
2.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Scaling GitHub
holman
463
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
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