(57)【要約】【課題】  複数のクライアントコンピュータ間でソフトウェアイメージの作成および構成を分散させること。【解決手段】  サーバコンピュータが、ソフトウェアイメージ作成に関連するジョブを定義する。クライアントコンピュータのそれぞれが、サーバと通信してジョブを特定し、受け入れ、完成させる。サーバおよびクライアントコンピュータは、ジョブの選択可能性およびステータスを示すデータ構造を保持する。分散ビルド環境において、相手先ブランド製造者（ＯＥＭ）およびシステムビルダが、ファクトリでソフトウェアを容易に変更し、作成し、およびイメージングして、リソース消費および時間を劇的に低減することができる。【選択図】  図２
2005018782.tif 000002
【特許請求の範囲】
【請求項１】
分散ビルドのためのシステムであって、
インストールされるソフトウェアイメージの作成に関連する操作をジョブのそれぞれが有する該ジョブのリストを保持する第１のコンピュータと、
前記第１のコンピュータから前記ジョブの１つを受け入れ、該受け入れたジョブに関連する前記操作を行なうことによって前記受け入れたジョブを実行する第２のコンピュータと
を備えたことを特徴とするシステム。
【請求項２】
前記操作は、前記ソフトウェアイメージをインストールすることと、前記ソフトウェアイメージを構成することと、前記ソフトウェアイメージをイメージングすることとを備えたことを特徴とする請求項１に記載のシステム。
【請求項３】
前記第２のコンピュータが前記第１のコンピュータからの前記ジョブの１つを受け入れるマスタコンピュータをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項４】
１つまたは複数の第１のコンピュータがソフトウェアイメージの作成を第２のコンピュータに委譲する分散ビルド環境における方法であって、前記第２のコンピュータによって行われる前記方法は、
インストールされるソフトウェアイメージの作成に関連する操作を有するジョブを前記第１のコンピュータの１つから受け入れることと、
前記操作を行なうことによって前記受け入れたジョブを完成させ、前記完成させたジョブは、前記インストールされるソフトウェアイメージを表すことと
を備えることを特徴とする方法。
【請求項５】
前記第１のコンピュータの１つから前記ジョブを要求することをさらに備えることを特徴とする請求項４に記載の方法。
【請求項６】
前記インストールされるソフトウェアイメージを構成することをさらに備えることを特徴とする請求項４に記載の方法。
【請求項７】
前記第２のコンピュータは、最小限のオペレーティングシステムを実行することを特徴とする請求項４に記載の方法。
【請求項８】
前記受け入れることは、
前記第１のコンピュータのそれぞれと次々に通信して前記第１のコンピュータに関連する複数のジョブを特定することと、
通信中に特定された前記複数のジョブの第１のジョブを選択することと
を備えることを特徴とする請求項４に記載の方法。
【請求項９】
前記第１のコンピュータのそれぞれは、前記第１のコンピュータに関連する特定のファイルに前記ジョブのリストを格納し、前記通信することは、前記第１のコンピュータの各コンピュータ上で前記特定のファイルにアクセスして前記ジョブを特定することを備えることを特徴とする請求項８に記載の方法。
【請求項１０】
前記ジョブのそれぞれに関連し、前記第１のコンピュータ上に格納されたジョブステータスファイルを検索することによって前記第１のコンピュータのそれぞれにて前記ジョブのそれぞれのステータスを判定することをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１１】
前記複数のジョブのそれぞれは、対応する優先順位を有することを特徴とする請求項８に記載の方法。
【請求項１２】
前記複数のジョブのそれぞれは、リストの中で対応する前記優先順位に従って編成されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記完成させることは、前記ジョブに関連するスクリプトを実行することを備えることを特徴とする請求項４に記載の方法。
【請求項１４】
前記ジョブを受け入れた前記第１のコンピュータの前記１つに前記インストールされるソフトウェアイメージを伝送することをさらに備えることを特徴とする請求項４に記載の方法。
【請求項１５】
前記インストールされるソフトウェアイメージは、オペレーティングシステムおよびアプリケーションプログラムの１つまたは複数を表すことを特徴とする請求項４に記載の方法。
【請求項１６】
第１のコンピュータがインストールされるソフトウェアイメージの作成を第２のコンピュータに委譲する分散ビルド環境において、前記第１のコンピュータ上に格納され、１つまたは複数のジョブを表すデータ構造であって、
前記ジョブのそれぞれに関連するジョブ識別子と、
インストールされるソフトウェアイメージを作成するために前記第２のコンピュータによって行われるべき前記ジョブ識別子に関連する複数の操作を定義するスクリプトと
を備えたことを特徴とするデータ構造。
【請求項１７】
前記ジョブのそれぞれは、対応する優先順位を有し、前記ジョブのそれぞれは、データ構造の中で対応する前記優先順位に従って編成されたことを特徴とする請求項１６に記載のデータ構造。
【請求項１８】
前記スクリプトは、前記インストールされるソフトウェアイメージを構成する操作をさらに定義したことを特徴とする請求項１６に記載のデータ構造。
【請求項１９】
第１のコンピュータがインストールされるソフトウェアイメージの作成を第２のコンピュータに委譲する分散ビルドのためのシステムであって、
インストールされるソフトウェアイメージの作成にジョブのそれぞれが関連している該ジョブのリストを前記第１のコンピュータが保持するリスト手段と、
前記リスト手段を介して前記第１のコンピュータによって保持された前記ジョブの１つを前記第２のコンピュータが受け入れるインターフェース手段であって、前記ジョブはインストールされるソフトウェアイメージの前記作成に関連する操作を有しているインターフェース手段と、
前記操作を実行することによって前記インターフェース手段を介して受け入れられた前記ジョブを前記第２のコンピュータが完成させるインストール手段であって、前記完成したジョブは、前記インストールされるソフトウェアイメージを表すインストール手段と
を備えたことを特徴とするシステム。
【請求項２０】
前記インストールされるソフトウェアイメージを前記第２のコンピュータが構成する手段をさらに備えたことを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ソフトウェアイメージ作成の分野に関する。詳細には、本発明の実施形態は、第１のコンピュータがソフトウェアイメージの作成を第２のコンピュータに委譲する分散ビルド環境に関する。
【背景技術】
【０００２】
代表的なオペレーティングシステムビルド環境では、コードが、コンピュータによってバイナリ形式にコンパイルされる。そのような環境は、オペレーティングシステムのランタイムイメージを作成するための外部リソースを使用する能力を有していない。ビルド環境は、コンピュータ内部のイメージ作成をサポートすることができるが、その場合、最終的なオペレーティングシステムイメージの作成の必要を満たすのに貴重なリソースの限られた供給量しか使用することができない。例えば、一部の既存の環境では、特定のイメージ（すなわち、オペレーティングシステムまたはアプリケーションプログラム）をビルドするために１つのコンピュータを専用化し、構成する。しかし、そのようなシステムは、専用化されたコンピュータが、特定のイメージをビルドするためだけに（例えば、場合により、１日に１、２回）使用されるという点で非効率的である。このように、各専用化されたコンピュータは、ほとんどの時間アイドル状態となっている。さらに、必要とされる処理ハードウェアの量は、作成されることになる異なるイメージの数が増えるにつれて増加する。例えば、７つの異なる製品の６つのバージョンまたは構成のためのイメージをビルドする必要がある場合、すべてのイメージをビルドするのに４２の専用化されたコンピュータが必要とされる。専用マシンのための初期のハードウェア、メンテナンス、およびサポートの費用は、かなりのものである。外部リソースを使用してソフトウェアイメージを作成することができるシステムの必要性が存在する。さらに、少数のビルドコンピュータを効率的に使用する、イメージをビルドするためのシステムの必要性が存在する。加えて、ユーザは、オペレーティングシステムのインストールおよび構成が、通常、エンドユーザのコンピュータ上で行われるので、遅延および不都合を経験する。インストールおよび構成がイメージ作成中に行われるシステムの必要性が存在する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
一部の既存のシステムは、タスクを完了させるためにクライアントコンピュータに割り振る。例えば、一部の既存のシステムでは、クライアントコンピュータがアプリケーションプログラムの一部分をコンパイルし、中央サーバがコンパイルされた部分をアプリケーションプログラムとして一緒にリンクする分散コンパイルを実施する。別の例で、ＳＥＴＩ＠ｈｏｍｅプロジェクトは、地球外生物を探すデータの解析のためにタスクをクライアントコンピュータに配分している。しかし、そのようなシステムでは、クライアントコンピュータは、最終成果物（ｆｉｎａｌ  ｐｒｏｄｕｃｔｓ）を生み出さない。さらに、そのようなシステムは、インストールされるソフトウェアイメージの作成に関連していない。
【０００４】
したがって、ソフトウェアイメージの分散ビルド環境のためのシステムが、以上の欠点およびその他の欠点の１つまたは複数に対処するために望まれている。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、分散ビルド環境に関する。一実施形態では、本発明は、ソフトウェアイメージのインストールおよび構成を第１のコンピュータから第２のコンピュータに委譲することを含む。１つの形態においては、複数のサーバコンピュータが、ソフトウェアイメージのインストールおよび構成に関連するジョブを定義する。複数のクライアントが、サーバと通信してジョブを識別し、受け入れ、完成させる。例えば、本発明の分散ビルド環境における各クライアントコンピュータを継続的に利用して異なるソフトウェアイメージを生成することができる。このようにして、イメージを作成するのに必要とされるクライアントコンピュータの数を低減する。
【０００６】
本発明は、イメージングを通してインストールおよび構成の一般的な方法を提供する。さらに、オペレーティングシステムインストール時間が短縮される一方で、クライアントがビルドを実行することによってインストールおよびイメージングがカスタマイズ可能である。相手先ブランド製造者（ＯＥＭ）およびシステムビルダが、ファクトリでクライアントを容易に変更し、作成し、イメージングするのに本発明の分散イメージングプロセスを使用してリソースの消費および時間を劇的に低減することができる。
【０００７】
本発明の１つの態様によれば、分散ビルドのためのシステムは、第１のコンピュータおよび第２のコンピュータを含む。第１のコンピュータは、ジョブのリストを保持する。ジョブのそれぞれは、インストールされるソフトウェアイメージの作成に関連する操作（ｏｐｅｒａｔｉｏｎ）を有する。第２のコンピュータは、第１のコンピュータからジョブの１つを受け入れ、ジョブに関連する操作を実行することによって受け入れたジョブを実行する。
【０００８】
本発明の別の態様によれば、１つまたは複数の第１のコンピュータがインストールされるソフトウェアイメージの作成を第２のコンピュータに委譲する方法が分散ビルド環境において行われる。第２のコンピュータによって行われる方法は、第１のコンピュータの１つからジョブを受け入れることを含む。ジョブは、インストールされるソフトウェアイメージの作成に関連する操作を有する。また、方法は、その操作を実行することによって、受け入れられたジョブを完成させることも含む。完成したジョブは、インストールされるソフトウェアイメージを表す。
【０００９】
本発明のさらに別の態様によれば、第１のコンピュータがインストールされるソフトウェアイメージの作成を１つまたは複数の第２のコンピュータに委譲する方法が、分散ビルド環境において行われる。第１のコンピュータによって実行される方法は、ジョブのリストを保持することを含む。ジョブのそれぞれは、インストールされるソフトウェアイメージの作成に関連する。第２のコンピュータのそれぞれは、ジョブの１つまたは複数を選択し、選択されたジョブを実行する。
【００１０】
本発明のさらに別の態様によれば、第１のコンピュータがインストールされるソフトウェアイメージの作成を第２のコンピュータに委譲するデータ構造が、分散ビルド環境において存在する。データ構造は、ソフトウェアイメージのインストールに関連するステータスを表す。データ構造は、第２のコンピュータに関連する識別子を含む。また、データ構造は、識別子によって特定された第２のコンピュータによって行われたインストールのステータスを示す記述子も含む。
【００１１】
本発明の別の態様によれば、第１のコンピュータがインストールされるソフトウェアイメージの作成を第２のコンピュータに委譲するデータ構造が、分散ビルド環境において存在する。データ構造は、第１のコンピュータ上に格納される。データ構造は、１つまたは複数のジョブを表す。データ構造は、ジョブのそれぞれに関連するジョブ識別子を含む。また、データ構造は、ソフトウェアイメージをインストールするために第２のコンピュータによって実行されることになるジョブ識別子に関連する複数の操作を定義するスクリプトも含む。
【００１２】
本発明のさらに別の態様によれば、システムは、第１のコンピュータがインストールされるソフトウェアイメージの作成を第２のコンピュータに委譲する分散ビルドを提供する。システムは、第１のコンピュータのためのリスト手段、第２のコンピュータのためのインターフェース手段、および第２のコンピュータのためのインストール手段を含む。リスト手段は、ジョブのリストを保持する。ジョブのそれぞれは、インストールされるソフトウェアイメージの作成に関連する。インターフェース手段は、リスト手段を介して第１のコンピュータによって保持されるジョブの１つを受け入れる。ジョブは、ソフトウェアイメージのインストールに関連する操作を有する。インストール手段は、その操作を実行することによってインターフェース手段を介して受け入れられたジョブを完成させる。完成したジョブは、インストールされるソフトウェアイメージを表す。
【００１３】
代替として、本発明は、様々な他の方法および装置を備えることも可能である。
その他の特徴は、一部明白であり、一部以下に指摘する。
【発明を実施するための最良の形態】
【００１４】
対応する参照文字は、図面全体を通して対応する部分を示している。
１つの実施形態では、本発明は、１つまたは複数の第１のコンピュータがソフトウェアイメージの作成（例えば、インストールおよび構成）を１つまたは複数の第２のコンピュータに委譲する分散ビルド環境を含む。詳細には、少なくとも１つのサーバが、少なくとも１つの分散クライアントによって完成されるべきイメージング作業項目（例えば、ジョブ）のリストを作成する。リストは、サーバ構成、およびビルドが作成されている環境に基づいて作成される。作業項目リストが作成された後、いずれかの利用可能なイメージングクライアントが、サーバのいずれか１つからの作業項目の１つを選択し、完成させる能力を有する。各作業項目は、クライアントのうちの１つのみによって選択され、完成させられる。クライアントは、オペレーティングシステムをインストールし、構成し、イメージングし、そして最終イメージをサーバにアップロードして戻す。サーバは、ジョブを完成させるための命令を（例えば、スクリプト作成メカニズムを介して）クライアントに提供する。クライアントは、ジョブを完成させた後、完成ステータスによりサーバを更新する。次に、クライアントは、受け入れ、完成させるべき別のジョブを検索する。
【００１５】
本発明の分散ビルド環境は、クライアントに関して最小限の構成を含み、クライアントの再割り振りおよび再配分を簡単にする。分散環境は、サーバのいずれかに追加のクライアントリソースを割り振る。加えて、プロセスは、スケーラブルである。１つのイメージングクライアントが複数の異なる製品イメージを作成することができるので、追加のイメージングクライアントを加えることによってビルド時間を大幅に低減することができる。複数のイメージングクライアントに複数のソフトウェアイメージをインストールさせ、構成させることにより、クライアントリソースの使用と効率が劇的に向上する。例えば、以前のシステムでは、７つの異なる製品の６つのバージョンまたは構成のためのイメージをビルドする必要がある場合、すべてのイメージをビルドするのに４２の専用コンピュータが必要とされる。しかし、本発明では、単一のコンピュータが、イメージのそれぞれを連続的にビルドすることができ、これによって処理ハードウェアの量とコストを低減する。
【００１６】
まず、図１を参照すると、ブロック図が、本発明の分散ビルド環境において使用するためのクライアント／サーバネットワークシステムの例示的な実施形態を示している。図１は、複数のサーバ５１および複数のクライアント５２を備えるネットワークシステム５０を示している。これらのコンピュータ５１、５２は、周知のネットワーキング技術を使用してネットワーク５３を介して高速データ通信のために接続される。インターネットが、ネットワーク５３の一例である。サーバ５１が、多数のリモートネットワーククライアント５２から要求を受け入れる。サーバ５１は、他の通信手段も利用することができるが、ネットワーク５３を介して、データを含む応答をクライアント５２に提供する。本発明をサーバ５１およびクライアント５２に関連して説明するが、本発明は、他のネットワークシステムにおいても機能することが、本発明者らによって企図されている。つまり、本発明は、図１に例示するクライアント／サーバネットワークシステム５０に限定されない。例えば、本発明は、ピアツーピアネットワークシステムにおいても適用可能である。
【００１７】
次に、図２を参照すると、例示的なブロック図が、本発明によるクライアント５２とサーバ５１の間の通信を示している。図２では、サーバＡやサーバＢのようなサーバコンピュータ５１がそれぞれ、クライアントＸ、クライアントＹ、およびクライアントＺのような複数のクライアントコンピュータ５２と通信して分散ビルド環境においてインストールされるソフトウェアイメージの作成を委譲する。サーバコンピュータ５１のそれぞれは、ジョブのリストを保持するように動作する第１のコンピュータとして機能する。ジョブのそれぞれは、インストールされるソフトウェアイメージの作成に関連する少なくとも１つの操作に関係する。例えば、ソフトウェア製品ごとに１つのジョブが存在し、サーバ５１ごとに複数のジョブが存在することがある。クライアントコンピュータ５２のそれぞれは、第１のコンピュータからジョブの１つを受け入れ、そのジョブに関連する操作を実行することによって、受け入れられたジョブを完成させるように動作する第２のコンピュータとして機能する。詳細には、操作は、ソフトウェアをインストールすること、ソフトウェアを構成すること、およびソフトウェアをイメージングすることを含む。第２のコンピュータ（例えば、クライアントコンピュータ５２）は、インストールされ、構成されたソフトウェアイメージを第１のコンピュータ（例えば、サーバコンピュータ）に送る。
【００１８】
１つの形態では、サーバコンピュータ５１およびサーバソフトウェアは、ジョブのリストを保持するためのリスト手段２０２を構成する。クライアントコンピュータ５２およびクライアントソフトウェアが、サーバコンピュータ５１からジョブの１つを受け入れるためのインターフェース手段２０４を構成する。クライアントコンピュータ５２およびクライアントソフトウェアは、ジョブに関連する１つまたは複数の操作を実行することによって受け入れられたジョブを完成させるためのインストール手段２０６も構成する。完成したジョブは、インストールされたソフトウェアイメージを表す。リスト手段、インターフェース手段、およびインストール手段に対応する構造は、図に例示し、本明細書で説明する要素をさらに含む。さらに、インストールされるソフトウェアイメージ（図示せず）を構成する手段に対応する構造は、クライアントコンピュータ５２、クライアントソフトウェア、ならびに図に例示し、本明細書で説明する要素を含む。
【００１９】
次に、図３を参照すると、例示的なブロック図が、すべてのクライアント５２のためにすべてのサーバ５１からのジョブを保持するマスタサーバ３０２の使用を示している。図３の例示的な実施形態では、各クライアントコンピュータ５２が、ポーリングするか、または別の形でマスタサーバ３０２を探し出す。マスタサーバ３０２は、利用可能なサーバコンピュータ５１のリストを保持し、そのリストをクライアントコンピュータ５２のそれぞれに定期的に（例えば、要求時に、またはブロードキャストして）通信する。クライアントコンピュータ５２は、そのリストにアクセスして、委譲され完成されるべきジョブを有するサーバ５１（例えば、サーバＡ）を見つける。次に、そのジョブが、マスタサーバ３０２を通して、またはサーバ５１とクライアント５２の間のピアツーピア接続を介して、クライアント５２に委譲することができる。別の実施形態では、クライアントコンピュータ５２は、複数のマスタサーバ３０２の少なくとも１つと通信する。
【００２０】
次に、図４を参照すると、例示的な流れ図が、本発明によるクライアントソフトウェアの動作を示している。クライアントソフトウェアは、４０２でサーバ５１の１つからのジョブを要求するためのコンピュータ実行可能命令、４０４でジョブを受け入れるためのコンピュータ実行可能命令、および４０６で操作を実行することによって受け入れられたジョブを完成させるためのコンピュータ実行可能命令を含む。ジョブを受け入れることは、サーバ５１のそれぞれと次々に通信して、サーバ５１に関連する１つまたは複数のジョブを特定することを含む。サーバ５１のそれぞれが、サーバ５１に関連する特定のファイル（例えば、図７のｒｅｌｂｕｉｌｄ．ｘｍｌ）に選択可能なジョブのリストを格納する。クライアントコンピュータ５２は、サーバ５１上の特定のファイルにアクセスして選択可能なジョブを特定する。１つの形態では、各サーバ５１は、ジョブのそれぞれに関連し、サーバ５１によってアクセス可能な媒体上に格納されるジョブステータスファイル（例えば、図７のｊｏｂ＿ｉｄ．ｘｍｌ）も格納する。クライアントコンピュータ５２は、ジョブに関連するジョブステータスファイルを検索することにより、ジョブのそれぞれの選択可能性ステータスを判別する。例えば、ジョブステータスファイルの欠如は、そのジョブが選択可能であることを示す。
【００２１】
ジョブのそれぞれは、対応する優先順位を有する。ジョブのリストは、各ジョブの優先順位に従って編成される。このように、クライアントコンピュータ５２は、最高の優先順位のジョブを（例えば、特定されたジョブの最初のものを選択することにより）選択する。代替として、または付加的に、クライアントコンピュータ５２は、サーバ５１の１つによって割り当てられたジョブを受け入れることができる。ジョブを受け入れると、クライアントコンピュータ５２は、そのジョブに関連するファイル（例えば、図７のｊｏｂ＿ｉｄ．ｘｍｌ）を作成して、クライアントコンピュータ５２が、現在、そのジョブに関連する操作を実行していることを示す。このファイルは、クライアントコンピュータ５２および／またはサーバコンピュータに関連するコンピュータ可読媒体上に格納される。図７のようにサーバコンピュータに関連する媒体上にファイルを格納するため、クライアントコンピュータ５２は、認証のためのクリデンシャル（ｃｒｅｄｅｎｔｉａｌ）をサーバ５１に提供する。
【００２２】
クライアントコンピュータ５２の１つによってジョブが受け入れられたことを示すための他の手段が存在することが、当分野の技術者であれば気付くであろう。例えば、サーバ５１のそれぞれのジョブリストが、クライアントコンピュータ５２の１つによってジョブが受け入れられたかどうかを示すフィールドを含むことが可能である。ジョブの１つが受け入れられた時点で、クライアント５２またはサーバ５１が、フィールドを更新して、クライアント５２がジョブを受け入れたことを示す。すべてのそのような手段が本発明の範囲に含まれることが、本発明者らによって企図されている。
【００２３】
クライアントコンピュータ５２は、ジョブを完成させるためのタスクリストまたはスクリプトなどの命令をダウンロードすることもできる。別の実施形態では、命令は、ジョブを完成させる際に使用するためのライブラリまたは他のオブジェクトファイルなどのソフトウェアコンポーネントを含む。クライアントソフトウェアは、４０８でインストールされるソフトウェアイメージを構成するための命令、および４１０でインストールされるソフトウェアイメージを、ジョブを受け入れたサーバ５１に伝送して戻すための命令を含む。インストールされるソフトウェアイメージは、展開の準備ができているオペレーティングシステムおよび／またはアプリケーションプログラムを表す。
【００２４】
クライアントコンピュータ５２によってアクセス可能な１つまたは複数のコンピュータ可読メディアが、図４に示された方法を実行するためのコンピュータ実行可能命令を有する。１つの実施形態では、クライアントコンピュータ５２は、稼動中の最小限のオペレーティングシステム環境の状況においてこれらの命令を実行する。
【００２５】
具体例では、クライアントソフトウェアは、ポストされたジョブを求めてサーバを継続的にポーリングするよう実行される。特定のサーバ５１によってポストされたジョブのそれぞれについて、クライアントソフトウェアは、そのジョブの現在の状態を判定する。１つの実施形態では、クライアントソフトウェアは、ジョブに関連するジョブステータスファイル（図７を参照）の欠如または存在を検索する。各ジョブのジョブステータスファイルにより、その特定のサーバ５１から選択可能なジョブが存在しないことが示された場合、クライアントソフトウェアは、ポストされたジョブを求めてさらなるサーバ５１を次々にポーリングする。
【００２６】
特定のサーバ５１から１つまたは複数のジョブが選択可能である場合、クライアントソフトウェアは、ジョブの１つを受け入れるように実行される。例えば、クライアントソフトウェアは、最初に選択可能なジョブを受け入れる（優先順位別に順序付けられた場合）か、あるいはジョブをポストしているサーバ５１によって割り当てられたジョブを受け入れることができる。サーバコンピュータ５１の１つに関連するジョブの１つを受け入れると、クライアントソフトウェアは、クリデンシャルを使用して、ジョブが受け入れられたことを示すファイル（例えば、図７のｊｏｂ＿ｉｄ．ｘｍｌ）をサーバコンピュータ上に作成する。さらに、クライアントソフトウェアは、対応するステータスファイルをローカルに作成することができる。クライアントソフトウェアは、受け入れられたジョブに関連する操作を実行してそのジョブを完成させる。例えば、操作はスクリプトに具体化されて、ソフトウェアイメージ（例えば、オペレーティングシステムまたはアプリケーションプログラムのイメージ）を作成し、インストールし、カスタマイズし、構成し、そして／または変更することができる。ジョブが完成すると、クライアント５２は、インストールされ、構成されたソフトウェアイメージを格納し、これはどこか別の場所に（例えば、ジョブをポストしたサーバコンピュータに）送ることができる。
【００２７】
クライアント５２の例示的なスクリプトは、次の１つまたは複数のような操作を含む。これらは、ハードドライブを構成またはフォーマットすること、セットアップのために特定のファイルをダウンロードすること、セットアップを開始または起動すること、セットアップを完成させること、クライアント５２をアクティブ化すること、最小限のオペレーティングシステム環境にブートすること、オペレーティングシステムをイメージングすること、および完成したイメージをサーバ５１にアップロードすることである。
【００２８】
次に、図５を参照すると、例示的な流れ図が、本発明によるサーバソフトウェアの動作を示している。サーバソフトウェアは、５０２でジョブのリストを動的に作成し、保持するためのコンピュータ実行可能命令を含む。ジョブのそれぞれは、インストールされるソフトウェアイメージの作成（例えば、ソフトウェアイメージをインストールし、構成すること）に関連している。サーバコンピュータが、クライアントコンピュータ５２によってアクセス可能な（例えば、記憶媒体上の）ネットワークリソースとして保持されるリストをポストする。クライアントコンピュータ５２のそれぞれが、ジョブの１つまたは複数を選択し、選択されたジョブを実行する。リストは、クライアントコンピュータ５２による選択のために用意されたジョブ、選択されたジョブ、および実行された（例えば、完成した）ジョブを含む。
【００２９】
保持することは、リストにジョブを追加すること、およびユーザ入力に従ってリストのジョブを編成することを含む。ジョブのリストは、サーバ５１およびクライアントコンピュータ５２によってアクセス可能なファイル（例えば、図７のｒｅｌｂｕｉｌｄ．ｘｍｌ）に格納される。保持することは、クライアントコンピュータ５２によって選択され、実行されたジョブの１つに対応する、作成され、構成されたソフトウェアインストールを５０４でクライアントコンピュータ５２の１つから受け取ることを含む。完成したジョブを受け取ることに応答して、サーバコンピュータは、５０６でジョブをリストから削除する。ソフトウェアインストールは、オペレーティングシステムおよび／またはアプリケーションプログラムを含むことが可能である。１つまたは複数のコンピュータ可読メディアが、図５に示した方法を実行するためのコンピュータ実行可能命令を有する。
【００３０】
ある期間内にクライアントコンピュータ５２の１つによってジョブを受け入れることができなかった場合、サーバ５１がそのジョブの発行元（ｏｒｉｇｉｎａｔｏｒ）に通知する。例えば、この期間は、事前設定されるか、または発行元によって設定可能とすることができる。発行元は、特定のジョブに基づいてこの期間を選択することができる。１つの実施形態では、サーバ５１は、ある期間が経過した後、受け入れられなかったジョブをリストから削除する。発行元、またはサーバ５１は、受け入れられたジョブを完成させるための期間を指定することもできる。１つの実施形態では、クライアント５２が、期間内に受け入れたジョブを完成させることができなかった場合（例えば、クライアント５２が障害および／またはハングアップ（ｈａｎｇ）を生じる）、サーバ５１は、受け入れられたジョブを取り戻して（ｒｅｃｌａｉｍ）、そのジョブを他のクライアント５２に選択可能にする。サーバ５１の障害から回復すると、サーバ５１は、未完成のジョブのリストをクライアント５２に再びポストし、クライアント５２が、それぞれのジョブを取り戻し、イメージング作業が、サーバ５１の障害前と同様に続けられる。
【００３１】
具体例では、サーバソフトウェアが実行されて、各ジョブに優先順位を付けし、ｒｅｌｂｕｉｌｄ．ｘｍｌのようなファイルの中に格納する。優先順位は、期限または任意の他の要因に基づくことが可能であり、ユーザ入力を介して受け取るか、または構成ファイルに格納することが可能である。サーバ５１は、サーバソフトウェアをさらに実行してインストールシェア（ｉｎｓｔａｌｌａｔｉｏｎ  ｓｈａｒｅｓ）を高め、ｒｅｌｂｕｉｌｄ．ｘｍｌファイルをクライアントコンピュータ５２に選択可能にする。サーバソフトウェアは、ジョブが完成するのを待つ。１つの形態では、クライアント５２から完成したイメージを受け取ると、サーバソフトウェアは、完成したソフトウェアイメージを使用してネットワークシェア（ｎｅｔｗｏｒｋ  ｓｈａｒｅｓ）を作成する。
【００３２】
次に、図６を参照すると、ブロック図が、クライアントコンピュータ５２に関連する例示的なコンピュータ可読媒体６０２を示している。媒体６０２は、分散ビルド環境においてデータ構造６０４を格納する。データ構造６０４は、サーバパス６０６およびクリデンシャル６０８を含む。サーバパス６０６は、サーバ５１までのパス（例えば、／／ｓｅｒｖｅｒ／ｉｎｓｔａｌｌのようなネットワークアドレス）を定義する。クリデンシャル６０８は、サーバ５１とクライアント５２の間の通信中の認証のためにクライアント５２およびサーバパス６０６に関連する識別子に関連付けられている。クライアント５２は、識別子、クリデンシャル６０８、およびサーバパス６０６を介してサーバ５１と通信して、クライアント５２が、ソフトウェアイメージのインストールに関連する操作を実行していることをサーバ５１に示す。
【００３３】
次に、図７を参照すると、ブロック図が、サーバコンピュータ５１に関連する例示的なコンピュータ可読媒体７０２を示している。媒体７０２は、分散ビルド環境においてデータ構造７０４を格納する。データ構造７０４は、１つまたは複数のジョブを表す。データ構造７０４は、ジョブ識別子７０６およびスクリプト７０８を含む。ジョブ識別子７０６は、特定のジョブに関連付けられる。スクリプト７０８は、ソフトウェアイメージをインストールするためにクライアント５２によって実行されることになるジョブ識別子７０６に関連する複数の操作を定義する。前述したとおり、ジョブのそれぞれは、対応する優先順位を有し、ジョブのそれぞれがデータ構造７０４にあり、対応する優先順位に従って編成される。スクリプト７０８は、操作をさらに定義してインストールされるソフトウェアイメージを構成する。
【００３４】
図７のコンピュータ可読媒体７０２は、別のデータ構造７１０を格納する。データ構造７１０は、ソフトウェアイメージのインストールに関連するステータスを表す。クライアント５２およびサーバコンピュータ５１は、データ構造７１０にアクセスしてインストールのステータスを判定する。データ構造７１０は、クライアント識別子７１２およびインストールステータス７１４、または他の記述子を含む。クライアント識別子７１２は、クライアントコンピュータ５２を特定する。インストールステータス７１４は、クライアント識別子７１２によって特定されたクライアントコンピュータ５２によって実行されたインストールのステータスを示す。例えば、インストールステータス７１４は、インストールが完成したこと、または進行中であることを示すことが可能である。インストールがまだ進行中である場合、インストールステータス７１４は、完成の割合、および／または完成までの推定の残り時間を示すこともできる。クライアントコンピュータ５２は、ジョブを完成するにつれ、データ構造７１０をそのステータスで更新する。図７では、サーバコンピュータ可読媒体７０２上に格納されているように示されているが、ジョブステータスデータ構造７１０は、代替として、または付加的に、図６のクライアントコンピュータ可読媒体６０２上に格納されることが、本発明者らによって企図されている。
【００３５】
図８は、コンピュータ１３０の形態の汎用コンピューティングデバイスの一例を示している。本発明の一実施形態では、コンピュータ１３０のようなコンピュータは、本明細書で示し、説明したその他の図での使用のためにも適している。コンピュータ１３０は、１つまたは複数のプロセッサまたは処理ユニット１３２、およびシステムメモリ１３４を有する。例示した実施形態では、システムバス１３６は、システムメモリ１３４を含む様々なシステムコンポーネントをプロセッサ１３２に結合する。バス１３６は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、アクセラレーテッドグラフィックスポート（ａｃｃｅｌｅｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｏｒｔ）、およびプロセッサバスまたはローカルバスを含め、いくつかのタイプのバス構造のいずれかの１つまたは複数を表す。限定としてではなく、例として、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００３６】
コンピュータ１３０は、通常、少なくとも何らかの形態のコンピュータ可読メディアを有する。揮発性および不揮発性メディア、リムーバブルおよび非リムーバブルメディアの両方が含まれるコンピュータ可読メディアは、コンピュータ１３０がアクセスすることができる任意の利用可能な媒体とすることができる。限定としてではなく、例として、コンピュータ可読メディアは、コンピュータ記憶メディアおよび通信メディアを含む。コンピュータ記憶メディアには、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のために任意の方法または技術で実装された揮発性および不揮発性メディア、リムーバブルおよび非リムーバブルメディアが含まれる。例えば、コンピュータ記憶メディアには、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気記憶装置、または所望の情報を格納するのに使用することができ、コンピュータ１３０によってアクセスすることができる任意の他の媒体が含まれる。通信メディアは、通常、搬送波または他のトランスポート機構などの変調されたデータ信号でコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを実体化し、あらゆる情報配信メディアを含む。変調されたデータ信号は、当分野の技術者にはよく知られており、信号に情報をエンコードするような仕方でその特性の１つまたは複数が設定または変更されている。有線ネットワークまたは直接配線接続などの有線メディア、ならびに音響、ＲＦ、赤外線、およびその他の無線メディアなどの無線メディアが、通信メディアの例である。また、前述のメディアのいずれかの組み合わせも、コンピュータ可読メディアの範囲に含まれる。
【００３７】
システムメモリ１３４は、リムーバブルおよび／または非リムーバブル、揮発性および／または不揮発性メモリの形態のコンピュータ記憶メディアを含む。図示した実施形態では、システムメモリ１３４は、読み取り専用メモリ（ＲＯＭ）１３８およびランダムアクセスメモリ（ＲＡＭ）１４０を含む。起動中などにコンピュータ１３０内の要素間で情報を転送するのを助ける基本ルーチンが入っている基本入出力システム（ＢＩＯＳ）１４２は、通常、ＲＯＭ１３８に格納される。ＲＡＭ１４０は、通常、処理ユニット１３２によって即時にアクセス可能であり、そして／または現在、処理しているデータおよび／またはプログラムモジュールを収容する。限定としてではなく、例として、図８は、オペレーティングシステム１４４、アプリケーションプログラム１４６、その他のプログラムモジュール１４８、およびプログラムデータ１５０を示している。
【００３８】
コンピュータ１３０は、その他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶メディアを含むことも可能である。例えば、図８は、非リムーバブル不揮発性の磁気メディアとの読み取りまたは書き込みを行うハードディスクドライブ１５４を示している。また、図８は、リムーバブルな不揮発性の磁気ディスク１５８との読み取りまたは書き込みを行う磁気ディスクドライブ１５６、およびＣＤ−ＲＯＭまたは他の光メディアなどのリムーバブルな不揮発性の光ディスク１６２との読み取りまたは書き込みを行う光ディスクドライブ１６０も示している。例示的な動作環境において使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶メディアには、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれるが、これらには限定されない。ハードディスクドライブ１５４、ならびに磁気ディスクドライブ１５６および光ディスクドライブ１６０は、通常、インターフェース１６６のような不揮発性メモリインターフェースによってシステムバス１３６に接続される。
【００３９】
前述し、図８に示したドライブまたその他の大容量記憶装置、ならびに関連するコンピュータ記憶メディアは、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージをコンピュータ１３０に提供する。図８では、例えば、ハードディスクドライブ１５４は、オペレーティングシステム１７０、アプリケーションプログラム１７２、その他のプログラムモジュール１７４、およびプログラムデータ１７６を格納しているものとして示されている。これらのコンポーネントは、オペレーティングシステム１４４、アプリケーションプログラム１４６、その他のプログラムモジュール１４８、およびプログラムデータ１５０と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム１７０、アプリケーションプログラム１７２、その他のプログラムモジュール１７４、およびプログラムデータ１７６は、最低でもそれらが異なるコピーであることを示すために、ここでは異なる符号を付けている。
【００４０】
ユーザは、キーボード１８０やポインティングデバイス１８２（例えば、マウス、トラックボール、ペン、またはタッチパッド）などの入力デバイスまたはユーザインターフェース選択デバイスを介してコマンドおよび情報をコンピュータ１３０に入力することができる。その他の入力デバイス（図示せず）には、マイク、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれることがある。これらの入力デバイスおよびその他の入力デバイスは、システムバス１３６に結合されたユーザ入力インターフェース１８４を通して処理ユニット１３２に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造によって接続されてもよい。また、モニタ１８８または他のタイプのディスプレイデバイスも、ビデオインターフェース１９０のようなインターフェースを介してシステムバス１３６に接続される。モニタ１８８に加えて、コンピュータは、多くの場合、プリンタやスピーカなどのその他の出力周辺デバイス（図示せず）も含み、これらは出力周辺インターフェース（図示せず）を介して接続することができる。
【００４１】
コンピュータ１３０は、リモートコンピュータ１９４などの１つまたは複数のリモートコンピュータに対する論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータ１９４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、通常、コンピュータ１３０に関連して前述した要素の多く、またはすべてを含む。図８に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１９６およびワイドエリアネットワーク（ＷＡＮ）１９８を含むが、その他のネットワークも含むこともある。ＬＡＮ１３６および／またはＷＡＮ１３８は、有線ネットワーク、無線ネットワーク、これらの組み合わせなどとすることができる。そのようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびグローバルなコンピュータネットワーク（例えば、インターネット）で一般的である。
【００４２】
ローカルエリアネットワーキング環境で使用される場合、コンピュータ１３０は、ネットワークインターフェースまたはアダプタ１８６を介してＬＡＮ１９６に接続される。ワイドエリアネットワーキング環境で使用される場合、コンピュータ１３０は、通常、インターネットなどのＷＡＮ１９８を介して通信を確立するためのモデム１７８、またはその他の手段を含む。内部にあることも、外部にあることも可能なモデム１７８は、ユーザ入力インターフェース１８４、または他の適切な機構を介してシステムバス１３６に接続される。ネットワーク化された環境では、コンピュータ１３０に関連して描いたプログラムモジュール、またはその部分が、リモートメモリ記憶装置（図示せず）に格納されることがある。限定としてではなく、例として、図８は、リモートアプリケーションプログラム１９２をメモリデバイス上にあるものとして示している。図示したネットワーク接続は例示的であり、コンピュータ間で通信リンクを確立する他の手段を使用できることも認められよう。
【００４３】
一般に、コンピュータ１３０のデータプロセッサは、コンピュータの様々なコンピュータ可読記憶メディアに様々な時点で格納された命令によってプログラムされる。プログラムおよびオペレーティングシステムは、通常、例えば、フロッピー（登録商標）ディスクまたはＣＤ−ＲＯＭで配布され、そこから、コンピュータの２次メモリにインストールされるか、またはロードされる。実行の際、これらはコンピュータの１次電子メモリに少なくとも部分的にロードされる。本明細書に記載の本発明には、これらのタイプおよび他の様々なタイプのコンピュータ可読記憶メディアが、マイクロプロセッサまたは他のデータプロセッサと連携して以下に記載したステップを実行するための命令またはプログラムを収容するときに、そのようなメディアが含まれる。また、本発明は、コンピュータが本明細書で説明する方法および技術に従ってプログラミングされている場合、そのコンピュータ自体を含む。
【００４４】
例示のため、オペレーティングシステムなどのプログラムおよびその他の実行可能なプログラムコンポーネントは、個別のブロックとして本明細書で示している。しかし、そのようなプログラムおよびコンポーネントは、様々な時点で、コンピュータの異なる記憶コンポーネントに存在し、コンピュータのデータプロセッサによって実行されることが認められよう。
【００４５】
コンピュータ１３０を含む例示的なコンピューティングシステム環境に関連して説明したが、本発明は、数多くの他の汎用または特殊用途のコンピューティングシステム環境または構成で機能する。コンピューティングシステム環境は、本発明の用途または機能の範囲について何ら限定を示唆するものではない。さらに、コンピューティングシステム環境が、例示的な動作環境に示したコンポーネントのいずれか１つ、または組み合わせに関していかなる依存関係または要件を有しているものと解釈されるべきではない。本発明と共に使用するのに適する可能性がある周知のコンピューティングシステム、環境、および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスもしくはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、これらのシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、これらには限定されない。
【００４６】
本発明は、１つまたは複数のコンピュータ、またはその他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な関連で説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造が含まれるが、これらには限定されない。本発明は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶メディアの両方に配置されることがある。
【００４７】
動作中に、コンピュータ１３０のようなクライアントコンピュータ５２は、図４に示したようなコンピュータ実行可能命令を実行して、ソフトウェアイメージとしてインストールし、構成する。さらに、コンピュータ１３０のようなサーバコンピュータ５１が、図５に示したようなコンピュータ実行可能命令を実行して、ソフトウェアイメージングジョブのリストを作成し、保持する。
【００４８】
例えば、コンピュータ１３０のようなサーバコンピュータ５１が、ポストビルド（ｐｏｓｔｂｕｉｌｄ）プロセス中に２つのスクリプトを実行して、イメージングプロセスを準備し、インスタンス化し、完成させることが可能である。ポストビルドプロセスは、コンパイルおよびリンクの後であるが、ビルドをリリースする前に行われる。１つのスクリプト（例えば、ｓｔａｇｅｒｅｌ．ｃｍｄ）は、ネットワーク上のイメージングシェア（ｉｍａｇｉｎｇ  ｓｈａｒｅｓ）を高くし、ジョブ完成のためのステージング（ｓｔａｇｉｎｇ）ディレクトリをモニタする。イメージングが開始すると、サーバコンピュータ５１は、クライアント５２が、完成したイメージをアップロードするのをいつまでも待つ。ステージングディレクトリのジョブステータスファイルが、イメージングプロセスの現在の進行を格納する。ジョブステータスファイルのフィールドＭＡＪＯＲＳＴＡＴＥ（下記を参照）が、少なくとも２つの状態、ＩＮＰＲＯＧＲＥＳＳおよびＦＩＮＩＳＨＥＤの一方を格納する。すべてのジョブが完成すると、スクリプトは、シェアを低くし、次のポストビルドコマンドに進むことによって継続することになる。スクリプトは、シェアを高くすることができなかった場合、または以前のポストビルドエラーが検出された場合、イメージを待つことはしない。
【００４９】
別のスクリプト（例えば、ｉｍｇ＿ｃｒｅａｔｅｓｋｕｓ．ｃｍｄ）が、ポストビルドプロセス中に２回、実行される。このスクリプトは、初回に（すなわち、他方のスクリプト、ｓｔａｇｅｒｅｌ．ｃｍｄに先行して）起動されるときに、サーバ固有の情報、およびイメージングマシン（例えば、クライアントコンピュータ５２）によって必要とされるクライアントジョブが入っているｒｅｌｂｕｉｌｄ．ｘｍｌという名前のファイルを作成する。このスクリプトの第２のインスタンスは、ｓｔａｇｅｒｅｌ．ｃｍｄの後に実行され、ＳＫＵ／成果物を継ぎ合わせて、結果のイメージを特定のディレクトリに入れる。ｓｔａｇｅｒｅｌ．ｃｍｄスクリプトは、クライアントコンピュータ５２がイメージを完成させるのを待ち、ジョブステータスファイルを格納するイメージングディレクトリをモニタする。すべてのジョブが取り込まれ、完成されると、ｓｔａｇｅｒｅｌ．ｃｍｄスクリプトが継続する。イメージ作成は、ログファイルを閲覧することによって検証することができる。
【００５０】
クライアント５２は、ローカルクライアントジョブステータスファイルを削除し、クライアント５２をリブートすることによってジョブを実行している最中に取り戻す（ｒｅｃｌａｉｍ）ことができる。さらに、クライアント５２を取り戻し、サーバジョブステータスファイルを削除することにより、クライアント５２によって受け入れられたイメージングジョブを再起動することができる。
【００５１】
サーバの１つの関連するコンピュータ可読媒体上に格納されたデータ構造の以下の例によって、本発明をさらに例示する。ｒｅｌｂｕｉｌｄ．ｘｍｌ（図６を参照）に対応する例示的なサーバ構成スキーマを以下に示す。便宜上、１つのジョブだけがスキーマに示されているが、スキーマは複数のジョブを定義できることが企図されている。
【００５２】
【表１】
2005018782.tif 000003
【００５３】
以下のデータが取り込まれた（ｐｏｐｕｌａｔｅｄ）データ構造は、サーバ構成スキーマの具体例を表している。
【００５４】
【表２】
2005018782.tif 000004
【００５５】
ｊｏｂ＿ｉｄ．ｘｍｌ（図７を参照）に対応する例示的なジョブステータススキーマを以下に示す。
【００５６】
【表３】
2005018782.tif 000005
【００５７】
以下のデータが取り込まれたデータ構造は、ジョブステータススキーマの具体例を表している。
【００５８】
【表４】
2005018782.tif 000006
【００５９】
クライアントコンピュータ５２の１つに関連するコンピュータ可読メディア上に格納されたデータ構造の以下の例により、本発明を例示する。ｂｕｉｌｄｃｌｉｅｎｔ．ｘｍｌ（図６を参照）に対応する例示的なクライアント構成スキーマを以下に示す。
【００６０】
【表５】
2005018782.tif 000007
【００６１】
以下のデータが取り込まれたデータ構造は、クライアント構成スキーマの具体例を表している。
【００６２】
【表６】
2005018782.tif 000008
【００６３】
本発明の要素、または本発明の実施形態について説明する際、要素は１つまたは複数が存在することを意味するものとする。「備える」、「含む」、および「有する」という用語は、包含的であり、列挙した要素以外に追加の要素が存在する可能性があることを意味するものとする。
【００６４】
上記に照らして、本発明のいくつかの目的が達せられ、その他の有利な結果が得られることが分かる。
【００６５】
本発明の範囲を逸脱することなく、上記の構成、成果物、および方法に様々な変更を加えることが可能であるため、上記の説明に含まれ、付随する図面に示したすべての事項は限定的な意味ではなく、例示として、解釈されるべきである。
【図面の簡単な説明】
【００６６】
【図１】クライアント／サーバネットワークシステムの例示的な実施形態を示す図である。
【図２】本発明によるクライアントとサーバの間の通信を示す例示的なブロック図である。
【図３】すべてのクライアントに対してすべてのサーバからのジョブを保持するためのマスタサーバの使用を示す例示的なブロック図である。
【図４】本発明によるクライアントソフトウェアの動作を示す例示的な流れ図である。
【図５】本発明によるサーバソフトウェアの動作を示す例示的な流れ図である。
【図６】クライアントコンピュータによってアクセス可能な例示的なコンピュータ可読媒体を示すブロック図である。
【図７】サーバコンピュータによってアクセス可能な例示的なコンピュータ可読媒体を示すブロック図である。
【図８】本発明を実施することができる適切なコンピューティングシステム環境の一例を示すブロック図である。
【符号の説明】
【００６７】
５１  サーバ
５２  クライアント
５３  ネットワーク
２０２  リスト手段
２０４  インターフェース手段
２０６  インストール手段
３０２  マスタサーバ
６０２  クライアントのコンピュータ可読媒体
６０４  データ構造
６０６  サーバパス
６０８  クリデンシャル
７０２  サーバのコンピュータ可読メディア
７０４  データ構造
７０６  ジョブ識別子
７０８  スクリプト
７１０  データ構造
７１２  クライアント識別子
７１４  インストールステータス
【図１】
2005018782.tif 000009
【図２】
2005018782.tif 000010
【図３】
2005018782.tif 000011
【図４】
2005018782.tif 000012
【図５】
2005018782.tif 000013
【図６】
2005018782.tif 000014
【図７】
2005018782.tif 000015
【図８】
2005018782.tif 000016