(57)【要約】【課題】検証システムを使用して、分散コンピューティング環境でシステムのプロセスの検証を行うための方法を提供すること。【解決手段】検証システムは、プロセス及びシステムに関連する属性を受け取り、その属性及び、そのプロセスに関連するコンテキスト・データに基づいてパーティション・コンテキストを生成する。検証システムはパーティション・コンテキストに基づいて、プロセス及び属性を分散コンピューティング環境内のパーティション・ノードに分散させ、各パーティション・ノードにメタデータを埋め込む。メタデータは、プロセス及び属性に基づく、パーティション・ノード及びパーティション・ノード間の依存関係に関する情報を含む。検証システムは、各ノードでプロセスに対する属性の検証を行い、結果データを得る。各ノードの結果データは集計されて、属性についてシステムのプロセスが検証される。【選択図】図４
2017010541.tif 000002
【特許請求の範囲】
【請求項１】
分散コンピューティング環境でシステムのプロセスの検証を行うための方法であって、
検証システムによって、前記プロセス及び前記プロセスに関連する１つ又は複数の属性を受け取るステップと、
前記検証システムによって、前記１つ又は複数の属性及び、前記プロセスに関連する１つ又は複数のコンテキスト・データに基づいて、１つ又は複数のパーティション・コンテキストを生成するステップと、
前記検証システムによって、前記１つ又は複数のパーティション・コンテキストに基づいて、前記プロセス及び前記１つ又は複数の属性を前記分散コンピューティング環境内の複数のパーティション・ノードに分散させるステップと、
前記検証システムによって、前記複数のパーティション・ノードのそれぞれにメタデータを埋め込むステップと、
前記複数のパーティション・ノードのそれぞれによって、前記１つ又は複数の属性について前記プロセスを検証するステップと、
前記検証システムによって、前記システムの前記プロセスを検証するために、前記複数のパーティション・ノードのそれぞれから受け取った結果データを集計するステップとを含み、前記１つ又は複数の属性についての前記プロセスの前記検証に前記結果データが関連付けられる、方法。
【請求項２】
前記１つ又は複数の属性が、前記システムの時間、論理、及び挙動のパスによって表される、請求項１に記載の方法。
【請求項３】
前記１つ又は複数のコンテキスト・データが、前記プロセスのローカル及びグローバルな遷移、前記プロセスの１つ又は複数のフロー、前記プロセスの１つ又は複数のパス、前記プロセスに関連する決定的及び非決定的パラメータ、前記プロセスの反復、前記プロセスの事前条件及び事後条件、前記プロセスに関連する仮定アスペクト、並びに前記プロセスの影響のうち少なくとも１つに基づいて生成される、請求項１に記載の方法。
【請求項４】
前記メタデータが前記パーティション・ノード及び前記パーティション・ノード間の依存関係に関する情報を含む、請求項１に記載の方法。
【請求項５】
前記依存関係が、演繹的推論と前記１つ又は複数の属性のコンテキスト情報とのうち少なくとも１つに基づいて特定される、請求項４に記載の方法。
【請求項６】
前記１つ又は複数のパーティション・コンテキストが、前記検証システムによって自動的に生成されること、及び前記システムのユーザの入力に基づいて生成されることのうち少なくとも１つである、請求項１に記載の方法。
【請求項７】
前記１つ又は複数のパーティション・ノードのそれぞれがプロセッサ、メモリ、及びプロセス検証ユニットを含む、請求項１に記載の方法。
【請求項８】
前記プロセス検証ユニットが前記１つ又は複数の属性を前記プロセスについて検証し、前記結果データを生成する、請求項７に記載の方法。
【請求項９】
分散コンピューティング環境でシステムのプロセスの検証を行うための検証システムであって、
プロセッサと、
前記プロセッサに通信可能に結合されたメモリとを備え、前記メモリがプロセッサ実行可能な命令を保存しており、前記命令が実行されると前記プロセッサに、
前記プロセス及び前記プロセスに関連する１つ又は複数の属性を受け取る動作と、
前記１つ又は複数の属性、及び前記プロセスに関連する１つ又は複数のコンテキスト・データに基づいて１つ又は複数のパーティション・コンテキストを生成する動作と、
前記プロセス及び前記１つ又は複数の属性を、前記１つ又は複数のパーティション・コンテキストに基づいて、前記分散コンピューティング環境内の複数のパーティション・ノードに分散させる動作と、
前記複数のパーティション・ノードのそれぞれにメタデータを埋め込む動作と、
前記複数のパーティション・ノードのそれぞれによって、前記１つ又は複数の属性について前記プロセスを検証する動作と、
前記システムの前記プロセスを検証するために、前記複数のパーティション・ノードのそれぞれから受け取った結果データを集計する動作とを行わせ、前記１つ又は複数の属性についての前記プロセスの前記検証に前記結果データが関連付けられる、検証システム。
【請求項１０】
前記プロセッサが、前記システムの時間、論理、及び挙動のパスによって前記１つ又は複数の属性を表す、請求項９に記載の検証システム。
【請求項１１】
前記プロセッサが、前記１つ又は複数のコンテキスト・データを、前記プロセスのローカル及びグローバルな遷移、前記プロセスの１つ又は複数のフロー、前記プロセスの１つ又は複数のパス、前記プロセスに関連する決定的及び非決定的パラメータ、前記プロセスの反復、前記プロセスの事前条件及び事後条件、前記プロセスに関連する仮定アスペクト、並びに前記プロセスの影響のうち少なくとも１つに基づいて生成する、請求項９に記載の検証システム。
【請求項１２】
前記メタデータが前記パーティション・ノード及び前記パーティション・ノード間の依存関係に関する情報を含む、請求項９に記載の検証システム。
【請求項１３】
前記プロセッサが、前記依存関係を、演繹的推論と前記１つ又は複数の属性のコンテキスト情報とのうち少なくとも１つに基づいて特定する、請求項１２に記載の検証システム。
【請求項１４】
前記１つ又は複数のパーティション・コンテキストが、前記検証システムによって自動的に生成されること、及び前記システムのユーザの入力に基づいて生成されることのうち少なくとも１つである、請求項９に記載の検証システム。
【請求項１５】
前記複数のパーティション・ノードのそれぞれがプロセッサ、メモリ、及びプロセス検証ユニットを含む、請求項９に記載の検証システム。
【請求項１６】
前記プロセス検証ユニットが前記１つ又は複数の属性を前記プロセスについて検証し、前記結果データを生成する、請求項１５に記載の検証システム。
【請求項１７】
命令を保管して有する非一時的コンピュータ可読媒体であって、前記命令がプロセッサによって処理されると前記プロセッサに、
プロセス及び前記プロセスに関連する１つ又は複数の属性を受け取る動作と、
前記１つ又は複数の属性及び、前記プロセスに関連する１つ又は複数のコンテキスト・データに基づいて、１つ又は複数のパーティション・コンテキストを生成する動作と、
前記１つ又は複数のパーティション・コンテキストに基づいて、前記プロセス及び前記１つ又は複数の属性を分散コンピューティング環境内の複数のパーティション・ノードに分散させる動作と、
前記複数のパーティション・ノードのそれぞれにメタデータを埋め込む動作と、
前記複数のパーティション・ノードのそれぞれによって、前記１つ又は複数の属性について前記プロセスを検証する動作と、
システムの前記プロセスを検証するために、前記複数のパーティション・ノードのそれぞれから受け取った結果データを集計する動作とを行わせ、前記１つ又は複数の属性についての前記プロセスの前記検証に前記結果データが関連付けられる、媒体。
【請求項１８】
前記命令がさらに、前記プロセスのローカル及びグローバルな遷移、前記プロセスの１つ又は複数のフロー、前記プロセスの１つ又は複数のパス、前記プロセスに関連する決定的及び非決定的パラメータ、前記プロセスの反復、前記プロセスの事前条件及び事後条件、前記プロセスに関連する仮定アスペクト、並びに前記プロセスの影響のうち少なくとも１つに基づいて前記１つ又は複数のコンテキスト・データを生成する動作を前記プロセッサに行わせる、請求項１７に記載の媒体。
【請求項１９】
前記命令がさらに、前記システムの時間、論理、及び挙動のパスによって前記１つ又は複数の属性を表す動作を前記プロセッサに行わせる、請求項１７に記載の媒体。
【請求項２０】
前記命令がさらに、前記１つ又は複数のパーティション・コンテキストを自動的に生成する動作を前記プロセッサに行わせる、請求項１７に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般にモデル検査に関し、より具体的には分散コンピューティング環境でシステム／モデルのプロセスの検証を行うための方法及びシステムに関するが、それに限定されない。
【背景技術】
【０００２】
一般に、モデル検査とは、システム／プロセスが所与の仕様／属性を満たすか検証することを指す。実例として、仕様には、デッドロック及び、システムをクラッシュさせる可能性のある危機的状態がないことなどの安全要件が含まれてもよい。モデル検査は、属性についてのシステムの正当性を自動的に検証するための技法である。システムは決定的／非決定的な挙動及び並列動作を有する１つ又は複数のプロセス／１つ又は複数のイベントを含んでもよい。
【０００３】
現在は、モデル検査を行うために、仕様は数学的表現で表され、また、方法を使用して分散コンピューティング環境にモデル検査のプロセスが分散される。次にモデルは、分散コンピューティング環境内でアクセプタンス・サイクルなどの属性検査のために検証される。これらの方法の問題は、分散コンピューティング環境全体にわたる属性サイクルの計算の非効率性である。図１（従来技術）は、分散コンピューティング環境でのモデル検査方法を示す状態遷移図である。図１に示されるように、分散コンピューティング環境内に１つ又は複数のパーティション・ノードがあり、この場合は２つのパーティション、すなわちＰ１及びＰ２がある。パーティションＰ１はパーティション状態ノード０、２、４、６、８、１０、１２、１４、１６及び１８の間に分散している。パーティションＰ２は、パーティション状態ノード１、３、５、７、９、１１、１３、１５、１７及び１９の間に分散している。第１のパーティションＰ１内の属性／サイクルを検証するには第２のパーティションの複数の状態を横断する必要があるので、属性の検証にかかる時間が長くなり、また、属性／アクセプタンス・サイクルの計算が困難にもなる。属性サイクル／アクセプタンス・サイクルの計算の非効率性は、属性サイクルの検査中にコンテキストの認識が欠如していることに起因し、また、分散コンピューティング環境内の直近のノード間の通信に制限があることにも起因する。このアルゴリズム手法を使用することの問題の中には、この他に、分散コンピューティング環境内のノード間に相互排他性が欠如していることに起因して、１つのノードでの属性サイクルの検査中のエラーで他のノードのフローに影響するものがあることがある。また、各ノードで属性サイクルの計算が冗長になる可能性があり、それに起因して計算に要する時間が増大し、リソースの消費も増大する。
【０００４】
分散モデル検査の分野の従来の手法には他に、モデル・スライシング、データ／制御の依存関係グラフ分割、状態空間分割などがある。しかし、これらの手法では属性に関連するコンテキスト・データは得られず、分散コンピューティング環境での検証サイクルの計算の最適化に役立つモデルも得られない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、従来のモデル検査システムの欠点及び制限を克服する、分散コンピューティング環境でシステムのプロセスの検証を行うための方法が必要である。
【課題を解決するための手段】
【０００６】
本開示によって従来技術の１つ又は複数の短所が克服され、長所が追加される。追加される特徴及び長所は、本開示の技法によって実現される。本開示のその他の実施例及び態様が本明細書に詳細に記載され、また、特許請求された開示の一部と見なされる。
【０００７】
したがって、本開示は分散コンピューティング環境でシステムのプロセスの検証を行うための方法に関する。この方法は、検証システムによって、１つ又は複数のプロセス及び、そのプロセスに関連する１つ又は複数の属性を受け取ることを含む。プロセス及び１つ又は複数の属性を受け取ると、検証システムは、その１つ又は複数の属性及び、そのプロセスに関連する１つ又は複数のコンテキスト・データに基づいて、１つ又は複数のパーティション・コンテキストを生成する。この方法は、その１つ又は複数のパーティション・コンテキストに基づいて、プロセス及び１つ又は複数の属性を分散コンピューティング環境内の複数のパーティション・ノードに分散させることをさらに含む。検証システムは複数のパーティション・ノードのそれぞれにメタデータを埋め込む。その後、複数のパーティション・ノードのそれぞれが、１つ又は複数の属性についてプロセスを検証する。検証システムはシステムのプロセスを検証するために、複数のパーティション・ノードのそれぞれから受け取った結果データを集計し、１つ又は複数の属性についてのプロセスの検証に結果データが関連付けられる。
【０００８】
さらに、本開示は分散コンピューティング環境でシステムのプロセスの検証を行うための検証システムに関する。このシステムはプロセッサと、プロセッサに通信可能に結合されたメモリとを備え、メモリはプロセッサ実行可能な命令を保存しており、この命令は実行されると、１つ又は複数のプロセス及び、そのプロセスに関連する１つ又は複数の属性をプロセッサに受け取らせる。プロセッサは、その１つ又は複数の属性及び、そのプロセスに関連する１つ又は複数のコンテキスト・データに基づいて、１つ又は複数のパーティション・コンテキストを生成する。その後、プロセッサは、その１つ又は複数のパーティション・コンテキストに基づいて、プロセス及び１つ又は複数の属性を分散コンピューティング環境内の複数のパーティション・ノードに分散させる。また、プロセッサは複数のパーティション・ノードのそれぞれにメタデータを埋め込む。さらに、複数のパーティション・ノードのそれぞれが、１つ又は複数の属性についてプロセスを検証する。プロセッサはシステムのプロセスを検証するために、複数のパーティション・ノードのそれぞれから受け取った結果データを集計し、１つ又は複数の属性についてのプロセスの検証に結果データが関連付けられる。
【０００９】
さらに、本開示は命令を保管して有する非一時的コンピュータ可読媒体に関し、この命令が少なくとも１つのプロセッサによって処理されると、検証システムに、プロセス及びそのプロセスに関連する１つ又は複数の属性を受け取る動作と、その１つ又は複数の属性及び、そのプロセスに関連する１つ又は複数のコンテキスト・データに基づいて１つ又は複数のパーティション・コンテキストを生成する動作と、その１つ又は複数のパーティション・コンテキストに基づいてプロセス及び１つ又は複数の属性を分散コンピューティング環境内の複数のパーティション・ノードに分散させる動作とを行わせる。命令はさらにプロセッサに、複数のパーティション・ノードのそれぞれにメタデータを埋め込ませる。複数のパーティション・ノードのそれぞれが、１つ又は複数の属性についてプロセスを検証する。さらに命令はシステムのプロセスを検証するために、プロセッサに、複数のパーティション・ノードのそれぞれから受け取った結果データを集計させ、１つ又は複数の属性についてのプロセスの検証に結果データが関連付けられる。
【００１０】
上記の概要は説明のみを目的とし、制限を意図するものでは決してない。前述した説明目的の態様、実施例及び特徴に加えて、図面及び下記の詳細な説明を参照することによって、さらなる態様、実施例及び特徴が明らかになる。
【００１１】
添付の図面は本開示に組み込まれて本開示の一部を成し、例示的実施例を示すと共に、下記の説明と併せて、本開示の原理を説明する役割を果たす。図において、参照番号の左端の桁はその参照番号が最初に使用される図を示す。すべての図で、同様の特徴及び構成要素を指すために同じ番号が使用される。本主題の実施例によるいくつかのシステム及び／又は方法の実施例について、添付図面を参照しながら単なる実例として説明する。
【図面の簡単な説明】
【００１２】
【図１】従来技術による、分散コンピューティング環境でのモデル検査方法を示す状態遷移図である。
【図２Ａ】本開示のいくつかの実施例による、システムのプロセスを検証するための検証システムのブロック図である。
【図２Ｂ】本開示のいくつかの実施例による、分散コンピューティング環境でのモデル検査方法を示す状態遷移図である。
【図２Ｃ】本開示のいくつかの実施例による検証システムの詳細なブロック図である。
【図３Ａ】本開示のいくつかの実施例による検証システムを使用してシステムのプロセスを検証するための例示的環境を示す図である。
【図３Ｂ】本開示のいくつかの実施例によるメタデータの例示的表現を示す図である。
【図４】本開示のいくつかの実施例による検証システムを使用してシステムのプロセスを検証するための方法を示すフローチャートである。
【図５】本開示に従う実施例を実装するための例示的コンピュータ・システムのブロック図である。
【発明を実施するための形態】
【００１３】
本明細書内のブロック図がいずれも本発明の主題の原理を具現化する説明目的のシステムの概念図を表していることを、当業者には理解されたい。同様に、フローチャート、フロー図、状態遷移図、擬似コードなどはいずれも様々なプロセスを表し、それらのプロセスが実質的にコンピュータ可読媒体内に表現され、且つ、コンピュータ又はプロセッサが明示的に示されているか否かに関わらずコンピュータ又はプロセッサによって実行されてもよいことが理解される。
【００１４】
本明細書内で使用されるとき、「例示的」という語は「例、事例、又は説明の役割をする」ことを意味する。本明細書に記載される、本発明の主題のいかなる実施例又は実装形態も、必ずしも他の実施例よりも好ましい、又は有利であるとは解釈されないものである。
【００１５】
本開示には様々な修正形態及び代替形態の余地があるが、本開示の特定の実施例が実例として図面に示されており、下記に詳細に説明される。ただし、開示される特定の形態に本開示を限定することは意図されておらず、逆に、本開示が本開示の範囲内のすべての修正、等価物及び代替物を対象とすることが理解されるべきである。
【００１６】
用語「含む（ｃｏｍｐｒｉｓｅｓ）」、「含んでいる（ｃｏｍｐｒｉｓｉｎｇ）」又はそれらの他の変形はいずれも非排他的な包含を対象とすることを意図し、列挙された構成要素又はステップを含む装備、装置又は方法はそれらの構成要素又はステップを包含するだけでなく、明示的に列挙されていない、又はそのような装備、装置若しくは方法に固有の、他の構成要素又はステップを包含してもよい。換言すれば、「を含む」という句の付けられた、システム又は装置内の１つ又は複数の要素は、さらなる制約なしに、そのシステム又は装置内の他の要素又は追加要素の存在を排除しない。
【００１７】
本開示は、検証システムを使用して分散コンピューティング環境でシステムのプロセスを検証するための方法に関する。システムは、ハードウェア、ソフトウェア、又はファームウェアの形で実装されてもよい。システムは１つ又は複数のプロセス（或いは、イベントとも呼ばれる）を含む。システムのモデル検査は、１つ又は複数の属性についてシステムを検証することを伴う。一実施例では、属性はシステムの論理、時間、及び挙動のパスの組み合わせによって表される仕様である。検証システムは、プロセスに関連する属性に基づいてパーティション・コンテキストを生成する。パーティション・コンテキストにはコンテキスト情報が含まれ、この情報に基づいて、分散コンピューティング環境内の１つ又は複数のパーティション・ノードの間にプロセスが分散される。分散コンピューティング環境内の各パーティション・ノードは、プロセスが属性に適合するか否か検証し、結果データを生成する。各パーティション・ノードからの結果データは検証システムに提供される。検証システムは、各パーティション・ノードからの結果データに基づいて、プロセスを属性について検証する。
【００１８】
本開示の実施例の下記の詳細な説明では本明細書の一部を成す添付図面が参照され、それらの図面には説明の目的で特定の実施例が示されており、それらの実施例にて本開示が実施されてもよい。これらの実施例は当業者が本開示を実施できるように十分詳細に説明されており、他の実施例が利用されてもよいこと及び、本開示の範囲を逸脱することなく変更が行われてもよいことが理解される。したがって、下記の説明は限定的に解釈されてはならない。
【００１９】
図２Ａは、本開示のいくつかの実施例による、システムのプロセスを検証するための検証システム２００のブロック図である。
【００２０】
図２Ａに示されるように、検証システム２００はＩ／Ｏインタフェース２０１、メモリ２０３、及びプロセッサ２０５を備える。検証システム２００はモデル検査を行うために構成される。実例として、あるシステムがモデルの観点から表現されている。このシステムは１つ又は複数のプロセス／イベントを含む。１つ又は複数の属性がシステムの要件を満たすか否かを検証するためにモデル検査が行われる。１つ又は複数の属性は、システムの論理、時間、及び挙動のパスの組み合わせによって表される仕様である。例示的な一実施例ではモデルを信号制御ソフトウェア・システムなどの鉄道システムと考え、モデル内のプロセスを「列車に信号を送ること」、検証される属性を「衝突」と考える。すなわち、このモデルは列車間のあらゆる衝突を防ぐために検証される。その他のシステムには、財務などの企業システム、保険システム、年金システム、自動車制御システムなどの組込システム、ビッグ・データ・システム、ツール開発システム及び工学システムなどのインフラストラクチャ・システムなどが含まれてもよいが、これらに限定されない。モデル検査を行うために、プロセス及び属性が分散コンピューティング環境に分散される。検証される属性、すなわち「衝突」が、分散コンピューティング環境内の１つ又は複数のパーティション・ノードの間に分散される。プロセス及び属性が分散されるのは、各パーティション・ノード内の検証属性を確認するため、すなわち、各パーティション・ノードでプロセスに対してそれらの属性を検証するか否か確認するためである。
【００２１】
検証システム２００のＩ／Ｏインタフェース２０１は、システムからプロセス及び属性を受け取る。受け取られた属性及びプロセスはメモリ２０３に保管される。メモリ２０３はプロセッサ２０５に通信可能に結合されている。プロセッサ２０５はプロセス及び属性を受け取って、１つ又は複数のパーティション・コンテキストを生成する。１つ又は複数のパーティション・コンテキストは、プロセスに関連するコンテキスト・データに基づく。１つ又は複数のパーティション・コンテキストは、プロセス及び属性を受け取ったときにプロセッサ２０５によって自動的に生成されるか、又は、システムのユーザの入力に基づいて生成されてもよい。コンテキスト・データは、プロセス及び属性に基づくシステムの挙動(behavior)を指す。一実施例では、コンテキスト・データはシステムのユーザによって提供されてもよい。プロセッサ２０５は属性及びプロセスを、１つ又は複数のパーティション・コンテキストに基づいて各パーティション・ノードに分散させる。プロセッサ２０５はまた、１つ又は複数のパーティション・ノードのそれぞれにメタデータ情報を埋め込む。メタデータは、パーティション・ノード及びパーティション・ノード間の依存関係に関する情報を含む。各パーティション・ノードは、そのパーティション・ノード内にアクセプタンス・サイクルが存在するか否かの検証、すなわち、属性がプロセスに適合するか否かの確認を行う。検証に基づいて、各パーティション・ノードは結果データを提供する。各パーティション・ノードの結果データは検証システム２００に提供される。検証システム２００のプロセッサ２０５は各パーティション・ノードの結果データを集計して、分散コンピューティング環境内のシステムのプロセスを検証する。
【００２２】
図２Ｂは、本開示のいくつかの実施例による、分散コンピューティング環境でのモデル検査方法を示す状態遷移図である。
【００２３】
図２Ｂに示されるように、２つのパーティション、すなわちＰ１及びＰ２がある。検証される属性は、プロセス「列車に信号を送る」の「衝突」である。図２Ｂに示されるように、パーティションＰ１はパーティション状態０、１、２、５、６、７、８、９の間に分散し、パーティションＰ２はパーティション状態１０、１１、１２、１５、１６、１７、１８、１９の間に分散している。属性「衝突」は、第１のパーティションＰ１と第２のパーティションＰ２で並行して検証される。このシナリオでは、属性サイクルはパーティションＰ１内で満たされる。このシナリオでは属性サイクルの計算は簡単で、図１に示される従来技術と比較して費やされる時間が少なくなる。その理由は、パーティションがコンテキスト・データ、すなわちプロセスの挙動データに基づいて分散されているからである。
【００２４】
図２Cは、本開示のいくつかの実施例による検証システム２００の詳細なブロック図である。
【００２５】
一実装形態では、検証システム２００はシステムから入力データを受け取る。実例として、受け取られた入力データはメモリ２０３に保管される。一実施例では、入力データはシステムのプロセス及び属性に関連するデータを含む。検証システム２００はメタデータ及びその他のデータもまた含んでもよい。メタデータはパーティション・ノード及びパーティション・ノード間の依存関係に関する情報を含む。図２Cに示される１つ又は複数のモジュールについて、本明細書で詳細に説明する。
【００２６】
一実施例では、データは様々なデータ構造の形でメモリ２０３に保管されてもよい。加えて、前述のデータは、関係型又は階層型のデータ・モデルなどのデータ・モデルを使用して組織化することができる。検証システム２００の様々な機能を行うためのモジュールによって生成された一時データ及び一時ファイルを含む、他のデータが保管されてもよい。
【００２７】
一実施例では、メモリ２０３に保管されたデータは検証システム２００のモジュールによって処理される。
【００２８】
一実装形態では、モジュールは、例えば、受信モジュール２０７、パーティション・コンテキスト生成モジュール２０９、コンテキストベース分散モジュール２１１、メタデータ共有モジュール２１３、集計モジュール２１５、及び他のモジュール２１７を含んでもよい。他のモジュール２１７は、検証システム２００の各種の様々な機能を行うために使用されてもよい。前述のそのようなモジュールは単一のモジュールとして、又は異なるモジュールの組み合わせとして表されてもよいことが理解される。
【００２９】
一実施例では、受信モジュール２０７はシステムからプロセス及び属性を受け取るように構成される。一実施例では、受信モジュール２０７はまた、システムに関連する１つ又は複数のプロセス及び１つ又は複数の属性を受け取ってもよい。実例として、検証される属性は、安全性の検出、アサーション検査（ローカル及びグローバルなアサーション）、アクセプタンス状態、非進行サイクル、不変量、及びデッドロック検出などを含んでもよいが、これらに限定されない。分割（パーティションする）時に、依存関係に基づいて、元のパーティションの事後条件に基づく従属パーティションの事前条件を導出することができる。また、分割時に、必要な仮定も導出することができる。一実施例では、アクセプタンス状態を使用して状態空間内のアクセプタンス・サイクルが探索される。アクセプタンス・サイクルは安全性の属性の検査に有用で、無限実行に対処する。
【００３０】
一実施例では、デッドロックは、終端状態すなわち外向き遷移のない状態を有する、収束しない逐次プログラム（すなわち無限ループ）を指す。ある状態が外向き遷移を有さず、且つ終了状態とマークされていない場合、又は、ある状態からの遷移が同じ状態に戻る場合に、システムはデッドロックしていると言われる。
【００３１】
一実施例では、パーティション・コンテキスト生成モジュール２０９は１つ又は複数のパーティション・コンテキストを生成するように構成される。１つ又は複数のパーティション・コンテキストは、受け取られた属性及びプロセスのコンテキスト・データに基づいて生成される。実例として、コンテキスト・データは、プロセスのローカル及びグローバルな遷移、プロセスの１つ又は複数のフロー、プロセスの１つ又は複数のパス、プロセスに関連する決定的及び非決定的なパラメータ、プロセスの反復、プロセスの事前条件及び事後条件、プロセスに関連する仮定アスペクト、並びにプロセスの影響を含んでもよいが、これらに限定されない。コンテキスト・データは検証システム２００によって自動的に生成されてもよいし、又はユーザからの入力に基づいて生成されてもよい。
【００３２】
一実施例では、コンテキストベース（context based）分散モジュール２１１は、パーティション・コンテキストに基づいてプロセス及び属性を分散ネットワーク環境に分散させるように構成される。コンテキストベース分散モジュール２１１は、パーティション・コンテキストに基づいてプロセス及び属性を各パーティション・ノードに分散させる。実例として、デッドロックに関する属性が１つのパーティションに与えられてもよく、アクセプタンス・サイクルに関する属性が別のパーティションに与えられてもよい。
【００３３】
一実施例では、メタデータ共有モジュール２１３は、分散コンピューティング・ネットワーク内の各パーティション・ノードにメタデータ情報を埋め込むように構成される。メタデータ情報はパーティション・ノード及びパーティション・ノード間の依存関係についての情報を含む。実例として、３つのパーティション・ノード、すなわち第１のパーティション・ノード、第２のパーティション・ノード及び第３のパーティション・ノードがある。メタデータ情報は、分散コンピューティング環境でアクセプタンス・サイクルをさらに計算するために、どのパーティション・ノードを参照すべきかの指示を提供する。例えば、第１のパーティション・ノード内のメタデータ情報が、さらなる計算のために第３のパーティション・ノードを指示する。したがって、モデル検査を行うために、検証システム２００は第３のパーティション・ノードを直接参照してもよい。一実施例では、依存関係はコンテキストを認識しているので、非近隣のパーティション・ノードをリンクすることができる。コンテキストを認識する依存関係は、不変量、仮定、及びその他の環境的制約であることができる。一実施例では、不変量はシステムの一定の状態を表す変数の述語であり、その不変量の範囲に従って一貫して変化せずに維持される。
【００３４】
一実施例では、集計モジュール２１５は各パーティション・ノードからの結果データを集計するように構成される。各パーティション・ノードはアクセプタンス・サイクルの確認、すなわち、属性が所与のプロセスに適合するか否かの検証を行い、結果データを提供する。各パーティション・ノードの結果データは検証システム２００の集計モジュール２１５に提供される。集計モジュール２１５は各パーティションの結果データを集計して、システムのプロセスを検証する。
【００３５】
図３Ａは、本開示のいくつかの実施例による検証システム２００を使用してシステムのプロセスを検証するための例示的環境３００を示す図である。
【００３６】
図３Ａに示されるように、環境３００はシステム３０１、検証システム２００及び分散コンピューティング環境３０４を含む。システム３０１は、１つ又は複数のプロセス、すなわちプロセス１  ３０５１〜プロセスｎ  ３０５ｎ（集合的にプロセス３０５と称される）を含む。環境３００は、システムのプロセスについて検証される必要のある１つ又は複数の属性、すなわち３０７１〜３０７ｎ（集合的に属性３０７と称される）もまた含む。分散コンピューティング環境３０４は１つ又は複数のパーティション・ノード、すなわちパーティション・ノード１  ３０９１、パーティション・ノード２  ３０９２〜パーティション・ノードｎ  ３０９ｎを含む。各パーティション・ノードはプロセッサ、メモリ、及びプロセス検証ユニットを備える。実例として、属性１がアクセプタンス・サイクル、属性２が非進行サイクル、属性３がデッドロックの検出などであってもよい。一実施例では、非進行サイクルは、明示的に進行プロセスとマークされていないすべてのグローバルなシステム状態で「真」であり、その他のすべての状態で「偽」であると定義される。少なくとも１つのアクティブなプロセスがユーザ定義の進行ラベルでマークされたローカル制御状態にある場合、又は現在のグローバルなシステム状態がプロセス・トレース定義内に進行ラベルでマークされている場合、システムは進行状態にある。検証システム２００は、分散コンピューティング環境３０４内でシステムのプロセスを検証するように構成される。検証システム２００の受信モジュール２０７は、プロセス及び、プロセスについて検証される属性を受け取る。例えば、鉄道システムで検証される属性は衝突である。すなわち、列車間で衝突があってはならない。パーティション・コンテキスト生成モジュール２０９はプロセス及び属性を受け取って、プロセスのコンテキスト・データ（contextual data）に基づいて１つ又は複数のパーティション・コンテキストを生成する。コンテキスト・データは、プロセスの１つ又は複数のフロー、プロセスの１つ又は複数のパス、プロセスに関連する決定的又は非決定的パラメータ、プロセスの反復、プロセスの事前条件及び事後条件、プロセスに関連する仮定アスペクト、及びプロセスの影響を含んでもよいが、これらに限定されない。コンテキストベース分散モジュール２１１は属性及びプロセスを、パーティション・コンテキストに基づいて各パーティション・ノードに分散させる。実例として、コンテキスト・データがプロセスの１つ又は複数のフローである場合には、そのフローに適する１つ又は複数の属性がパーティション・ノード１に提供される。同様に、コンテキスト・データが決定的及び非決定的なパラメータである場合には、分散コンピューティング環境のパーティション・ノード２に決定的な属性が提供され、パーティション・ノード３に非決定的な属性が提供される。
【００３７】
一実施例では、コンテキストベース分散モジュール２１１はまた、各パーティション・ノードにメタデータ情報を提供する。図３Ｂはメタデータの表現を示す。メタデータはパーティション・ノード並びに、検証されるプロセス及び属性についての依存関係の情報を含む。メタデータはまた、境界及び内部パーティション・ノードＩＤの情報も含み、これはパーティション境界の境界又は内部の状態を指す。図３Ｂに示されるように、属性「アクセプタンス・サイクル」及びコンテキスト・データ「影響」についての目標パーティションＩＤは２、すなわちパーティション・ノード２である。パーティション・ノード２の近隣パーティション・ノードのパーティション・ノードＩＤも示されている。同様に、属性が「非進行」でコンテキスト・データが「仮定」である場合は、目標パーティションＩＤは３及び５、すなわちパーティション・ノード３及びパーティション・ノード５である。属性「非進行」がパーティション・ノード３及びパーティション・ノード５で検証される。一実施例では、各パーティション・ノードはプロセス検証ユニットを含む。パーティション・ノード２のプロセス検証ユニットは、属性「アクセプタンス・サイクル」がプロセスによって満たされるか否かを検証する。同様に、パーティション・ノード３及びパーティション・ノード５は、属性「非進行」がプロセスによって満たされるか否かを検証する。各パーティション・ノードのプロセス検証ユニットは、検証プロセスの結果データを提供する。集計モジュール２１５が結果データを集計して、プロセスの属性が満たされているか否かを検証する。
【００３８】
一実施例では、パーティション・ノードがプロセスの仕様を満たさない場合には、反例トレースが生成される。これらの反例トレースは属性についてのプロセスの不正な挙動の是正に役立つ。集計モジュールが各パーティション・ノードからの反例トレースを集約して、属性についてシステムのプロセスを検証する。
【００３９】
１つの例示的実施例では、本開示は、パーティション・ノード間の依存関係についてプロセスを分割する方法を開示する。検証システム２００がプロセスを受け取り、依存関係主導のコンテキストを生成して、モデル検査／システム検証を行うために最適な複数のパーティションにプロセスを分割する。実例として、プロセスは、１つ又は複数の条件を有するプログラムである。分割の基準は、パーティション・ノード間の依存関係及び属性関係に基づいて生成された異なるパーティション・コンテキスト間の関係である。これは、プログラム内のＩＦ、ＬＯＯＰ及びＧＵＡＲＤの様々な条件を分類することによって行われ、それにより、様々な影響関係及び帰結関係が導出され、よって、様々な証明責務が導出される。
【００４０】
【数１】
2017010541.tif 000003
【００４１】
上記はプログラム内で確認される条件である。上記の各カテゴリについて、それぞれ異なる依存関係主導のコンテキストが生成される。これらのコンテキストに基づいて、モデル状態空間／プロセスが別々のパーティションに最適に分散される。上記のコンテキストにいくつかの事前条件及び事後条件を結びつけることができる。
【００４２】
【表１】
2017010541.tif 000004
【００４３】
表１に示されるように、グローバルな不変量ＩＮＶＧを、ＩＮＶＬ１、ＩＮＶＬ２、及びＩＮＶＬ３のような、いくつかのローカルな不変量に分割することができ、それらはモデルの一定のブロック、モデルの一定のイベント、モデルのイベントの一定のグループなどに対して特定である。不変量は、システムの一定の状態を表す変数の述語であり、その不変量の範囲に従って一貫して変化せずに維持される。
【００４４】
【表２】
2017010541.tif 000005
【００４５】
表２に示されるように、異なる基準に基づいた分割にＥＶＥＮＴ  ＧＲＤ条件を使用することができる。例えば、順序付けのケースに対してはＧＲＤ１及びＧＲＤ２が１つのパーティションＰ１にまとめられ、分離性の（disjunctive）ケースに対してはＧＲＤ０が２つのパーティションＰ０１及びＰ０２に分けられる。
【００４６】
【表３】
2017010541.tif 000006
【００４７】
ＧＲＤと同様に、ＥＶＥＮＴ／ＡＣＴアクションもまた、異なる基準に基づいて分割することができる。表３に示されるように、特定のＥＶＥＮＴのアクションがコンテキストに基づいて非原子的なパーティションＰ０１及びＰ０２に分割される。アクションは、パーティションＰ１について示されるように、共有の可変依存関係に基づいてグループ化することができる。順序付けられたアクションのセットはパーティションＰ２に割り当てられる。
【００４８】
【表４】
2017010541.tif 000007
【００４９】
表４に示されるように、異なるループ条件の制約に基づいて、異なるパーティションが存在し得る。ループ条件の制約ＬＣ１内ではまた、反復回数の範囲に基づいてパーティションがＰ１１及びＰ１２に分けられる。同様に、分岐条件ＢＣ２１、ＢＣ２２に基づいて、さらにＰ２１及びＰ２２への分割が行われる。
【００５０】
【表５】
2017010541.tif 000008
【００５１】
表５に示されるように、分岐条件自体を、分離性（disjunctive）ケースに基づいて異なるパーティションに割り当てることができる。各パーティションをさらに、ＥＶＥＮＴ／ＧＲＤ（ＥＧ２１及びＥＧ２２）及びＥＶＥＮＴ／ＡＣＴに基づいて分割することができる。
【００５２】
一実施例では、前述した様々な制約を、モデルの構造及び挙動のフローに基づいてさらに階層的に分割することができる。また、様々な制約に基づき、再グループ化、順序付け、分離(disjunction)によって分割の再調節が可能である。表６は様々な可能性の全体図を示し、分散の結果がパーティションになる。
【００５３】
【表６】
2017010541.tif 000009
【００５４】
一実施例では、コンテキスト情報に基づく分割では良い結果が得られないことがある。よって、最初の高位の分割プロセスの後、低位のグラフ・カット・アルゴリズムを行うことが必要になる場合もある。最適化エッジに基づいて、厳密な依存関係の影響を特定してパーティション間の関連を定めなければならない。実例として、より高位の抽象レベルで最適なパーティションを特定するために、ＩＮＶ、ＬＣ、ＢＣなどの「様々なコンテキスト制約の交差（intersection）」を特定する様々な組み合わせを考慮することができる。これは、交差の状態空間が定量化可能で、後に並べ替え／順序付けして最適な組み合わせを見つけることができる場合に可能である。
【００５５】
一実施例では、他のパーティションとの重複があるパーティションでは、依存関係は「Ｂｅｆｏｒｅ−Ａｆｔｅｒ述語」で影響関係を記号的に使用して取得される。主パーティションについて交差・に基づく状態空間領域の重複が考慮され、状態遷移の方向に基づいて従属パーティションに向かう依存関係の影響が特定される。よって、計算及び保管は主パーティションで一度だけ行われ、仮定及び事前条件の形での依存関係の影響によって従属パーティションの計算が可能になることになる。しかし、各パーティションでの計算は完全に独立するわけではなく、複数の異なるパーティションを使用して計算の有効性及び正確さが達成される。表７は、複数の異なる影響ＩＭＰ１、ＩＭＰ２〜ＩＭＰｎを有する依存（ＤＥＰ）関係を示す。これらの影響は、分散を行うとき、及び後に計算を行うときに集計のために、異なるパーティション間の関連を確立する。
【００５６】
【表７】
2017010541.tif 000010
【００５７】
図４は、本開示のいくつかの実施例による検証システム２００を使用してシステムのプロセスを検証するための方法を示すフローチャートである。
【００５８】
図４に示されるように、方法４００は検証システム２００を使用して分散コンピューティング環境内でシステムのプロセスを検証するための１つ又は複数のブロックを含む。方法４００は、コンピュータ実行可能な命令の一般的な文脈で記載されてもよい。一般に、コンピュータ実行可能な命令は、ルーティン、プログラム、オブジェクト、コンポーネント、データ構造、プロシージャ、モジュール及び関数を含むことができ、これらは特定の機能を実行するか、又は特定の抽象データ型を実装する。
【００５９】
方法４００が記載された順序は制限と見なされることを意図しておらず、記載された方法ブロックのうち任意の数を任意の順序で組み合わせて方法を実装することができる。加えて、本明細書に記載された主題の趣旨及び範囲を逸脱することなく、個々のブロックを方法から削除してもよい。さらに、この方法は任意の適切なハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせに実装することができる。
【００６０】
ブロック４０１で、システムのプロセス及び属性が受け取られる。一実施例では、検証システム２００の受信モジュール２０７が、１つ又は複数の属性についてプロセスを検証するために、プロセス及び属性を受け取る。
【００６１】
ブロック４０３で、１つ又は複数のパーティション・コンテキストが生成される。一実施例では、パーティション・コンテキスト生成モジュール２０９が、受け取られた属性及びプロセスに基づいて１つ又は複数のパーティション・コンテキストを生成する。
【００６２】
ブロック４０５で、プロセス及び属性が分散コンピューティング環境内のパーティション・ノードの間に分散される。一実施例では、コンテキストベース分散モジュール２１１によって、パーティション・コンテキストに基づき、プロセス及び属性がパーティション・ノード間に分散される。どのパーティション・ノードにどのプロセス及び属性の情報を検証のために提供すべきかを示すために、コンテキスト情報が提供される。
【００６３】
ブロック４０７で、各パーティション・ノードにメタデータ情報が埋め込まれる。一実施例では、メタデータ共有モジュール２１３が各パーティション・ノードにメタデータ情報を提供する。メタデータ情報はパーティション・ノード間の依存関係の情報を含む。メタデータ情報はまた、プロセスについて検証する必要のある属性の情報を含んでもよい。
【００６４】
ブロック４０９で、プロセスについて属性が検証される。各パーティション・ノードがプロセスについて属性を検証する。パーティション・ノードは所与のプロパティについてプロセスを確認する。検証に基づいて、各パーティション・ノードが結果データを提供する。
【００６５】
ブロック４１１で、各パーティション・ノードの結果データが集計される。一実施例では、検証システム２００の集計モジュール２１５が各パーティション・ノードの結果データを集計して、システムのプロセスを検証する。
【００６６】
図５は、本開示に従う実施例を実装するための例示的コンピュータ・システム５００のブロック図である。一実施例では、コンピュータ・システム５００は、検証システム２００を使用してシステムのプロセスを検証するために使用される。コンピュータ・システム５００は、中央処理ユニット（「ＣＰＵ」又は「プロセッサ」）５０２を含んでもよい。プロセッサ５０２は、ユーザ又はシステムによって生成された業務プロセスを実行するためのプログラム構成要素を実行するために少なくとも１つのデータ・プロセッサを含んでもよい。ユーザは、人物、本発明に含まれる装置などの装置を使用する人物、又はそのような装置自体を含んでもよい。プロセッサ５０２は、統合システム（バス）コントローラ、メモリ管理制御ユニット、浮動小数点ユニット、グラフィック処理ユニット、デジタル信号処理ユニットなどの専用処理ユニットを含んでもよい。
【００６７】
プロセッサ５０２は、入出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）インタフェース５０１を介して１つ又は複数のＩ／Ｏ装置（５１１及び５１２）と通信状態に置かれてもよい。Ｉ／Ｏインタフェース５０１は、音声、アナログ、デジタル、ステレオ、ＩＥＥＥ−１３９４、シリアル・バス、ユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、赤外線、ＰＳ／２、ＢＮＣ、同軸、コンポーネント、コンポジット、デジタル・ビジュアル・インタフェース（ＤＶＩ：Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）、高精細度マルチメディア・インタフェース（ＨＤＭＩ（登録商標）：ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ  ｍｕｌｔｉｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ）、無線周波（ＲＦ：Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）アンテナ、Ｓ−Ｖｉｄｅｏ、ビデオ・グラフィックス・アレイ（ＶＧＡ：Ｖｉｄｅｏ  Ｇｒａｐｈｉｃｓ  Ａｒｒａｙ）、ＩＥＥＥ８０２．ｎ  ／ｂ／ｇ／ｎ／ｘ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、セルラー（例えば、符号分割多元接続（ＣＤＭＡ：Ｃｏｄｅ−Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）、高速パケットアクセス（ＨＳＰＡ＋：Ｈｉｇｈ−Ｓｐｅｅｄ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ）、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ（登録商標）：Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  Ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）、ロングターム・エボリューション（ＬＴＥ：Ｌｏｎｇ−Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）、ＷｉＭａｘなど）などの通信プロコトル／方法を使用してもよいが、これらに制限されない。
【００６８】
Ｉ／Ｏインタフェース５０１を使用して、コンピュータ・システム５００は１つ又は複数のＩ／Ｏ装置（５１１及び５１２）と通信してもよい。
【００６９】
いくつかの実施例では、プロセッサ５０２がネットワーク・インタフェース５０３を介して通信ネットワーク５０９と通信状態に置かれてもよい。ネットワーク・インタフェース５０３は通信ネットワーク５０９と通信してもよい。ネットワーク・インタフェース５０３は、直接接続、Ｅｔｈｅｒｎｅｔ（登録商標）（例えばツイスト・ペア１０／１００／１０００ＢＡＳＥ−Ｔ）、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、トークン・リング、ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ／ｘなどの接続プロトコルを使用してもよいが、これらに限定されない。ネットワーク・インタフェース５０３及び通信ネットワーク５０９を使用して、コンピュータ・システム５００は１つ又は複数のユーザ装置５１０（ａ〜ｎ）と通信してもよい。通信ネットワーク５０９は、イントラネット又はローカル・エリア・ネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及び組織内ネットワークなどの様々なタイプのネットワークの１つとして、実装することができる。通信ネットワーク５０９は、専用ネットワーク又は共有ネットワークのいずれであってもよく、例えば、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＷＡＰ（Ｗｉｒｅｌｅｓｓ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）などの各種プロトコルを使用して相互に通信する様々なタイプのネットワークの連合を表す。さらに、通信ネットワーク５０９は、ルータ、ブリッジ、サーバ、コンピューティング装置、ストレージ装置などを含む各種ネットワーク装置を含んでもよい。１つ又は複数のユーザ装置５１０（ａ〜ｎ）は、パーソナル・コンピュータ、携帯電話などのモバイル装置、スマートフォン、タブレット・コンピュータ、電子書籍リーダ、ラップトップ・コンピュータ、ノートブック、ゲーム・コンソールなどを含んでもよいが、これらに限定されない。
【００７０】
いくつかの実施例では、プロセッサ５０２はストレージ・インタフェース５０４を介してメモリ５０５（例えば、図５に示されていないＲＡＭ、ＲＯＭなど）と通信状態に置かれてもよい。ストレージ・インタフェース５０４は、メモリ・ドライブ、取り外し可能ディスク・ドライブなどを含むがこれらに限定されないメモリ５０５に、シリアルＡＴＡ（ＳＡＴＡ：Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＩＥＥＥ−１３９４、ユニバーサル・シリアル・バス（ＵＳＢ）、光ファイバー・チャネル、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）などの接続プロトコルを使用して接続してもよい。メモリ・ドライブはさらに、ドラム、磁気ディスク・ドライブ、光磁気ドライブ、光ドライブ、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｃ）、ソリッドステート・メモリ・デバイス、ソリッドステート・ドライブなどを含んでもよい。
【００７１】
メモリ５０５は、ユーザ・インタフェース・アプリケーション５０６、オペレーティング・システム５０７、ウェブ・サーバ５０８などを含むがこれらに限定されないプログラム又はデータベース構成要素の集合を保管してもよい。いくつかの実施例では、コンピュータ・システム５００は、本発明に記載されるようにデータ、変数、レコードなどのユーザ・データ／アプリケーション・データ５０６を保管してもよい。そのようなデータベースは、Ｏｒａｃｌｅ又はＳｙｂａｓｅなどの耐故障性、リレーショナル、スケーラブル、セキュアなデータベースとして実装されてもよい。
【００７２】
オペレーティング・システム５０７がコンピュータ・システム５００の資源管理及び運用を促進してもよい。オペレーティング・システムの実例は、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ  ＯＳ  Ｘ、ＵＮＩＸ（登録商標）、Ｕｎｉｘライクなシステム・ディストリビューション（例えば、ＢＳＤ（Ｂｅｒｋｅｌｅｙ  Ｓｏｆｔｗａｒｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ）、ＦｒｅｅＢＳＤ、ＮｅｔＢＳＤ、ＯｐｅｎＢＳＤなど）、Ｌｉｎｕｘ（登録商標）ディストリビューション（例えば、Ｒｅｄ  Ｈａｔ、Ｕｂｕｎｔｕ、Ｋｕｂｕｎｔｕなど）、ＩＢＭ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ）  ＯＳ／２、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）（ＸＰ、Ｖｉｓｔａ／７／８など）、Ａｐｐｌｅ  ｉＯＳ、Ｇｏｏｇｌｅ  Ａｎｄｒｏｉｄ、Ｂｌａｃｋｂｅｒｒｙオペレーティング・システム（ＯＳ）などを含むが、これらに限定されない。ユーザ・インタフェース５０６は、テキスト又はグラフィック機能を通してプログラム構成要素の表示、実行、対話、操作、又は動作を促進してもよい。例えば、ユーザ・インタフェースはコンピュータ・システム５００に動作可能に接続されたディスプレイ・システム上に、カーソル、アイコン、チェック・ボックス、メニュー、スクローラ、ウィンドウ、ウィジェットなどのコンピュータ対話インタフェース要素を提供してもよい。Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈオペレーティング・システムのＡｑｕａ、ＩＢＭ  ＯＳ／２、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）（例えば、Ａｅｒｏ、Ｍｅｔｒｏなど）、Ｕｎｉｘ（登録商標）  Ｘ−Ｗｉｎｄｏｗｓ（登録商標）、ウェブ・インタフェース・ライブラリ（例えば、ＡｃｔｉｖｅＸ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＡＪＡＸ、ＨＴＭＬ、Ａｄｏｂｅ  Ｆｌａｓｈなど）などを含むがこれらに限定されないグラフィカル・ユーザ・インタフェース（ＧＵＩ）が使用されてもよい。
【００７３】
いくつかの実施例では、コンピュータ・システム５００はウェブ・ブラウザ５０８ストアド・プログラム・コンポーネントを実装してもよい。ウェブ・ブラウザは、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ、Ｍｏｚｉｌｌａ  Ｆｉｒｅｆｏｘ、Ａｐｐｌｅ  Ｓａｆａｒｉなどのハイパーテキスト閲覧アプリケーションでもよい。ＨＴＴＰＳ（Ｓｅｃｕｒｅ  Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）  ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ）、ＴＳＬ（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ  Ｓｅｃｕｒｉｔｙ）などを使用して安全なウェブ閲覧が提供されてもよい。ウェブ・ブラウザは、ＡＪＡＸ、ＤＨＴＭＬ、Ａｄｏｂｅ  Ｆｌａｓｈ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｊａｖａ（登録商標）、アプリケーション・プログラミング・インタフェース（ＡＰＩ）などの機能を利用してもよい。いくつかの実施例では、コンピュータ・システム５００はメール・サーバ・ストアド・プログラム・コンポーネントを実装してもよい。メール・サーバは、Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｈａｎｇｅなどのインターネット・メール・サーバでもよい。メール・サーバは、Ａｃｔｉｖｅ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ（ＡＳＰ）、ＡｃｔｉｖｅＸ、米国国家規格協会（ＡＮＳＩ）  Ｃ＋＋／Ｃ＃、Ｍｉｃｒｏｓｏｆｔ  ．ＮＥＴ、ＣＧＩスクリプト、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、ＰＨＰ、Ｐｙｔｈｏｎ、ＷｅｂＯｂｊｅｃｔｓなどの機能を利用してもよい。メール・サーバは、ＩＭＡＰ（Ｉｎｔｅｒｎｅｔ  Ｍｅｓｓａｇｅ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）、ＭＡＰＩ（Ｍｅｓｓａｇｉｎｇ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）、Ｍｉｃｒｏｓｏｆｔ  Ｅｘｃｈａｎｇｅ、ＰＯＰ（Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ）、ＳＭＴＰ（Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの通信プロトコルを使用してもよい。いくつかの実施例では、コンピュータ・システム５００はメール・クライアント・ストアド・プログラム・コンポーネントを実装してもよい。メール・クライアントは、Ａｐｐｌｅ  Ｍａｉｌ、Ｍｉｃｒｏｓｏｆｔ  Ｅｎｔｏｕｒａｇｅ、Ｍｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋ、Ｍｏｚｉｌｌａ  Ｔｈｕｎｄｅｒｂｉｒｄなどのメール閲覧アプリケーションであってもよい。
【００７４】
さらに、本発明に従う実施例の実装に１つ又は複数のコンピュータ可読ストレージ媒体が使用されてもよい。コンピュータ可読ストレージ媒体とは、プロセッサによる読み取りが可能な情報又はデータが保管されてもよい任意のタイプの物理メモリを指す。よって、コンピュータ可読ストレージ媒体は、本明細書に記載される実施例に従うステップ又は段階をプロセッサに遂行させるための命令を含む、１つ又は複数のプロセッサによって実行されるための命令を含んでもよい。用語「コンピュータ可読媒体」は、有形物を含み、搬送波及び過渡信号を除外する、すなわち非一時的であると理解されるべきである。その実例には、ランダム・アクセス・メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、読出し専用メモリ（ＲＯＭ：Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、揮発性メモリ、不揮発性メモリ、ハード・ドライブ、コンパクト・ディスク（ＣＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｃ）ＲＯＭ、デジタル・ビデオ・ディスク（ＤＶＤ：Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｃ）、フラッシュ・ドライブ、ディスク、及びその他任意の知られている物理ストレージ媒体が含まれる。
【００７５】
本開示の実施例の利点を以下に説明する。
【００７６】
一実施例では、本開示は、プロセスの依存関係を影響として、属性コンテキストと共に維持することができる方法を提供する。
【００７７】
一実施例では、本開示は、分散コンピューティング環境での属性サイクルの検索中／検出中に、複数のパーティション・ノードにわたってエラー状態が最小化される方法を提供する。
【００７８】
本開示はいずれのモデル検査手法にも適用可能であり、有界モデル検査に限定されない。
【００７９】
一実施例では、本開示は、検索がコンテキスト・ベースであるためにパーティション・ノードによる検索実施中の冗長性が減少する方法を提供する。
【００８０】
一実施例では、本開示は、分散コンピューティング環境で、より高速なモデル検査の検索計算を提供する。
【００８１】
本開示は、遠隔のパーティション・ノードにわたる非近隣の状態に関する依存関係管理のためにコンテキストを認識する影響を提供する。
【００８２】
本開示は、クラウド上に検証プラットフォームを提供する。
【００８３】
本開示は、ラベル伝播アルゴリズム及びコンテキスト関係の使用に起因する通信オーバヘッドを減少させる。
【００８４】
図示されたステップは示された例示的実施例を説明するために提示されており、特定の機能が遂行される様式が現在進行中の技術開発によって変更されることが予想されるべきである。これらの実例は本明細書内で、制限ではなく説明の目的で提示されている。さらに、本明細書内で機能構築ブロックの境界は説明の便宜のために任意に定められている。指定された機能及びそれらの関係が適切に遂行される限り、代替の境界を定めることができる。代替形態（本明細書に記載された形態の等価、拡張、変形、逸脱の形態などを含む）が、本明細書に含まれる教示に基づき当業者には明らかになる。そのような代替形態は本開示の実施例の範囲及び趣旨の中に収まる。また、「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「包含する（ｃｏｎｔａｉｎｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」及びその他の類似した語は意味において等価であり、且つオープン・エンドであると意図されており、したがって、それらの語のいずれかが付けられた項目又は複数の項目は、そのような項目又は複数の項目の網羅的なリストを意味することはなく、また、列挙された項目又は複数の項目のみに限定されることを意味することもない。また、本明細書及び添付の特許請求の範囲の中で使用されるとき、明確に断りのない限り、単数形「ａ」、「ａｎ」、及び「ｔｈｅ」は複数参照を含むことに留意されたい。
【００８５】
さらに、本開示に従う実施例の実装に１つ又は複数のコンピュータ可読ストレージ媒体が使用されてもよい。コンピュータ可読ストレージ媒体とは、プロセッサによる読み取りが可能な情報又はデータを保管してもよい任意のタイプの物理メモリを指す。よって、コンピュータ可読ストレージ媒体は、本明細書に記載される実施例に従うステップ又は段階をプロセッサに遂行させるための命令を含む、１つ又は複数のプロセッサによって実行されるための命令を保管してもよい。用語「コンピュータ可読媒体」は、有形物を含み、搬送波及び過渡信号を除外する、すなわち非一時的であると解釈されるべきである。その実例には、ランダム・アクセス・メモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、揮発性メモリ、不揮発性メモリ、ハード・ドライブ、ＣＤ  ＲＯＭ、ＤＶＤ、フラッシュ・ドライブ、ディスク、及びその他任意の知られている物理ストレージ媒体が含まれる。
【００８６】
本開示及び実例は、単に例示的であると見なされ、本開示の実施例の真の範囲及び趣旨は添付の特許請求の範囲によって示されることが意図されている。
【符号の説明】
【００８７】
２００  検証システム
２０１  インタフェース
２０３  メモリ
２０５  プロセッサ
２０７  受信モジュール
２０９  パーティション・コンテキスト生成モジュール
２１１  コンテキストベース分散モジュール
２１３  メタデータ共有モジュール
２１５  集計モジュール
２１７  他のモジュール
３００  環境
３０１  システム
３０５  プロセス
３０４  分散コンピューティング環境
３０７  属性
３０９  パーティション・ノード
【図１】
2017010541.tif 000011
【図２Ａ】
2017010541.tif 000012
【図２Ｂ】
2017010541.tif 000013
【図２Ｃ】
2017010541.tif 000014
【図３Ａ】
2017010541.tif 000015
【図３Ｂ】
2017010541.tif 000016
【図４】
2017010541.tif 000017
【図５】
2017010541.tif 000018