【文献】
吉田 信平、他2名,並列シミュレーションの高速化のためのリンク間トラヒック量にもとづくネットワークモデル分割法に関する検討,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2003年 9月12日,Vol.103 No.314,p.75−80,ISSN:0913−5685
【文献】
小山 恭平、他5名,情報制御システムのモデル検査における状態空間分割による探索手法の提案,レクチャーノート/ソフトウェア学38 ソフトウェア工学の基礎XIX,日本,株式会社近代科学社,2012年12月31日,p.39−44
(58)【調査した分野】(Int.Cl.,DB名)
前記1つ又は複数のコンテキスト・データが、前記プロセスのローカル及びグローバルな遷移、前記プロセスの1つ又は複数のフロー、前記プロセスの1つ又は複数のパス、前記プロセスに関連する決定的及び非決定的パラメータ、前記プロセスの反復、前記プロセスの事前条件及び事後条件、前記プロセスに関連する仮定アスペクト、並びに前記プロセスの影響のうち少なくとも1つに基づいて生成される、請求項1に記載の方法。
前記1つ又は複数のパーティション・コンテキストが、前記検証システムによって自動的に生成されること、及び前記システムのユーザの入力に基づいて生成されることのうち少なくとも1つである、請求項1に記載の方法。
前記プロセッサが、前記1つ又は複数のコンテキスト・データを、前記プロセスのローカル及びグローバルな遷移、前記プロセスの1つ又は複数のフロー、前記プロセスの1つ又は複数のパス、前記プロセスに関連する決定的及び非決定的パラメータ、前記プロセスの反復、前記プロセスの事前条件及び事後条件、前記プロセスに関連する仮定アスペクト、並びに前記プロセスの影響のうち少なくとも1つに基づいて生成する、請求項8に記載の検証システム。
前記1つ又は複数のパーティション・コンテキストが、前記検証システムによって自動的に生成されること、及び前記システムのユーザの入力に基づいて生成されることのうち少なくとも1つである、請求項8に記載の検証システム。
前記命令がさらに、前記プロセスのローカル及びグローバルな遷移、前記プロセスの1つ又は複数のフロー、前記プロセスの1つ又は複数のパス、前記プロセスに関連する決定的及び非決定的パラメータ、前記プロセスの反復、前記プロセスの事前条件及び事後条件、前記プロセスに関連する仮定アスペクト、並びに前記プロセスの影響のうち少なくとも1つに基づいて前記1つ又は複数のコンテキスト・データを生成する動作を前記プロセッサに行わせる、請求項15に記載の媒体。
【発明を実施するための形態】
【0013】
本明細書内のブロック図がいずれも本発明の主題の原理を具現化する説明目的のシステムの概念図を表していることを、当業者には理解されたい。同様に、フローチャート、フロー図、状態遷移図、擬似コードなどはいずれも様々なプロセスを表し、それらのプロセスが実質的にコンピュータ可読媒体内に表現され、且つ、コンピュータ又はプロセッサが明示的に示されているか否かに関わらずコンピュータ又はプロセッサによって実行されてもよいことが理解される。
【0014】
本明細書内で使用されるとき、「例示的」という語は「例、事例、又は説明の役割をする」ことを意味する。本明細書に記載される、本発明の主題のいかなる実施例又は実装形態も、必ずしも他の実施例よりも好ましい、又は有利であるとは解釈されないものである。
【0015】
本開示には様々な修正形態及び代替形態の余地があるが、本開示の特定の実施例が実例として図面に示されており、下記に詳細に説明される。ただし、開示される特定の形態に本開示を限定することは意図されておらず、逆に、本開示が本開示の範囲内のすべての修正、等価物及び代替物を対象とすることが理解されるべきである。
【0016】
用語「含む(comprises)」、「含んでいる(comprising)」又はそれらの他の変形はいずれも非排他的な包含を対象とすることを意図し、列挙された構成要素又はステップを含む装備、装置又は方法はそれらの構成要素又はステップを包含するだけでなく、明示的に列挙されていない、又はそのような装備、装置若しくは方法に固有の、他の構成要素又はステップを包含してもよい。換言すれば、「を含む」という句の付けられた、システム又は装置内の1つ又は複数の要素は、さらなる制約なしに、そのシステム又は装置内の他の要素又は追加要素の存在を排除しない。
【0017】
本開示は、検証システムを使用して分散コンピューティング環境でシステムのプロセスを検証するための方法に関する。システムは、ハードウェア、ソフトウェア、又はファームウェアの形で実装されてもよい。システムは1つ又は複数のプロセス(或いは、イベントとも呼ばれる)を含む。システムのモデル検査は、1つ又は複数の属性についてシステムを検証することを伴う。一実施例では、属性はシステムの論理、時間、及び挙動のパスの組み合わせによって表される仕様である。検証システムは、プロセスに関連する属性に基づいてパーティション・コンテキストを生成する。パーティション・コンテキストにはコンテキスト情報が含まれ、この情報に基づいて、分散コンピューティング環境内の1つ又は複数のパーティション・ノードの間にプロセスが分散される。分散コンピューティング環境内の各パーティション・ノードは、プロセスが属性に適合するか否か検証し、結果データを生成する。各パーティション・ノードからの結果データは検証システムに提供される。検証システムは、各パーティション・ノードからの結果データに基づいて、プロセスを属性について検証する。
【0018】
本開示の実施例の下記の詳細な説明では本明細書の一部を成す添付図面が参照され、それらの図面には説明の目的で特定の実施例が示されており、それらの実施例にて本開示が実施されてもよい。これらの実施例は当業者が本開示を実施できるように十分詳細に説明されており、他の実施例が利用されてもよいこと及び、本開示の範囲を逸脱することなく変更が行われてもよいことが理解される。したがって、下記の説明は限定的に解釈されてはならない。
【0019】
図2Aは、本開示のいくつかの実施例による、システムのプロセスを検証するための検証システム200のブロック図である。
【0020】
図2Aに示されるように、検証システム200はI/Oインタフェース201、メモリ203、及びプロセッサ205を備える。検証システム200はモデル検査を行うために構成される。実例として、あるシステムがモデルの観点から表現されている。このシステムは1つ又は複数のプロセス/イベントを含む。1つ又は複数の属性がシステムの要件を満たすか否かを検証するためにモデル検査が行われる。1つ又は複数の属性は、システムの論理、時間、及び挙動のパスの組み合わせによって表される仕様である。例示的な一実施例ではモデルを信号制御ソフトウェア・システムなどの鉄道システムと考え、モデル内のプロセスを「列車に信号を送ること」、検証される属性を「衝突」と考える。すなわち、このモデルは列車間のあらゆる衝突を防ぐために検証される。その他のシステムには、財務などの企業システム、保険システム、年金システム、自動車制御システムなどの組込システム、ビッグ・データ・システム、ツール開発システム及び工学システムなどのインフラストラクチャ・システムなどが含まれてもよいが、これらに限定されない。モデル検査を行うために、プロセス及び属性が分散コンピューティング環境に分散される。検証される属性、すなわち「衝突」が、分散コンピューティング環境内の1つ又は複数のパーティション・ノードの間に分散される。プロセス及び属性が分散されるのは、各パーティション・ノード内の検証属性を確認するため、すなわち、各パーティション・ノードでプロセスに対してそれらの属性を検証するか否か確認するためである。
【0021】
検証システム200のI/Oインタフェース201は、システムからプロセス及び属性を受け取る。受け取られた属性及びプロセスはメモリ203に保管される。メモリ203はプロセッサ205に通信可能に結合されている。プロセッサ205はプロセス及び属性を受け取って、1つ又は複数のパーティション・コンテキストを生成する。1つ又は複数のパーティション・コンテキストは、プロセスに関連するコンテキスト・データに基づく。1つ又は複数のパーティション・コンテキストは、プロセス及び属性を受け取ったときにプロセッサ205によって自動的に生成されるか、又は、システムのユーザの入力に基づいて生成されてもよい。コンテキスト・データは、プロセス及び属性に基づくシステムの挙動(behavior)を指す。一実施例では、コンテキスト・データはシステムのユーザによって提供されてもよい。プロセッサ205は属性及びプロセスを、1つ又は複数のパーティション・コンテキストに基づいて各パーティション・ノードに分散させる。プロセッサ205はまた、1つ又は複数のパーティション・ノードのそれぞれにメタデータ情報を埋め込む。メタデータは、パーティション・ノード及びパーティション・ノード間の依存関係に関する情報を含む。各パーティション・ノードは、そのパーティション・ノード内にアクセプタンス・サイクルが存在するか否かの検証、すなわち、属性がプロセスに適合するか否かの確認を行う。検証に基づいて、各パーティション・ノードは結果データを提供する。各パーティション・ノードの結果データは検証システム200に提供される。検証システム200のプロセッサ205は各パーティション・ノードの結果データを集計して、分散コンピューティング環境内のシステムのプロセスを検証する。
【0022】
図2Bは、本開示のいくつかの実施例による、分散コンピューティング環境でのモデル検査方法を示す状態遷移図である。
【0023】
図2Bに示されるように、2つのパーティション、すなわちP1及びP2がある。検証される属性は、プロセス「列車に信号を送る」の「衝突」である。
図2Bに示されるように、パーティションP1はパーティション状態0、1、2、5、6、7、8、9の間に分散し、パーティションP2はパーティション状態10、11、12、15、16、17、18、19の間に分散している。属性「衝突」は、第1のパーティションP1と第2のパーティションP2で並行して検証される。このシナリオでは、属性サイクルはパーティションP1内で満たされる。このシナリオでは属性サイクルの計算は簡単で、
図1に示される従来技術と比較して費やされる時間が少なくなる。その理由は、パーティションがコンテキスト・データ、すなわちプロセスの挙動データに基づいて分散されているからである。
【0024】
図2Cは、本開示のいくつかの実施例による検証システム200の詳細なブロック図である。
【0025】
一実装形態では、検証システム200はシステムから入力データを受け取る。実例として、受け取られた入力データはメモリ203に保管される。一実施例では、入力データはシステムのプロセス及び属性に関連するデータを含む。検証システム200はメタデータ及びその他のデータもまた含んでもよい。メタデータはパーティション・ノード及びパーティション・ノード間の依存関係に関する情報を含む。
図2Cに示される1つ又は複数のモジュールについて、本明細書で詳細に説明する。
【0026】
一実施例では、データは様々なデータ構造の形でメモリ203に保管されてもよい。加えて、前述のデータは、関係型又は階層型のデータ・モデルなどのデータ・モデルを使用して組織化することができる。検証システム200の様々な機能を行うためのモジュールによって生成された一時データ及び一時ファイルを含む、他のデータが保管されてもよい。
【0027】
一実施例では、メモリ203に保管されたデータは検証システム200のモジュールによって処理される。
【0028】
一実装形態では、モジュールは、例えば、受信モジュール207、パーティション・コンテキスト生成モジュール209、コンテキストベース分散モジュール211、メタデータ共有モジュール213、集計モジュール215、及び他のモジュール217を含んでもよい。他のモジュール217は、検証システム200の各種の様々な機能を行うために使用されてもよい。前述のそのようなモジュールは単一のモジュールとして、又は異なるモジュールの組み合わせとして表されてもよいことが理解される。
【0029】
一実施例では、受信モジュール207はシステムからプロセス及び属性を受け取るように構成される。一実施例では、受信モジュール207はまた、システムに関連する1つ又は複数のプロセス及び1つ又は複数の属性を受け取ってもよい。実例として、検証される属性は、安全性の検出、アサーション検査(ローカル及びグローバルなアサーション)、アクセプタンス状態、非進行サイクル、不変量、及びデッドロック検出などを含んでもよいが、これらに限定されない。分割(パーティションする)時に、依存関係に基づいて、元のパーティションの事後条件に基づく従属パーティションの事前条件を導出することができる。また、分割時に、必要な仮定も導出することができる。一実施例では、アクセプタンス状態を使用して状態空間内のアクセプタンス・サイクルが探索される。アクセプタンス・サイクルは安全性の属性の検査に有用で、無限実行に対処する。
【0030】
一実施例では、デッドロックは、終端状態すなわち外向き遷移のない状態を有する、収束しない逐次プログラム(すなわち無限ループ)を指す。ある状態が外向き遷移を有さず、且つ終了状態とマークされていない場合、又は、ある状態からの遷移が同じ状態に戻る場合に、システムはデッドロックしていると言われる。
【0031】
一実施例では、パーティション・コンテキスト生成モジュール209は1つ又は複数のパーティション・コンテキストを生成するように構成される。1つ又は複数のパーティション・コンテキストは、受け取られた属性及びプロセスのコンテキスト・データに基づいて生成される。実例として、コンテキスト・データは、プロセスのローカル及びグローバルな遷移、プロセスの1つ又は複数のフロー、プロセスの1つ又は複数のパス、プロセスに関連する決定的及び非決定的なパラメータ、プロセスの反復、プロセスの事前条件及び事後条件、プロセスに関連する仮定アスペクト、並びにプロセスの影響を含んでもよいが、これらに限定されない。コンテキスト・データは検証システム200によって自動的に生成されてもよいし、又はユーザからの入力に基づいて生成されてもよい。
【0032】
一実施例では、コンテキストベース(context based)分散モジュール211は、パーティション・コンテキストに基づいてプロセス及び属性を分散ネットワーク環境に分散させるように構成される。コンテキストベース分散モジュール211は、パーティション・コンテキストに基づいてプロセス及び属性を各パーティション・ノードに分散させる。実例として、デッドロックに関する属性が1つのパーティションに与えられてもよく、アクセプタンス・サイクルに関する属性が別のパーティションに与えられてもよい。
【0033】
一実施例では、メタデータ共有モジュール213は、分散コンピューティング・ネットワーク内の各パーティション・ノードにメタデータ情報を埋め込むように構成される。メタデータ情報はパーティション・ノード及びパーティション・ノード間の依存関係についての情報を含む。実例として、3つのパーティション・ノード、すなわち第1のパーティション・ノード、第2のパーティション・ノード及び第3のパーティション・ノードがある。メタデータ情報は、分散コンピューティング環境でアクセプタンス・サイクルをさらに計算するために、どのパーティション・ノードを参照すべきかの指示を提供する。例えば、第1のパーティション・ノード内のメタデータ情報が、さらなる計算のために第3のパーティション・ノードを指示する。したがって、モデル検査を行うために、検証システム200は第3のパーティション・ノードを直接参照してもよい。一実施例では、依存関係はコンテキストを認識しているので、非近隣のパーティション・ノードをリンクすることができる。コンテキストを認識する依存関係は、不変量、仮定、及びその他の環境的制約であることができる。一実施例では、不変量はシステムの一定の状態を表す変数の述語であり、その不変量の範囲に従って一貫して変化せずに維持される。
【0034】
一実施例では、集計モジュール215は各パーティション・ノードからの結果データを集計するように構成される。各パーティション・ノードはアクセプタンス・サイクルの確認、すなわち、属性が所与のプロセスに適合するか否かの検証を行い、結果データを提供する。各パーティション・ノードの結果データは検証システム200の集計モジュール215に提供される。集計モジュール215は各パーティションの結果データを集計して、システムのプロセスを検証する。
【0035】
図3Aは、本開示のいくつかの実施例による検証システム200を使用してシステムのプロセスを検証するための例示的環境300を示す図である。
【0036】
図3Aに示されるように、環境300はシステム301、検証システム200及び分散コンピューティング環境304を含む。システム301は、1つ又は複数のプロセス、すなわちプロセス1 305
1〜プロセスn 305
n(集合的にプロセス305と称される)を含む。環境300は、システムのプロセスについて検証される必要のある1つ又は複数の属性、すなわち307
1〜307
n(集合的に属性307と称される)もまた含む。分散コンピューティング環境304は1つ又は複数のパーティション・ノード、すなわちパーティション・ノード1 309
1、パーティション・ノード2 309
2〜パーティション・ノードn 309
nを含む。各パーティション・ノードはプロセッサ、メモリ、及びプロセス検証ユニットを備える。実例として、属性1がアクセプタンス・サイクル、属性2が非進行サイクル、属性3がデッドロックの検出などであってもよい。一実施例では、非進行サイクルは、明示的に進行プロセスとマークされていないすべてのグローバルなシステム状態で「真」であり、その他のすべての状態で「偽」であると定義される。少なくとも1つのアクティブなプロセスがユーザ定義の進行ラベルでマークされたローカル制御状態にある場合、又は現在のグローバルなシステム状態がプロセス・トレース定義内に進行ラベルでマークされている場合、システムは進行状態にある。検証システム200は、分散コンピューティング環境304内でシステムのプロセスを検証するように構成される。検証システム200の受信モジュール207は、プロセス及び、プロセスについて検証される属性を受け取る。例えば、鉄道システムで検証される属性は衝突である。すなわち、列車間で衝突があってはならない。パーティション・コンテキスト生成モジュール209はプロセス及び属性を受け取って、プロセスのコンテキスト・データ(contextual data)に基づいて1つ又は複数のパーティション・コンテキストを生成する。コンテキスト・データは、プロセスの1つ又は複数のフロー、プロセスの1つ又は複数のパス、プロセスに関連する決定的又は非決定的パラメータ、プロセスの反復、プロセスの事前条件及び事後条件、プロセスに関連する仮定アスペクト、及びプロセスの影響を含んでもよいが、これらに限定されない。コンテキストベース分散モジュール211は属性及びプロセスを、パーティション・コンテキストに基づいて各パーティション・ノードに分散させる。実例として、コンテキスト・データがプロセスの1つ又は複数のフローである場合には、そのフローに適する1つ又は複数の属性がパーティション・ノード1に提供される。同様に、コンテキスト・データが決定的及び非決定的なパラメータである場合には、分散コンピューティング環境のパーティション・ノード2に決定的な属性が提供され、パーティション・ノード3に非決定的な属性が提供される。
【0037】
一実施例では、コンテキストベース分散モジュール211はまた、各パーティション・ノードにメタデータ情報を提供する。
図3Bはメタデータの表現を示す。メタデータはパーティション・ノード並びに、検証されるプロセス及び属性についての依存関係の情報を含む。メタデータはまた、境界及び内部パーティション・ノードIDの情報も含み、これはパーティション境界の境界又は内部の状態を指す。
図3Bに示されるように、属性「アクセプタンス・サイクル」及びコンテキスト・データ「影響」についての目標パーティションIDは2、すなわちパーティション・ノード2である。パーティション・ノード2の近隣パーティション・ノードのパーティション・ノードIDも示されている。同様に、属性が「非進行」でコンテキスト・データが「仮定」である場合は、目標パーティションIDは3及び5、すなわちパーティション・ノード3及びパーティション・ノード5である。属性「非進行」がパーティション・ノード3及びパーティション・ノード5で検証される。一実施例では、各パーティション・ノードはプロセス検証ユニットを含む。パーティション・ノード2のプロセス検証ユニットは、属性「アクセプタンス・サイクル」がプロセスによって満たされるか否かを検証する。同様に、パーティション・ノード3及びパーティション・ノード5は、属性「非進行」がプロセスによって満たされるか否かを検証する。各パーティション・ノードのプロセス検証ユニットは、検証プロセスの結果データを提供する。集計モジュール215が結果データを集計して、プロセスの属性が満たされているか否かを検証する。
【0038】
一実施例では、パーティション・ノードがプロセスの仕様を満たさない場合には、反例トレースが生成される。これらの反例トレースは属性についてのプロセスの不正な挙動の是正に役立つ。集計モジュールが各パーティション・ノードからの反例トレースを集約して、属性についてシステムのプロセスを検証する。
【0039】
1つの例示的実施例では、本開示は、パーティション・ノード間の依存関係についてプロセスを分割する方法を開示する。検証システム200がプロセスを受け取り、依存関係主導のコンテキストを生成して、モデル検査/システム検証を行うために最適な複数のパーティションにプロセスを分割する。実例として、プロセスは、1つ又は複数の条件を有するプログラムである。分割の基準は、パーティション・ノード間の依存関係及び属性関係に基づいて生成された異なるパーティション・コンテキスト間の関係である。これは、プログラム内のIF、LOOP及びGUARDの様々な条件を分類することによって行われ、それにより、様々な影響関係及び帰結関係が導出され、よって、様々な証明責務が導出される。
【0041】
上記はプログラム内で確認される条件である。上記の各カテゴリについて、それぞれ異なる依存関係主導のコンテキストが生成される。これらのコンテキストに基づいて、モデル状態空間/プロセスが別々のパーティションに最適に分散される。上記のコンテキストにいくつかの事前条件及び事後条件を結びつけることができる。
【0043】
表1に示されるように、グローバルな不変量INV
Gを、INV
L1、INV
L2、及びINV
L3のような、いくつかのローカルな不変量に分割することができ、それらはモデルの一定のブロック、モデルの一定のイベント、モデルのイベントの一定のグループなどに対して特定である。不変量は、システムの一定の状態を表す変数の述語であり、その不変量の範囲に従って一貫して変化せずに維持される。
【0045】
表2に示されるように、異なる基準に基づいた分割にEVENT GRD条件を使用することができる。例えば、順序付けのケースに対してはGRD
1及びGRD
2が1つのパーティションP1にまとめられ、分離性の(disjunctive)ケースに対してはGRD
0が2つのパーティションP01及びP02に分けられる。
【0047】
GRDと同様に、EVENT/ACTアクションもまた、異なる基準に基づいて分割することができる。表3に示されるように、特定のEVENTのアクションがコンテキストに基づいて非原子的なパーティションP01及びP02に分割される。アクションは、パーティションP1について示されるように、共有の可変依存関係に基づいてグループ化することができる。順序付けられたアクションのセットはパーティションP2に割り当てられる。
【0049】
表4に示されるように、異なるループ条件の制約に基づいて、異なるパーティションが存在し得る。ループ条件の制約LC1内ではまた、反復回数の範囲に基づいてパーティションがP11及びP12に分けられる。同様に、分岐条件BC21、BC22に基づいて、さらにP21及びP22への分割が行われる。
【0051】
表5に示されるように、分岐条件自体を、分離性(disjunctive)ケースに基づいて異なるパーティションに割り当てることができる。各パーティションをさらに、EVENT/GRD(EG21及びEG22)及びEVENT/ACTに基づいて分割することができる。
【0052】
一実施例では、前述した様々な制約を、モデルの構造及び挙動のフローに基づいてさらに階層的に分割することができる。また、様々な制約に基づき、再グループ化、順序付け、分離(disjunction)によって分割の再調節が可能である。表6は様々な可能性の全体図を示し、分散の結果がパーティションになる。
【0054】
一実施例では、コンテキスト情報に基づく分割では良い結果が得られないことがある。よって、最初の高位の分割プロセスの後、低位のグラフ・カット・アルゴリズムを行うことが必要になる場合もある。最適化エッジに基づいて、厳密な依存関係の影響を特定してパーティション間の関連を定めなければならない。実例として、より高位の抽象レベルで最適なパーティションを特定するために、INV、LC、BCなどの「様々なコンテキスト制約の交差(intersection)」を特定する様々な組み合わせを考慮することができる。これは、交差の状態空間が定量化可能で、後に並べ替え/順序付けして最適な組み合わせを見つけることができる場合に可能である。
【0055】
一実施例では、他のパーティションとの重複があるパーティションでは、依存関係は「Before−After述語」で影響関係を記号的に使用して取得される。主パーティションについて交差・に基づく状態空間領域の重複が考慮され、状態遷移の方向に基づいて従属パーティションに向かう依存関係の影響が特定される。よって、計算及び保管は主パーティションで一度だけ行われ、仮定及び事前条件の形での依存関係の影響によって従属パーティションの計算が可能になることになる。しかし、各パーティションでの計算は完全に独立するわけではなく、複数の異なるパーティションを使用して計算の有効性及び正確さが達成される。表7は、複数の異なる影響IMP
1、IMP
2〜IMP
nを有する依存(DEP)関係を示す。これらの影響は、分散を行うとき、及び後に計算を行うときに集計のために、異なるパーティション間の関連を確立する。
【0057】
図4は、本開示のいくつかの実施例による検証システム200を使用してシステムのプロセスを検証するための方法を示すフローチャートである。
【0058】
図4に示されるように、方法400は検証システム200を使用して分散コンピューティング環境内でシステムのプロセスを検証するための1つ又は複数のブロックを含む。方法400は、コンピュータ実行可能な命令の一般的な文脈で記載されてもよい。一般に、コンピュータ実行可能な命令は、ルーティン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール及び関数を含むことができ、これらは特定の機能を実行するか、又は特定の抽象データ型を実装する。
【0059】
方法400が記載された順序は制限と見なされることを意図しておらず、記載された方法ブロックのうち任意の数を任意の順序で組み合わせて方法を実装することができる。加えて、本明細書に記載された主題の趣旨及び範囲を逸脱することなく、個々のブロックを方法から削除してもよい。さらに、この方法は任意の適切なハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせに実装することができる。
【0060】
ブロック401で、システムのプロセス及び属性が受け取られる。一実施例では、検証システム200の受信モジュール207が、1つ又は複数の属性についてプロセスを検証するために、プロセス及び属性を受け取る。
【0061】
ブロック403で、1つ又は複数のパーティション・コンテキストが生成される。一実施例では、パーティション・コンテキスト生成モジュール209が、受け取られた属性及びプロセスに基づいて1つ又は複数のパーティション・コンテキストを生成する。
【0062】
ブロック405で、プロセス及び属性が分散コンピューティング環境内のパーティション・ノードの間に分散される。一実施例では、コンテキストベース分散モジュール211によって、パーティション・コンテキストに基づき、プロセス及び属性がパーティション・ノード間に分散される。どのパーティション・ノードにどのプロセス及び属性の情報を検証のために提供すべきかを示すために、コンテキスト情報が提供される。
【0063】
ブロック407で、各パーティション・ノードにメタデータ情報が埋め込まれる。一実施例では、メタデータ共有モジュール213が各パーティション・ノードにメタデータ情報を提供する。メタデータ情報はパーティション・ノード間の依存関係の情報を含む。メタデータ情報はまた、プロセスについて検証する必要のある属性の情報を含んでもよい。
【0064】
ブロック409で、プロセスについて属性が検証される。各パーティション・ノードがプロセスについて属性を検証する。パーティション・ノードは所与のプロパティについてプロセスを確認する。検証に基づいて、各パーティション・ノードが結果データを提供する。
【0065】
ブロック411で、各パーティション・ノードの結果データが集計される。一実施例では、検証システム200の集計モジュール215が各パーティション・ノードの結果データを集計して、システムのプロセスを検証する。
【0066】
図5は、本開示に従う実施例を実装するための例示的コンピュータ・システム500のブロック図である。一実施例では、コンピュータ・システム500は、検証システム200を使用してシステムのプロセスを検証するために使用される。コンピュータ・システム500は、中央処理ユニット(「CPU」又は「プロセッサ」)502を含んでもよい。プロセッサ502は、ユーザ又はシステムによって生成された業務プロセスを実行するためのプログラム構成要素を実行するために少なくとも1つのデータ・プロセッサを含んでもよい。ユーザは、人物、本発明に含まれる装置などの装置を使用する人物、又はそのような装置自体を含んでもよい。プロセッサ502は、統合システム(バス)コントローラ、メモリ管理制御ユニット、浮動小数点ユニット、グラフィック処理ユニット、デジタル信号処理ユニットなどの専用処理ユニットを含んでもよい。
【0067】
プロセッサ502は、入出力(I/O:input/output)インタフェース501を介して1つ又は複数のI/O装置(511及び512)と通信状態に置かれてもよい。I/Oインタフェース501は、音声、アナログ、デジタル、ステレオ、IEEE−1394、シリアル・バス、ユニバーサル・シリアル・バス(USB:Universal Serial Bus)、赤外線、PS/2、BNC、同軸、コンポーネント、コンポジット、デジタル・ビジュアル・インタフェース(DVI:Digital Visual Interface)、高精細度マルチメディア・インタフェース(HDMI(登録商標):high−definition multimedia interface)、無線周波(RF:Radio Frequency)アンテナ、S−Video、ビデオ・グラフィックス・アレイ(VGA:Video Graphics Array)、IEEE802.n /b/g/n/x、Bluetooth(登録商標)、セルラー(例えば、符号分割多元接続(CDMA:Code−Division Multiple Access)、高速パケットアクセス(HSPA+:High−Speed Packet Access)、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標):Global System For Mobile Communications)、ロングターム・エボリューション(LTE:Long−Term Evolution)、WiMaxなど)などの通信プロコトル/方法を使用してもよいが、これらに制限されない。
【0068】
I/Oインタフェース501を使用して、コンピュータ・システム500は1つ又は複数のI/O装置(511及び512)と通信してもよい。
【0069】
いくつかの実施例では、プロセッサ502がネットワーク・インタフェース503を介して通信ネットワーク509と通信状態に置かれてもよい。ネットワーク・インタフェース503は通信ネットワーク509と通信してもよい。ネットワーク・インタフェース503は、直接接続、Ethernet(登録商標)(例えばツイスト・ペア10/100/1000BASE−T)、TCP/IP(Transmission Control Protocol/Internet Protocol)、トークン・リング、IEEE802.11a/b/g/n/xなどの接続プロトコルを使用してもよいが、これらに限定されない。ネットワーク・インタフェース503及び通信ネットワーク509を使用して、コンピュータ・システム500は1つ又は複数のユーザ装置510(a〜n)と通信してもよい。通信ネットワーク509は、イントラネット又はローカル・エリア・ネットワーク(LAN:Local Area Network)及び組織内ネットワークなどの様々なタイプのネットワークの1つとして、実装することができる。通信ネットワーク509は、専用ネットワーク又は共有ネットワークのいずれであってもよく、例えば、HTTP(Hypertext Transfer Protocol)、TCP/IP(Transmission Control Protocol/Internet Protocol)、WAP(Wireless Application Protocol)などの各種プロトコルを使用して相互に通信する様々なタイプのネットワークの連合を表す。さらに、通信ネットワーク509は、ルータ、ブリッジ、サーバ、コンピューティング装置、ストレージ装置などを含む各種ネットワーク装置を含んでもよい。1つ又は複数のユーザ装置510(a〜n)は、パーソナル・コンピュータ、携帯電話などのモバイル装置、スマートフォン、タブレット・コンピュータ、電子書籍リーダ、ラップトップ・コンピュータ、ノートブック、ゲーム・コンソールなどを含んでもよいが、これらに限定されない。
【0070】
いくつかの実施例では、プロセッサ502はストレージ・インタフェース504を介してメモリ505(例えば、
図5に示されていないRAM、ROMなど)と通信状態に置かれてもよい。ストレージ・インタフェース504は、メモリ・ドライブ、取り外し可能ディスク・ドライブなどを含むがこれらに限定されないメモリ505に、シリアルATA(SATA:Serial Advanced Technology Attachment)、IDE(Integrated Drive Electronics)、IEEE−1394、ユニバーサル・シリアル・バス(USB)、光ファイバー・チャネル、SCSI(Small Computer Systems Interface)などの接続プロトコルを使用して接続してもよい。メモリ・ドライブはさらに、ドラム、磁気ディスク・ドライブ、光磁気ドライブ、光ドライブ、RAID(Redundant Array of Independent Disc)、ソリッドステート・メモリ・デバイス、ソリッドステート・ドライブなどを含んでもよい。
【0071】
メモリ505は、ユーザ・インタフェース・アプリケーション506、オペレーティング・システム507、ウェブ・サーバ508などを含むがこれらに限定されないプログラム又はデータベース構成要素の集合を保管してもよい。いくつかの実施例では、コンピュータ・システム500は、本発明に記載されるようにデータ、変数、レコードなどのユーザ・データ/アプリケーション・データ506を保管してもよい。そのようなデータベースは、Oracle又はSybaseなどの耐故障性、リレーショナル、スケーラブル、セキュアなデータベースとして実装されてもよい。
【0072】
オペレーティング・システム507がコンピュータ・システム500の資源管理及び運用を促進してもよい。オペレーティング・システムの実例は、Apple Macintosh OS X、UNIX(登録商標)、Unixライクなシステム・ディストリビューション(例えば、BSD(Berkeley Software Distribution)、FreeBSD、NetBSD、OpenBSDなど)、Linux(登録商標)ディストリビューション(例えば、Red Hat、Ubuntu、Kubuntuなど)、IBM(International Business Machines) OS/2、Microsoft Windows(登録商標)(XP、Vista/7/8など)、Apple iOS、Google Android、Blackberryオペレーティング・システム(OS)などを含むが、これらに限定されない。ユーザ・インタフェース506は、テキスト又はグラフィック機能を通してプログラム構成要素の表示、実行、対話、操作、又は動作を促進してもよい。例えば、ユーザ・インタフェースはコンピュータ・システム500に動作可能に接続されたディスプレイ・システム上に、カーソル、アイコン、チェック・ボックス、メニュー、スクローラ、ウィンドウ、ウィジェットなどのコンピュータ対話インタフェース要素を提供してもよい。Apple Macintoshオペレーティング・システムのAqua、IBM OS/2、Microsoft Windows(登録商標)(例えば、Aero、Metroなど)、Unix(登録商標) X−Windows(登録商標)、ウェブ・インタフェース・ライブラリ(例えば、ActiveX、Java(登録商標)、JavaScript(登録商標)、AJAX、HTML、Adobe Flashなど)などを含むがこれらに限定されないグラフィカル・ユーザ・インタフェース(GUI)が使用されてもよい。
【0073】
いくつかの実施例では、コンピュータ・システム500はウェブ・ブラウザ508ストアド・プログラム・コンポーネントを実装してもよい。ウェブ・ブラウザは、Microsoft Internet Explorer、Google Chrome、Mozilla Firefox、Apple Safariなどのハイパーテキスト閲覧アプリケーションでもよい。HTTPS(Secure Hypertext Transport Protocol) SSL(Secure Sockets Layer)、TSL(Transport Layer Security)などを使用して安全なウェブ閲覧が提供されてもよい。ウェブ・ブラウザは、AJAX、DHTML、Adobe Flash、JavaScript(登録商標)、Java(登録商標)、アプリケーション・プログラミング・インタフェース(API)などの機能を利用してもよい。いくつかの実施例では、コンピュータ・システム500はメール・サーバ・ストアド・プログラム・コンポーネントを実装してもよい。メール・サーバは、Microsoft Exchangeなどのインターネット・メール・サーバでもよい。メール・サーバは、Active Server Pages(ASP)、ActiveX、米国国家規格協会(ANSI) C++/C#、Microsoft .NET、CGIスクリプト、Java(登録商標)、JavaScript(登録商標)、Perl、PHP、Python、WebObjectsなどの機能を利用してもよい。メール・サーバは、IMAP(Internet Message Access Protocol)、MAPI(Messaging Application Programming Interface)、Microsoft Exchange、POP(Post Office Protocol)、SMTP(Simple Mail Transfer Protocol)などの通信プロトコルを使用してもよい。いくつかの実施例では、コンピュータ・システム500はメール・クライアント・ストアド・プログラム・コンポーネントを実装してもよい。メール・クライアントは、Apple Mail、Microsoft Entourage、Microsoft Outlook、Mozilla Thunderbirdなどのメール閲覧アプリケーションであってもよい。
【0074】
さらに、本発明に従う実施例の実装に1つ又は複数のコンピュータ可読ストレージ媒体が使用されてもよい。コンピュータ可読ストレージ媒体とは、プロセッサによる読み取りが可能な情報又はデータが保管されてもよい任意のタイプの物理メモリを指す。よって、コンピュータ可読ストレージ媒体は、本明細書に記載される実施例に従うステップ又は段階をプロセッサに遂行させるための命令を含む、1つ又は複数のプロセッサによって実行されるための命令を含んでもよい。用語「コンピュータ可読媒体」は、有形物を含み、搬送波及び過渡信号を除外する、すなわち非一時的であると理解されるべきである。その実例には、ランダム・アクセス・メモリ(RAM:Random Access Memory)、読出し専用メモリ(ROM:Read−Only Memory)、揮発性メモリ、不揮発性メモリ、ハード・ドライブ、コンパクト・ディスク(CD:Compact Disc)ROM、デジタル・ビデオ・ディスク(DVD:Digital Video Disc)、フラッシュ・ドライブ、ディスク、及びその他任意の知られている物理ストレージ媒体が含まれる。
【0075】
本開示の実施例の利点を以下に説明する。
【0076】
一実施例では、本開示は、プロセスの依存関係を影響として、属性コンテキストと共に維持することができる方法を提供する。
【0077】
一実施例では、本開示は、分散コンピューティング環境での属性サイクルの検索中/検出中に、複数のパーティション・ノードにわたってエラー状態が最小化される方法を提供する。
【0078】
本開示はいずれのモデル検査手法にも適用可能であり、有界モデル検査に限定されない。
【0079】
一実施例では、本開示は、検索がコンテキスト・ベースであるためにパーティション・ノードによる検索実施中の冗長性が減少する方法を提供する。
【0080】
一実施例では、本開示は、分散コンピューティング環境で、より高速なモデル検査の検索計算を提供する。
【0081】
本開示は、遠隔のパーティション・ノードにわたる非近隣の状態に関する依存関係管理のためにコンテキストを認識する影響を提供する。
【0082】
本開示は、クラウド上に検証プラットフォームを提供する。
【0083】
本開示は、ラベル伝播アルゴリズム及びコンテキスト関係の使用に起因する通信オーバヘッドを減少させる。
【0084】
図示されたステップは示された例示的実施例を説明するために提示されており、特定の機能が遂行される様式が現在進行中の技術開発によって変更されることが予想されるべきである。これらの実例は本明細書内で、制限ではなく説明の目的で提示されている。さらに、本明細書内で機能構築ブロックの境界は説明の便宜のために任意に定められている。指定された機能及びそれらの関係が適切に遂行される限り、代替の境界を定めることができる。代替形態(本明細書に記載された形態の等価、拡張、変形、逸脱の形態などを含む)が、本明細書に含まれる教示に基づき当業者には明らかになる。そのような代替形態は本開示の実施例の範囲及び趣旨の中に収まる。また、「備える(comprising)」、「有する(having)」、「包含する(containing)」、「含む(including)」及びその他の類似した語は意味において等価であり、且つオープン・エンドであると意図されており、したがって、それらの語のいずれかが付けられた項目又は複数の項目は、そのような項目又は複数の項目の網羅的なリストを意味することはなく、また、列挙された項目又は複数の項目のみに限定されることを意味することもない。また、本明細書及び添付の特許請求の範囲の中で使用されるとき、明確に断りのない限り、単数形「a」、「an」、及び「the」は複数参照を含むことに留意されたい。
【0085】
さらに、本開示に従う実施例の実装に1つ又は複数のコンピュータ可読ストレージ媒体が使用されてもよい。コンピュータ可読ストレージ媒体とは、プロセッサによる読み取りが可能な情報又はデータを保管してもよい任意のタイプの物理メモリを指す。よって、コンピュータ可読ストレージ媒体は、本明細書に記載される実施例に従うステップ又は段階をプロセッサに遂行させるための命令を含む、1つ又は複数のプロセッサによって実行されるための命令を保管してもよい。用語「コンピュータ可読媒体」は、有形物を含み、搬送波及び過渡信号を除外する、すなわち非一時的であると解釈されるべきである。その実例には、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、揮発性メモリ、不揮発性メモリ、ハード・ドライブ、CD ROM、DVD、フラッシュ・ドライブ、ディスク、及びその他任意の知られている物理ストレージ媒体が含まれる。
【0086】
本開示及び実例は、単に例示的であると見なされ、本開示の実施例の真の範囲及び趣旨は添付の特許請求の範囲によって示されることが意図されている。