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

SysMLステートマシン図から簡素なSPINモデルへの変換手法

N/A
N/A
Protected

Academic year: 2021

シェア "SysMLステートマシン図から簡素なSPINモデルへの変換手法"

Copied!
2
0
0

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

全文

(1)情報処理学会第 78 回全国大会. 4A-04. SysML ステートマシン図から簡素な SPIN モデルへの変換手法 安藤 崇央 ∗. 宮本 裕也 ∗. 谷津 弘一 ∗ 酒見 慶太 ‡. 久住 憲嗣 † 松本 充広 ‡. 福田 晃 ∗. 道浦 康貴 ‡. * 九州大学 大学院システム情報科学研究院 / 大学院システム情報科学府 ‡ 九州大学 システム LSI 研究センター § 有人宇宙システム株式会社. 1. はじめに. 䣵 䣶 䣯 䢢 䣪 䣧 䣣 䣶 䣧 䣴䣯 䣣 䣥 䣪 䣫 䣰 䣧 䣦 䣱䣫䣰䣩. モデル検査 [1] などを用いたソフトウェアの形式検 証についてはそのコストが問題となることが多く、検 証過程の初期段階においては検証コストを抑えるため 簡素なモデルの利用が期待される。また、検証用のモ デルの作成に関しても、SysML[2] ステートマシン図な どの設計情報から検証用モデルを自動生成する技術の 研究がなされている。本稿では、検証過程の初期段階 で利用可能な簡素な検証用モデルをステートマシン図 から自動生成する手法について議論する。特に、検証 用モデルとしてモデル検査器 SPIN[3] で利用されるモ デルについて扱い、ステートマシン図から SPIN 用の 簡素な検査モデルへの変換規則について紹介し、その 有効性について議論する。. 2. 䣝䣪䣧䣣䣶䣟. 䣪䣧䣣䣶 䣵 䣶 䣱䣲. 変換規則の概要 提案する変換規則では、XMI 形式で 表現されたステートマシン図と、ステートマシン図上 に現れる変数について、その型や初期値などの情報を 記述した変数情報を入力とする。各変換規則は、対応 するステートマシン図上の要素や変数情報などを検査 モデルを構成する Promela コードに変換する規則とな る。以下に、その変換規則の概要を示す。. 1. ステートマシン図の各状態名に対応する変数値を mtype の値として定義. Translation Method into Simple SPIN Model for SysML State Machine Diagram * Takahiro Ando, Yuya Miyamoto, Hirokazu Yatsu and Akira Fukuda,Graduate School and Faculty of Information Science and Electrical Engineering, Kyushu University †Kenji Hisazumi, System LSI Research Center, Kyushu University ‡Yasutaka Michiura, Keita Sakemi and Michihiro Matsumoto, Japan Manned Space Systems Corporation. 䣝䣪䣷䣯䣫䣦䣫䣨䣻䣟. 䣪 䣷 䣯䣫䣦 䣫䣨 䣻 䣱 䣰. 䣪 䣷 䣯䣫䣦 䣫䣨 䣻 䣱 䣰. 䣪 䣷 䣯䣫䣦 䣫䣨 䣻 䣱 䣨 䣨. 䣪 䣷 䣯䣫 䣦 䣫 䣨 䣻 䣱 䣨 䣨. 図 1: 空調システムのステートマシン図. 2. 現在の状態を表現するための変数を、ステートマ シン図上の領域の数だけ用意 3. イベント名に対応する変数値を mtype の値とし て定義 4. 生起したイベントを表現する変数を用意 5. ステートマシン図上の操作やガード条件中に出現 する変数について、入力の変数情報を基に、対応 する Promela コード用の変数を用意 6. 初期状態を inline 文を用いたマクロ定義に変換 7. 並行合成状態を含む状態を、3 つの inline 文マク ロに変換 8. 遷移を inline 文マクロに変換 9. 領域を 2 つの inline 文マクロに変換 10. 終了状態を inline 文マクロに変換 11. イベントの生成を表す inline 文マクロを生成 12. ステートマシンの振る舞いを表すプロセスを生成. SPIN モデルへの変換. 本節では、ステートマシン図を SPIN で用いられる Promela 言語で記述された簡素な検査モデルに変換す る変換規則について述べる。変換により生成される検 査モデルは、ステートマシン図の各要素との対応がと りやすいよう、要素毎にひとかたまりのコードとなる よう工夫している。 また、本稿で提案する簡素な検査モデルは、並行動 作するプロセスを持つステートマシン図を、ひとつの プロセスにまとめた検査モデルとなる。この検査モデ ルでは、ステートマシン図の表現する並行プロセスの すべての振る舞いを表現するものとはなっていないが、 状態爆発を防ぎ、検証コストを抑えることができるた め、検証プロセスの初期段階での利用に適する。. 䣹䣣 䣫 䣶. 䣦䣱䢢䢱䢢䣶䣧䣯䣲䣯䣱䣰䣫䣶䣱䣴䣑䣐. 䣹 䣪 䣧 䣰 䢪 䣰 䣱 䣹䣶 䣧 䣯 䣲 䢢 䢾 䢢 䣯 䣫 䣰 䣶 䣧 䣯 䣲 䢫. 䣲 䣱 䣹 䣧 䣴䣱 䣨 䣨 䣨 䣫䣰䣫䣵 䣪. 䣹䣪 䣧 䣰 䢪 䣰 䣱 䣹 䣶 䣧 䣯 䣲 䢢 䣀 䣯䣣 䣺 䣶 䣧 䣯䣲 䢫. 䣧䣰䣶䣴䣻䢢䢱䢢䣪䣧䣣䣶䣧䣴䣑䣐 䣦䣱䢢䢱䢢䣶䣧䣯䣲䣯䣱䣰䣫䣶䣱䣴䣑䣐 䣧䣺䣫䣶䢢䢱䢢䣪䣧䣣䣶䣧䣴䣑䣈䣈. 䣲 䣱 䣹 䣧 䣴䣱 䣰. 以下では、上記の変換規則のうち主要な規則につい て変換例を示しながら詳細を述べる。変換例はいずれ も、図 1 に示すステートマシン図の各要素を変換した ものである。 状態の変換 ステートマシン図上の各状態は、entry 部、 do 部、exit 部の 3 つのマクロ定義に分割されて変換さ れる。それぞれ、状態への入状時振る舞い、在状時振 る舞い、退状時振る舞いの 3 つに対応する。また、内 部に領域を持つ合成状態の場合、entry 部に内部領域の 初期状態の inline 文マクロ呼び出し、do 部に内部領域 の inline マクロ呼び出し、exit 部に内部領域の退状時 振る舞いの inline マクロ呼び出しが追加される。 , inline S_doing_entry() { topState = top_doing; T_doing_heat_init(); T_doing_humidification_init() } inline S_doing() { R_doing_heat(); R_doing_humidification() } inline S_doing_exit() { R_doing_heat_exit(); R_doing_humidification_exit(); doing_heatState = doing_heat_init; doing_humidificationState = doing_humidification_init }. 1-233. Copyright 2016 Information Processing Society of Japan. All Rights Reserved..

