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
introducing-formal-methods
Search
rrreeeyyy
June 09, 2016
Technology
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
introducing-formal-methods
hbstyle-2016-06-09
rrreeeyyy
June 09, 2016
More Decks by rrreeeyyy
See All by rrreeeyyy
もう一度考える SRE チームの作り方・育て方 / Rethinking SRE #1: Building and Growing SRE Teams
rrreeeyyy
6
1.2k
Reliability in the Age of AI: Engineering for AI Velocity
rrreeeyyy
0
200
Rethinking Incident Response: Context-Aware AI in Practice - Incident Buddy Edition -
rrreeeyyy
0
280
Rethinking Incident Response: Context-Aware AI in Practice
rrreeeyyy
3
2.6k
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
330
An Efficient Incident Response Training with AI / SRE NEXT 2024 Sponsor Session
rrreeeyyy
1
6.3k
カンファレンスから見る SRE トレンド 2024 / SRE Trends from Conferences in 2024 #SRE_Findy
rrreeeyyy
4
2.7k
信頼性の育て方 / mackerel-meetup-15
rrreeeyyy
10
3k
SRE の歩き方・進め方 / sre-walk-through-procedure
rrreeeyyy
0
9k
Other Decks in Technology
See All in Technology
データエンジニアリングワークショップ:Auto LoaderとSparkで学ぶデータパイプライン構築
databricksjapan
PRO
0
190
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
530
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
300
AI-DLCって実際どう? 〜聞きたいこと全部聞いてみる〜
news_it_enj
0
240
薬剤師(ドメインエキスパート)と一緒に育てる薬局向けAIアシスタント
kakehashi
PRO
2
110
grill-me(grilling):AI駆動開発を超助けてくれるSkill / grill me
mathbullet
0
110
少人数データチームのDevin活用実践事例
runandy16
2
450
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
240
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
360
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
2
1.6k
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
200
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
260
Featured
See All Featured
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Navigating Weather and Climate Data
rabernat
0
510
Why Our Code Smells
bkeepers
PRO
340
58k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
260
Odyssey Design
rkendrick25
PRO
2
800
GraphQLとの向き合い方2022年版
quramy
50
15k
Chasing Engaging Ingredients in Design
codingconduct
0
300
Art, The Web, and Tiny UX
lynnandtonic
304
22k
A designer walks into a library…
pauljervisheath
211
25k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Evolving SEO for Evolving Search Engines
ryanjones
0
280
Transcript
ܗࣜख๏(formal-methods)ೖ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 1
ܗࣜख๏(formal-methods) • ֶΛج൫ͱͨ͠ιϑτΣΞͷ༷هड़ɾ։ൃɾݕূͷٕज़ • ଞͷֶ(ػցֶͱ͔Ͷ)ಉ༷ʹֶతղੳΛใֶͰग़དྷΔʁ • ઃܭͷ৴པੑɾݎ࿚ੑͷ্Λతͱ͍ͯ͠Δ • ܗࣜݴޠɾཧཧֶɾܕγεςϜɾతσʔλܕͳͲΛ༻ •
͜ͷลͷ͜ͱʹڵຯ͕͋Δ • ֶ෦࣌ʹ TaPL 1 ͱ͍͏ຊΛྠಡͨ͠ܦݧΑΓ • ݎ࿚Ͱґଘੑͷඇৗʹߴ͍γεςϜ(ۜߦͱ͔ߤۭػͱ͔ϩέοτͱ͔)ͰΑ͘༻͍ΒΕΔ • NASA/AWS/FeliCa/TradeOne(ূ݊)/SHOLIS(ߤۭ) [^2] • ۙͳͱ͜ΖͰݴ͑ CCS Injection(OpenSSL) ͷ੬ऑੑͳΜ͔ 1 https://www.cis.upenn.edu/~bcpierce/tapl/ [^2]: http://www.ipa.go.jp/files/000026875.pdf hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 2
ܗࣜख๏ͷछྨ • Ͳͷਫ४ͰΔ͔ɺͱ͍͏ͷ͕େ͖͚ͯ͘ 3 ͭ • ܗ༷ࣜهड़ (Formal specification) •
ܗࣜత։ൃ͓Αͼݕূ (Formal development and formal verification) • ࣗಈݕূ (Theorem provers) • Ξϓϩʔν͕େ͖͚ͯ͘ 2 ͭ • ఆཧূ໌ (Explicit Model Checker) • Ϟσϧݕࠪ (Symbolic Model Checker) hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 3
ܗࣜख๏ͷਫ४ • ܗ༷ࣜهड़ (Formal specification) • ܗࣜख๏Λ༻͍༷ͯΛهड़͢Δ • ϓϩάϥϜͷ։ൃࣗମܗࣜख๏ͱরΒ͠߹Θͤͳ͕Βߦ͏ •
ܗࣜత։ൃ͓Αͼݕূ (Formal development and formal verification) • ܗࣜख๏Λ༻͍༷ͯΛهड़͢Δ(B-method3 ͳͲ) • هड़༷ͨ͠ΛߋʹৄࡉԽ͍͖ͯ͠ϓϩάϥϜΛ࡞͢ΔͳͲ • ࣗಈݕূ (Theorem provers) • ࣗಈఆཧূ໌ʹͯػցతͳূ໌Λߦ͏ • ఆཧΛ༩͑ΔͱϓϩάϥϜ͕ؤுͬͯূ໌ͯ͘͠ΕΔΑ͏ͳͷ 3 ύϦͷϝτϩ 14 ߸ઢͳͲͰΘΕ͍ͯΔΒ͍͠ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 4
ܗࣜख๏ͷΞϓϩʔν • ఆཧূ໌ • γεςϜΛཧࣜͷू߹ͱͯ͠هड़͢Δ • ཧࣜΛެཧͱਪنଇʹͱ͍ͮͯূ໌͍ͯ͘͠ • େମͷ߹ͰࣗಈͰূ໌Ͱ͖ͳ͍ͷͰਓ͕ؒࢧԉ͠ͳ͕Βূ໌͢Δ •
B-method ͳͲ͕༗໊ • Ϟσϧݕࠪ • ରͱ͢ΔγεςϜΛঢ়ଶભҠਤͰϞσϧԽ • ࣌૬ཧࣜ4ͱݺΕΔࣜͰੑ࣭Λهड़ • ঢ়ଶભҠͷঢ়ଶΛཏ୳ࡧͯ࣌͠૬ཧࣜΛຬ͔ͨ͢ݕࠪ͢Δ • SPIN ͳͲ͕༗໊ 4 ࣌ؒͱͷؔͰมԽ͢Δঢ়ଶΛهड़͢Δཧࣜͷ͜ͱ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 5
ܰྔͳܗࣜख๏ • ܗࣜख๏͍͠ • ϞσϧݕࠪΈ߹Θͤരൃ͕ى͖Δ • ఆཧূ໌େମͷ߹ͰࣗಈͰূ໌Ͱ͖ͳ͍ • ιϑτΣΞͷҰ෦ͷঢ়ଶΛཏతʹݕࠪ͢Δ •
΄ͱΜͲͷܽؕɺখ͍͞୳ࡧൣғͰ͋ͬͯྫͱͯ͠ൃݟ͞ΕΔ (Small Scope Hypothesis) • ࠷ܽؕͷى͖ͦ͏ͳॴΛूதతʹݕࠪ͢Δͷ͕ྑ͍ͩΖ͏ͱ͍͏ൃ (Daniel Jackson) • Alloy Analyzer ͳͲ͕༗໊ • ΠϯϑϥߏͰܗࣜख๏ΛऔΓೖΕΑ͏ͱ͢Δਓ͍Δ 5 5 http://ccvanishing.hateblo.jp/entry/2016/06/06/051120 hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 6
AWS ͷྫ • AWS Ͱ 2011 ͔Βܗࣜख๏Λ࠾༻͍ͯ͠Δ 6 • ࢄγεςϜͷΞϧΰϦζϜઃܭͳͲ
• DynamoDB/S3/EBS ͳͲ • AWS Ͱ TLA+ ͱ͍͏ͷΛͬͯܗࣜख๏Λѻ͍ͬͯΔ • ࠷ॳʹ༗༻ੑ͕࣮ূ͞Εͨͷ DynamoDB • େମೋि͙ؒΒ͍Ͱ TLA+ ͰΞϧΰϦζϜ͕ॻ͚ͨΒ͍͠ • ݕূ༷ͯ͠ʑͳোύλʔϯͷચ͍ग़͠ʹޭ • DynamoDB ͷޭΛड͚ͯ S3/EBS ͳͲͰܗࣜख๏͕औΓೖΕΒΕΔ 6 How Amazon web services uses formal methods: http://dl.acm.org/citation.cfm?id=2749359.2699417 hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 7
Raft Λ TLA+ Ͱهड़ͨ͠ྫ • https://github.com/ongardie/raft.tla/blob/master/raft.tla CONSTANTS RequestVoteRequest, RequestVoteResponse, AppendEntriesRequest,
AppendEntriesResponse Quorum == {i \in SUBSET(Server) : Cardinality(i) * 2 > Cardinality(Server)} InitHistoryVars == /\ elections = {} /\ allLogs = {} /\ voterLog = [i \in Server |-> [j \in {} |-> <<>>]] InitServerVars == /\ currentTerm = [i \in Server |-> 1] /\ state = [i \in Server |-> Follower] /\ votedFor = [i \in Server |-> Nil] InitCandidateVars == /\ votesResponded = [i \in Server |-> {}] /\ votesGranted = [i \in Server |-> {}] hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 8
ܕγεςϜฒྻॲཧͱ͔ͷྫ • ܕγεςϜ: ू߹ͱͯ͠ߟ͑Δ • ܕ(Int ͱ͔)ू߹ɾͦͷܕʹॴଐ͢Δมू߹ཁૉ • ܭࢉϞσϧ: ϥϜμܭࢉͱ͍͏ܭࢉܕΛ͏
• (͜Ε Python ͷ lambda x: x ͷҙຯ) • ฒߦܭࢉϞσϧ: πܭࢉͳͲͷܭࢉܕΛ͏ • (͜Ενϟωϧ x ʹ ΛૹΔͱ͍͏ҙຯ) hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 9
·ͱΊ • ܗࣜख๏ʹೖͨ͠ • ΑΓ҆શͰݎ࿚ͳιϑτΣΞΛ࡞Δʹܗࣜख๏͕༗ޮͰ͋Δ • ݱঢ়͗͢͠Δ͕ʑͷۀͳͲʹద༻Ͱ͖ΔͷͰʁ • ιϑτΣΞςετͰঢ়ଶΛͯ͢ཏ͢Δͷ͍͠ •
ܕγεςϜϥϜμܭࢉπܭࢉීஈͷϓϩάϥϛϯάͱؔ࿈͍ͯͯ͠໘ന͍ • ͳͥ Rust ܕ҆શͱ͞Ε͍ͯΔͷ͔ʁͳͥ C ܕ҆શͰͳ͍ͷ͔ʁ • ͬͱܗࣜख๏͕؆୯ʹͳΕ͍͍ͳ͋ͱࢥ͍ͬͯΔ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 10
ࢀߟࢿྉ • http://dl.acm.org/citation.cfm?id=2749359.2699417 • http://research.microsoft.com/en-us/um/people/lamport/tla/ amazon.html • https://brooker.co.za/blog/2014/08/09/formal-methods.html • http://brooker.co.za/blog/2015/03/29/formal.html
• https://www.infoq.com/presentations/aws-testing-tla • http://perspectives.mvdirona.com/2014/07/challenges-in-designing- at-scale-formal-methods-in-building-robust-distributed-systems/ hbstyle 2016/06/09 - Yoshikawa Ryota ( @rrreeeyyy ) 11