SlideShare a Scribd company logo
君達はまだ
Alloyの
本当のすごさ
を知らない
2016/3/11 社内LT大会 #2
Hideki Sugimoto
いきなりですが…
形式仕様記述って知ってますか?
いきなりですが…
形式仕様記述って知ってますか?
形式仕様記述とは
– 形式手法のひとつで、何らのシステムなどについて、その性質などの
仕様を形式的に記述する手法や、そういった手法による仕様の
記述である。
– 形式的な仕様を与えることにより、対象システムが仕様に照らして
正しいかどうかを形式的に判定することが可能となる(形式的検証)。
また、仕様策定の工程で仕様の不整合を検出することが可能となり、
実装工程のような開発の後半での仕様不備発覚、それに伴う手戻り
を防ぐという利点がある。
– Wikipedia
» https://ja.wikipedia.org/wiki/%E5%BD%A2%E5%BC%8F%E4%BB%95%E6%A7
%98%E8%A8%98%E8%BF%B0
( ゚д゚)ポカーン
ですよねぇ^^
安心してください。
今日は難しいことは言いません。
Alloyを使って形式仕様記述に
ふれてみましょう!
ところで「Alloy」って?
• ソフトウェア設計のための仕様記述言語の1つ。
• 記述と実行、検証を行うGUIアプリケーション
(Javaアプリ)が「無償で」提供されています。
• 記述した仕様のとりうるパターンを「瞬時に」
解析します。
• 解析結果の「視覚化」が超便利!
ではさっそく
お題はみなさんご存知 「ショッピングカート」です
仕様
– ショッピングカートが複数存在する。
– カートに入れる商品も複数存在する。
– 1つのカートには複数の商品を出し入れできる。
– 1度に出し入れできる商品は1つ。
完璧ですね!
ではさっそく
お題はみなさんご存知 「ショッピングカート」です
仕様
– ショッピングカートが複数存在する。
– カートに入れる商品も複数存在する。
– 1つのカートには複数の商品を出し入れできる。
– 1度に出し入れできる商品は1つ。
完璧ですね!
検証
Alloyでこの仕様を定義し、視覚化してみます。
検証(1つめ)
2つのカートにそれぞれ商品が1つずつ
検証(2つめ)
1つの商品を2つのカートが共有してる!!
お題
「ショッピングカート」
仕様
– ショッピングカートが複数存在する
– カートに入れる商品も複数存在する
– 1つのカートに複数の商品を出し入れできる
– 1度に入れたり出したりできる商品は1つ
– 商品はある時点で1つのカートにしか追加できない
お題
「ショッピングカート」
仕様
– ショッピングカートが複数存在する
– カートに入れる商品も複数存在する
– 1つのカートに複数の商品を出し入れできる
– 1度に入れたり出したりできる商品は1つ
– 商品はある時点で1つのカートにしか追加できない
もうほかに仕様漏れはない?
検証(時間を考慮)
カート$1の商品$2を
カート$0が強奪!! 次のステップ
検証結果
「ショッピングカート」
仕様
– ショッピングカートが複数存在する
– カートに入れる商品も複数存在する
– 1つのカートに複数の商品を出し入れできる
– 1度に入れたり出したりできる商品は1つ
– 商品はある時点で1つのカートにしか追加できない
– 追加できる商品は他のカートに入っていないもの
2つの仕様不備が見つかった!
素晴らしいですね!
ちなみに
Alloyで今回のショッピングカートの仕様を表現すると…
ちなみに
Alloyで今回のショッピングカートの仕様を表現すると…
Σ(゚Д゚;)ゲゲッ
以上!!

More Related Content

Viewers also liked

なれる!デザイナー(ロゴ作りから始めるデザイン入門)
なれる!デザイナー(ロゴ作りから始めるデザイン入門)なれる!デザイナー(ロゴ作りから始めるデザイン入門)
なれる!デザイナー(ロゴ作りから始めるデザイン入門)
hiroki tanaka
 
マイナーデスクトップOsたち
マイナーデスクトップOsたちマイナーデスクトップOsたち
マイナーデスクトップOsたち
Masaki Matsumoto
 
なんちゃってIo tで朝活してみよう!
なんちゃってIo tで朝活してみよう!なんちゃってIo tで朝活してみよう!
なんちゃってIo tで朝活してみよう!
Kazuhiko Kurimura
 
ぜんぶScalaでやってみた
ぜんぶScalaでやってみたぜんぶScalaでやってみた
ぜんぶScalaでやってみた
力世 山本
 
IoTでアヒルを動かしてみました
IoTでアヒルを動かしてみましたIoTでアヒルを動かしてみました
IoTでアヒルを動かしてみました
Kota Takebayashi
 
