Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6428768B2 - モデル検査装置、方法及びプログラムを記憶した記憶媒体 - Google Patents
[go: Go Back, main page]

JP6428768B2 - モデル検査装置、方法及びプログラムを記憶した記憶媒体 - Google Patents

モデル検査装置、方法及びプログラムを記憶した記憶媒体 Download PDF

Info

Publication number
JP6428768B2
JP6428768B2 JP2016513648A JP2016513648A JP6428768B2 JP 6428768 B2 JP6428768 B2 JP 6428768B2 JP 2016513648 A JP2016513648 A JP 2016513648A JP 2016513648 A JP2016513648 A JP 2016513648A JP 6428768 B2 JP6428768 B2 JP 6428768B2
Authority
JP
Japan
Prior art keywords
transition
distributed environment
environment model
searched
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
JP2016513648A
Other languages
English (en)
Other versions
JPWO2015159551A1 (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 JPWO2015159551A1 publication Critical patent/JPWO2015159551A1/ja
Application granted granted Critical
Publication of JP6428768B2 publication Critical patent/JP6428768B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3604Analysis of software for verifying properties of programs
    • G06F11/3608Analysis of software for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、モデル検査装置、方法及びプログラムを記憶した記憶媒体に関する。
近年、システムやソフトウェアの複雑化・巨大化が進んでいる。これに対する一つの解決手段として、例えばモデル検査(model checking)による検証手法が知られている。モデル検査とは、検証対象を状態遷移系としてモデル化する。そして、モデル化した状態遷移系を例えば網羅的に探索する。これにより、検証対象が例えば仕様を満たすか否かを検証する。モデル検査は、システムの設計段階から適用することができる。また、検証対象が仕様を満たすか否かを保証、検証することができる。このため、システムやソフトウェアの信頼性を向上させるための技術として注目されている。
また、最近では、モデル検査はネットワークの検証への適用も試みられている。例えば、非特許文献1は、OpenFlowにより制御されたネットワークをモデル検査によりテストするシステムを開示している。なお、非特許文献2、3が開示しているように、OpenFlowでは、スイッチ(OpenFlow Switch: OFS)は、コントローラ(OpenFlow Controller: OFC)から設定されたフローエントリに基づき処理を行う。フローエントリは、例えば、パケットヘッダの所定フィールドと照合する条件、照合時の動作を規定したルール、統計情報等を規定する。スイッチは、受信パケットに対して当該受信パケットのヘッダ情報と照合するフローエントリが存在しない場合、例えばpacket−inメッセージをコントローラに送信してフローの計算を依頼する。そして、コントローラは、ネットワークトポロジ等に基づきフローを導出し、該フローに対応するフローエントリを該フロー上のスイッチに設定する。
非特許文献1では、OpenFlowのネットワークを状態探索する際に、OpenFlowコントローラのプログラムの記号実行(symbolic execution)を行い、全てのコードパスを実行するためのパケットの代表値の集合を求め、それを用いて状態探索を行う。ここで、非特許文献1に開示されているモデル検査の概要について非特許文献1の記載に基づき説明しておく。システム状態を要素(component)の状態の組み合わせとし、遷移はメッセージ送信のようにある状態から他の状態への変化を表す。各状態で各要素(component)は可能な遷移の集合を保持する。与えられた状態空間モデルに対して探索するにあたり、モデル検査器(model checker)は、まず、状態のスタックを初期化したあと、以下の処理を状態スタックが空となるまで繰り返す。スタックから1つの状態とその状態が可能な遷移の1つを選択し、当該遷移を実行後、新たに到達した状態に関して例えば正しさのプロパティ(correctness property)をテストする。当該新たな状態が正しさのプロパティに違反していない場合、この新たな状態を探索された状態集合に追加し、この状態で可能とされる全ての遷移の実行をスケジュールする。非特許文献1では、OpenFlowコントローラのプログラムは、イベントハンドラの集合として構成され、プログラムの状態をグローバル変数の値とし、各イベントハンドラを遷移として扱う。遷移を実行するには、対応するイベントハンドラを起動する。例えばスイッチからのpacket−inメッセージの受信は、packet−in遷移を可能とし、モデル検査器は当該遷移に対応するイベントハンドラを起動することで当該遷移を実行する。イベントハンドラの動作がデータ依存である点を考慮して記号実行を行う。
モデル検査は、上記のような特長を持つ一方、計算に必要なメモリや時間が、検証対象の規模に対して指数的に増大する。そのため、実践的なシステムやソフトウェアの検証を目的としたモデル検査においては、探索の効率化が不可欠である。
例えば非特許文献4では、マルチスレッド環境モデルに対するモデル検査において、検証の観点で冗長な探索を枝刈りする技術であるDPOR(Dynamic Partial Order Reduction:動的半順序縮約)を開示している。
DPORでは、モデル検査対象の状態遷移系を探索(例えばdepth-first-search:深さ優先探索)する際、
(A)最初に適当なパスを1つ実行する。
(B)そして、当該パスの遷移系列の中に、互いの実行順序が実行結果に影響を及ぼす遷移のペアが存在するか確認する。このような遷移のペアを「依存関係のある遷移」と呼ぶ。
(C)遷移のペアに依存関係のある遷移が存在する場合、当該ペアの遷移の実行順序を入れ替えたパスを探索するために、当該ペアのうち先に行った遷移の直前の状態を、先程実行したパスから探す。そして、当該状態(先に行った遷移の直前の状態)から、先程の実行パスとは異なる遷移(前記ペアのうち、先に行った遷移とは異なる遷移)を行うところから、探索を始めるバックトラック地点を生成する。
(D)当該先程の実行パスから、依存関係のある遷移を全て検出し終えたら、当該先程の実行パス上で、最後方(最も深い位置)にあるバックトラック地点から、探索を再開する。
(E)バックトラック地点がなくなるまで、この手順(上記(B)乃至(D))を繰り返す。
これにより、検証対象の全ての実行パターンのうち、実行結果が異なるパスのみを探索することが可能である。言い換えると、検証結果が異ならないパス、つまり、検証の観点で冗長なパスの探索を枝刈りすることができ、探索の効率化が可能である。
非特許文献5では、DPORを改良した技術であるSDPOR(Stateful Dynamic Partial Ordering Reduction)を開示している。モデル検査では、一般的に、過去に探索した状態(探索済み状態)に再度到達した場合、その状態以降の探索は当然ながら冗長であるため、探索を打ち切る。しかし、DPORにおいては、安易に探索を打ち切ると、実行パス上の依存関係のある遷移の解析に影響し、正しい結果が得られない。そのため、DPORでは、探索済み状態に到達した場合でも、探索を打ち切らずに続ける。SDPORは、探索済み状態に到達した場合に、探索を打ち切ることが可能なように改良したDPORである。SDPORでは、過去の探索で行われた遷移をグラフで管理し、依存関係の解析に利用する。グラフは、各ノードに遷移が紐付けられ、各有向エッジが、過去の探索で行った遷移の実行順序を表すものである。
例えば、探索中に行った遷移t1の直後の状態をs1とすると、さらにs1から遷移t2を行った場合、前記グラフ中の遷移t1に対応するノードn1から、遷移t2に対応するノードn2に有向エッジが引かれる。ここで、ノードn1やn2が前記グラフ中に存在しなければ作成されるSDPORでは、過去に探索した状態S2に到達すると、状態S2から行うことのできる遷移を調べる。さらに、SDPORでは、当該遷移に対応するノードを前記グラフ中から探し、当該ノードから有向エッジを辿って到達可能なノードを全て抽出する。ここで、先程抽出したノードに対応する遷移は、S2以降の状態遷移において実行され得る遷移を表している。これらの遷移と、現在の実行パス上の遷移とを用いて、依存関係を解析し、バックトラック地点を生成する。これらの手順により、探索済みの状態以降の探索を打ち切っても、正しく依存関係を解析することができ、探索の打ち切りが可能な分効率化されるのが、SDPORの特長である。
非特許文献6では、マルチスレッドシステム(multi-threaded system)向けに設計されたDPORを分散環境システム(Distributed System)のモデル検査向けに修正した技術であるDPOR−DS(Dynamic Partial Ordering Reduction in Distributed Systems)を開示している。検証対象のモデルの環境の違いを吸収するため、DPOR−DSでは、バックトラック地点を生成する方法を変更している。DPOR−DSでは、実行パス上の遷移間の関係について、依存関係(dependency relation)とは別に、分散環境モデルにおけるhappens−before関係を定義し、バックトラック地点の生成の判断に利用する。ここで、happens−before関係とは、あるモデル上で必ず成り立つ遷移間の実行順序関係である。例えば、あるパケットpの送受信を行う遷移を考えたとき、パケットpの送信を行う遷移は、パケットpの受信を行う遷移よりも必ず先に起こる。このように、モデル上の因果関係から、必ず成り立つ遷移間の順序関係が、happens−before関係である(非特許文献6参照)。
DPOR−DSでは、実行パス上の遷移について、依存関係に加えて、happens−before関係の有無も解析する。ある遷移間に依存関係があったとしても、happens−before関係が成り立つ場合には、バックトラック地点を生成しない。また、バックトラック地点から探索を再開する際、依存関係のあった2つの遷移のペア(先に行われたものをt1、後に行われたものをt2とする)の間に行われた遷移の中で、遷移t2に対し、happens−before関係にあった遷移と、遷移t2と、を再開する探索の最初に連続して行わせる。
図1を参照しながら、具体例を用いて説明する。最初の探索において、ta、tb、tc、tdの順に遷移が実行されたとする。そして、依存関係とhappens−before関係の解析の結果、
・taとtdに依存関係があること、及び、
・tcとtdにhappens−before関係がある(tcはtdより先に必ず行われる)こと、
が分かったとする。
すると、DPOR−DSでは、遷移taを行う直前の状態S0にバックトラック地点b1を生成する。
そして、当該バックトラック地点b1から探索を再開する際に、最初に、
・tc(依存関係のある2つの遷移のペア(taとtd)の間に行われた遷移(tbとtc)の中で、前記ペアのうち後に行われた遷移(td)に対しhappens−before関係にあった遷移)と、
・td(依存関係のある2つの遷移のペアのうち後に行われた遷移)
を行う。
その後は、遷移の順序の規定はなく適当なパスが実行される。つまり、図1の例では、バックトラック地点b1から、例えばtc、td、ta、tbという順に遷移が実行される。このうち、最初のtc、tdは、前述の通り、DPOR−DSの探索アルゴリズムによって実行の順番が規定されている部分である。残りのta、tbは、適当に実行の順番が決められた部分である。ここでは、依存関係のある遷移のペア(taとtd)の順序を入れ替えている。このバックトラック地点における、最初の部分の順番(tc、td)の設定は、冗長な探索を削減することを目的とする工夫である。
この工夫が行われない場合、どうなるかに関して、図2を参照しながら具体例を用いて説明する。図1の例において、バックトラックにより探索を再開する際に、最初に行う遷移を単に一つだけ(tcだけ)規定する場合、図2に示すように、例えばバックトラック地点b1から、tc、ta、tb、tdという順に遷移が実行され得る。
図1のバックトラックは、依存関係のあるtaとtdの順序を入れ替えた探索を行うことが目的であったが、図2の例では、バックトラックにおいて、依存関係のあるtaとtdの順序の入れ替えは行われない。
図2に示すように、改めて、tc、ta、tb、tdのパスに対して依存関係の解析を行い、遷移taを行う直前の状態s5に、バックトラック地点b2を生成する。これにより、次の探索において、tc、td、ta、tbという順に遷移が行われ、所望の順序で遷移が発生するパスの探索が可能である。しかしながら、2回目の探索(tc、ta、tb、tdのパスの探索)は、検証の観点からは冗長であり、効率の観点からは無駄である。この冗長な探索を削減するため、DPOR−DSでは、バックトラックによる探索再開時の最初の遷移列を規定して(図1の例では、バックトラック地点b1からの遷移列tc、td)、冗長なパス(図2の例では、パスtc、ta、tb、td)の探索を削減する、という工夫を行っている。これらの手順により、分散環境モデルのモデル検査においても、探索の枝刈りを可能としていることが、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.
以下に関連技術の分析を与える。
非特許文献6における問題点は、前述のバックトラックによる探索再開時に最初の遷移列を規定して冗長な探索を削減するという工夫において、前記最初の遷移列が必ずしも実行可能であるとは限らず、無駄な探索が生じる場合がある、ということである(本発明者の知見)。図3を参照しながら具体例を用いて説明する。
まず、適当なパスとしてta、tb、tc、tdという順序で遷移が行われるパスp1が探索されたとする。
そして、
・taとtd、tbとtcに、それぞれ依存関係があること、及び、
・tcとtdにhappens−before関係がある(tcはtdより先に必ず行われる)こと、
が分かったとする。
次に、DPOR−DSでは、前述した方法に従い、遷移taを行う直前の状態S0に対し、最初に、tc、tdの順序で遷移を行うバックトラック地点b1を生成する。同様に、遷移tbを行う直前の状態S1に対し、最初にtcを行うバックトラック地点b2を生成する。すなわち、依存関係のある2つの遷移のペア(tbとtc)に関して、tbとtcの間に行われた遷移の中で該ペアのうち、後に行われた遷移tcに対してhappens−before関係にあった遷移(無し)と、後に行われた遷移tcを最初に行うバックトラック地点b2が生成される。
バックトラック地点の生成が完了したので、次に、探索を実行したパス(実行パス)p1上で最後方にあるバックトラック地点から探索を再開する。ここでは、遷移tbを行う直前の状態にあるバックトラック地点b2が最後方であるため、バックトラック地点b2から遷移tcをまず行い、その後、適当に遷移を実行する。ここでは、tcにつづいてtbが実行される。その結果、全体としてta、tc、tb、teというパスp2の探索(2回目の探索)が行われたとする。
パスp2で、最初の探索のパスp1では行われていない遷移teが行われている。これは、依存関係のあるtbとtcの実行順序を入れ替えた結果、tcの遷移の内容が変わり、最初の探索のパスp1ではtcの後に行われた遷移tdが行われなくなり、代わりに、teが行われるようになったためである。
次に、2回目の探索のパスp2において、依存関係とhappens−before関係の解析を行った結果、
・tcとtb、taとteにそれぞれ依存関係があること、及び、
・tcとteにhappens−before関係があること、
が分かったとする。
そしてバックトラック地点の生成を行うが、tcとtbの依存関係に関しては、既にバックトラック済みである。このため、再度、バックトラック地点は生成されない。結果として、taが行われる直前の状態S0に対し、最初にtc、teの順序で遷移を行うバックトラック地点b3を生成する。すなわち、依存関係のある2つの遷移のペア(taとte)に関して、taとteの間に行われた遷移の中で該ペアのうち後に行われた遷移teに対してhappens−before関係にあった遷移(tc)と、遷移teを最初に行うバックトラック地点b3が生成される。
先程と同じように、バックトラック地点b3の生成が完了したので、次に実行パス上で最後方にあるバックトラック地点から探索を再開する。ここでは、最後方のバックトラック地点はb1とb3の2つが存在する。先に生成されたb1を選択してバックトラックを行う。
そして、tc、tdの順番で遷移を行おうとする。しかし、tcは実行できるが、tdは実行できない。なぜならば、前述したように、tcをtbより先に行う場合、その後に実行できるのはtdではなく、teだからである。
従って、このバックトラック地点b1から行おうとしていた遷移tc、tdの探索は、そもそも行うことができず、無駄な探索に終わる。
上記の通り、DPOR−DSでは、冗長な探索を削減するための工夫として、バックトラックによる探索の再開時の最初の遷移列を規定している。しかしながら、当該最初の遷移列が必ずしも実行可能であるとは限らず、無駄な探索が生じる場合があるという問題があることが判明した。
本発明の目的は、上記の問題を解決し、冗長な探索を削減するにあたり、無駄な探索を回避し効率的な探索を可能とする装置、プログラム及び方法を提供することにある。
上記の目的を達成するため、本発明の1つの側面によれば、モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら、前記探索を行う分散環境モデル探索部と、
前記分散環境モデル探索部が探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成する分散環境モデル依存関係解析部と、
少なくとも前記分散環境モデル依存関係解析部が生成した情報に基づき、前記分散環境モデル探索部が行うバックトラック後の前記探索において、実行を後回しにすべき前記所定の遷移に関する情報を生成する遅延遷移情報付与部と、を備える分散環境モデル用モデル検査装置が提供される。
本発明の別の側面によれば、モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら前記探索を行い、
前記探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成し、
少なくとも前記生成された情報に基づき、前記分散環境モデルのバックトラック後の探索にあたり、実行を後回しにすべき前記所定の遷移に関する情報を生成する、分散環境モデル用モデル検査方法が提供される。
本発明のさらに別の側面によれば、モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら、前記探索を行う分散環境モデル探索処理と、
前記分散環境モデル探索処理が探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成する分散環境モデル依存関係解析処理と、
少なくとも前記分散環境モデル依存関係解析処理が生成した情報に基づき、前記分散環境モデル探索部が行うバックトラック後の前記探索において、実行を後回しにすべき前記所定の遷移に関する情報を生成する遅延遷移情報付与処理と、
をコンピュータに実行させるプログラムが提供される。本発明のさらに別の側面によれば、該プログラムを記録したコンピュータ読み出し可能な半導体メモリや磁気/光ディスク等の記録媒体(non-transitory storage medium)が提供される。
本発明によれば、モデル検査において冗長な探索を削減するにあたり、無駄な探索を生じず、効率的な探索を可能にすることできる。
関連技術を説明する図である。 関連技術を説明する図である。 関連技術を説明する図である。 本発明の第1の実施の形態の構成を説明する図である。 本発明の第1の実施の形態の全体の動作の一例を説明する流れ図である。 図5のステップS12の動作の詳細の一例を説明する流れ図である。 図5のステップS13の動作の詳細の一例を説明する流れ図である。 図7のステップS13_3の動作の詳細の一例を説明する流れ図である。 図7のステップS13_4の動作の詳細の一例を説明する流れ図である。 図5のステップS14の動作の詳細の一例を説明する流れ図である。 図5のステップS15の動作の詳細の一例を説明する流れ図である。 図5のステップS16の動作の詳細の一例を説明する流れ図である。 本発明の第3の実施の形態の構成の一例を説明する図である。 本発明の第3の実施の形態の全体の動作の一例を説明する流れ図である。 図14のステップS32の動作の詳細の一例を説明する流れ図である。 図14のステップS32の動作の詳細の一例を説明する流れ図である。 図16のステップS32_17の動作の詳細の一例を説明する流れ図である。 図14のステップS33の動作の詳細の一例を説明する流れ図である。 図14のステップS36の動作の詳細の一例を説明する流れ図である。 本発明の第4の実施の形態の構成を説明する図である。 本発明の動作原理の一例を説明する図である。 本発明の基本概念を説明する図である。
以下では、本発明の基本的な実施形態を説明する。図22を参照すると、本発明の基本的な実施形態に係る装置は、分散環境モデル探索部(以下、部は、工程、処理、手段ともいう)11と、分散環境モデル依存関係解析部12と、遅延遷移情報付与部13とを備える。分散環境モデル探索部11は、モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら、前記探索を行う。分散環境モデル依存関係解析部12は、分散環境モデル探索部11が探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成する。遅延遷移情報付与部13は、少なくとも分散環境モデル依存関係解析部12が生成した前記情報に基づき、分散環境モデル探索部11で行う分散環境モデルの今後の探索(バックトラック後の探索)において、実行を後回しにすべき当該所定の遷移に関する情報を生成する。なお、図22において、各部11乃至13をそれぞれ、工程(step)、処理(processing)と読み替えることで、本発明の基本的な実施形態に係る方法、プログラムに対応する。 また、本発明の基本的な実施形態に係る装置は、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。以下、各部について詳細に説明する。
分散環境モデル探索部11は、モデル検査対象の分散環境モデルの状態を遷移させて探索を行い、実行パスを生成して分散環境モデル依存関係解析部12に受け渡す。分散環境モデル依存関係解析部12は、実行パス上の依存関係及びhappens−before関係を解析し、探索したパス上にバックトラック地点を生成して分散環境モデル探索部11に返す。分散環境モデル探索部11は、分散環境モデル依存関係解析部12から受け渡された当該パス上でバックトラックを特定し変更を加えたパスを遅延遷移情報付与部13に与え、遅延遷移情報付与部13は、当該パスを解析し、分散環境モデル探索部11での今後の探索(バックトラックの探索)において実行を後回しにすべき遷移に関する情報を分散環境モデル探索部11に返し、分散環境モデル探索部11は、バックトラックの探索において、遅延遷移情報付与部13からの設定に基づき、実行を後回しにすべき遷移を後回しにして、分散環境モデルの探索を行う。
本発明の基本的な実施形態によれば、モデル検査においてバックトラックにより探索を再開する際、前述したDPOR−DSのように、最初に実行する遷移列を規定するのではなく、探索中に実行を後回しにする遷移を規定する。
DROP−DSも本発明の基本的な実施形態も、以前の探索で検出された依存関係のある遷移のペアの実行順序をバックトラック後の探索で入れ替えることができる。ただし、DPOR−DSの方法では、図3を参照して説明した通り、実行可能でない遷移を実行しようとする無駄な探索が発生し得る。
これに対して、本発明の基本的な実施形態によれば、以前の探索で検出された、依存関係のある遷移のペアのうち先に行われた遷移を、バックトラック後の探索では、後回しにする。図21を参照して、本発明の基本的な実施形態の動作原理を詳細に説明する。
最初に、適当なパスとしてta、tb、tc、tdという順序で遷移が行われるパスp1が探索されたとする。そして、
・taとtd、tbとtcにそれぞれ依存関係があること、及び、
・tcとtdにhappens−before関係があること(tcはtdより先に必ず行われること)
が分かったとする。
次に、taを行う直前の状態S0にバックトラック地点b1を生成する。また、そのバックトラック地点b1から探索を再開する際、最初に、
tc(依存関係のある2つの遷移のペア(taとtd)の間に行われた遷移(tbとtc)の中で、当該遷移のペア(taとtd)のうち、後に行われた遷移(td)に対してhappens−before関係にあった遷移)を行う。加えて、状態S0から探索を再開する場合、当該探索では、
ta(以前の探索で検出された依存関係のある2つの遷移のペア(taとtd)のうち、先に行われた遷移)の実行を後回しにする。
同様の方法により、遷移tbを行う直前の状態S1に対し、最初にtcを行うバックトラック地点b2を生成する。状態S1から再開する探索では、
tb(以前の探索で検出された依存関係のある2つの遷移のペア(tbとtc)のうち、先に行われた遷移)の実行を後回しにする。
バックトラック地点の生成が完了したので、次に実行パス上で最後方にあるバックトラック地点から探索を再開する。ここでは、tbを行う直前の状態S1にあるバックトラック地点b2が最後方であるため、バックトラック地点b2から、遷移tcをまず行い、その後、適当に遷移を実行する。ただし、遷移tbの実行だけは、後回しにする。その結果、全体として、ta、tc、te、tbというパスp2が行われたとする。ここで、最初のパスp1では行われていない遷移teが行われているのは、依存関係のあるtbとtcの実行順序を入れ替えた結果、tcの遷移の内容が変わり、最初のパスp1ではtcの後に行われるtdが行われなくなり、代わりにteが行われるようになったためである。
次に、2回目の探索パスp2において、依存関係とhappens−before関係の解析を行い、
・tcとtb、taとteにそれぞれ依存関係があること、及び、
・tcとteにhappens−before関係があること、
が分かったとする。
そしてバックトラック地点の生成を行う。しかし、tcとtbの依存関係に関しては、既にバックトラック済みであるため、再度バックトラック地点は生成されない。
また、taとteの依存関係の解析結果からは、前述の方法に従い、状態S0から遷移tcを最初に行うバックトラック地点b3の作成が試みられる。しかしながら、この場合、既に同じ内容のバックトラック地点b1が生成されているため、新たなバックトラック地点は生成されない。
バックトラック地点の生成が完了したので、次に、実行パス上で最後方にあるバックトラック地点から探索を再開する。ここでは、taを行う直前の状態S0にあるバックトラック地点b1が最後方である。バックトラック地点b1から遷移tcをまず行い、その後、適当に遷移を実行する。ただし、taの実行だけは、後回しにする。その結果、全体としてtc、te、tb、taというパスp3が行われる。
このように、本発明の基本的な実施形態によれば、依存関係のある遷移を後回しにして探索する。これにより、DPOR−DSとは異なり、実行されない遷移(具体例としては、図3の3回目の探索におけるtd)を実行しようとする無駄な探索は行われない。
また、本発明の基本的な実施形態によれば、DPORのように、依存関係のある遷移の順序が入れ替わっていない無駄な探索(具体例としては、図2の2回目の探索のtc、ta、tb、tdのパスの探索)が行われることもない。結果として、本発明の基本的な実施形態によれば、モデル検査を効率化することができる。
上記のとおり、本発明の基本的な実施形態によれば、バックトラック後の探索において、以前の探索とは内容が変わってしまう遷移があったとしても、特定の遷移の実行を、後回しにするだけである。DPOR−DSでは、実行可能でない遷移を行おうとしてしまうという無駄な探索が発生する場合があるが、本発明の基本的な実施形態によれば、このような無駄な探索が発生することはない。
その結果、本発明の基本的な実施形態によれば、モデル検査における探索の効率化を実現することができる。
本発明の基本的な実施形態によれば、分散環境モデルに対するモデル検査において、DPORを適用する際、無駄な探索を発生させずに、冗長な探索を削減し、探索を効率化することができる。以下の例示的な実施の形態では、分散環境のモデル検査に本発明の基本的な実施形態を適用した例に即して説明する。
<第1の実施の形態>
図4は、本発明の第1の実施の形態の構成を例示する図である。図4を参照して、本発明の第1の実施の形態の構成について詳細に説明する。図4を参照すると、本発明の第1の実施の形態の分散環境モデル用モデル検査装置1は、分散環境モデル探索部11、分散環境モデル依存関係解析部12、遅延遷移情報付与部13、入力装置21、出力装置22、及び、記憶装置23を含む。このうち、分散環境モデル探索部11、分散環境モデル依存関係解析部12、遅延遷移情報付与部13は、図22の各要素にそれぞれ対応する。なお、分散環境モデル探索部11、分散環境モデル依存関係解析部12、遅延遷移情報付与部13はコンピュータ上で実行されるプログラムにより、その処理・機能を実現するようにしてもよい。
また、分散環境モデル探索部11は、ユーザから入力装置21を介して、
・分散環境モデル(状態空間の記述)と、
・分散環境モデルが満たすべきプロパティと
を含む検証情報D11を受け取る。検証情報D11を用いて、モデル検査(状態の探索)を実行する。分散環境モデル探索部11は、前記プロパティの成否と、前記プロパティが満たされない場合には、それを示す反例と、を含む検証結果D16を出力装置22を介して、ユーザに返す。
分散環境モデル(分散システムの状態空間の記述)の仕様は、後述する依存関係及びhappens−before関係が適切に定義でき、これらの関係が機械的に解析可能な状態遷移系でありさえすればよく、特定の仕様に制限されるものではない。また、前記分散環境モデルの記述形式(状態空間の記述形式)も、分散環境モデル探索部11で機械的に処理可能(例えばコンピュータ、CPU(Central Processing Unit)等データ処理装置による分散環境モデルの読み込み、解析、探索の実行等)でありさえすればよく、特定の形式に制限されるものではない。
第1の実施の形態では、前記分散環境モデルの仕様を以下に示すものとして説明する。
第1の実施の形態では、分散環境モデルにおける状態を例えば以下のように定義する(ただし、本発明において、状態は以下に制限されない)。
状態は、三つの集合の組(N,M,Q)として定義される。
Nは分散環境中の動作主体であるノードの集合である。Nの要素n(n∈N)はその状態を表す変数svを持つ。
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を格納し、ノードnの状態svの内容を変更する(変更しない場合もある)。
次に、ノードのメッセージ受信による遷移について説明する。ノードは、自身のメッセージ受信用通信チャネルにメッセージが1つ以上格納されている場合、メッセージ受信動作を実行することが可能である。ノードのメッセージ受信による遷移では、メッセージが1つ以上格納されているノードnのメッセージ受信用通信チャネルqから、任意のメッセージmを1つ取り出す。そして、該メッセージmの内容mvに応じて、ノードnの状態svの内容を変更する(変更しない場合もある)。
次に、ノードの内部動作による遷移について説明する。ノードは、自身の状態svに応じて、内部動作を実行することが可能である。ノードの内部動作による遷移では、ノードnが自身の状態svの内容を変更する(変更しない場合もある)。
分散環境モデル探索部11は、状態を遷移させるにあたり、上記のモデルの動作(1、2、3)に加えて、遷移後の状態における、検証情報D11に含まれるプロパティの成否を確認する。分散環境モデル探索部11は、該プロパティが満たされない場合には、その場で、モデル検査の処理を終了し、検証プロパティが満たされないという結果と、それを示す具体例である反例と、を含む検証結果D16を、出力装置22を介してユーザに返す。
なお、検証情報D11において、プロパティは必ずしも含まれていなくてよい。プロパティが定義されていない場合、典型的なプロパティを検証することとし、以降は、分散環境モデル用モデル検査装置1全体が、検証情報D11に、前記典型的なプロパティが含まれているかのように動作する。
分散環境モデル依存関係解析部12は、分散環境モデル探索部11から、分散環境モデル探索部11で実行した実行パスD12を受け取る。
分散環境モデル依存関係解析部12は、前記実行パスD12上の2つの遷移間の依存関係及びhappens−before関係を解析する。
分散環境モデル依存関係解析部12は、実行パスD12上にバックトラック地点を生成する。分散環境モデル依存関係解析部12は、その結果(バックトラック地点が生成された実行パス)D13を分散環境モデル探索部11に返す。
依存関係とは、2つの遷移間に成り立つ関係である。例えば、状態遷移系の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である。
ただし、上記の一般的な依存関係の成否を解析することはコストが高い。このため、本発明の第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,Delay,Dependency)の六つ組(=実行パス要素)を要素とする配列(又はそれに準ずるデータ構造)である。
stは、ある時点での分散環境モデルの状態である。
trは、状態stから実行された遷移である。
Backtrackは、モデル検査による探索においてバックトラックするにあたり、バックトラックの際に状態stから実行されるべき遷移の集合を表す。
Doneは、過去の探索において状態stから実行した遷移の集合を表す。
Delayは、状態st以降の探索において実行を後回しにすべき遷移(=遅延遷移)の集合を表す。
BacktrackからDoneを引いた差集合は、状態stからバックトラックして実行されるべきであるが、未だ実行されていない遷移の集合を表す。
Dependencyは、分散環境モデル依存関係解析部12により依存関係があると判明した遷移を記憶しておくハッシュ表(又はそれに準ずるデータ構造)である。キーは遷移、値はその前記遷移と依存関係にある遷移の集合である。
本明細書では、Dependencyを用いて遷移tr1をキーとして取得できる遷移集合tr_setに遷移tr2を加えることを、「tr1をキーとしてtr2をDependencyに登録する」と表現する。ただし、Dependencyを用いてtr1をキーとして取得できる値がない場合は、{tr2}(tr2を要素として持つ集合)をキーtr1に対応する値として設定することとする。
実行パスD13は、実行パスD12と同様のデータ構造から成る。
次に、遷移のデータ構造について説明する。遷移は、五つの要素からなる組(node,type,send,recv,change_flag)で表される。
nodeは、当該遷移で動作したノードである。
typeは、当該遷移の種類(ノードのメッセージ送信、ノードのメッセージ受信、ノードの内部動作のいずれかであるかを表す値)である。
sendは、当該遷移で送信したメッセージを表す。
recvは、当該遷移で受信したメッセージを表す。
change_flagは、当該遷移でノードの状態svが変更されたか否かを表すフラグである。change_flagには、状態svが変更された場合はtrue、変更されていない場合はfalseが格納される。
このデータ構造に基づく遷移データは、分散環境モデル探索部11による探索において、状態が遷移した際に、その遷移の内容に応じて、各フィールドの値が適切に設定された上で生成される。
遅延遷移情報付与部13は、分散環境モデル探索部11から、実行パスD14を受け取ると、分散環境モデル探索部11が今後行う探索において、実行を後回しにすべき遷移の情報を実行パスD14に付与する。その結果(実行パスD15)を、分散環境モデル探索部11に返す。実行パスD14、D15のデータ構造は、前述した実行パスD12のデータ構造と同様である。
図5は、本発明の第1の実施の形態の全体の動作を説明するための流れ図である。図5を参照して、図4に示した本発明の第1の実施の形態の動作について詳細に説明する。
(ステップS11)
ユーザは、検証情報D11を作成し、入力装置21を介して分散環境モデル探索部11に検証情報D11を入力する。
(ステップS12)
分散環境モデル探索部11は、検証情報D11を受け取ると、検証情報D11に含まれる分散環境モデルを状態遷移させて適当な実行パスを1つ行う。分散環境モデル探索部11は、実行パスD12を生成して分散環境モデル依存関係解析部12に受け渡す。
(ステップS13)
分散環境モデル依存関係解析部12は、実行パスD12上の依存関係及びhappens−before関係を解析する。分散環境モデル依存関係解析部12は、実行パスD12上にバックトラック地点を生成する。分散環境モデル依存関係解析部12は、バックトラック地点が生成された実行パスD13を分散環境モデル探索部11に返す。
(ステップS14)
分散環境モデル探索部11は、実行パスD13上で一番深い(最後方の)バックトラック地点を特定し、該特定したバックトラック地点に基づき実行パスD13に変更を加える。分散環境モデル探索部11は、該変更を加えた実行パスD14を、遅延遷移情報付与部13に受け渡す。
(ステップS15)
遅延遷移情報付与部13は、分散環境モデル探索部11から受け取った実行パスD14を解析する。遅延遷移情報付与部13は、今後の探索において実行を後回しにすべき遷移に関する情報を実行パスD14に付与する。そして、遅延遷移情報付与部13は、実行を後回しにすべき遷移に関する情報を付与した実行パスD15を分散環境モデル探索部11に返す。
(ステップS16)
分散環境モデル探索部11は、実行パスD15上で一番深いバックトラック地点から分散環境モデルを再び状態遷移させ、新たな実行パス(D12’)を得る。分散環境モデル探索部11は、新たな実行パス(D12’)を、図4の実行パスD12として、分散環境モデル依存関係解析部12に受け渡す。
(ステップS17)
分散環境モデル依存関係解析部12では、実行パスD12を受け取り、バックトラックすべきか否かを判断する。バックトラック地点がある場合(ステップS17のYes分岐)、上記したステップS14に進む。バックトラック地点がない場合(ステップS17のNo分岐)、ステップS18(検証結果出力)に進む。ステップS17の判定により、バックトラック地点がなくなるまで、ステップS13〜16の手順を繰り返す。
(ステップS18)
分散環境モデル探索部11は、検証結果D16を出力装置22へ出力する。分散環境モデル探索部11は、検証結果D16として、例えば、プロパティの成否と、プロパティが満たされない場合にはそれを示す反例とを出力する。
(ステップS19)
ユーザは、出力装置22から出力された検証結果を確認する。
(図5のステップS12の詳細)
図6は、図5のステップS12の動作の詳細を説明する流れ図である。以下では、図6を参照して、該ステップS12についてより詳細に説明する。
(ステップS12_1)
分散環境モデル探索部11は、検証情報D11から、分散環境モデルを抽出する。分散環境モデル探索部11は、分散環境モデルの初期状態st0を生成し、状態st = st0とする。
(ステップS12_5)
次に、分散環境モデル探索部11は、状態stから、実行可能な遷移が1つ以上あるか否かをチェックする。状態stが遷移可能である場合には(ステップS12_5のYes分岐)、ステップS12_6に移行する。状態stが遷移可能でない場合には(ステップS12_5のNo分岐)、ステップS12_19に移行する。
(ステップS12_6)
分散環境モデル探索部11は、実行パススタックの一番上にある実行パス要素e1のDelayから、
・実行パス要素e1のDependencyを用いて、実行パス要素e1の持つ遷移tr_e1をキーとして取得できる遷移集合tr_set(遷移tr_e1と依存関係にある遷移の集合)に含まれる各遷移と、
・前記遷移tr_e1と、
を取り除いた(実行パス要素e1のDelayとtr_setの差集合からtr_e1を取り除いた)Delay’(=Delay−tr_set−tr_e1)を計算する。
分散環境モデル探索部11は、状態stが実行可能な遷移の中から、Delay’に含まれない遷移tr_st(状態st以降、実行を後回しにすべき遷移集合に含まれない遷移)を1つ選ぶ。
分散環境モデル探索部11は、状態stに遷移tr_stを行わせて、次の状態st’を生成する。ここで、実行パススタックとは、現在探索中である実行パスの過程を保存するスタック(Last-In-First-Out)である。その要素は実行パス要素である。スタックは図示されないメモリ等の記憶装置に設けられる。
分散環境モデル探索部11は、実行パススタックが空である(=e1がない)場合、
Delay’={ }(空集合)
とする。そして、分散環境モデル探索部11は、状態stから実行可能な遷移の中から任意の遷移tr_stを選ぶ。分散環境モデル探索部11は、状態stが実行可能な遷移として、Delay’に含まれない遷移が存在していない場合にも、状態stが実行可能な遷移の中から任意の遷移tr_stを選ぶ。以上がステップS12_6の処理である。
(ステップS12_7)
次に、分散環境モデル探索部11は、新しい実行パス要素e2 =(st,tr_st,{ },{tr_st},Delay,Dependency)を生成し、実行パススタックに積む。ここで、実行パス要素e2のDelayの内容は前記Delay’である。また、実行パス要素e2のDependencyの内容は、実行パス要素e1のDependencyから、前記遷移tr_e1と前記遷移集合tr_setのペアを取り除いたものである。
(ステップS12_11)
次いで、分散環境モデル探索部11は、st = st’とし、ステップS12_5に戻る。
(ステップS12_19)
ステップS12_5において、状態stが実行可能な遷移が1つもない場合(ステップS12_5のNo分岐)、分散環境モデル探索部11は、その時点での実行パススタックの内容を、実行パスD12として、分散環境モデル依存関係解析部12に受け渡して、ステップS12を終了する。
(図5のステップS13の詳細)
図7は、図5のステップS13の動作の詳細を説明する流れ図である。図7を参照して、該ステップS13についてより詳細に説明する。
(ステップS13_3)
分散環境モデル依存関係解析部12は、まず、実行パスD12に対しhappens−before関係を解析するための前処理を行う。
(ステップS13_4)
次に、分散環境モデル依存関係解析部12は、依存関係及びhappens−before関係の解析と、バックトラック地点の生成を行う。
(ステップS13_6)
最後に、分散環境モデル依存関係解析部12は、バックトラック地点を生成した実行パスD13を、分散環境モデル探索部11に返す。以上で、ステップS13を終了する。
(図7のステップS13_3の詳細)
図8は、図7のステップS13_3の動作の詳細を説明する流れ図である。図8を参照して、該ステップS13_3についてより詳細に説明する。図7のステップS13_3では、分散環境モデル依存関係解析部12は、解析対象の実行パス中の各要素について、その要素の遷移とhappens−before関係にある(必ず先に起こる)遷移を持つ実行パス要素を求めていく。そのため、各実行パス要素毎に、その要素の遷移とhappens−before関係にある遷移を持つ実行パス要素の集合を保持するデータ構造(happens−before集合)を用意する。
(ステップS13_3_1)
分散環境モデル依存関係解析部12は、まず、解析対象の実行パスから、i番目(iは最初は2)の実行パス要素e1を選び出す。
(ステップS13_3_2)
次に、分散環境モデル依存関係解析部12は、j番目(jは最初は1)の実行パス要素e2を選び出す。
(ステップS13_3_3)
さらに、分散環境モデル依存関係解析部12は、実行パス要素e1の遷移と、実行パス要素e2の遷移と、を比較する。分散環境モデル依存関係解析部12は、「実行パス要素e2の遷移→実行パス要素e1の遷移」でない場合、ステップS13_3_5へ移る。
(ステップS13_3_4)
分散環境モデル依存関係解析部12は、「実行パス要素e2の遷移→実行パス要素e1の遷移」(happens−before関係)である場合、実行パス要素e1のhappens−before集合(最初は空)に、
・実行パス要素e2自身と、
・実行パス要素e2のhappens−before集合に含まれる全ての実行パス要素と、
を追加する。
ステップS13_3_3における比較は、具体的には、分散環境モデル依存関係解析部12は、実行パス要素e1の遷移の受信メッセージrecvと、実行パス要素e2の送信メッセージsendと、が一致するか否か比較する。一致すれば、happens−before関係有りとする。
(ステップS13_3_5)
次に、分散環境モデル依存関係解析部12は、jの値を1増やす。
(ステップS13_3_6)
分散環境モデル依存関係解析部12では、jの値がi以上であるか判定し、jの値がi未満の場合(ステップS13_3_6のNo分岐)、ステップS13_3_2からS13_3_5を繰り返す。
(ステップS13_3_7)
分散環境モデル依存関係解析部12は、jの値がi以上になったら、iの値を1増やし、jの値を1にする。
(ステップS13_3_8)
分散環境モデル依存関係解析部12は、iの値が解析対象の実行パスの長さより大きいいか否かを判定する。iの値が解析対象の実行パスの長さ以下の場合(ステップS13_3_8のNo分岐)、ステップS13_3_1からS13_3_7を繰り返す。iの値が解析対象の実行パスの長さを超える場合(ステップS13_3_8のYes分岐)、ステップS13_3を終了する。
(図7のステップS13_4の詳細)
図9は、図7のステップS13_4の動作の詳細を説明する流れ図である。図9を参照して、該ステップS13_4についてより詳細に説明する。
(ステップS13_4_1)
分散環境モデル依存関係解析部12は、まず、解析対象の実行パスから、i番目(iは最初は1)の実行パス要素e1を選び出す。
(ステップS13_4_2)
次に、分散環境モデル依存関係解析部12は、解析対象の実行パスから、j番目(jは最初はi+1)の実行パス要素e2を選び出す。
(ステップS13_4_3)
さらに、分散環境モデル依存関係解析部12は、実行パス要素e1の遷移と、実行パス要素e2の遷移と、を比較し、実行パス要素e1とe2の遷移に、「依存関係があり、happens−before関係がない」か否かをチェックする。
分散環境モデル依存関係解析部12において、ステップS13_4_3の比較のうち、依存関係に関しては、
実行パス要素e1及びe2の遷移の動作ノードnodeが等しく、且つ、
e1及びe2の遷移の状態変更フラグchange_flagのいずれかがtrue、
であれば、
依存関係がある、とする。
分散環境モデル依存関係解析部12において、ステップS13_4_3の比較のうち、happens−before関係に関しては、
実行パス要素e2のhappens−before集合に実行パス要素e1の遷移が含まれていれば、実行パス要素e1とe2の遷移にhappens−before関係があるとする。ここで、実行パス要素e1及びe2の遷移に「依存関係があり、happens−before関係がない」という条件を満たさない場合、分散環境モデル依存関係解析部12は、ステップS13_4_7へ移る。
(ステップS13_4_4)
分散環境モデル依存関係解析部12は、ステップS13_4_3で、実行パス要素e1及びe2の遷移に「依存関係があり、happens−before関係がない」ことが分かった場合、実行パス要素e2の遷移が、実行パス要素e1のDelayに含まれているか否かチェックする。実行パス要素e2の遷移が、実行パス要素e1のDelayに含まれていれば、分散環境モデル依存関係解析部12は、ステップS13_4_6へ移る。
(ステップS13_4_5)
実行パス要素e2の遷移が、実行パス要素e1のDelayに含まれていなければ、分散環境モデル依存関係解析部12は、実行パス要素e2のhappens−before集合に含まれる実行パス要素のうち、解析対象の実行パスに中で最前方にある実行パス要素(これを「e3」とする)を選び、実行パス要素e1のバックトラック集合Backtrackに、実行パス要素e3の遷移を追加することで、バックトラック地点を生成する。
(ステップS13_4_6)
次いで、分散環境モデル依存関係解析部12は、実行パス要素e1のDependencyに、実行パス要素e2の遷移をキーとして、実行パス要素e1の遷移を登録する。
(ステップS13_4_7)
次に、分散環境モデル依存関係解析部12は、jの値を1増やす。
(ステップS13_4_8)
分散環境モデル依存関係解析部12は、jの値が解析対象の実行パスの長さより大きいか判定し、jが実行パスの長さ以下の場合(ステップS13_4_8のNo分岐)、ステップS13_4_2からS13_4_7を繰り返す。
(ステップS13_4_9)
分散環境モデル依存関係解析部12は、jの値が解析対象の実行パスの長さより大きくなったら(ステップS13_4_8のYes分岐)、iの値を1増やし、jの値をi+1とし、ステップS13_4_10に移る。
(ステップS13_4_10)
分散環境モデル依存関係解析部12は、iの値が実行パスの長さよりも大きいか否か判定する。iの値が実行パスの長さ以下の場合(ステップS13_4_10のNo分岐)、ステップS13_4_1からS13_4_9を繰り返す。iの値が実行パスの長さよりも大きい場合(ステップS13_4_10のYes分岐)、ステップS13_4を終了する。
(図5のステップS14の詳細)
図10は、図5のステップS14(実行パスの変更)の動作の詳細を説明する流れ図である。図10を参照して、該ステップS14についてより詳細に説明する。
(ステップS14_1)
分散環境モデル探索部11は、まず、図5のステップS13、S17を介して、分散環境モデル依存関係解析部12から取得した実行パスD13において、
・バックトラック地点を持つ(=バックトラック集合BacktrackからDoneを引いた差集合が空でない)実行パス要素のうち、最後方にある実行パス要素e1を探し出し、
・実行パス要素e1以降の実行パス要素(e1は含まない)を、実行パスD13から取り除き、それを実行パスD14とする。つまり、実行パスD14の最後の実行パス要素は、当該実行パス要素e1となる。
(ステップS14_2)
次に、分散環境モデル探索部11は、実行パスD14を遅延遷移情報付与部13へ受け渡す。
(図5のステップS15の詳細)
図11は、図5のステップS15(遅延遷移情報付与部13による遅延遷移情報の付与)を説明する流れ図である。図11を参照して、該ステップS15について、より詳細に説明する。前述したように、遅延遷移情報付与部13は分散環境モデル探索部11から受け取った実行パスD14を解析し、分散環境モデル探索部11が今後の探索において実行を後回しにすべき遷移に関する情報を付与し実行パスD15とする。
(ステップS15_1)
遅延遷移情報付与部13は、分散環境モデル探索部11から受け取った実行パスD14の最後の実行パス要素e1の遷移trを、実行パス要素e1のDelayに追加する。遅延遷移情報付与部13は、実行パスD14の最後の実行パス要素e1の遷移trを当該e1のDelayに追加したものを実行パスD15とする。
(ステップS15_2)。
次に、遅延遷移情報付与部13は実行パスD15を分散環境モデル探索部11に返す。
(図5のステップS16の詳細)
図12は、図5のステップS16(バックトラック実行)の動作の詳細を説明する流れ図である。図12を参照して、該ステップS16について、より詳細に説明する。
(ステップS16_1)
分散環境モデル探索部11は、まず、実行パススタックの内容を、図5のステップS15で取得した実行パスD15に置き換える。
(ステップS16_3)
次に、分散環境モデル探索部11は、実行パススタックの最後の実行パス要素e1のバックトラック集合Backtrackに含まれ、Doneに含まれない任意の遷移trを1つ選び、実行パス要素e1が持つ状態stに遷移trを行わせ、次の状態st’を生成する。
(ステップS16_4)
さらに、分散環境モデル探索部11は、実行パス要素e1が持つ遷移をtrに置き換え、Doneに遷移trを追加する。その後、図6のステップS12_5に進む。以降の手順は、図6を参照して説明したステップS12と同様であるため、説明は省略する。
次に、第1の実施の形態の効果について説明する。第1の実施の形態の分散環境モデル用モデル検査装置1は、DPORを用いるモデル検査において、バックトラックにより探索を再開する際、DPOR−DSとは異なり、最初に実行する遷移列を規定するのではなく、探索中に実行を後回しにする遷移(遅延遷移)を規定する。
第1の実施の形態によれば、バックトラック後の探索において、以前の探索とは内容が変わってしまう遷移があったとしても、特定の遷移の実行を後回しにするだけである。このため、前述のDPOR−DSの方法のように、実行可能でない遷移を行おうとしてしまう無駄な探索が発生することはない。
結果として、第1の実施の形態によれば、分散環境モデルに対するモデル検査においてDPORを適用する際の探索の効率化が実現される。
<第2の実施の形態>
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。第2の実施の形態の基本構成は、図4の通りである。以下では、前記第1の実施の形態と同様の部分は省略し、異なる部分についてのみ説明する。まず、図4を参照して、本発明の第2の実施の形態の構成について詳細に説明する。
分散環境モデル探索部11は、ユーザから入力装置を介して、分散環境モデルと、前記分散環境モデルが満たすべきプロパティと、を含む検証情報D11を受け取ると、検証情報D11を用いてモデル検査を実行する。そして、分散環境モデル探索部11は、前記プロパティの成否と、前記プロパティが満たされない場合にはそれを示す反例と、を含む検証結果D16を、出力装置を介してユーザに返す。前記分散環境モデルは、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)は、フローエントリである。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を格納し、端末tの状態svの内容を変更する(変更しない場合もある)。
次に、端末のパケット受信による遷移について説明する。端末は、自身のパケット受信用通信ポートにパケットが1つ以上格納されている場合、パケット受信動作を実行することが可能である。端末のパケット受信による遷移では、パケットが1つ以上格納されている端末tのパケット受信用通信ポートqから、最初に格納されたパケットpを取り出す。
そして、パケットpの内容pvに応じて端末tの状態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の実施の形態においては、第2の実施の形態で用いる分散環境モデルの仕様と、DPORのアルゴリズムと、を考慮し、以下のように依存関係を定義する。
遷移t1で動作したノードと遷移t2で動作したノードが同じノードである。
本発明の第2の実施の形態においては、第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
次に、本発明の第2の実施の形態における遷移のデータ構造について説明する。遷移は、七つの要素の組(node,type,send,recv,port,install,apply)で表される。
nodeは、当該遷移で動作した端末、スイッチ、コントローラである。
sendは、当該遷移で送信したパケット又はOpenFlowメッセージの集合を表す。
recvは、当該遷移で受信したパケット又はOpenFlowメッセージを表す。
portは、当該遷移で受信したパケット又はOpenFlowメッセージが格納されていた受信用通信ポートを表す。
installは、当該遷移でインストールされたフローエントリを表す。
applyは、当該遷移で適用されたフローエントリを表す。
このデータ構造に基づく遷移データは、分散環境モデル探索部11による探索において、状態が遷移した際に、該遷移の内容に応じて、各フィールドの値が適切に設定された上で生成される。
次に、本発明の第2の実施の形態の動作について詳細に説明する。
図7のステップS13_3について、図8を参照してより詳細に説明する。ステップS13_3の手順の流れは第1の実施の形態と同様であるが、図8のステップS13_3_3の内容が異なるため、ステップS13_3_3の内容ついてのみ説明し、それ以外は省略する。
分散環境モデル依存関係解析部12は、ステップS13_3_3では、実行パス要素e1の遷移と実行パス要素e2の遷移を比較し、「実行パス要素e2の遷移→実行パス要素e1の遷移」(happens−before関係)であるか否か確認する。
具体的には、分散環境モデル依存関係解析部12は、まず、実行パス要素e1の遷移の受信メッセージrecvが、実行パス要素e2の送信メッセージ集合sendに含まれるか否か確認する。
実行パス要素e1の遷移の受信メッセージrecvが、実行パス要素e2の送信メッセージ集合sendに含まれる場合、分散環境モデル依存関係解析部12は、happens−before関係があるとする。一方、含まれない場合には、分散環境モデル依存関係解析部12は、実行パス要素e1の遷移で適用したフローエントリと、実行パス要素e2の遷移でインストールしたフローエントリとが一致するか否か比較する。
実行パス要素e1の遷移で適用したフローエントリと、実行パス要素e2の遷移でインストールしたフローエントリとが一致する場合、分散環境モデル依存関係解析部12は、happens−before関係があるとする。一致しない場合には、分散環境モデル依存関係解析部12は、実行パス要素e1及び実行パス要素e2の遷移で使用した受信用通信ポートportが互いに一致するか否か比較する。
実行パス要素e1及び実行パス要素e2の遷移で使用した受信用通信ポートportが一致しない場合、分散環境モデル依存関係解析部12は、happens−before関係がないとする。一致する場合は、分散環境モデル依存関係解析部12は、解析対象の実行パスの中から、実行パス要素e1の遷移の受信メッセージrecvを含むsendを持つ遷移を持つ実行パス要素e3と、実行パス要素e2の遷移の受信メッセージrecvを含むsendを持つ遷移を持つ実行パス要素e4と、を探し、実行パス要素e3のhappens−before集合に実行パス要素e4が含まれるか否かを確認する。
実行パス要素e3のhappens−before集合に実行パス要素e4が含まれる場合、分散環境モデル依存関係解析部12は、happens−before関係があるとし、含まれない場合には、happens−before関係がないとする。
(図7のステップS13_4の詳細)
図9は、図7のステップS13_4の動作の詳細について説明する図である。図9を参照して、ステップS13_4についてより詳細に説明する。
図9のステップS13_4の手順の流れは、前記第1の実施の形態と同様であるが、ステップS13_4_3の内容が異なるため、ステップS13_4_3の内容についてのみ説明し、それ以外の説明は省略する。
(ステップS13_4_3)
分散環境モデル依存関係解析部12は、実行パス要素e1の遷移と、実行パス要素e2の遷移と、を比較し、それらに「依存関係があり、happens−before関係がない」か否か確認する。
分散環境モデル依存関係解析部12は、ステップS13_4_3の比較のうち、依存関係に関しては、実行パス要素e1及びe2の遷移の動作ノードnodeが一致する場合、依存関係があるとする。happens−before関係に関しては、前記第1の実施の形態におけるステップS13_4_3と同様であるため、説明は省略する。
本発明の第2の実施の形態の効果について以下に説明する。第2の実施の形態の分散環境モデル用モデル検査装置1は、DPORを用いるモデル検査において、バックトラックにより探索を再開する際、DPOR−DSとは異なり、最初に実行する遷移列を規定するのではなく、探索中に実行を後回しにする遷移(遅延遷移)を規定する。
本発明の第2の実施の形態によれば、バックトラック後の探索において、以前の探索とは内容が変わってしまう遷移があったとしても、特定の遷移の実行を後回しにする。前述のDPOR−DSの方法では、実行可能でない遷移を行おうとしてしまう無駄な探索が発生する場合がある。第2の実施の形態では、このようなことはない。その結果、第2の実施の形態によれば、OpenFlowネットワーク環境を表す分散環境モデルに対するモデル検査において、DPORを適用する際の探索の効率化が実現される。
なお、第2の実施の形態の分散環境モデル用モデル検査装置1において、以下の第3の実施の形態と同様に、モデル検査による探索の際、探索した状態を記憶管理する。そして、分散環境モデル用モデル検査装置1は、探索において行われた遷移の内容とその順序を履歴として表すグラフ(例えば有向グラフ)を用いて、探索した遷移をパス毎に記憶管理するようにしてもよい。また、前記探索した状態及び遷移の記憶管理にあたり、探索済み状態からどの遷移が行われたかを紐付け(関連付け)しておくようにしてもよい(詳細は、以下の第3の実施の形態で説明される)。そして、モデル検査による探索中に、探索済み状態に到達したら、該探索済み状態と、探索済み状態から行われた遷移の履歴情報が紐付けて保存・管理されていることから、当該履歴情報を取得する。そして、到達した状態以降は疑似的にその履歴情報と同様の遷移を行ったものとみなし、依存関係とhappens−before関係を解析して、バックトラック地点を生成し探索を打ち切るようにしてもよい。探索済み状態以降を、再度探索することなく、依存関係及びhappens−before関係を解析することを可能としている。この結果、OpenFlowネットワーク環境を表した分散環境モデルに対するモデル検査においてDPORを適用する場合でも、探索済み状態以降の探索を打ち切ることが可能となる。その結果、探索の効率化が実現される。
<第3の実施の形態>
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。以下では、前述した第1の実施の形態と同様の部分は省略し、主に、相違点について説明する。なお、第3の実施の形態では、モデル検査による探索の際、探索した状態を記憶管理するとともに、探索において行われた遷移の内容とその順序を履歴として表すグラフ(例えば有向グラフ)を用いて、探索した遷移をパス毎に記憶管理する。図13を参照して、本発明の第3の実施の形態の構成について詳細に説明する。
図13を参照すると、本発明の第3の実施の形態における分散環境モデル用モデル検査装置3は、分散環境モデル探索部11と、分散環境モデル依存関係解析部12と、遅延遷移情報付与部13と、探索済み状態管理部34と、探索済み遷移履歴管理部35と、探索済み状態遷移対応情報管理部36と、を含む。分散環境モデル探索部11は、分散環境モデル依存関係解析部12、遅延遷移情報付与部13、探索済み状態管理部34、探索済み遷移履歴管理部35、探索済み状態遷移対応情報管理部36のそれぞれと、情報をやり取りするように構成されている。また、分散環境モデル用モデル検査装置3は、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。
探索済み状態遷移対応情報管理部36は、探索済み状態管理部34が記憶管理する探索済み状態と、探索済み遷移履歴管理部35が記憶管理する遷移と、を紐付け(関係付け)るため、その対応関係を管理する。
分散環境モデル依存関係解析部12は、分散環境モデル探索部11から、
・前半部分実行パスと、
・後半部分実行パスと、を含む実行パス情報D32を受け取る。分散環境モデル依存関係解析部12は、前半部分実行パスと、後半部分実行パスと、を結合してできる実行パス上の2つの遷移間の依存関係とhappens−before関係を解析し、前半部分実行パス上に、バックトラック地点を生成する。分散環境モデル依存関係解析部12は、その結果(バックトラック地点が生成された前半部分実行パス)D33を分散環境モデル探索部11に返す。
実行パス情報D32のデータ構造について説明する。実行パス情報D32に含まれる前半部分実行パスは、6つの実行パス要素(st,tr,Backtrack,Done,Delay,Dependency)を要素とする配列(又はそれに準ずるデータ構造)である。
stは、ある時点での分散環境モデルの状態である。
trは、状態stから実行された遷移である。
Backtrackは、モデル検査による探索においてバックトラックするにあたり、バックトラックの際に状態stから実行されるべき遷移の集合を表す。
Doneは、過去の探索において状態stから実行した遷移の集合を表す。
Delayは、状態st以降の探索において実行を後回しにすべき遷移(=遅延遷移)の集合を表す。BacktrackからDoneを引いた差集合は、状態stからバックトラックして実行されるべきであるが、まだされていない遷移の集合を表す。
Dependencyは、分散環境モデル依存関係解析部12により依存関係があると判明した遷移を記憶しておくハッシュ表(あるいは、ハッシュ表に準ずるデータ構造)である。キーは遷移、値はその前記遷移と依存関係にある遷移の集合である。
本明細書では、Dependencyを用いて遷移tr1をキーとして取得できる遷移集合tr_setに遷移tr2を加えることを、「tr1をキーとしてtr2をDependencyに登録する」と表現する。ただし、Dependencyを用いてtr1をキーとして取得できる値がない場合は、{tr2}(tr2を要素として持つ集合)をキーtr1に対応する値として設定することとする。実行パス情報D32に含まれる後半部分実行パスは、遷移の配列(あるいはそれに準ずるデータ構造)である。
「実行パス要素の遷移」と表現した場合、
・前半部分実行パスの要素の場合、trのことを表し、
・後半部分実行パスの要素の場合、その要素そのもの(=遷移)を表す。
実行パス情報D32に含まれる前半部分実行パスは1つでなければならない。これに対して、後半部分実行パスは複数あってもよく、あるいは、なくてもよい。
なお、後半部分実行パスの要素は、後述されるように、分散環境モデル探索部11の探索中に、探索済み状態に到達したら、該探索済み状態から行われた遷移の履歴情報を探索済み遷移履歴管理部35から取得し、当該到達した状態以降を、疑似的にその履歴情報と同様の遷移を行ったものとみなして設定されたパスに相当する。
前半部分実行パスD33のデータ構造は、前述した実行パス情報D32に含まれる前半部分実行パスのデータ構造と同様である。
遅延遷移情報付与部13は、分散環境モデル探索部11から、前半部分実行パスD34を受け取ると、分散環境モデル探索部11が今後行う探索において、実行を後回しにすべき遷移の情報を前半部分実行パスD34に付与し、その結果(前半部分実行パスD35)を、分散環境モデル探索部11に返す。
前半部分実行パスD34、D35のデータ構造は、前述した実行パス情報D32に含まれる前半部分実行パスのデータ構造と同様である。
探索済み状態管理部34は、分散環境モデル探索部11から、探索が行われた状態を受け取り保存(記憶)する。状態を保存する方法は、
・受け取った状態をそのまま保存(記憶)してもよいし、あるいは、
・何らかの変換を施したもの(例えば記憶容量削減のため圧縮されたもの)を保存(記憶)してもよい。
また、探索済み状態管理部34は、分散環境モデル探索部11から、これから探索する状態が過去に探索済みの状態であるか否かの問い合わせを受け付けると、当該状態と一致するものが、探索済み状態管理部34で記憶している状態の中に存在するか否か検索する。探索済み状態管理部34は、
・当該状態と一致するものが存在する場合には、「探索済み」、
・当該状態と一致するものが存在しない場合には、「未探索」
という回答を、分散環境モデル探索部11に返す。
探索済み遷移履歴管理部35は、分散環境モデル探索部11から、探索が行われた遷移を受け取り、以下で説明するグラフ構造により保存する。
グラフの全てのノードは遷移を表している。ノード間には有向エッジが引かれる。有向エッジは、分散環境モデルにおける特定の実行パス上での遷移の実行順序を表す。ただし、根ノードと呼ばれる特別なノードだけは遷移ではなく実行パスの出発点を表す。
分散環境モデルの初期状態から行われる遷移を表すノードには、根ノードから有向エッジが引かれる。
SDPORにおいては、互いに異なる実行パス上で行われる遷移trに関して、管理するグラフ中で遷移trを表すノードは常に1つである。これに対し、本発明の第3の実施形態の探索済み遷移履歴管理部35においては、互いに異なる実行パス上で行われる遷移trに関して、実行パス毎に異なるノードを作成し、各実行パス上の遷移trを個別に表す。
本発明の第3の実施の形態によれば、このようなグラフ構造を用いることで、根ノードから有向エッジを辿ることにより、特定の実行パス上で行われた遷移の列が取得できる形で遷移を保存するのが、SDPORとの差異である。
SDPORでは、DPOR−DSが定義しているhappens−before関係の解析を行わない。SDPORが管理するグラフも、happens−before関係の解析を目的としていず、happens−before関係の解析に必要な情報を保持しない。
本発明の第3の実施の形態において管理するグラフは、前述した差異(SDPORとの差異)のため、happens−before関係の解析に必要な情報を保持できる。これにより、DPOR−DSのように、探索のバックトラックの要否にhappens−before関係を考慮する場合でも、SDPORのように、探索済み状態以降を再探索することは必要とされず、探索を打ち切ることが可能になる。結果として、探索の効率化が実現される。
分散環境モデル探索部11による探索の開始時点では、グラフは空である。分散環境モデル探索部11から新しいノード及び有向エッジを生成する操作を受け付け、グラフが構築されていく。
探索済み状態遷移対応情報管理部36は、分散環境モデル探索部11により過去に探索された状態と、前記状態から行われた遷移と、を紐付ける情報を保存する。探索済み状態遷移対応情報管理部36は、分散環境モデル探索部11から、状態を入力として与えられ、該状態から行われた遷移の問い合わせが行われると、探索済み遷移履歴管理部35に登録されている、該状態から行われた遷移を表すノードを、分散環境モデル探索部11に返す。該状態から行われた遷移が複数ある場合には、それらの遷移を表すノードを全て返す。
また、探索済み状態遷移対応情報管理部36は、分散環境モデル探索部11から、状態と遷移を入力として与えられ、該状態と該遷移を紐付ける操作を受け付けると、当該状態と、探索済み遷移履歴管理部35に保存されている前記遷移を表すノードと、を紐付ける情報を保存する。
図14は、本発明の第3の実施の形態の全体の動作を説明するための流れ図である。図13及び図14を参照して、本発明の第3の実施の形態の動作について詳細に説明する。
(ステップS32)
分散環境モデル探索部11は、検証情報D11を受け取ると、検証情報D11に含まれる分散環境モデルを状態遷移させて適当なパスの1つについて探索を行い、実行パス情報D32を生成し、実行パス情報D32を分散環境モデル依存関係解析部12に受け渡す。
(ステップS33)
分散環境モデル依存関係解析部12は、実行パス情報D32に含まれる、前半部分実行パスと、後半部分実行パスと、を結合してできる実行パス上の依存関係及びhappens−before関係を解析する。分散環境モデル依存関係解析部12は、前記前半部分実行パス上にバックトラック地点を生成し、その結果(バックトラック地点が生成された前半部分実行パス)D33を、分散環境モデル探索部11に返す。
(ステップS34)
分散環境モデル探索部11は、前半部分実行パスD33上で一番深い(最後方の)バックトラック地点を特定して、当該バックトラック地点に基づき、前半部分実行パスD33に変更を加える。分散環境モデル探索部11は、前記変更を加えた前半部分実行パスD34を遅延遷移情報付与部13に受け渡す。
(ステップS35)
遅延遷移情報付与部13は、前半部分実行パスD34を解析して、今後の探索において実行を後回しにすべき遷移に関する情報を前半部分実行パスD34に付与する。遅延遷移情報付与部13は、前記情報を付与した前半部分実行パスD35を分散環境モデル探索部11に返す。
(ステップS36)
分散環境モデル探索部11は、前半部分実行パスD35上で一番深いバックトラック地点から分散環境モデルを再び状態遷移させ(バックトラック実行)、新たな実行パス情報D32’を得る。分散環境モデル探索部11は、新たな実行パス情報D32’を分散環境モデル依存関係解析部12に受け渡す。
(ステップS37)
分散環境モデル探索部11では、実行パス情報D32に含まれる前半部分実行パスのバックトラック地点の有無を判定する。実行パス情報D32に含まれる前半部分実行パス上から、バックトラック地点が存在する場合(ステップS37のYes分岐)、ステップS34〜36の手順を繰り返す。パス情報D32に含まれる前半部分実行パス上にバックトラック地点がなくなると(ステップS37のNo分岐)、分散環境モデル探索部11はモデル検証結果を出力する。
(図14のステップS32の詳細)
図15、図16は、図14のステップS32の動作の詳細を説明する図である。図13及び図15、図16を参照して、ステップS32についてより詳細に説明する。
(ステップS32_1)
分散環境モデル探索部11は、検証情報D11から分散環境モデルを抽出し、その初期状態st0を生成して状態st = st0とする。
(ステップS32_2)
次に、分散環境モデル探索部11は、探索済み遷移履歴管理部35が管理するグラフに根ノードを生成させる。
(ステップS32_3)
さらに、分散環境モデル探索部11は、初期状態st0と前記根ノードを、探索済み状態遷移対応情報管理部36に紐付けさせる。
(ステップS32_4)
次いで、分散環境モデル探索部11は、初期状態st0を探索済み状態管理部34に登録する。
(ステップS32_5)
次に、分散環境モデル探索部11は、状態stが実行可能な遷移が1つ以上あるかチェックする。
(ステップS32_6)
状態stが実行可能な遷移が1つ以上ある場合(stは遷移可能:ステップS32_5のYes分岐)、実行パススタックの一番上にある実行パス要素e1のDelayから、実行パス要素e1のDependencyを用いて実行パス要素e1の持つ遷移tr_e1をキーとして取得できる遷移集合tr_setに含まれる各遷移と、前記遷移tr_e1と、を取り除いた(実行パス要素e1のDelayとtr_setの差集合から遷移tr_e1を取り除いた)Delay’を計算する。そして、分散環境モデル探索部11は、状態stが実行可能な遷移の中から、Delay’に含まれない遷移tr_stを1つ選び、状態stに遷移tr_stを行わせて、次の状態st’を生成する。
分散環境モデル探索部11は、実行パススタックが空である(=実行パス要素e1がない)場合、Delay’を{ }(空集合)とし、状態stから実行可能な遷移の中から任意の遷移tr_stを選ぶ。
状態stが実行可能な遷移に、該Delay’(実行パス要素e1のDelayとtr_setの差集合から遷移tr_e1を取り除いた集合)に含まれない遷移が存在しない場合にも、状態stが実行可能な遷移の中から、任意の遷移tr_stを選び、状態stに遷移tr_stを行わせて、次の状態st’を生成する。以上はステップS32_6の処理である。
(ステップS32_7)
次に、分散環境モデル探索部11は、新しい実行パス要素e2 =(st,tr_st,{ },{tr_st},Delay,Dependency)を生成し、実行パススタックに積む。ここで、新しい実行パス要素e2のDelayの内容は、ステップS32_6で計算されたDelay’である。また、新しい実行パス要素e2のDependencyの内容は、実行パス要素e1のDependencyから、前記遷移tr_e1と前記遷移集合tr_setのペアを取り除いたものである。
(ステップS32_8)
次いで、分散環境モデル探索部11は、探索済み遷移履歴管理部35が管理するグラフに遷移tr_stを表すノードnd1を生成させ、遷移tr_stの直前に行った遷移を表すノード(tr_stが初期状態からの遷移であれば根ノード)からノードnd1への有向エッジを引く。
(ステップS32_9)
次に、分散環境モデル探索部11は、状態st’と、ノードnd1と、を探索済み状態遷移対応情報管理部36に紐付けさせる。
(ステップS32_10)
さらに、分散環境モデル探索部11は、状態st’が探索済み状態管理部34に登録済みか否かチェックする。
(ステップS32_11)
分散環境モデル探索部11は、ステップS32_10で、登録済みでなければ(図15のステップS32_10のNo分岐)、状態st’を探索済み状態管理部34に登録する。その後、ステップS32_5へ戻る(戻る際にst=st’とする)。
(ステップS32_19)
図15のステップS32_5の遷移可能の判定において、状態stから実行可能な遷移が1つもない場合(図15のステップS32_5のNo分岐)、分散環境モデル探索部11は、その時点での実行パススタックの内容が前半部分実行パスであり、後半部分実行パスが空の実行パスである実行パス情報D32を生成し、分散環境モデル依存関係解析部12に受け渡し、ステップS32を終了する。
(図16のステップS32_12)
図15のステップS32_10で状態st’が登録済みである場合(ステップS32_10のYes分岐)、まず、探索済み状態遷移対応情報管理部36において、状態st’と紐付いているノードを全て取得する。
(図16のステップS32_15)
分散環境モデル探索部11は、選んでいないノードが存在するか否か判定する。選んでいないノードが存在する場合(図16のステップS32_15のYes分岐)、ステップS32_13で全てのノードが選び出されるまで、ステップS32_13からS32_14を繰り返す。
(図16のステップS32_13)
分散環境モデル探索部11は、状態st’と紐付いているノードの中から任意のノードnd2を選び出す。
(図16のステップS32_14)
分散環境モデル探索部11は、探索済み遷移履歴管理部35が管理するグラフにおいて、ノードnd2から有向エッジを1つだけ辿って到達できるノードnd3を全て列挙する。
(図16のステップS32_16)
図16のステップS32_15の判定で、選んでいないノードが存在しない場合、分散環境モデル探索部11は、図15のステップS32_8で生成したノードnd1から、図16のステップS32_14で列挙したノードnd3のそれぞれに対し、有向エッジを引く。
(図16のステップS32_17)
次に、分散環境モデル探索部11は、状態st’を起点状態とし、後半部分実行パスを取得する。
(図16のステップS32_18)
最後に、分散環境モデル探索部11は、その時点での実行パススタックの内容が前半部分実行パスであり、図16のステップS32_17で取得したものが後半部分実行パスである実行パス情報D32を生成し、分散環境モデル依存関係解析部12に受け渡して、ステップS32を終了する。
(図16のステップS32_17の詳細)
図17は、図16のステップS32_17の動作の詳細を説明する図である。図17を参照して、ステップS32_17についてより詳細に説明する。
(ステップS32_17_1)
探索済み状態遷移対応情報管理部36は、起点状態stと紐付けられている全てのノードを抽出する。
(ステップS32_17_4)
分散環境モデル探索部11は、ステップS32_17_1で抽出したノードが全て選び出されるまで、ステップS32_17_2からS32_17_3を繰り返す。
(ステップS32_17_2)
次に、分散環境モデル探索部11は、起点状態stと紐付けられている全てのノードの中から任意のノードndを選び出す。
(ステップS32_17_3)
分散環境モデル探索部11は、探索済み遷移履歴管理部35が管理するグラフにおいて、ノードndから有向エッジを最後まで(=他のノードへの有向エッジがないノードに到達するまで)たどって得られる実行パスを取得する。
ステップS32_17_2の途中で分岐が生じる(=他のノードへの有向エッジが複数あるノードに到達する)場合、分散環境モデル探索部11は、有向エッジの辿り方の全てのパターンを網羅し、全ての実行パスを取得する。
(ステップS32_17_5)
分散環境モデル探索部11は、上記手順で取得した実行パス全てを後半部分実行パスとし、ステップS32_17を終了する。
(図14のステップS33の詳細)
図18は、図14のステップS33の動作の詳細を説明する流れ図である。図18を参照して、ステップS33についてより詳細に説明する。
(ステップS33_1)
分散環境モデル依存関係解析部12は、まず、実行パス情報D32に含まれる後半部分実行パスから、任意のものを1つ選び出す。
(ステップS33_2)
次に、分散環境モデル依存関係解析部12は、実行パス情報D32に含まれる、前半部分実行パスと、ステップS33_1で選んだ後半部分実行パスと、を結合してできる実行パスを解析の対象とする。
(ステップS33_3)
次に、分散環境モデル依存関係解析部12は、解析の対象の実行パスに対して、happens−before関係を解析するための前処理を行う。
(ステップS33_4)
さらに、分散環境モデル依存関係解析部12は、前処理を行った解析の対象の実行パスから、依存関係及びhappens−before関係の解析とバックトラック地点の生成を行う。
(ステップS33_5)
実行パス情報D32に含まれる後半部分実行パスが複数ある場合、その全てがステップS33_1で選び出されるまで、分散環境モデル依存関係解析部12は、ステップS33_1からS33_4を繰り返す。
(ステップS33_6)
最後に、分散環境モデル依存関係解析部12は、バックトラック地点を生成した前半部分実行パスD33を分散環境モデル探索部11に返し、ステップS33を終了する。
なお、ステップS33_3の動作は、前述した本発明の第2の実施の形態におけるステップ13_3と同様であるため、説明は省略する。
(図18のステップS33_4の詳細)
図18のステップS33_4について、図9を参照してより詳細に説明する。図18のステップS33_4の手順の流れは、前述した第2の実施の形態において図9を参照して説明したステップS13_4と基本的に同様とされるが、図9のステップS13_4_10の処理内容が異なる。このため、以下では、図9のステップS13_4_10の内容についてのみ説明し、それ以外の説明は省略する。
本発明の第3の実施の形態におけるステップS13_4_10では、iの値が前半部分実行パスの長さよりも大きくなるまで、ステップS13_4_1からS13_4_9を繰り返す。
(図14のステップS34の詳細)
次に、図14のステップS34について、図10を参照して、より詳細に説明する。なお、以下では、図10における実行パスD13、D14は、それぞれ前半部分実行パスD33、D34に置き換え(読み替え)られる。
(ステップS34_1)
分散環境モデル探索部11は、まず、ステップS33で取得した前半部分実行パスD33において、バックトラック地点を持つ(=バックトラック集合BacktrackからDoneを引いた差集合が空でない)実行パス要素のうち、最後方にある実行パス要素e1を探し出し、それ以降の実行パス要素(e1は含まない)を前半部分実行パスD33から取り除き、それを前半部分実行パスD34とする(図10のステップS14_1)。つまり、前半部分実行パスD34の最後の実行パス要素は前記実行パス要素e1となる。
(ステップS34_2)
次に、前半部分実行パスD34を遅延遷移情報付与部13へ受け渡す(図10のステップS14_2)。
(図14のステップS35の詳細)
次に、図14のステップS35について、図11を参照して、より詳細に説明する。なお、以下では、図11における実行パスD14は、前半部分実行パスD34に置き換え(読み替え)られる。
(ステップS35_1)
遅延遷移情報付与部13は、まず、前半部分実行パスD34の最後の実行パス要素e1の遷移trを、e1のDelayに追加し、それを前半部分実行パスD35とする(図11のステップS15_1)。
(ステップS35_2)
次に、遅延遷移情報付与部13は、前半部分実行パスD35を分散環境モデル探索部11に返す(図11のステップS15_2)。
(図14のステップS36の詳細)
図19は、図14のステップS36の動作の詳細を説明する流れ図である。図19を参照して、ステップS36についてより詳細に説明する。
(ステップS36_1)
分散環境モデル探索部11は、まず、実行パススタックの内容を、ステップS35で取得した前半部分実行パスD35に置き換える。
(ステップS36_3)
次に、分散環境モデル探索部11は、実行パススタックの最後の実行パス要素e1のバックトラック集合Backtrackに含まれ、Doneに含まれない任意の遷移trを1つ選び、実行パス要素e1が持つ状態stに遷移trを行わせ、次の状態st’を生成する。
(ステップS36_4)
さらに、分散環境モデル探索部11は、実行パス要素e1が持つ遷移をtrに置き換え、Doneに遷移trを追加する。
(ステップS36_5)
次いで、分散環境モデル探索部11は、探索済み遷移履歴管理部35が管理するグラフに、遷移trを表すノードnd1を生成させる。
(ステップS36_6)
次に、探索済み状態遷移対応情報管理部36において、状態stと紐付いているノードを全て列挙し、探索済み遷移履歴管理部35が管理するグラフにおいて、そのそれぞれからnd1への有向エッジを引く。
(ステップS36_7)
さらに、分散環境モデル探索部11は、状態st’とノードnd1を、探索済み状態遷移対応情報管理部36に紐付けさせる。
その後、分散環境モデル探索部11は、ステップS32_10に進み、以降の手順は、ステップS32の説明で述べたものと同様なので省略する。
第3の実施の形態の効果について以下に説明する。第3の実施の形態の分散環境モデル用モデル検査装置3は、DPORを用いたモデル検査による探索の際、探索した状態を記憶して管理するとともに、探索において行われた遷移の内容とその順序をパス毎に区別して取得可能な履歴を表すグラフ構造を用いて、探索した遷移を記憶管理する。また、探索した状態及び遷移の管理にあたり、探索済みの状態からどの遷移が行われたかを紐付けておく。モデル検査による探索中に探索済みの状態に到達したら、前記探索済みの状態及び、前記探索済みの状態から行われた遷移の履歴情報が紐付けて保存・管理されているため、前記履歴情報を取得する。そして、前記探索済みの状態以降は、疑似的に、当該履歴情報と同様の遷移を行ったものとみなして、依存関係とhappens−before関係を解析し、バックトラック地点を生成し探索を打ち切ることができる。
これにより、探索済みの状態以降を再度探索することなく、happens−before関係の解析が可能である。このため、例えばOpenFlowネットワーク環境を表す分散環境モデルに対するモデル検査において、DPORを適用する場合でも、探索済み状態以降の探索の打ち切りが可能になる。結果として、探索の効率化が実現される。
<第4の実施の形態>
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。以下では、前記第3の実施の形態と同様の部分は省略し、異なる部分についてのみ説明する。図20は、本発明の第4の実施の形態の構成を示す図である。図20を参照すると、本発明の第4の実施の形態における分散環境モデル用モデル検査装置4は、分散環境モデル探索部11と、分散環境モデル依存関係解析部12と、遅延遷移情報付与部13と、探索済み状態管理部34と、探索済み遷移履歴管理部35と、探索済み状態遷移対応情報管理部36と、検証情報雛形提供部47と、を含む。分散環境モデル探索部11は、分散環境モデル依存関係解析部12、遅延遷移情報付与部13、探索済み状態管理部34、探索済み遷移履歴管理部35、探索済み状態遷移対応情報管理部36、検証情報雛形提供部47のそれぞれと、情報をやり取りするように構成されている。探索済み状態遷移対応情報管理部36は、探索済み状態管理部34が管理する探索済み状態と、探索済み遷移履歴管理部35が管理する遷移と、を紐付けるため、その対応関係を管理する。また、分散環境モデル用モデル検査装置4は、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。
検証情報雛形提供部47は、ユーザが検証情報を入力する際、検証情報D11に含まれるプロパティに対して典型的な雛形(D11')を提供する。さらに、検証情報雛形提供部47は、ユーザが前記雛形を選択することで、それを前記プロパティの定義の一部又は全部に利用し、分散環境モデル探索部11に入力することが可能な機能を備える。
次に、第4の実施形態の動作について説明する。ユーザは、図5のステップS11において、検証情報D11を作成する際、検証情報雛形提供部47から所望の雛形をいくつか選択し、それらを用いて検証情報D11を完成させ、分散環境モデル探索部11に入力する。ただし、ユーザは、雛形を全く用いずに、検証情報D11を作成してもよい。その他の動作は、本発明の第3の実施の形態と同様のため省略する。
次に、第4の実施形態の効果について説明する。ユーザが本発明の分散環境モデル用モデル検査装置を利用するにあたり、検証情報D11を作成する負担を軽減することができるため、結果として検証全体の効率を向上させることができる。
本発明は、分散環境、例えばOpenFlowネットワーク環境を構築したり、その環境に変更を加える際に、それらの妥当性を検証するツール等に適用して好適とされる。ただし、適用は上記に制限されるものでない。
なお、上記の非特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施の形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素(各請求項の各要素、各実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
特に制限されないが、上記した実施形態は以下のように付記される。
(付記1)
モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら、前記探索を行う分散環境モデル探索部と、
前記分散環境モデル探索部が探索したパス上の複数の遷移に関して依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成する分散環境モデル依存関係解析部と、
前記分散環境モデル依存関係解析部が生成した前記情報と前記解析結果に基づき、前記分散環境モデル探索部が行うバックトラック後の前記探索において、実行を後回しにすべき前記所定の遷移に関する情報を生成する遅延遷移情報付与部と、
を備える分散環境モデル用モデル検査装置。
(付記2)
前記分散環境モデル探索部は、前記モデル検査の対象として、OpenFlowネットワーク環境を表す分散環境モデルの探索を行う、ことを特徴とする付記1に記載の分散環境モデル用モデル検査装置。
(付記3)
前記分散環境モデル探索部で探索した状態を探索済み状態として記憶管理する探索済み状態管理部と、
前記探索したパス上の遷移について前記遷移が行われた順序を、探索済みの遷移の履歴としてパス毎に区別して記憶管理する探索済み遷移履歴管理部と、
前記探索済み状態管理部が記憶保持する前記探索済みの状態と、前記探索済み遷移履歴管理部が保持する前記遷移との対応情報を管理する探索済み状態遷移対応情報管理部と、 を備え、
前記分散環境モデル探索部は、モデル検査により分散環境モデルを探索する際に、探索した状態と遷移をそれぞれ前記探索済み状態管理部と前記探索済み遷移履歴管理部に登録し、前記探索済み状態遷移対応情報管理部に登録した前記探索した状態と前記遷移の対応付けを行わせる、ことを特徴とする、付記1又は2に記載の分散環境モデル用モデル検査装置。
(付記4)
前記分散環境モデル探索部は、前記モデル検査の探索で到達した状態が、前記探索済み状態管理部で記憶管理されている探索済みの状態である場合、前記探索済み状態遷移対応情報管理部及び前記探索済み遷移履歴管理部を参照し、前記探索済みの状態から行われた探索済みの遷移の履歴情報を取得し、
前記探索済みの状態以降の遷移は前記履歴情報と同様の遷移を行ったとみなしたパスを生成し、
前記分散環境モデル依存関係解析部は、前記履歴情報と同様の遷移を行ったとみなしたパスに基づき、遷移の依存関係とhappens−before関係を解析する、ことを特徴とする、付記3に記載の分散環境モデル用モデル検査装置。
(付記5)
前記分散環境モデル探索部は、前記分散環境モデル用モデル検査装置により検証するプロパティを受け付ける手段を備える、ことを特徴とする付記1乃至4のいずれか1に記載の分散環境モデル用モデル検査装置。
(付記6)
前記プロパティを入力する際に、前記プロパティの少なくとも一部について典型的な雛形を提供する検証情報雛形提供部を備えていることを特徴とする付記5に記載の分散環境モデル用モデル検査装置。
(付記7)
実行を後回しにすべき前記所定の遷移として、以前の探索で検出された、依存関係のある遷移のペアのうち先に行われた遷移を、バックトラック後の探索では、後回しにする、ことを特徴とする付記1乃至6のいずれか1に記載の分散環境モデル用モデル検査装置。
(付記8)
モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら前記探索を行い、
前記探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成し、
前記解析結果と前記生成された情報に基づき、前記分散環境モデルのバックトラック後の探索にあたり、実行を後回しにすべき前記所定の遷移に関する情報を生成する、分散環境モデル用モデル検査方法。
(付記9)
前記分散環境モデルのモデル検査で探索した状態を探索済み状態として第1の記憶部で記憶管理し、
前記探索したパス上の遷移について前記遷移が行われた順序を、探索済みの遷移の履歴としてパス毎に区別した形態で、第2の記憶部で記憶管理し、
前記探索済みの状態と、探索済みの遷移との対応情報を第3の記憶部で記憶管理することを特徴とする、付記8に記載の分散環境モデル用モデル検査方法。
(付記10)
前記分散環境モデルのモデル検査において、探索で到達した状態が、前記第1の記憶部で記憶管理されている前記探索済みの状態である場合、前記第2及び第3の記憶部を参照して、探索済みの状態から行われた探索済みの遷移の履歴情報を取得し、
前記探索済みの状態以降の遷移は前記履歴情報と同様の遷移を行ったとみなしたパスを生成し、
前記履歴情報と同様の遷移を行ったとみなしたパスに基づき、遷移の依存関係とhappens−before関係を解析する、ことを特徴とする、付記9に記載の分散環境モデル用モデル検査方法。
(付記11)
検証するプロパティを入力する、ことを特徴とする付記8又は9に記載の分散環境モデル用モデル検査方法。
(付記12)
前記プロパティの少なくとも一部について典型的な雛形を提供する、ことを特徴とする付記8又は9に記載の分散環境モデル用モデル検査方法。
(付記13)
実行を後回しにすべき前記所定の遷移として、以前の探索で検出された、依存関係のある遷移のペアのうち先に行われた遷移を、バックトラック後の探索では、後回しにする、ことを特徴とする付記8乃至12のいずれか1に記載の分散環境モデル用モデル検査方法。
(付記14)
モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら、前記探索を行う分散環境モデル探索処理と、
前記分散環境モデル探索処理が探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成する分散環境モデル依存関係解析処理と、
前記分散環境モデル依存関係解析処理が生成した情報と前記解析結果に基づき、前記分散環境モデル探索部が行うバックトラック後の前記探索において、実行を後回しにすべき前記所定の遷移に関する情報を生成する遅延遷移情報付与処理と、
をコンピュータに実行させるプログラム。
(付記15)
前記分散環境モデル探索処理は、前記モデル検査の対象として、OpenFlowネットワーク環境を表す分散環境モデルの探索を行う、ことを特徴とする付記14に記載のプログラム。
(付記16)
前記分散環境モデル探索処理で探索した状態を探索済み状態として記憶管理する探索済み状態管理処理と、
前記探索したパス上の遷移について前記遷移が行われた順序を、探索済みの遷移の履歴としてパス毎に区別して記憶管理する探索済み遷移履歴管理処理と、
前記探索済み状態管理処理が記憶保持する前記探索済みの状態と、前記探索済み遷移履歴管理処理が保持する前記遷移との対応情報を管理する探索済み状態遷移対応情報管理処理と、
を備え、
前記分散環境モデル探索処理は、モデル検査により分散環境モデルを探索する際に、探索した状態と遷移をそれぞれ前記探索済み状態管理処理と前記探索済み遷移履歴管理処理に登録し、前記探索済み状態遷移対応情報管理処理に登録した前記探索した状態と前記遷移の対応付けを行わせる、ことを特徴とする、付記14又は15に記載のプログラム。
(付記17)
前記分散環境モデル探索処理は、前記モデル検査の探索で到達した状態が、前記探索済み状態管理処理で記憶管理されている探索済みの状態である場合、前記探索済み状態遷移対応情報管理処理及び前記探索済み遷移履歴管理処理を参照し、前記探索済みの状態から行われた探索済みの遷移の履歴情報を取得し、
前記探索済みの状態以降の遷移は前記履歴情報と同様の遷移を行ったとみなしたパスを生成し、
前記分散環境モデル依存関係解析処理は、前記履歴情報と同様の遷移を行ったとみなしたパスに基づき、遷移の依存関係とhappens−before関係を解析する、ことを特徴とする、付記16に記載のプログラム。
(付記18)
前記分散環境モデル探索処理は、検証するプロパティを受け付ける、ことを特徴とする付記14乃至17のいずれか1に記載のプログラム。
(付記19)
前記プロパティを入力する際に、前記プロパティの少なくとも一部について典型的な雛形を提供する検証情報雛形提供処理を含むことを特徴とする付記17に記載のプログラム。
(付記20)
実行を後回しにすべき前記所定の遷移として、以前の探索で検出された、依存関係のある遷移のペアのうち先に行われた遷移を、バックトラック後の探索では、後回しにする、ことを特徴とする付記14乃至19のいずれか1に記載のプログラム。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、2014年4月18日に出願された日本出願特願2014−086643を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 分散環境モデル用モデル検査装置
11 分散環境モデル探索部
12 分散環境モデル依存関係解析部
13 遅延遷移情報付与部
21 入力装置
22 出力装置
23 記憶装置
3 分散環境モデル用モデル検査装置
34 探索済み状態管理部
35 探索済み遷移履歴管理部
36 探索済み状態遷移対応情報管理部
4 分散環境モデル用モデル検査装置
47 検証情報雛形提供部

Claims (10)

  1. モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら、前記探索を行う分散環境モデル探索手段と、
    前記分散環境モデル探索手段が探索したパス上の複数の遷移に関して依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成する分散環境モデル依存関係解析手段と、
    少なくとも前記分散環境モデル依存関係解析手段が生成した前記情報に基づき、前記分散環境モデル探索手段が行うバックトラック後の前記探索において、実行を後回しにすべき前記所定の遷移に関する情報を生成する遅延遷移情報付与手段と、
    を備える分散環境モデル用モデル検査装置。
  2. 前記分散環境モデル探索手段は、前記モデル検査の対象として、OpenFlowネットワーク環境を表す分散環境モデルの探索を行う、ことを特徴とする請求項1に記載の分散環境モデル用モデル検査装置。
  3. 前記分散環境モデル探索手段で探索した状態を探索済み状態として記憶管理する探索済み状態管理手段と、
    前記探索したパス上の遷移について前記遷移が行われた順序を、探索済みの遷移の履歴としてパス毎に区別して記憶管理する探索済み遷移履歴管理手段と、
    前記探索済み状態管理手段が記憶保持する前記探索済みの状態と、前記探索済み遷移履歴管理手段が保持する前記遷移との対応情報を管理する探索済み状態遷移対応情報管理手段と、 を備え、
    前記分散環境モデル探索手段は、モデル検査により分散環境モデルを探索する際に、探索した状態と遷移をそれぞれ前記探索済み状態管理手段と前記探索済み遷移履歴管理手段に登録し、前記探索済み状態遷移対応情報管理手段に登録した前記探索した状態と前記遷移の対応付けを行わせる、ことを特徴とする、請求項1又は2に記載の分散環境モデル用モデル検査装置。
  4. 前記分散環境モデル探索手段は、前記モデル検査の探索で到達した状態が、前記探索済み状態管理手段で記憶管理されている探索済みの状態である場合、前記探索済み状態遷移対応情報管理手段及び前記探索済み遷移履歴管理手段を参照し、前記探索済みの状態から行われた探索済みの遷移の履歴情報を取得し、
    前記探索済みの状態以降の遷移は前記履歴情報と同様の遷移を行ったとみなしたパスを生成し、
    前記分散環境モデル依存関係解析手段は、前記履歴情報と同様の遷移を行ったとみなしたパスに基づき、遷移の依存関係とhappens−before関係を解析する、ことを特徴とする、請求項3に記載の分散環境モデル用モデル検査装置。
  5. 前記分散環境モデル探索手段は、前記分散環境モデル用モデル検査装置により検証するプロパティを受け付ける手段を備える、ことを特徴とする請求項1乃至4のいずれか1項に記載の分散環境モデル用モデル検査装置。
  6. 前記プロパティを入力する際に、前記プロパティの少なくとも一部について典型的な雛形を提供する検証情報雛形提供手段を備えていることを特徴とする請求項5に記載の分散環境モデル用モデル検査装置。
  7. モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら前記探索を行い、
    前記探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成し、
    少なくとも前記生成された情報に基づき、前記分散環境モデルのバックトラック後の探索にあたり、実行を後回しにすべき前記所定の遷移に関する情報を生成する、分散環境モデル用モデル検査方法。
  8. 前記分散環境モデルのモデル検査で探索した状態を探索済み状態として第1の記憶手段で記憶管理し、
    前記探索したパス上の遷移について前記遷移が行われた順序を、探索済みの遷移の履歴としてパス毎に区別した形態で、第2の記憶手段で記憶管理し、
    前記探索済みの状態と、探索済みの遷移との対応情報を第3の記憶手段で記憶管理し、
    前記分散環境モデルのモデル検査において、探索で到達した状態が、前記第1の記憶手段で記憶管理されている前記探索済みの状態である場合、前記第2及び第3の記憶手段を参照して、探索済みの状態から行われた探索済みの遷移の履歴情報を取得し、
    前記探索済みの状態以降の遷移は前記履歴情報と同様の遷移を行ったとみなしたパスを生成し、
    前記履歴情報と同様の遷移を行ったとみなしたパスに基づき、遷移の依存関係とhappens−before関係を解析する、ことを特徴とする、請求項7に記載の分散環境モデル用モデル検査方法。
  9. 検証するプロパティを入力するか、又は、
    前記プロパティの少なくとも一部について典型的な雛形を提供する、ことを特徴とする請求項7又は8に記載の分散環境モデル用モデル検査方法。
  10. モデル検査により分散環境モデルを探索する際に、所定の遷移に関して実行を後回しにするか否か判断しながら、前記探索を行う分散環境モデル探索処理と、
    前記分散環境モデル探索処理が探索したパス上の複数の遷移に関して、依存関係とhappens−before関係の解析を行い、前記パスに対するバックトラックに関する情報を生成する分散環境モデル依存関係解析処理と、
    少なくとも前記分散環境モデル依存関係解析処理が生成した情報に基づき、前記分散環境モデル探索処理が行うバックトラック後の前記探索において、実行を後回しにすべき前記所定の遷移に関する情報を生成する遅延遷移情報付与処理と、
    をコンピュータに実行させるプログラム
JP2016513648A 2014-04-18 2015-04-16 モデル検査装置、方法及びプログラムを記憶した記憶媒体 Active JP6428768B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014086643 2014-04-18
JP2014086643 2014-04-18
PCT/JP2015/002098 WO2015159551A1 (ja) 2014-04-18 2015-04-16 モデル検査装置、方法及びプログラムを記憶した記憶媒体

Publications (2)

Publication Number Publication Date
JPWO2015159551A1 JPWO2015159551A1 (ja) 2017-04-13
JP6428768B2 true JP6428768B2 (ja) 2018-11-28

Family

ID=54323771

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016513648A Active JP6428768B2 (ja) 2014-04-18 2015-04-16 モデル検査装置、方法及びプログラムを記憶した記憶媒体

Country Status (3)

Country Link
US (1) US10067816B2 (ja)
JP (1) JP6428768B2 (ja)
WO (1) WO2015159551A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115348193B (zh) * 2022-08-09 2023-08-15 海南大学 一种通信网络信号切换故障下的执行模辨识与滤波方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7650595B2 (en) * 2005-04-29 2010-01-19 Microsoft Corporation Sound transaction-based reduction without cycle detection
US8176496B2 (en) 2007-10-02 2012-05-08 Nec Laboratories America, Inc. Partial order reduction using guarded independence relations

Also Published As

Publication number Publication date
WO2015159551A1 (ja) 2015-10-22
JPWO2015159551A1 (ja) 2017-04-13
US20170147419A1 (en) 2017-05-25
US10067816B2 (en) 2018-09-04

Similar Documents

Publication Publication Date Title
Skowyra et al. Verifiably-safe software-defined networks for CPS
JP6332284B2 (ja) 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム
US10009216B2 (en) Repeat execution of root cause analysis logic through run-time discovered topology pattern maps
Chan et al. Dynamic web service composition: A new approach in building reliable web service
JPWO2015107711A6 (ja) 分散環境モデル用モデル検査装置、分散環境モデル用モデル検査方法及びプログラム
Gan et al. Runtime monitoring of web service conversations
Yao et al. Formal modeling and systematic black-box testing of sdn data plane
JP6428768B2 (ja) モデル検査装置、方法及びプログラムを記憶した記憶媒体
Li et al. A pattern-based approach to development of service mediators for protocol mediation
Ural et al. An EFSM-based passive fault detection approach
Kuroiwa et al. Testing environment for CPS by cooperating model checking with execution testing
JP6904364B2 (ja) システム構築支援装置、方法およびプログラム
Hussein et al. SDN verification plane for consistency establishment
US20160072769A1 (en) Network verification device, network verification method, and program
Zhang et al. Web service reputation evaluation based on QoS measurement
US20120317526A1 (en) Verification method, computer-readable recording medium, and design verification apparatus
BELL et al. Model-based mutation testing using pushdown automata
Daszczuk Critical trees: counterexamples in model checking of CSM systems using CBS algorithm
Hierons et al. Checking sequence construction using adaptive and preset distinguishing sequences
Lu Formal Verification of the Pastry Protocol Using
US10210070B2 (en) Model checking apparatus, model checking method, and storage medium
US12513054B2 (en) System configuration derivation device, system configuration derivation method, and computer-readable medium
Guizouarn Communicating automata and quasi-synchronous communications
CN117251709B (zh) 一种基于语义相似性的微服务系统测试用例动态排序方法
Liu et al. Test purpose oriented I/O conformance test selection with colored petri nets

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180315

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: 20181002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181015

R150 Certificate of patent or registration of utility model

Ref document number: 6428768

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150