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

6,878 views

Published on

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

Published in: Technology

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

  1. 1. レイトン教授で始める Alloy Analyzer入門 2011年8月15日 有限会社ITプランニング 小笠原 啓
  2. 2. アジェンダAlloy Analyzerのご紹介Alloyって何ができるの?レイトン教授の例題まとめ
  3. 3. Alloy Analyzerのご紹介
  4. 4. Alloy AnalyzerとはAlloy AnalyzerはMITで開発されたオープンソース(MITライセンス)のJava製GUI付き仕様記述・検証ツール。B, Z, VDMのようなツールは仲間。2006年頃から公開されており、Version 4で解析速度向上、文法のブラッシュアップ。2011年8月現在Version 4.1.10が最新(4.2 RCあり)。 開発者のDaniel Jackson@MIT
  5. 5. Alloy Analyzerの検証は全自動簡素な言語で仕様を記述すると、その仕様を満たす状態を検索して図示してくれる(モデルファインダー)。検証したい性質を記述すると、その性質が満たされるかどうか全自動でチェックしてくれる。
  6. 6. 小スコープ仮説全自動チェックにはスコープ(チェックする範囲)があり有限。それでも多くの設計がチェックできる。(小スコープ仮説) 探索空間とAlloyのスコープ(イメージ)
  7. 7. デモ:Alloy Analyzer
  8. 8. Alloyって何が嬉しいの?どういう時に使えるの?
  9. 9. 正しいAlloyの使い方データモデリング正確なER図の記述と図示。設計書への添付。ビジネスの仕組みの記述曖昧性の早期発見。明確な意思疎通。手続きの検証アルゴリズム・プロトコルの設計・検証。
  10. 10. 今日はAlloyの真の姿を ご紹介します。
  11. 11. SATソルバー呼び出し器
  12. 12. satisfiability problem略してSAT。充足可能性問題。要するに、特定の組わせが希望の条件を満たすかどうかを調べる、組合せ問題。組み合わせて試してみるしか有効な解法が知られていない。NP完全問題。SATを高速に解いてくれるのがSATソルバー。
  13. 13. SATソルバーを使うのは大変SATソルバーは強力だが、使うのが面倒だった。1. 自分の解きたい問題をSATにエンコード。2. 乗法標準形への変換。3. SATソルバーへ。4. 出てきた充足解をデコード。5. デコードされた解の意味を理解。
  14. 14. Alloy Analyzerなら簡単な言語で問題を記述するだけでSATソルバーを呼び出し可能。 しかも、見つかった解を 図示までしてくれる。
  15. 15. 実演してみましょう
  16. 16. そこでレイトン教授
  17. 17. 悪魔の箱、面白かったです
  18. 18. 問題No.50 5頭の牛がいる。うち2頭は本当 の事しか言わないトンホー種。3 頭はウソしか言わないソーウ種だ という。さて、次の会話からウソ つき牛に×印をつけてほしい。 A「Dはソーウ種だね」 B「Cはトンホー種じゃないよ」 C「Aはソーウ種じゃない」 D「Eはソーウ種です」 E「Bはトンホー種じゃないぞ」
  19. 19. 問題No.39 Aは赤、Bは青、Cは白のシャツとズ ボンを着ていた。彼らに目隠しを して服をデタラメに取り替えさせ てから目隠しをはずして感想を聞 いてみた。 A「3人とも上下の色がバラバラだ ね。」 B「Cだけは自分のものを着てない な。」 C「赤いズボンなんて恥ずかしい よ」
  20. 20. 問題No.87 トランプの4種のマーク、ス ペード、ハート、クラブ、ダ イヤを4枚ずつ、全部で16枚 並べる。 図のような縦横4列のカード が置かれている。縦の列、横 の列、対角線のななめの列の それぞれに、4種のカードが 入るように並べてほしい。 カードをタッチすると、絵柄 を切り替えることができる。
  21. 21. まとめAlloy AnalyzerはMITで作られたオープンソースの仕様記述・検証ツール。決められたスコープ内での網羅的全自動チェックが可能。正確なデータモデリングの支援、仕様記述による曖昧さの早期発見、複雑な手続きの検証など。正しい使い方。Alloyの真価はSATソルバーを簡単に呼べること。応用方法はアイディア次第。日本語の情報源も登場!始めるには良い時期。
  22. 22. 情報源(1):本家サイト http://alloy.mit.edu/alloy4/
  23. 23. 情報源(2):コミュニティサ イト http://alloy.mit.edu/community/
  24. 24. 情報源(3):チュートリアルhttp://alloy.mit.edu/alloy4/tutorial4/
  25. 25. 情報源(4):書籍 抽象によるソフトウェア設計-Alloyではじめる形式手法Daniel Jackson (著), 中島 震 (監訳), 今井 健男 (翻訳), 酒井 政裕 (翻訳),遠藤 侑介 (翻訳), 片岡 欣夫 (翻訳) オーム社
  26. 26. 情報源(5):日本のコミュニ ティhttps://groups.google.com/group/alloy-jp?hl=ja/
  27. 27. あなたの脳をソルバーで加速!
  28. 28. ご清聴ありがとうございました。
  29. 29. 関数プログラミング・形式手法 夏のイベント函数プログラミングの Proof Summit CUFP集い http://partake.in/even http://cufp.org/confehttp://partake.in/events/a ts/ac41261d-6026- rencec41261d-6026-4d09-8814- 4d09-8814-5ad3e58446e8 5ad3e58446e8

×