JP6332284B2 - 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム - Google Patents

分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム Download PDF

Info

Publication number
JP6332284B2
JP6332284B2 JP2015557700A JP2015557700A JP6332284B2 JP 6332284 B2 JP6332284 B2 JP 6332284B2 JP 2015557700 A JP2015557700 A JP 2015557700A JP 2015557700 A JP2015557700 A JP 2015557700A JP 6332284 B2 JP6332284 B2 JP 6332284B2
Authority
JP
Japan
Prior art keywords
distributed environment
state
transition
environment model
search
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015557700A
Other languages
English (en)
Other versions
JPWO2015107711A6 (ja
JPWO2015107711A1 (ja
Inventor
豊 八鍬
豊 八鍬
伸行 富沢
伸行 富沢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2015107711A6 publication Critical patent/JPWO2015107711A6/ja
Publication of JPWO2015107711A1 publication Critical patent/JPWO2015107711A1/ja
Application granted granted Critical
Publication of JP6332284B2 publication Critical patent/JP6332284B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Description

本発明は、分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラムに関する。
近年、システムやソフトウェアの検証手法として、モデル検査による検証手法が知られている。モデル検査とは、検証対象を状態遷移系としてモデル化し、それを網羅的に探索することで、検証対象が仕様を満たすか検証する技術である。設計段階から適用でき、検証対象が仕様を満たすか否かを保証できるため、システムやソフトウェアの信頼性を向上させるための技術として注目されている。
また、最近ではネットワークの検証への適用も試みられている。例えば非特許文献1では、OpenFlowという技術(非特許文献2、3を参照)により制御されたネットワークをモデル検査により状態探索する際、OpenFlowコントローラのプログラムを記号実行し、全てのコードパスを実行するためのパケットの代表値の集合を求め、それを用いて状態探索を行う技術を開示している。
モデル検査は、上記のような特長を持つ一方、計算に必要なメモリや時間が、検証対象の規模に対し指数的に増大するという課題を持つ。そのため、実践的なシステムやソフトウェアの検証を目的としたモデル検査においては、探索の効率化が不可欠である。
例えば非特許文献4では、マルチスレッド環境モデルに対するモデル検査において、検証の観点で冗長な探索を枝刈りする技術であるDPOR(Dynamic Partial Order Reduction)を開示している。
DPORでは、モデル検査対象の状態遷移系を探索する際、最初に適当な1つのパス(経路)で状態間を遷移する。そして、そのパスの遷移系列の中に、互いの実行順序が実行結果に影響を及ぼす遷移のペアが存在するか確認する。このような遷移のペアを、依存関係のある遷移と呼ぶ。依存関係のある遷移が存在する場合、そのペアの実行順序を入れ替えたパスで状態間を遷移しながら探索するため、新たな探索を開始する位置を示すバックトラック地点をそのパス中に生成する。例えば、依存関係のある遷移のペアのうち先に行った遷移の直前の状態を先程実行したパスから探し、当該状態をバックトラック地点とする。
そして、先程のパスから、依存関係のある遷移を全て検出し終えたら、当該パス上で最後方にあるバックトラック地点から探索を再開する。バックトラック地点がなくなるまでこの手順を繰り返す。これにより、検証対象の全ての実行パターンのうち、実行結果が異なるパスのみを探索することが可能である。言い換えると、検証結果が異ならないパス、つまり、検証の観点で冗長なパスの探索を枝刈りすることができ、探索の効率化が実現される。
非特許文献5では、DPORを改良した技術であるSDPORを開示している。モデル検査では、一般的に、過去に探索した状態(探索済み状態)に再度到達した場合、その状態以降の探索は当然ながら冗長であるため、探索を打ち切る。しかし、DPORにおいては、安易に探索を打ち切ると、パス上の依存関係のある遷移の解析に影響し、正しい結果が得られない。そのためDPORでは、探索済み状態に到達した場合でも、探索を打ち切らずに続ける。
SDPORは、探索済み状態に到達した場合に、探索を打ち切ることが可能なように改良したDPORである。SDPORでは、過去の探索で行われた遷移をグラフで管理し、依存関係の解析に利用する。グラフは、各ノードに遷移が紐付けられ、各有向エッジが、過去の探索で行った遷移の実行順序を表すものである。例えば、探索中に行った遷移t1の直後の状態をs1とすると、さらにs1から遷移t2を行った場合、前記グラフ中の遷移t1に対応するノードn1から、遷移t2に対応するノードn2に有向エッジが引かれる(ノードn1やn2がグラフ中に存在しなければ作成される)。
SDPORでは、過去に探索した状態s2に到達すると、状態s2から行うことのできる遷移を調べ、その遷移に対応するノードをグラフ中から探し、さらに、そのノードから有向エッジを辿って到達可能なノードを全て抽出する。ここで、先程抽出したノードに対応する遷移は、s2以降の状態遷移において実行され得る遷移を表している。これらの遷移と、現在のパス上の遷移とを用いて依存関係を解析し、バックトラック地点を生成する。これらの手順により、探索済みの状態以降の探索を打ち切っても、正しく依存関係を解析することができ、探索の打ち切りが可能な分効率化されるのが、SDPORの特長である。
非特許文献6では、DPORを分散環境モデルのモデル検査向けに修正した技術であるDPOR−DSを開示している。検証対象のモデルの環境の違いを吸収するため、バックトラック地点を生成する方法を変更している。実行パス上の遷移間の関係について、依存関係とは別に、分散環境モデルにおけるhappens-before関係を定義し、バックトラック地点の生成の判断に利用する。happens-before関係とは、あるモデル上で必ず成り立つ遷移間の実行順序関係である。例えば、あるパケットpの送受信を行う遷移を考えたとき、パケットpの送信を行う遷移は、パケットpの受信を行う遷移よりも必ず先に起こる。このように、モデル上の因果関係から、必ず成り立つ遷移間の順序関係がhappens-before関係である。
DPOR−DSでは、実行パス上の遷移について、依存関係に加えてhappens-before関係の有無も解析し、ある遷移間に依存関係があったとしても、happens-before関係が成り立つ場合には、バックトラック地点を生成しない。これらの手順により、分散環境モデルのモデル検査においても、DPORと同様の探索の枝刈りが可能になるのが、DPOR−DSの特長である。
Canini, M. et al.: "A NICE Way to Test OpenFlow Applications", Proc. of NSDI, 2012. McKeown, N. et al.: "OpenFlow: enabling innovation in campus networks", ACM SIGCOMM Computer Communication Review, Vol. 38, No. 2, pp. 69-74, 2008. "OpenFlow Switch Specification Version 1.0.0 (Wire Protocol 0x01)", 2009. http://www.openflow.org/documents/openflow-spec-v1.0.0.pdf Flanagan, C. et al.: "Dynamic partial-order reduction for model checking software", Proc. of POPL '05, pp. 110-121, 2005. Yang, Y. et al.: "Efficient Stateful Dynamic Partial Order Reduction", Proc. of SPIN '08, pp. 288-305, 2008. Yabandeh, M. et al.: "DPOR-DS: Dynamic Partial Order Reduction in Distributed Systems", EPFL Technical Report NSL-REPORT-2009-005, 2009.
非特許文献4、5、6を含む従来技術の問題点は、分散環境モデルに対するモデル検査において、DPORを適用する際、探索済み状態以降の探索の打ち切りができず、探索が非効率的だということである。
非特許文献6のDPOR−DSは、分散環境モデルのモデル検査に適用可能なDPORだが、非特許文献4のDPORと同様の理由により、探索済み状態以降の探索の打ち切りができない。
非特許文献5のSDPORは、探索済み状態以降の探索の打ち切りが可能なDPORだが、モデル検査の対象は非特許文献4のDPORと同様、マルチスレッド環境モデルを想定している。分散環境モデルにDPORを適用するには、DPOR−DSが行っているように、happens-before関係の解析を必要とするが、その解析には、探索で行った複数のパス各々における遷移の順序を示す情報が必要になる。しかし、SDPORが探索済み状態以降の探索を打ち切るために管理するグラフでは、過去の探索において遷移が行われた順序をパス毎に区別することなく保存してしまうため、必要な情報が取得できず、happens-before関係が解析できない。以下、図15及び図16を用いて説明する。
例えば、SDPORで、図15の上側のグラフで示されるような順に状態間を遷移するパスで探索を行った場合、過去の探索で行われた遷移を示すグラフとして、図15の下側に示すグラフが生成される。図15の上側のグラフによれば、状態Soから遷移t0で状態S1に移動したこと、その後、遷移t1で状態S2に移動したこと、その後、遷移t2で状態S3に移動したことが分かる。このパスで行われた遷移の順序は、t0→t1→t2である。このような遷移の順序を示すグラフが、図15の下側に示されている。当該グラフでは、t0乃至t2の遷移各々に対応する3つのノードが表示され、かつ、遷移の順序を示すため各ノード間に有向エッジが引かれている。
ここで、図15に示すパスにおける遷移t1とt2の間に依存関係があったとする。この場合、図16の上側に示すように、状態S1がバックトラック地点となり、この地点からの状態探索が新たに行われる。図16の上側に示すグラフよれば、状態S1→状態S4→状態S3のパスで新たな状態探索が行われたことが分かる。SDPORでは、この場合、過去の探索で行われた遷移を示すグラフとして、図16の下側に示すようなグラフを生成する。図16の下側に示すグラフは、図15の下側に示すグラフに対して新たな情報を加えたものである。具体的には、遷移t0の後に遷移t2を行ったこと、及び、遷移t2の後に遷移t1を行ったことを示すため、t0からt2に向かう有向エッジ、及び、t2からt1に向かう有向エッジが新たに加えられている。
このように、SDPORで管理されるグラフでは、1つの遷移に1つのノードが対応し、有向エッジで過去の探索で行われた遷移の前後関係が示される。このようなグラフの場合、過去に行った複数のパス各々における遷移の順序を把握できない。このため、SDPORでは、happens-before関係を解析できない。
このように、分散環境モデルのモデル検査にSDPORをそのまま適用することはできない。結果として、従来技術では、分散環境モデルに対するモデル検査において、DPORを適用する際、探索済み状態以降の探索の打ち切りができず、探索が非効率的であるという課題があった。
本発明の目的は上記の問題を解決することにあり、分散環境モデルに対するモデル検査においてDPORを適用する際、探索済み状態以降の探索を打ち切る手段を提供することで、効率的な探索を可能にする技術を提供することにある。
本発明によれば、
複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索部と、
過去に探索された探索済みの前記状態を記憶する探索済み状態管理部と、
過去に実行された前記直線移動各々における前記遷移の順序を記憶する探索済み遷移履歴管理部と、
探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶する探索済み状態遷移対応情報管理部と、
前記分散環境モデル探索部が1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens-before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析部と、
を有し、
前記分散環境モデル探索部は、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始する分散環境モデル用モデル検査装置が提供される。
また、本発明によれば、
コンピュータを、
複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索手段、
過去に探索された探索済みの前記状態を記憶する探索済み状態管理手段、
過去に実行された前記直線移動各々における前記遷移の順序を記憶する探索済み遷移履歴管理手段、
探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶する探索済み状態遷移対応情報管理手段、
前記分散環境モデル探索部が1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens-before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析手段、
として機能させ、
前記分散環境モデル探索手段に、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始させるプログラムが提供される。
また、本発明によれば、
コンピュータが、
複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索工程と、
過去に探索された探索済みの前記状態を記憶部に記憶させる探索済み状態管理工程と、
過去に実行された前記直線移動各々における前記遷移の順序を記憶部に記憶させる探索済み遷移履歴管理工程と、
探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶部に記憶させる探索済み状態遷移対応情報管理工程と、
前記分散環境モデル探索工程で1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens-before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析工程と、
を実行し、
前記分散環境モデル探索工程では、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始する分散環境モデル用モデル検査方法が提供される。
本発明によれば、分散環境モデルに対するモデル検査においてDPORを適用する際、探索済み状態以降の探索を打ち切る手段が実現される。結果、効率的な探索が可能となる。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
本発明の第1の実施の形態の分散環境モデル用モデル検査装置の構成を示す機能ブロック図である。 本発明の第1の実施の形態の動作を示すフロー図である。 本発明の第1の実施の形態におけるステップS12の一部の詳細を示すフロー図である。 本発明の第1の実施の形態におけるステップS12の一部の詳細を示すフロー図である。 本発明の第1の実施の形態におけるステップS12の一部の詳細を示すフロー図である。 本発明の第1の実施の形態におけるステップ13の一部の詳細を示すフロー図である。 本発明の第1の実施の形態におけるステップS13の一部の詳細を示すフロー図である。 本発明の第1の実施の形態におけるステップS13の一部の詳細を示すフロー図である。 本発明の第1の実施の形態におけるステップS14の一部の詳細を示すフロー図である。 本発明の第3の実施の形態の分散環境モデル用モデル検査装置の構成を示す機能ブロック図である。 本発明の第1の実施の形態の動作を説明するための概念図である。 本発明の第1の実施の形態の動作を説明するための概念図である。 本発明の第1の実施の形態の動作を説明するための概念図である。 本発明の第1の実施の形態の動作を説明するための概念図である。 比較例の課題を説明するための概念図である。 比較例の課題を説明するための図である。
以下、本発明の実施の形態について図面を用いて説明する。なお、同様の構成要素には同様の符号を付し、適宜説明を省略する。
本実施形態の装置は、任意のコンピュータのCPU(Central Processing Unit)、メモリ、メモリにロードされたプログラム(あらかじめ装置を出荷する段階からメモリ内に格納されているプログラムのほか、CD(Compact Disc)等の記憶媒体やインターネット上のサーバ等からダウンロードされたプログラムも含む)、そのプログラムを格納するハードディスク等の記憶ユニット、ネットワーク接続用インタフェイスを中心にハードウエアとソフトウエアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。
なお、以下の実施形態の説明において利用する機能ブロック図は、ハードウエア単位の構成ではなく、機能単位のブロックを示している。これらの図においては、各装置は1つの機器により実現されるよう記載されているが、その実現手段はこれに限定されない。すなわち、物理的に分かれた構成であっても、論理的に分かれた構成であっても構わない。
<第1の実施形態>
[構成]
まず、図面を参照しながら本発明の第1の実施の形態の構成について詳細に説明する。
図1を参照すると、本発明の第1の実施の形態における分散環境モデル用モデル検査装置1は、分散環境モデル探索部11と、分散環境モデル依存関係解析部12と、探索済み状態管理部13と、探索済み遷移履歴管理部14と、探索済み状態遷移対応情報管理部15と、を含む。
分散環境モデル探索部11は、分散環境モデル依存関係解析部12、探索済み状態管理部13、探索済み遷移履歴管理部14、探索済み状態遷移対応情報管理部15のそれぞれと、情報をやり取りするように構成されている。探索済み状態遷移対応情報管理部15は、探索済み状態管理部13が管理する探索済み状態と、探索済み遷移履歴管理部14が管理する遷移と、を紐付けるため、その対応関係を管理する。以下、各部について説明する。
分散環境モデル探索部11は、複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で状態間を移動する分散環境モデルを示す情報を取得すると、第1の状態を開始位置とし、1つ以上の遷移で分岐することなく直線的に終了位置となる第2の状態まで移動する直線移動(分岐を含まない直線パスによる状態移動)を複数実行することで分散環境モデルがとり得る状態を探索するとともに、探索した状態が所定のプロパティを満たすか否かを判定する。そして、分散環境モデル探索部11は、1つの直線移動の探索を終了すると、その後、バックトラック地点を開始位置として、他の直線移動を開始する。
例えば、分散環境モデル探索部11は、ユーザーから入力装置を介して、分散環境モデルと、当該分散環境モデルが満たすべきプロパティと、を含む検証情報D11を受け取る。すると、分散環境モデル探索部11は、受け取った検証情報D11を用いてモデル検査を実行し、上記プロパティの成否と、上記プロパティが満たされない場合にはそれを示す反例と、を含む検証結果D14を、出力装置を介してユーザーに返す。分散環境モデルの仕様は、後述する依存関係及びhappens-before関係が適切に定義でき、それらがコンピュータ処理で解析可能な状態遷移系であれば何でもよい。また、分散環境モデルの記述形式も、コンピュータで処理可能であれば何でもよい。第1の実施の形態では、分散環境モデルの仕様を以下に示すものとして説明する。
第1の実施の形態の分散環境モデルにおける状態の定義について説明する。状態は、(N、M、Q)の三つを要素とする組として定義される。Nは分散環境中の動作主体であるノード(以下、動作主体ノード)の集合であり、Nの要素n(n∈N)はその状態を表す変数swを持つ。Mは動作主体ノード間でやり取りされるメッセージの集合であり、Mの要素m(m∈M)はメッセージの内容を表す変数mvを持つ。Qは通信チャネルの集合であり、Qの要素q(q∈Q)は複数のメッセージを格納する変数により実現される通信チャネルである。
なお、動作主体ノードは、通信チャネルにメッセージが格納された順番とは無関係に任意の順番で通信チャネルからメッセージを取り出せるものとする。各動作主体ノードは、その他の動作主体ノードと通信するための通信チャネルを、互いに通信可能な各動作主体ノードに対し送信用と受信用とを1つずつ持つ。ある1つの動作主体ノードにとっての送信用通信チャネルは、それ以外の1つの動作主体ノードにとっての受信用通信チャネルであり、その逆も然りである。
第1の実施の形態の分散環境モデルにおける遷移の定義について説明する。遷移は、分散環境モデルに存在する動作主体ノードのいずれかが、特定の単位の動作を実行することでモデルの状態が変化(移動)する様子を表すものとする。特定の単位の動作とは、具体的には以下の3種類である。
1.動作主体ノードによるメッセージ送信
2.動作主体ノードによるメッセージ受信
3.動作主体ノードによる内部動作
以下では上記3種類の動作についてそれぞれ詳しく説明する。
動作主体ノードによるメッセージ送信について説明する。動作主体ノードは、自身の状態svに応じて、メッセージ送信動作を実行することが可能である。当該動作では、動作主体ノードnがメッセージmを1つ生成して、動作主体ノードnのメッセージ送信用通信チャネル(=動作主体ノードn以外のある動作主体ノードにとっての受信用通信チャネル)にメッセージmを格納し、自身の状態svの内容を変更する(変更しない場合もある)。
動作主体ノードによるメッセージ受信について説明する。動作主体ノードは、自身のメッセージ受信用通信チャネルにメッセージが1つ以上格納されている場合、メッセージ受信動作を実行することが可能である。当該動作では、動作主体ノードnは、メッセージが1つ以上格納されている自身のメッセージ受信用通信チャネルqから、任意のメッセージmを1つ取り出す。そして、動作主体ノードnは、メッセージmの内容mvに応じて自身の状態svの内容を変更する(変更しない場合もある)。
動作主体ノードの内部動作について説明する。動作主体ノードは、自身の状態svに応じて、内部動作を実行することが可能である。内部動作を実行した動作主体ノードnは、自身の状態svの内容を変更する(変更しない場合もある)。
分散環境モデル探索部11は、状態を変化させるにあたり、上記のモデルの動作に加えて、変化後の状態における、検証情報D11に含まれるプロパティの成否を確認する。プロパティが満たされない場合には、プロパティが満たされないという結果と、それを示す具体例である反例と、を含む検証結果D14を、出力装置を介してユーザーに返す。なお、検証情報D11において、プロパティは必ずしも含まれていなくてよい。プロパティが定義されていない場合、典型的なプロパティを検証することとし、以降は分散環境モデル用モデル検査装置1全体が、検証情報D11に典型的なプロパティが含まれているかのように動作することができる。
分散環境モデル依存関係解析部12は、分散環境モデル探索部11が1つの直線移動(分岐を含まない直線パスによる状態移動)を終了すると、当該直線移動において所定の順序で実行された複数の遷移に対して、依存関係、及び、happens-before関係の解析を行い、必要に応じて、当該直線移動のパス(直線パス)上にバックトラックすべき地点を示すバックトラック地点を生成する。分散環境モデル探索部11が、OpenFlowネットワーク環境を表す分散環境モデルの探索を行う場合、分散環境モデル依存関係解析部12は、OpenFlowネットワーク環境における依存関係及びhappens-before関係の解析を行うことができる。
例えば、分散環境モデル依存関係解析部12は、分散環境モデル探索部11から、実際に探索を実行したパス(実行パス)の内容を示す実行パス情報D12を受け取る。実行パス情報D12には、少なくとも前半部分実行パスが含まれる。実行パス情報D12には、さらに、前半部分実行パスの後ろに繋げられる1つ以上の後半部分実行パスが含まれてもよい。分散環境モデル依存関係解析部12は、受け取った実行パス情報D12を利用して、実行パス上の2つの遷移間の依存関係及びhappens-before関係を解析する。
例えば、実行パス情報D12に後半部分実行パスが含まれない場合、分散環境モデル依存関係解析部12は、実行パス情報D12に含まれる前半部分実行パス上の2つの遷移間の依存関係及びhappens-before関係を解析する。一方、実行パス情報D12に後半部分実行パスが含まれる場合、分散環境モデル依存関係解析部12は、実行パス情報D12に含まれる前半部分実行パスと、1つの後半部分実行パスと、をこの順に結合してできる実行パス上の2つの遷移間の依存関係及びhappens-before関係を解析する。なお、実行パス情報D12に複数の後半部分実行パスが含まれる場合、分散環境モデル依存関係解析部12は、前半部分実行パスと、複数の後半部分実行パス各々とをこの順に結合してできる複数の実行パス各々の2つの遷移間の依存関係及びhappens-before関係を解析する。そして、分散環境モデル依存関係解析部12は、解析結果に基づいて前半部分実行パス上にバックトラック地点を生成し、その結果(バックトラック地点が生成された前半部分実行パス)D13を分散環境モデル探索部11に返す。
依存関係とは、2つの遷移間に成り立つ関係であり、直感的には、それら2つの遷移の実行順序を変更する(逆にする)と、状態遷移系におけるそれらの遷移後の結果が変わったり、あるいは、それらのうち片方の遷移を行うことで、もう片方の遷移が行えるようになったり行えなくなったりする場合に、2つの遷移間に依存関係が成り立つ(依存関係がある)という。遷移t1とt2の間に依存関係が「成り立たない」条件は、一般的には以下のように定義される。
1.「状態s1(モデルの状態)において遷移t1が実行可能であり、状態s1から遷移t1により状態s2へ遷移する場合、遷移t2は状態s1とs2との両方で実行可能か、両方で実行不可能かのいずれかである。」
2.「状態s1において遷移t1とt2が実行可能である場合、状態s1から遷移t1を実行した先の状態で遷移t2を実行した先の状態がs2であるならば、状態s1から遷移t2を実行した先の状態で遷移t1を実行した先の状態もs2である。」
分散環境モデル依存関係解析部12は、上記の一般的な依存関係の成否を解析してもよい。しかし、上記の一般的な依存関係の成否を解析するのはコストが高いため、第1の実施の形態においては、ここで用いる分散環境モデルの仕様と、DPORのアルゴリズムと、を考慮し、以下の条件を満たす場合、依存関係があると定義する。
「遷移t1で動作した動作主体ノードと遷移t2で動作した動作主体ノードが同じ動作主体ノードであり、いずれの遷移でも動作主体ノードの状態svの内容を変更している。」
happens-before関係とは、あるモデル上で必ず成り立つ遷移間の実行順序関係である。例えば、第1の実施の形態における分散環境モデルで、あるメッセージmの送受信を行う遷移を考えたとき、メッセージmの送信に起因した遷移t1は、メッセージmの受信に起因した遷移t2より必ず先に起こる。このように、モデル上の因果関係から必ず成り立つ遷移間の実行順序関係がhappens-before関係であり、t1→t2と記述する。第1の実施の形態においては、ここで用いる分散環境モデルの仕様と、DPORのアルゴリズムと、を考慮し、以下のようにhappens-before関係を定義する。
1.「遷移t1が動作主体ノードによるメッセージ送信に起因した遷移であり、遷移t2が動作主体ノードによるメッセージ受信に起因した遷移であり、遷移t1で送信されるメッセージと遷移t2で受信されるメッセージが同じメッセージである場合、t1→t2」

2.「t1→t2であり、t2→t3である場合、t1→t3」
実行パス情報D12のデータ構造について説明する。実行パス情報D12に含まれる前半部分実行パスは、(st、tr、Backtrack、Done)の四つを要素とする組の配列(あるいはそれに準ずるデータ構造)である。
stはある時点での分散環境モデルの状態であり、trは状態stから行われた遷移である。Backtrackは遷移の集合である。この集合は、モデル検査による探索においてバックトラックするにあたり、状態st(同じ組の状態)から実行されるべき遷移の集合である。Doneも遷移の集合である。この集合は、探索において状態st(同じ組の状態)から過去に実行したことのある遷移の集合である。ある組のBacktrackに含まれるが、その組のDoneに含まれない遷移は、その組の状態stからバックトラックして実行されるべきだがまだ実行されていない遷移である。
実行パス情報D12に含まれる後半部分実行パスは、遷移の配列(あるいはそれに準ずるデータ構造)である。「実行パス要素の遷移」と表現した場合、前半部分実行パスの要素であれば、trのことを表し、後半部分実行パスの要素であれば、その要素そのもの(=遷移)を表す。ある実行パス情報D12に含まれる前半部分実行パスはちょうど1つでなければならないが、後半部分実行パスは1つでもよく、複数でもよく、また、なくてもよい。
遷移のデータ構造について説明する。遷移は(node、type、send、recv、change_flag)の五つを要素とする組である。
nodeはその遷移の原因となった動作を行った動作主体ノードであり、typeは遷移の原因となった動作の種類(メッセージ送信、メッセージ受信、内部動作等を表す値)である。sendはその遷移の原因となった動作「メッセージ送信」で送信したメッセージを識別する情報であり、recvはその遷移の原因となった動作「メッセージ受信」で受信したメッセージを識別する情報である。change_flagは、その遷移の原因となった動作を行った動作主体ノードの状態svが変更されたか否かを表すフラグで、変更された場合はtrue、変更されていない場合はfalseが格納される。このデータ構造に基づく遷移データは、分散環境モデル探索部11による探索において、分散環境モデルの状態が遷移した際に、その遷移の内容に応じて、各フィールドの値が適切に設定された上で生成される。
探索済み状態管理部13は、過去に探索された探索済みの状態を記憶する。例えば、探索済み状態管理部13は、分散環境モデル探索部11から、探索が行われた分散環境モデルの状態(を示す情報)を受け取り保存する。保存する方法は、受け取った状態(を示す情報)をそのまま保存してもよいし、何らかの変換を施したもの(例えば記憶容量削減のため圧縮されたもの)を保存してもよい。また、探索済み状態管理部13は、分散環境モデル探索部11から、ある分散環境モデルの状態が過去に探索済みか否かの問い合わせを受け付けると、その状態と一致するものが保存している状態の中にあるか否か検索し、ある場合は「探索済み」、ない場合は「未探索」という回答を分散環境モデル探索部11に返す。
探索済み遷移履歴管理部14は、過去に実行された直線移動(分岐を含まない直線パスによる状態移動)各々における遷移の順序を記憶する。例えば、探索済み遷移履歴管理部14は、分散環境モデル探索部11から、探索が行われた遷移(を示す情報)を受け取り、以下で説明するグラフ構造により保存する。グラフは、ノードと、各ノード間を結ぶ有向エッジとで表現される。グラフは、パスの出発点を表す根ノードと、探索時に行われた複数の遷移各々を表す複数の遷移ノードとを含む。有向エッジは分散環境モデルにおける特定のパス上での遷移の実行順序を表す。根ノードからの有向エッジが引かれた遷移ノードにより表わされた第1の遷移は、分散環境モデルの初期状態から行われた最初の遷移である。また、この遷移ノードからの有向エッジが引かれた他の遷移ノードにより表わされた第2の遷移は、第1の遷移の次に行われた遷移である。
SDPORにおいては、互いに異なるパス上で行われる遷移trに関して、管理するグラフ中で遷移trを表す遷移ノードは常に1つである(遷移とグラフ中のノードとが1対1の関係を満たす)。これに対し、探索済み遷移履歴管理部14が管理するグラフ上では、遷移trが互いに異なるパス(直線パス)上で実行された場合、これらに異なるノードを対応付けて管理する。本実施形態は、このようなグラフ構造を用いることで、根ノードから有向エッジをたどることにより、過去に行った直線パス何れに関しても遷移の順序を把握できる。これが、本実施形態とSDPORとの差異である。なお、分散環境モデル探索部11による探索の開始時点では、グラフは空であり、分散環境モデル探索部11から新しいノード(根ノード、遷移ノード)及び有向エッジを生成する指示を受け付け、グラフが構築されていく。
探索済み状態遷移対応情報管理部15は、探索済みの状態各々に、過去の探索において他の状態に移動した時の遷移を対応付けて記憶する。例えば、探索済み状態遷移対応情報管理部15は、分散環境モデル探索部11により過去に探索された分散環境モデルの状態と、当該状態から行われた遷移とを紐付ける情報を保存する。また、探索済み状態遷移対応情報管理部15は、分散環境モデル探索部11から、分散環境モデルのある状態を入力として与えられ、その状態から過去の探索で行われた遷移の問い合わせを受けると、探索済み遷移履歴管理部14が管理する情報を利用して、当該状態から行われた遷移を特定し、特定した結果を返す。当該状態から行われた遷移が複数ある場合には、それらの遷移を表す情報を全て返す。また、探索済み状態遷移対応情報管理部15は、分散環境モデル探索部11から、分散環境モデルのある状態とある遷移を入力として与えられ、それらを紐付ける指示を受け付けると、当該状態と、探索済み遷移履歴管理部14に保存されている当該遷移を表すノードと、を紐付ける。
[動作]
次に、第1の実施の形態の動作について詳細に説明する。
まず、図2を用いて全体的な流れを説明する。ユーザーは、検証情報D11を作成し、入力装置を介して分散環境モデル探索部11に入力する(図2のステップS11)。
分散環境モデル探索部11は、検証情報D11を受け取ると、検証情報D11に含まれる分散環境モデルを状態遷移させて適当な1つのパス(直線パス)による探索を行う。そして、実行したパスを示す実行パス情報D12を生成して分散環境モデル依存関係解析部12に受け渡す(ステップS12)。分散環境モデル依存関係解析部12は、実行パス情報D12を利用して上記実行パス上の依存関係及びhappens-before関係を解析し、必要に応じて前半部分実行パス上にバックトラック地点を生成して、その結果(バックトラック地点が生成された前半部分実行パスD13)を分散環境モデル探索部11に返す(ステップS13)。
分散環境モデル探索部11は、前半部分実行パスD13上にバックトラックしていないバックトラック地点が含まれる場合(ステップS15のYes)、所定のバックトラック地点(例:前半部分実行パスD13上で一番深いバックトラック地点)から分散環境モデルを再び状態遷移させ、新たな実行パス情報D12´を得て、それを分散環境モデル依存関係解析部12に受け渡す(ステップS14)。分散環境モデル依存関係解析部12は、実行パス情報D12´を利用して実行パス上の依存関係及びhappens-before関係を解析し、同様の処理を行う(ステップS13)。前半部分実行パスD13上にバックトラックしていないバックトラック地点が含まれる場合(ステップS15のYes)、上記処理を繰り返す。
その後、分散環境モデル探索部11は、各遷移後の状態におけるプロパティの成否と、プロパティが満たされない場合にはそれを示す反例と、を含む検証結果D14を出力する(ステップS16)。そして、ユーザーは、ステップS16で出力された検証結果D14を確認する(ステップS17)。
なお、遷移後の状態(探索された状態)各々におけるプロパティの成否の判定を行うタイミングは、例えば、以下のような例が考えられる。一例として、分散環境モデル探索部11は、ステップS12で分散環境モデルを状態遷移させて1つのパス(直線パス)による探索を行う処理、及び、ステップS14で所定のバックトラック地点から他のパス(直線パス)による探索を行う処理において、状態遷移させた都度、遷移後の状態におけるプロパティの成否を判定することができる。または、分散環境モデル探索部11は、ステップS15でNoとなった後に、それまでに行った遷移各々の後の状態(探索済みの状態)におけるプロパティの成否をまとめて判定することができる。
なお、図2には示していないが、状態遷移させた都度、遷移後の状態におけるプロパティの成否を判定する処理の場合、プロパティが満たされない状態を見つけると、その時点でモデル検査の処理を終了し、検証結果D14を出力してもよい。
図2に示すように、すべての状態遷移を行った後に検証結果を出力するように構成する場合、分散環境モデルに存在するプロパティを満たさない状態をすべて発見し、その結果を検証結果D14として出力することができる。
次に、図3乃至図9、図11乃至図14を参照して、各ステップをより詳細に説明する。まず、図11乃至図14について説明する。図11乃至図14における、「状態遷移の様子」は、分散環境モデルの状態stの探索において実際に行われた状態間の遷移の様子(事実)を示している。「遷移」、「遷移履歴」、「前半部分実行パス」及び「後半部分実行パス」は、分散環境モデルの状態stの探索時に本実施形態の分散環境モデル用モデル検査装置により処理されるデータを模式的に示している。「遷移」に示されている複数の遷移要素Tr0乃至Tr5各々は、検証情報D11で特定される実行可能な遷移各々を示している。そして、図では、「状態遷移の様子」における状態st間の矢印と、遷移要素とを対応付けることで、状態st間の移動各々において行われた遷移の内容を示している。「遷移履歴」は、探索済み遷移履歴管理部14が管理する遷移履歴のグラフを示している。「前半部分実行パス」及び「後半部分実行パス」は、分散環境モデル探索部11等により生成される実行パス情報D12を示している。
図11に示す「遷移」を見ると、(node、type、send、recv、change_flag)の五つを要素とする組のデータにより、遷移Tr0乃至Tr5各々の内容が示されている。当該データによれば、例えば、「状態遷移の様子」で示される実行パスにおける状態St0から状態St1への遷移は、遷移Tr0に起因したものであり、その動作主体ノードはノード1、動作内容は動作主体ノードによるメッセージの送信、送信したメッセージの識別情報はパケット1、当該動作に起因して動作主体ノードの状態は変化しなかったことが分かる。
また、「状態遷移の様子」及び「遷移」を見ると、当該パスでは、Tr0→Tr1→・・・Tr5の順に遷移が行われたことが分かる。「遷移履歴」のグラフでは、当該順に遷移が行われたことが示されている。また、「遷移履歴」を見ると、各遷移がどの状態に紐付いているかも分かる。さらに、「前半部分実行パス」を見ると、順に蓄積された実行パス要素Peを確認することで、当該パスにおいて状態stはSt0→St1→・・・→St5の順に遷移し、遷移trはTr0→Tr1→・・・Tr5の順に行われたことが分かる。また、各状態stから行われた遷移、及び、各状態stから行うべきバックトラックが分かる。
なお、図2のステップS12の開始時点では、図11乃至図14に示される「遷移履歴」、「前半部分実行パス」及び「後半部分実行パス」のデータは空の状態であり、ステップS12以降のステップを実行することで、図示するデータが徐々に生成されていく。
まず、図3及び図11を用いて、ステップS12について説明する。分散環境モデル探索部11は、検証情報D11から分散環境モデルを抽出し、その分散環境モデルの初期状態St0を生成して、状態st=St0とする(図3のステップS12_1)。次に、探索済み遷移履歴管理部14が管理するグラフに初期状態St0を表す根ノードを生成させる(ステップS12_2)。このステップにより、図11に示す「遷移履歴」の根ノードが生成される。さらに、分散環境モデル探索部11は、初期状態St0と、ステップS12_2で生成させた根ノードと、を探索済み状態遷移対応情報管理部15に紐付けさせる(ステップS12_3)。なお、図11では、遷移履歴のグラフにおける各ノード(根ノード及び遷移ノード)内に、各ノードがどの状態stと紐付いているのかを示す情報が記載されているが、紐付ける手法はこれに限定されない。
次いで、分散環境モデル探索部11は、初期状態St0を探索済み状態管理部13に登録する(ステップS12_4)。次に、分散環境モデル探索部11は、検証情報D11を利用して、初期状態St0から実行可能な遷移が1つ以上あるかチェックし(ステップS12_5)、ある場合はその中から任意の遷移trを1つ選んで初期状態St0からの遷移tr(図11の場合、遷移Tr0)を行わせ、当該遷移後の状態st´(図11の場合、St1)を生成する(ステップS12_6)。さらに、分散環境モデル探索部11は、実行パス要素(st、tr、Backtrack、Done)を生成して、実行パススタックに積む(ステップS12_7)。このステップにより、図11の「前半部分実行パス」に示す実行パス要素Pe0が生成される。実行パス要素Pe0に含まれるstは遷移前の状態を示し(図11の例の場合、St0)、trは今回実行された遷移を示す(図11の例の場合、Tr0)。また、Backtrackは実行すべきバックトラックの遷移を示し(図11の例の場合、なし)、Doneは今回及び過去に当該遷移前の状態から実行された遷移を示す(図11の例の場合、Tr0)。
次いで、分散環境モデル探索部11は、探索済み遷移履歴管理部14が管理するグラフに、ステップS12_5で行った遷移trを表す遷移ノードNd1を生成させ、根ノードから遷移ノードNd1に向かう有向エッジを引く(ステップS12_8)。このステップにより、図11の「遷移履歴」に示す遷移ノードNd1(遷移Tr0を表す遷移ノード)が生成され、また、根ノードから遷移ノードNd1に向かう有向エッジが引かれる。
次に、分散環境モデル探索部11は、状態st´(図11の例の場合、St1)と、ノードNd1と、を探索済み状態遷移対応情報管理部15に紐付けさせる(ステップS12_9)。さらに、分散環境モデル探索部11は、状態st´(図11の例の場合、St1)が探索済み状態管理部13に登録済みか否かチェックし(ステップS12_10)、登録済みでなければ登録して(ステップS12_11)、ステップS12_5へ戻る(戻る際にst=st´(図11の例の場合、st=St1)とする)。
その後、ステップS12_5でNo、又は、ステップS12_10でYesとなるまで同様の処理を繰り返すことで、図11に示すようなデータが生成される。
ステップS12_5でNoとなった場合(すなわち、ステップS12_10でYesとなることがなかった場合)、分散環境モデル探索部11は、その時点での実行パススタックの内容(図11の場合、実行パス要素Pe0乃至Pe5)を前半部分実行パスとし、後半部分実行パスは空である実行パス情報D12を生成し、分散環境モデル依存関係解析部12に受け渡して(ステップS12_19)、ステップS12を終了する。
次に、ステップS12_10でYesとなった後の処理について、図4、図12及び図13を用いて説明する。
ステップS12_10でYesとなった場合、すなわち、ある遷移後の状態st´が探索済み状態管理部13に登録済みであった場合、まず、分散環境モデル探索部11は、探索済み状態遷移対応情報管理部15において状態st´と紐付いている遷移ノードを全て取得する(ステップS12_12)。
図12の例の場合、過去にSt0→St1→St2→St3→St4→St5→St6のパスで探索を行い、今回はSt2→St7→St4のパスで探索を新たに行っている。この場合、新たなパスの探索において状態St7から遷移Tr2を行って状態St4となった後、ステップS12_10で状態St4が探索済み状態管理部13に登録済みと判断される。図12の「遷移履歴」及び「前半部分実行パス」は、状態St7から遷移Tr2を行って状態St4となり、ステップS12_10で探索済み状態管理部13に登録済みと判断された直後の状態を示している。この場合、分散環境モデル探索部11は、ステップS12_12で、探索済み状態遷移対応情報管理部15において状態St4と紐付いている遷移ノードNd4を取得する。なお、図示する例の場合、状態St4と紐付いている遷移ノードは1つ(Nd8は除く)であるが、複数ある場合、分散環境モデル探索部11は、状態St4と紐付いている複数の遷移ノードすべてを取得する。
次に、分散環境モデル探索部11は、ステップS12_12で取得した遷移ノードの中から任意の遷移ノードnd2を選び出し(ステップS12_13)、探索済み遷移履歴管理部14が管理するグラフにおいて、遷移ノードnd2から有向エッジを1つだけたどって到達できる遷移ノードnd3を全て列挙する(ステップS12_14)。ステップS12_13で全ての遷移ノードが選び出されるまで、ステップS12_13からS12_14を繰り返す(ステップS12_15のYesのループ)。
図12の例の場合、分散環境モデル探索部11は、遷移ノードNd4から有向エッジを1つだけたどって到達できる遷移ノードNd5を取得する。
ステップS12_15でNoとなると、ステップS12_16に進む。ステップS12_16では、分散環境モデル探索部11は、探索済み遷移履歴管理部14が管理するグラフにおいて、ステップS12_10で登録済みと判断された状態st´になる遷移を表す遷移ノードから、ステップS12_14で選んだ遷移ノードnd3のそれぞれに対し、有向エッジを引く(ステップS12_16)。
図12の例の場合、登録済みと判断された状態St4になる遷移(状態St7からの遷移Tr2)を表す遷移ノードNd8から、ステップS12_14で選んだ遷移ノードNd5に向かう有向エッジを引き、結果、図13に示す状態となる。
次に、分散環境モデル探索部11は、状態st´を起点状態とし、1つ以上の後半部分実行パスを取得する(ステップS12_17)。その後、分散環境モデル探索部11は、その時点での実行パススタックの内容(ステップS12_10で登録済みと判断された状態st´となるまでの実行パス)を前半部分実行パスとし、これに、ステップS12_17で取得した1つ以上の後半部分実行パスをあわせて実行パス情報D12を生成し、分散環境モデル依存関係解析部12に受け渡して(ステップS12_18)、ステップS12を終了する。
ここで、ステップS12_17について、図5及び図13を参照してより詳細に説明する。まず、分散環境モデル探索部11は、探索済み状態遷移対応情報管理部15において起点状態st´と紐付けられている全ての遷移ノードを抽出する(ステップS12_17_1)。図13の例の場合、起点状態st´である状態St4と紐付けられている遷移ノードNd4を抽出する。
次に、抽出した遷移ノードの中から任意の遷移ノードndを選び出し(ステップS12_17_2)、探索済み遷移履歴管理部14が管理するグラフにおいて、遷移ノードndから有向エッジを最後まで(=他の遷移ノードへの有向エッジがない遷移ノードに到達するまで)たどって得られる実行パス(1つの後半部分実行パス)を取得する(ステップS12_17_3)。図13の例の場合、遷移ノードNd4から有向エッジを最後までたどって得られる実行パス「Tr4→Tr5」を取得する。
ステップS12_17_2の途中で分岐が生じる(=他の遷移ノードへの有向エッジが複数ある遷移ノードに到達する)場合は、有向エッジのたどり方の全てのパターンを網羅し、全ての実行パス(複数の後半部分実行パス)を取得する。ステップS12_17_1で抽出した遷移ノードが全て選び出されるまで、ステップS12_17_2からS12_17_3を繰り返す(ステップS12_17_4)。この手順で取得した実行パス全てを後半部分実行パスとし(ステップS12_17_5)、ステップS12_17を終了する。この処理により、図13に示す「後半部分実行パス」が生成される。
このように、分散環境モデル探索部11は、N回目(Nは1以上の整数)の直線移動の探索時においては、例えば各状態を探索する都度、当該状態が探索済み状態管理部13に記憶されているか確認することができる。そして、記憶されている場合、当該状態を終了位置として当該直線移動の探索を終了するとともに、探索済み遷移履歴管理部14及び探索済み状態遷移対応情報管理部15が記憶する情報を利用して、過去の探索(N−1回目以前の探索、及び、N回目のそれまでの探索)においてN回目の探索の終了位置となった状態以降に行われた遷移及びその順序を示す実行済みパスを1つ以上取得することができる。そして、分散環境モデル依存関係解析部12は、N回目の直線移動の探索のパスと、分散環境モデル探索部11が取得した1つ以上の実行済みパス(N回目の探索の終了位置となった状態以降に行われた遷移及びその順序を示す実行済みパス)各々とをこの順に結合してできる一続きのパスに含まれる所定の順序の複数の遷移に対して、依存関係、及び、happens-before関係の解析を行い、N回目の直線移動の探索のパス上にバックトラック地点を生成することができる。
次に、図2のステップS13について、図6及び図14を参照してより詳細に説明する。分散環境モデル依存関係解析部12は、まず、解析対象の実行パスを特定する。実行パス情報D12に後半部分実行パスが含まれない場合、分散環境モデル依存関係解析部12はその実行パス情報D12に含まれる前半部分実行パスを解析対象の実行パスとする。図14の例の場合、前半部分実行パスが解析対象の実行パスとなる。
その後、分散環境モデル依存関係解析部12は解析対象の実行パス(前半部分実行パス)に対して、happens-before関係を解析するための前処理を行う。そして、依存関係があり、かつ、happens-before関係がない遷移の組み合わせを特定すると、実行パス(前半部分実行パス)にバックトラック地点を生成する。その後、分散環境モデル依存関係解析部12は、バックトラック地点を生成した実行パス(前半部分実行パスD13)を分散環境モデル探索部11に返して、ステップS13を終了する。
一方、実行パス情報D12に1つ以上の後半部分実行パスが含まれる場合、分散環境モデル依存関係解析部12は図6の流れで処理を行う。まず、分散環境モデル依存関係解析部12は、実行パス情報D12に含まれる1つ以上の後半部分実行パスから、任意のものを1つ選び出す(ステップS13_1)。次に、実行パス情報D12に含まれる、前半部分実行パスと、ステップS13_1で選んだ後半部分実行パスと、をこの順に結合してできる実行パスを解析の対象とする(ステップS13_2)。
次に、分散環境モデル依存関係解析部12は、解析対象の実行パスに対し、happens-before関係を解析するための前処理を行う(ステップS13_3)。さらに、分散環境モデル依存関係解析部12は、依存関係及びhappens-before関係の解析とバックトラック地点の生成を行う(ステップS13_4)。実行パス情報D12に含まれる後半部分実行パスが複数ある場合は、その全てがステップS13_1で選び出されるまで、ステップS13_1からS13_4を繰り返す(ステップS13_5)。最後に、バックトラック地点を生成した前半部分実行パスD13を分散環境モデル探索部11に返して(ステップS13_6)、ステップS13を終了する。
ステップS13_3について、図7を参照してより詳細に説明する。ステップS13_3では、解析対象の実行パス中の各実行パス要素Peについて、その実行パス要素Peの遷移とhappens-before関係にある(必ず先に起こる)遷移を持つ実行パス要素Peを求めていく。そのため、実行パス要素Pe毎に、その要素の遷移とhappens-before関係にある遷移を持つ実行パス要素Peの集合を保持するデータ構造(happens-before集合)を用意する。
分散環境モデル依存関係解析部12は、まず、解析対象の実行パス(実行パス要素Pe0乃至Pex)から、i番目(iは最初は1)の実行パス要素Peiを選び出す(ステップS13_3_1)。次に、j番目(jは最初は0)の実行パス要素Pejを選び出す(ステップS13_3_2)。さらに、実行パス要素Peiの遷移と、実行パス要素Pejの遷移と、を比較し(ステップS13_3_3)、[実行パス要素Pejの遷移→実行パス要素Peiの遷移」(happens-before関係)である場合は、実行パス要素Peiのhappens-before集合(最初は空)に、実行パス要素Pejと、実行パス要素Pejのhappens-before集合に含まれる全ての実行パス要素と、を追加する(ステップS13_3_4)。
ステップS13_3_3における比較は、具体的には、実行パス要素Peiの遷移の受信メッセージrecvの値(受信したメッセージの識別情報)と、実行パス要素Pejの送信メッセージsendの値(送信したメッセージの識別情報)と、が一致するか否か比較し、一致すればhappens-before関係があるとする。次に、jの値を1増やす(ステップS13_3_5)。jの値がi以上になるまで、ステップS13_3_2からS13_3_5を繰り返す(ステップS13_3_6)。jの値がi以上になったら、iの値を1増やし、jの値を0にする(ステップS13_3_7)。iの値が解析対象の実行パスの長さより大きくなるまで、ステップS13_3_1からS13_3_7を繰り返し(ステップS13_3_8)、ステップS13_3を終了する。
ステップS13_4について、図8を参照してより詳細に説明する。モデル依存関係解析部12は、まず、解析対象の実行パスのうち、前半部分実行パスの範囲から、n番目(nは最初は0)の実行パス要素Penを選び出す(ステップS13_4_1)。次に、解析対象の実行パスから、m番目(mは最初はn+1)の実行パス要素Pemを選び出す(ステップS13_4_2)。さらに、実行パス要素Penの遷移と、実行パス要素Pemの遷移と、を比較し、それらに「依存関係があり、happens-before関係がない」か否かチェックする(ステップS13_4_3)。
ステップS13_4_3の比較のうち、依存関係に関しては、実行パス要素Pen及びPemの遷移の動作主体ノード(node)が等しく、かつ、両方の遷移の状態変更フラグchange_flagがtrueであれば、依存関係があるとする。ステップS13_4_3の比較のうち、happens-before関係に関しては、実行パス要素Pemのhappens-before集合に実行パスaが含まれていれば、happens-before関係があるとする。
ステップS13_4_3で、実行パス要素Pen及びPemに「依存関係があり、happens-before関係がない」ことが分かった場合、実行パス要素Pemのhappens-before集合に含まれる実行パス要素のうち、解析対象の実行パスにおいて最前方にある実行パス要素Pelを選び、実行パス要素Penのバックトラック集合に実行パス要素Pelの遷移を追加することで、バックトラック地点を生成する(ステップS13_4_4)。次に、mの値を1増やし(ステップS13_4_5)、mの値が解析対象の実行パスの長さより大きくなるまで、ステップS13_4_2からS13_4_5を繰り返す(ステップS13_4_6)。mの値が解析対象の実行パスの長さより大きくなったら、nの値を1増やし、mの値をn+1にする(ステップS13_4_7)。nの値が前半部分実行パスの長さより大きくなるまで、ステップS13_4_1からS13_4_7を繰り返し(ステップS13_4_8)、ステップS13_4を終了する。
ステップS14について、図9を参照してより詳細に説明する。分散環境モデル探索部11は、まず、実行パススタックの内容を、ステップS13で取得した前半部分実行パスD13に置き換える(ステップS14_1)。次に、実行パススタックの中で、バックトラック地点を持つ(=バックトラック集合からdone集合を引いた差集合が空でない)実行パス要素Peのうち最後方にある実行パス要素Peqを探し出し、それ以降の実行パス要素(Peqは含まない)を実行パススタックから取り除く(ステップS14_2)。次に、実行パス要素Peqのバックトラック集合に含まれ、done集合に含まれない任意の遷移trを1つ選び、実行パス要素Peqが持つ状態stに遷移trを行わせ、次の状態st´を生成する(ステップS14_3)。
さらに、実行パス要素Peqが持つ遷移をtrに置き換え、done集合にtrを追加する(ステップS14_4)。次いで、探索済み遷移履歴管理部14が管理するグラフに遷移trを表す遷移ノードNdqを生成させる(ステップS14_5)。次に、探索済み状態遷移対応情報管理部15において状態stと紐付いている遷移ノードを全て列挙し、そのそれぞれから遷移ノードNdqに向かう有向エッジを引く(ステップS14_6)。さらに、状態st´'と、遷移ノードNdqと、を探索済み状態遷移対応情報管理部15に紐付けさせる(ステップS14_7)。その後、ステップS12_10に進む。以降の手順はステップS12の説明で述べたものと同様なので省略する。
[効果]
分散モデル検査用モデル検査装置1は、モデル検査による探索の際、探索した状態を保存し管理する(探索済み状態管理部13)と同時に、探索において行われた遷移の内容とその順序をパス毎に区別して取得可能な履歴を表すグラフ構造を用いて、探索した遷移を保存し管理する(探索済み遷移履歴管理部14)。また、探索した状態及び遷移の管理にあたり、探索済み状態からどの遷移が行われたかを紐付けておく(探索済み状態遷移対応情報管理部15)。
そして、モデル検査による探索中に探索済み状態に到達したら、その探索済み状態及びそこから行われた遷移の履歴情報が紐付けて保存・管理されているので、履歴情報を取得し、到達した状態以降は疑似的にその履歴情報と同様の遷移を行ったものとみなし依存関係とhappens-before関係を解析し、必要に応じてバックトラック地点を生成して探索を打ち切る。これにより、探索済み状態以降を再度探索することなく依存関係やhappens-before関係の探索ができ、分散環境モデルに対するモデル検査においてDPORを適用する場合でも、探索済み状態以降の探索の打ち切りが可能になる。結果として、探索の効率化が実現される。
<第2の実施形態>
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。以下では、第1の実施の形態と同様の部分の説明は省略し、異なる部分についてのみ説明する。
[構成]
まず、図1を参照しながら、本発明の第2の実施の形態の構成について詳細に説明する。
分散環境モデル探索部11は、ユーザーから入力装置を介して、分散環境モデルと、当該分散環境モデルが満たすべきプロパティと、を含む検証情報D11を受け取ると、検証情報D11を用いてモデル検査を実行し、プロパティの成否と、プロパティが満たされない場合にはそれを示す反例と、を含む検証結果D11を、出力装置を介してユーザーに返す。
分散環境モデルは、OpenFlowによって制御されるネットワーク(OpenFlowネットワーク)環境を表すモデルであるとし、その仕様は、OpenFlowの仕様に則った状態遷移系であれば何でもよい。分散環境モデルの記述形式は、コンピュータによる処理が可能であれば何でもよい。第2の実施の形態では、分散環境モデルの仕様を以下に示すものとして説明する。
第2の実施の形態の分散環境モデルにおける状態の定義について説明する。状態は、(T、S、C、P、M、Q)の六つを要素とする組として定義される。
Tは端末の集合であり、Tの要素t(t∈T)はその状態を表す変数svを持つ。Sはスイッチの集合であり、Sの要素s(s∈S)はスイッチにインストールされているフローエントリの集合を表す変数Eを持つ。Eの要素e(e∈E)はフローエントリであり、マッチングルールの内容を表す値mrとアクションフィールドの内容を表す値afにより(mr、af)の組として定義される。Cはコントローラの集合であり、Cの要素c(c∈C)は、コントローラcの各動作モデルが大域的に扱う変数の集合を表す変数Vを持つ。Vの要素v(v∈V)はコントローラの動作モデルが大域的に扱う変数の1つであり、変数の名前を表す値vnとその変数の内容を表す値vvにより(vn、vv)の組として定義される。Pはパケットの集合であり、Pの要素p(p∈P)はパケットの内容を表す変数pvを持つ。MはOpenFlowメッセージの集合であり、Mの要素m(m∈M)はOpenFlowメッセージの内容を表す変数mvを持つ。Qは通信ポートの集合であり、Qの要素q(q∈Q)はパケット及びOpenFlowメッセージを格納するFIFO(First In、First Out)キューにより実現される通信ポートである。
各端末・スイッチ・コントローラは、その他の端末・スイッチ・コントローラと通信するための通信ポートを、互いに通信可能な各端末・スイッチ・コントローラに対し送信用と受信用とを1つずつ持つ。ある1つの端末・スイッチ・コントローラにとっての送信用通信ポートは、それ以外の1つの端末・スイッチ・コントローラにとっての受信用通信ポートであり、その逆も然りである。また、端末・スイッチ・コントローラを総称し、ノードと呼ぶ場合もある。
第2の実施の形態の分散環境モデルにおける遷移の定義について説明する。遷移は、分散環境モデル(OpenFlowネットワーク)に存在する端末・スイッチ・コントローラのいずれかが、特定の単位の動作を実行することでモデルの状態が変化する様子を表すものとする。特定の単位の動作とは、具体的には以下の6種類である。
1. 端末によるパケット送信
2. 端末によるパケット受信
3. スイッチによるフローエントリ適用
4. スイッチによるPacket-Inメッセージ送信
5. スイッチによるOpenFlowメッセージ受信
6. コントローラによるプログラム実行
以下では上記6種類の動作についてそれぞれ詳しく説明する。
端末によるパケット送信について説明する。端末は、自身の状態svに応じて、パケット送信動作を実行することが可能である。端末のパケット送信では、端末tがパケットpを1つ生成して、端末tの送信用通信ポート(=あるスイッチsにとってのパケット受信用通信ポート)にパケットpを格納し、自身の状態svの内容を変更する(変更しない場合もある)。
端末によるパケット受信について説明する。端末は、自身のパケット受信用通信ポートにパケットが1つ以上格納されている場合、パケット受信動作を実行することが可能である。端末のパケット受信では、端末tがパケットが1つ以上格納されている自身のパケット受信用通信ポートqから、最初に格納されたパケットpを取り出す。そして、パケットpの内容pvに応じて自身の状態svの内容を変更する(変更しない場合もある)。
スイッチによるフローエントリ適用について説明する。スイッチは、自身のパケット受信用通信ポートにパケットが1つ以上格納されており、パケット受信用ポートに最初に格納されたパケットに適用可能なフローエントリを持つ場合、フローエントリ適用動作を実行することが可能である。スイッチのフローエントリ適用動作では、まずパケットが1つ以上格納されているスイッチsのパケット受信用通信ポートqから、最初に格納されたパケットpを取り出す。次に、スイッチsが持つ各フローエントリのマッチングルールmrと、パケットpの内容pvと、を比較し、パケットpに適用可能なフローエントリeを1つ選ぶ。最後に、フローエントリeのアクションフィールドafに従い動作を実行する。
スイッチによるPacket-Inメッセージ(OpenFlowメッセージの1つ)送信について説明する。スイッチは、自身のパケット受信用通信ポートにパケットが1つ以上格納されており、パケット受信用ポートに最初に格納されたパケットに適用可能なフローエントリを持たない場合、Packet-Inメッセージ送信動作を実行することが可能である。スイッチのPacket-Inメッセージ送信動作では、まずパケットが1つ以上格納されているスイッチsのパケット受信用通信ポートq1から、最初に格納されたパケットpを取り出す。次に、パケットpの情報を含めたPacket-Inメッセージmを、コントローラに対応するOpenFlowメッセージ送信用通信ポートq2に格納する。
スイッチによるOpenFlowメッセージ受信について説明する。スイッチは、自身のOpenFlowメッセージ受信用通信ポートにOpenFlowメッセージが1つ以上格納されている場合、OpenFlowメッセージ受信動作を実行することが可能である。スイッチのOpenFlowメッセージ受信動作では、まずOpenFlowメッセージが1つ以上格納されているスイッチsのOpenFlowメッセージ受信用通信ポートqから、最初に格納されたOpenFlowメッセージmを取り出す。次に、OpenFlowメッセージmの内容mvに従い動作を実行する。
コントローラによるプログラム実行について説明する。コントローラは、自身のOpenFlowメッセージ受信用通信ポートにOpenFlowメッセージが1つ以上格納されている場合、プログラム実行動作を実行することが可能である。コントローラのプログラム実行動作では、まずOpenFlowメッセージが1つ以上格納されているコントローラcのOpenFlowメッセージ受信用通信ポートqから、最初に格納されたOpenFlowメッセージmを1つ取り出す。次に、OpenFlowメッセージmの内容mvを参照し、検証情報D11に含まれる分散環境モデルにおいて定義されているコントローラの動作のうち、mvに対応するものを実行する(定義されていない場合はOpenFlow仕様で規定されているデフォルトの動作を実行する)。
第2の実施の形態においては、ここで用いる分散環境モデルの仕様と、DPORのアルゴリズムと、を考慮し、以下の条件を満たす場合、依存関係があると定義する。
「遷移t1で動作した動作主体ノード(端末、スイッチ及びコントローラのいずれか)と遷移t2で動作した動作主体ノードが同じである。」
第2の実施の形態においては、ここで用いる分散環境モデルの仕様と、DPORのアルゴリズムと、を考慮し、以下のようにhappens-before関係を定義する。
1.「遷移t1で送信されるパケットあるいはメッセージと、遷移t2で受信されるパケットあるいはOpenFlowメッセージが同じである場合、t1→t2」
2.「遷移t1でインストールされるフローエントリと、遷移t2で適用されるフローエントリが同じである場合、t1→t2」
3.「遷移t1で受信されるパケットあるいはOpenFlowメッセージpm1と、遷移t2で受信されるパケットあるいはOpenFlowメッセージpm2と、は同じ受信用通信ポートqに格納されており、pm1をqに格納した遷移t3と、pm2をqに格納した遷移t4と、がt3→t4である場合、t1→t2」
4.「t1→t2であり、t2→t3である場合、t1→t3」
遷移のデータ構造について説明する。遷移は(node、type、send、recv、port、install、apply)の七つの要素の組である。nodeはその遷移で動作した動作主体(端末、スイッチ、コントローラのいずれか)であり、typeは遷移の原因となった動作の種類(上記6種類の動作のいずれかを表す値)である。sendはその遷移で送信したパケットあるいはOpenFlowメッセージの集合、recvはその遷移で受信したパケットあるいはOpenFlowメッセージを表す。portはその遷移で受信したパケットあるいはOpenFlowメッセージが格納されていた受信用通信ポートを表す。installはその遷移でインストールされたフローエントリ、applyはその遷移で適用されたフローエントリを表す。このデータ構造に基づく遷移データは、分散環境モデル探索部11による探索において、状態が遷移した際に、その遷移の内容に応じて、各フィールドの値が適切に設定された上で生成される。
[動作]
次に、第2の実施の形態の動作について詳細に説明する。基本的な流れは第1の実施形態と同様である。以下、異なる部分の説明を行う。
図6のステップS13_3について、図7を参照してより詳細に説明する。ステップS13_3の手順の流れは第1の実施の形態と同様であるが、ステップS13_3_3の内容が異なるため、ステップS13_3_3の内容ついてのみ説明し、それ以外は省略する。
ステップS13_3_3では、実行パス要素Peiの遷移と実行パス要素Pejの遷移を比較し、「実行パス要素Pejの遷移→実行パス要素Peiの遷移」(happens-before関係)であるか否か確認する。具体的には、まず、実行パス要素Peiの遷移の受信メッセージrecvが、実行パス要素Pejの送信メッセージ集合sendに含まれるか否か確認する。含まれる場合は、happens-before関係があるとする。
含まれない場合は、実行パス要素Peiの遷移で適用したフローエントリと、実行パス要素Pejの遷移でインストールしたフローエントリと、が一致するか否か比較する。一致する場合はhappens-before関係があるとする。
一致しない場合は、実行パス要素Pei及びPejの遷移で使用した受信用通信ポートportが一致するか否か比較する。一致しない場合は、happens-before関係がないとする。
一致する場合は、解析対象の実行パスの中から、Peiの遷移の受信メッセージrecvを含むsendを持つ遷移を持つ実行パス要素Peaと、Pejの遷移の受信メッセージrecvを含むsendを持つ遷移を持つ実行パス要素Pebと、を探し、実行パス要素Peaのhappens-before集合にPebが含まれるか否かを確認する。含まれる場合は、happens-before関係があるとし、含まれない場合は、happens-before関係がないとする。
図6のステップS13_4について、図8を参照してより詳細に説明する。ステップS13_4の手順の流れは第1の実施の形態と同様であるが、ステップS13_4_3の内容が異なるため、ステップS13_4_3の内容ついてのみ説明し、それ以外は省略する。ステップS13_4_3では、実行パス要素Penの遷移と、実行パス要素Pemの遷移と、を比較し、それらに「依存関係があり、happens-before関係がない」か否か確認する。ステップS13_4_3の比較のうち、依存関係に関しては、実行パス要素Pen及びPemの遷移の動作主体ノードnodeが一致する場合、依存関係があるとする。happens-before関係に関しては、第1の実施の形態におけるステップS13_4_3と同様であるため省略する。
[効果]
本実施形態の分散モデル検査用モデル検査装置は、モデル検査による探索の際、探索した状態を保存し管理する(探索済み状態管理部13)と同時に、探索において行われた遷移の内容とその順序をパス毎に区別して取得可能な履歴を表すグラフ構造を用いて、探索した遷移を保存し管理する(探索済み遷移履歴管理部14)。また、探索した状態及び遷移の管理にあたり、探索済み状態からどの遷移が行われたかを紐付けておく(探索済み状態遷移対応情報管理部15)。
そして、モデル検査による探索中に探索済み状態に到達したら、その探索済み状態及びそこから行われた遷移の履歴情報が紐付けて保存・管理されているので、履歴情報を取得し、到達した状態以降は疑似的にその履歴情報と同様の遷移を行ったものとみなし依存関係とhappens-before関係を解析し、必要に応じてバックトラック地点を生成し探索を打ち切る。これにより、探索済み状態以降を再度探索することなく依存関係やhappens-before関係の探索ができ、OpenFlowネットワーク環境を表した分散環境モデルに対するモデル検査においてDPORを適用する場合でも、探索済み状態以降の探索の打ち切りが可能になる。結果として、探索の効率化が実現される。
<第3の実施形態>
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。以下では、第1及び第2の実施の形態と同様の部分の説明は省略し、異なる部分についてのみ説明する。
[構成]
まず、図面を参照しながら本発明の第3の実施の形態の構成について詳細に説明する。
図10を参照すると、第3の実施の形態における分散環境モデル用モデル検査装置3は、分散環境モデル探索部11と、分散環境モデル依存関係解析部12と、探索済み状態管理部13と、探索済み遷移履歴管理部14と、探索済み状態遷移対応情報管理部15と、検証情報雛形提供部36と、を含む。分散環境モデル探索部11は、分散環境モデル依存関係解析部12、探索済み状態管理部13、探索済み遷移履歴管理部14、探索済み状態遷移対応情報管理部15、検証情報雛形提供部36のそれぞれと、情報をやり取りするように構成されている。探索済み状態遷移対応情報管理部15は、探索済み状態管理部13が管理する探索済み状態と、探索済み遷移履歴管理部14が管理する遷移と、を紐付けるため、その対応関係を管理する。
検証情報雛形提供部36は、ユーザーが検証情報を入力する際、検証情報D11に含まれるプロパティに対して典型的な1つ以上の雛形を選択可能に提供するとともに、その中のいずれかを選択する入力をユーザーから受付ける。そして、検証情報雛形提供部36は、選択された雛形をプロパティの定義の一部あるいは全部に利用し、分散環境モデル探索部11に入力することが可能な機能を備える。
分散環境モデル探索部11、分散環境モデル依存関係解析部12、探索済み状態管理部13、探索済み遷移履歴管理部14、及び、探索済み状態遷移対応情報管理部15の構成は、第1及び第2の実施形態と同様であるので、ここでの説明は省略する。
[動作]
ユーザーは、図2のステップS11において、検証情報雛形提供装置36から所望の雛形をいくつか選択し、それらを用いて検証情報D11を完成させ、分散環境モデル探索部11に入力する。ユーザーは雛形を全く用いず検証情報D11を作成してもよい。その他の動作は、第1及び第2の実施の形態と同様のため省略する。
[効果]
ユーザーが本実施形態の分散環境モデル用モデル検査装置を利用するにあたり、検証情報D11を作成する負担を軽減することができるため、結果として検証全体の効率を向上させることができる。また、本実施形態によれば、第1及び第2の実施形態と同様の作用効果を実現することができる。
以上説明した第1乃至第3の実施形態の分散環境モデル用モデル検査装置の活用例として、分散環境、例えばOpenFlowネットワーク環境を構築したり、その環境に変更を加える際に、それらの妥当性を検証するツールが考えられる。
以下、参考形態の例を付記する。
1. 複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索部と、
過去に探索された探索済みの前記状態を記憶する探索済み状態管理部と、
過去に実行された前記直線移動各々における前記遷移の順序を記憶する探索済み遷移履歴管理部と、
探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶する探索済み状態遷移対応情報管理部と、
前記分散環境モデル探索部が1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens-before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析部と、
を有し、
前記分散環境モデル探索部は、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始する分散環境モデル用モデル検査装置。
2. 1に記載の分散環境モデル用モデル検査装置において、
前記分散環境モデル探索部は、N回目(Nは1以上の整数)の前記直線移動の前記探索時に探索した前記状態が前記探索済み状態管理部に記憶されているか確認し、記憶されている場合、当該状態を終了位置としてN回目の前記直線移動の前記探索を終了するとともに、前記探索済み遷移履歴管理部及び前記探索済み状態遷移対応情報管理部が記憶する情報を利用して、過去の探索においてN回目の前記直線移動の前記探索の終了位置となった前記状態以降に行われた前記遷移及びその順序を示す実行済みパスを1つ以上取得し、
前記分散環境モデル依存関係解析部は、N回目の前記直線移動の前記探索のパスと、前記分散環境モデル探索部が取得した1つ以上の前記実行済みパス各々とをこの順に結合してできる一続きのパスに含まれる所定の順序の複数の前記遷移に対して、前記依存関係、及び、前記happens-before関係の解析を行い、N回目の前記直線移動の前記探索のパス上に前記バックトラック地点を生成する分散環境モデル用モデル検査装置。
3. 2に記載の分散環境モデル用モデル検査装置において、
前記分散環境モデル探索部が複数の前記実行済みパスを取得した場合、
前記分散環境モデル依存関係解析部は、前記第1の直線移動のパスと、複数の前記実行済みパス各々とをこの順に結合してできる複数の前記一続きのパス各々に対して、前記依存関係、及び、前記happens-before関係の解析を行い、前記第1の直線移動のパス上に前記バックトラック地点を生成する分散環境モデル用モデル検査装置。
4. 1から3のいずれかに記載の分散環境モデル用モデル検査装置において、
前記分散環境モデル探索部は、OpenFlowネットワーク環境を表す分散環境モデルの探索を行い、
前記分散環境モデル依存関係解析部は、前記OpenFlowネットワーク環境における依存関係及びhappens-before関係の解析を行う分散環境モデル用モデル検査装置。
5. 1から4のいずれかに記載の分散環境モデル用モデル検査装置において、
前記分散環境モデル探索部は、前記プロパティを、ユーザーからの入力として受け付ける機能を備える分散環境モデル用モデル検査装置。
6. 5に記載の分散環境モデル用モデル検査装置において、
ユーザーに対して選択可能に前記プロパティの雛形を提供するとともに、提供した雛形の中から1つ以上を選択するユーザー入力を受け付ける検証情報雛形提供部をさらに有し、
前記分散環境モデル探索部は、前記検証情報雛形提供部が受け付けた前記雛形を一部又は全部とした前記プロパティを含む前記検証情報を取得する分散環境モデル用モデル検査装置。
7. コンピュータを、
複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索手段、
過去に探索された探索済みの前記状態を記憶する探索済み状態管理手段、
過去に実行された前記直線移動各々における前記遷移の順序を記憶する探索済み遷移履歴管理手段、
探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶する探索済み状態遷移対応情報管理手段、
前記分散環境モデル探索部が1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens-before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析手段、
として機能させ、
前記分散環境モデル探索手段に、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始させるプログラム。
7−2. 7に記載のプログラムにおいて、
前記分散環境モデル探索手段に、N回目(Nは1以上の整数)の前記直線移動の前記探索時に探索した前記状態が前記探索済み状態管理部に記憶されているか確認させ、記憶されている場合、当該状態を終了位置としてN回目の前記直線移動の前記探索を終了させるとともに、前記探索済み遷移履歴管理手段及び前記探索済み状態遷移対応情報管理手段が記憶する情報を利用して、過去の探索においてN回目の前記直線移動の前記探索の終了位置となった前記状態以降に行われた前記遷移及びその順序を示す実行済みパスを1つ以上取得させ、
前記分散環境モデル依存関係解析手段に、N回目の前記直線移動の前記探索のパスと、前記分散環境モデル探索部が取得した1つ以上の前記実行済みパス各々とをこの順に結合してできる一続きのパスに含まれる所定の順序の複数の前記遷移に対して、前記依存関係、及び、前記happens-before関係の解析を行わせ、N回目の前記直線移動の前記探索のパス上に前記バックトラック地点を生成させるプログラム。
7−3. 7−2に記載のプログラムにおいて、
前記分散環境モデル探索手段が複数の前記実行済みパスを取得した場合、
前記分散環境モデル依存関係解析手段に、前記第1の直線移動のパスと、複数の前記実行済みパス各々とをこの順に結合してできる複数の前記一続きのパス各々に対して、前記依存関係、及び、前記happens-before関係の解析を行わせ、前記第1の直線移動のパス上に前記バックトラック地点を生成させるプログラム。
7−4. 7から7−3のいずれかに記載のプログラムにおいて、
前記分散環境モデル探索手段に、OpenFlowネットワーク環境を表す分散環境モデルの探索を行わせ、
前記分散環境モデル依存関係解析手段に、前記OpenFlowネットワーク環境における依存関係及びhappens-before関係の解析を行わせるプログラム。
7−5. 7から7−4のいずれかに記載のプログラムにおいて、
前記分散環境モデル探索手段に、前記プロパティを、ユーザーからの入力として受け付ける機能を備えさせるプログラム。
7−6. 7−5に記載のプログラムにおいて、
前記コンピュータを、
ユーザーに対して選択可能に前記プロパティの雛形を提供するとともに、提供した雛形の中から1つ以上を選択するユーザー入力を受け付ける検証情報雛形提供手段としてさらに機能させ、
前記分散環境モデル探索手段に、前記検証情報雛形提供手段が受け付けた前記雛形を一部又は全部とした前記プロパティを含む前記検証情報を取得させるプログラム。
8. コンピュータが、
複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索工程と、
過去に探索された探索済みの前記状態を記憶部に記憶させる探索済み状態管理工程と、
過去に実行された前記直線移動各々における前記遷移の順序を記憶部に記憶させる探索済み遷移履歴管理工程と、
探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶部に記憶させる探索済み状態遷移対応情報管理工程と、
前記分散環境モデル探索工程で1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens-before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析工程と、
を実行し、
前記分散環境モデル探索工程では、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始する分散環境モデル用モデル検査方法。
8−2. 8に記載の分散環境モデル用モデル検査方法において、
前記分散環境モデル探索工程では、N回目(Nは1以上の整数)の前記直線移動の前記探索時に探索した前記状態が前記記憶部に記憶されているか確認し、記憶されている場合、当該状態を終了位置としてN回目の前記直線移動の前記探索を終了するとともに、前記記憶部が記憶する情報を利用して、過去の探索においてN回目の前記直線移動の前記探索の終了位置となった前記状態以降に行われた前記遷移及びその順序を示す実行済みパスを1つ以上取得し、
前記分散環境モデル依存関係解析工程では、N回目の前記直線移動の前記探索のパスと、前記分散環境モデル探索部が取得した1つ以上の前記実行済みパス各々とをこの順に結合してできる一続きのパスに含まれる所定の順序の複数の前記遷移に対して、前記依存関係、及び、前記happens-before関係の解析を行い、N回目の前記直線移動の前記探索のパス上に前記バックトラック地点を生成する分散環境モデル用モデル検査方法。
8−3. 8−2に記載の分散環境モデル用モデル検査方法において、
前記分散環境モデル探索工程で複数の前記実行済みパスを取得した場合、
前記分散環境モデル依存関係解析工程で、前記第1の直線移動のパスと、複数の前記実行済みパス各々とをこの順に結合してできる複数の前記一続きのパス各々に対して、前記依存関係、及び、前記happens-before関係の解析を行い、前記第1の直線移動のパス上に前記バックトラック地点を生成する分散環境モデル用モデル検査方法。
8−4. 8から8−3のいずれかに記載の分散環境モデル用モデル検査方法において、
前記分散環境モデル探索工程では、OpenFlowネットワーク環境を表す分散環境モデルの探索を行い、
前記分散環境モデル依存関係解析工程では、前記OpenFlowネットワーク環境における依存関係及びhappens-before関係の解析を行う分散環境モデル用モデル検査方法。
8−5. 8から8−4のいずれかに記載の分散環境モデル用モデル検査方法において、
前記分散環境モデル探索工程では、前記プロパティを、ユーザーからの入力として受け付ける分散環境モデル用モデル検査方法。
8−6. 8−5に記載の分散環境モデル用モデル検査方法において、
前記コンピュータは、
ユーザーに対して選択可能に前記プロパティの雛形を提供するとともに、提供した雛形の中から1つ以上を選択するユーザー入力を受け付ける検証情報雛形提供工程をさらに実行し、
前記分散環境モデル探索工程では、前記検証情報雛形提供工程で受け付けた前記雛形を一部又は全部とした前記プロパティを含む前記検証情報を取得する分散環境モデル用モデル検査方法。
この出願は、2014年1月17日に出願された日本出願特願2014−007068号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (8)

  1. 複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索部と、
    過去に探索された探索済みの前記状態を記憶する探索済み状態管理部と、
    過去に実行された前記直線移動各々における前記遷移の順序を記憶する探索済み遷移履歴管理部と、
    探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶する探索済み状態遷移対応情報管理部と、
    前記分散環境モデル探索部が1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens−before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析部と、
    を有し、
    前記分散環境モデル探索部は、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始する分散環境モデル用モデル検査装置。
  2. 請求項1に記載の分散環境モデル用モデル検査装置において、
    前記分散環境モデル探索部は、N回目(Nは1以上の整数)の前記直線移動の前記探索時に探索した前記状態が前記探索済み状態管理部に記憶されているか確認し、記憶されている場合、当該状態を終了位置としてN回目の前記直線移動の前記探索を終了するとともに、前記探索済み遷移履歴管理部及び前記探索済み状態遷移対応情報管理部が記憶する情報を利用して、過去の探索においてN回目の前記直線移動の前記探索の終了位置となった前記状態以降に行われた前記遷移及びその順序を示す実行済みパスを1つ以上取得し、
    前記分散環境モデル依存関係解析部は、N回目の前記直線移動の前記探索のパスと、前記分散環境モデル探索部が取得した1つ以上の前記実行済みパス各々とをこの順に結合してできる一続きのパスに含まれる所定の順序の複数の前記遷移に対して、前記依存関係、及び、前記happens−before関係の解析を行い、N回目の前記直線移動の前記探索のパス上に前記バックトラック地点を生成する分散環境モデル用モデル検査装置。
  3. 請求項2に記載の分散環境モデル用モデル検査装置において、
    前記分散環境モデル探索部が複数の前記実行済みパスを取得した場合、
    前記分散環境モデル依存関係解析部は、N回目の前記直線移動のパスと、複数の前記実行済みパス各々とをこの順に結合してできる複数の前記一続きのパス各々に対して、前記依存関係、及び、前記happens−before関係の解析を行い、N回目の前記直線移動のパス上に前記バックトラック地点を生成する分散環境モデル用モデル検査装置。
  4. 請求項1から3のいずれか1項に記載の分散環境モデル用モデル検査装置において、
    前記分散環境モデル探索部は、OpenFlowネットワーク環境を表す分散環境モデルの探索を行い、
    前記分散環境モデル依存関係解析部は、前記OpenFlowネットワーク環境における依存関係及びhappens−before関係の解析を行う分散環境モデル用モデル検査装置。
  5. 請求項1から4のいずれか1項に記載の分散環境モデル用モデル検査装置において、
    前記分散環境モデル探索部は、前記プロパティを、ユーザーからの入力として受け付ける機能を備える分散環境モデル用モデル検査装置。
  6. 請求項5に記載の分散環境モデル用モデル検査装置において、
    ユーザーに対して選択可能に前記プロパティの雛形を提供するとともに、提供した雛形の中から1つ以上を選択するユーザー入力を受け付ける検証情報雛形提供部をさらに有し、
    前記分散環境モデル探索部は、前記検証情報雛形提供部が受け付けた前記雛形を一部又は全部とした前記プロパティを取得する分散環境モデル用モデル検査装置。
  7. コンピュータを、
    複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索手段、
    過去に探索された探索済みの前記状態を記憶する探索済み状態管理手段、
    過去に実行された前記直線移動各々における前記遷移の順序を記憶する探索済み遷移履歴管理手段、
    探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶する探索済み状態遷移対応情報管理手段、
    前記分散環境モデル探索手段が1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens−before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析手段、
    として機能させ、
    前記分散環境モデル探索手段に、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始させるプログラム。
  8. コンピュータが、
    複数の状態をとることができ、各状態時に実行可能な所定の動作の実行により実現される所定の遷移で前記状態間を移動する分散環境モデルを示す情報を取得すると、第1の前記状態を開始位置とし、1つ以上の前記遷移で分岐することなく直線的に終了位置となる第2の前記状態まで移動する直線移動を複数実行することで前記分散環境モデルがとり得る前記状態を探索するとともに、探索した前記状態が所定のプロパティを満たすか否かを判定する分散環境モデル探索工程と、
    過去に探索された探索済みの前記状態を記憶部に記憶させる探索済み状態管理工程と、
    過去に実行された前記直線移動各々における前記遷移の順序を記憶部に記憶させる探索済み遷移履歴管理工程と、
    探索済みの前記状態各々に、過去の前記探索において他の前記状態に移動した時の前記遷移を対応付けて記憶部に記憶させる探索済み状態遷移対応情報管理工程と、
    前記分散環境モデル探索工程で1つの前記直線移動を終了すると、当該直線移動において所定の順序で実行された複数の前記遷移に対して、依存関係、及び、happens−before関係の解析を行い、当該直線移動のパス上にバックトラックすべき地点を示すバックトラック地点を生成する分散環境モデル依存関係解析工程と、
    を実行し、
    前記分散環境モデル探索工程では、1つの前記直線移動の探索を終了すると、その後、前記バックトラック地点を開始位置として、他の前記直線移動を開始する分散環境モデル用モデル検査方法。
JP2015557700A 2014-01-17 2014-08-21 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム Active JP6332284B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014007068 2014-01-17
JP2014007068 2014-01-17
PCT/JP2014/071844 WO2015107711A1 (ja) 2014-01-17 2014-08-21 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム

Publications (3)

Publication Number Publication Date
JPWO2015107711A6 JPWO2015107711A6 (ja) 2017-03-23
JPWO2015107711A1 JPWO2015107711A1 (ja) 2017-03-23
JP6332284B2 true JP6332284B2 (ja) 2018-05-30

Family

ID=53542625

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015557700A Active JP6332284B2 (ja) 2014-01-17 2014-08-21 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム

Country Status (3)

Country Link
US (1) US9880923B2 (ja)
JP (1) JP6332284B2 (ja)
WO (1) WO2015107711A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6904364B2 (ja) * 2016-11-01 2021-07-14 日本電気株式会社 システム構築支援装置、方法およびプログラム
US10552408B2 (en) * 2016-11-02 2020-02-04 Oracle International Corporation Automatic linearizability checking of operations on concurrent data structures
CN112504348B (zh) * 2020-12-11 2023-07-25 厦门汇利伟业科技有限公司 一种融合环境因素的物体状态显示方法和系统
US11635949B2 (en) * 2021-12-17 2023-04-25 Intel Corporation Methods, systems, articles of manufacture and apparatus to identify code semantics

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840946B2 (en) * 2006-06-02 2010-11-23 International Business Machines Corporation System and method for matching a plurality of ordered sequences with applications to call stack analysis to identify known software problems
US20080126325A1 (en) * 2006-06-26 2008-05-29 William Pugh Process for making software diagnostics more efficient by leveraging existing content, human filtering and automated diagnostic tools
KR20090071596A (ko) * 2006-09-20 2009-07-01 내셔널 아이씨티 오스트레일리아 리미티드 모델 검사를 병용하기 위한 전이 시스템 생성 방법
WO2008137223A1 (en) * 2007-05-07 2008-11-13 Nec Laboratories America, Inc. Accelerating model checking via synchrony
US9442701B1 (en) * 2007-06-21 2016-09-13 The Mathworks, Inc. Verifying models for exceptional behavior
US8381226B2 (en) * 2008-02-07 2013-02-19 Nec Laboratories America, Inc. System and method for monotonic partial order reduction
US20090276469A1 (en) * 2008-05-01 2009-11-05 International Business Machines Corporation Method for transactional behavior extaction in distributed applications
US8200474B2 (en) * 2008-05-08 2012-06-12 Nec Laboratories America, Inc. Dynamic model checking with property driven pruning to detect race conditions
US8589126B2 (en) * 2009-05-27 2013-11-19 Nec Laboratories America, Inc. System and method for model checking by interleaving stateless and state-based methods
US8732669B2 (en) * 2011-03-11 2014-05-20 Oracle International Corporation Efficient model checking technique for finding software defects
US8671396B2 (en) * 2011-05-30 2014-03-11 Microsoft Corporation Dynamic interface reduction for software model checking
US9244510B1 (en) * 2011-09-23 2016-01-26 The Mathworks, Inc. Bug report checks in a modeling system
US9098620B2 (en) * 2012-05-12 2015-08-04 Palo Alto Research Center Incorporated System and method for parallel model checking utilizing parallel structured duplicate detection
US20150074652A1 (en) * 2013-09-10 2015-03-12 International Business Machines Corporation Avoiding similar counter-examples in model checking

Also Published As

Publication number Publication date
WO2015107711A1 (ja) 2015-07-23
US9880923B2 (en) 2018-01-30
JPWO2015107711A1 (ja) 2017-03-23
US20160335170A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
JP6332284B2 (ja) 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム
US11055210B2 (en) Software test equipment and software testing method
JPWO2015107711A6 (ja) 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム
JP6295965B2 (ja) ネットワーク検証装置、ネットワーク検証方法及びプログラム
Li et al. A pattern-based approach to development of service mediators for protocol mediation
US20160072769A1 (en) Network verification device, network verification method, and program
JP6428768B2 (ja) モデル検査装置、方法及びプログラムを記憶した記憶媒体
US20090172013A1 (en) Method to Improve Unfolding in Petri Nets
Lin et al. Test sequence reduction of wireless protocol conformance testing to internet of things
US20190286453A1 (en) System construction assisting apparatus, method, and program
CN110119283A (zh) 一种应用更新处理方法、装置及系统、应用更新系统
Anseeuw et al. Design Time Validation for the Correct Execution of BPMN Collaborations.
Subramaniam et al. Improving process models by discovering decision points
JP6263487B2 (ja) プロセス抽出装置、プロセス抽出方法、及びプログラム
CN113987107A (zh) 基于行为树的对话方法、装置及电子设备、存储介质
BELL et al. Model-based mutation testing using pushdown automata
US20180293151A1 (en) Model checking apparatus, model checking method, and storage medium
Daszczuk Critical trees: counterexamples in model checking of CSM systems using CBS algorithm
Xiong et al. A petri net siphon based solution to protocol-level service composition mismatches
Kaliappan et al. An approach to synchronize UML-based design components for model-driven protocol development
Matsuura et al. Automatic Verification of Behavior of UML Requirements Specifications using Model Checking.
WO2013111547A1 (ja) 経路制御装置、制御情報生成方法及びプログラムが格納された非一時的なコンピュータ可読媒体
WO2023037506A1 (ja) システム構成導出装置、システム構成導出方法、及びコンピュータ可読媒体
KR20170074152A (ko) 식별 이벤트 및 마스터 데이터의 그래프 기반 통합 정보 시스템 및 제공 방법
JP2017220134A (ja) 説明情報生成装置、説明情報生成方法および説明情報生成プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170718

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180403

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180416

R150 Certificate of patent or registration of utility model

Ref document number: 6332284

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150