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
57
Pkl/2024-04-17-llt31
ottijp
0
86
JavaScriptのデバッグ/2023-09-04-llt30
ottijp
0
160
CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29
ottijp
1
280
TWELITEへの誘い/2022-12-27-llt28
ottijp
0
160
ビルドツールBazelを触ってみた/2022-09-28-llt27
ottijp
0
170
HashiCorp Vaultを使ったシークレットのセキュアな一元管理 〜Ansibleを添えて〜/2022-07-12-llt26
ottijp
0
150
AWSインフラのデプロイをCDKでカイゼンする/2022-03-23-llt25
ottijp
0
89
Amazon Timestreamでデータ補間/2021-12-27-llt24
ottijp
0
100
Other Decks in Technology
See All in Technology
人を動かすことについて考える
ichimichi
2
320
株式会社ARAV 採用案内
maqui
0
340
モダンな現場と従来型の組織——そこに生じる "不整合" を解消してこそチームがパフォーマンスを発揮できる / Team-oriented Organization Design 20250825
mtx2s
5
530
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
あとはAIに任せて人間は自由に生きる
kentaro
3
1.1k
JOAI発表資料 @ 関東kaggler会
joai_committee
1
270
Webアクセシビリティ入門
recruitengineers
PRO
1
240
アジャイルテストで高品質のスプリントレビューを
takesection
0
110
退屈なことはDevinにやらせよう〜〜Devin APIを使ったVisual Regression Testの自動追加〜
kawamataryo
2
370
実践アプリケーション設計 ①データモデルとドメインモデル
recruitengineers
PRO
2
230
見てわかるテスト駆動開発
recruitengineers
PRO
4
310
認知戦の理解と、市民としての対抗策
hogehuga
0
320
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
A designer walks into a library…
pauljervisheath
207
24k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
We Have a Design System, Now What?
morganepeng
53
7.7k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
For a Future-Friendly Web
brad_frost
179
9.9k
Optimizing for Happiness
mojombo
379
70k
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