(57)【特許請求の範囲】
【請求項１】
方法であって、
検証ツールキット環境を静的に解析する工程と、
前記検証ツールキット環境の解析に基づいて、データ構造を互いに共有しない複数の計算スレッドを識別する工程と、
前記計算スレッドの計算要件を算出する工程と、
前記計算スレッドの全体的な計算要件が複数のリソース間でほぼ均一にバランスがとられるように複数のリソースの間で前記スレッドを分散する工程と
を含み、
前記検証ツールキット環境を静的に解析する工程は、前記検証ツールキット環境から生成されるモデルから複数の実行経路を抽出する工程を含み、
互いにデータ構造を共有しない複数の計算スレッドを識別する工程は、互いにデータ構造を共有しない前記複数の実行経路それぞれを表すスレッドを識別する工程を含み、
前記計算スレッドの計算要件を算出する工程は、前記実行経路を表す前記計算スレッドを実行するために必要な計算リソースを算出する工程を含む方法。
【請求項２】
請求項１記載の方法であって、前記検証ツールキット環境を静的に解析する工程は、
前記検証ツールキット環境のモデル生成器を解析する工程と、
前記モデル生成器によって生成されるモデルを解析する工程と、
前記検証ツールキット環境の検証ツールキットを解析する工程と
を含む方法。
【請求項３】
請求項１記載の方法であって、計算要件は、計算時間、処理要件、及びメモリ要件の少なくとも１つを含む方法。
【請求項４】
請求項１記載の方法であって、前記リソースはクラウド計算環境の構成部分である方法。
【請求項５】
実行されると、
検証ツールキット環境を静的に解析する機能と、
前記検証ツールキット環境の解析に基づいて、データ構造を互いに共有しない複数の計算スレッドを識別する機能と、
前記計算スレッドの計算要件を算出する機能と、
前記計算スレッドの全体的な計算要件が複数のリソース間でほぼ均一にバランスがとられるように複数のリソースの間で前記スレッドを分散する機能と
を行うよう動作可能なソフトウェアをコード化した１つ又は複数のコンピュータ読み取り可能な有形の記憶媒体であって、
前記検証ツールキット環境を静的に解析する機能は、前記検証ツールキット環境から生成されるモデルから複数の実行経路を抽出する機能を含み、
互いにデータ構造を共有しない複数の計算スレッドを識別する機能は、互いにデータ構造を共有しない前記複数の実行経路それぞれを表すスレッドを識別する機能を含み、
前記計算スレッドの計算要件を算出する機能は、前記実行経路を表す前記計算スレッドを実行するために必要な計算リソースを算出する機能を含む１つ又は複数のコンピュータ読み取り可能な有形の記憶媒体。
【請求項６】
システムであって、
検証ツールキット環境を静的に解析するロジックと、
前記検証ツールキット環境の解析に基づいて、データ構造を互いに共有しない複数の計算スレッドを識別するロジックと、
前記計算スレッドの計算要件を算出するロジックと、
前記計算スレッドの全体的な計算要件が複数のリソース間でほぼ均一にバランスがとられるように複数のリソースの間で前記スレッドを分散するロジックと
を備え、
前記検証ツールキット環境を静的に解析するロジックは、前記検証ツールキット環境から生成されるモデルから複数の実行経路を抽出するロジックを含み、
互いにデータ構造を共有しない複数の計算スレッドを識別するロジックは、互いにデータ構造を共有しない前記複数の実行経路それぞれを表すスレッドを識別するロジックを含み、
前記計算スレッドの計算要件を算出するロジックは、前記実行経路を表す前記計算スレッドを実行するために必要な計算リソースを算出するロジックを含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に、ハードウェア又はソフトウェアの検査に関する。
【背景技術】
【０００２】
ハードウェア及びソフトウェアにおける進歩は、検証し、又は検査することが一層困難になってきている、一層複雑になってきている設計の基礎をもたらしている。検証（又は検査）は、通常、ハードウェア又はソフトウェアのシステム若しくは設計が１つ又は複数の仕様を満たしており、その意図された目的を満たしているか否かをチェック又は検査することを表す。検証は多くの場合、計算集約的であり、したがって、時間がかかる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明は、従来の方法及びシステムに関連した欠点及び課題の少なくとも一部をかなりなくすか、又は軽減する、検証計算を分散するための方法及びシステムを提供する。
【課題を解決するための手段】
【０００４】
本発明の特定の実施例によれば、方法は、検証ツールキット環境を静的に解析する工程を含む方法を含み得る。方法は、検証ツールキット環境の解析に基づいて、データ構造を互いに共有しない複数の計算スレッドを識別する工程も含み得る。方法は更に、計算スレッドの計算要件を算出する工程を含み得る。方法は、計算スレッドの全体的な計算要件が複数のリソース間でほぼ均一にバランスがとられるように複数のリソース間でスレッドを分散する工程を更に含み得る。
【図面の簡単な説明】
【０００５】
【図１】本開示の実施例による、例示的な検証ツールキットの例示的な環境を示す図である。
【図２】本開示の実施例による、統一モデリング言語図の例示的な階層構成を示す図である。
【図３】本開示の実施例による例示的なシーケンス図である。
【図４】本開示の実施例による、例示的なプロセス・スケジューラの例示的な環境を示す図である。
【図５】本開示の実施例による、例示的なコンピュータ・システムの例示的なアーキテクチャを示す図である。
【発明を実施するための形態】
【０００６】
本発明の特定の実施例の技術上の利点は、アプリケーション検証に必要な時間を低減させることができ、計算リソースのクラウドに対する検証タスクの動的アロケーションを可能にすることにより、柔軟性を増加することができる方法論を含む。
【０００７】
他の技術上の利点は、図面、明細書、及び特許請求の範囲から、当業者に容易に明らかになるであろう。更に、特定の利点は上述しているが、種々の実施例は、上述された利点の全部、一部を含み得るか、又は、上述の利点の何れも含まないことがあり得る。
【実施例】
【０００８】
図１は、本開示の実施例による、検証ツールキット１０２の例示的な環境１００を示す。特定の実施例では、検証ツールキット１０２は、１つ又は複数のユースケース１０８を行い、前述の検査の結果を出力する場合にシステムが１つ又は複数の要件又は仕様１０６を満たしているか否かを検査して、ソフトウェア若しくはハードウェア（又はそれらの組合せ）の検査対象システム（ＳＵＴ）の検証を容易にする。例として、ソフトウェアのシステムへの言及は、適宜、アプリケーション又はプログラムを包含し、逆も同様であり得る。ＳＵＴ１０４の要件１０６は、システムの実行中にあてはまらなければならない特定の特性、又は、生じなければならないシステムの特定の振る舞いであり得る。一部の実施例では、オブジェクト間仕様は要件として表し得る一方、オブジェクト内仕様は実行可能な仕様と表し得る。振る舞い又は特性への言及は、適宜、要件１０６を包含し、逆も同様であり得る。ＳＵＴ１０４のユースケース１０８は、（例えば、特定のシーケンスでＳＵＴ１０４によって受け取られたユーザからの一連の特定の入力などの）ＳＵＴ１０４をユーザが使用する場合にＳＵＴ１０４が遭遇し得るシナリオの表現であり得る。シナリオへの言及は、適宜、ユースケースを包含し得、逆も同様であり得る。特定の実施例では、ＳＵＴ１０４は、製品の開発中に生成される設計プロトタイプである。他の実施例では、ＳＵＴ１０４は、検証ツールキット１０２によって生成されるステート・マシン又は他の表現であり得る。例示的な環境１００の構成部分は、図５を参照して以下に更に詳細に説明するものなどの１つ又は複数のコンピュータ・システム内で実行又は動作し得る。
【０００９】
検証ツールキット１０２のユーザは、ＳＵＴ１０４の１つ又は複数の仕様若しくは要件１０６及び／又はユースケース１０８を規定し、それらをモデル生成器１１０に入力として通信し得る。モデル生成器１１０は、更なる入力のためにＳＵＴ１０４にアクセスし得る。モデル生成器１１０は次いで、ＳＵＴ１０４のモデル１１２を生成し得る。特定の実施例では、モデル生成器１１０は、形式的視覚言語又はグラフィカル・モデリング言語を使用してモデル１１２を生成するうえでユーザ相互作用を容易にするグラフィカル・ユーザ・インタフェース（ＧＵＩ）を含む。グラフィカル・モデリング言語は何れかの適切な言語であり得、モデル１１２は、何れかの適切なプログラミング言語又は開発ツ―ルを使用して作成し得る。
【００１０】
特定の実施例では、モデル１１２は、統一モデリング言語（ＵＭＬ、例えば、ＵＭＬ２．０）を使用して生成されたＳＵＴ１０４の高水準設計仕様である。概して、ＵＭＬは、主にソフトウェア・エンジニアリングの分野において利用されており、より少ない程度で、ハードウェア・エンジニアリングの分野において利用されている標準化された汎用モデリング言語である。ＵＭＬは、特定のシステムの抽象モデルを作成するためのグラフィカル表記手法の組を含む。特に、ＵＭＬは、ソフトウェア及び／又はハードウェア・システムの要件及び設計などの別々のアーチファクトの規定するためのモデリング表記の集合である。例として、ＵＭＬは、開発中のオブジェクト指向ソフトウェア集約型システムのアーチファクトの仕様、視覚化、構成、及び文書化を容易にするよう利用し得る。しかし、ＵＭＬは、更に、実現又は生成の前、及び生成の後に他のシステムをモデリングするよう利用し得る。
【００１１】
ＵＭＬモデル１１２は一般に、ＳＵＴ１０４の別々の属性を記載又は例証するために使用される１つ又は複数の図を含む。現実的なサイズのシステムの実用的なアプリケーションでは、数十若しくは数百（又はそれを超える数の）ＵＭＬ図は、ＳＵＴ１０４を正確にかつ完全に表すために使用し得る。前述のＵＭＬ図の一部又は全部は階層的に配置し得る。すなわち、種々のＵＭＬ図は、他の高位ＵＭＬ図に組み入れ得る。このようにして、高位ＵＭＬ図は、階層型高位ＵＭＬ図における低位ＵＭＬ図それぞれの詳細全てを表示するのでなく、低位ＵＭＬ図を参照することにより、ＳＵＴ１０４の視覚的に快い概要を提供し得る（この逆は、高位ＵＭＬ図を構成する低位ＵＭＬ図の詳細全てを含め、表示するよう、階層的に配置されたＵＭＬが肉付けされる平坦化として知られている）。更に、特定の実施例では、検証ツールキット１０２は、ＵＭＬモデル１１２に基づいて、ＳＵＴ１０４を確認し、検証するために、実行可能な検証テスト・スイート１１８を自動的に生成し得る。例として、検証テスト・スイート１１８は、ＶＥＲＩＬＯＧ、ＳＹＳＴＥＭＣやＪＡＶＡ(登録商標)などの言語で生成し得る。
【００１２】
ＵＭＬ図は一般に、システム・モデルのどのビューを提供するかに基づいて３つのカテゴリのうちの１つに分類し得る。前述のカテゴリは、一般に、構造図、振る舞い図、及び相互作用図として表し得る。特に、ＵＭＬ２．０は、前述の３つのカテゴリに分けられる別々の１３のタイプの図を提供する。前述の図は、図２に示すように階層的に分類することが可能である。
【００１３】
構造図（又は静止図）２０２は、例として、オブジェクト、属性、動作、及び関係を利用するシステムの静的構造のビューを提供する。構造図２０２は、例として、クラス図２０４、コンポーネント図２０６、複合構造図２０８，配置図２１０、オブジェクト図２１２、及びパッケージ図２１４を含む。
【００１４】
振る舞い図（又は動的図）２１６は、オブジェクトの内部状態に対する変更、及びオブジェクト間のコラボレーションを示すことにより、システムの動的な振る舞いを強調する。振る舞い図２１６は、例として、アクティビティ図２１８、状態（又は状態マシン）図２２０、及びユースケース図２２２を含む。
【００１５】
相互作用図２２４は、振る舞い図２１６の部分集合とみなし得る。相互作用図２２４は、モデリングされているシステムにおける対象のうちのデータ及び制御のフローを強調する。相互作用図は例として、通信図２２６、相互作用概要図２２８、タイミング図２３０、及びシーケンス図２３２を含む。
【００１６】
ＵＭＬにおけるシーケンス図は、特に、オブジェクト又はプロセスが互いに、どのようにして動作するか、及びどの順序で動作するかを示す種々の相互作用図である。特に、シーケンス図の主な用途は、相互作用が行われる順番にオブジェクト間の相互作用を示すということである。すなわち、シーケンス図は、特定の所望の結果をもたらすイベント・シーケンスを規定するために使用し得る。シーケンス図は、ユースシナリオ（又は使用シナリオ）のロジックを検証し、肉付けするために利用し得る。本明細書及び特許請求の範囲に記載された使用シナリオは、ＳＵＴ１０４が使用される潜在的なやり方の記述として定義し得る。特に、使用シナリオは、２つ以上のプロセス間で伝達されるメッセージの特定の順序及び組合せを表し得る。使用シナリオのロジックは、ユースケースの一部であり、場合によっては別のコースであり、（基本計画、又は基本計画の一部分に、別の１つ又は複数のシナリオを加えたものによって表されるロジックなどの、）ユースケースを介した一パス全体であり、又は、いくつかのユースケースに含まれるロジックを介したパスであり得る。シーケンス図は、ユーザのクラスによって定義される動作の呼び出しを、ユーザが視覚的に進んでいくことを可能にするので、設計の探索を容易にする。
【００１７】
シーケンス図は、メッセージ・シーケンス図（ＭＳＣ）のＵＭＬ構成体とみなし得る。当業者が理解するように、ＭＳＣは、プロセス間又はオブジェクト間の相互作用のパターンを表すシナリオを規定するうえで利用し得る。例として、多くのオブジェクト指向システム開発方法論では、ユーザはまず、システムのユースケースを規定し、各ユースケースの一部の特定のインスタンス化が次いで、ＭＳＣを使用して表される。
【００１８】
シーケンス図は多くの場合、ソフトウェア開発において利用されるが、組織のビジネス・スタッフは、更に、種々のビジネス・オブジェクトがどのようにして相互作用するかを示すことにより、ビジネスが現在、機能しているかを伝達するためにシーケンス図を利用し得る。組織の現在のモデルの文書化に加えて、シーケンス図は、更に、将来のビジネス・システムの実現形態の要件を規定するために使用し得る。
【００１９】
シーケンス図の主な用途の１つには、ユースケースとして表される要件から次の、よりフォーマルなレベルの精緻化への遷移におけるものがある。ユースケースは多くの場合、１つ又は複数のシーケンス図に精緻化される。上述したように、新たなシステムの設計における使用に加えて、シーケンス図は、既存の（又はレガシーの）システムにおけるオブジェクトがどのようにして現在、相互作用しているかを文書化するために使用し得る。これは例えば、システムを別の個人又は組織に遷移させる場合に有用であり得る。
【００２０】
図３は、本開示の実施例による例示的なシーケンス図３００を示す。平行の垂直線（又はライフライン）３０２は、同時に実行するか、又は動作する別々のプロセス又はオブジェクト３０４を示す一方、水平の矢印３０６は、生じる順序で、それらの間で交換されるメッセージを表す（時間は垂直線に沿って上から下に流れる）。このようにして、シーケンス図は、ランタイム・シナリオの規定をグラフィックに提供する。一部のシステムは、固定の少数のオブジェクト又はプロセス間のメッセージの特定のシーケンスで表し得る単純な動的な振る舞いを有する。前述の場合、シーケンス図は完全に、システムの振る舞いを完全に規定し得る。しかし、システムの振る舞いは多くの場合、例として、多くの分岐点（例えば、例外）が存在している場合、リソース競合などの同期化の課題、又は複雑な反復が存在している場合などのように、複雑度が更にずっと高い。前述の場合には、シーケンス図は、状態図（状態チャート）などの他の振る舞い図及び上述したその他の図とともに使用し得る。
【００２１】
多くの実用的なシステムでは、メッセージをオブジェクトに送出するために１つ又は複数の条件が満たされなければならない場合が存在する。よって、オブジェクト相互作用をモデリングする場合、ガードやループなどの条件付構成体は、フローを制御するためにＵＭＬ図にわたって利用し得る。特定の実施例では、ＵＭＬシーケンス図などの図中のエレメントは、それぞれ、考えられる条件及び必要な条件に対応する仮のガード、又は必須のガードで規定し得る。特に、仮のガードが実行中に有効である場合、制御がガード直後のオブジェクトに渡され、そうでない場合、この条件が生じるコンテキストを退出し、実行が続き得る。例として、仮ガードは、分岐、及びｉｆ−ｔｈｅｎ−ｅｌｓｅ構成体をプログラムするために使用し得る。ＵＭＬは、更に、有限ループ及び無限ループを可能にし、これらは、仮ガードと組み合わせると、ｗｈｉｌｅループ及びｒｅｐｅａｔ−ｕｎｔｉｌループを構成するために使用し得る。対照的に、必須ガード条件は常に真でなければならない。偽と求められる必須ガードに実行が達した場合、これは、ＳＵＴ１０４の要件の違反である。
【００２２】
ＵＭＬ  ２．０は、シーケンス図における、より複雑な制御フローを表すために、ＩｎｔｅｒａｃｔｉｏｎＵｓｅ及びＣｏｍｂｉｎｅｄＦｒａｇｍｅｎｔなどの構造化された制御（又は条件付）構成体を導入した。ＩｎｔｅｒａｃｔｉｏｎＵｓｅは、一シーケンス図が別のシーケンス図を表すことを可能にする。一般に、ＣｏｍｂｉｎｅｄＦｒａｇｍｅｎｔは、ガードの一形式であり、シーケンス図中の条件付フローを示すために、メッセージの組を併せてグループ化するために使用し得る。ＣｏｍｂｉｎｅｄＦｒａｇｍｅｎｔｓは、同時性、選択、及びループなどの各種制御フローを表す。ＣｏｍｂｉｎｅｄＦｒａｇｍｅｎｔは、ＩｎｔｅｒａｃｔｉｏｎＯｐｅｒａｔｏｒ、及び１つ又は複数のＩｎｔｅｒａｃｔｉｏｎＯｐｅｒａｎｄを含む。ＩｎｔｅｒａｃｔｉｏｎＯｐｅｒａｎｄはＩｎｔｅｒａｃｔｉｏｎＦｒａｇｍｅｎｔであり、ＩｎｔｅｒａｃｔｉｏｎＣｏｎｓｔｒａｉｎｔ（ブール表現であり得る）を含み得る。ＩｎｔｅｒａｃｔｉｏｎＯｐｅｒａｔｏｒｓは例えば、Ａｌｔｅｒｎａｔｉｖｅ（Ａｌｔ）、  Ｏｐｔｉｏｎ（Ｏｐｔ）、  Ｂｒｅａｋ、  Ｐａｒａｌｌｅｌ、  Ｃｒｉｔｉｃａｌ  Ｒｅｇｉｏｎ、及びＬｏｏｐを含む。前述のＩｎｔｅｒａｃｔｉｏｎＯｐｅｒａｔｏｒｓそれぞれの詳細は当該技術分野において知られており、本明細書では更なる詳細は説明しない。
【００２３】
条件付構成体を組み入れるこの能力があれば、ＵＭＬ２．０は、ソフトウェア及びハードウェア・システムの形式仕様記述に一層多く使用されている。しかし、形式仕様記述を実現形態に変換することが可能であり、よって、実現形態を体系的にかつ自動的に検査することが可能である方法が存在しない場合、形式仕様記述を使用することの利点が失われ得る（設計は大容量であり、人間ベースの検査は誤りがちであり、不完全なことがあるからである）。実現形態が仕様要件を満たしているということを証明することが可能でない場合、仕様に対して実現形態を検査することは特に重要である（例えば、実現形態が、体系的に、かつ、証明して正しいやり方で、仕様から生成されない場合、このことがあてはまり得る）。そういうものとして、実現形態を検査するために形式仕様記述（例えば、ＵＭＬ）から検証スイートを生成する方法が望ましい。
【００２４】
よって、上述のように、検証は基本的に、３つの層（モデル抽出、モデル縮退、及びモデル検証）を備え得る。各層は、計算集約的であり、実行するためにかなりの時間がかかり得る。以下に更に詳細に説明するように、計算時間を削減するために、検証を行うために必要な種々の計算スレッドを、１つ又は複数の計算リソース（例えば、１つ又は複数のプロセッサ、１つ又は複数のコンピュータ等）に動的に割り当てて、前述のスレッドの並列計算を可能にし得る。
【００２５】
図４は、本開示の実施例による、プロセス・スケジューラ４０２の例示的な環境４００を示す。図示したように、プロセス・スケジューラ４０２は、モデル抽出層４０４、モデル縮退層４０６、及びモデル検証層４０８を静的に解析し得る。例えば、モデル抽出層４０４は、モデル生成器１１０の解析によって解析し得る。別の例として、モデル縮退層４０６は、モデル１１２の解析によって解析し得る。更なる例として、モデル検証層４０８は検証ツールキット１０２の解析によって解析し得る。種々の解析は、データ構造を互いに共有しない種々の計算スレッド４１０を識別し得、かつ／又は、各スレッド４１０によって必要とされる計算リソース（例えば、計算時間、処理要件、メモリ要件等）を算出し得、前述のスレッドを複数のリソース４１２（例えば、プロセッサ、計算装置等）に、計算スレッドの全体的な計算要件の複数のリソース間でのバランスが均一にとれるように分散し得る。
【００２６】
更に図示したように、モデル縮退層４０６の解析の特定の例として、プロセス・スケジューラ４０２は、モデル１１２の特定の図（例えば、シーケンス図２３２、状態マシン図２２０等）を解析し得、前述の解析を行ううえで、前述の図から種々の実行経路を抽出し得る。ここで、各経路は、図を横切る状態シーケンスを含み得る。一部の実施例では、考えられる実行経路それぞれが表されるように実行経路の網羅的な集合を抽出し得る。前述の経路毎に、プロセス・スケジューラ４０２は、経路を表すスレッドを実行するために必要な計算リソースを算出し得、かつ／又は、前述のスレッドが、別のスレッドによって使用されるデータ構造を必要とするか否かを判定し得る。別のスレッドによって使用されるデータ構造を必要としないスレッド４１０毎に、プロセス・素ジューラ４０２は、前述の分散スレッド全てによって必要とされる計算リソースのバランスがほぼとれているように前述のスレッド４１０をリソース４１２に分散し得る。
【００２７】
よって、スレッド４１０は、検証に関連付けられた計算時間を削減するために、リソース４１２間で動的に供給し得る。更に、特定の実施例では、リソース４１２は、アプリケーション検証の実行がクラウドで行われることを可能にする、クラウド計算環境の構成部分であり得る。
【００２８】
図５は、本開示の実施例による、例示的なコンピュータ・システム６００を示す。特定の実施例では、１つ又は複数のコンピュータ・システム６００は、本明細書及び特許請求の範囲に記載又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を行う。特定の実施例では、１つ又は複数のコンピュータ・システム６００は、本明細書及び特許請求の範囲に記載又は例証された機能を提供する。特定の実施例では、１つ又は複数のコンピュータ・システム６００上で実行されるソフトウェアは、本明細書及び特許請求の範囲に記載又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を行うか、又は、本明細書及び特許請求の範囲記載の機能を提供する。特定の実施例は、１つ又は複数のコンピュータ・システム６００の１つ又は複数の部分を含む。
【００２９】
本開示は、何れかの適切な数のコンピュータ・システム６００を想定している。本開示は、何れかの適切な物理的形式を呈するコンピュータ・システム６００を想定している。限定でなく、例として、コンピュータ・システム６００は、組み込み型コンピュータ・システム、システムオンチップ（ＳＯＣ）、シングルボード・コンピュータ・システム（ＳＢＣ）（例えば、コンピュータオンモジュール（ＣＯＭ）又はシステムオンモジュール（ＳＯＭ））、デスクトップ型コンピュータ・システム、ラップトップ型又はノートブック型コンピュータ・システム、インタアクティブ・キオスク、汎用コンピュータ、コンピュータ・システムのメッシュ、携帯電話機、携帯情報端末（ＰＤＡ）、サ―バ、又は、前述の２つ以上の組合せであり得る。コンピュータ・システム６００は、適宜、１つ又は複数のコンピュータ・システム６００を含み、ユニタリー型であっても分散型であってもよく、複数の場所にまたがってもよく、複数のマシンにまたがってもよく、クラウド（１つ又は複数のネットワーク内の１つ又は複数のクラウド構成部分を含み得る）に常駐していてもよい。１つ又は複数のコンピュータ・システム６００は、適宜、本明細書及び特許請求の範囲に記載されたか又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を、実質的な空間制約又は時間制約なしで行い得る。限定でなく、例として、１つ又は複数のコンピュータ・システム６００は、本明細書及び特許請求の範囲記載の１つ又は複数の方法のうちの１つ又は複数の工程をリアルタイムで又はバッチ・モードで行い得る。１つ又は複数のコンピュータ・システム６００は、適宜、本明細書及び特許請求の範囲に記載又は例証された１つ又は複数の方法のうちの１つ又は複数の工程を別々の時点で、又は別々の場所で行い得る。
【００３０】
特定の実施例では、コンピュータ・システム６００は、プロセッサ６０２、メモリ６０４、記憶装置６０６、入出力（Ｉ／Ｏ）インタフェース６０８、通信インタフェース６１０、及びバス６１２を含む。本開示は、特定の構成において特定数の特定の構成部分を有する特定のコンピュータ・システムを記載し、例証しているが、本開示は、何れかの適切な構成における何れかの適切な数の何れかの適切な構成部分を有する何れかの適切なコンピュ―タ・システムを想定している。
【００３１】
特定の実施例では、プロセッサ６０２は、コンピュータ・プログラムを構成するものなどの、命令を実行するためのハードウェアを含む。限定でなく例として、プロセッサ６０２は、命令を実行するために、内部レジスタ、内部キャッシュ、メモリ６０４、又は記憶装置６０６から命令を取り出し（又はフェッチし）、デコードし、実行し、次いで、１つ又は複数の結果を内部レジスタ、内部キャッシュ、メモリ６０４，又は記憶装置６０６に書き込み得る。特定の実施例では、プロセッサ６０２は、データ、命令、又はアドレスのために１つ又は複数の内部キャッシュを含み得る。本開示は、適宜、何れかの適切な数の何れかの適切な内部キャッシュを含むプロセッサ６０２を想定している。限定でなく、例として、プロセッサ６０２は、１つ又は複数の命令キャッシュ、１つ又は複数のデータ・キャッシュ、及び１つ又は複数のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）を含み得る。命令キャッシュ内の命令は、メモリ６０４内又は記憶装置６０６内の命令の複製であり得、命令キャッシュはプロセッサ６０２による前述の命令の取り出しを高速化し得る。データ・キャッシュ内のデータは、プロセッサ６０２で命令が処理する対象の、メモリ６０４内又は記憶装置６０６内のデータの複製、プロセッサ６０２で実行するその後の命令によるアクセスのための、又は、メモリ６０４若しくは記憶装置６０６への書き込みのための、プロセッサ６０２で実行される先行する命令の結果、又は、他の適切なデータであり得る。データ・キャッシュは、プロセッサ６０２による読み出し又は書き込みの動作を高速化し得る。ＴＬＢは、プロセッサ６０２のための仮想アドレス変換を高速化し得る。特定の実施例では、プロセッサ６０２は、データ、命令、又はアドレスの１つ若しくは複数の内部レジスタを含み得る。本開示は、何れかの適切な数の何れかの適切な内部レジスタを適宜含むプロセッサ６０２を想定している。プロセッサ６０２は、適宜、１つ又は複数の論理演算装置（ＡＬＵ）を含むか、マルチコア・プロセッサであるか、又は１つ又は複数のプロセッサ６０２を含み得る。本開示は特定のプロセッサを記載し、例証するが、本開示は何れかの適切なプロセッサを想定している。
【００３２】
特定の実施例では、メモリ６０４は、プロセッサ６０２が実行するための命令、又はプロセッサ６０２が処理するためのデータを記憶する主メモリを含む。限定でなく例として、コンピュータ・システム６００は、記憶装置６０６、又は（例えば、別のコンピュータ・システム６００などの）別のソースからメモリ６０４に命令をロードし得る。プロセッサ６０２は次いで、メモリ６０４から内部レジスタ又は内部キャッシュに命令をロードし得る。命令を実行するために、プロセッサ６０２は、内部レジスタ又は内部キャッシュから命令を取り出し、デコードし得る。命令の実行中又は実行後、プロセッサ６０２は、（中間結果又は最終結果であり得る）１つ若しくは複数の結果を内部レジスタ又は内部キャッシュに書き込み得る。プロセッサ６０２は、前述の結果のうちの１つ又は複数をメモリ６０４に書き込み得る。特定の実施例では、プロセッサ６０２は、１つ又は複数の内部レジスタ内若しくは内部キャッシュ内、又はメモリ６０４内の命令のみを実行し、（記憶装置６０６内又はそれ以外の場所内の命令は実行せず、）１つ又は複数の内部レジスタ内若しくは内部キャッシュ内、又はメモリ６０４内のデータのみを処理する（記憶装置６０６内又はそれ以外の場所内の命令は実行しない）。（アドレス・バス及びデータ・バスをそれぞれが含み得る）１つ又は複数のメモリ・バスは、プロセッサ６０２をメモリ６０４に結合し得る。バス６１２は、以下に説明するように、１つ又は複数のメモリ・バスを含み得る。特定の実施例では、１つ又は複数のメモリ管理装置（ＭＭＵ）はプロセッサ６０２とメモリ６０４との間に常駐し、プロセッサ６０２によって要求されるメモリ６０４に対するアクセスを容易にする。特定の実施例では、メモリ６０４はランダム・アクセス・メモリ（ＲＡＭ）を含む。このＲＡＭは、揮発性メモリであり得る。このＲＡＭは、適宜、ダイナミックＲＡＭ（ＤＲＡＭ）又はスタティックＲＡＭ（ＳＲＡＭ）であり得る。更に、このＲＡＭは、適宜、単一ポートのＲＡＭ又はマルチポートのＲＡＭであり得る。本明細書及び特許請求の範囲は、何れかの適切なＲＡＭを想定している。メモリ６０４は、適宜、１つ又は複数のメモリ６０４を含み得る。本開示は特定のメモリを記載し、例証しているが、本開示は何れかの適切なメモリを想定している。
【００３３】
特定の実施例では、記憶装置６０６は、データ又は命令用の大容量記憶装置を含む。限定でなく、例として、記憶装置６０６は、ＨＤＤ、フロッピー（登録商標）・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、若しくは、ユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、又は前述の２つ以上の組合せを含み得る。記憶装置６０６は、適宜、取り外し可能な媒体、又は取り外し可能でない（若しくは固定の）媒体を含み得る。記憶装置６０６は、適宜、コンピュータ・システム６００の内部にあっても外部にあってもよい。特定の実施例では、記憶装置６０６は、不揮発性のソリッドステート・メモリである。特定の実施例では、記憶装置６０６はリードオンリ・メモリ（ＲＯＭ）を含む。このＲＯＭは、適宜、マスクプログラムされたＲＯＭ、プログラム可能なＲＯＭ（ＰＲＯＭ）、消去可能なＰＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）、電気的に改変可能なＲＯＭ（ＥＡＲＯＭ）、若しくは、フラッシュ・メモリ、又は、前述の２つ以上の組合せであり得る。本開示は、何れかの適切な物理的形式を呈する大容量記憶装置６０６を想定している。記憶装置６０６は、適宜、プロセッサ６０２と記憶装置６０６との間の通信を容易にする１つ又は複数の記憶制御装置を含み得る。記憶装置６０６は、適宜、１つ又は複数の記憶装置６０６を含み得る。本開示は特定の記憶装置を記載し、例証しているが、本開示は何れかの適切な記憶装置を想定している。
【００３４】
特定の実施例では、Ｉ／Ｏインタフェース６０８は、コンピュータ・システム６００と、１つ又は複数のＩ／Ｏ装置との間の通信のための１つ又は複数のインタフェースを提供するハードウェア、ソフトウェア、又は両方を含む。コンピュータ・システム６００は、適宜、前述のＩ／Ｏ装置のうちの１つ又は複数を含み得る。前述のＩ／Ｏ装置の１つ又は複数は、個人とコンピュータ・システム６００との間の通信を可能にし得る。限定でなく、例として、Ｉ／Ｏ装置は、キーボード、キーパッド、マイクロフォン、モニタ、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオ・カメラ、別の適切なＩ／Ｏ装置、又は前述の２つ以上の組合せを含み得る。Ｉ／Ｏ装置は１つ又は複数のセンサを含み得る。本開示は、何れかの適切なＩ／Ｏ装置、及び上記何れかの適切なＩ／Ｏ装置との何れかの適切なＩ／Ｏインタフェース６０８を想定している。Ｉ／Ｏインタフェース６０８は、適宜、プロセッサ６０２が前述のＩ／Ｏ装置のうちの１つ又は複数を駆動させることを可能にする１つ又は複数の装置若しくはソフトウェア・ドライバを含み得る。Ｉ／Ｏインタフェース６０８は、適宜、１つ又は複数のＩ／Ｏインタフェース６０８を含み得る。本開示は特定のＩ／Ｏインタフェースを記載し、例証しているが、本開示は何れかの適切なＩ／Ｏインタフェースを想定している。
【００３５】
特定の実施例では、通信インタフェース６１０は、コンピュータ・システム６００と、１つ若しくは複数の他のコンピュータ・システム６００、又は１つ若しくは複数のネットワークとの間の（例えば、パケットベースの通信などの）通信のための１つ又は複数のインタフェースを提供するハードウェア、ソフトウェア、又は両方を含む。限定でなく例として、通信インタフェース６１０は、イーサネット（登録商標）若しくは他の有線ベースのネットワークと通信するためのネットワーク・インタフェース・コントローラ（ＮＩＣ）若しくはネットワーク・アダプタ、又は、ワイファイ・ネットワークなどの無線ネットワークと通信するための無線アダプタ若しくは無線ＮＩＣ（ＷＮＩＣ）を含み得る。この開示は、何れかの適切なネットワーク、及び上記何れかの適切なネットワークとの何れかの適切な通信インタフェース６１０を想定している。限定でなく例として、コンピュータ・システム６００は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク（ＰＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、若しくは、インターネットの１つ若しくは複数の部分、又は、前述の２つ以上の組合せと通信し得る。前述の１つ又は複数のネットワークの１つ又は複数の部分は有線であっても無線であってもよい。例として、コンピュータ・システム６００は、（例えば、ブルートゥースＷＰＡＮなどの）無線ＰＡＮ（ＷＰＡＮ）、ワイファイ・ネットワーク、ワイマックス・ネットワーク、（例えば、ジーエスエム（ＧＳＭ）ネットワークなどの）携帯電話ネットワーク、若しくは他の適切な無線ネットワーク、又は前述のうちの２つ以上の組合せと通信し得る。コンピュータ・システム６００は、適宜、前述のネットワークの何れかのための、何れかの適切な通信インタフェース６１０を含み得る。通信インタフェース６１０は、適宜、１つ又は複数の通信インタフェース６１０を含み得る。本開示は特定の通信インタフェースを記載し、例証しているが、本開示は何れかの適切な通信インタフェースを想定している。
【００３６】
特定の実施例では、バス６１２は、コンピュータ・システム６００の構成部分を互いに結合するハードウェア、ソフトウェア、又は両方を含む。限定でなく、例として、バス６１２は、アクセラレーテッド・グラフィクス・ポート（ＡＧＰ）若しくは他のグラフィクス・バス、拡張業界標準アーキテクチャ（ＥＩＳＡ）バス、フロント・サイド・バス（ＦＳＢ）、ハイパートランスポート（ＨＴ）相互接続、業界標準アーキテクチャ（ＩＳＡ）バス、インフィニバンド相互接続、低ピン・カウント（ＬＰＣ）バス、メモリ・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、周辺装置相互接続（ＰＣＩ）バス、ＰＣＩエクスプレス（ＰＣＩ−Ｘ）バス、シリアル高度技術アタッチメント（ＳＡＴＡ）バス、ビデオ電子標準協会局所（ＶＬＢ）バス、若しくは、別の適切なバス、又は、前述の２つ以上の組合せを含み得る。バス６１２は、適宜、１つ又は複数のメモリ６１２を含み得る。本開示は特定のバスを記載し、例証しているが、本開示は何れかの適切なバス又は相互接続を想定している。
【００３７】
本明細書及び特許請求の範囲では、コンピュータ読み取り可能な記憶媒体への参照は、１つ又は複数の有形のコンピュータ読み取り可能な記憶媒体を有する構造を含む。限定でなく、例として、コンピュータ読み取り可能な記憶媒体は、適宜、（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）又は特定用途向ＩＣ（ＡＳＩＣ）などの）半導体ベース又は他の集積回路（ＩＣ）、ハード・ディスク、ＨＤＤ、ハイブリッド・ハード・ドライブ（ＨＨＤ）、光ディスク、光ディスク・ドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピー（登録商標）・ディスク、フロッピー（登録商標）・ディスク・ドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、ソリッドステート・ドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアなディジタル・カード、セキュアなディジタル・ドライブ、若しくは、別の適切なコンピュータ読み取り可能な媒体、又は、前述のうちの２つ以上の組合せを含み得る。本明細書及び特許請求の範囲では、コンピュータ読み取り可能な記憶媒体への言及は、米国特許法第１０１条の特許の保護の対象でない何れかの媒体である。本明細書及び特許請求の範囲では、コンピュータ読み取り可能な記憶媒体への言及は、米国特許法第１０１条の下で特許の保護の対象でない範囲で（本来的には、伝搬する電気信号又は電磁気信号などの）信号伝送の一時的な形態を除く。
【００３８】
本開示は、何れかの適切な記憶装置を実現する１つ又は複数のコンピュータ読み取り可能な記憶媒体を想定している。特定の実施例では、コンピュータ読み取り可能な記憶媒体は、適宜、（例えば、１つ若しくは複数の内部レジスタ又はキャッシュなどの、）プロセッサ６０２の１つ若しくは複数の部分、メモリ６０４の１つ若しくは複数の部分、記憶装置６０６の１つ若しくは複数の部分、又は、前述の組合せを実現する。特定の実施例では、コンピュータ読み取り可能な記憶媒体はＲＡＭ又はＲOＭを実現する。特定の実施例では、コンピュータ読み取り可能な記憶媒体は揮発性メモリ又はパーシスタント・メモリを実現する。特定の実施例では、１つ又は複数のコンピュータ読み取り可能な記憶媒体はソフトウェアを実施する。本明細書及び特許請求の範囲では、ソフトウェアへの言及は、適宜、１つ若しくは複数のアプリケーション、バイトコード、１つ若しくは複数のコンピュータ・プログラム、１つ若しくは複数の実行可能形式、１つ若しくは複数の命令、ロジック、マシン・コード、１つ若しくは複数のスクリプト、又はソース・コード等を包含し得る。特定の実施例では、ソフトウェアは、１つ又は複数のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。本明細書及び特許請求の範囲は、何れかの適切なプログラミング言語、又はプログラミング言語の組合せで記述されたか、又はその他のやり方で表現された何れかの適切なソフトウェアを想定している。特定の実施例では、ソフトウェアは、ソース・コード又はオブジェクト・コードとして表現される。特定の実施例では、ソフトウェアは、例えば、Ｃ、パール、又はその適切な拡張などの高水準プログラミング言語で表現される。特定の実施例では、ソフトウェアは、アセンブラ言語（又はマシン・コード）などの低水準プログラミング言語で表現される。特定の実施例では、ソフトウェアはＪＡＶＡで表現される。特定の実施例では、ソフトウェアは、ハイパテキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、又は他の適切なマークアップ言語で表現される。
【００３９】
例示的な環境１００の構成部分はロジック及び／又はその他の適切な構成要素を含み得る。ロジックは、構成部分の動作を行い、例えば、入力から出力を生成する旨の命令を実行する。ロジックは、ハードウェア、ソフトウェア、及び／又は他のロジックを含み得る。ロジックは、１つ又は複数の有形なコンピュータ読み取り可能な記憶媒体にコード化され得、コンピュータによって実行されると動作を行い得る。プロセッサなどの特定のロジックは構成部分の動作を管理し得る。プロセッサの例には、１つ若しくは複数のコンピュータ、１つ若しくは複数のマイクロプロセッサ、１つ若しくは複数のアプリケーション、及び／又は他のロジックが含まれる。
【００４０】
本発明は、特定の構成部分を識別して、詳細に説明してきたが、種々の変更及び修正を当業者に連想させ得、更に、本発明が、特許請求の範囲記載の範囲内に明らかに収まる前述の何れの変更及び修正も包含することが意図されている。
【００４１】
更に、開示された特定の処理フローに関し、フロー内に記載された工程は何れも、本発明の範囲から逸脱しない限り、修正し、強化し、又は割愛し得る。更に、工程は、本発明の範囲から逸脱しない限り、何れかの適切な順序で、又は同時に行い得る。
【００４２】
本開示は、適宜、当業者が理解するであろう、本明細書及び特許請求の範囲記載の例示的な実施例に対する変更、置換、変形、改変、及び修正全てを包含する。同様に、特許請求の範囲は、当業者が理解するであろう、本明細書及び特許請求の範囲記載の例示的な実施例に対する変更、置換、変形、改変、及び修正全てを包含する。
（付記１）
検証ツールキット環境を静的に解析する工程と、
前記検証ツールキット環境の解析に基づいて、データ構造を互いに共有しない複数の計算スレッドを識別する工程と、
前記計算スレッドの計算要件を算出する工程と、
前記計算スレッドの全体的な計算要件が複数のリソース間でほぼ均一にバランスがとられるように複数のリソースの間で前記スレッドを分散する工程と
を含むことを特徴とする方法。
（付記２）
前記検証ツールキット環境を静的に解析する工程は、
前記検証ツールキット環境のモデル生成器を解析する工程と、
前記モデル生成器によって生成されるモデルを解析する工程と、
前記検証ツールキット環境の検証ツールキットを解析する工程と
を含むことを特徴とする付記１に記載の方法。
（付記３）
前記検証ツールキット環境を静的に解析する工程は、前記検証ツールキット環境から生成されるモデルから複数の実行経路を抽出する工程を含み、
互いにデータ構造を共有しない複数の計算スレッドを識別する工程は、互いにデータ構造を共有しない前記複数の実行経路それぞれを表すスレッドを識別する工程を含み、
前記計算スレッドの計算要件を算出する工程は、前記実行経路を表す前記計算スレッドを実行するために必要な計算リソースを算出する工程を含むことを特徴とする付記１に記載の方法。
（付記４）
計算要件は、計算時間、処理要件、及びメモリ要件の少なくとも１つを含むことを特徴とする付記１に記載の方法。
（付記５）
前記リソースはクラウド計算環境の構成部分であることを特徴とする付記１に記載の方法。
（付記６）
実行されると、
検証ツールキット環境を静的に解析する機能と、
前記検証ツールキット環境の解析に基づいて、データ構造を互いに共有しない複数の計算スレッドを識別する機能と、
前記計算スレッドの計算要件を算出する機能と、
前記計算スレッドの全体的な計算要件が複数のリソース間でほぼ均一にバランスがとられるように複数のリソースの間で前記スレッドを分散する機能と
を行うよう動作可能なソフトウェアをコード化したことを特徴とする１つ又は複数のコンピュータ読み取り可能な有形の記憶媒体。
（付記７）
前記検証ツールキット環境を静的に解析する機能は、
前記検証ツールキット環境のモデル生成器を解析する機能と、
前記モデル生成器によって生成されるモデルを解析する機能と、
前記検証ツールキット環境の検証ツールキットを解析する機能と
を含むことを特徴とする付記６に記載の媒体。
（付記８）
前記検証ツールキット環境を静的に解析する機能は、前記検証ツールキット環境から生成されるモデルから複数の実行経路を抽出する機能を含み、
互いにデータ構造を共有しない複数の計算スレッドを識別する機能は、互いにデータ構造を共有しない前記複数の実行経路それぞれを表すスレッドを識別する機能を含み、
前記計算スレッドの計算要件を算出する機能は、前記実行経路を表す前記計算スレッドを実行するために必要な計算リソースを算出する機能を含むことを特徴とする付記６に記載の媒体。
（付記９）
計算要件は、計算時間、処理要件、及びメモリ要件の少なくとも１つを含むことを特徴とする付記６に記載の媒体。
（付記１０）
前記リソースはクラウド計算環境の構成部分であることを特徴とする付記６に記載の媒体。
（付記１１）
検証ツールキット環境を静的に解析するロジックと、
前記検証ツールキット環境の解析に基づいて、データ構造を互いに共有しない複数の計算スレッドを識別するロジックと、
前記計算スレッドの計算要件を算出するロジックと、
前記計算スレッドの全体的な計算要件が複数のリソース間でほぼ均一にバランスがとられるように複数のリソースの間で前記スレッドを分散するロジックと
を備えることを特徴とするシステム。
（付記１２）
前記検証ツールキット環境を静的に解析するロジックは、
前記検証ツールキット環境のモデル生成器を解析するロジックと、
前記モデル生成器によって生成されるモデルを解析するロジックと、
前記検証ツールキット環境の検証ツールキットを解析するロジックと
を含むことを特徴とする付記１１に記載のシステム。
（付記１３）
前記検証ツールキット環境を静的に解析するロジックは、前記検証ツールキット環境から生成されるモデルから複数の実行経路を抽出するロジックを含み、
互いにデータ構造を共有しない複数の計算スレッドを識別するロジックは、互いにデータ構造を共有しない前記複数の実行経路それぞれを表すスレッドを識別するロジックを含み、
前記計算スレッドの計算要件を算出するロジックは、前記実行経路を表す前記計算スレッドを実行するために必要な計算リソースを算出するロジックを含むことを特徴とする付記１１に記載のシステム。
（付記１４）
計算要件は、計算時間、処理要件、及びメモリ要件の少なくとも１つを含むことを特徴とする付記１１に記載のシステム。
（付記１５）
前記リソースはクラウド計算環境の構成部分であることを特徴とする付記１１に記載のシステム。
【図１】
0005704000.tif 000002
【図２】
0005704000.tif 000003
【図３】
0005704000.tif 000004
【図４】
0005704000.tif 000005
【図５】
0005704000.tif 000006