• 検索結果がありません。

Spin モデル検査器を用いた MVC 型 Web アプリケーションの検証支援

N/A
N/A
Protected

Academic year: 2021

シェア "Spin モデル検査器を用いた MVC 型 Web アプリケーションの検証支援"

Copied!
1
0
0

読み込み中.... (全文を見る)

全文

(1)

平成30年度 学士学位論文梗概 高知工科大学 情報学群

Spin モデル検査器を用いた MVCWeb アプリケーションの検証支援

1190325 里見 優太 【 ソフトウェア検証・解析学研究室 】

1 はじめに

一般に,ソフトウェアの不具合を見つけ出す手法とし てテストがよく用いられる. しかし,見逃しのないよう に十分網羅的なテストを実施することはコストが大き ,また見逃しがないことを保証することも困難である. テストが持つこのような欠点を補う目的で,モデル検査 等の形式手法を用いて不具合を検出する方法が多数研 究されている. Webアプリケーションにおける上記の ような不具合を形式手法を用いて検出する研究として [1]がある. 先行研究ではMVCアーキテクチャを使用 したWebアプリケーションのソースコードから, 形式 仕様記述言語Alloyを用いた検証コードの自動生成を行 い, 検証を行うことで不具合がないか確かめている.

証内容はAlloy記法でソースコード内にコメントとして

記述する.

しかし, [1]では, Alloyの詳細な仕様や[1]で行う変換 内容を理解していなければ検証項目の記述を行うこと ができない問題や, 数値をうまく取り扱えず,数値に関 する検証ができない問題がある.

そこで,本研究では形式手法の詳細な仕様を理解して いなくても容易に検証項目を記述でき,数値に対する処 理を検証することができるWebアプリケーション検証 支援ツールを開発する.

2 提案手法

提案手法の概略を図1に示す. 本研究では図1に示す, 変換器を作成した. また,検証対象はPythonWeb プリケーションフレームワークであるDjangoを使って 構築されたアプリケーションとした. 本手法では検証対 象のモデル内で宣言された整数型のフィールドに対し て,データの処理を行う際に不具合がないことを検証す る. 利用者は,検証に用いる変数と検証したい性質を検 証内容記述ファイルに記述し,検証対象ソースコード内 にコメントとして検証を行う場所を記述する. それに 対して本システムは,検証対象ソースコードと検証内容 記述ファイルに基づいてPromelaコードを自動生成し,

1 提案手法の概要

モデル検査器Spinで検証を行う.

検証内容記述ファイルと検証対象ソースコードの例を プログラム12に示す. プログラム15〜6行目が 検証内容の記述である. 検証対象メソッドの実行前・実 行後の変数の値を,変数名にbefore・after を付けて表 している.

プログラム1 検証記述ファイルの例 1 # use_value

2 stock.count = 10 3 cart.count

4

5 # add_cart_assert

6 spin_assert1 assert(after_stock.count ==

before_stock.count -1)

プログラム2 検証対象ソースコードの例 1 def add_cart(request, item_name):

2 . . . .

3 stock = Stocks.objects.get(name=item_name) 4 cart = Cart.objects.get(name=stock.name) 5 stock.count -= 1

6 cart.count += 1 7 # spin_assert1

8 . . . .

3 実験結果

本研究で作成した変換器の評価を行うために, Django を用いて2種類のショッピングサイトアプリケーション の作成を行い, 検証を行った. 一方は先行研究[1]で検 証対象に用いられているものと同じ仕様で実装を行い, もう一方は外部ライブラリを用いて機能を追加したもの を実装した. その結果, 双方のアプリケーション共にモ デルに記述されている値のみを用いた処理については 変換を行うことができた. また,前者のアプリケーショ ンについては作成中に混入した不具合を検証を行うこ とで見つけ出すことができた. しかし,一部の処理や外 部ライブラリを用いた処理に対して,変換を行うことが できない問題があると判明した.

4 まとめ

本稿では, MVCWebアプリケーションで用いる整

数型フィールドに対するアクションに不具合が含まれて いないか検証するためのシステムの作成を行った. その 結果,先行研究では見つけ出すことの出来なかった, プリケーションに含まれている不具合を見つけることが 出来た. 今後の課題として,現在対応していない構文へ の対応や外部ライブラリを交えた場合の変換規則の追 加が考えられる.

参考文献

[1] 水谷 浩明, 結縁 祥治, “Alloy を用いた Ruby on

Railsアプリケーションの開発支援”,電子情報通信

学会技術研究報告, SS2011-64, pp. 43–48, 2012

参照

関連したドキュメント

このような情念の側面を取り扱わないことには それなりの理由がある。しかし、リードもまた

当社は「世界を変える、新しい流れを。」というミッションの下、インターネットを通じて、法人・個人の垣根 を 壊 し 、 誰 もが 多様 な 専門性 を 生 かすことで 今 まで

しかし , 特性関数 を使った証明には複素解析や Fourier 解析の知識が多少必要となってくるため , ここではより初等的な道 具のみで証明を実行できる Stein の方法

私たちは、行政や企業だけではできない新しい価値観にもとづいた行動や新しい社会的取り

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば

者は買受人の所有権取得を争えるのではなかろうか︒執行停止の手続をとらなければ︑競売手続が進行して完結し︑

○安井会長 ありがとうございました。.

 筆記試験は与えられた課題に対して、時間 内に回答 しなければなりません。時間内に答 え を出すことは働 くことと 同様です。 だから分からな い問題は後回しでもいいので