社内LT大会#3 2016-4-28 Vuls
社内LT大会#3 2016-4-28 Vuls社内LT大会#3 2016-4-28 Vuls
社内LT大会#3 2016-4-28 Vuls
Kota Kanbe
 
競プロ、なんでお前たちやらないの?
競プロ、なんでお前たちやらないの?競プロ、なんでお前たちやらないの?
競プロ、なんでお前たちやらないの?
Shota Tsukamoto
 
GISについてのお話
GISについてのお話GISについてのお話
GISについてのお話
futureotsuka
 
20161119 lt
20161119 lt20161119 lt
20161119 lt
aiko sato
 
未来太郎と未来花子
未来太郎と未来花子未来太郎と未来花子
未来太郎と未来花子
ming li
 
Spark CL
Spark CLSpark CL
Spark CL
力世 山本
 
Seleniumのモバイル版「Appium」を使ってみた
Seleniumのモバイル版「Appium」を使ってみたSeleniumのモバイル版「Appium」を使ってみた
Seleniumのモバイル版「Appium」を使ってみた
yamapy black
 
AI(強化学習)でロボットに学習させてみた
AI(強化学習)でロボットに学習させてみたAI(強化学習)でロボットに学習させてみた
AI(強化学習)でロボットに学習させてみた
akmtt
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
Satoshi Kisanuki
 
Grep
GrepGrep
Future_Lt20160810
Future_Lt20160810Future_Lt20160810
Future_Lt20160810
Yosuke Tanaka
 
20160810-lt-cygwin
20160810-lt-cygwin20160810-lt-cygwin
20160810-lt-cygwin
Future Architect.Inc
 
20160811車載
20160811車載20160811車載
20160811車載
masao kamiwada
 
こじらせVBA
こじらせVBAこじらせVBA
こじらせVBA
satoshi ohya
 
ログモニタリングツールを自作した話
ログモニタリングツールを自作した話ログモニタリングツールを自作した話
ログモニタリングツールを自作した話
Hiroki Takeda
 

Viewers also liked (20)

なれる!デザイナー(ロゴ作りから始めるデザイン入門)
なれる!デザイナー(ロゴ作りから始めるデザイン入門)なれる!デザイナー(ロゴ作りから始めるデザイン入門)
なれる!デザイナー(ロゴ作りから始めるデザイン入門)
 
マイナーデスクトップOsたち
マイナーデスクトップOsたちマイナーデスクトップOsたち
マイナーデスクトップOsたち
 
なんちゃってIo tで朝活してみよう!
なんちゃってIo tで朝活してみよう!なんちゃってIo tで朝活してみよう!
なんちゃってIo tで朝活してみよう!
 
ぜんぶScalaでやってみた
ぜんぶScalaでやってみたぜんぶScalaでやってみた
ぜんぶScalaでやってみた
 
IoTでアヒルを動かしてみました
IoTでアヒルを動かしてみましたIoTでアヒルを動かしてみました
IoTでアヒルを動かしてみました
 
社内LT大会#3 2016-4-28 Vuls
社内LT大会#3 2016-4-28 Vuls社内LT大会#3 2016-4-28 Vuls
社内LT大会#3 2016-4-28 Vuls
 
競プロ、なんでお前たちやらないの?
競プロ、なんでお前たちやらないの?競プロ、なんでお前たちやらないの?
競プロ、なんでお前たちやらないの?
 
GISについてのお話
GISについてのお話GISについてのお話
GISについてのお話
 
20161119 lt
20161119 lt20161119 lt
20161119 lt
 
未来太郎と未来花子
未来太郎と未来花子未来太郎と未来花子
未来太郎と未来花子
 
Spark CL
Spark CLSpark CL
Spark CL
 
Seleniumのモバイル版「Appium」を使ってみた
Seleniumのモバイル版「Appium」を使ってみたSeleniumのモバイル版「Appium」を使ってみた
Seleniumのモバイル版「Appium」を使ってみた
 
AI(強化学習)でロボットに学習させてみた
AI(強化学習)でロボットに学習させてみたAI(強化学習)でロボットに学習させてみた
AI(強化学習)でロボットに学習させてみた
 
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなしSpring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
 
Grep
GrepGrep
Grep
 
Future_Lt20160810
Future_Lt20160810Future_Lt20160810
Future_Lt20160810
 
20160810-lt-cygwin
20160810-lt-cygwin20160810-lt-cygwin
20160810-lt-cygwin
 
20160811車載
20160811車載20160811車載
20160811車載
 
こじらせVBA
こじらせVBAこじらせVBA
こじらせVBA
 
ログモニタリングツールを自作した話
ログモニタリングツールを自作した話ログモニタリングツールを自作した話
ログモニタリングツールを自作した話
 

Recently uploaded

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 

Recently uploaded (15)

単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 

君達はまだAlloyの本当のすごさを知らない