29
レイトン教授で始める Alloy Analyzer入門 2011815有限会社ITプランニング 小笠原

レイトン教授で始めるAlloy Analyzer入門

  • Upload
    -

  • View
    5.453

  • Download
    1

Embed Size (px)

DESCRIPTION

8/15にgeekbarで使った資料です。 Alloyのコードは下記エントリーをご覧ください。 http://d.hatena.ne.jp/osiire/20110829

Citation preview

Page 1: レイトン教授で始めるAlloy Analyzer入門

レイトン教授で始めるAlloy Analyzer入門

2011年8月15日

有限会社ITプランニング

小笠原 啓

Page 2: レイトン教授で始めるAlloy Analyzer入門

Alloy Analyzerのご紹介

Alloyって何ができるの?

レイトン教授の例題

まとめ

アジェンダ

Page 3: レイトン教授で始めるAlloy Analyzer入門

Alloy Analyzerのご紹介

Page 4: レイトン教授で始めるAlloy Analyzer入門

Alloy AnalyzerはMITで開発されたオープンソース(MITライセンス)のJava製GUI付き仕様記述・検証ツール。

B, Z, VDMのようなツールは仲間。

2006年頃から公開されており、Version 4で解析速度向上、文法のブラッシュアップ。

2011年8月現在Version 4.1.10が最新(4.2 RCあり)。

Alloy Analyzerとは

開発者のDaniel Jackson@MIT

Page 5: レイトン教授で始めるAlloy Analyzer入門

簡素な言語で仕様を記述すると、その仕様を満たす状態を検索して図示してくれる(モデルファインダー)。

検証したい性質を記述すると、その性質が満たされるかどうか全自動でチェックしてくれる。

Alloy Analyzerの検証は全自動

Page 6: レイトン教授で始めるAlloy Analyzer入門

全自動チェックにはスコープ(チェックする範囲)があり有限。それでも多くの設計がチェックできる。(小スコープ仮説)

小スコープ仮説

探索空間とAlloyのスコープ(イメージ)

Page 7: レイトン教授で始めるAlloy Analyzer入門

デモ:Alloy Analyzer

Page 8: レイトン教授で始めるAlloy Analyzer入門

Alloyって何が嬉しいの?どういう時に使えるの?

Page 9: レイトン教授で始めるAlloy Analyzer入門

データモデリング

正確なER図の記述と図示。設計書への添付。

ビジネスの仕組みの記述

曖昧性の早期発見。明確な意思疎通。

手続きの検証

アルゴリズム・プロトコルの設計・検証。

正しいAlloyの使い方

Page 10: レイトン教授で始めるAlloy Analyzer入門

今日はAlloyの真の姿をご紹介します。

Page 11: レイトン教授で始めるAlloy Analyzer入門

SATソルバー呼び出し器

Page 12: レイトン教授で始めるAlloy Analyzer入門

略してSAT。充足可能性問題。

要するに、特定の組わせが希望の条件を満たすかどうかを調べる、組合せ問題。

組み合わせて試してみるしか有効な解法が知られていない。NP完全問題。

SATを高速に解いてくれるのがSATソルバー。

satisfiability problem

Page 13: レイトン教授で始めるAlloy Analyzer入門

SATソルバーは強力だが、使うのが面倒だった。

1. 自分の解きたい問題をSATにエンコード。

2. 乗法標準形への変換。

3. SATソルバーへ。

4. 出てきた充足解をデコード。

5. デコードされた解の意味を理解。

SATソルバーを使うのは大変

Page 14: レイトン教授で始めるAlloy Analyzer入門

Alloy Analyzerなら

簡単な言語で問題を記述するだけでSATソルバーを呼び出し可能。

しかも、見つかった解を図示までしてくれる。

Page 15: レイトン教授で始めるAlloy Analyzer入門

実演してみましょう

Page 16: レイトン教授で始めるAlloy Analyzer入門

そこでレイトン教授

Page 17: レイトン教授で始めるAlloy Analyzer入門

悪魔の箱、面白かったです

Page 18: レイトン教授で始めるAlloy Analyzer入門

5頭の牛がいる。うち2頭は本当の事しか言わないトンホー種。3頭はウソしか言わないソーウ種だという。さて、次の会話からウソつき牛に×印をつけてほしい。

A「Dはソーウ種だね」

B「Cはトンホー種じゃないよ」

C「Aはソーウ種じゃない」

D「Eはソーウ種です」

E「Bはトンホー種じゃないぞ」

問題No.50

Page 19: レイトン教授で始めるAlloy Analyzer入門

Aは赤、Bは青、Cは白のシャツとズ

ボンを着ていた。彼らに目隠しをして服をデタラメに取り替えさせてから目隠しをはずして感想を聞いてみた。

A「3人とも上下の色がバラバラだね。」

B「Cだけは自分のものを着てないな。」

C「赤いズボンなんて恥ずかしいよ」

さて、彼らの着ている服を上下と

問題No.39

Page 20: レイトン教授で始めるAlloy Analyzer入門

トランプの4種のマーク、スペード、ハート、クラブ、ダイヤを4枚ずつ、全部で16枚並べる。

図のような縦横4列のカードが置かれている。縦の列、横の列、対角線のななめの列のそれぞれに、4種のカードが入るように並べてほしい。カードをタッチすると、絵柄を切り替えることができる。

問題No.87

Page 21: レイトン教授で始めるAlloy Analyzer入門

Alloy AnalyzerはMITで作られたオープンソースの仕

様記述・検証ツール。決められたスコープ内での網羅的全自動チェックが可能。

正確なデータモデリングの支援、仕様記述による曖昧さの早期発見、複雑な手続きの検証など。正しい使い方。

Alloyの真価はSATソルバーを簡単に呼べること。応用方法はアイディア次第。

日本語の情報源も登場!始めるには良い時期。

まとめ

Page 22: レイトン教授で始めるAlloy Analyzer入門

情報源(1):本家サイト

http://alloy.mit.edu/alloy4/

Page 23: レイトン教授で始めるAlloy Analyzer入門

情報源(2):コミュニティサイト

http://alloy.mit.edu/community/

Page 24: レイトン教授で始めるAlloy Analyzer入門

情報源(3):チュートリアル

http://alloy.mit.edu/alloy4/tutorial4/

Page 25: レイトン教授で始めるAlloy Analyzer入門

情報源(4):書籍

抽象によるソフトウェア設計-Alloyではじめる形式手法Daniel Jackson (著), 中島震 (監訳), 今井健男 (翻訳), 酒井政裕 (翻訳), 遠藤侑介 (翻訳), 片岡欣夫 (翻訳) オーム社

Page 26: レイトン教授で始めるAlloy Analyzer入門

情報源(5):日本のコミュニティ

https://groups.google.com/group/alloy-jp?hl=ja/

Page 27: レイトン教授で始めるAlloy Analyzer入門

あなたの脳をソルバーで加速!

Page 28: レイトン教授で始めるAlloy Analyzer入門

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

Page 29: レイトン教授で始めるAlloy Analyzer入門

関数プログラミング・形式手法夏のイベント

函数プログラミングの集いhttp://partake.in/events/ac41261d-6026-4d09-8814-5ad3e58446e8

Proof Summithttp://partake.in/events/ac41261d-6026-4d09-8814-5ad3e58446e8

CUFPhttp://cufp.org/conference