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
AOSN 「プログラマーの日合宿」 2016
Search
ZTRW
September 26, 2016
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AOSN 「プログラマーの日合宿」 2016
ZTRW
September 26, 2016
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Music & Morning Musume
bryan
48
7.4k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
500
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Technical Leadership for Architectural Decision Making
baasie
3
570
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Transcript
PDDのウソ・ホント プログラマーの日合宿2016
PDDって︖
PDD = Proof Driven Development 期待される仕様が充足されることを証 明しながら開発しよう、という提案 Test Driven Developmentの発展形
要素技術 形式的証明を扱う何らかの基礎 1. Theorem prover とか Automated theorem prover Interactive
theorem prover = Proof assistant 2. Hoare logic とか これだけ︕
Automated theorem proverでPDD -- プログラミング言語と仕様記述言語が一体 -- ⾃動で証明しちゃう︕ でも言語の記述⼒は弱い… Proof assistantでPDD
← 今日はコレだけ -- プログラミング言語と仕様記述言語が一体 -- 記述⼒が異常 機能要件なら基本なんでも書ける -- 証明はシステムと対話しながら Hoare logicでPDD -- プログラミング言語と仕様記述言語が分離 -- Domain specificには⾃動化もできるらしい︖ (よく知らない)
代表的なproof assistantたち Agda -- 最も数学寄り、とか言われる Javaとは別な意味で潔癖症 -- Automated theorem proverの組込みがほぼ全くない可哀想な子
Coq -- JavaやHaskellより古いオーパーツ Epigram -- 知らない子ですね Idris -- 動作速度とかマジメに考えてる健気な子 Lean -- Microsoftだ︕ 殺せー︕︕
ぼちぼち本題
怪しげな謳い⽂句 正しいソフトウエアを作れる とか テストが必要なくなる とか TDDを拡張する とか 歴史は繰り返す…MDAの悲劇を忘れたか︕
ウソ・ホント
正しいソフトウエアを作れる(︖)
正しいソフトウエアを作れる のホント 開発したいソフトウエアの機能要件が キチンと形式化できていて… 開発をすべてPDDで回せば… まあホントかな
None
ライブラリの貧弱性 コストの増大性 コスト予測の困難性 … すべてをPDDで回すのは非現実的 正しいソフトウエアを作れる のウソ
部分的PDD Core componentのみPDDで開発 とか -- 各種言語へのコンパイルは可能 外部ライブラリを利⽤ とか -- Foreign
functionの機構は大抵ある バグの⼊り込み得る箇所を局所化・管理 → リスクの潜在的発⽣源を局所化・管理 → リスク管理の基本
テストが必要なくなる (︖)
テストが必要なくなる は真っ赤なウソ 非機能要件のテストは必要 “仕様のバグ”対策にテストは必要
PDDはTDDを拡張する (︖)
PDDはTDDを拡張する のホント Securityのみをソフトウエアの品質を決 定づける要因とみなせば… まあホントかな
None
PDDはTDDを拡張する のウソ ソフトウエアの品質を決定づける要因は多様 -- 開発コスト -- 実⾏時パフォーマンス -- ⻑期運⽤における信頼性 --
… 一般的⽂脈では PDDとTDDは上位・下位互換の関係にはない
いろいろケチつけてるけど…
…結局PDDって︖
完全に正しいソフトウエアを作れる夢の手法 開発におけるリスク管理を容易にする現実的手段 ぼくのかんがえるPDDのほんしつ
おしまい