alloy analyzer lt

14
ALLOY ANALYZER A LIGHTWEIGHT FORMAL METHOD 2011 年 11 年 5 年 年年年年 IT 年年年年年年 年年年 年 (@osiire)

Upload: -

Post on 22-May-2015

846 views

Category:

Technology


1 download

DESCRIPTION

Alloy Analyzerの紹介

TRANSCRIPT

Page 1: Alloy Analyzer LT

ALLOY ANALYZERA LIGHTWEIGHT FORMAL METHOD

2011 年 11 月 5 日有限会社 IT プランニング小笠原 啓 (@osiire)

Page 2: Alloy Analyzer LT

Alloy Analyzer とは 200X 年、 MIT の Daniel Jackson 教授率いる

チームが極秘裏に開発した仕様記述・検証ツール。 URL : http://alloy.mit.edu/alloy4/ ネットの噂によると、通常では発見が難しいキラバグ

を見つけるために作成されたらしい。 集合と関係を基礎とした一階の論理体系を持つ有

界モデル発見器。 シンプルな仕様記述が可能な上に全自動解析。他の仕

様記述ツールにはない圧倒的なお手軽感。 有界な領域でも仕様は十分検証できる(小スコープ仮

説)。

Page 3: Alloy Analyzer LT

Alloy Analyzer(Ver4.2RC)外観 Alloy コードエディタ

インスタンス

Page 4: Alloy Analyzer LT

Alloy でレイトン教授を超える頭脳を手に入れる

5頭の牛がいる。うち2頭は本当の事しか言わないトンホー種。3頭はウソしか言わないソーウ種だという。さて、次の会話からウソつき牛に × 印をつけてほしい。 A 「 D はソーウ種だね」 B 「 C はトンホー種じゃないよ」 C 「 A はソーウ種じゃない」 D 「 E はソーウ種です」 E 「 B はトンホー種じゃないぞ」

Page 5: Alloy Analyzer LT

enum Cow { A, B, C, D, E }   // A,B,C,D,E という牛がいるsig Liar in Cow {} { #Liar = 3 } // 3 匹がソーウ種run {

not A in Liar iff D in Liar //A 「 D はソーウ種だね」 not B in Liar iff C in Liar //B 「 C はトンホー種じゃないよ」 not C in Liar iff not A in Liar //C 「 A はソーウ種じゃない」 not D in Liar iff E in Liar //D 「 E はソーウ種です」 not E in Liar iff B in Liar //E 「 B はトンホー種じゃないぞ」 }

Alloy による仕様記述

Page 6: Alloy Analyzer LT
Page 7: Alloy Analyzer LT

Alloy Analyzer を開発の仕事に活かす

3つのプラクティス

Page 8: Alloy Analyzer LT

1. ERD の代わりに使おう

open util/relation // 関係ライブラリの利用sig Company, Person {} // 法人と人one sig Employ { // 雇用 employee : Company lone -> set Person // 1 対 n の関係}

one sig Business { // 提携 alliance : Company set -> set Company // n 対 n の関係} {

~alliance in alliance // 提携は相互的 no alliance & iden // 自分自身と提携しない}

Page 9: Alloy Analyzer LT
Page 10: Alloy Analyzer LT

2.独立性の高い仕様を狙い打とう

通信プロトコルの記述と検証 障害リカバリーはできている?

権限の仕様と検証 セキュリティ制限は破られていない?

データ構造の操作 不変条件が崩れていない?

排他制御手順の確認 デッドロックを引き起こさない?

Page 11: Alloy Analyzer LT

3.とにかく書いてみよう

仕様は形式的に書くことで整理できる。曖昧性が見つかったら儲けもの。やってみると意外と複雑かもしれない。

費用対効果は結果論。 仕様を書き始めて、難しすぎれば止めれば

いい。 Alloy で難しいなら、本格的に難しい問題の可能性もあり。モデル検査ツール、定理証明支援器の導入を検討。

書いてみるコストが低いのが Alloy Analyzer の最大の強み。

Page 13: Alloy Analyzer LT

Alloy でキラバグを捕まえよう!

Page 14: Alloy Analyzer LT

ご清聴ありがとうございました。ANY QUESTION?