(57)【特許請求の範囲】
【請求項１】
テスト用の環境を展開するシステムであって、
リソースを管理し、前記リソースのチェックインおよびチェックアウトを実施するように構成された、様々なトポロジーグループのライブラリを提供するリソースピッカーと、
様々なトポロジーグループの前記ライブラリのトポロジー構築要素を生成するためにリソースを使用する一連のサービスを提供するプライマーと、
様々なトポロジーグループの前記ライブラリから所望のトポロジーを生成するための環境定義をユーザーが提供することを可能にするクライアントＷｅｂページインターフェイスとを備え、
前記環境定義を前記クライアントＷｅｂページインターフェイスを通じて受信すると、前記プライマーが、前記受信された環境定義に従ってテスト環境を生成するために、様々なトポロジーグループの前記ライブラリからの要素を前記ユーザーに自動的に提供する、システムであって、
再利用可能な構築要素として構成を表す共通の言語および開発プラットフォームを提供するテンプレート承認デバイスをさらに備え、前記テンプレート承認デバイスが、テンプレートコンパイラ、辞書／意向ファイル、タスクチェーン、およびトポロジーコップをさらに備え、前記タスクチェーンが、トポロジーの断片において相互に結び付いた、タスクの論理グループを含み、前記意向ファイルが、前記タスクチェーンおよび他の変数に関連してトポロジーを定義し、前記テンプレートコンパイラおよびトポロジーコップが、コンパイルされたトポロジー環境を検証することにより、結果として生じたトポロジーの正確
性を確保するための検査を行う、システム。
【請求項２】
前記プライマーが、様々なトポロジーグループの前記ライブラリからの要素を前記ユーザーに自動的に提供した後、様々なトポロジーグループの前記ライブラリへの更新を実行し、前記更新を実行することが、必要とされる環境と前記リソースピッカーが現在使用可能なものとして示す環境とのプール構成を比較すること、前記比較に基づいて新しい環境を構築するためのテンプレートを獲得すること、前記獲得されたテンプレートによって提供された命令を使用して前記新しい環境を構築すること、前記新しい環境を前記構築することが成功したときに、必要とされる数のトポロジーが再び使用可能であることを検証すること、および前記プロセスが失敗したときに、構築される前記新しい環境を修復するためのツールを開始することによって行われる、請求項１に記載のシステム。
【請求項３】
前記プライマーによって開始された前記ツールが、
失われたまたは孤立した展開リソースを特定し、失われたまたは孤立した展開リソースを自動回復のための適切なサブシステムに渡すためのＯＭＬ（孤立マシンロケーター）ツールと、
孤立した物理リソースの回復を管理し、不明または失われた状態の物理リソースを再イメージ化し、前記物理リソースを前記ライブラリに再追加し、リモートで電源を入れ直すＳＯＡＰ要求を登録済みのＷｅｂサービスに送信するためのＯＣＲ（孤立クライアント回復）ツールと、
仮想マシンの構成のスナップショットを取得し、前記仮想マシンを前記取得されたスナップショットに戻すＡＬＩＳ（全ラボ統合サービス）システムと
を備えている、請求項２に記載のシステム。
【請求項４】
トポロジーを構築するように構成されたトポロジービルダーをさらに備え、前記プライマーが、変換するマシンを前記リソースピッカーに照会し、前記トポロジービルダーにリソースを所望の状態に変換するように指示する作業命令を前記トポロジービルダーのために生成し、前記トポロジービルダーが、前記作業命令のステップに従って前記マシンを変換し、前記プライマーが、所定の兆候を得るために前記リソースピッカーおよび前記トポロジービルダーを監視し前記ＯＭＬ（孤立マシンロケーター）ツールおよび前記ＯＣＲ（孤立クライアント回復）ツールを開始し、前記ＯＭＬ（孤立マシンロケーター）ツールが、前記兆候を検出し、前記マシンを戻し再プロビジョニングし、前記ＯＣＲ（孤立クライアント回復）ツールが、リソースピッカーおよびトポロジービルダーを使用して前記マシンのレコードをクリーンにする、請求項３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、一般に、ソフトウェアのテストおよび展開に関し、より詳細には、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開する方法、システム、およびコンピューター可読記憶装置に関する。
【背景技術】
【０００２】
[0002]ソフトウェアは広く普及しており、ほとんどの人が直接的に、またはその他の方法でソフトウェアに接している。したがって、ソフトウェアは、広い範囲に影響を及ぼす可能性がある。任意のソフトウェア製品の影響の性質を決定する主たる要因は、生み出されるソフトウェアの品質によって決まる。したがって、ソフトウェアテストは、ソフトウェア開発と同様に、高品質のソフトウェア製品を生み出すためのプロセスの有益な機能である。ソフトウェアテストは、不具合を検出し、製品が出荷される前にそうした不具合に対処できるようにすることで、ソフトウェアの品質の改善に直接的に貢献する。
【０００３】
[0003]検出されず、その結果として対処がなされないままのソフトウェアの不具合は、ユーザーがソフトウェアの操作中に何らかのタイプの障害に直面することにつながる。こうした障害は、顧客から報告された障害問題に対処し、パッチを発行するコスト、顧客の信頼および信用の喪失、顧客データの損失または破損、障害または法令違反による法的影響などを含め、ソフトウェア生産者にかなりのコスト的な影響を及ぼす恐れがある。テストが不十分なソフトウェアをリリースすることの影響は、ソフトウェアの生産中に不具合を防止し、解消することにより回避することができる。ソフトウェアの不具合が出荷されるのを回避することは、後でこれらの不具合に対処する際に生じるコストに比べれば非常に少ない先行投資で済むことを意味する。ソフトウェアテストはまた、ソフトウェアに対する客観的で独立した視野を提供し、企業がソフトウェア実装のリスクを正当に評価し、理解することを可能にする。
【０００４】
[0004]ソフトウェアテストは、通常、例えば、エンジニアリングテスト、開発テスト、アルファテスト、ベータテストなどのいくつかの段階で行われる。ソフトウェアテストを円滑化するために、多数のツールが開発されてきた。これらのテストツールは、一般に、アプリケーションが期待どおりに動作することを確実にする機能テストを自動化している。さらに、ソフトウェアテストツールは、テストの管理、レポート作成、および優先順位設定を統制し、テストを展開するための共通のユーザーインターフェイスをテスト管理者に提供することができる。
【０００５】
[0005]多くの企業が、集中型のテスト環境に移行しつつある。集中型のテスト環境は、標準のテスト方法およびテストプロセスの一貫した展開を通じてプロセスの一貫性を提供し、これにより、テストの品質および効率の改善を支援する。さらに、集中型のテスト環境は、規模の経済性および集中型の支出から生じる利点を提供する。
【０００６】
[0006]しかし、集中型のテスト環境は、多数のビルドがその１つの環境に組み込まれることにより、ますますその維持が難しくなりつつある。オンラインサービスが拡大し、依存関係がますます複雑に入り組んだものになるに従い、開発者が自身の修正プログラムを検証するために使用できる容易に対象とし展開できる環境は、不可欠なものとなる。ソフトウェア製品の複数のリリースを維持できるようにするには、ソフトウェアパッチまたはホットフィックス、すなわちＱｕｉｃｋ  Ｆｉｘ  Ｅｎｇｉｎｅｅｒｉｎｇ（ＱＦＥ）、およびロールアップがテストパスを使用して適切に検証されることを確実にする高度なテスト環境が必要である。
【０００７】
[0007]現在、テスト担当者は、開発者向けにソフトウェアをテストするマルチマシン環境を展開するために、約１週間を要する場合がある。さらに、この種のコンポーネントはそれぞれ、個々にアクセスされる。他には、これらの問題の解決は、ユーザーが選択肢を選んだ後にリアルタイムで環境を複製する自動化されたタスクを使用して、手動で１つずつ構成を構築しそれを結び付けて、またマシン取得などの様々なタスクのそれぞれに対して様々なツール、その後にセットアップツールなどを使用して行われてきた。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
[0008]したがって、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開する方法、システム、およびコンピューター可読記憶装置が必要であると理解することができる。
【課題を解決するための手段】
【０００９】
[0009]上述の制約を克服するために、また本明細書を読み進め理解する際に明らかになる他の制約を克服するために、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開する方法、システム、およびコンピューター可読記憶装置の実施形態が開示される。
【００１０】
[0010]上述の問題は、製品開発作業およびテスト作業のすべての特徴が十分に構成された瞬時のトポロジー展開を実現する包括的なプラットフォームを提供することによって解決される。トポロジー展開サービスプラットフォームは、多様なレイヤーの複雑さ（シングルマシン／マルチマシン）、多様なマシンプロバイダー（物理／ＶＭ／Ａｇｉｌｅ）、様々な役割（ＡＤ、Ｅｘｃｈａｎｇｅ（登録商標）など）、様々な製品ビルド、パートナー間の統合、および多様な製品構成の信頼できるトポロジーを生成する能力を提供する。複数のテストおよび開発環境を、自明に自動化され信頼できる方式で起動し、生成する能力により、複雑な顧客シナリオおよび構成の展開が可能になる。
【００１１】
[0011]一実施形態では、テスト用の環境を展開する方法が開示される。この方法は、様々なトポロジーグループのライブラリを提供するステップと、環境定義を受信するために、インターフェイスをユーザーに提示するステップと、受信された環境定義に従ってテスト環境を生成するために、様々なトポロジーグループのライブラリからの要素をユーザーに自動的に提供するステップとを含む。
【００１２】
[0012]別の実施形態では、テスト用の環境を展開するシステムが開示される。このシステムは、リソースを管理し、リソースのチェックインおよびチェックアウトを実施するように構成された、様々なトポロジーグループのライブラリを提供するリソースピッカーと、様々なトポロジーグループのライブラリのトポロジー構築要素を生成するためにリソースを使用する一連のサービスを提供するプライマー（ｐｒｉｍｅｒ）と、様々なトポロジーグループのライブラリから所望のトポロジーを生成するための環境定義をユーザーが提供することを可能にするクライアントＷｅｂページインターフェイスとを備え、環境定義をクライアントＷｅｂページインターフェイスを通じて受信すると、プライマーが、受信された環境定義に従ってテスト環境を生成するために、様々なトポロジーグループのライブラリからの要素をユーザーに自動的に提供する。
【００１３】
[0013]プロセッサーによって実行されるとテスト用の環境を展開する方法を提供する実行可能な命令を含むコンピューター可読媒体が開示される。このコンピューター可読媒体は、様々なトポロジーグループのライブラリを提供し、環境定義を受信するためにインターフェイスをユーザーに提示し、また受信された環境定義に従ってテスト環境を生成するための様々なトポロジーグループのライブラリからの要素をユーザーに自動的に提供するように実行可能な命令を含む。
【００１４】
[0014]これらならびに他の様々な利点および新規性のある特徴は、特に本明細書に添付された特許請求の範囲において示され、本明細書の一部を形成する。しかし、開示される実施形態、利点、および達成される目的を理解するために、本明細書の別の一部を形成する図面、および開示された実施形態の具体的な例が示され、記述されている付随する記述的内容を参照する。
【００１５】
[0015]ここで図面を参照するが、そこでは同様の参照番号は以下の図面を通じて、対応する部分を表す。
【図面の簡単な説明】
【００１６】
【図１】[0016]一実施形態による、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開するように構成されたトポロジー展開システムのブロック図である。
【図２】[0017]一実施形態による、トポロジー展開サーバー（ＴＤＳ）プラットフォームのコンポーネント／モジュールのブロック図である。
【図３】[0018]一実施形態による、テンプレート承認部（ｔｅｍｐｌａｔｅ  ａｕｔｈｏｒｉｔｙ）のブロック図である。
【図４】[0019]一実施形態による、トポロジー展開サービス（ＴＤＳ）システムの詳細なブロック図である。
【図５】[0020]一実施形態による、ＴＤＳスタックの図である。
【図６】[0021]一実施形態による、ＴＤＳ  Ｗｅｂクライアントフロントエンドを示す図である。
【図７】[0022]一実施形態による、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開する方法の流れ図である。
【図８】[0023]一実施形態による、コンピューティング環境を示す図である。
【発明を実施するための形態】
【００１７】
[0024]本明細書に記載される実施形態は、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開する方法、システム、およびコンピューター可読記憶装置を対象とする。
【００１８】
[0025]図１は、一実施形態による、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開するように構成されたトポロジー展開システム１００のブロック図である。このデータ処理システムは、１つまたは複数のクライアントコンピューター１７０へのネットワーク１６０を介した通信接続のために構成されたトポロジー展開サービス（ＴＤＳ）プラットフォーム１１０を含むことができる。ＴＤＳプラットフォーム１１０は、複数のモジュールまたはコンポーネントを含むことができる。図１では、ＴＤＳサーバー１１２が、ユーザーに自動的に提供可能である、様々なトポロジーグループのライブラリを提示する。したがって、ＴＤＳサーバー１１２によって提示された様々なトポロジーグループのライブラリの要素は、受信された環境定義に従ってテスト環境を生成するために、ユーザーが使用することができる。図１では、ＴＤＳプラットフォーム１１０のためのコントローラー１５０、機能データベース１３０、トポロジーデータベース１４０、およびあらかじめ配置されたテストケースデータベース１２０のみが示されている。ＴＤＳプラットフォーム１１０のより詳細な説明は、以下に記載される。ＴＤＳプラットフォーム１１０は、様々なトポロジーにアクセスし、それを構成し、展開するためのインターフェイスを、クライアントコンピューター１７０においてユーザーに提供する。
【００１９】
[0026]ＴＤＳプラットフォーム１１０は、製品開発作業およびテスト作業のすべての特徴が十分に構成された瞬時のトポロジー展開を実現する包括的なプラットフォームを提供する。ＴＤＳプラットフォーム１１０は、多様なレイヤーの複雑さ（シングルマシン／マルチマシン）、多様なマシンプロバイダー（物理／ＶＭ／Ａｇｉｌｅ）、様々な役割（ＡＤ、Ｅｘｃｈａｎｇｅ（登録商標）など）、様々な製品ビルド、パートナー間の統合、および多様な製品構成の信頼できるトポロジーを生成する能力を提供する。複数のテストおよび開発環境を、自明に自動化され信頼できる方式で起動し、生成する能力により、複雑な顧客シナリオおよび構成の展開が可能になる。
【００２０】
[0027]例えば、ＴＤＳプラットフォーム１１０は、複数の種類のトポロジーをサポートする。開発者とテスト担当者の両者は、クライアントコンピューター１７０を介して、作業項目、機能、および／またはバグを対象とし、検証することができる。ＴＤＳプラットフォーム１１０によって、チームは、複数の製品を単一のテスト環境に統合することが可能になる。さらに、サービスチームは、ＴＤＳプラットフォーム１１０を使用して複数のパートナーおよび構成を処理することができ、エンタープライズチームは、複数のパートナーを処理することができる。手動または自動のテストパスのためのトポロジーもサポートされている。さらに、プログラムマネージャーは、トポロジー展開を実証する環境としてプラットフォームを使用することができる。
【００２１】
[0028]ＴＤＳプラットフォーム１１０はまた、統一された言語および機構を、環境を展開するすべてのチームに提供し、これにより、他のコンポーネント、パートナーチーム、および製品との連携を合理化する。プラットフォームの力は、これらのトポロジーが瞬時に利用可能であるということによってさらに強化されている。プラットフォームへのその他の価値は、トポロジーの正常な構築物のみがユーザーに提供されることである。ＴＤＳプラットフォーム１１０は、この機能が複数のチームにチーム自体のトポロジーおよびリソースを用いて拡張されることを可能にするサービスとして構成されている。
【００２２】
[0029]ＴＤＳプラットフォーム１１０の実施形態は、トポロジーデータベース１４０への瞬時のアクセス、あらかじめ認識されたラインタスクをエンドユーザーと区別する能力、様々なワークロード要件に基づいて様々なマシンを提供する能力、複数の構築要素を創造し再利用可能なエンティティとして表面化させる能力、およびリソースに複数のマシンプロバイダーを使用する能力を提供する。
【００２３】
[0030]図２は、一実施形態による、ＴＤＳプラットフォーム１１０のコンポーネント／モジュールのブロック図である。ＴＤＳプラットフォーム１１０は、ユーザーが、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開することを可能にするシステムである。ＴＤＳシステム１１０は、包括的なソリューションをもたらす異なった機能性を提供する複数のレイヤー、モジュール、またはコンポーネントを含み、それらは、プライマー２１０、リソースピッカー（Resource Picker）２２０、トポロジービルダー２３０、ＯＭＬ（孤立マシンロケーター）ツール２４０、ＯＣＲ（孤立クライアント回復部）ツール２５０、ＡＬＩＳ（全ラボ統合サービス）システム２６０、フロントエンドインターフェイスとしてのＴＤＳ  Ｗｅｂクライアント２７０、およびテンプレート承認部２８０を含む。
【００２４】
[0031]プライマー２１０は、共通のトポロジー構築要素にリソースをあらかじめ構築するための一連のサービスを提供する。リソースピッカー２２０は、仮想マシンおよび物理マシンの他、電話、Ｌｉｎｕｘ（登録商標）ボックス、ＩＰアドレスなどの他のリソースタイプのための中央マネージャーである。リソースピッカー２２０は、すべてのリソースのためのマネージャーとして機能し、リソースのチェックインおよびチェックアウトを実施する。リソースは、マシン、ＩＰアドレス、トポロジーが展開を必要とする任意の対象であることができる。
【００２５】
[0032]トポロジービルダー２３０は、汎用のクライアント駆動型タスクエンジン２９０を使用してトポロジー環境を展開する。ＯＭＬツール２４０およびＯＣＲツール２５０は、ソフトウェア障害またはハードウェア障害により環境内で孤立したリソースの位置を特定し、再プロビジョニング（re-provision）するために使用する、ツールおよびサービスの集合体を提供する。ＡＬＩＳシステム２６０は、チームの仮想マシン（ＶＭ）の他、Ａｇｉｌｅ  ＬａｂｓなどのＶＭエンドポイントを管理するサービスである。Ａｇｉｌｅ  Ｌａｂｓは、マシンおよびＶＭをチームに提供するリソースプロバイダーである。ＡＬＩＳシステム２６０は、必要に応じてスナップショットを取り、プロセスを逆戻りさせることにより、ＶＭを管理する。ＡＬＩＳシステム２６０はまた、他の外部リソース環境と連携し、より多くのリソースが必要な場合、リソースをチェックアウトする。
【００２６】
[0033]ＴＤＳ  Ｗｅｂクライアント２７０は、トポロジーのチェックアウトおよびチェックインを行うための管理ユーザーインターフェイスをエンドユーザーに提供する、Ｗｅｂページとして構成されたクライアントフロントエンドを提供する。テンプレート承認部２８０は、高度なトポロジーを生成する再利用可能な構築要素として構成を表すために使用される、共通の言語および開発プラットフォームを提供する。テンプレート承認部２８０は、各環境に対し提供され、そこではＸＭＬベースのテンプレートがトポロジーを定義する。
【００２７】
[0034]プライマー２１０は、共通のトポロジー構築要素にリソースをあらかじめ構築する一連のサービスを示す。問題が小売サプライチェーンであると仮定した場合、プライマー２１０は、商品補充係として機能し、商品倉庫との間を行き来して商品を追加で取り出して、棚に陳列し、その結果、ユーザーがあるトポロジー構築要素を必要としたときに、そのトポロジー構築要素がまさにそこにあるようにする。
【００２８】
[0035]プライマー２１０は、信頼できない展開を繰返しを通じて低減する。ＳＱＬ  Ｓｅｒｖｅｒ（登録商標）ならびにＲｉｇｈｔｓ  Ｍａｎａｇｅｍｅｎｔ  ＳｅｒｖｅｒおよびＣｌｉｅｎｔがインストールされた状態でドメインコントローラーを実装するＷｉｎｄｏｗｓ（登録商標）２００８  Ｒ２サーバーを必要とする場合、プライマー２１０は、セットアップが何度失敗したかにかかわらず、その環境の生成を再試行し続けることになる。プライマー２１０は常に、継続して動作し、トポロジーを構築し、その結果、トポロジー構築要素はいつでも準備されている。
【００２９】
[0036]プライマー２１０は、通常、マシンを単一のステップで完全に構成しようとはしない。むしろ、プライマー２１０は、複数のレイヤーのステップを使用して所望の環境を生成し、これは「段階的な展開」と呼ばれる。この概念は、基本的に、プライマー２１０内のプール構造と、管理者がこれらのプール間に定義するパスとに関する１つの考え方であり、この定義は、適切なエンドポイントが常に動作の準備が整った状態で待機するように設定される。
【００３０】
[0037]プライマー２１０のプール構造は、次のマルチレイヤー形式で構成されるとき最も強力である。第１のレイヤーは、通常、ベースとなるプラットフォームを確立する。Ｗｉｎｄｏｗｓ（登録商標）マシンを例、すなわちマルチパーティションマシンとして使用すると、第１のレイヤーが、テスト環境になるＷｉｎｄｏｗｓ（登録商標）の別のコピーをインストールするために、第２のパーティションを生成し、それを使用する。第２のレイヤーは、次いで、そのプラットフォームの最上部で行われるより専用の構成のために使用される。Ｗｉｎｄｏｗｓ（登録商標）の場合、ドメインコントローラーの生成やＳＱＬ  Ｓｅｒｖｅｒ（登録商標）のインストールなどの要素は、通常この時点で起きる。
【００３１】
[0038]トポロジー展開サービス環境の場合、第３のレイヤーは、よりカスタマイズされた構成を採用し、それを完全にプレインストールされたテスト環境に変える。Ｏｆｆｉｃｅ  ３６５チームを例として使用すると、このプロセスは、通常、Ｅｘｃｈａｎｇｅ（登録商標）、Ｗｉｎｄｏｗｓ  Ｌｉｖｅ（登録商標）オンラインサービス、ＢＯＳオンラインサービスなどのインストールを含む。したがって、ユーザーがトポロジー構築要素を求めると、トポロジー構築要素は、既に構成されており、簡単で迅速なチェックアウトを行う準備ができている。また、このレイヤー構造は、新しい環境が生成されることになるイベント内からのチェックアウトに、追加のジャンプポイントを提供する。
【００３２】
[0039]プライマー２１０は、２つの基礎となるサブシステム、すなわちリソースピッカー２２０およびトポロジービルダー２３０を使用して、動作を完了する。プライマー２１０は、トポロジービルダー２３０およびリソースピッカー２２０を使用して、使用可能なマシンを採用し、それらをリソースが必要とされる事前定義された場所へ移行する。例えば、３つのマシンのグループ化が必要な場合、トポロジービルダー２３０は、３つのマシンを構築するように構成され、プライマー２１０は、リソースピッカー２２０を使用してそれらの３つのマシンをチェックアウトし、ジョブをトポロジービルダー２３０に挿入し、所望のグループ化を行う。このプロセスは、システムが必要とするあらゆる構成に対して毎日終日繰り返される。すなわち、プライマー２１０は、自動的に、必要とされるグループ化を検査および監視するとともに、構築する。
【００３３】
[0040]例えば、ユーザーは、ＴＤＳ  ＷｅｂなどのＷｅｂページでもよいＴＤＳ  Ｗｅｂクライアント２７０を使用して、フロントエンドにアクセスし、現行バージョンのＥｘｃｈａｎｇｅ（登録商標）を要求する。今日時点のバージョンのＥｘｃｈａｎｇｅ（登録商標）製品を有するトポロジーが獲得される。Ｅｘｃｈａｎｇｅ（登録商標）製品は、既にインストールされており、ユーザーが必要とする間それを使用できる準備ができている。Ｅｘｃｈａｎｇｅ（登録商標）製品がチェックアウトされた後、システムは更新を実行し、１つの環境がなくなったことを特定する。例えば、維持されるＥｘｃｈａｎｇｅ（登録商標）製品の目標の数が５０である場合があるが、今、今日時点のＥｘｃｈａｎｇｅ（登録商標）製品の４９だけが使用可能である。したがって、もう１つの環境が構築される。システムは、テンプレートコンパイラ（図３のテンプレートコンパイラ３１０を参照）にアクセスし、今日時点のＥｘｃｈａｎｇｅ（登録商標）の別の１つを構築するためのテンプレートを獲得する。テンプレートは、今日時点のＥｘｃｈａｎｇｅ（登録商標）の１つがどのように構築されるかの命令を提供する。システムは、リソースピッカー２２０にアクセスし、テンプレートを展開するためのマシンを特定する。
【００３４】
[0041]リソースピッカー２２０は、すべてのリソースの現在の状態を追跡するために使用される。プライマー２１０は、リソースピッカー２２０をシステムの現在の在庫表として扱い、必要とされる対象と、リソースピッカー２２０が現在使用可能なものとして示す対象とのプール構成(pool configuration)を比較することによる次に何を生成すべきかという点に判断の基準を置く。そのため、リソースピッカー２２０は、リソースを提供し、トポロジービルダー２３０にそのテンプレートを展開するように指示する。
【００３５】
[0042]例えば、トポロジービルダー２３０が今日時点のＥｘｃｈａｎｇｅ（登録商標）のコピーの実装を開始するとき、プロセスが成功した場合、システムは、例えば、５０のこうしたトポロジーが必要とされる場合があり、必要とされる数のトポロジーが再び使用可能であることを検証する。プロセスが失敗した場合、ＯＭＬツール２４０およびＯＣＲツール２５０が開始されてプロセスを修復する。装置が物理マシンである場合、ボックスは、再プロビジョニングされる。装置がホスト上で動作する仮想マシンである場合、システムはどのようにその仮想マシンと対話するかを認識し、またＡＬＩＳシステム２６０が使用されて、スナップショットを取り、ＶＭを停止し、ＶＭを再起動することにより、ＶＭを修復する。いったんＶＭが稼働状態に戻ると、プライマー２１０はどのようにマシンとの対話を再開するかを認識する。
【００３６】
[0043]トポロジービルダー２３０は、実行エンジンである。プライマー２１０が特定のタイプのリソースを生成する、または置き換える必要があるとき、プライマー２１０は、リソースを所望の状態に変換する、トポロジービルダー２３０のための作業命令を生成する。プライマー２１０は、変換するマシンをリソースピッカー２２０に照会し、次いでトポロジービルダー２３０に、その作業命令のステップに従ってそのマシンを変換するように命じる。
【００３７】
[0044]トポロジービルダー２３０は、イメージベース対応の仮想マシン（ＶＭ）と対話することができる。またはトポロジービルダー２３０は、テスト環境の取込みが必要になる可能性がある幅広い物理マシンと対話することができる。一部のＶＭは、静的であり、名前でリソースを選択することができ、その結果、参照へのエンドポイントが提供される。他に、必要に応じてリモートでゼロから構築できるＷｉｎｄｏｗｓ（登録商標）マシンにより類似しているＶＭもある。
【００３８】
[0045]開発者が、１つまたは２つのサーバー、１つのＡＤと１つのＥｘｃｈａｎｇｅ（登録商標）と場合によってはＳｈａｒｅＰｏｉｎｔ（登録商標）のための別の１つ、などを有するテストトポロジーを求める場合、コンポーネント、および場合によってはトポロジー自体があらかじめ構築されている場合がある。開発者が一部のコードをチェックインしようとしている場合、そのコードがチェックインされてＥｘｃｈａｎｇｅ（登録商標）とＳｈａｒｅＰｏｉｎｔ（登録商標）との間のリンク(intubation)が中断される前に、ビルドが存在することを確認するために検証が行われ、テストが実行される。これらのテストを実行するために、マシンはトポロジーを実行する。この厳密なシステムは、ソフトウェアの検証または社内ソリューションの構築を目的としたこれらのトポロジーの貸出しのためにも使用できる。
【００３９】
[0046]可用性の高い展開リソースの好循環は、ＴＤＳシステム１１０において、ＯＭＬ（孤立マシンロケーター）ツール２４０、ＯＣＲ（孤立クライアント回復）ツール２５０、およびＡＬＩＳ（全ラボ統合サービス）システム２６０を通じて維持される。これらの３つのシステムは、リソースがどのような状態になろうとも、ＴＤＳシステム１１０が自動修正し、人が介在することなく、迅速で効率的にリソースを元に戻す、高度な信頼性を提供する。
【００４０】
[0047]ＯＭＬツール２４０によって提供されるサービスは、ＴＤＳシステム１１０における「失われた」または「孤立した」どんな展開リソースも特定するために使用され、自動回復のための適切なサブシステムにそのリソースを渡す。このプロセスは、以前は、費用のかかる手動のプロセスであった。しかし、ＯＭＬツール２４０は、インフラストラクチャー内のどこでも孤立したリソースを検出できるように設定された拡張ＳＱＬルールを使用して、このプロセスを自動化している。
【００４１】
[0048]ＯＭＬツール２４０と共に動作する、ＯＣＲツール２５０によって提供されるサービスは、孤立した物理リソースの回復を管理するために使用される。不明または失われた状態の物理リソースに対処するモードは、構成済みのＲｕｎＯｎｃｅのおかげで、物理リソースを完全に再イメージ化し、物理リソースをＴＤＳシステム１１０に一度完全に再追加することができる。再イメージ化中に何らかの失敗が起きた場合、ＯＣＲツール２５０は、運用チームによって調査されるべき関連マシン情報、資産番号、およびラボの場所を使用して、ＳＣＯＭ  Ａｌｅｒｔを開始する。
【００４２】
[0049]ＯＣＲツール２５０のサービスは、インフラストラクチャーアクティブディレクトリ（ＩＡＤ）内のマシンアカウントにＷｉｎｄｏｗｓ（登録商標）展開サービス（ＷＤＳ）特有の設定を記述し、次いでマシンを再起動することにより、リソースをリモートで再イメージ化するために使用される。これらの設定が誘因となって、マシンは、インフラストラクチャーＷＤＳサーバーに接触し、次にマシンの再起動または電源オンが行われると、自動的に指定のイメージをマシン上にインストールする。
【００４３】
[0050]何らかの理由（ネットワーク切断、電源オフなど）に到達できないマシンの場合、ＯＣＲツール２５０は、リモートで強制的にマシンの電源を入れ直すＳＯＡＰ要求を登録済みのＷｅｂサービスに送信し、これにより、理由や時間を問わず強制再起動を実行できるようにする。ＯＣＲツール２５０およびＯＭＬツール２４０は、ＴＤＳシステム１１０における任意の失われた物理リソースに関するループを完結させ、テストリソースの高可用性を常に維持する。
【００４４】
[0051]ＡＬＩＳシステム２６０は、ＴＤＳシステム１１０におけるあらゆる仮想マシン（ＶＭ）を管理する３つのプラグインサービスを含むスタンドアロンシステムである。サービスは、ユーザーが、構成のチェックアウト、チェックイン、スナップショット取得を実行でき、また、ＶＭプロバイダーのプラグインがベースクラスから実装されてＡＬＩＳシステム２６０の構成に追加される前提で、任意のＶＭを任意のソースから戻すことができるように設計されている。ＶＭプロバイダーの新しいプラグインは、サービスの修正なしで生成されてもよい。ＴＤＳシステム１１０においてサポートされているＶＭプロバイダーは、Ａｇｉｌｅ  Ｌａｂｓ、Ｖｉｒｔｕｃｏｎ（Ｅｘｃｈａｎｇｅ（登録商標）ホスティングＶＭ）、ならびにＶｉｒｔｕｃｏｎ形式およびＡｚｕｒｅ（登録商標）を使用するパートナーチームのＶＭを含んでもよい。もちろん、現在の実施形態は、上記のＶＭプロバイダーに限定されることを意図するものではない。
【００４５】
[0052]ＴＤＳシステム１１０が何らかの理由で追加のリソースを必要とすると、それに起因して、ＡＬＩＳシステム２６０はＶＭを任意の指定のソースからチェックアウトすることができる。いったんプロビジョニングされると、ＶＭは、ＴＤＳシステム１１０の展開環境を表すスタックおよび要求されたサイロ（Silo）に自動的に追加される。
【００４６】
[0053]サイロは、チームを互いに隔離し、的確な１組のリソースが適切なチームに割り当てられるようにする構成体である。これはさらに、パートナーが、標準的な開発チームによって使用されるはずのもの以外に、それら自体の割当て(quota)、マシン、および環境をもつことを可能にするサービスのための構造を提供する。
【００４７】
[0054]したがって、プロビジョニング（provision）は、ＴＤＳシステム１１０のスタックおよび要求されたサイロに自動的に追加可能である。チームリソースの割当てを例として使用すると、３つの開発チーム、すなわち、Ｅｘｃｈａｎｇｅ（登録商標）チーム、Ｗｉｎｄｏｗｓ（登録商標）チーム、およびＳｈａｒｅＰｏｉｎｔ（登録商標）チームが存在する場合がある。１００個のリソースが、Ｅｘｃｈａｎｇｅ（登録商標）チームであると見なされる場合がある。あるユーザーがＴＤＳシステム１１０にアクセスし、Ｅｘｃｈａｎｇｅ（登録商標）に属している間にテスト環境のチェックアウトを求めた場合、このユーザーは、Ｅｘｃｈａｎｇｅ（登録商標）からテスト環境をチェックアウトする。言い換えれば、Ｗｉｎｄｏｗｓ（登録商標）に属している人々は、許可なしにＥｘｃｈａｎｇｅ（登録商標）からのチェックアウトを認められない。Ａｇｉｌｅ  Ｌａｂｓモデルの場合、確実に適切なチームが同チームのリソース使用量のみについて請求されるように、請求書発行業務が各要求に組み込まれる。
【００４８】
[0055]仮想マシン（ＶＭ）が、例えばユーザーがトポロジーを解放したなど何らかの理由で、回復されることを必要とすると、またはＶＭがＯＭＬツール２４０によって特定されると、ＡＬＩＳシステム２６０は、ＶＭをＴＤＳシステム１１０から登録解除し、ＶＭを構成済みのベーススナップショットに戻し、またＶＭは、構成済みのＲｕｎＯｎｃｅステップに基づいてクリーンな状態のインフラストラクチャーを自動的に再入力する。このワークフローは、マシンがＴＤＳシステム１１０に戻り準備が整った状態になるのに平均１〜３分を要し、ＴＤＳシステム１１０では、物理リソースの再イメージ化にさらに１５〜３０分を超える時間を要する。
【００４９】
[0056]したがって、ＴＤＳシステム１１０は、様々な異なる兆候を得るために、リソースピッカー２２０およびトポロジービルダー２３０を監視する。様々な異なる兆候には、例えば、Ｗｉｎｄｏｗｓ（登録商標）マシンがドメインコントローラーを含むように構築されつつあるときに、マシンが再起動され、しかしその最中にハングアップが起こるなどがある。マシンが回復せず、所定の期間内にＴＤＳシステム１１０と通信できない場合、ＯＭＬツール２４０は、これを認識し、マシンを戻し再プロビジョニングすることになる。この時点で、ＯＣＲツール２５０が動作し始める。ＯＣＲツール２５０は、マシンのレコードのクリーンアップ方法を理解している。したがって、ＯＣＲツール２５０は、リソースピッカー２２０およびトポロジービルダー２３０を使用してそのマシンをクリーンな状態にし、その結果、マシンが戻ったとき、適切に動作し、またマシンが物理ボックスならＷｉｎｄｏｗｓ（登録商標）の再インストールを起動し、マシンが仮想マシンならＡＬＩＳシステム２６０にこのＶＭを除去するように指示する。ＡＬＩＳシステム２６０は、ＶＭをチェックインしてＶＭを破棄するか、ＶＭを既知の良好な状態に戻すことでＶＭを稼働状態に戻す。物理リソースが、ある期間にわたる例えばハードドライブ問題で、ＴＤＳシステム１１０の対象外となっている場合、ＯＣＲツール２５０は、場合によっては、リモートのハードウェアを使用して、ボックスを再起動することができる。このように、ＯＣＲツール２５０は、人が介在することなく、マシンを維持しようとする。この試みが失敗した場合のみ、ユーザーは、物理的にボックスに触れなければならない。監視がＯＣＲツール２５０に組み込まれたことで、ＯＣＲツール２５０がリソースをうまく再プロビジョニングできなかった場合、運用側に警告が行われる。
【００５０】
[0057]ＴＤＳにおいてトポロジーを使用して開発者が実施されると、開発者は、Ｗｅｂページにアクセスし、チェックインする。それがＶＭである場合、システムは、リソースピッカー２２０において即座にプロパティにマーク付けし、ＡＬＩＳシステム２６０は、解放された対象を監視することになる。ＡＬＩＳシステム２６０は、場合によっては、仮想マシンと関係しているのがどの仮想マシンプロバイダーかにかかわらず、仮想マシンを停止することにより、マシンを再生することになる。仮想マシンは、社内ホストから、社内のＡｇｉｌｅ  Ｌａｂｓサービスから、またはＡＬＩＳシステム２６０がアクセスする任意のＶＭプロバイダーからのものでよい。どのＶＭプロバイダーかに応じて、ＡＬＩＳシステム２６０は、ＶＭを停止して既知の状態に戻し、ＶＭを開始することができる。ＯＣＲツール２５０がＶＭが失われたことを検出した場合、ＯＣＲツール２５０は、ＡＬＩＳシステム２６０がＶＭのクリーニングを開始するのを起動する。ＶＭプロバイダーに制御を発行することができる。ＶＭがまさにホストである場合、ＡＬＩＳシステム２６０は、ＶＭホストに接触し、ＶＭホストに対し、特定のＶＭを停止し、ＶＭをスナップショットに戻し、ＶＭを開始するように指示することができる。あるいは、ＶＭがＡｇｉｌｅ  Ｌａｂｓのようなサービスである場合、ＡＬＩＳシステム２６０は、Ａｇｉｌｅ  ＬａｂｓにＶＭを戻すように指示する。監視サービスは、すべての要求を観察し、要求が取りこぼされることがないようにする。例えば、Ａｇｉｌｅ  ＬａｂｓがＶＭを戻すように指示されているが、ＶＭが戻されないままＡｇｉｌｅ  Ｌａｂｓが指示されてからの期間が長すぎる場合、監視サーバーは、新しい要求を送信する。ＡＬＩＳシステム２６０は、先に進みリソースからＶＭを得ることができる。新しい仮想マシンを提供できる新しいリソースプロバイダーが存在する場合、ＡＬＩＳシステム２６０が新しいプロバイダーに要求できるように新しいプラグインを追加することができる。
【００５１】
[0058]図３は、一実施形態による、テンプレート承認部３００のブロック図を示す。テンプレート承認部３００は、後に連結され得る様々な構築要素を表す共通の言語および開発機構を使用することにより、高度なシナリオを提供する。共通の言語および開発機構は、テンプレートコンパイラ３１０、辞書／意向ファイル３２０、タスクチェーン３３０、およびトポロジーコップ（ｔｏｐｏｌｏｇｙ  ｃｏｐ）３４０、すなわちテンプレートの検証用途の使用を通じて提供される。
【００５２】
[0059]タスクチェーン３３０は、相互に結び付いた、タスクの論理グループであり、トポロジーの断片となるものである。辞書／意向ファイル３２０は、タスクチェーン３３０、および最新バージョンの所望のタスクの構築時にそれと置き換えられる他の変数に関連して、トポロジーがどのように見えることになるかについて記載している。テンプレートコンパイラ３１０およびトポロジーコップ３４０は、結果として生じたトポロジーの正確性を確保するための検査を行う。
【００５３】
[0060]このテンプレート承認部３００は、複数のマシン、様々な構成にわたる高度で複雑なシナリオを迅速に生成することを可能にし、瞬時の信頼できる環境をソフトウェアの開発およびテストチームに提供する。タスクチェーン３３０に関して、マルチマシン環境が構築されると、メンバーマシンはそのドメインに参加する。当然、ドメインは、メンバーがドメインに参加する前に生成される。構築された４つのマシンが存在し、１つがドメインコントローラーである場合、その他の３つは、ドメインに参加するメンバーマシンである。３つのマシンは、アクティブディレクトリが生成されるまで待機するはずである。アクティブディレクトリが生成されるとすぐに、次いで３つのマシンが自らのタスクを継続する。アクティブディレクトリは、展開中に必要とされる任意の他の依存関係に対し構築可能である。
【００５４】
[0061]タスクチェーン３３０には、再利用可能な構築要素の定義が含まれる。例えば、ドメインコントローラーを生成するイベントの順序が知られている場合、タスクチェーン３３０は、再利用可能な構築要素を定義するために使用可能であるので、他の開発者が同じ構築要素を何度も繰り返して作り直す必要がない。ドメインコントローラーは、定義可能であり、テスト環境の複数の異なる実装形態は、その構築要素を再利用することができる。したがって、タスクチェーン３３０は、再利用性のための共通のタスクの定義を促進し、またこれらの複数のマシン環境を生成し、順序が狂って発生しないようにイベントを同期させる迅速で簡単な方法を提供する。
【００５５】
[0062]トポロジーコップ３４０は、いったんこれらの環境がコンパイルされると、検証を実行する。トポロジーコップ３４０は、トポロジーを検証するためにトポロジーがそれに対し実行されるツールであり、その結果、トポロジーが環境に挿入されるとき、検証されたトポロジーが実際に動作することになる。これにより、リソースが浪費されることを防止する。例えば、タスクチェーン３３０に、指定がされなかった必要な設定がある場合、トポロジーコップは、その未指定の設定を検出し、開発者に設定がされなかったことを通知するはずである。
【００５６】
[0063]図４は、一実施形態による、トポロジー展開サービス（ＴＤＳ）システム１１０の詳細なブロック図である。図４では、プライマー２１０は、データベースおよび一連のサービスを提供し、そこでは、それぞれが単一の簡単なタスクを実行する。プライマー２１０は、トポロジー展開に必要な共通の構築要素を提示するよく知られた段階／プールを提供する。プライマー２１０は、共通のトポロジー構築要素にリソースをあらかじめ構築するための一連のサービスを提供し、仮想マシンおよび物理マシンの他、電話、Ｌｉｎｕｘ（登録商標）ボックス、ＩＰアドレスなどの他のリソースタイプのための中央マネージャーとして機能する。プライマーは、すべてのリソースにわたる管理を行い、リソースのチェックインおよびチェックアウトを実施する。信頼できない展開は、プライマー２１０により、繰返しを通じて、また所望の環境を生成する複数のレイヤーのステップの使用を通じて、低減される。
【００５７】
[0064]プライマー２１０は、リソースピッカー２２０に結合されている。リソースピッカー２２０は、使用可能なマシンを採用し、そのマシンをリソースが必要とされる事前定義された場所へ移行する。
【００５８】
[0065]プライマー２１０は、トポロジービルダー２３０にも結合されている。トポロジービルダー２３０は、汎用のクライアント駆動型タスクエンジンを使用してトポロジー環境を展開する。ＮＬＢ４１６は、高可用性および高信頼性を実現するために使用される。
【００５９】
[0066]リソースピッカー２２０は、同じように構成されたマシンの静的グループを提供する、リソースプール４２０にも結合されている。各プールには、目標、すなわちプライマー２１０が常に維持しようとしている目標の数がある。例えば、基本ドメインの目標が１００マシンであり、９９だけが存在する場合、１００番目のマシンの作成が開始される。
【００６０】
[0067]プライマー２１０は、パスＡからＢに定義されたパスを定義する「遷移」に従ってマシンを移行する。各遷移は、それと関係している移行元および移行先「プール」を有し、また各遷移は、「定義」を有する。定義は、トポロジービルダーＸＭＬファイルを生成するように、Ｄａｒｔ  ＡＰＩを使用して「トポロジールックアップ」として実装することができる。状態は、スキャンリソースを使用して「プライマーコールバック」機構として更新することができ、それにより、この機構がトポロジービルダー２３０においてＡからＢに移行するマシンを検出できるようにする。「優先事項」および「貴重なリソース」のパラメーターは、好ましい処理順序を確立するために使用される。優先事項は、何がオンラインでもつべき最も重要なプールであるかを指し、一方、貴重なリソースは、より下位の数を有し、したがって上位の使用プールによって機会を奪われるプールを指す。
【００６１】
[0068]例えば、リソースプール４２０におけるリソースの優先順位付けは、優先事項が「処理順序」に設定された状態で構成可能であり、そこでは、各プールが処理順序を有し、また各遷移が処理順序を有する。レイヤーおよびプールは、「逆順」で処理され、これにより、より反応型のチャーン（ｃｈｕｒｎ）をもたらす。「貴重なリソース」のアプローチに基づく設定は、ワークグループをドメインよりも先に、Ｗｉｎｄｏｗｓ（登録商標）２００３をＷｉｎｄｏｗｓ（登録商標）２００８よりも先に、およびＬｏｃ／ＳａｎｄｂｏｘをＯｆｆｉｃｉａｌよりも先に処理することを含み得る。しきい値修正子（ｔｈｒｅｓｈｏｌｄ  ｍｏｄｉｆｉｅｒ）も使用することができる。しきい値修正子は、「異常な」動作を補う一時的な調整を行い、システムが正常に戻る有効期限を有する。しきい値修正子は、最大目標値と最小目標値の両方を増加または減少させることもできる。
【００６２】
[0069]運用中、ユーザー４３０、４３２は、ＴＤＳ  Ｗｅｂクライアントインターフェイス２７０を使用して、要求４３４、４３６をそれぞれ送信する。あらかじめ構築された４５０環境またはカスタム４５２環境は、ユーザー４３０、４３２によって要求することができる。ＴＤＳ  Ｗｅｂクライアントインターフェイス２７０は、トポロジーのチェックアウトおよびチェックインを行うための管理ユーザーインターフェイスをユーザー４３０、４３２に提供する、Ｗｅｂページとして構成されたクライアントフロントエンドを提供する。ユーザー４３０によるあらかじめ構築された環境４５０に対する要求の場合、要求４３４は、Ｗｅｂサービス４６０によってプライマー２１０に送られる。プライマー２１０は、リソースピッカー２２０を使用して、要求されたリソースをリソースプール４２０からチェックアウトする。トポロジービルダー２３０は、上述のとおり、置換えのためのリソースの構築を開始する。リソースピッカー２２０によって獲得されたリソースは、次いでユーザー４３０に提供される。
【００６３】
[0070]ユーザー４３２によるカスタム環境４５２に対する要求の場合、要求４３６は、Ｗｅｂサービス４６０によってプライマー２１０に送られる。プライマー２１０は、ジョブをトポロジービルダー２３０に挿入し、所望のグループ化を行う。プライマー２１０はまた、自動的に、必要とされるグループ化を検査および監視し、すべてのリソースの現在の状態を追跡し、リソースピッカー２２０をシステムの現在の在庫表として扱い、必要とされる対象と、リソースピッカー２２０が現在使用可能なものとして示す対象とのプール構成を使用する次に何を生成するかという点に判断の基準を置く。リソースピッカー２２０は、リソースを提供し、トポロジービルダー２３０に、要求されたリソースを創造するために適切なテンプレートを展開するように指示する。より具体的には、プライマー２１０は、トポロジービルダー２３０がリソースを所望の状態に変換できるようにする作業命令を、トポロジービルダー２３０のために生成する。プライマー２１０は、変換するリソースをリソースピッカー２２０に照会し、次いでトポロジービルダー２３０に、提供された作業命令のステップに従ってそのリソースを変換するように指示する。ＯＭＬ（孤立マシンロケーター）ツール２４０、ＯＣＲ（孤立クライアント回復）ツール２５０、およびＡＬＩＳ（全ラボ統合サービス）システム２６０は、ユーザー４３２に提供されたリソースの状態が正しくなるようにする。
【００６４】
[0071]図５は、一実施形態による、ＴＤＳスタック５００の図である。図５では、ＴＤＳスタック５００は、５つの展開されたトポロジー環境を含む。第１の環境５１０は、２つのＷｅｂサーバー５１２、５１４を含む。各Ｗｅｂサーバー５１２、５１４は、アプリケーションプール５１６、ＮＬＢサーバー５１８、トポロジービルダー・サーバー・サービス２３０、およびリソース・マネージャー・サービス５２２を含む。Ｗｅｂサーバー５１２、５１４のテストを可能にするように、テストリソース５２４も提供されている。さらに、分散ファイルシステム（ＤＦＳ）レプリケーション５３０のためのトポロジーが提供されている。ＤＦＳレプリケーションサーバーは、各ファイルサーバー５３２、５３４上に含まれている。各ファイルサーバー５３２、５３４には、ドメイン５３６、５３８が、ＸＭＬストレージ５４０、仮想マシン（ＶＭ）セットアップ５４２、およびトポロジー・インジェクター・サービス（Ｔｏｐｏｌｎｊｅｃｔｏｒ）５４４と共に提供されている。
【００６５】
[0072]２つのアプリケーションサーバー５５０、５５２が、ＴＤＳスタック５００において提供されている。各アプリケーションサーバー５５０、５５２は、プライマーサービス２１０、ＡＬＩＳサービス２６０、およびトポロジーインジェクター・サービス（Ｔｏｐｏｌｎｊｅｃｔｏｒサービス）５５８を含む。２つのＳＱＬ  Ｓｅｒｖｅｒ（登録商標）５６０、５６２は、リソースピッカーデータベース５６４、プライマーデータベース５６６、トポロジーインジェクター（Ｔｏｐｏｌｎｊｅｃｔｏｒ）データベース５６８、およびＡＬＩＳデータベース５７０を含む。ＳＱＬ  Ｓｅｒｖｅｒ（登録商標）５８０、５８２は、トポロジーインジェクター（Ｔｏｐｏｌｎｊｅｃｔｏｒ）データベース５８４のみを含む。
【００６６】
[0073]図６は、一実施形態による、ＴＤＳ  Ｗｅｂクライアントフロントエンド６００を示す。ＴＤＳ  Ｗｅｂクライアントフロントエンド６００は、エンドユーザーがトポロジーをチェックアウトする機能を提供するＷｅｂページとして構成されている。図６では、Ｗｅｂページダイアログ画面６２０が示されている。ユーザーによって選択された１組のフィルターに一致するトポロジー６１０の一覧が、Ｗｅｂページダイアログ画面６２０内に示されている。ユーザーは、トポロジー６１０のうちの１つを選択することによって、各トポロジーと関係する詳細情報を表示することができる。Ｗｅｂページダイアログ画面６２０内には、異なる割当て６３０、６４０、６５０が、ユーザーによってチェックアウトされたトポロジーに基づいて示されている。
【００６７】
[0074]図７は、一実施形態による、あらかじめ構築された環境を瞬時に利用可能にすることにより、テスト用の環境を展開する方法の流れ図７００である。図７では、様々なトポロジーグループの構築、検査、および監視が、自動的に実行される（７１０）。様々なトポロジーグループのライブラリが提供される（７１４）。共通の言語および開発機構が、ライブラリにおける様々なトポロジーグループを表すために提供される（７１８）。インターフェイスが、ユーザーによって提供された環境定義を受信するために、ユーザーに提示される（７２２）。様々なトポロジーグループのライブラリの要素が、ユーザーによって提供された環境定義に従ってテスト環境を生成するために、ユーザーに自動的に提供される（７２６）。様々なトポロジーグループのライブラリからなくなった環境が特定される（７３０）。様々なトポロジーグループのライブラリからなくなった特定された環境に相当する新しい環境を構築するためのテンプレートを獲得するために、テンプレートコンパイラにアクセスが行われる（７３４）。テンプレートコンパイラから獲得されたテンプレートによって提供された命令を使用して、新しい環境が構築される（７３８）。新しい環境を構築することが成功したときに、必要とされる数のトポロジーが再び使用可能であることが検証される（７４２）。
【００６８】
[0075]プロセスが失敗したときに、構築される新しい環境を修復するためのツールが開始される（７４６）。失われたまたは孤立したリソースが特定されたかどうかの決定が行われる（７５０）。はい（７５２）の場合、特定され失われたまたは孤立したリソースは、特定され失われたまたは孤立したリソースを自動回復するための所定の回復サブシステムに渡される（７６０）。決定動作（７５０）で、失われたまたは孤立したリソースが特定されなかった場合（７５４）、あるいは７６０で、特定され失われたまたは孤立したリソースが所定の回復サブシステムに渡された後、何らかの失敗した仮想マシンがあるかどうかの決定が行われる（７７０）。はい（７７２）の場合、チェックアウトされた仮想マシンに対する構成のスナップショットが取得される（７８０）。次いで、失敗した仮想マシンが、取得されたスナップショットを使用して戻される（７８４）。７７０で、失敗した仮想マシンがない（７７４）と決定が行われた場合、または７８４で、失敗した仮想マシンが戻された後、方法７００は終了する。
【００６９】
[0076]図８は、一実施形態による、コンピューティング環境８００を示す。様々な実施形態の様々な態様にコンテキストを提供するために、図８および以下の記述は、実施形態の様々な態様を実施することができる好適なコンピューティング環境８００について簡潔で、概括的な説明を行うものとする。１つまたは複数のコンピューター上で動作するコンピュータープログラムのコンピューター実行可能命令の一般的なコンテキストで実施形態を上述したが、実施形態はまた、他のプログラムモジュールと組み合わせて実行可能であることが、当業者には理解されよう。一般に、プログラムモジュールは、特定のタスクを実行する、かつ／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。
【００７０】
[0077]さらに、本発明の方法が、シングルプロセッサーまたはマルチプロセッサーのコンピューターシステム、ミニコンピューター、メインフレームコンピューターの他、パーソナルコンピューター、ハンドヘルドコンピューティングデバイス、マイクロプロセッサーベースのまたはプログラム可能な家庭用電化製品などを含む、他のコンピューターシステムの構成で実行可能であることが、当業者には理解されよう。
【００７１】
[0078]実施形態の例示した態様はまた、通信ネットワークを介して接続されたリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施可能である。しかし、実施形態のすべてではないがいくつかの態様は、スタンドアロンコンピューター上で実施可能である。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶装置に置かれることが可能である。
【００７２】
[0079]図８を参照すると、一実施形態の様々な態様を実施するシステムは、処理ユニット８２１、システムメモリ８２２、およびシステムバス８２３を備えているコンピューター８２０を含む。このシステムバス８２３は、システムメモリを備えている様々なシステムコンポーネントを、処理ユニット８２１に結合する。処理ユニット８２１は、市販されている様々なプロセッサーのいずれかとすることができる。また、処理ユニット８２１として、デュアルマイクロプロセッサーのアーキテクチャーおよび他のマルチプロセッサーのアーキテクチャーも使用できることを理解すべきである。
【００７３】
[0080]システムバスは、様々な市販のバスアーキテクチャーを用いたメモリバスまたはメモリコントローラー、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。システムメモリは、読取り専用メモリ（ＲＯＭ）８２４およびランダムアクセスメモリ（ＲＡＭ）８２５を含むことができる。基本入出力システム（ＢＩＯＳ）は、ＲＯＭ８２４に格納されており、このＢＩＯＳは、スタートアップ中など、コンピューター８２０内の要素間で情報の転送を支援する基本ルーチンを含む。
【００７４】
[0081]コンピューター８２０は、ハードディスクドライブ８２７、例えばリムーバブルディスク８２９から読み取るまたはこれに書き込む磁気ディスクドライブ８２８、および例えばＣＤ−ＲＯＭディスク８３１から読み取るもしくはこれに書き込む、または他の光学式メディアから読み取るもしくはこれに書き込む光ディスクドライブ（ＣＤ−ＲＯＭドライブ）８３０などのコンピューター可読データ記憶媒体をさらに含む。ハードディスクドライブ８２７、磁気ディスクドライブ８２８、および光ディスクドライブ８３０は、それぞれハードドライブのインターフェイス８３２、磁気ディスクドライブのインターフェイス８３３、および光ディスクドライブのインターフェイス８３４などの第１のインターフェイスによってシステムバス８２３に接続される。ドライブおよびそれに関連するコンピューター可読データ記憶媒体は、コンピューター８２０用のデータ、データ構造、コンピューター実行可能命令などの不揮発性記憶装置を提供する。上記のコンピューター可読データ記憶媒体という記述は、ハードディスク、リムーバブル磁気ディスク、およびＣＤを指すが、当業者には、ＤＶＤ、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイ（Ｂｅｒｎｏｕｌｌｉ）カートリッジなどコンピューターで読取り可能である他のタイプのメディアも例示の動作環境で使用可能であることと、さらにこのようないかなるメディアも本明細書に記載された実施形態の方法を実行するためのコンピューター実行可能命令を含むことができることが理解されよう。
【００７５】
[0082]ドライブおよびＲＡＭ８２５には、オペレーティングシステム８３５、１つまたは複数のアプリケーションプログラム８３６、他のプログラムモジュール８３７、およびプログラムデータ８３８を含む、いくつかのプログラムモジュールが格納可能である。例示したコンピューターのオペレーティングシステム８３５は、実質的に任意の適当なオペレーティングシステムであってよいことに留意すべきである。
【００７６】
[0083]ユーザーは、キーボード８４０、およびマウス８４２などのポインティングデバイスを介してコマンドおよび情報をコンピューター８２０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナーなどが含まれる。これらの入力装置および他の入力装置は、システムバスに結合された第２のインターフェイス８４６を介して処理ユニット８２１に接続されることが多いが、パラレルポート、ゲームポート、無線ポート、ユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェイスによって接続されることも可能である。モニター８４７または他のタイプのディスプレイデバイスもまた、ビデオアダプター８４８などのインターフェイスを介してシステムバス８２３に接続される。モニターに加えて、コンピューターは、スピーカー、プリンターなどの他の周辺出力装置（図示せず）を含むこともできる。
【００７７】
[0084]コンピューター８２０は、リモートコンピューター８４９などの１つまたは複数のリモートコンピューターとの論理接続を使用して、ネットワーク化された環境において動作することができる。リモートコンピューター８４９は、ワークステーション、サーバーコンピューター、ルーター、ピアデバイス、または他の一般的なネットワークノードとすることができ、図８にはメモリ記憶装置８５０のみを示しているが、通常、コンピューター８２０に関して説明した要素の多くまたはすべてを含む。図８に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）８５１およびワイドエリアネットワーク（ＷＡＮ）８５２を含むことができる。このようなネットワーク環境は、オフィス、企業規模のコンピューターネットワーク、イントラネット、およびインターネットにおいては、一般的である。
【００７８】
[0085]ＬＡＮネットワーク環境で使用されるとき、コンピューター８２０は、ネットワークインターフェイスまたはネットワークアダプター８５３を介してＬＡＮ８５１と接続可能である。ＷＡＮネットワーク環境で使用されるとき、コンピューター８２０は、モデム８５４を含むことができ、かつ／またはＬＡＮ上の通信サーバーと接続され、かつ／またはインターネットなどのワイドエリアネットワーク８５２を通じて通信を確立するための他の手段を有する。モデム８５４は、内蔵または外付けとすることができ、第２のインターフェイス８４６を介してシステムバス８２３と接続可能である。ネットワーク化された環境では、コンピューター８２０またはその一部と関連して示したプログラムモジュールは、リモートのメモリ記憶装置に格納することができる。図示されたネットワーク接続は例示であり、コンピューター間の通信リンクを確立する他の手段が使用可能であることが理解されよう。
【００７９】
[0086]以上の例示的実施形態の説明は、例示および説明の目的で提示した。それは、網羅的であること、または開示された厳密な形態に実施形態を限定することを意図するものではない。多くの修正形態および変形形態が、上記の教示を踏まえた上で可能である。実施形態の範囲がこの詳細な説明ではなく、本明細書に添付された特許請求の範囲によって限定されることが意図される。
【図１】
0005941542.tif 000002
【図２】
0005941542.tif 000003
【図３】
0005941542.tif 000004
【図４】
0005941542.tif 000005
【図５】
0005941542.tif 000006
【図６】
0005941542.tif 000007
【図７】
0005941542.tif 000008
【図８】
0005941542.tif 000009