『形式手法の技術講座』
2008/5/1
形式手法の概要が知りたい


が最近考えている問題が実は形式手法周りを見ることで解決に近づくのでは?形式手法知らんけど、という状態から駒を進めるためにパラ読みする
感想
読みやすく内容もかなり良さげ
どこでこの本のことを知ったのか忘れた、amazonレビューも0だし

良いことばかり書いている雰囲気もあるが、本当ならすごいね、という気持ちで読んでる
目次
第1章 ソフトウェアトラブルを予防する「
形式手法」とは?
伝統的手法の問題点
日本語の仕様が曖昧
日本語だけではこの辺の区別が曖昧になりがち
欠陥が発見されるまでが遅い
理想的には要求分析フェーズで洗い出したい
etc.
ありそう。決まった文法を使うだけでも効果ありそう

なんちゃってオレオレ〇〇言語風言語で仕様を書くよりも実際に実行できる言語で書いたほうが良い
日本語の仕様を完全に無くせという話ではない
意図の表明や、非機能要件は日本語のほうが表現しやすい
要は、仕様を書くフェーズでの堅牢性を高めようぜ、というのが目的
もっと具体的に言えば、要求分析や設計段階
コードに着手する前の段階で、仕様のおかしさに気付けると早期に修正ができる
手戻りも少なく、コストが低い
特に、開発者が慣れていないドメインなどでは効果の発揮度合いが大きい
形式仕様記述言語の定義、のようなものが気になってくるな

仕様を書く際に、例えば、
TypeScriptの型だけで書く、
TypeScriptの実装も書いちゃう (仕様とは)
みたいなやり方もできるわけで、そうではなく、わざわざ別言語である形式仕様記述言語を使うメリットがあれば知りたい
e.g.
VDM++からC++のコードの生成ができるらしい
値の長さなど、篩型等がなければ難しいようなものも記述できる
まあ、静的じゃないからね
恐らくめちゃくちゃ宣言的になるんだろうな

触るなら、よい形式言語を採用してみたい
syntaxに馴染みがある、環境構築が簡単である、生成対象が広い、情報が多い、とか
第2章 「形式手法」技術解説
形式手法を使ってどのように開発していくのか?について
大雑把な進め方
>1. 厳密に定義された仕様記述言語で、仕様を記述する
>2. 証明 モデル検査・仕様アニメーションのいずれかを使って、 仕様を検証する
>3. 仕様アニメーションを使って、 仕様の妥当性検査を行う
>4. 仕様を段階的に洗練して、プログラムへ変換していく
自動生成できたり、仕様を見ながら手で書いたりする
VDM++はOOPなのかぁ

雑な書き方と雑な例
雰囲気はわかる
preとpostの箇所でproperty-based testingを書いてる雰囲気がある

これら一覧は人間が証明して上げる必要があるということか?
VDM++は、事前に書いた仕様から証明すべき証明を一覧で出してくれるってことかな
第3章 主な形式手法と形式仕様記述言語の概要
第4章 「形式手法」の効果的な導入法(問題が大きい工程の解明;仕様のフレームワーク構築 ほか)