【誤訳訂正書】
【提出日】平成24年5月2日(2012.5.2)
【誤訳訂正１】
【訂正対象書類名】特許請求の範囲
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【特許請求の範囲】
【請求項１】
複数のピア−ピア接続された処理システムに渡って実行される、モデルベースの分散ソフトウェアアプリケーションの分散された実行を制御するために構成された、分散コンピューティングシステムであって、前記分散コンピューティングシステムは、複数の処理システムと、データ格納部と、メッセージインフラストラクチャとを備え、
前記複数の処理システムは、ピアツーピアネットワーク内で接続され且つ相互運用して複数のピアツーピアの処理システムに渡って前記モデルベースの分散ソフトウェアアプリケーションを実行するように構成され、前記複数のピアツーピアの処理システムの各々は、
前記モデルベースの分散ソフトウェアアプリケーションの一部を実行するように構成された、分散ロジックの一部と、
システムメモリと、コンピュータ実行可能命令を格納した１または複数のコンピュータ記憶デバイスとが、動作可能に接続された少なくとも１つのプロセッサであって、前記コンピュータ実行可能命令は、前記少なくとも１つのプロセッサによって実行されたときに、前記少なくとも１つのプロセッサをコントローラとして機能させる、少なくとも１つのプロセッサと
を備え、前記コントローラは、
前記複数のピアツーピアの処理システムに渡る前記モデルベースの分散ソフトウェアアプリケーションの分散実行の間、前記処理システムの動作を規定し且つ制限する前記データ格納部内で定義されたポリシーに従って、機能し、
前記ピアツーピアネットワーク内の他の処理システムとの相互運用性を調整して、前記データ格納部内で定義されたポリシーに従って前記モデルベースの分散ソフトウェアアプリケーションを実行する、
ように構成され、前記ピアツーピアネットワーク内の他の処理システムとの相互運用性を調整して、前記定義されたポリシーに従って前記モデルベースの分散ソフトウェアアプリケーションを実行することは、前記データ格納部内で定義されたポリシーに従う前記モデルベースの分散ソフトウェアアプリケーションの分散実行の間、前記複数の処理システムの集合的な動作を利用して、前記複数の処理システムのうちの少なくとも１つにおいて１または複数のエラーのうちのいずれかから回復することと、前記複数の処理システムのうちの少なくとも１つにおいてある所定のエラーについてエラー回復を開始することを禁止することとを含み、
前記データ格納部は、前記ピアツーピアの処理システムの各々と接続され且つ前記ピアツーピアの処理システムの各々間で共有されており、前記データ格納部は、
ポリシーデータであって、前記ポリシーデータは、第１のリードオンリーデータであり、前記ポリシーデータは、前記モデルベースの分散アプリケーションの分散実行の間、分散ロジックの各部分が従うこととなるアプリケーション固有のポリシーを定義し、前記ポリシーデータは、前記モデルベースの分散ソフトウェアアプリケーションの分散実行の間、前記分散ロジックの各部分により個別に、または、前記分散ロジックの各部分の集合により協調的に、ピアツーピアの処理システムが示すことができる動作を規定し且つ制限する、ポリシーデータと、
リードライトアプリケーションデータであって、前記複数のピアツーピアの処理システムは、前記リードライトアプリケーションデータを使用して前記モデルベースの分散ソフトウェアアプリケーションの分散実行の間に分散ソフトウェアアプリケーションのデータを格納及び共有し、前記リードライトアプリケーションデータは、前記ポリシーデータ内に示される規定動作の順守を判定するために前記コントローラによって用いられるランタイムメトリックスを含み、前記ランタイムメトリックスは、前記ピアツーピアの処理システムが１秒あたりに送るメッセージの数を含む、リードライトアプリケーションデータと
を含み、
前記メッセージインフラストラクチャは、前記分散ロジックに接続され、前記分散ロジック間で共有され、前記メッセージインフラストラクチャは、前記ピアツーピアの処理システム間でメッセージを交換して、
前記モデルベースの分散ソフトウェアアプリケーションを実行する際に使用するための前記ピアツーピアの処理システムにおける分散ロジックの部分の存在を前記コントローラが発見できるようにし、
前記ピアツーピアの処理システムにおいて前記コントローラと相互運用して、前記モデルベースの分散ソフトウェアアプリケーションを実行するとき、前記データ格納部内で定義されたポリシーを順守するように前記ピアツーピアの処理システムの動作を規定し且つ制限する、
ように構成されることを特徴とするシステム。
【請求項２】
前記データ格納部は、１または複数のモデルベースの分散ソフトウェアアプリケーションを第２のリードオンリーデータとして更に含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記複数の処理システムの各々は、ピアツーピア実行サービスとして機能することを特徴とする請求項１に記載のシステム。
【請求項４】
分散処理システムにおいてモデルベースの分散ソフトウェアアプリケーションを実行する方法であって、前記分散処理システムは、（１）ピアツーピアネットワーク内で接続され且つシステムメモリと動作可能に連結された少なくとも１つのプロセッサを夫々が使用して分散ランタイムを集合的に表すピアツーピア実行サービスから成るグループを実装する、複数の分散型処理システムであって、各ピアツーピア実行サービスは、ピアツーピア実行サービスから成るグループに渡る前記モデルベースの分散ソフトウェアアプリケーションを実行するための分散ロジックを備えた、複数の分散型処理システムと、（２）前記ピアツーピアの処理システムの各々によって共有され、リードオンリー部とリードライト部とを有する共通データリポジトリであって、前記リードオンリー部は、１または複数のモデルベースの分散ソフトウェアアプリケーションを格納し且つ前記モデルベースの分散ソフトウェアアプリケーションの分散実行の間に各ピアツーピア実行サービスが従うこととなる定義されたポリシーを格納し、前記定義されたポリシーは、前記モデルベースの分散ソフトウェアアプリケーションを実行するとき、前記ピアツーピア実行サービスの個別の動作及び協同的な動作を規定し且つ制限し、前記リードライト部は、アプリケーション状態及びアプリケーションオペレーショナルデータを維持するために前記ピアツーピア実行サービスによって使用可能である、共通データリポジトリと、（３）サービスバスであって、前記ピアツーピア実行サービスは、当該サービスバスを使用して、互いに発見し且つ互いに協調的に通信して、前記モデルベースの分散ソフトウェアアプリケーションを実行する、サービスバスとを備え、前記方法は、
前記共通データリポジトリのリードオンリー部に格納されたモデルベースの分散ソフトウェアアプリケーションを実行するコマンドを、前記分散ランタイムのあるピアツーピア実行サービスが、受信するステップであって、当該ピアツーピア実行サービスは、少なくとも１つのプロセッサを備える処理システムにおいて実装される、受信するステップと、
前記サービスバスを介して前記分散ランタイムの他のピアツーピア実行サービスを、前記あるピアツーピア実行サービスが、発見するステップであって、前記あるピアツーピア実行サービスと前記他のピアツーピア実行サービスの各々とは、前記複数の分散型ピアツーピア処理システムに渡って分散されている、発見するステップと、
データ格納部内で定義されたポリシーを、前記あるピアツーピア実行サービスと前記他のピアツーピア実行サービスとが、参照して、協調的にグループ化し、前記データ格納部内で定義されたポリシーに従って前記モデルベースの分散ソフトウェアアプリケーションを実行するための前記複数の分散型処理システムに渡る分散ロジックを提供するステップと、
前記データ格納部内で定義されたポリシーに従い前記分散型のピアツーピアの処理システムに渡って前記モデルベースの分散ソフトウェアアプリケーションを実行するために、前記サービスバスを介して、前記ピアツーピア実行サービスから成るグループが、協働し、前記データ格納部内で定義されたポリシーに従う前記ピアツーピア実行サービスから成るグループの個別の動作及び協働的な動作の規定及び制限を含んだ前記複数の分散型ピアツーピアの処理システムに渡る前記モデルベースの分散ソフトウェアアプリケーションを実行するステップであって、当該実行するステップは、
前記共通データリポジトリのリードライト部を用いて、前記モデルベースの分散ソフトウェアアプリケーションのアプリケーション状態を前記複数の分散型処理システムに反映するステップであって、当該リードライト部を用いることは、リードライト部にアプリケーション状態のデータを書き込むことと、リードライト部からアプリケーション状態のデータを読み出すこととを含むステップと、
前記共通データリポジトリのリードライト部を用いて、前記モデルベースの分散ソフトウェアアプリケーションに対応するオペレーショナルデータを前記複数の分散型処理システムに反映するステップであって、当該オペレーショナルデータは、前記定義されたポリシーの遵守を判定するために使用される情報を含み、前記共通データリポジトリのリードライト部を用いて、ピアツーピア実行サービスが前記定義されたポリシーに従っているかを判定するために評価することができるランタイムメトリックスを維持することを含み、前記リードライト部を用いることは、前記オペレーショナルデータを前記リードライト部に書き込むことと、前記オペレーショナルデータを前記リードライト部から読み出すこととを含む、ステップと、
前記ピアツーピア実行サービスから成るグループの集合的な動作を利用して、前記データ格納部内で定義されたポリシーに従った前記モデルベースの分散ソフトウェアアプリケーションの分散実行の間に１または複数のエラーの何れかから回復し、ある所定のエラーに対するエラー回復の開始を前記ピアツーピア実行サービスの少なくとも１つにおいて禁止するステップと
を含む、ステップと
を備えたことを特徴とする方法。
【請求項５】
前記モデルベースの分散ソフトウェアアプリケーションを実行するために前記サービスバスを介して協働する前記ピアツーピア実行サービスから成るグループの動作は、前記ポリシーとのコンプライアンスのために前記実行サービスの動作を監視するピアツーピア実行サービスの各々におけるコントローラの動作を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記モデルベースの分散ソフトウェアアプリケーションを実行するために前記サービスバスを介して、前記ピアツーピア実行サービスから成るグループが、協働するステップは、１または複数の他のピアツーピア実行サービスにおいて前記モデルベースの分散ソフトウェアアプリケーションの分散実行に否定的に影響するあるピアツーピア実行サービスにおけるローカル動作を、前記ポリシーに従って禁止するステップを含み、前記分散実行に否定的に影響するあるピアツーピア実行サービスにおけるローカル動作は、重大及び／又は複雑なエラーの回復を開始することを含むことを特徴とする請求項４に記載の方法。
【請求項７】
コンピュータによって実行されると、前記コンピュータに請求項４乃至６の何れか１項に記載の方法を実行させるプログラムを格納したコンピュータ可読記録媒体。
【誤訳訂正２】
【訂正対象書類名】明細書
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【発明の詳細な説明】
【発明の名称】モデル化アプリケーションの分散動作制御実行
【背景技術】
【０００１】
コンピュータシステム及び関係技術は社会の多くの状況に影響を与えている。確かに、情報を処理するためのコンピュータの能力は我々が生活及び仕事をする方法を変化させている。コンピュータシステムの出現前は手作業で行われた多くのタスク（例えば、ワードプロセッシング、スケジューリング、アカウンティング等）をコンピュータシステムは現在一般に行っている。最近では、コンピュータシステムは互いに、そして他の電子機器と接続され、コンピュータシステム及び電子機器が電子データを転送できる有線及び無線のコンピュータネットワークを形成している。これにより、多くのコンピューティングタスクのパフォーマンスが多数の異なるコンピュータシステム及び／又は多数の異なるコンピューティングコンポーネントに亘って分散される。
【０００２】
コンピュータシステムに互いにインターラクションを行わせるために様々な異なるネットワークアーキテクチャを利用することができる。ネットワークアーキテクチャは、ネットワークアーキテクチャのコンピュータシステム間に存在する機能的な関係に応じて、ある程度まで分類することができる。例えば、ネットワークアーキテクチャは、クライアント−サーバアーキテクチャ、ピアツーピア等に分類することができる。
【０００３】
クライアント−サーバアーキテクチャは、異なるコンピュータシステム間のクライアントの機能とサーバの機能とを分ける。異なるクライアント−サーバアーキテクチャの目的は、変化したり、及び／又は様々な方法に適用される場合がある。しかしながら、一般に、クライアント−サーバアーキテクチャ内のコンピュータシステム間の関係は、全てのクライアント−サーバアーキテクチャにおいて非常に類似している。一般的に、複数のクライアントコンピュータシステムは、サーバコンピュータシステム（又は一部の環境ではサーバファーム）にリクエスト（例えば、データ用）を送信するように設定される。サーバコンピュータシステム（又はサーバファーム）は、リクエストを受信して処理し（例えば、リクエストされたデータにアクセスする）、適切なレスポンス（例えば、リクエストされたデータ）をクライアントに送り返す。
【０００４】
１つのクライアント−サーバの一般的な関係は、ワールドワイドウェブ（ＷＷＷ）である。ウェブサーバ（サーバ）は、インターネットを介してウェブブラウザ（クライアント）からリクエスト可能なコンテンツ（例えば、ウェブページ）へのアクセスを維持し制御する。
【０００５】
クライアント−サーバアーキテクチャは、主としてセントラルロケーションにデータが格納されていることにより多くの理由で有利である。例えば、データはセントラルロケーションに格納されているので、データについての安全確保及びアクセス制御を容易に実現することができる。更に、クライアントとサーバとの間の機能の明確な違いがあるので、サーバとの干渉オペレーションなしにクライアントのアップグレードを容易に行うことができ、その逆も同じである。
【０００６】
残念ながら、クライアント−サーバアーキテクチャには不利な点もある。第１の不利な点は、セントラルロケーションに格納されているデータに起因するロバスト性の欠如である。すなわち、サーバが機能しないならば、クライアントのリクエストを満たす方法がない。受信したリクエストの数が多くサーバリソースに過剰な負荷がかかるとき、サーバはトラフィック混雑の影響を受ける。更に、多くの環境でサーバを確立するためのリソースは、通常、大部分のホームコンピュータシステムのリソースを越えており、それにより多数のユーザはサーバを創設することが阻まれている。
【０００７】
ピアツーピアのネットワークアーキテクチャは、サーバ及びクライアントの概念を持っていない。ピアツーピアネットワークの各コンピュータシステムは対等なピアノードとみなされる。よって、ピアツーピアネットワークのアーキテクチャは、少数のサーバに（又は単一のサーバでさえ）リソースが集中することとは対照的に、ネットワーク内の全てのコンピュータシステムのコンピューティングパワー及びバンド幅に頼っている。ピアツーピアのネットワークアーキテクチャは、コンピュータシステムを互いに接続して、例えば、ファイルを共有したり、又はリアルタイムでデータを交換したりする等のアドホック(ad hoc)ネットワークを形成することに度々用いられる。
【０００８】
ピアツーピアのネットワークアーキテクチャは、主としてコンピュータシステム間でリソースが共有されていることにより多くの理由で有利である。例えば、新たなコンピュータシステムがピアツーピアネットワークに加わるとき、加わるコンピュータのリソースがピアツーピアネットワーク内の他のコンピュータシステムによって利用可能となるので、ネットワークのリソース容量が増加される。それに比べて、クライアント−サーバネットワークにおけるリソース容量は、新しいクライアントがサーバにリクエストを送信する場合でも増加しない。更に、リソースはコンピュータシステムの間で共有されるので、ピアツーピアネットワークはクライアント−サーバネットワークよりも一般的に強固である。すなわち、１つのコンピュータシステムがデータへのアクセスを失敗したとしても、１以上の他のコンピュータシステムがその同じデータにアクセスする可能性がある。
【０００９】
しかしながら、ピアツーピアネットワークには様々な不利な点が存在する。各コンピュータシステムが対等とみなされるので、１つのコンピュータシステムが他のコンピュータシステムの、例えば、アクセス制御又は他のセキュリティ対策を実行する等の動作を制御することは難しい。この中央制御の欠如により、ピアツーピアネットワークは、クライアント−サーバネットワークよりも悪意の攻撃（例えば、ポイゾニング攻撃、汚染攻撃、ＤｏＳ攻撃、スパムニング等）に対して弱くなっている。
【００１０】
更に、コンピュータシステムがピアツーピアネットワークに加わったり離れるときに実質的な制約がない。そのため、リクエスト可能なデータに対するロバスト性を維持するために、データの同じ部分がコンピュータシステムから何度もネットワーク（例えば、インターネット）を介してコンピュータシステムに転送される場合がある。例えば、コンピュータシステムがピアツーピアネットワークを離れるとき、リクエスト可能なデータは利用可能なままなので、そのコンピュータシステムはリクエスト可能なデータを他のコンピュータシステムに転送できる。従って、コンピュータシステムがピアツーピアネットワークを離れる度に、データの一部が残りのコンピュータシステムに（もしかすると２度、３度等）転送される。
【００１１】
企業向けのソフトウェアは、通常、クライアント−サーバネットワークのアーキテクチャで利用するために開発されている（よって、クライアント−サーバアーキテクチャ固有の問題に弱い）。企業向けのソフトウェアは、例えば、アカウンティング、セールス等のビジネス手順を自動化するためにしばしば用いられる専用の（proprietary）ソフトウェアである。従って、企業向けソフトウェアを開発する会社は、一般に、彼らの社内環境で使用するために制御されるべき企業向けソフトウェアを望んでいる。企業向けのソフトウェアは非常に複雑であり、意図された動作環境以外での使用には十分に適していない。よって、企業向けのソフトウェアは、しばしばウェブベースの環境における動作が妨げられ、それによりワールドワイドウェブ（ＷＷＷ）のシンプリシティ及びダイナミズムの利点も得られない。
【００１２】
やや逆説的に言えば、ウェブベースのアプリケーションは、インターネット全体を単一の（しかし制御されていない）データセンタとして見ることができ、ＷＷＷの至る所にロケーションからデータに容易にアクセスすることができる。アクセスしたデータに基づいて、ウェブベースのアプリケーションを容易にリミックスすることができ、開発者が要望する変化を容易にするための新しいセッティングを実行することができる。しかしながら、データは、潜在的で制御されていない様々なロケーションにアクセスでき、及びそのロケーションからアクセスされるので、早急に開発され、リミックスされたウェブベースのアプリケーションは（ピアツーピアアーキテクチャ特有の問題にある程度まで影響を受け）、関連するセキュリティ及び信頼性がしばしば望ましくない低いレベルにある。
【発明の概要】
【課題を解決するための手段】
【００１３】
本発明は、モデル化されたアプリケーションの分散動作の制御を実行するための方法、システム及びコンピュータプログラムプロダクトに関する。本発明の実施例は、分散ソフトウエアアプリケーションを実行するシステムを含んでいる。システムは複数の処理システムを含んでいる。分散ソフトウエアアプリケーションを実行するための設定可能な分散ロジックは、複数の処理システムに亘って分散される。
【００１４】
格納されたデータは分散ロジックに接続され、分散ロジック間で共有される。データ格納部はリード−オンリデータとリード−ライトデータとを含んでいる。リード−オンリデータは分散ソフトウエアアプリケーションの実行時に分散ロジックの動作を指示する。分散ソフトウエアアプリケーションの実行時に、複数の処理システムはリード−ライトデータを使用して分散ソフトウエアアプリケーションデータを格納及び共有する。
【００１５】
メッセージインフラストラクチャは分散ロジックに接続され、分散ロジック間で共有される。メッセージインフラストラクチャは、処理システム中でメッセージを交換するように設定され、ａ）分散ソフトウエアアプリケーションの実行中に用いる処理システムで設定可能な分散ロジックの存在を発見し、ｂ）処理システムを連係させて分散ソフトウエアアプリケーションを実行しているときリード−オンリデータにおいて指示された動作を実行する。
【００１６】
いくつかの実施形態においては、分散処理システムはモデル−ベースの分散ソフトウエアアプリケーションを実行する。分散処理システムは、分散アプリケーションルーチンを集合的に表す連携した（cooperative）実行サービスのグループを含む。分散ルーチンの実行サービスは、命令を受信して共通データリポジトリのリード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行する。実行サービスは、サービスバスとして識別される特定の種類のメッセージングインフラストラクチャを介して分散ランタイムの他の実行サービスを発見する。サービスバスは実行サービスが互いに信号を送る状態にする。実行サービス及び他の実行サービスは、連携して共に集まり、モデル−ベースのソフトウエアアプリケーションを実行するための分散ロジックを提供する。
【００１７】
実行サービスのグループはサービスバスを介して連係し、共通のデータリポジトリのリード−オンリ部に格納されたポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行する。モデル−ベースのソフトウエアアプリケーションの実行は、ａ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションの状態を反映し、ｂ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映する、ことを含む。
【００１８】
この概要は以下に詳細な説明で更に説明される簡単なフォームにおいてコンセプトの選択を導くために与えられる。この概要は請求項の構成の重要な特徴又は主たる特徴を認識することを意図しておらず、請求項の構成の範囲を決定する際の助けとして用いられることを意図していない。
【００１９】
本発明の追加の特徴及び利点は以下に続く詳細な説明に記載され、一部にその説明から自明であり、又は発明の慣行によって学習されても良い。本発明の特徴及び利点は請求項に特に指摘された手段及び組み合わせによって実現及び取得されても良い。本発明のそれら及び他の特徴は次の詳細な説明及び請求項から更に十分に明確になり、又は以降に記載されたように発明の慣行によって学習されても良い。
【００２０】
本発明の上記及びその他の利点及び特徴を得ることができる方法を説明するために、短く上記した本発明の更なる特定の説明は添付図面に示された実施形態について与えられる。それらの図面は本発明の一般的な実施形態だけを示し、よって、その範囲の限定であることを考慮されるべきでないことを理解し、本発明は添付図面を使用して追加の特異性及び詳細について説明される。
【図面の簡単な説明】
【００２１】
【図１】モデル化されたアプリケーションの分散動作制御実行を容易にするコンピュータアーキテクチャの例を示す図である。
【図２】動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行することを容易にするコンピュータアーキテクチャの例を示す図である。
【図３】動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行する方法のフローチャートを示す図である。
【発明を実施するための形態】
【００２２】
本発明はモデル化されたアプリケーションの分散動作制御実行のための方法、システム及びコンピュータプログラムプロダクトに関する。本発明の実施形態は分散ソフトウエアアプリケーションを実行するように設定されたシステムを含んでいる。そのシステムは複数の処理システムを含んでいる。分散ソフトウエアアプリケーションを実行する設定可能な分散ロジックはその複数の処理システムに亘って分散される。
【００２３】
格納されたデータは分散ロジックに接続され、分散ロジック間で共有される。データ格納部はリード−オンリデータとリード−ライトデータを含んでいる。リード−オンリデータは分散ソフトウエアアプリケーションを実行するとき分散ロジックの動作を指示する。分散ソフトウエアアプリケーションを実行するとき複数の処理システムはリード−ライトデータを使用して分散ソフトウエアアプリケーションデータを格納及び共有する。
【００２４】
メッセージインフラストラクチャは分散ロジックに接続され、分散ロジック間で共有される。メッセージインフラストラクチャは、処理システム中でメッセージを交換するように設定され、ａ）分散ソフトウエアアプリケーションの実行時に用いる処理システムで設定可能な分散ロジックの存在を発見し、ｂ）処理システムを連係させて分散ソフトウエアアプリケーションの実行時にリード−オンリデータにおいて指示された動作を実行する。
【００２５】
いくつかの実施形態においては、分散処理システムはモデル−ベースの分散ソフトウエアアプリケーションを実行する。分散処理システムは、分散アプリケーションランタイムを集合的に表す連携した実行サービスのグループを含む。分散ランタイムの実行サービスは、命令を受信して共通データリポジトリのリード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行する。実行サービスは、サービスバスとして識別される特定の種類のメッセージングインフラストラクチャを介して分散ランタイムの他の実行サービスを発見する。サービスバスは実行サービスが互いに信号を送る状態にする。実行サービス及び他の実行サービスは、連携して共に集まり、モデル−ベースのソフトウエアアプリケーションを実行するための分散ロジックを提供する。
【００２６】
実行サービスのグループは、サービスバスを介して連係し、共通のデータリポジトリのリード−オンリ部に格納されたポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行する。モデル−ベースのソフトウエアアプリケーションの実行は、ａ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションの状態を反映し、ｂ）共通データリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映する、ことを含む。
【００２７】
本発明の実施形態は、以下により詳細に説明されるようにコンピュータハードウエアを含む特定の目的又は一般的な目的のコンピュータを備える。本発明の範囲内の実施形態はコンピュータ実行可能な格納された命令又はデータ構造を担う又は有するコンピュータ可読記憶媒体を含む。そのようなコンピュータ可読記憶媒体は一般的な目的又は特定の目的のコンピュータによってアクセスできる利用可能な媒体である。例として、限定されないが、コンピュータ可読記憶媒体は、ＲＡＭ，ＲＯＭ，ＥＥＰＲＯＭ，ＣＤ−ＲＯＭ又は他の光学ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置等の物理的（又は記録可能なタイプ）コンピュータ可読記憶媒体、又はコンピュータ実行可能命令又はデータ構造の形で所望のプログラムコード手段を格納するために用いることができ、かつ一般的な目的又は特定の目的のコンピュータによってアクセスできる他の媒体を備える。
【００２８】
この詳細な説明において、及びそれに続く特許請求の範囲において、「ネットワーク」はコンピュータシステム及び／又はモジュール間で電子データの輸送を可能にする１以上のデータリンクとして定義される。情報がネットワーク又は他の通信接続（有線、無線又は有線又は無線の組み合わせのいずれか）を介してコンピュータに転送又は提供されるとき、そのコンピュータはコンピュータ可読媒体としてその接続を適切に見なす。よって、例として及び限定されないが、コンピュータ可読媒体は、コンピュータ実行可能な命令又はデータ構造の形で所望のプログラムコード手段を担う又は格納するために用いることができ、かつ一般的な目的又は特定の目的のコンピュータによってアクセスできるネットワーク又はデータリンクを備える。
【００２９】
コンピュータ実行可能命令は、例えば、一般的な目的のコンピュータ、特定の目的のコンピュータ又は特定の目的の処理装置に所定の機能又は機能グループを実行させる命令及びデータを備える。コンピュータ実行可能命令は例えば、アセンブリ言語又はソースコード等の２進化、中間フォーマット命令である。構成要件は構成上の特徴及び／又は方法論的な動作に特有の言葉で説明されているが、特許請求の範囲に定義された構成要件は上記の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、上記の特徴及び動作は請求項を実行する一例の形態として記載されている。
【００３０】
本発明がパーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベース又はプログラマブルコンシューマーエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、モバイルテレフォン、ＰＤＡ、ページャ等の多数種類のコンピュータシステム構成を有するネットワークコンピューティング環境で使用できることをこの分野の当業者には十分に理解され得る。また、本発明はネットワークを介して（有線のデータリンク、無線のデータリンク又は有線及び無線のデータリンクの組み合わせのいずれかによって）リンクされているローカル及びリモートコンピュータシステムが共にタスクを行う分散システム環境で使用できる。分散システム環境では、プログラムモジュールをローカル及びリモートメモリ記憶装置両方に配置することができる。
【００３１】
図１はモデル化されたアプリケーションの分散動作制御実行を容易にするコンピュータアーキテクチャ１００を例示している。コンピュータアーキテクチャ１００はデータ格納部１０１、処理システム１０４，１０５，１０６及びメッセージインフラストラクチャ１０８を示している。示されたコンポーネントの各々は、例えば、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）及びインターネット等のネットワークを介して互いに接続されている。よって、データ格納部１０１、処理システム１０４，１０５，１０６及びメッセージインフラストラクチャ１０８は他の接続されたコンポーネントと共にネットワークを介してメッセージ関連データ及び交換メッセージ関連データ（例えば、インターネットプロトコル（ＩＰ）データグラム及びＩＰデータグラムを用いる、トランスミッションコントロールプロトコル（ＴＣＰ）、ハイパテキストトランスファプロトコル（ＨＴＴＰ）、シンプルメールトランスファプロトコル（ＳＭＴＰ）等の他のより高い層のプロトコル）を作成することができる。
【００３２】
処理システム１０４、１０５、１０６は各々ロジック１０４Ｌ、１０５Ｌ、１０６Ｌを含んでいる。ロジック１０４Ｌ、１０５Ｌ、１０６Ｌは集合して分散ロジック１０７を表している。分散ロジック１０７は処理システム１０４、１０５、１０６に分散されている分散ソフトウエアアプリケーションを実行するために設定可能である。
【００３３】
データ格納部１０１は分散ロジック１０７に接続され、分散ロジック１０７間で共有されている。示されたように、データ格納部１０１は、リード−オンリデータ１０２とリード−ライトデータ１０３とを含んでいる。リード−オンリデータ１０２はデータ格納部１０１に初期に書き込まれ（ライトワンス）、そして初期書き込み後、読み出しされるだけのデータである。リード−オンリデータは、分散ソフトウエアアプリケーションを実行するとき分散ロジック１０７の動作を指示することができる。処理システム１０４、１０５、１０６は（含んでいるロジック１０４Ｌ、１０５Ｌ、１０６Ｌと共に）、分散ソフトウエアアプリケーションを実行するときリード−ライトデータ１０３を用いて分散ソフトウエアアプリケーションを格納及び共有することができる。
【００３４】
処理システム１０４の左及び処理システム１０６の右の連続の３つのピリオド（省略符号）は、他の処理システムをコンピュータアーキテクチャ１００に含むことができることを表している。それらの他の処理システムはロジックを分散ロジック１０７に与えることができる。
【００３５】
メッセージインフラストラクチャ１０８は分散ロジック１０７に接続され、分散ロジック１０７間で共有される。メッセージインフラストラクチャ１０８は処理システム１０４、１０５、１０６間でメッセージを交換するように設定される。分散アプリケーションを実行するときに用いる処理システム１０４、１０５、１０６でメッセージインフラストラクチャ１０８を用いて、例えば、ロジック１０４Ｌ、１０５Ｌ、１０６Ｌ等の設定可能な分散ロジックの存在を発見することができる。また、分散アプリケーションを実行するとき、リード−オンリデータ１０２で指示される動作を実行するようにメッセージインフラストラクチャ１０８を用いて処理システム１０４、１０５、１０６を連係させることができる。いくつかの実施形態では、メッセージインフラストラクチャ１０８はピアツーピアディスカバリ及びメッセージング（シグナリング）インフラストラクチャである。
【００３６】
よって、本発明の実施形態は様々なピアツーピア機能性と共に中央データ収納部の相互動作を容易にする。これにより、中央データ格納部及びピアツーピアメッセージング両方の利点を利用する環境において分散アプリケーションを実行することができる。分散ソフトウエアアプリケーションの実行の間に中央データ格納部のリード−オンリ部を用いて様々な処理システムに動作制御を与えることができる。
【００３７】
図２は動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行することを容易にするコンピュータアーキテクチャ２００を例示している。コンピュータアーキテクチャ２００はリポジトリ２０１、実行サービス２０４、２０５、２０６及びサービスバス２０８を示している。示したコンポーネントの各々は例えば、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）及びインターネット等のネットワークを介して互いに接続されている。よって、リポジトリ２０１、実行サービス２０４、２０５、２０６及びサービスバス２０８は他の接続されたコンポーネントと共にネットワークを介してメッセージ関連データ及び交換メッセージ関連データ（例えば、インターネットプロトコル（ＩＰ）データグラム及びトランスミッションコントロールプロトコル（ＴＣＰ）、ハイパテキストトランスファプロトコル（ＨＴＴＰ）、シンプルメールトランスファプロトコル（ＳＭＴＰ）等のＩＰデータグラムを用いる、他のより高い層のプロトコル）を作成することができる。
【００３８】
実行サービス２０４、２０５、２０６はネットワークの各所に配置することができる。実行サービス２０４，２０５，２０６は分散アプリケーションを実行及び管理することに関与する。実行サービス２０４の左及び実行サービス２０６の右の連続の３つのピリオド（省略符号）は、他の実行サービスをコンピュータアーキテクチャ２００に含むことができることを表している。
【００３９】
リポジトリ２０１はリード−オンリ（又はライトワンス）データ２０２とリード−ライトデータ２０３とを含んでいる。リード−オンリデータ２０２はアプリケーションモデル２１１とポリシ２１２とを更に含んでいる。アプリケーションモデル２１１及びポリシ２１２は、例えば、実行サービス２０４、２０５、２０６等の実行サービス間で共有される。ポリシ２１２は実行サービスの集合的動作を定義する宣言ステートメントである。例えば、ポリシは実行サービスから送信可能な１秒当たりの最大メッセージ数（例えば、２０）を定義することができる。
【００４０】
よって、コンピュータアーキテクチャ２００の各実行サービスはポリシ２１２を解釈して対応する。実行サービスでは、ポリシ２１２に定義されるようにローカル動作にいくらかの自由度が確保されている。例えば、実行サービスでは、例えば処理の再起動等のローカルエラーリカバリを行うことが可能である。しかしながら、例えば、ディスク障害等の他の更なる重大及び／又は複雑なエラーは、適切なリカバリ（例えば、アプリケーションコンポーネントの再展開）のために多数の実行サービスに影響を与える。よって、それらの他の更なる重大及び／又は複雑なエラーからのリカバリは、多数の実行サービスの集合的動作を含むことができる。よって、各実行サービスでは、それらの更なる重大及び／又は複雑なエラーに対するリカバリを始めることを禁止することができる。
【００４１】
アプリケーションモデル２１１は、分散アプリケーションを実行するために実行サービスの集合体によって消費されるアプリケーションモデルを含んでいる。例えば、アプリケーションモデルは実行サービスの集合体によって動作及び管理される宣言プログラムである。
【００４２】
リード−ライトデータ２０３は、アプリケーションステート２１３とオペレーショナルデータ２１４とを更に含んでいる。アプリケーションステート２１３は、例えば、設定した、展開した、動作している等の分散アプリケーション（例えば、アプリケーションモデル２１１からのアプリケーションモデル）の状態を反映することができる。オペレーショナルデータ２１４は、ポリシ２１２とのコンプライアンスを定めるために用いられる、例えば、ランタイムメトリクス等の情報を含むことができる。例えば、オペレーショナルデータ２１４は、実行サービスが秒当たりに送信するメッセージの数の表示を含むことができる。実行サービスは、分散アプリケーションのランタイム動作に基づいてオペレーショナルデータ２１４にオペレーショナルデータを書き込むことができる。
【００４３】
実行サービスは、サービスバス２０８（例えば、分散パブリッシュ／サブスクライブインフラストラクチャ等のピアツーピアファブリック）を用いて互いに発見し、連携した動作を実行することができる。サービスバス２０８は、トランシティブに連合したネームスペースサービス（互いに連合することを実行サービスに可能にするサービス）と、メッセージバスとを含む。例えば、サービスバス２０８を介した通信によって実行サービス２０４、２０５、２０６はクラスタを集合的に形成することができ、（例えば、アプリケーションモデル２１１に含まれた）分散アプリケーションのモデルに示されるようにウェブサイトのホストを務める。
【００４４】
１つの実行サービスの突発的な故障が起きたとき他の連携的動作を実行することができる。１以上の正常な「ブディ(buddy)」実行サービスがサービスバス２０８を介して信号を送り、他の実行サービスを引き継ぎのために（例えば、投票（vote）を介して）選択してエラーから回復する。
【００４５】
示されたように、実行サービス２０４、２０５、２０６は各々コントローラ２０４Ｃ、２０５Ｃ、２０６Ｃを含んでいる。一般に、コントローラはポリシ（例えば、ポリシ２１２）を解釈し、実行サービス間の連携的動作を実行する。例えば、コントローラは「ブディ」実行サービス後に「ルッキング（looking）」を実行でき、例えば、動作中の分散アプリケーションの一部に含まれるローカルサービス（例えば、ＩＩＳ（インターネットインフォメーションサービス）又はＳＱＬサーバ）を中断することの試み等の否定的なローカル動作を抑制することを実行する。
【００４６】
よって、本発明の実施形態は全ての実行サービスがポリシ及びアプリケーションモデルについて同じビューを有し、他の実行サービスを発見して信号を送ることができる環境を含んでいる。よって、例えば、コンピュータアーキテクチャ２００等の環境において実行サービスの集合グループ（又はその全て）を動作させるために、１つの実行サービスとインターラクションを行うことができる。
【００４７】
図３は、動作実行ポリシに応じて分散実行ロジックでアプリケーションを実行する方法３００のフローチャートの例を示している。その方法３００は、コンピュータアーキテクチャ２００におけるコンポーネント及びデータについて記述されている。
【００４８】
方法３００は、共通のデータリポジトリのリード−オンリ部に格納されたモデル−ベースのソフトウエアアプリケーションを実行するために命令を受信する、分散ランタイムの実行サービスの動作を含んでいる（動作３０１）。例えば、実行サービス２０４は実行命令２２１を受信してアプリケーション２１１Ａを実行することができる。
【００４９】
方法３００は、サービスバスを介して分散ランタイムの他の実行サービスを発見する実行サービスの動作を含んでいる（動作３０２）。例えば、実行サービス２０４は、サービスバス２０８を介してメッセージ交換２２２、２２３によって実行サービス２０５、２０６を各々発見することができる。
【００５０】
方法３００は、モデル−ベースのソフトウエアアプリケーションを実行する分散ロジックを与えるため、共に連携して（cooperatively）グループ化する実行サービスおよび他の実行サービスの動作を含んでいる（動作３０３）。例えば、実行サービス２０４と実行サービス２０５、２０６とは、アプリケーション２１１Ａを実行する分散ロジックを与えるために、（例えば、ポリシ２１２に応じて）共に連携してグループ化することができる。
【００５１】
方法３００は、共通のデータリポジトリのリード−オンリ部に格納されたポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行するためにサービスバスを介して連係する実行サービスのグループの動作を含んでいる（動作３０４）。例えば、実行サービス２０４、２０５、２０６のグループは、ポリシ２１２に応じてアプリケーション２１１Ａを実行するためにサービスバス２０８を介して連係することができる。
【００５２】
ポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行するために、サービスバスを介した連係は、共通のデータリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションの状態を反映する動作を含んでいる（動作３０５）。例えば、実行サービス２０４、２０５、２０６はアプリケーション２１１の状態（例えば、設定した、展開した、動作している等）を反映するためにアプリケーション状態２１３にデータを書き込み、アプリケーション状態２１３からデータを読み出すことができる。
【００５３】
ポリシに応じてモデル−ベースのソフトウエアアプリケーションを実行するために、サービスバスを介した連係は、共通のデータリポジトリのリード−ライト部を用いてモデル−ベースのソフトウエアアプリケーションに対応するオペレーショナルデータを反映する動作を含んでいる（動作３０６）。例えば、実行サービス２０４、２０５、２０６はアプリケーション２１１に対応するランタイムメトリックス（例えば、平均応答時間、秒当たりのメッセージ等）を反映するためにオペレーショナルデータ２１４にデータを書き込み、オペレーショナルデータ２１４からデータを読み出すことができる。ポリシ２１２とのコンプライアンスを定めるためにランタイムメトリックスを用いることができる。
【００５４】
よって、本発明の実施形態は、モデル−ベースのアプリケーション用の分散した非集中型ランタイムを形成するノードのポリシ駆動の集合体を形成するために用いることができる。各ノードのコントローラはポリシを実行し他のノードと連係することができる。中央に集められた（centralized）ポリシに従い、ピアツーピアファブリックを介してアプリケーションを実行する連携したノードの集合体を利用することは、分散アプリケーションランタイムを大スケールでの分散及び非集中化に適応させることを可能にする。例えば、大スケールのＷＡＮ又はインターネットでさえデータセンタとして見ることができる。
【００５５】
本発明はその精神又は本質的な特性から離れることなく他の特定の形に具現化されても良い。説明した実施形態は説明の全ての箇所だけにおいて制限なく考慮されるべきである。よって、本発明の範囲は上記の説明よりむしろ請求項によって示される。請求項と同等の意味及び範囲内に入る全ての変更は本発明の範囲内に包含されるべきである。