UML SPIN モデル検査用コードの自動生成と Web アプリケーショ...

14
UMLアクティビティ図からSPINモデル検 査用コードの自動生成とWebアプリケーショ ン設計への適用 1 2011/2/25 1 UMLアクティビティ図から SPINモデル検査用コードの自動生成と Webアプリケーション設計への適用 ○山田 豊 和﨑 克己 †‡ 信州大学大学院工学系研究科 株式会社プラグマティック・テクノロジーズ 2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 2 内容 はじめに はじめに はじめに はじめに UML アクティビティ アクティビティ アクティビティ アクティビティ図による による による による準形式化 準形式化 準形式化 準形式化 SPIN モデル モデル モデル モデル検査 検査 検査 検査ツール ツール ツール ツール SPIN モデル モデル モデル モデル検査 検査 検査 検査の概要 概要 概要 概要 PROMELA 言語 言語 言語 言語 アクティビティ アクティビティ アクティビティ アクティビティ図から から から からPROMELAへの への への への自動変換 自動変換 自動変換 自動変換 UML図要素 図要素 図要素 図要素に追加 追加 追加 追加した した した した変換指示子 変換指示子 変換指示子 変換指示子 Webアプリケーション アプリケーション アプリケーション アプリケーションへの への への への適用実験 適用実験 適用実験 適用実験 実験結果 実験結果 実験結果 実験結果 まとめと まとめと まとめと まとめと今後 今後 今後 今後の課題 課題 課題 課題

Transcript of UML SPIN モデル検査用コードの自動生成と Web アプリケーショ...

Page 1: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 1

2011/2/25 1

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーション設計への適用

○山田 豊†  和﨑 克己‡

†‡信州大学大学院工学系研究科†株式会社プラグマティック・テクノロジーズ

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 2

内容

• はじめにはじめにはじめにはじめに

• UML アクティビティアクティビティアクティビティアクティビティ図図図図によるによるによるによる準形式化準形式化準形式化準形式化

• SPIN モデルモデルモデルモデル検査検査検査検査ツールツールツールツール

• SPIN モデルモデルモデルモデル検査検査検査検査のののの概要概要概要概要

• PROMELA 言語言語言語言語

• アクティビティアクティビティアクティビティアクティビティ図図図図からからからからPROMELAへのへのへのへの自動変換自動変換自動変換自動変換

• UML図要素図要素図要素図要素にににに追加追加追加追加したしたしたした変換指示子変換指示子変換指示子変換指示子

• Webアプリケーションアプリケーションアプリケーションアプリケーションへのへのへのへの適用実験適用実験適用実験適用実験

• 実験結果実験結果実験結果実験結果

• まとめとまとめとまとめとまとめと今後今後今後今後のののの課題課題課題課題

Page 2: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 2

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 3

はじめに

大規模化・複雑化するソフトウェア

設計段階でモデルの欠陥を検出

ソフトウェアの信頼性・安全性の向上

上流設計仕様を形式言語でモデル化検査ツールを用いて検証するアプローチ

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 4

はじめに(2)

UML 形式言語

分析設計用モデル 検証用モデル

手動で変換・導出

コストと時間

SPIN

PROMELA言語UML

アクティビティ図自動変換

自動変換の手法を提案

Page 3: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

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)】】】】命題論理式に、時の概念を表現できる時相演算子を加えた論理体系。プロセスが時系列に沿って成り立つべき性質を論理式の形で指定。

検証器は、オートマトンが取り得る全ての状態を網羅的に探査し、正当性の要求条件を満たしているか否かを検証する。

Page 4: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

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;

プロセスはオートマトンの考え方で対象システムの振る舞い仕様を表現

【ガードコマンド】 プロセスの振る舞い記述の基本

非決定性の表現に適している

Page 5: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 5

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 9

PROMELA言語(2)

対象システムをチャネル通信するプロセスの集まりとして表現

プロセス プロセス

バッファサイズで同期・非同期の指定

メッセージの消失やデッドロックなどの不具合を検出

チャネル

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 10

アクティビティ図からPROMELAへの自動変換

UML記述ツール

PROMELA

変換器

SPIN

XML

自動変換の流れ

Page 6: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

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変換用に定義したタグ付き値

Page 7: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 7

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 13

Webアプリケーションへの適用実験ー「ショッピングサイトの画面遷移」を例題として-

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 14

ショッピングサイトの仕様

注文者氏名入力

配送先住所入力

支払方法の入力

最終確認

商品選択

注文完了

次に進む前の画面に戻る

商品を選択し直す情報入力をやり直す

ショッピングサイトの画面遷移図

Page 8: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

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種類の価格帯で配送地域と支払方法の条件の組み合わせを網羅

Page 9: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 9

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 17

アクティビティ図 【全体】

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 18

アクティビティ図 【商品入力】

Page 10: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 10

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 19

アクティビティ図 【名前入力】

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 20

アクティビティ図 【住所入力】

Page 11: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 11

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 21

アクティビティ図 【支払方法入力】

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 22

アクティビティ図 【最終確認】

Page 12: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

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による検証結果

住所入力画面に戻り住所を変更して送料が変わった場合、条件を満たさなくなる可能性

Page 13: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

UMLアクティビティ図からSPINモデル検査用コードの自動生成とWebアプリケーショ

ン設計への適用 13

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 25

アクティビティ図 【修正版】

shopping2モデル

支払金額と支払方法の状態を調べ、条件を満たさなくなっている場合には支払方法の入力値をクリアする処理を付加

SPIN

で再検証

2011/2/25 アクティビティ図からSPINモデル検査用コードの自動生成とWebアプリ設計への適用 26

SPINによる検証結果(2)

エラーエラーエラーエラーはははは検出検出検出検出されなくなりされなくなりされなくなりされなくなりモデルモデルモデルモデルのののの正当性正当性正当性正当性がががが検証検証検証検証されたされたされたされた。。。。

Page 14: UML SPIN モデル検査用コードの自動生成と Web アプリケーショ …swim/jpn/presentations/swim2010-29.pdf · UML アクティビティ図から SPIN モデル検

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.