23
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University SPIN ををををををををををををををををををを をををををををををををを をををを をををををををををを ををををををををををををを をを を をを を をを をを をを をを

SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

  • Upload
    etoile

  • View
    37

  • Download
    2

Embed Size (px)

DESCRIPTION

SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法. 大阪大学 大学院情報科学研究科 コンピュータサイエンス専攻 浜口 優 吉村 顕 岡野 浩三 楠本 真二. 研究の背景と目的. 研究の背景 Web アプリケーションの大規模複雑化 設計誤りを早期に漏れなく検出するのはますます困難 従来のソフトウェア開発における確認作業の問題点 人間の手作業による抜け落ちを完全に排除することは難しい レビュー:担当者による仕様の確認作業 受け入れテスト:テストチームによるテストケースの設定 ソフトウェア設計の確認作業で求められること - PowerPoint PPT Presentation

Citation preview

Page 1: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

SPIN を用いたウェブアプリケーションにおける

階層別モデル検査支援方法大阪大学 大学院情報科学研究科

コンピュータサイエンス専攻浜口 優 吉村 顕 岡野 浩三 楠本 真二

Page 2: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

2Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

研究の背景と目的研究の背景

Web アプリケーションの大規模複雑化設計誤りを早期に漏れなく検出するのはますます困難

従来のソフトウェア開発における確認作業の問題点人間の手作業による抜け落ちを完全に排除することは難しい

– レビュー:担当者による仕様の確認作業– 受け入れテスト:テストチームによるテストケースの設定

ソフトウェア設計の確認作業で求められること設計誤りを迅速に検出すること

– 上位仕様を対象とした検査手法の確立設計誤りを漏れなく検出すること

– 論理的な確認手法の確立

研究の目的Web アプリケーション仕様を対象としたモデル検査手法の提案と評価

上位仕様

上位仕様

実装

モデル検査

Page 3: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

3Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

モデル検査検査対象の動作が仕様通りであることを検証

デッドロック,到達不能状態の検出機能ユーザが定義した制約( LTL 等)の真偽判定

利用手順検査対象を有限状態機械としてモデル化検査ツールで全状態空間を迅速に探索

問題点検証用モデル記述言語の習得が必要状態爆発回避を考慮した抽象化には経験が必要

Page 4: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

4Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

提案手法問題点

システム全体をモデル化 状態爆発

提案手法Web アプリケーションを階層別にモデル化

階層– 画面遷移の検証– 内部処理の検証

利点– 状態爆発の軽減– モデル別に独立した検証

藤原貴之 他 , ”SPIN による Struts アプリケーションの動作検証を目的としたモデル生成手法の提案”

Page 5: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

5Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

対象 Web アプリケーションの概要

MVC アーキテクチャModel

具体的な処理View

ユーザの視点,画面Controller

Model と View の制御

各部の主な働きUser

アプリケーションの利用者Business Logic

具体的な処理の最小単位Action

まとまりのある処理単位を構成

– Business Logic の制御

User Action Business Logic Database

Controller ModelView1 1* *

ページ遷移検証用モデル 内部処理検証用モデル

1 *

1 1

Temporary Data

Page 6: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

6Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

検証用モデル生成の流れ検証用モデル生成支援ツールの作成

検証用モデルのスケルトンを出力モデル抽出の手間を削減抽出モデルの記述にかかる手間を緩和

支援ツールの入力仕様の情報を含む XML ファイル

Struts 設定ファイル画面定義ファイル (画面設計書等の情報から作成可能)内部処理定義ファイル (論理設計書から作成可能)

ページ遷移検証用モデル内部処理検証用モデル

仕様書等( XML ) 支援ツール

検証用モデル

( Promela )

検証器( SPIN )

制約( LTL ) 検証結果

検証者

Page 7: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

7Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

検証用モデル生成の基本方針各機能ごとに状態遷移プロセスを作成

プロセスどうしが同期することでシステムを表現ページ遷移検証用モデル内部処理検証用モデル

Database

BusinessLogic

Client

User

ActionServlet

RequestProcessor

JSPAction

Context

Client Server

ActionForm

ページ遷移検証用モデル 内部処理検証用モデル

図: Struts アプリケーションの概要

Page 8: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

8Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ページ遷移検証用モデル入力ファイル