(2) 情報処理学会第 78 回全国大会. 遷移の変換 本稿で提案する変換規則では、ひとつの 状態からの複数の出力遷移をひとつの inline 文マクロ に変換する。各遷移は、if 文を用いて遷移のトリガとな るイベントによる条件分岐により分けて記述される。ま た、状態の内部遷移もその状態の出力遷移と同じ inline 文マクロにまとめられる。ステートマシン図の遷移の 表す意味論から、遷移元の状態の exit 部、遷移先の状 態の entry 部の inline 文マクロの呼び出しもまとめら れる。 , inline T_stop() { if :: (event == poweron) -> event = NULL; S_stop_exit(); S_doing_entry() :: (event == finish) -> event = NULL; S_stop_exit(); S_final(). 図 2: SPIN でのモデル検査実行例. :: else -> skip fi. 3. }. 領域の変換 ステートマシン図の領域毎に、その構成 要素となる状態と遷移の inline 文マクロをまとめ、そ の領域での状態遷移を表現する inline 文マクロに変換 する。また、その領域外への遷移時における操作も別 の inline 文マクロに変換される。 , inline R_doing_heat() { if :: (doing_heatState == doing_heat) -> S_doing_heat(); T_doing_heat(). 本節では、提案した変換規則によりステートマシン 図から生成した検査用モデルが、SPIN でのモデル検査 に利用可能であることを確認する。 適用例には、図 1 のステートマシン図を利用し、変 換規則を用いて生成した検査モデルを SPIN の入力とし て LTL モデル検査を行う。検査式として、“doing 状態 から stop 状態への遷移が起きない” ことを表す次の線 形時相論理式を用いて、この式を満足するか検査する。 , []( (topState == top_doing) -> [](topState != top_stop) ). :: (doing_heatState == doing_wait) -> S_doing_wait(); T_doing_wait() fi. この適用実験でのモデル検査の実行は、図 2 の通りで あり、その検査結果は、stop 状態への遷移が見つかっ たことを示している。これは、本稿の変換規則により 生成した検査モデルがモデル検査に実際に利用可能で あること、その検査結果が直観に合うものであること を示しており、ステートマシン図のモデル検査に本稿 の変換規則が有用であることを示している。. } inline R_doing_heat_exit() { if :: (doing_heatState == doing_heat) -> S_doing_heat_exit() :: (doing_heatState == doing_wait) -> S_doing_wait_exit() fi }. イベント生起モデルの変換 本稿で提案する検査用モ デルでは、イベント生起のモデルとして、“内部状態を 含めた現在の状態のいずれかの遷移のトリガとなるイ ベントのみが生起する” というモデルを採用する。 , inline eventOccur() { event == NULL; if :: (topState == top_stop) -> event = poweron :: (topState == top_stop) -> event = finish ... fi }. ステートマシンの振る舞いを表すプロセス 本稿で提 案する検査モデルでは、ステートマシン図の表す振る 舞いを表現するプロセスをひとつだけ用意する。この プロセスは、ステートマシン図の初期状態から実行が 始まり、イベント生起とそれに伴う状態遷移を交互に 繰り返し実行する。 , active proctype stm() { T_init(); do :: eventOccur(); R_top() od }. 適用. 4. まとめ. 本稿では、並行動作するプロセスを持つステートマ シン図に対して、SPIN モデル検査用の単一のプロセス を持つ簡易モデルへの変換手法について述べた。本稿 で提案した簡易検査モデルは、inline 文マクロを利用 することで変換元のステートマシン図の各要素に対応 する要素と、Promela 言語上でのコードとの対応がと りやすくなっている。また、実際に変換規則を用いて 生成した検査用モデルを用いたモデル検査が可能であ ることを示し、その有効性を確認した。今後の課題と して、本稿で提案した変換規則を利用した自動変換器 の実装を行い、より多くの例題に対して適用すること で、変換規則の洗練を行うことが挙げられる。. 参考文献 [1] Jr. Edmund M. Clarke, Orna Grumberg, and Doron A. Peled. Model Checking. The MIT Press, 1999. [2] OMG. OMG Systems Modeling Language Version 1.3. http://www.omg.org/spec/SysML/1.3/PDF, June 2012. [3] G. Holzmann. The Model Checker Spin. IEEE Trans, Vol. 23, No. 5, pp. 279–295, 1997.. 1-234. Copyright 2016 Information Processing Society of Japan. All Rights Reserved..

(3)

参照

関連したドキュメント

近年、めざましい技術革新とサービス向上により、深刻なコモディティ化が起きている。例え

線遷移をおこすだけでなく、中性子を一つ放出する場合がある。この中性子が遅発中性子で ある。励起状態の Kr-87

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

そこで本研究ではまず、乗合バス市場の変遷や事業者の経営状況などを考察し、運転手不

具体音出現パターン パターン パターンからみた パターン からみた からみた音声置換 からみた 音声置換 音声置換の 音声置換 の の考察

このよ うな塗 料系 のコ ーティ ング 膜では ,ひず みゲ ー ジ (48) や基板曲率法 (49)

事業所や事業者の氏名・所在地等に変更があった場合、変更があった日から 30 日以内に書面での

各テーマ領域ではすべての変数につきできるだけ連続変量に表現してある。そのため