抽象によるソフトウェア設計 第5章 解析 その1
- 作者: Daniel Jackson,中島震,今井健男,酒井政裕,遠藤侑介,片岡欣夫
- 出版社/メーカー: オーム社
- 発売日: 2011/07/15
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 274回
- この商品を含むブログ (35件) を見る
今日から第5章に入ります。 Alloy を使ってモデルを作る目的がこの解析にあるはずなので、どんなことが可能なのか知りたいと思います。
- スコープ(要素数の範囲)内で充足例や反例を探す
- Alloy の関係論理は決定不能=あるassertが正しいことを完璧な信頼性で答えることはできない
- スコープ - 各シグネチャの要素数の上限
- 小スコープ仮説 - ほとんどのバグは小さな反例を持つ。つまり小さいスコープを網羅すればたいていの不具合はみつかる
- とはいえ適切な assert が書かれていた時だけ……
- 小スコープ仮説 - ほとんどのバグは小さな反例を持つ。つまり小さいスコープを網羅すればたいていの不具合はみつかる
- 解析の目的は不具合の早期検出というよりも、モデルの構築(つまり設計)を補助しきれいな設計に導くこと。TDD の思想にも似ているような
- 経時変化は(本書では)時間から状態への関数としてモデル化している。解析器にとってはあくまでフィールドのひとつとして時刻があるだけ
- 解析器は制約をブール式に変換して SAT ソルバで解く(高速に解ける)
- スコーレム化
- 関係式に限量子が含まれる場合に、限量子を展開してしまうかわりに自由変数(スコーレム定数)を導入する形式に変換する
- some x : S | F => (sx: S) and F [sx/x]
- これにより反例はその具体的なインスタンスの束縛(証拠 witness)を含む