(57)【要約】  本発明は、宣言的モデルを変換するための方法、システム、およびコンピュータ・プログラム生成物に関する。本発明の実施形態は、例えばアプリケーションの開発、アプリケーションの更新、開始および停止などのアプリケーションの制御、アプリケーションにイベントを発信するように指示することによるアプリケーションのモニタリングなど、アプリケーションにおける様々な動作を実行するための宣言的モデルの処理を容易にする。アプリケーションの宣言的モデルは、これらが実行、制御、モニタリングされた後、対象の環境へと処理され実現される。
2011502309.tif 000002
【特許請求の範囲】
【請求項１】
複数の異なる技術を含むコンピューティング環境内のコンピュータ・システムにおいて、前記コンピューティング環境内でモデル（３５３）を変換して、受信したコマンド（３２９）を実装するための方法であって、前記コンピュータ・システムは、異なる技術の特定の組合せに対するモデル（３５３）を処理するように各々構成された、１つまたは複数のドライバ（３４２、３５２）を含み、前記コンピュータ・システムは、前記複数の異なる技術のうち特定の技術におけるオブジェクトを表すモデル要素（３５４Ａ、３５４Ｂ、３５４Ｃ）を処理するように各々構成された、１つまたは複数のトランスレータ（３６１、３７１、３８１）を含み、前記方法は、
宣言的モデル（３５３）をコマンド（３２９）とともに受信する動作であって、前記宣言的モデル（３５３）および前記コマンド（３２９）は一体的に、該受信した宣言的モデル（３５３）に基づいてアプリケーションに対する前記コマンド（３２９）を実装する目的を示す動作と、
前記受信した宣言的モデル（３５３）で示された技術の組合せに対応する宣言的モデルを処理するように構成されたドライバ（３４２）を識別する動作と、
前記受信した宣言的モデル（３５３）および前記コマンド（３２９）を前記識別されたドライバ（３４２）に転送する動作と、
前記識別されたドライバ（３４２）が前記受信した宣言的モデル（３５３）を解析して、モデル要素（３５４Ａ、３５４Ｂ、３５４Ｃ）および前記モデル要素間の関係を識別する動作と、
前記識別されたモデル要素ごとに、
前記識別されたモデル要素に対応する特定の技術に対するモデル要素を変換するように構成されたたトランスレータ（３６１、３７１、３８１）を識別する動作と、
前記モデル要素を前記識別されたトランスレータに送信する動作と、
前記アプリケーションに対する前記コマンド（３２９）を部分的に実装するために前記特定の技術において実行されるべきアクションのシーケンス（３６３、３７３、３８３）を受信する動作であって、該アクションのシーケンスは、前記コマンドを完全に実装するために実行されるべきアクション全体のサブセットである動作と、
前記モデル要素に対する前記受信したアクションのシーケンスを編成して、実行プラン（３４４）にする動作であって、前記受信したアクションのシーケンスは、前記受信した宣言的モデルにおける前記モデル要素の他のモデル要素に対する関係に基づいた、前記他のモデル要素について受信したアクションのシーケンスに関する指定の順序で、前記実行プランに編成される動作と、
前記実行プラン（３４４）を実行して前記アプリケーション対する前記コマンド（３２９）を実装する動作であって、前記実行プラン（３４４）の実行は、モデル要素ごとに受信した前記アクションのシーケンス（３６３、３７３、３８３）を前記指定の順序で実行することを含む動作と
を含むことを特徴とする方法。
【請求項２】
宣言的モデルをコマンドとともに受信する動作は、前記宣言的モデルに基づいてアプリケーションをデプロイするためのコマンドを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項３】
宣言的モデルをコマンドとともに受信する動作は、前記宣言的モデルに基づいてアプリケーションをアンデプロイするためのコマンドを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項４】
宣言的モデルをコマンドとともに受信する動作は、前記宣言的モデルに基づいてアプリケーションを開始するためのコマンドを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項５】
宣言的モデルをコマンドとともに受信する動作は、前記宣言的モデルに基づいてアプリケーションを停止するためのコマンドを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項６】
宣言的モデルをコマンドとともに受信する動作は、前記宣言的モデルに基づいてアプリケーションのモニタリングを開始または終了するためのコマンドを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項７】
宣言的モデルをコマンドとともに受信する動作は、前記宣言的モデルに基づいてアプリケーションを更新するためのコマンドを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記特定の技術において実行されるべきアクションのシーケンスを受信する動作は、冪等なアクションのシーケンスを受信する動作を含むことを特徴とする請求項１に記載の方法。
【請求項９】
複数の異なる技術を含むコンピューティング環境内のコンピュータ・システムで使用し、および前記コンピューティング環境内でモデルを変換して受信したコマンドを実装するための方法を実装するためのコンピュータ・プログラム生成物であって、前記コンピュータ・システムは、異なる技術の特定の組合せに対するモデルを処理するように各々構成された１つまたは複数のドライバを含み、前記コンピュータ・システムは、前記複数の異なる技術のうち特定の技術におけるオブジェクトを表すモデル要素を処理するように各々構成された１つまたは複数のトランスレータを含み、前記コンピュータ・プログラム生成物は、プロセッサにおいて実行されると前記コンピュータ・システムに前記方法を実行させるコンピュータ実行可能命令を記録した１つまたは複数の物理記録媒体を備え、前記方法は、
宣言的モデルをコマンドとともに受信する動作であって、前記宣言的モデルおよび前記コマンドは一体的に、該受信した宣言的モデルに基づいてアプリケーションに対する前記コマンドを実装する目的を示す動作と、
前記受信した宣言的モデルで示された技術の組合せに対応する宣言的モデルを処理するように構成されたドライバを識別する動作と、
前記受信した宣言的モデルおよび前記コマンドを前記識別されたドライバに転送する動作と、
前記受信した宣言的モデルを解析して、モデル要素と前記モデル要素間の関係とを識別する動作と、
前記識別されたモデル要素ごとに、
前記識別されたモデル要素に対応する特定の技術に対するモデル要素を変換するように構成されたトランスレータを識別する動作と、
前記モデル要素を前記トランスレータに送信する動作と、
前記アプリケーションに対する前記コマンドを部分的に実装するために前記特定の技術において実行されるべきアクションのシーケンスを受信する動作であって、前記アクションのシーケンスは、前記コマンドを完全に実装するために実行されるべきアクション全体のサブセットである動作と、
前記モデル要素に対する前記受信したアクションのシーケンスを実行プランに編成する動作であって、前記受信したアクションのシーケンスは、前記受信した宣言的モデルにおける前記モデル要素の他のモデル要素に対する関係に基づいた、前記他のモデル要素について受信したアクションのシーケンスに関する指定の順序で、前記実行プランに編成される動作と、
前記実行プランを実行して前記アプリケーションに対する前記コマンドを実装する動作であって、前記実行プランの実行は、前記モデル要素ごとに受信した前記アクションのシーケンスを前記指定の順序で実行することを含む動作と
を含むことを特徴とするコンピュータ・プログラム生成物。
【請求項１０】
実行されると前記コンピュータ・システムに宣言的モデルをコマンドとともに受信する動作を実行させるコンピュータ実行可能命令は、実行されると前記コンピュータ・システムに前記宣言的モデルに基づいてアプリケーションをデプロイするためのコマンドを受信する動作を実行させるコンピュータ実行可能命令を含むことを特徴とする請求項９に記載のコンピュータ・プログラム生成物。
【請求項１１】
実行されると前記コンピュータ・システムに宣言的モデルをコマンドとともに受信する動作を実行させるコンピュータ実行可能命令は、実行されると前記コンピュータ・システムに前記宣言的モデルに基づいてアプリケーションをアンデプロイするためのコマンドを受信する動作を実行させるコンピュータ実行可能命令を含むことを特徴とする請求項９に記載のコンピュータ・プログラム生成物。
【請求項１２】
実行されると前記コンピュータ・システムに宣言的モデルをコマンドとともに受信する動作を実行させるコンピュータ実行可能命令は、実行されると前記コンピュータ・システムに前記宣言的モデルに基づいてアプリケーションを開始するためのコマンドを受信する動作を実行させるコンピュータ実行可能命令を含むことを特徴とする請求項９に記載のコンピュータ・プログラム生成物。
【請求項１３】
実行されると前記コンピュータ・システムに宣言的モデルをコマンドとともに受信する動作を実行させるコンピュータ実行可能命令は、実行されると前記コンピュータ・システムに前記宣言的モデルに基づいてアプリケーションを停止するためのコマンドを受信する動作を実行させるコンピュータ実行可能命令を含むことを特徴とする請求項９に記載のコンピュータ・プログラム生成物。
【請求項１４】
実行されると前記コンピュータ・システムに宣言的モデルをコマンドとともに受信する動作を実行させるコンピュータ実行可能命令は、実行されると前記コンピュータ・システムに前記宣言的モデルに基づいてアプリケーションのモニタリングを開始または終了するためのコマンドを受信する動作を実行させるコンピュータ実行可能命令を含むことを特徴とする請求項９に記載のコンピュータ・プログラム生成物。
【請求項１５】
実行されると前記コンピュータ・システムに宣言的モデルをコマンドとともに受信する動作を実行させるコンピュータ実行可能命令は、実行されると前記コンピュータ・システムに前記宣言的モデルに基づいてアプリケーションを更新するためのコマンドを受信する動作を実行させるコンピュータ実行可能命令を含むことを特徴とする請求項９に記載のコンピュータ・プログラム生成物。
【請求項１６】
実行されると前記コンピュータ・システムに宣言的モデルをコマンドとともに受信する動作を実行させるコンピュータ実行可能命令は、実行されると前記コンピュータ・システムに冪等なアクションのシーケンスを受信する動作を実行させるコンピュータ実行可能命令を含むことを特徴とする請求項９に記載のコンピュータ・プログラム生成物。
【請求項１７】
複数の異なる技術を含むコンピューティング環境内のコンピュータ・システムにおいて、前記コンピューティング環境内のモデル・ベースのアプリケーションを更新するための方法であって、前記コンピュータ・システムは、特定の組合せの異なる技術に対するモデルを処理するように各々が構成された１つまたは複数のドライバを含み、前記コンピュータ・システムは、前記複数の異なる技術のうち特定の技術におけるオブジェクトを表すモデル要素を処理するように各々が構成された１つまたは複数のトランスレータを含み、前記方法は、
宣言的モデルを更新コマンドとともに受信する動作であって、前記宣言的モデルおよび前記更新コマンドは一体的に、以前のバージョンの受信した宣言的モデルに基づいてアプリケーションを更新するという目的を示す動作と、
前記受信した宣言的モデルに対する現在の実行プランを編成する動作であって、前記現在の実行プランは、前記受信した宣言的モデルにおけるモデル要素間の関係に基づいた指定の順序で編成されたアクションのシーケンスを含む動作と、
前記以前のバージョンの受信した宣言的モデルにアクセスする動作と、
前記以前のバージョンの受信した宣言的モデルに対する以前の実行プランを編成する動作であって、前記以前の実行プランは、前記以前のバージョンの受信した宣言的モデルにおけるモデル要素間の関係に基づいた指定の順序で編成された以前のアクションのシーケンスを含む動作と、
前記現在の実行プランを前記以前の実行プランと比較する動作と、
前記比較結果に基づいて、前記アプリケーションを更新するための新たな実行プランを導出する動作と、
前記新たな実行プランを実行して、前記コンピューティング環境内の前記アプリケーションを更新する動作と
を含むことを特徴とする方法。
【請求項１８】
前記比較結果に基づいて前記アプリケーションを更新するための新たな実行プランを導出する動作は、前記現在の実行プランと前記以前の実行プランの両方に含まれる少なくとも１つのアクションに対する更新アクションを前記新たな実行プランに含める動作を含み、前記更新アクションは、前記現在の実行プランからのアクションに従って前記以前の実行プランからのアクションを更新することであることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記比較結果に基づいて前記アプリケーションを更新するための新たな実行プランを導出する動作は、前記現在の実行プランのみに含まれる少なくとも１つのアクションを前記新たな実行プランに含めることを含むことを特徴とする請求項１７に記載の方法。
【請求項２０】
前記比較結果に基づいて前記アプリケーションを更新するための新たな実行プランを導出する動作は、前記以前の実行プランのみに含まれる少なくとも１つのアクションに対する逆アクションを前記現在の実行プランに含めることを含み、前記逆アクションは、前記コンピューティング環境内における前記少なくとも１つのアクションの影響を排除することを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、宣言的モデル（declarative model）の変換に関する。
【背景技術】
【０００２】
コンピュータ・システムおよび関連する技術は、社会の多くの側面に影響を及ぼしている。実際、情報を処理するコンピュータ・システムの能力は我々の生活および仕事の様式を変化させた。コンピュータ・システムは今や普通に、コンピュータ・システムが出現する前は手作業で行われていた大量のタスク（例えば、文書処理、スケジューリング、会計処理など）を実施している。最近では、コンピュータ・システムは、互いにおよび他の電子装置に結合されて、そのコンピュータ・システムおよび他の電子装置が電子データを転送できる有線コンピュータ・ネットワークおよび無線コンピュータ・ネットワークの両方を形成している。従って、多数のコンピューティング・タスクの動作は、複数の異なるコンピュータ・システムおよび／または複数の異なるコンピューティング・コンポーネントに渡って分散されている。
【０００３】
コンピュータ化されたシステムの大衆性が高まると、そのようなシステムにおいて使用されるソフトウェアおよびハードウェアの複雑性も増す。一般に、より複雑に見えるソフトウェアの必要性は増大し続けており、この必要性がさらに、ハードウェアのさらなる開発を後押しする力の１つとなる傾向がある。例えば、アプリケーション・プログラムが所与のハードウェア・システムにあまりに多くのことを要求すると、ハードウェア・システムの動作が非効率的なるか、あるいはハードウェア・システムがアプリケーション・プログラムを全く処理できなくなる可能性がある。しかし、アプリケーション・プログラムの開発における近年の傾向では、分散アプリケーション・プログラムを少なくとも部分的に用いることで、これらのタイプのハードウェア制約の多くが取り除かれてきている。一般に、分散アプリケーション・プログラムは、幾つかの異なるハードウェア・コンポーネント上で実行されるコンポーネントを備え、これらのコンポーネントはしばしば階層型環境内の異なるコンピュータ・システム上にある。
【０００４】
分散アプリケーション・プログラムを用いると、異なるコンピュータ・システムは、様々な処理結果を互いにネットワークを介して通信することができる。これらの通信に沿って、組織は分散アプリケーション・サーバを使用して、幾つかの異なる分散アプリケーション・プログラムを多数の異なるコンピュータ・システムを介して管理することとなる。例えば、ユーザが或る分散アプリケーション・サーバを使用して、１組の異なるコンピュータ・システム上で実行される電子商取引アプリケーション・プログラムの動作を管理することがある。ユーザが、上記分散アプリケーション・サーバを使用して、同じ１組のコンピュータ・システムまたは異なる１組のコンピュータ・システム上の顧客管理アプリケーション・プログラムの実行を管理することもある。
【０００５】
当然、分散アプリケーション・サーバを介して管理される各々の対応する分散アプリケーションは同様に、異なる（場合によっては異なって構成される）ネットワーク接続上の他のさらに異なる（場合によっては異なって構成される）コンピュータ・システム上で実行される、幾つかの異なるモジュールおよびコンポーネントを有することができる。したがって、幾つかの異なるコンピュータ・システムを介して処理能力を組み合わせるこの能力は利点である一方で、アプリケーション・プログラム・モジュールを分散させることに関連する様々な複雑性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、従来の分散アプリケーション・プログラム・サーバは、一般に、効率的なスケーラビリティをもつように構成されていない。すなわち、ほとんどの分散アプリケーション・サーバは、正確な参照および／またはコンポーネント・アドレス指定スキーマなどの、所与の分散アプリケーション・プログラムの正確な命令を管理するように構成されている。従って、典型的に、アプリケーション・プログラムのコンポーネント間には比較的密な結合が存在する。従って、管理者が、ある特定のモジュールまたはコンポーネントを別のサーバまたは別の１組のコンピュータ・システムに再デプロイ（redeploy）したいとき、（例えば、ネットワーク・プロトコル、システム構成などの相違に起因して）再デプロイによりエラーが引き起こされる可能性が、常に幾らか（場合によっては多く）存在する。これらのエラーは、メッセージが、該メッセージが必要とされる全ての場所には渡されないとき、または該メッセージが不正確に渡される場合に生ずる可能性がある。
【課題を解決するための手段】
【０００７】
本発明は、宣言的モデルを変換するための方法、システム、コンピュータ・プログラム生成物に及ぶ。コンピュータ・システムは１つまたは複数のドライバを含む。各ドライバは、異なる技術の特定の組合せに対するモデルを処理するように構成される。コンピュータ・システムは１つまたは複数のトランスレータも備える。各トランスレータは、複数の異なる技術のうち特定の技術においてオブジェクトを表すモデル要素を処理するように構成される。
【０００８】
一部の実施形態では、コンピュータ・システムは、宣言的モデルをコマンドとともに受信する。宣言的モデルおよびコマンドは一体的に、受信した宣言的モデルに基づいてアプリケーションに対するコマンドを実装するという目的（intent）を表す。コンピュータ・システムは、受信した宣言的モデルにおいて示される技術の組合せに対応する宣言的モデルを処理するように構成された、ドライバを識別する。コンピュータ・システムは、受信した宣言的モデルおよびコマンドを、識別されたドライバに転送する。識別されたドライバは、受信した宣言的モデルを解析して、モデル要素、およびモデル要素の相互間の関係を識別する。
【０００９】
識別されたモデル要素ごとに、コンピュータ・システムは、識別されたモデル要素に対応する特定の技術に対するモデル要素を変換するように構成されたトランスレータを識別する。コンピュータ・システムは、識別されたモデル要素ごとに、該モデル要素を上記識別されたトランスレータに送信する。識別されたモデル要素ごとに、コンピュータ・システムは、アプリケーションに対するコマンドを部分的に実装するのに特定の技術において実行されるべきアクションのシーケンスを受信する。受信したアクションのシーケンスは、コマンドを完全に実装するのに実行されるべき全アクションのサブセットである。
【００１０】
コンピュータ・システムは、宣言的モデル内で識別されたモデル要素について上記受信したアクションのシーケンスを、実行プラン（execution plan）に編成する（assemble）。上記受信したアクションのシーケンスは、他のモデル要素について受信したアクションのシーケンスに関する指定の順序で、実行プランに編成される。この指定の順序は、受信した宣言的モデルにおける、そのモデル要素の他のモデル要素に対する関係に基づく。コンピュータ・システムは上記実行プランを実行して、アプリケーションに対するコマンドを実装する。実行プランの実行は、受信したアクションのシーケンスを、モデル要素ごとに指定の順序で実行することを含む。
【００１１】
他の実施形態では、アプリケーションに関する現在の実行プランと以前の実行プランを比較する。比較の結果を使用して新たな実行プランを導出する。新たな実行プランの導出には、現在の実行プランに含まれるアクションまたは含まれないアクションに基づいて、以前の実行プランからのアクションを追加、削除、更新、および反転することを含まれうる。
【００１２】
この課題を解決するための手段の記載は、下記の発明を実施するための形態においてさらに説明される概念の選択を簡潔な形で導入するために提供される。この課題を解決するための手段の記載は、特許請求される主題の主要な特徴または本質的な特徴を特定するように目的されたものではなく、特許請求される主題の範囲を決定する際の助けとして使用されることも目的されていない。
【００１３】
本発明の追加の特徴および利点を以下の記述において説明するが、その一部は、以下の記述から明らかになるか、または本発明を実施することにより習得されうる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘した手段および組合せにより実現して得ることができる。本発明のこれらおよび他の特徴は、下記の記述および添付の特許請求の範囲からより完全に明らかになるか、または以降に説明されるように本発明を実施することにより習得される。
【００１４】
本発明の上記ならびに他の利点および特徴が得えられる手法を説明するために、上で簡単に説明した本発明に関するより具体的な説明を、添付の図面に図示される具体的な実施形態を参照して行う。本発明は、添付の図面を使用してさらに具体的および詳細に記述し説明されるが、これらの図面は本発明の典型的な実施形態を示すものにすぎず、従って本発明の範囲を限定するものとみなされるべきではないことを理解されたい。
【図面の簡単な説明】
【００１５】
【図１】宣言的モデルの変換を容易にする例示的なコンピュータ・アーキテクチャを示す図である。
【図２Ａ】宣言的アプリケーションモデルを変換するためのより詳細なコンピュータ・アーキテクチャを示す異なる図である。
【図２Ｂ】宣言的アプリケーションモデルを変換するためのより詳細なコンピュータ・アーキテクチャを示す異なる図である。
【図３】宣言的アプリケーションモデルを変換するためのコンピュータ・アーキテクチャをさらに拡大した図である。
【図４】モデルを変換して受信したコマンドを実装するための例示的な方法のフローチャートである。
【図５】宣言的アプリケーションモデルを変換してアプリケーションを更新するためのコンピュータ・アーキテクチャの例を示す図である。
【図６】アプリケーションを更新するための更新アクションの例を示す図である。
【図７】モデルを変換して更新コマンドを実装するための例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１６】
本発明は、宣言的モデルを変換するための方法、システム、コンピュータ・プログラム生成物に関する。コンピュータ・システムは１つまたは複数のドライバを備える。各ドライバは、異なる技術の特定の組合せに対するモデルを処理するように構成される。コンピュータ・システムは１つまたは複数のトランスレータも備える。各トランスレータは、複数の異なる技術のうち特定の技術においてオブジェクトを表すモデル要素を処理するように構成される。
【００１７】
一部の実施形態では、コンピュータ・システムは宣言的モデルをコマンドとともに受信する。宣言的モデルおよびコマンドは一体的に、上記受信した宣言的モデルに基づいてアプリケーションに対するコマンドを実装するという目的を表す。コンピュータ・システムは、上記受信した宣言的モデルで示された技術の組合せに対応する宣言的モデルを処理するように構成されたドライバを識別する。コンピュータ・システムは、上記受信した宣言的モデルおよびコマンドを、上記識別されたドライバに転送する。上記識別されたドライバは、上記受信した宣言的モデルを解析して、モデル要素およびモデル要素間の関係を識別する。
【００１８】
上記識別されたモデル要素ごとに、コンピュータ・システムは、上記識別されたモデル要素に対応する特定の技術に対するモデル要素を変換するように構成されたトランスレータを識別する。上記識別されたモデル要素ごとに、コンピュータ・システムは該モデル要素を、上記識別されたトランスレータに送信する。上記識別されたモデル要素ごとに、コンピュータ・システムは、アプリケーションに対するコマンドを部分的に実装するのに特定の技術において実行されるべきアクションのシーケンスを受信する。該受信したアクションのシーケンスは、コマンドを完全に実装するのに実行されるべきアクション全体のサブセットである。
【００１９】
コンピュータ・システムは、宣言的モデル内で識別されたモデル要素に対する上記受信したアクションのシーケンスから、実行プランを編成する。上記受信したアクションのシーケンスは、他のモデル要素に対して受信したアクションのシーケンスに関する指定の順序で、実行プランに編成される。この指定の順序は、上記受信した宣言的モデルにおけるそのモデル要素の他のモデル要素に対する関係に基づく。コンピュータ・システムは実行プランを実行して、アプリケーションに対するコマンドを実装する。実行プランの実行には、モデル要素ごとに受信したアクションのシーケンスを指定の順序で実行することが含まれる。
【００２０】
他の実施形態では、アプリケーションに対する現在の実行プランと以前の実行プランを比較する。比較の結果を使用して新たな実行プランを導出する。新たな実行プランの導出には、現在の実行プランに含まれるアクションまたは含まれないアクションに基づいて以前の実行プランからアクションを追加、削除、更新、および反転することが含まれうる。
【００２１】
本発明の実施形態は、後にさらに詳細に論ずるように、コンピュータ・ハードウェアを含む専用または汎用のコンピュータを備え、または利用することができる。本発明の範囲にある実施形態は、コンピュータ実行可能命令および／またはデータ構造を伝達または格納するための物理的な媒体および他のコンピュータ読取可能媒体を含む。係るコンピュータ読取可能媒体は、汎用または専用のコンピュータ・システムによってアクセス可能な任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を格納するコンピュータ読取可能媒体は物理的な記憶媒体である。コンピュータ実行可能命令を伝達するコンピュータ読取可能媒体は伝送媒体である。従って、限定ではなく例として、本発明の実施形態には、少なくとも２つの明らかに異なるタイプのコンピュータ読取可能媒体、すなわち、物理的な記憶媒体および伝送媒体が含まれうる。
【００２２】
物理的な記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶装置、または所望のプログラム・コード手段をコンピュータ実行可能命令もしくはデータ構造の形で格納するのに使用可能であって、汎用もしくは専用のコンピュータによってアクセス可能な他の任意の媒体が含まれる。
【００２３】
「ネットワーク」は、コンピュータ・システムおよび／またはモジュールおよび／または他の電子装置の間における電子データの伝送を可能にする、１つまたは複数のデータ・リンクとして定義される。情報がネットワークまたは別の通信接続（有線、無線、または有線もしくは無線の組合せの何れか）を介してコンピュータに転送または提供されるとき、該コンピュータはその接続を正しく伝送媒体とみなす。伝送媒体は、所望のプログラム・コード手段をコンピュータ実行可能命令もしくはデータ構造の形で伝達するのに使用可能であって、汎用もしくは専用のコンピュータによってアクセス可能なネットワークおよび／またはデータ・リンクを含むことができる。上記の組合せもコンピュータ読取可能媒体の範囲内に含まれるべきである。
【００２４】
さらに、コンピュータ実行可能命令またはデータ構造の形のプログラム・コード手段が様々なコンピュータ・システム・コンポーネントに到達すると、そのプログラム・コード手段を伝送媒体から物理的な記憶媒体に自動的に転送することができることを理解されたい。例えば、ネットワークまたはデータ・リンクを介して受信されたコンピュータ実行可能命令またはデータ構造を、ネットワーク・インタフェース・モジュール（例えば、「ＮＩＣ」）内のＲＡＭにバッファリングすることができ、次いで、最終的にコンピュータ・システムのＲＡＭおよび／またはコンピュータ・システムにある揮発性の低い物理的な記憶媒体に転送することができる。従って、物理的な記憶媒体を、伝送媒体も（または主に）利用するコンピュータ・システム・コンポーネントに含めることができることを理解されたい。
【００２５】
コンピュータ実行可能命令は、例えば、汎用のコンピュータ、専用のコンピュータ、または専用の処理装置に特定の機能または機能群を実行させる命令およびデータを含む。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語などの中間形式の命令であってよく、あるいはソース・コードであってもよい。本主題を構造的な特徴および／または方法論的動作に固有な言葉で説明しているが、添付の特許請求の範囲で定義される主題は必ずしも上述の特徴または動作には限定されないことを理解されたい。むしろ、説明される特徴および動作は、特許請求の範囲を実装する例示的形態として開示されている。
【００２６】
当業者には、本発明をパーソナル・コンピュータ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、メッセージ・プロセッサ、ハンドヘルド装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、携帯電話、ＰＤＡ、ページャ、ルータ、スイッチなどを含め、多タイプのコンピュータ・システム構成を有するネットワーク・コンピューティング環境において実施することができることが理解されよう。本発明を、ネットワークを介してリンクされる（有線データ・リンク、無線データ・リンク、または有線データ・リンクと無線データ・リンクの組合せのいずれかによって）、ローカル・コンピュータ・システムおよびリモート・コンピュータ・システムの両方がタスクを実行する、分散システム環境において実施することもできる。分散システム環境では、プログラム・モジュールをローカルのメモリ記憶装置およびリモートのメモリ記憶装置の両方に配置してもよい。
【００２７】
図１は、宣言的モデルの変換を容易にする例示的なコンピュータ・アーキテクチャ１００を図示している。図１に示されるように、コンピュータ・アーキテクチャ１００は変換システム１０１および環境１０５を備える。環境１０５はさらに、変換システム１０１に対してアクセス可能な、例えばリソース１０５Ａ、１０５Ｂ、および１０５Ｃなどの複数のリソースを備える。さらに示すように、変換システム１０１は、宣言的モデル１０２とコマンド１０３を受信する。変換システム１０１は、コマンド１０３を考慮して宣言的モデル１０２を変換し、その結果、環境１０５におけるアクション１０４Ａ、１０４Ｂ、および１０４Ｃが実施される。
【００２８】
一般に、モデルは、アプリケーション・モジュール（例えば、分散アプリケーションの分散可能コンポーネント）などのオブジェクトを記述するデータである。従って、宣言的モデル１０２は、互いに接続される、または互いに関連する１つまたは複数のアプリケーション・モジュールを記述することができる。さらに各モジュールを、同様に互いに関連する１つまたは複数のリソースで構成することができる。従って、宣言的モデル１０２の要素を使用して、分散アプリケーションの少なくとも一部を表す、関連するアプリケーション・モジュールおよびリソースを記述することができる。例えば、宣言的モデル１０２は、リソース（例えば、ファイル）と、アーチファクト（例えば、ウェブ・サービスをホストするために作成しなければならないＩＩＳの仮想ディレクトリ）と、構成情報とで構成されるウェブ・サービスのモジュールを記述することができる。
【００２９】
一般に、コマンドは、モデルにおいて実行されるべきアクションを表す。コマンドは実質的には、例えば、デプロイ（deploy）、アンデプロイ（undeploy）、開始、停止、更新、モニタリングなどの、モデルにおいて実行可能な任意の動作を表すことができる。従って、コマンド１０３は、宣言的モデル１０２において実行されるべきアクションを表すことができる。
【００３０】
モデルをコマンドとともに利用して目的を表すことができる。表される目的は、ユーザの目的または自動的な目的とすることができる。例えば、宣言的モデル１０２はコマンド１０３とともに、「マイ・ウェブ・サービスをデプロイする」、「マイ・ウェブ・サービスの実行を開始する」などというユーザの目的を表すことができる。
【００３１】
従って、宣言的モデル１０２およびコマンド１０３の受信に応答して、変換システム１０１はモデル１０２およびコマンド１０３を処理して、表された目的を実現することができる。表された目的を実現することは、例えばアクション１０４Ａ、１０４Ｂ、１０４Ｃなどの１つまたは複数のアクションを、環境１０５のリソースに対して実行することを含むことができる。例えば、ユーザのウェブ・サービスをデプロイするために、変換システム１０１はファイルをリソース１０５Ｂにコピーし、例えばウェブ・サーバ上にディレクトリを作成すること、およびウェブ・サービスが必要とするリソース１０５Ｃ（例えば、構成ファイル）を作成または変更することといったように、リソース１０５Ａ上でアーチファクトを作成することができる。
【００３２】
図２Ａは、宣言的アプリケーションモデルの変換を容易にする例示的なコンピュータ・アーキテクチャ２００を図示している。コンピュータ・アーキテクチャ２００内には、ツール２２５、リポジトリ２２０、実行モジュール２１５、ドライバマネージャ２３０、および分析モジュール２１０が図示されている。図示されたコンポーネントの各々を、例えば、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）、およびインターネットなどのネットワークを介して相互に接続することができる。従って、図示されるコンポーネントの各々ならびに他の任意の接続されたコンポーネントは、メッセージに関連するデータを作成して、メッセージに関連するデータ（例えば、「ＩＰ」（Internet Protocol）データグラム、ならびに「ＴＣＰ」（Transmission Control Protocol）、「ＨＴＴＰ」（Hypertext Transfer Protocol）、「ＳＭＴＰ」（Simple Mail Transfer Protocol））などのＩＰデータグラムを利用する他の上位層プロトコル）を、ネットワークを介して交換することができる。
【００３３】
図示されるように、ツール２２５を使用してアプリケーションに対する宣言的モデルを書き、該宣言的モデルをリポジトリ２２０に格納することができる。例えば、宣言的アプリケーションモデル２５３をリポジトリ２２０に格納することができる。宣言的モデルを使用して、現実世界で稼動している（デプロイされた）アプリケーションの構造および振舞いを決定する。宣言的モデルを使用して、宣言的モデルに基づいてデプロイされたアプリケーションからどのようなイベントが報告（発信）されたかを決定することもできる。従って、ユーザ（例えば、分散アプリケーション・プログラムの開発者）は、１つまたは複数のツール２２５を使用して宣言的モデル２５３を作成することができる。宣言的モデルは、アプリケーションがどのように構成および実行されるべきかを宣言する、複数の相互に関連するモデル要素を含むことができる。
【００３４】
一般に、宣言的モデルは、分散アプリケーションに関するアプリケーションの目的を表す、高レベルの宣言の１つまたは複数のセットを含む。従って、高レベルの宣言は一般に、分散アプリケーション・プログラムにおける１つまたは複数のモジュールの動作および／または振舞いを記述する。しかし、高レベルの宣言は、特定の動作／振舞いを有する分散アプリケーションをデプロイするために必要な実装ステップを、（必要に応じて記述することはできるが）必ずしも記述するわけではない。例えば、宣言的アプリケーションモデル２５３は、例えば第１のウェブ・サービスおよび第２のウェブ・サービスを互いに接続することを含む、一般化されたワークフローの目的を表現することができる。しかし、宣言的アプリケーションモデル１５３は必ずしも、第１のウェブ・サービスおよび第２のウェブ・サービスを互いに接続する方法（例えば、プロトコル）、および場所（例えば、ＵＲＩエンドポイント）を記述するとは限らない。２つのウェブ・サービスを接続する方法および場所の具体的な詳細を、該ウェブ・サービスがデプロイされる場所（例えば、特定のマシンおよび特定のウェブ・サーバ構成）に基づいて決定することができる。
【００３５】
宣言的アプリケーションモデルに基づく、アプリケーションに対するアプリケーション制御を、宣言的アプリケーションモデルにおけるアクションを実行するためのコマンドの受信に応答して実現することができる。例えば、入力（例えば、ユーザが開始した入力または自動の入力）を実行モジュール２１５が受信することができる。入力は、ツール２２５またはコンピュータ・プログラムから（例えば、ユーザ・インタフェースまたはプログラマチック・インタフェースで）受信される。入力には、モデルへの参照（例えば、ファイル名、ＵＲＩなど）およびコマンドが含まれうる。コマンドは、参照されたモデルにおいて実行されるべき動作（例えば、デプロイ、アンデプロイ、開始、停止、更新など）を表す。
【００３６】
要求された動作を宣言的モデルによって記述されたアプリケーションにおいて実行するために、宣言的アプリケーションモデルを実行モジュール２１５に送信する。実行モジュール２１５は、宣言的アプリケーションモデルに曖昧さがなくなり、およびその細部が、ドライバが消費するのに十分な程度になるまで、該宣言的アプリケーションモデルを改良することができる。従って、実行モジュール２１５は宣言的アプリケーションモデル２５３を受信して改良することができ、その結果、宣言的アプリケーションモデル２５３が、ドライバマネージャ２３０内部に存在するドライバによって変換されて、デプロイされた現実世界のアプリケーションとなることができる。
【００３７】
一般に、宣言的モデルの「改良（refine）」は、例えば段階的精微化（progressive elaboration）などの、何らかのタイプの作業分解構造（work breakdown structure）を含むことができるので、宣言的モデルの命令は、ドライバまたはドライバマネージャ２３０による変換にとって十分に完全である。宣言的モデルは、人間であるユーザによって比較的大まかに（すなわち、一般化された目的の命令または要求を含むように）書かれる可能性があるため、実行モジュール２１５がアプリケーションをデプロイするために宣言的モデルを修正または補完する程度または範囲は様々存在しうる。作業分解モジュール２１６は、例えば段階的精微化アルゴリズムなどの作業分解構造アルゴリズムを実装して、ドライバマネージャ２３０内に存在するドライバに対して適切な粒度に到達し命令が十分となるときを判断することができる。
【００３８】
実行モジュール２１５はまた、宣言的モデルに含まれる依存性および制約を考慮することもできる。例えば、実行モジュール２１５は、宣言的アプリケーションモデル２５３における（例えば、別のウェブ・サービスに接続されているウェブ・サービス）要素間の依存性の意味に基づいて宣言的アプリケーションモデル２５３を改良するように構成されることができる。従って、実行モジュール２１５と作業分解モジュール２１６を相互運用して、分散アプリケーション２０７をデプロイするために十分な情報をドライバマネージャ２３０内に存在するドライバに提供する、詳細なアプリケーションモデル２５３Ｄを出力することができる。
【００３９】
さらに、実行モジュール２１５を、コンピュータ・システムの割当てに関して、欠損したデータを埋めるように構成することができる。例えば、実行モジュール２１５は、宣言的モデル２５３内において、特定のコンピュータ・システムのアドレスに関する要件または動作要件を有しない、複数の異なるモジュールを識別する可能性がある。従って、実行モジュール２１５は、利用可能なコンピュータ・システムに分散アプリケーション・プログラム・モジュールを割り当てることができる。実行モジュール２１５は、改良された宣言的アプリケーションモデル２５３内のデータを埋めるための最良の方法を判断することができる。例えば、前述のように、実行コンポーネント２１５は、ウェブ・サービスに対してどの伝送路を使用すべきかを、接続の近接性に基づいて判断し決定することができ、あるいは分散アプリケーション・プログラム・モジュールを、どのように割り当てるかを、予想される需要の増加に対処するのに適した要因に基づいて判断し決定することができる。実行モジュール２１５は次いで、欠損したデータを詳細なアプリケーションモデル２５３Ｄ（または、そのセグメント）に記録することができる。詳細なアプリケーションモデルをリポジトリ２２０に保存してもよい。
【００４０】
追加または代替的な実施形態では、実行モジュール２１５を、宣言的アプリケーションモデル２５３内の依存データを計算するように構成することができる。例えば、実行モジュール２１５は、マシンに対する分散アプリケーション・プログラム・モジュールの割当てに基づいて依存データを計算することができる。従って、実行モジュール２１５は、エンドポイントにおけるＵＲＩアドレスを計算し、対応するＵＲＩアドレスをプロバイダのエンドポイントからコンシューマのエンドポイントへ伝達することができる。さらに、実行モジュール２１５は、宣言的アプリケーションモデル２５３における制約を評価することができる。例えば、実行コンポーネント２１５を、２つの分散アプリケーション・プログラム・モジュールを実際に同じマシンに割り当てることができるかどうかを確かめるように構成することができ、割り当てることができない場合には、実行モジュール２１５は、この要件に合うように詳細なアプリケーションモデル２５３Ｄを改良することができる。
【００４１】
（詳細なアプリケーションモデル２５３Ｄを作成するために）全ての適切なデータを宣言的アプリケーションモデル２５３に追加（あるいは修正／改良）した後、実行コンポーネント２１５は、ドライバマネージャ２３０内に存在するプラットフォーム固有のドライバによって変換できるように、改良された詳細なアプリケーションモデル２５３Ｄを完成させることができる。詳細なアプリケーションモデル２５３Ｄを完成または完了させるために、実行モジュール２１５は、例えば、宣言的アプリケーションモデルを、任意の１つまたは複数のプラットフォーム固有のドライバを対象とすること可能なセグメントに分割することができる。従って、実行モジュール２１５は、各宣言的アプリケーションモデル（または、そのセグメント）を、その対象のドライバでタグ付けすることができる（例えば、ドライバマネージャ２３０内に存在するプラットフォーム固有のドライバのアドレス／ＩＤ）。さらに、実行モジュール２１５は、詳細なアプリケーションモデル（例えば、２５３Ｄ）が実際に、ドライバマネージャ２３０内に存在するドライバによって変換可能であることを検証することができ、そして変換可能である場合には、詳細なアプリケーションモデル（または、そのセグメント）を変換用に適切なドライバに送るためにドライバマネージャ２３０に渡すことができる。
【００４２】
いずれにしても、ドライバマネージャ２３０は、１つまたは複数のドライバおよびトランスレータと相互運用して、詳細なアプリケーション・モジュール２５３Ｄを１つまたは複数の（例えば、プラットフォーム固有の）アクション２３３に変換する。図２Ａに示されるように、アクション２３３を使用して、分散アプリケーション２０７に対するモデルコマンド２２６で表されるアクションの目的を実現することができる。
【００４３】
デプロイの間に、分散アプリケーション・プログラムは、実行に関する動作情報を提供することができる。例えば、実行中に、分散アプリケーション２０７は、分散アプリケーション２０７で発生したイベント（例えば、実行または性能の問題）を示すイベントストリーム２３７を発信することができる。一実装形態では分散アプリケーション２０７は、イベントストリーム２３７を連続的、継続的に送出し、他の実装形態では分散アプリケーション２０７は、イベントストリーム２３７をスケジュールに基づいて（例えば、ドライバマネージャ２３０内に存在するプラットフォーム固有のドライバによって設定されたスケジュールに基づいて）送信する。ドライバマネージャ２３０は、分析、調整、および／または他の適切な修正のために、イベントストリーム２３７を順に分析モジュール２１０に渡す。イベントストリーム２３７で発信されたイベントは、宣言的アプリケーションモデル２５３で定義される。
【００４４】
一般に、分析モジュール２１０は、分散アプリケーション２０７の興味深い傾向および振舞いを識別するために、宣言的アプリケーションモデル２５３とともにリポジトリ２２０に格納された宣言的観察モデル（例えば、観察モデル２７６）に基づいて、イベントストリーム２３７からのデータを集約し、相互に関連付け、またはフィルタリングする。分析モジュール２１０は必要に応じて、宣言的アプリケーションモデル２５３の目的を、識別された傾向に基づいて自動的に調整することができる。例えば、分析モジュール２１０は、モデル修正２３８をリポジトリ２２０に送信して宣言的モデル２５３の目的を調整することができる。調整された目的により、例えば、コンピュータ・システムのシステム・メモリが少なくなってきている場合には、コンピュータ・システムで毎秒処理されるメッセージの数を低減し、現在割り当てられているマシンが頻繁にリブートしすぎるような場合には分散アプリケーション２０７を別のマシンに再デプロイすることができる。
【００４５】
図２Ｂは、ドライバマネージャ２３０に含まれるコンポーネントのより詳細な図を図示している。図２Ｂに示されように、ドライバマネージャ２３０は、タイプロケータ２４１、ドライバ３４２、およびトランスレータ２６１を含む。
【００４６】
タイプロケータ２４１は、モデルおよびモデル要素を、そのモデルおよびモデル要素を処理できる対応するドライバおよびトランスレータにマップするルックアップ機構である。
【００４７】
ドライバ２４２は、モデルおよびコマンドを受信して処理するように構成される。ドライバ２４２は、それが理解するコマンドのリスト、およびサポートする１組の技術モデルを用いて使用するように構成される。例えば、ドライバ２４２は、本出願人であるMicrosoft（登録商標）社のＷＣＦ（Windows Communication Foundation）を使用して実装されMicrosoft（登録商標）社のＩＩＳ（Internet Information Server）上でホストされるべきウェブ・サービスを記述する、ウェブ・サービス・モジュール・モデルを変換することが可能なＷＣＦ−ＩＩＳドライバとすることができる。
【００４８】
図示されるように、ドライバ２４２は、実行プラン２４４を生成するモデルインタプリタ２４３を含む。モデルインタプリタ２４３は、受信したモデルを解析して、対応する実行プラン（例えば、実行プラン２４４）を生成するように構成される。受信したモデルから実行プランを生成するために、モデルインタプリタ２４３は、モデルを構成するモデル要素、および該モデル要素間の関係を識別することができる。モデルインタプリタ２４３は次いで、対応するモデル要素インタプリタを呼び出して、モデル要素ごとにアクションのシーケンスを取り出すことができる。モデルインタプリタ２４３は、実行プランに含めるために、モデル要素ごとのアクションのシーケンスを結合して単一のアクションのシーケンスにする。
【００４９】
従って、例えば、実行プラン２４４は、モデルにおいて動作を実施するのに実行することができるシーケンス化されたアクションのセットである。実行プラン２４４は、アクションの実行中に該アクションによって使用可能なモデル情報を含む、実行コンテキスト（execution context）を提供する。このコンテキストはまた、実行中に他のアクションが必要とする情報を渡すために、上記アクションによって使用される。
【００５０】
トランスレータ２６１は、関連するアクションのセットとモデル要素インタプリタとのパッケージである。トランスレータ２６１は、特定の技術に対する親和性（affinity）を有する手続き（procedure）を束ねる。例えば、ＯＳＣｏｎｆｉｇトランスレータは、ファイルやフォルダなどのオペレーティングシステムのアーチファクトを処理できるアクションのセットを有するであろう。これらのアクションは、作成、コピー、移動、削除などとすることができる。
【００５１】
図示されるように、トランスレータ２６１は、モデル要素インタプリタ２６２、ならびにアクション２６３Ａ、２６３Ｂ、および２６３Ｃを含む。モデル要素インタプリタ２６２は、モデル要素を解析するように構成され、モデル要素によって表される全てのものにおいて動作するのに実行できるアクションのシーケンスを編成する。
【００５２】
アクション２６３Ａ、２６３Ｂ、および２６３Ｃは、単一のモデル要素に基づいて動作する実行可能な手続きを表す。例えば、ＣｏｐｙＦｉｌｅアクションは、所与のファイルを、所与の宛先にコピーすることができ、上記ファイルが、ウェブ・サービスなどのアプリケーションモデルを記述するモデル内のリソース・モデル要素によって記述される。
【００５３】
アクションは様々な異なるプロパティを含むことができる。例えば、アクションを冪等（Idempotent）とすることができる。すなわち、同じモデル要素において成功裏に再度実行された同一のアクションは、同一の結果をもたらすこととなる。アクションは、固有の識別子を有することができる。２つのアクションが同じことを行う場合は、その２つのアクションは同じ識別子を有することができる。例えば、ファイルをインストールするという２つのアクションは、ファイルが同じ絶対パスを有するときは同じ識別子を有することができる。
【００５４】
アクションに、対応する逆アクション（reverse action）を関連付けることができる。逆アクションは、アクションの効果を元に戻す（undo）ことができる。例えば、ＣｏｐｙＦｉｌｅの逆は、ファイルを削除するか、上書きされた元のファイルを復元する手続きであるはずである。アクションに、新しいバージョンのリソースを既存のリソースの上に適用する、対応する更新アクションを関連付けることができる。
【００５５】
従って、図２Ｂに示されるコンポーネントとデータを相互運用して、受信したモデルおよびコマンドで表された目的を実現することができる。
【００５６】
図３は、宣言的アプリケーションモデルを変換するための例示的なコンピュータ・アーキテクチャ３００をさらに拡大した図を示す。図示されるように、コンピュータ・アーキテクチャ３００はドライバマネージャ３３０を含む。ドライバマネージャ３３０は、コンピュータ・アーキテクチャ２００内に示されるドライバマネージャ２３０と同様に（または同一に）構成することができる。ドライバマネージャ３３０は、ドライバおよびトランスレータをホストし、入力を受信する。例えば、ドライバマネージャ３００は、例えばｗｃｆ−ＩＩＳドライバ３４２およびＡｓｐｘ−ＩＩＳドライバ３５２などの複数のドライバをホストする。
【００５７】
各ドライバは、モデルを解析し実行プランを生成するように構成された、モデルインタプリタ（例えば、それぞれモデルインタプリタ３４３および３５３）を含むことができる。従って、モデルを受信すると、各ドライバは、構成リソースおよび構成リソース間の関係を識別し、適切なリソースインタプリタを呼び出してアクションのシーケンスを取り出し、アクションのシーケンスを実行プランに編成することができる。
【００５８】
ドライバマネージャ３００は、例えばオペレーティングシステム技術トランスレータ３６１、ＩＩＳ技術トランスレータ３７１、およびＷＣＦ技術トランスレータ３８１などの複数のトランスレータもホストする。各トランスレータは、リソースを記述するモデル要素を解析し、およびリソースが表すものに対して実行できるアクションのシーケンスを編成するための、リソースインタプリタ（例えば、それぞれリソースインタプリタ３６２、３７２、および３８２）を含むことができる。各トランスレータは環境の一部に対応することができる。例えば、オペレーティングシステム技術トランスレータ３６１はオペレーティングシステム３９１に対応し、ＩＩＳ技術トランスレータ３７１はＩＩＳ３９２に対応し、ＷＣＦ技術トランスレータ３８１はＷＣＦ３９３に対応する。
【００５９】
従って、トランスレータがリソースを記述するモデル要素を受信すると、そのリソースは、環境の対応する部分内の何らかのオブジェクトを表している。例えば、オペレーティングシステム技術トランスレータ３６１がリソースを受信すると、そのリソースはオペレーティングシステム３９１内のオブジェクト（例えば、ｓｅｒｖｉｃｅ．ｓｖｃファイル）に対応する。同様に、ＩＩＳ技術トランスレータ３７１がリソースを受信すると、そのリソースはＩＩＳ３９２内のオブジェクト（例えば、ユーザのウェブ・サービスの位置、「／ｍｙｓｅｒｖｉｃｅ」）に対応する。同様に、ＷＣＦ技術トランスレータ３８１の場合、リソースはＷＣＦ３９３内のオブジェクト（例えば、Ｗｅｂ．ｃｏｎｆｉｇ）に対応する。
【００６０】
一般に、ディスパッチャ３７１は、モデルとコマンドを受信し、そのモデルおよびコマンドを適切なドライバに送るように構成される。従って、モデルとコマンドを受信すると、ディスパッチャ３７１は、該モデルをタイプロケータ３４１に転送することができる。タイプロケータ３４１は、該モデルを受信し、該モデルに基づいて、該モデルを処理するのに適切なタイプのドライバを見つけることができる。タイプロケータ３４１は、該適切なタイプのドライバを識別するドライバＩＤを、ディスパッチャ３７１に返すことができる。ディスパッチャ３７１は次いで、上記ドライバＩＤを使用して、モデルおよびコマンドを上記識別された適切なドライバに送ることができる。
【００６１】
ドライバはまた、タイプロケータ３４１を利用して、モデル内に含まれるリソースを記述するモデル要素に対して適切なトランスレータを見つけることもできる。モデル内のリソースを記述するモデル要素ごとに、ドライバは、リソースを記述するモデル要素をタイプロケータ３４１に提示することができる。タイプロケータ３４１は、リソースを記述するモデル要素を受信し、該リソースを記述するモデル要素に基づいて、該リソースを記述するモデル要素を変換するのに適切なタイプのトランスレータを見つけることができる。タイプロケータ３４１は、該適切なタイプのトランスレータを識別するトランスレータＩＤをドライバに返すことができる。ドライバは次いで、そのトランスレータＩＤを使用して、リソースを記述するモデル要素を上記識別された適切なトランスレータに送ることができる。
【００６２】
適切なトランスレータは、リソースを記述する受信したモデル要素を解析して、受信したコマンドに対するアクションのシーケンスを編成し、該アクションのシーケンスをドライバに返す。ドライバは次いで、アクションの異なるシーケンスから、単一の実行プランを編成する。次いで、ドライバはその実行プランを実行する。実行プラン内のアクションは、順番に実行され、モデル３５３とびコマンド３２９で一体的に表された目的を実現するように環境（例えば、オペレーティングシステム３９１、ＩＩＳ３９１、およびＷＣＦ３９２のうち１つまたは複数）において直接動作する。
【００６３】
図４は、モデルを変換して受信したコマンドを実装するための例示的な方法４００のフローチャートを図示している。方法４００を、コンピュータ・アーキテクチャ３００内のコンポーネントおよびデータと関連して説明する。
【００６４】
方法４００は、宣言的モデルをコマンドとともに受信する動作を含み、該宣言的モデルとコマンドは一体的に、受信した宣言的モデルに基づいてアプリケーションに対するコマンドを実装するという目的を示す（動作４０１）。例えば、ディスパッチャ３７１は、モデル３５３およびコマンド３２９を受信することができる。モデル３５３は、アプリケーションをどのように構成し実行するかを宣言する、複数の相互に関連するモデル要素を含むことができる。コマンド３２９は、アプリケーションのデプロイ、アンデプロイ、開始、停止などを行うためのコマンドとすることができる。
【００６５】
方法４００は、受信した宣言的モデルで示された技術の組合せに対応する宣言的モデルを処理するように構成されたドライバを識別する動作（動作４０２）を含む。例えば、ディスパッチャ３７１は、モデル３５３をタイプロケータ３４１に送信することができる。タイプロケータ３４１は、モデル３５３を受信することができる。タイプロケータ３４１は、モデル３５３を処理して、モデル３５３の処理に適したドライバのタイプを判断することができる。
【００６６】
ドライバのタイプの判断は、モデル３５３のモデル要素において示される、および／またはモデル３５３のモデル要素に関連する、技術の組合せ（例えば、オペレーティングシステム、ネットワーク・プロトコル、データ型などの組合せ）に基づいて行うことができる。例えば、タイプロケータ３４１は、ＩＩＳ３９２およびＷＣＦ３９３に関連するモデル３５３に含まれるモデル要素に基づいて、Ｗｃｆ−ＩＩＳドライバ３４２がモデル３５３を処理するのに適したドライバであると判断することができる。その判断に応答して、タイプロケータ３４１は、ドライバＩＤ３８４（ドライバ３４２の識別子）をディスパッチャ３７１に送信することができる。
【００６７】
方法４００は、受信した宣言的モデルおよびコマンドを識別されたドライバに転送する動作（動作４０３）を含む。例えば、ディスパッチャ３７１は、ドライバＩＤ３８４を利用して、モデル３５３およびコマンド３２９をＷｃｆ−ＩＩＳドライバ３４２に転送することができる。
【００６８】
方法４００は、識別されたドライバが受信した宣言的モデルを解析して、モデル要素およびモデル要素間の関係を識別する動作（動作４０４）を含む。モデルインタプリタ３４３はモデル３５３を解析して、モデル３５３内のモデル要素、およびモデル要素の相互関係を識別することができる。例えば、モデルインタプリタ３４３は、モデル要素３５４Ａ、３５４Ｂ、３５４Ｃなどを識別することができる。
【００６９】
方法４００は、識別されたモデル要素ごとに、識別されたモデル要素に対応する特定の技術のためにモデル要素を変換するように構成されたトランスレータを識別する動作（動作４０５）を含む。例えば、Ｗｃｆ−ＩＩＳドライバ３４２は、例えばモデル要素３５４Ａなどの識別されたモデル要素を、タイプロケータ３４１に送信することができる。タイプロケータ３４１はモデル要素３５４Ａを受信することができる。タイプロケータはモデル要素３５４Ａを処理して、モデル要素３５４Ａの変換に適したトランスレータのタイプを判断することができる。
【００７０】
トランスレータのタイプの判断は、モデル要素３５４において示される、および／またはモデル要素３５４に関連する、特定の技術（例えば、オペレーティングシステム、ネットワーク・プロトコル、データ型、等のうち１つ）に基づいて行うことができる。例えば、タイプロケータ３４１は、オペレーティングシステム３９１を示すかオペレーティングシステム３９１に関連するモデル要素３５４Ａに基づいて、オペレーティングシステム技術トランスレータ３６１がモデル要素３５４Ａを変換するのに適したドライバであると判断することができる。その判断に応答して、タイプロケータ３４１は、トランスレータＩＤ（トランスレータ３６１の識別子）をＷｃｆ−ＩＩＳドライバ３４２に送信することができる。モデル３５３に含まれるモデル要素３５４Ｂ、３５４Ｃなどについても同様な判断を行うことができる。
【００７１】
方法４００は、識別されたモデル要素ごとに、モデル要素をトランスレータに送信する動作（動作４０６）を含む。例えば、Ｗｃｆ−ＩＩＳドライバ３４２は、トランスレータＩＤ３５５を利用して、モデル要素３５４Ａをオペレーティングシステム技術トランスレータ３６１に転送することができる。リソースインタプリタ３６２は、モデル要素３５４Ａをアクションシーケンス３６３に変換することができる。アクションシーケンス３６３は、例えばアクション３６３Ａ、３６３Ｂなど、コマンド３２９の目的の一部を実装するためにオペレーティングシステム３９１内で実行されるべき複数のアクションを含む。
【００７２】
同様に、Ｗｃｆ−ＩＩＳドライバ３４２は、適切なトランスレータＩＤを利用して、モデル要素３５４ＢをＩＩＳ技術トランスレータ３７１に転送することができる。リソースインタプリタ３７２は、モデル要素３５４Ｂをアクションシーケンス３７３に変換することができる。アクションシーケンス３７３は、例えばアクション３７３Ａ、３７３Ｂなど、コマンド３２９の目的の別の一部を実装するためにＩＩＳ３９２内で実行されるべき複数のアクションを含む。
【００７３】
同じように、Ｗｃｆ−ＩＩＳドライバ３４２は、適切なトランスレータＩＤを利用して、モデル要素３５４ＣをＷＣＦ技術トランスレータ３８１に転送することができる。リソースインタプリタ３８２は、モデル要素３５４Ｃをアクションシーケンス３８３に変換することができる。アクションシーケンス３８３は、例えばアクション３８３Ａ、３８３Ｂなど、コマンド３２９の目的のさらに別の一部を実装するためにＷＣＦ３９３内で実行されるべき複数のアクションを含む。
【００７４】
さらなるモデル要素を、特定の技術を示すモデル要素および／または特定の技術に関連しているモデル要素に基づいて、オペレーティングシステム技術トランスレータ３６１、ＩＩＳ技術トランスレータ３７１、ＷＣＦ技術トランスレータ３８１、ならびに他の適切な技術トランスレータ（図示せず）のいずれかに送信することもできる。
【００７５】
方法４００は、識別されたモデル要素ごとに、アプリケーションに対するコマンドを部分的に実装するために特定の技術において実行されるべきアクションのシーケンスを受信する動作（動作４０７）を含み、該アクションのシーケンスは、コマンドを完全に実装するために実行されるべきアクション全体のサブセットである。例えば、モデルインタプリタ３４３は、アクションシーケンス３６３をオペレーティングシステム技術トランスレータ３６１から受信し、アクションシーケンス３７３をＩＩＳ技術トランスレータ３７１から受信し、アクションシーケンス３８３をＷＣＦ技術トランスレータ３８１から受信することができる。各アクションシーケンスは、モデル３５３に基づいてアプリケーションに対するコマンド３２９を完全に実装するために実行されるべきアクション全体のサブセットである。
【００７６】
方法４００は、識別されたモデル要素ごとに、モデル要素について受信したアクションのシーケンスを、実行プランに編成する動作（動作４０８）を含み、該受信したアクションのシーケンスは、他のモデル要素について受信したアクションのシーケンスに対する指定の順序で、実行プランに編成される。この指定の順序は、受信した宣言的モデルにおけるそのモデル要素の他のモデル要素に対する関係に基づく。例えば、モデルインタプリタ３４３は、アクションシーケンス３６３、３７３、３８３などを実行プラン３４４に編成することができる。アクションシーケンス３６３、３７３、３８３などは、モデル３５３内の対応するモデル要素間の関係に基づいた指定の順序で編成される。
【００７７】
方法４００は、実行プランを実行して、アプリケーションに対するコマンドを実装する動作（動作４０９）を含み、実行プランの実行は、各モデル要素について受信したアクションのシーケンスを指定の順序で実行することを含む。例えば、Ｗｃｆ−ＩＩＳドライバ３４２は、実行プラン３４４を実行して、（モデル３５３に基づいて）オペレーティングシステム３９１、ＩＩＳ３９２、およびＷＣＦ３９３などの一部分を使用すべきアプリケーションに対するコマンド３２９を実装することができる。
【００７８】
図５は、宣言的アプリケーションモデルを変換してアプリケーションを更新するためのコンピュータ・アーキテクチャ５００の例を図示している。図示されるように、コンピュータ・アーキテクチャ５００は、ドライバ５０１、トランスレータ５０２、および比較更新モジュール５０７を含む。コンピュータ・アーキテクチャ５００内では前述したように、ドライバ５０１は、モデル（例えば、現在のバージョンのモデル５０２Ｃ、および以前のバージョンのモデル５０２Ｐ）、およびコマンド（例えば、更新コマンド５０３）を受信し、モデル要素（例えば、モデル要素５０４）を解析により取り出し、そのモデル要素をトランスレータ５０２内の適切なトランスレータに送信し、そしてアクションシーケンス（例えば、アクションシーケンス５０６）を適切なトランスレータから受信することができる。ドライバ５０１はアクションシーケンスから、例えば現在の実行プラン５１１および以前の実行プラン５１２などの実行プランを作成することができる。
【００７９】
比較更新モジュール５０７は、アプリケーションに対する現在の実行プランと以前の実行プランを受け取り、その２つの実行プランを比較してその２つの実行プラン内のアクションシーケンスの相違を識別するように構成される。識別された相違から、比較更新モジュール５０７は、現在の実行プラン内のアクションを以前の実行プラン内のアクションに適用して、新たな実行プランを導出することができる。新たな実行プランは、既存のアプリケーションを更新するための更新アクションを含むことができる。
【００８０】
図６は、アプリケーションを更新するための更新アクション６００の例を示す。行６０１は、アクションが現在のバージョンの実行プランと以前のバージョンの実行プランの両方に含まれるときに、以前のバージョンのアクションの実行結果を更新して現在のバージョンのアクションの結果にする更新アクションが、新たな実行プランに含まれることを示している。行６０２は、アクションが現在のバージョンの実行プランにのみ含まれるとき、現在のバージョンのアクションが新たな実行プランに追加されることを示している。行６０３は、アクションが以前のバージョンの実行プランにのみ含まれるとき、以前のバージョンのアクションの実行結果を除去する逆アクションが、新たな実行プランに含まれることを示している。
【００８１】
図７は、モデルを変換して更新コマンドを実装するための例示的な方法７００のフローチャートを図示している。方法７００を、コンピュータ・アーキテクチャ５００内のコンポーネントおよびデータならびに更新アクション６００に関連して説明する。
【００８２】
方法７００は、宣言的モデルを更新コマンドとともに受信する動作を含み、該宣言的モデルおよび更新コマンドは一体的に、受信した以前のバージョンの宣言的モデルに基づいてアプリケーションを更新するという目的を示す（動作７０１）。例えば、ドライバ５０１は、現在のバージョンのモデル５０２Ｃと更新コマンド５０３を受信することができる。現在のバージョンのモデル５０２Ｃと更新コマンド５０３は一体的に、アプリケーション５２２の更新という目的を表す。
【００８３】
方法７００は、受信した宣言的モデルに対する現在の実行プランを編成する動作を含み、該現在の実行プランは、受信した宣言的モデルにおけるモデル要素間の関係に基づいた指定の順序で編成されるアクションのシーケンスを含む（動作７０２）。例えば、ドライバ５０１は、現在のバージョンのモデル５０２Ｃからのモデル要素を解析し、（例えば、モデル要素５０４に含まれる）モデル要素をトランスレータ５０２内の適切なトランスレータに送信することができる。その適切なトランスレータは、（例えば、アクションシーケンス５０６に含まれる）アクションシーケンスを返すことができる。そのアクションシーケンスから、ドライバ５０１は現在の実行プラン５１１を編成することができる。
【００８４】
方法７００は、受信した以前のバージョンの宣言的モデルにアクセスする動作（動作７０３）を含む。例えば、ドライバ５０１は以前のバージョンのモデル５０２Ｐにアクセスすることができる。アプリケーション５２２は以前のバージョンのモデル５０２Ｐに基づいている。
【００８５】
方法７００は、受信した以前のバージョンの宣言的モデルに対する以前の実行プランを編成する動作を含み、該以前の実行プランは、受信した以前のバージョンの宣言的モデルにおけるモデル要素間の関係に基づいた指定の順序で編成された以前のアクションのシーケンスを含む（動作７０４）。例えば、ドライバ５０１は、以前のバージョンのモデル５０２Ｐからのモデル要素を解析し、（例えば、モデル要素５０４に含まれる）モデル要素を適切なトランスレータ５０２に送信することができる。その適切なトランスレータは、（例えば、アクションシーケンス５０６に含まれる）アクションシーケンスを返すことができる。そのアクションシーケンスから、ドライバ５０１は以前の実行プラン５１２を編成することができる。
【００８６】
方法７００は、現在の実行プランを以前の実行プランと比較する動作（動作７０５）を含む。例えば、比較更新モジュール５０７は、現在の実行プラン５１１を以前の実行プラン５１２と比較することができる。その比較から比較更新モジュール５０７は、アクションが、現在の実行プラン５１１と以前の実行プラン５１２のいずれか１つまたはその両方に含まれるかどうかを判断することができる。
【００８７】
方法７００は、比較結果に基づいて、アプリケーションを更新するための新たな実行プランを導出する動作（動作７０６）を含む。例えば、比較更新モジュール５０７は、現在の実行プラン５１１を以前の実行プラン５１２と比較した結果に基づいて、更新されたアプリケーション５２２に対する新たな実行プラン５１３を導出することができる。
【００８８】
新たな実行プランの導出は、更新アクション、現在のアクション、または逆のアクションを新たな実行プランに挿入することを含むことができる。例えば、現在の実行プランと以前の実行プランの両方に含まれる各アクションについて、更新アクションが新たな実行プランに含まれる（動作７０７）。現在の実行プランのみに含まれる各アクションについて、現在の実行プランからのアクションが新たな実行プランに含まれる（動作７０８）。以前の実行プランのみに含まれる各アクションについて、以前の実行プラン内のアクションを取り消すための逆アクションが新たな実行プランに含まれる（動作７０９）。逆アクションは、コンピューティング環境５２１における以前の実行プランからのアクションの影響を排除することである。
【００８９】
方法７００は、新たな実行プランを実行して、コンピューティング環境内のアプリケーションを更新する動作（動作７１０）を含む。例えば、ドライバ５０１は新たな実行プラン５１３を実行することができる。新たな実行プラン５１３の実行により、コンピューティング環境５２１内へ発されるアクション５３１を引き起こすことができる。アクション５３１をコンピューティング環境において実装して、アプリケーション５２２をアプリケーション５２２Ｕに更新することができる。
【００９０】
本発明の実施形態は拡張可能でもある。ドライバは、機能をディスパッチャに公開するようにタイプロケータ（例えば、３４１）に登録することができる。同様に、トランスレータは、機能をドライバに公開するようにタイプロケータに登録することができる。ドライバは既存のトランスレータを再利用することができる。例えば、図３を参照すると、Ａｓｐｘ−ＩＩＳドライバ３５２は、オペレーティングシステム技術トランスレータ３６１およびＩＩＳ技術トランスレータ３７１を（Ａｓｐｘトランスレータ（図示せず）とともに）使用して、モデル要素を処理することができる。
【００９１】
諸実施形態では、ドライバ、モデルインタプリタ、モデル要素インタプリタ、およびアクションに対するベースクラスおよび汎用の実装を提供することができる。従って、実行プランを生成および実行し、タイプを見つけ、更新プランを生成するためのインフラストラクチャは全て、共通フレームワークによって提供される。したがって、開発者は新しいモデルを作成することに集中することができ、トランスレータはモデル要素をアクションへと処理することに集中することができる。任意選択的に、関係がモデル内で表現されていない場合に対処するために、ベースクラスを拡張してモデルおよびモデル要素インタプリタを作成することができ、従って潜在的に、基本実装がアクションシーケンスを推論することを防ぐことができる。
【００９２】
従って、本発明の実施形態は、例えばアプリケーションの開発、アプリケーションの更新、開始や停止などのアプリケーションの制御、アプリケーションにイベントを発するように指示することによるアプリケーションのモニタリングなど、アプリケーションに対する様々なアクションを実行するための宣言的モデルの処理を容易にする。アプリケーションの宣言的モデルは、該アプリケーションの宣言的モデルが実行され、制御され、モニタリングされた後に、対象の環境に向けて処理され実現される。
【００９３】
本発明は、その精神または本質的特徴から逸脱することなく他の特定の形式で具現化してもよい。説明された実施形態は、全ての点で例示にすぎず限定ではないと解されるべきである。本発明の範囲は従って、上記説明ではなく添付の特許請求の範囲によって示される。特許請求の範囲の等価の意味および範囲にある全ての変更が、特許請求の範囲に含まれるべきである。
【図１】
2011502309.tif 000003
【図２Ａ】
2011502309.tif 000004
【図２Ｂ】
2011502309.tif 000005
【図３】
2011502309.tif 000006
【図４】
2011502309.tif 000007
【図５】
2011502309.tif 000008
【図６】
2011502309.tif 000009
【図７】
2011502309.tif 000010
【国際調査報告】
2011502309.tif 000011
2011502309.tif 000012