UML SPIN モデル検査用コードの自動生成と Web アプリケーショ...
Transcript of UML SPIN モデル検査用コードの自動生成と Web アプリケーショ...
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 1
2011/2/25 1
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーション設計への適用
○山田 豊† 和﨑 克己‡
†‡信州大学大学院工学系研究科†株式会社プラグマティック・テクノロジーズ
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 2
内容
• はじめにはじめにはじめにはじめに
• UML アクティビティアクティビティアクティビティアクティビティ図図図図によるによるによるによる準形式化準形式化準形式化準形式化
• SPIN モデルモデルモデルモデル検査検査検査検査ツールツールツールツール
• SPIN モデルモデルモデルモデル検査検査検査検査のののの概要概要概要概要
• PROMELA 言語言語言語言語
• アクティビティアクティビティアクティビティアクティビティ図図図図からからからからPROMELAへのへのへのへの自動変換自動変換自動変換自動変換
• UML図要素図要素図要素図要素にににに追加追加追加追加したしたしたした変換指示子変換指示子変換指示子変換指示子
• Webアプリケーションアプリケーションアプリケーションアプリケーションへのへのへのへの適用実験適用実験適用実験適用実験
• 実験結果実験結果実験結果実験結果
• まとめとまとめとまとめとまとめと今後今後今後今後のののの課題課題課題課題
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 2
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 3
はじめに
大規模化・複雑化するソフトウェア
設計段階でモデルの欠陥を検出
ソフトウェアの信頼性・安全性の向上
上流設計仕様を形式言語でモデル化検査ツールを用いて検証するアプローチ
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 4
はじめに(2)
UML 形式言語
分析設計用モデル 検証用モデル
手動で変換・導出
コストと時間
SPIN
PROMELA言語UML
アクティビティ図自動変換
自動変換の手法を提案
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 3
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 5
UMLアクティビティ図による準形式化
アクティビティ図の記述例
アクションの記述やその抽象度の扱いなどに厳密な決まりはない
記述の曖昧さ自動変換の難しさの一因
アクションやガードなどの記述にPROMELAの構文を直接用いることで
形式化と自動変換の簡素化
そこで…
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 6
SPINモデル検査ツール
G.J.Holzmannが中心になって開発、公開しているモデル検査ツール。
産業界でも多数の適用事例が報告されている。
モデルモデルモデルモデルのののの正当性表現正当性表現正当性表現正当性表現
【【【【表明表明表明表明((((assert)】)】)】)】 プロセスの任意の箇所にassert(条件式)文を記述。
【【【【線形時相論理線形時相論理線形時相論理線形時相論理(LTL)】】】】命題論理式に、時の概念を表現できる時相演算子を加えた論理体系。プロセスが時系列に沿って成り立つべき性質を論理式の形で指定。
検証器は、オートマトンが取り得る全ての状態を網羅的に探査し、正当性の要求条件を満たしているか否かを検証する。
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 4
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 7
SPINモデル検査の概要
検証器の実行
◆ランダムウォーク・シュミレーション◆検証器の生成
SPIN
PROMELA LTL
pan.c C compiler
pan
SPINモデル検査の流れ
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 8
PROMELA言語
if
:: ガード1 -> 文の列1
:: ガード2 -> 文の列2
…
:: ガードN -> 文の列N
fi;
プロセスはオートマトンの考え方で対象システムの振る舞い仕様を表現
【ガードコマンド】 プロセスの振る舞い記述の基本
非決定性の表現に適している
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 5
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 9
PROMELA言語(2)
対象システムをチャネル通信するプロセスの集まりとして表現
プロセス プロセス
バッファサイズで同期・非同期の指定
メッセージの消失やデッドロックなどの不具合を検出
チャネル
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 10
アクティビティ図からPROMELAへの自動変換
UML記述ツール
PROMELA
変換器
SPIN
XML
自動変換の流れ
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 6
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 11
UML図要素に追加した変換指示子
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 12
UML図要素に追加した変換指示子(2)
チャネルから受信したメッセージの出力先spin.channel_output
イベントイベントイベントイベント受信受信受信受信アクションアクションアクションアクションにににに付与付与付与付与するするするするタグタグタグタグ
メッセージタイプ(省略時はspin.channel_inputの型で生成)
spin.channel_message_type
バッファサイズ(省略時は同期通信) spin.channel_buffer_size
チャネル名(省略時はch0,ch1,…)spin.channel
チャネルに送信するメッセージspin.channel_input
シグナルシグナルシグナルシグナル送信送信送信送信アクションアクションアクションアクションにににに付与付与付与付与するするするするタグタグタグタグ
プロセス中のラベル(省略可能)。LTLの記述に利用することを想定。
spin.label
アクションアクションアクションアクションにににに付与付与付与付与するするするするタグタグタグタグ
プロセス数(省略時は1) spin.number_of_processes
プロセス名(省略時はP1,P2,…) spin.process
アクティビティアクティビティアクティビティアクティビティ図全体図全体図全体図全体にににに付与付与付与付与するするするするタグタグタグタグ
PROMELA変換用に定義したタグ付き値
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 7
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 13
Webアプリケーションへの適用実験ー「ショッピングサイトの画面遷移」を例題として-
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 14
ショッピングサイトの仕様
注文者氏名入力
配送先住所入力
支払方法の入力
最終確認
商品選択
注文完了
次に進む前の画面に戻る
商品を選択し直す情報入力をやり直す
ショッピングサイトの画面遷移図
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 8
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 15
ショッピングサイトの仕様(2)
500円 その他の地域
1,000円 北海道・沖縄・離島
送料配送地域
配送地域毎の送料設定例
支払金額 ≧ 3,000円の時のみ利用可能クレジットカード
支払金額 < 50,000円の時のみ利用可能代引き
制限なし銀行振込
条件支払方法
支払方法の条件設定例
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 16
ショッピングサイトの仕様(3)
50,000円 商品5
49,000円 商品4
10,000円 商品3
2,400円 商品2
1,000円 商品1
価格商品
商品の価格
5種類の価格帯で配送地域と支払方法の条件の組み合わせを網羅
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 9
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 17
アクティビティ図 【全体】
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 18
アクティビティ図 【商品入力】
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 10
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 19
アクティビティ図 【名前入力】
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 20
アクティビティ図 【住所入力】
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 11
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 21
アクティビティ図 【支払方法入力】
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 22
アクティビティ図 【最終確認】
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 12
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 23
モデルの検証内容
モデルの検証内容
1. 1. 1. 1. 意図意図意図意図しないしないしないしない画面遷移画面遷移画面遷移画面遷移がががが起起起起きていないかきていないかきていないかきていないか
2. 2. 2. 2. 注文注文注文注文データデータデータデータのののの項目項目項目項目にににに抜抜抜抜けはないかけはないかけはないかけはないか
3. 3. 3. 3. 支払金額支払金額支払金額支払金額とととと支払方法支払方法支払方法支払方法はははは条件条件条件条件をををを満満満満たしているかたしているかたしているかたしているか
「注文確定前には、最終確認画面を通る」
ことをLTLで記述。
注文データを受信するアクティビティを作成し
表明を用いて注文データの検証。
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 24
SPINによる検証結果
SPINによる検証結果
住所入力画面に戻り住所を変更して送料が変わった場合、条件を満たさなくなる可能性
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 13
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 25
アクティビティ図 【修正版】
shopping2モデル
支払金額と支払方法の状態を調べ、条件を満たさなくなっている場合には支払方法の入力値をクリアする処理を付加
SPIN
で再検証
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 26
SPINによる検証結果(2)
エラーエラーエラーエラーはははは検出検出検出検出されなくなりされなくなりされなくなりされなくなりモデルモデルモデルモデルのののの正当性正当性正当性正当性がががが検証検証検証検証されたされたされたされた。。。。
UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ
ン設計への適用 14
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 27
まとめと今後の課題
試作試作試作試作したしたしたした変換器変換器変換器変換器をををを用用用用いていていていて、、、、一定一定一定一定のののの条件下条件下条件下条件下かつかつかつかつモデルモデルモデルモデルのののの一部分一部分一部分一部分
ではあるもののではあるもののではあるもののではあるものの、、、、実用実用実用実用レベルレベルレベルレベルののののWebアプリケーションアプリケーションアプリケーションアプリケーションにににに適用適用適用適用しししし
良好良好良好良好なななな結果結果結果結果がががが得得得得られたられたられたられた。。。。
UMLモデルモデルモデルモデルをををを設計設計設計設計しながらしながらしながらしながら、、、、検証検証検証検証できるできるできるできる環境環境環境環境をををを得得得得てててて
そのそのそのその便利便利便利便利さをさをさをさを実感実感実感実感できたできたできたできた。。。。
課題 アクティビティアクティビティアクティビティアクティビティ図図図図のののの並列処理記述並列処理記述並列処理記述並列処理記述にはにはにはには未対応未対応未対応未対応
複数複数複数複数ののののタスクタスクタスクタスクがががが並列並列並列並列してしてしてして動作動作動作動作するようなするようなするようなするようなビジネスロジックビジネスロジックビジネスロジックビジネスロジック部分部分部分部分
にもにもにもにも対応対応対応対応できるようできるようできるようできるよう、、、、並列処理記述並列処理記述並列処理記述並列処理記述もももも変換変換変換変換できるようにしたいできるようにしたいできるようにしたいできるようにしたい。。。。
課題 振振振振るるるる舞舞舞舞いいいい記述記述記述記述とととと、、、、検証検証検証検証すべきすべきすべきすべき性質性質性質性質のののの記述記述記述記述がががが混在混在混在混在のののの可能性可能性可能性可能性
性質性質性質性質のののの記述記述記述記述をををを明確明確明確明確にににに分離分離分離分離してしてしてして表現表現表現表現するするするする仕組仕組仕組仕組みについてもみについてもみについてもみについても
検討検討検討検討したいしたいしたいしたい。。。。
2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 28
参考文献
[1] J. Rumbaugh, I. Jacobson, G. Booch,“The Unified Modeling Language
Reference Manual (2nd Edition) ”, Pearson Higher Education, 2004.
[2] 井上貴至, 新川芳行,“モデル検査によるUMLアクティビティ図の 正当性検証”, 信学技報, SWIM2008-19, pp.19-24, 2008.
[3] 本間 圭, 高橋 薫, 富樫 敦,“形式手法によるWebアプリケーションのモデル化と検証”, 信学技報, SS2009-8, pp.43-48, 2009.
[4] G.J. Holzmann,“THE SPIN MODEL CHECKER”, Addison Wesley, 2003.
[5] 中島 震,“SPINモデル検査”, 近代科学社, 2008.
[6] 株式会社チェンジビジョンastah* professional,
http://astah.change-vision.com/ja/product/astah-professional.html
[7] P. Samuel, Sunitha E.V.,“Document Type Definition for the XMI
Representation of UML2.0 Activity Diagram”, International Journal of
Recent Trends in Engineering, Vol.1, No.1, May 2009.
[8] 崔銀惠,河本貴則,渡邉宏,“画面遷移仕様のモデル検査”,日本ソフトウェア科学会論文誌「コンピュータソフトウェア」,22-3,pp.146-153,2005/07.