形式手法: 高信頼性への技術アプローチ
P.1下~
レビュー、テスト: 行う人による
P.2下~
形式仕様言語(こうなっているはず)
↓↑
プログラム・コード
テスト: バグを見つける
形式手法:バグがないことを示す
P.3下~
自然言語の仕様書はあいまい
↓
仕様を厳密に表すべき → 形式仕様言語
P.4中~
抽象化により複雑さを避ける
P.5上~
数理論理(厳密) + 抽象化モデリング
形式仕様言語
↓↑人手で証明?
プログラム
P.5中~
手動証明: 使いものにならない
自動証明: 完全には無理
なので、ちょうどいい所を見つけなくてはならない。
[ex1-3] 開発対象の機能を表すとき、最も抽象度が高い表現はどれですか
P.6下~
全体に適用 vs 部分的に適用
rigorous vs light
P.P.7~
仕様の表現力 vs 自動検証
形式手法は設計方法論とセットである
P.8下~
アルゴリズム → Hoareロジック
P.9上~
構造化設計 → VDM, Z
P.9上~
リアクティブ(並列)システム → ロジック・モデル検査
P.9中~
UML → 要使い分け
P.9下~
オブジェクト指向 → 要使い分け
[ex1-4] 次はどちらの使い方ですか: 正しく動作するコードの組み合わせでバグのないソフトウェアを目指す
[ex1-5] 次はどちらの使い方ですか: 利用可能な部分があればその部分に適用する
[ex1-6] テストと設計方法論と別物と考えられるが、形式手法と設計方法論はセットとなる理由は?
教科書(図はすべてこちらより引用):
中島震,「形式手法入門―ロジックによるソフトウェア設計―」,オーム社