画面定義ファイル画面内にどのアクションがあるのかを記述呼び出すアクション名

– パラメータ画面 ID

画面に含まれる JSP

Struts 設定ファイルアクション実行後どの画面に遷移するのかを記述

アクションの総数各アクションの名称処理後の遷移先

<screens> <screen id=“ 初期画面 "> <jsps> <jsp file="index.jsp" /> </jsps> <actions> <action name="/menu" parameter="action=init" /> <action name="/menu" parameter="action=top" /> </actions> </screen> <screen> ・・・・・・・・・・・・・ </screen></screens>

ページの枚数と名前

そのページから呼び出されるアクション

<struts-config> <form-beans> <form-bean name=“form” type=“Form” /> </form-beans> <action-mappings> <action path=“/index" type=“Index" name=“form” scope=“request” > <forward name=“init" path=“index.jsp" /> </action> </aciton-mappings></struts-config>

アクションの名前

アクション実行後の遷移先

Page 9: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

9Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ページ遷移検証用モデル出力となるモデル

クライアントプロセスView の情報より生成

画面定義ファイル(画面設計書)

– 表示画面の総数

アクションプロセスController の情報より生成

Struts 設定ファイル– アクションの総数– 各アクションの名称– 処理後の遷移先

ユーザからの入力

サーバへリクエスト送信

サーバからの受信

呼び出しを受信

遷移先を送信全体で6個のプロセスが同期して実現

? callAction! forward

? input

!HttpReq! view

?HttpRes

ユーザへ表示中画面の送信

Page 10: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

10Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ページ遷移検証用モデル工夫点:特殊な状況とそのモデル表現(外乱プロセ

ス)

二重送信購入確認画面

Submitボタン押下ミス購入完了処理

(支払い等)の二重化

サーバ

タイムアウト購入確認画面放置 → Submit

リクエスト情報の消失参照例外発生

ユーザリクエスト送信

通常時

リクエスト横取り

?HttpReq

!HttpReq

!HttpReq

!HttpReq通常時

リクエスト横取り

?HttpReq

二重送信発生時タイムアウト発生時

!HttpReq

Page 11: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

11Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

目次研究の背景と目的

モデル検査提案手法

対象 Web アプリケーションの概要検証用モデル生成の流れ

検証用モデル生成の基本方針ページ遷移検証用モデル内部処理検証用モデル

評価実験適用実験実験結果と考察

まとめ

Page 12: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

12Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

内部処理検証用モデル概要

内部処理Model 層における意味を持つまとまりある単位の処理

Action が複数の Business logic の呼び出し順序を制御して処理を実現

アクション

ビジネスロジック1

ビジネスロジック2

?callBusiness1

?callBusiness2

!returnAction1

?returnAction2

!callBusiness1

?returnAction1

!callBusiness2

?returnAction2

ビジネスロジック1呼び出し

ビジネスロジック1

処理終了受信ビジネスロジッ

ク2呼び出し

アクションから呼び出し受信

処理終了送信

Page 13: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

13Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

内部処理検証用モデル工夫点:マルチタスク環境に対応したモデル表現

内部処理は共有資源を扱うことが多いマルチタスク環境での動作検証が必要

並列に実行させる検証したい内部処理資源の競合を起こす可能性のある内部処理

資源の競合が起きるかどうかを検証できるモデルを作成可能(デッドロックを早期に発見可)

検証したい内部処理

資源の競合の可能性のある内部処理

共有ロック読み込み

排他ロック書き込み

ビジネスロジック

ビジネスロジック デッドロック

ロック開始と解除タイミングのミス

Page 14: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

14Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

内部処理検証用モデル生成支援ツールの入出力

入力:内部処理定義ファイル内部処理内の Action

Action の呼び出す Business logic

Business logic のアクセスする共有資源

出力:検証モデル

共有資源

共有ロック

排他ロック

読み込み

書き込み

<actions resource=“1">  <action name=“ActionA">   <business-objects>    <business name="businessA" order="0">     <dao name="daoA" resource=“1" order="0" type=“read" />    </business>   </business-objects> <action name=“ActionB”> <business-objects>    <business name="businessB" order="0">     <dao name="daoB" resource=“1" order="0" type=“write" />    </business>   </business-objects> </action></actions>

共有資源を設定アクションを定

呼び出すビジネスロジックを定義

ビジネスロジックの行う処理を定義

並列に実行する内部処理を定義

追加記述

追加記述

Page 15: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

15Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

評価実験実際の Web アプリケーションに適用企業の新人研修で開発された Web アプリケーション

ショッピングサイトWeb アプリケーションのページ遷移

二重送信タイムアウト

Web アプリケーション内の一部の内部処理購入確認処理検索処理

調べたいこと動作誤りの検証が可能かどうか?まとまった処理の検証が可能かどうか?

評価項目検証コスト(検証時間,メモリ使用量)

Page 16: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

16Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

適用実験:ページ遷移新人研修で開発された Web アプリケーション

ショッピングサイト画面遷移書,画面設計書がある黄色ノードへはメニューフレームより全画面から遷移可能

商品リスト 商品詳細トップ

カート詳細 購入 購入確認 購入完了

検証例としてここに着目

Page 17: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

17Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験結果と考察:ページ遷移

動作誤りが存在する場合の検証時間は数秒問題となる事象を個別に検証することで状態爆発を回避

外乱なし 二重送信 タイムアウト

二重送信とタイム

アウト状態数 約 600万 約 2億 約 2700万 状態爆発メモリ

( MB )781 1989 1046 -

検証時間 30分 15時間 2時間 -

検証結果 Valid Valid Valid -

実験環境CPU : 3GHz ,メモリ : 2GByte ,検証器 : SPINOS : Windows XP Professional Edition

Page 18: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

18Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

適用実験:購入確認処理処理内容共有資源内の注文番号を取得し、新規注文番号の書き込みを行う

2~6個の購入確処理を並列に実行検査項目

全ての購入確認処理が正常に終了し、共有資源に値を書き込んでいる

図:作成した検証モデル

購入確認処理 A 購入確認処理 B共有資源

外乱プロセス(外部から管理者の共有資源へのアクセスを想定)

ビジネスロジック

呼び出し

共有ロック掛けて

読み込み

排他ロック掛けて

書き込み

購入確認処理 Aと同じ処理

ランダムに共有ロック、排他ロックを掛

ける

Page 19: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

19Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験結果と考察:内部処理

動作誤りが存在する場合の検証時間は数秒同時に実行できるアクション数は2つのみ

アクション数2

アクション数3~6

状態数 約 120万 状態爆発メモリ

( MB )705 -

検証時間 10秒 -

検証結果 Valid -

実験環境CPU : 3GHz ,メモリ : 2GByte ,検証器 : SPINOS : Windows XP Professional Edition

購入確認処理アクショ

ン数2

アクション数3~6

状態数 約 200万 状態爆発メモリ

( MB )957 -

検証時間 24秒 -

検証結果 Valid -

検索処理

Page 20: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

20Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験結果と考察:内部処理(外乱プロセスなし)

実験環境CPU : 1.69GHz ,メモリ : 512MByte ,検証器 : SPINOS : Windows XP Home Edition

購入確認処理アクション数2

アクション数3~6

状態数 約 1万 5千 状態爆発メモリ

( MB )160 -

検証時間 約 1秒 -

検証結果 Valid -

検索処理

アクション数2

アクション数3

アクション数4~6

状態数 約 1万 約 180万 状態爆発メモリ

( MB )160 160 -

検証時間 約 1秒 25秒 -

検証結果 Valid Valid -

Page 21: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

21Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

モデル生成と検証の手間ページ遷移検証:約3日

モデル作成画面定義ファイル記述

追加記述検証式( LTL式)

内部処理検証:約1日モデル作成

内部処理定義ファイル記述– 購入確認処理– 検索処理

追加記述モデル内の詳細記述検証式( LTL式)

Page 22: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

22Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

まとめWeb アプリケーション検証用モデル生成支援手法外乱の導入によって異常発生時の動作設計支援並列実行によるマルチタスク環境での内部処理動作設計支援

検証用コードの自動生成ツール試作モデル検査利用者の利便性向上

提案したモデルはある程度状態爆発を回避

 今後の課題より多数のプロセスを用いたモデルの状態爆発の克服

Page 23: SPIN を用いたウェブアプリケーションにおける 階層別モデル検査支援方法

2006/8/4

23Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University