(57)【要約】  本発明は、ソフトウェアシステムのインストールおよび更新を準備するための方法、システムおよびコンピュータープログラム製品に及ぶ。本発明の態様は、任意の数のソフトウェアコンポーネントに対する実質的に任意の数のコード変更を自動的にインストールして、ソフトウェアシステム（例えばクラウド・アプライアンス）を更新するために選択可能なソフトウェア更新パッケージの生成を含む。一態様では、ソフトウェア更新パッケージは、複数のソフトウェアコンポーネントに対するコード変更の参照、およびコード変更をインストールするためのインストールアーチファクトの参照を含み、複数のソフトウェアコンポーネント間の相互依存性も示す。別の態様では、ソフトウェア更新パッケージは、ソフトウェア更新パッケージがソフトウェアシステムを目標状態へ移行させたことを検証するための検証コードの参照を含む。さらなる態様では、ソフトウェア更新パッケージは、異なるインストールアーチファクトについてのインストールアーチファクト参照がマルチ・パス・インストール・プロセスにおける異なるパスの期間に処理されるべきことを明示的に示す。
2017533519.tif 000002
【特許請求の範囲】
【請求項１】
コンピューターシステムで使用するための方法であって、前記方法は、クラウド・アプライアンスを、１つまたは複数の先行する状態のいずれかから、任意の中間状態を介して更新する必要なく、目標状態に直接更新するためのソフトウェア更新パッケージを生成するためのものであり、前記クラウド・アプライアンスは、複数の相互運用ソフトウェアコンポーネントを実行し、前記複数のソフトウェアコンポーネントの各々は、異なる対応する管理開発グループによって維持され、前記方法は、
ビルドシステムが、異なる時間にリリースされる、前記複数の相互運用ソフトウェアコンポーネントに対するコード変更を前記ソフトウェア更新パッケージへとマージするステップ
を含み、前記ソフトウェア更新パッケージは、前記クラウド・アプライアンスに対する前記複数のコード変更を顧客デバイスにおいてまとめてインストールするために前記顧客デバイスにおいて処理するためものであり、前記ビルドシステムは、コード変更のマージを、
前記クラウド・アプライアンスを更新するための前記コード変更を収集するステップであって、前記コード変更は、前記複数の相互運用ソフトウェアコンポーネントの各々に対する１つまたは複数のコード変更を含み、各ソフトウェアコンポーネントに対する前記１つまたは複数のコード変更は、前記ソフトウェアコンポーネントのための管理開発グループによってリリースされたものである、ステップと、
前記クラウド・アプライアンスに対する前記ソフトウェア更新パッケージを生成するステップであって、
ソフトウェア更新パッケージのあるバージョンのための部品表（ＢＯＭ）を定めるステップであって、ソフトウェア更新パッケージの前記バージョンは、前記クラウド・アプライアンスを更新するためのソフトウェア更新パッケージの複数のバージョンの線形進行における次のバージョンであり、前記線形進行における１つまたは複数の先行するバージョンは、前記１つまたは複数の先行する状態に対応し、前記部品表（ＢＯＭ）は、前記クラウド・アプライアンスへの適用可能性および前記コード変更へのアクセスの仕方を示す、定めるステップと、
マニフェストを定めるステップであって、前記マニフェストは、
前記複数のコード変更をインストールするための管理アーチファクトへの参照を含み、
前記複数のコード変更のうちのコード変更間の相互依存性を示す、
定めるステップと、
前記部品表および前記マニフェストを前記ソフトウェア更新パッケージの中に含めるステップと
を含む、生成するステップと、
前記クラウド・アプライアンスを実行するエンティティが、前記クラウド・アプライアンスを前記１つまたは複数の先行する状態のいずれかから前記目標状態に更新することができるように、前記ソフトウェア更新パッケージを利用可能にするステップと
によって行う、方法。
【請求項２】
請求項１に記載の方法であって、
１つまたは複数の管理アーチファクトを含むペイロードを形成するステップと、
前記ペイロードを前記ソフトウェア更新パッケージの中に含めるステップと
をさらに含み、
前記複数のコード変更をインストールするための管理アーチファクトへの参照を含むことは、前記ペイロードへの参照を含むことを含む、方法。
【請求項３】
請求項１に記載の方法であって、前記ソフトウェア更新パッケージを利用可能にするステップは、前記ソフトウェア更新パッケージを、前記クラウド・アプライアンスを実行する前記エンティティにアクセス可能なネットワーク位置に記憶するステップを含む、方法。
【請求項４】
請求項１に記載の方法であって、前記複数のコード変更をインストールするための管理アーチファクトへの参照を含む前記マニフェストは、マルチ・パス・インストール・プロセスにおける指定されたパスに目標が定められた管理アーチファクトへの参照を含む前記マニフェストを含む、方法。
【請求項５】
コンピューターシステムで使用するための方法であって、前記方法は、クラウド・アプライアンスを目標状態に更新する際のインストールの複雑性を低減するソフトウェア更新パッケージを生成するためのものであり、前記クラウド・アプライアンスは、複数の相互運用ソフトウェアコンポーネントを実行し、前記複数のソフトウェアコンポーネントの各々は、異なる対応する管理開発グループによって維持され、前記方法は、
ビルドシステムが、前記複数の相互運用ソフトウェアコンポーネントに対するコード変更を前記ソフトウェア更新パッケージへとマージするステップ
を含み、前記ソフトウェア更新パッケージは、前記クラウド・アプライアンスに対する前記複数のコード変更を顧客デバイスにおいてまとめてインストールするために前記顧客デバイスにおいて処理するためのものであり、前記ビルドシステムは、コード変更のマージを、
前記クラウド・アプライアンスを更新するための複数のコード変更を収集するステップであって、前記複数のコード変更は、前記複数のソフトウェアコンポーネントの各々に対する１つまたは複数のコード変更を含み、各ソフトウェアコンポーネントに対する前記１つまたは複数のコード変更は、前記ソフトウェアコンポーネントのための管理開発グループによってリリースされたものである、収集するステップと、
前記クラウド・アプライアンスに対するソフトウェア更新パッケージを生成するステップであって、前記複数のコード変更をインストールするための前記ソフトウェア更新パッケージは、前記クラウド・アプライアンスを前記目標状態にし、生成する当該ステップは、
前記複数のコード変更にアクセスする仕方を示すコード変更参照を識別するステップと、
前記複数のソフトウェアコンポーネント間の相互コンポーネント依存性を識別するために前記複数のコード変更を解析するステップと、
１つまたは複数の先行する検証済み状態についての状態データにアクセスするステップと、
前記ソフトウェア更新パッケージの実装が前記クラウド・アプライアンスを前記目標状態にすることを検証するための検証コードを識別するステップであって、前記検証コードは、アクセスされた前記状態データおよび識別された相互コンポーネント依存性に基づいて識別される、識別するステップと、
識別された前記検証コードを参照する検証コード参照を定めるステップと、
前記コード変更参照、相互コンポーネント依存性、検証コード参照、および前記目標状態を前記ソフトウェア更新パッケージの中に含めるステップと
を含む、生成するステップと、
前記クラウド・アプライアンスを実行するエンティティが、前記ソフトウェア更新パッケージの実装が前記クラウド・アプライアンスを前記１つまたは複数の先行する検証済み状態のいずれかから前記目標状態にすることを検証することができるように、前記ソフトウェア更新パッケージを利用可能にするステップと
によって行う、方法。
【請求項６】
請求項５に記載の方法であって、
識別された検証コードを含むペイロードを形成するステップと、
前記ペイロードを前記ソフトウェア更新パッケージの中に含めるステップと
をさらに含み、
識別された前記検証コードを参照する検証コード参照を定めるステップは、前記ペイロードを参照する検証コード参照を定めるステップを含む、方法。
【請求項７】
請求項５に記載の方法であって、前記１つまたは複数の先行する検証済み状態についての状態データにアクセスするステップは、検証済み状態の線形進行における１つまたは複数の先行する検証済み状態についての状態データへのアクセスを含み、前記目標状態は、前記線形進行における次の状態である、方法。
【請求項８】
コンピューターシステムで使用するための方法であって、前記方法は、マルチ・パス・インストール・プロセスを介してクラウド・アプライアンスを更新するためのソフトウェア更新パッケージを生成するためのものであり、前記マルチ・パス・インストール・プロセスは、異なるソフトウェアコンポーネント間の相互依存性を、より考慮するための複数のパスを有し、前記クラウド・アプライアンスは、複数の異なるソフトウェアコンポーネントを実行し、前記複数の異なるソフトウェアコンポーネントの各々は、異なる対応する管理開発グループによって維持され、前記方法は、
ビルドシステムが、前記クラウド・アプライアンスを更新するための複数のコード変更を収集するステップであって、前記複数のコード変更は、前記複数のソフトウェアコンポーネントの各々に対する１つまたは複数のコード変更を含み、各ソフトウェアコンポーネントに対する前記１つまたは複数のコード変更は、前記ソフトウェアコンポーネントのための管理開発グループによってリリースされたものである、ステップと、
前記ビルドシステムが、前記クラウド・アプライアンスに対するソフトウェア更新パッケージを生成するステップであって、前記ソフトウェア更新パッケージは、前記複数のソフトウェアコンポーネント間の相互依存性をより考慮するために、前記マルチ・パス・インストール・プロセスを介して前記複数のコード変更をインストールするためのものであり、生成する当該ステップは、
前記複数のコード変更へのアクセスの仕方を示すコード変更参照を識別するステップと、
前記複数のコード変更の各々についてのインストールアーチファクトを識別するステップと、
前記複数のパスにおけるパス毎に、
前記複数のコード変更の各々についての識別された前記インストールアーチファクトについて、当該パスに対して適合されたインストールアーチファクトのサブセットを識別する
ステップと、
識別された前記インストールアーチファクトについてのインストールアーチファクト参照を決定するステップと、
前記コード変更参照および前記インストールアーチファクト参照を前記ソフトウェア更新パッケージの中に含めるステップであって、含める当該ステップは、前記複数のパスにおけるパス毎に、
当該パスに対して適合されたインストールアーチファクトのサブセットについてのインストールアーチファクト参照が当該パスの間に処理されるべきことを前記ソフトウェア更新パッケージの中で明示的に示すステップ
を含む、含めるステップと
を含む、生成するステップと、
前記ビルドシステムが、前記クラウド・アプライアンスを実行するエンティティが前記マルチ・パス・インストール・プロセスを使用して前記ソフトウェア更新パッケージを実装することができるように、前記ソフトウェア更新パッケージを利用可能にするステップと
を含む、方法。
【請求項９】
請求項８に記載の方法であって、
前記ソフトウェア更新パッケージの実装が前記クラウド・アプライアンスを目標状態にすることを検証するための検証コードを識別するステップであって、前記検証コードは、アクセスされた前記状態データおよび識別された相互コンポーネント依存性に基づいて識別される、識別するステップと、
識別された前記検証コードを参照する検証コード参照を定めるステップと
をさらに含む、方法。
【請求項１０】
請求項８に記載の方法であって、
識別された前記検証コードを含むペイロードを形成するステップと、
前記ペイロードを前記ソフトウェア更新パッケージの中に含めるステップと
をさらに含み、
識別された前記検証コードを参照する検証コード参照を定めるステップは、前記ペイロードを参照する検証コード参照を定めるステップを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[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]本発明の態様は、任意の数のソフトウェアコンポーネントに対する実質的に任意の数のコード変更を自動的にインストールし、それによりソフトウェアシステムを更新するために選択され得るソフトウェア更新パッケージの生成を含む。一態様では、ソフトウェア更新パッケージは、複数のソフトウェアコンポーネントに対するコード変更の参照、およびコード変更をインストールするためのインストールアーチファクトの参照を含み、また、複数のソフトウェアコンポーネント間の相互依存性の指示を同じく含む。別の態様では、ソフトウェア更新パッケージは、ソフトウェア更新パッケージがソフトウェアシステムを目標状態へ移行させたことを検証するための検証コードの参照を含む。さらに別の態様では、ソフトウェア更新パッケージは、ソフトウェアシステムを更新するために、異なるインストールアーチファクトのためのインストールアーチファクト参照がマルチ・パス・インストール・プロセスにおける異なるパスの期間に処理されるべきことを明示的に示す。
【００２１】
[0031]本発明の実施態様は、例えば以下でより詳細に説明される１つまたは複数のプロセッサーおよびシステムメモリーなどのコンピューターハードウェアを含む専用コンピューターまたは汎用コンピューターを備えるか、または利用することができる。また、本発明の範囲内である実施態様は、コンピューター実行可能命令および／またはデータ構造を運び、または記憶するための物理的コンピューター可読媒体および他のコンピューター可読媒体を同じく含む。このようなコンピューター可読媒体は、汎用コンピューターシステムまたは専用コンピューターシステムによってアクセスされ得る任意の利用可能な媒体であってもよい。コンピューター実行可能命令を記憶するコンピューター可読媒体は、コンピューター記憶媒体（デバイス）である。コンピューター実行可能命令を運ぶコンピューター可読媒体は伝送媒体である。したがって、非制限の一例として、本発明の実施態様は、少なくとも２つの全く異なる種類のコンピューター可読媒体、すなわちコンピューター記憶媒体（デバイス）および伝送媒体を備えることができる。
【００２２】
[0032]コンピューター記憶媒体（デバイス）は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、ソリッドステートドライブ（「ＳＳＤ」）（例えばＲＡＭをベースとする）、フラッシュメモリー、位相変化メモリー（「ＰＣＭ」）、他のタイプのメモリー、他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいはコンピューター実行可能命令またはデータ構造の形態の所望のプログラムコード手段を記憶するために使用されることが可能であり、また、汎用コンピューターまたは専用コンピューターによってアクセスされ得る任意の他の媒体を含む。
【００２３】
[0033]「ネットワーク」は、コンピューターシステムおよび／またはモジュールおよび／または他の電子デバイス間の電子データの輸送を可能にする１つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続（ハードワイヤード、無線、またはハードワイヤードあるいは無線の組合せのいずれか）を介してコンピューターに転送される、すなわち提供されると、コンピューターは、当然、その接続を伝送媒体として見る。伝送媒体は、コンピューター実行可能命令またはデータ構造の形態の所望のプログラムコード手段を運ぶために使用されることが可能であり、また、汎用コンピューターまたは専用コンピューターによってアクセスされ得るネットワークおよび／またはデータリンクを含むことができる。上記の組合せは、コンピューター可読媒体の範囲内に同じく含まれるものとする。
【００２４】
[0034]さらに、様々なコンピューターシステム構成要素に到達すると、コンピューター実行可能命令またはデータ構造の形態のプログラムコード手段は、伝送媒体からコンピューター記憶媒体（デバイス）へ（またはその逆にコンピューター記憶媒体（デバイス）から伝送媒体へ）自動的に転送され得る。例えばネットワークまたはデータリンクを介して受け取られたコンピューター実行可能命令またはデータ構造は、ネットワーク・インタフェース・モジュール（例えば「ＮＩＣ」）内のＲＡＭにバッファーされた後、最終的にはコンピューターシステムのコンピューターシステムＲＡＭおよび／またはより少ない揮発性コンピューター記憶媒体（デバイス）に転送され得る。したがって、コンピューター記憶媒体（デバイス）は、同じく（さらには主として）伝送媒体を利用するコンピューターシステム構成要素に含まれ得ることを理解されたい。
【００２５】
[0035]コンピューター実行可能命令は、例えば、プロセッサーで実行されると、汎用コンピューター、専用コンピューターまたは専用処理デバイスが特定の機能または機能のグループを実施することになる命令およびデータを含む。コンピューター実行可能命令は、例えば２進、アセンブリー言語などの中間フォーマット命令、さらにはソースコードであってもよい。本主題は、構造的特徴および／または方法論的行為に特化された言語で説明されているが、添付の特許請求の範囲で定義されている本主題は、上で説明した特徴または行為に必ずしも限定されないことを理解されたい。むしろ、説明した特徴および行為は、特許請求の範囲を実装する例示的形態として開示されている。
【００２６】
[0036]本発明は、パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサー、ハンドヘルドデバイス、着用可能デバイス、多重プロセッサーシステム、マイクロプロセッサーベースの家庭用電化製品またはプログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、移動電話、ＰＤＡ、タブレット、ページャー、時計、ルーター、スイッチ、等々を含む多くのタイプのコンピューターシステム構成を有するネットワークコンピューティング環境で実践され得ることを当業者は認識するであろう。また、本発明は、ネットワークを介してリンクされる（ハードワイヤードデータリンク、無線データリンクのいずれかによって、またはハードワイヤードデータリンクおよび無線データリンクの組合せによって）ローカルコンピューターシステムおよび遠隔コンピューターシステムの両方がタスクを実施する分散システム環境で同じく実践され得る。分散システム環境では、プログラムモジュールは、ローカルメモリーストレージデバイスおよび遠隔メモリーストレージデバイスの両方に置かれ得る。
【００２７】
[0037]また、本発明は、クラウドコンピューティング環境で同じく実装され得る。この説明および以下の特許請求の範囲では、「クラウド計算」は、構成可能計算資源の共有プールへのオンデマンド・ネットワーク・アクセスを可能にするためのモデルとして定義されている。例えばクラウド計算は、構成可能計算資源の共有プールへの至る所に存在する便利なオンデマンドアクセスを提供するために市場で使用され得る。構成可能計算資源の共有プールは、仮想化を介して速やかに準備され、また、少ない管理努力またはサービスプロバイダー対話でリリースされ、次にそれに応じてスケール化され得る。
【００２８】
[0038]クラウド計算モデルは、例えばオンデマンドセルフサービス、ブロード・ネットワーク・アクセス、資源プーリング、速やかな伸縮性、測定されたサービス、等々などの様々な特性から構成され得る。また、クラウド計算モデルは、例えばサービスとしてのソフトウェア（「ＳａａＳ」）、サービスとしてのプラットフォーム（「ＰａａＳ」）およびサービスとしてのインフラストラクチャー（「ＩａａＳ」）などの様々なサービスモデルを露出することも可能である。また、クラウド計算モデルは、プライベートクラウド、コミュニティークラウド、パブリッククラウド、ハイブリッドクラウド、等々などの異なる展開モデルを使用して展開され得る。この明細書および特許請求の範囲では、「クラウドコンピューティング環境」は、クラウド計算が使用される環境である。
【００２９】
[0039]この明細書および以下の特許請求の範囲では、「クラウド・アプライアンス」は、１つまたは複数の（例えば事前構成済み）ソフトウェアコンポーネントを実行するコンピューターシステム（例えばコモディティーハードウェア）として定義されている。いくつかの態様では、クラウド・アプライアンスは、バーチャルマシン（ＶＭ）画像がインストールされたコンピューターシステムである。バーチャルマシン画像ファイルは、１つまたは複数の（事前）構成済みソフトウェアコンポーネントを含むことができる。
【００３０】
[0040]図１は、開発グループによってリリースされるソフトウェア変更（例えば更新および／またはフィックス）を示す例示的コンピューターアーキテクチャー１００を示したものである。示されているように、開発グループ１０１は、開発グループ１０１Ａ、１０１Ｂ、１０１Ｃ、等々を含む。開発グループ１０１Ａ、１０１Ｂ、１０１Ｃ、等々の各々は、ソフトウェアシステム（例えばクラウド・アプライアンス）上で実行されるソフトウェアコンポーネントの開発、維持および更新のうちの１つまたは複数に対する責任があり得る。例えば開発グループ１０１Ａは、ソフトウェアコンポーネント１０２Ａに責任があり、開発グループ１０１Ｂは、ソフトウェアコンポーネント１０２Ｂに責任があり、開発グループ１０１Ｃは、ソフトウェアコンポーネント１０２Ｃに責任があり得る、等々である。
【００３１】
[0041]ソフトウェアコンポーネントを維持するために、開発グループは、ソフトウェアコンポーネントに対する変更をリリースすることができる。異なる開発グループは、それらのソフトウェアコンポーネントに対する変更を異なる様々な時点でリリースすることができる。
【００３２】
[0042]図１では、時間は、左側（より早い時間）から右側（より遅い時間）へ経過している。したがって、開発グループ１０１Ａは、時間の経過に応じて、更新１０３Ａ、それに続くフィックス１０４Ａ、それに続くフィックス１０６Ａ、それに続く更新１０７Ａを含む、ソフトウェアコンポーネント１０２Ａに対する様々な変更をリリースする。同様に、開発グループ１０１Ｂは、時間の経過に応じて、フィックス１０３Ｂ、それに続く更新１０４Ｂを含む、ソフトウェアコンポーネント１０２Ｂに対する様々な変更をリリースする。同様に、開発グループ１０１Ｃは、時間の経過に応じて、フィックス１０３Ｃ、それに続く更新１０４Ｃ、それに続く更新１０６Ｃを含む、ソフトウェアコンポーネント１０２Ｃに対する様々な変更をリリースする。
【００３３】
[0043]したがって、任意の所与の時間に、異なるソフトウェアコンポーネントに対する様々な異なる組合せの変更が利用可能になり得る。時間ｔ１では、更新１０３Ａおよびフィックス１０３Ｃが利用可能である。もっと後の時間ｔ２では、更新１０３Ａ、フィックス１０４Ａ、フィックス１０６Ａ、フィックス１０３Ｂ、更新１０４Ｂ、フィックス１０３Ｃおよび更新１０４Ｃが利用可能である。時間の経過に応じて他の更新および／またはフィックスが利用可能になり得る。
【００３４】
[0044]ｔ２とｔ３の間のある時点で、ビルドコマンド１１１が発せられ得る。ビルドコマンド１１１は、新しいソフトウェア更新パッケージをビルドするための手動コマンドであって、自動コマンドであってもよい。
【００３５】
[0045]図２を参照すると、図２は、ソフトウェア・インストール・パッケージの生成を容易にする例示的コンピューターアーキテクチャー２００を示したものである。図２を参照すると、コンピューターアーキテクチャー２００はビルドシステム２０１を含む。ビルドシステム２０１は、例えばローカル・エリア・ネットワーク（「ＬＡＮ」）、広域ネットワーク（「ＷＡＮ」）、さらにはインターネットなどのネットワークに接続され得る（またはそれらの一部であってもよい）。したがって、ビルドシステム２０１ならびに接続されている任意の他のコンピューターシステムおよびそれらの構成要素は、メッセージ関連データを生成し、また、ネットワークを介して、メッセージ関連データ（例えばインターネットプロトコル（「ＩＰ」）データグラム、および伝送制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、単純メール転送プロトコル（「ＳＭＴＰ」）、等々などのＩＰデータグラムを利用するか、または他の非データグラムプロトコルを使用する他の上位層プロトコル）を交換することができる。
【００３６】
[0046]示されているように、ビルドシステム２０１は、部品表ジェネレーター２０２およびマニフェストジェネレーター２０３をさらに含む。一般に、部品表ジェネレーター２０２は、ソフトウェア更新パッケージに含むための部品表（ＢＯＭ）を生成するように構成される。同様に、マニフェストジェネレーター２０３は、ソフトウェア更新パッケージに含むためのマニフェストを生成するように構成される。
【００３７】
[0047]部品表ジェネレーター２０２は、ソフトウェアシステム（例えばクラウド・アプライアンス）を次のバージョンにもたらすために適用されるべき変更のリストを生成することができる。単一クリックアップグレードを容易にするために、部品表（ＢＯＭ）は累積型になるように設計される。ビルドプロセスの間、部品表ジェネレーター２０２は、アクセスされた変更（例えば更新およびフィックス）を走査して、適用されるべき更新のリストを自動的に生成する。
【００３８】
[0048]ソフトウェアコンポーネントに対するコード変更と共に、開発グループは、インストールアーチファクト（例えばインストールアーチファクト２０４Ａ、２０４Ｂ、２０４Ｃ）、およびビルドシステム２０１に利用することができるソフトウェアコンポーネントに対するコンポーネント依存性（例えばコンポーネント依存性２０６Ａ、２０６Ｂ、２０６Ｃ）を構築することも可能である。
【００３９】
[0049]マニフェストジェネレーター２０３は、ＢＯＭ中のリストに挙げられた更新をインストールするために使用される、ソフトウェアコンポーネント間の相互コンポーネント依存性を記述するインストールアーチファクト（例えばインストールスクリプト）のリストを含むマニフェストを生成することができる。ビルドプロセスの間、マニフェストジェネレーター２０３は、提供されたインストールアーチファクトおよびコンポーネント依存性を走査する。マニフェストジェネレーター２０３は、提供されたインストールアーチファクトを使用して、リストに挙げられた更新をインストールするためのインストールアーチファクトのリストを生成することができる。また、マニフェストジェネレーター２０３は、提供されたコンポーネント依存性を解析して、相互コンポーネント依存性を識別することも可能である。
【００４０】
[0050]図３は、ソフトウェア更新パッケージを生成するための例示的方法３００のフローチャートを示したものである。方法３００は、コンピューターアーキテクチャー２００のコンポーネントおよびデータに関連して説明される。
【００４１】
[0051]方法３００は、クラウド・アプライアンスを更新するための複数のコード変更を収集するステップを含み、複数のコード変更は、複数のソフトウェアコンポーネントの各々に対する１つまたは複数のコード変更を含み、各ソフトウェアコンポーネントに対する１つまたは複数のコード変更は、ソフトウェアコンポーネントのための管理開発グループによってリリース済みである（３０１）。例えばビルドコマンド１１１に応答して、ビルドシステム２０１は、ソフトウェアコンポーネント１０２Ａ、１０２Ｂおよび１０２Ｃを含むクラウド・アプライアンスを更新するための更新１０３Ａ、フィックス１０４Ａ、フィックス１０６Ａ、フィックス１０３Ｂ、更新１０４Ｂ、フィックス１０３Ｃおよび更新１０４Ｃを収集することができる。
【００４２】
[0052]方法３００は、クラウド・アプライアンスに対するソフトウェア更新パッケージを生成するステップを含み、複数のコード変更をインストールするためのソフトウェア更新パッケージは、クラウド・アプライアンスを１つまたは複数の先行する状態のいずれかから目標状態にもたらす（３０２）。例えばビルドシステム２０１は、ソフトウェア更新パッケージ２１１を生成することができる。ソフトウェア更新パッケージ２１１は、更新１０３Ａ、フィックス１０４Ａ、フィックス１０６Ａ、フィックス１０３Ｂ、更新１０４Ｂ、フィックス１０３Ｃおよび更新１０４Ｃをインストールして、ソフトウェアコンポーネント１０２Ａ、１０２Ｂおよび１０２Ｃを含むクラウド・アプライアンスを目標状態にもたらすために使用され得る。
【００４３】
[0053]クラウド・アプライアンスからソフトウェアパッケージを生成するステップは、ソフトウェア更新パッケージバージョンのための部品表（ＢＯＭ）を定めるステップを含み、ソフトウェア更新パッケージバージョンは、クラウド・アプライアンスを更新するための複数のソフトウェア更新パッケージバージョンの線形進行における次のバージョンであり、線形進行における１つまたは複数の先行するバージョンは、１つまたは複数の先行する状態に対応し、部品表（ＢＯＭ）は、クラウド・アプライアンスへの適用可能性および複数のコード変更のアクセス方法を示す（３０３）。例えば部品表ジェネレーター２０２は、部品表（ＢＯＭ）２１２を定めることができる。部品表２１２は、バージョン２１４およびコード参照２１６を含む。バージョン２１４は、ソフトウェアコンポーネント１０２Ａ、１０２Ｂおよび１０２Ｃを含むクラウド・アプライアンスを更新するためのソフトウェア更新パッケージバージョンの線形進行における次のバージョンである。したがって、ビルドシステム２０１は、ソフトウェアコンポーネント１０２Ａ、１０２Ｂおよび１０２Ｃを含むクラウド・アプライアンスを更新するための他のソフトウェア更新パッケージを予め生成しておくことが可能である。例えばビルドシステム２０１は、ｔ１の少し後に、更新１０３Ａおよびフィックス１０３Ｃに基づいて予めソフトウェア更新パッケージを生成しておくことが可能である。インストールされると、この先行するソフトウェア更新パッケージは、ソフトウェアコンポーネント１０２Ａ、１０２Ｂおよび１０２Ｃを含むクラウド・アプライアンスを１つまたは複数の先行する状態のうちの１つにもたらしたことになる。
【００４４】
[0054]部品表ジェネレーター２０２は、更新１０３Ａ、フィックス１０４Ａ、フィックス１０６Ａ、フィックス１０３Ｂ、更新１０４Ｂ、フィックス１０３Ｃおよび更新１０４Ｃを走査して、自動的にコード参照２１６を生成することができる。コード参照２１６は、コード変更をアクセスするための参照を含む。例えば参照２１６Ａは、更新１０３Ａのための位置に対応し、参照２１６Ｂは、フィックス１０４Ａのための位置に対応し、参照２１６Ｃは、フィックス１０６Ａのための位置に対応し、参照２１６Ｄは、フィックス１０３Ｂのための位置に対応し得る、等々である。一態様では、コード変更のための明示的な参照が含まれていない場合、インストールシステムは、コード変更のための外部デフォルト位置をチェックするように構成され得る。別の態様では、コード変更のための明示的な参照が含まれていない場合、インストールシステムは、ソフトウェア更新パッケージに取り付けられたペイロードをチェックすることができる。
【００４５】
[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]クラウド・アプライアンスに対するソフトウェア更新パッケージを生成するステップは、コード変更参照、相互コンポーネント依存性、検証コード参照および目標状態をソフトウェア更新パッケージの中に含めるステップを含む（８０８）。例えばビルドシステム７０１は、コード変更参照７３２、相互コンポーネント依存性７２３、検証コード参照７２４および目標状態７２６をソフトウェア更新パッケージ７３１の中に含むことができる。適切である場合、ビルドシステム７０１は、ペイロード７２７をソフトウェア更新パッケージ７２１の中に含むことも可能である。ペイロード７２７は、コード変更および／または検証コードを含むことができる。
【００７７】
[0087]方法８００は、クラウド・アプライアンスを実行するエンティティが、ソフトウェア更新パッケージの実装がクラウド・アプライアンスを１つまたは複数の先行する検証済み状態のいずれかから目標状態にもたらすことを検証することができるように、ソフトウェア更新パッケージを利用可能にするステップを含む（８０９）。例えばビルドシステム７０１は、ソフトウェア更新パッケージ７２１をソフトウェア更新のための既知の記憶位置に記憶することができる。既知の記憶位置は、例えば更新ディレクトリー、更新ウェブサイト、ムーバブルディスク、等々を含むことができる。
【００７８】
[0088]方法８００と同様の方法を同じく使用して、ソフトウェア・インストール・パッケージが生成され得る。
[0089]いくつかの態様では、ソフトウェア更新パッケージは、マルチ・パス・インストール・プロセスに使用するために生成される。マルチ・パス・プロセスの個々のパスは、ソフトウェア更新をインストールし、かつ、ソフトウェア更新を検証するためのワークの一部を実施することができる。各ソフトウェアコンポーネントについてのインストールアーチファクトは、マルチ・パス・インストール・プロセスにおける異なるパスに適合されたコードを有することができる。適合されたコードは、マルチ・パス・プロセスにおけるパス毎に実行されるアクションを指定することができる。一態様では、マルチ・パス・プロセスにおけるパスは、事前検証パス、更新パスおよび試験パスを含む。
【００７９】
[0090]図９を参照すると、図９は、マルチ・パス・インストールに使用するためのソフトウェア更新パッケージの生成を容易にする例示的コンピューターアーキテクチャー９００を示したものである。図９を参照すると、コンピューターアーキテクチャー９００はビルドシステム９０１を含む。ビルドシステム９０１は、例えばローカル・エリア・ネットワーク（「ＬＡＮ」）、広域ネットワーク（「ＷＡＮ」）、さらにはインターネットなどのネットワークに接続され得る（またはそれらの一部であってもよい）。したがって、ビルドシステム９０１ならびに接続されている任意の他のコンピューターシステムおよびそれらの構成要素は、メッセージ関連データを生成し、また、ネットワークを介して、メッセージ関連データ（例えばインターネットプロトコル（「ＩＰ」）データグラム、および伝送制御プロトコル（「ＴＣＰ」）、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、単純メール転送プロトコル（「ＳＭＴＰ」）、等々などのＩＰデータグラムを利用するか、または他の非データグラムプロトコルを使用する他の上位層プロトコル）を交換することができる。
【００８０】
[0091]一般に、ビルドシステム９０１は、マルチ・パス・インストールに使用するためのソフトウェア更新パッケージをビルドすることができる。ビルドシステム９０１は、クラウド・アプライアンスに使用されているソフトウェアコンポーネントに対する開発グループからのコード変更（例えば更新および／またはフィックス）にアクセスするように構成される。また、ビルドシステム９０１は、アクセスされたコード変更をインストールするためのインストールアーチファクトにアクセスするように同じく構成される。ビルドシステム９０１は、マルチ・パス・インストールにおける指定されたパスに適合されたインストールアーチファクトを識別することができる。ビルドシステム９０１は、指定されたパスに対して適合されたインストールアーチファクト参照をまとめてソフトウェア更新内でグループ化することができる。アクセスされたコード変更、およびインストールアーチファクトのアクセスから、ビルドシステム９０１は、マルチ・パス・インストールに使用するためのソフトウェア更新パッケージをビルドすることができる。
【００８１】
[0092]図１０は、マルチ・パス・インストールに使用するためのソフトウェア更新パッケージを生成するための例示的方法１０００のフローチャートを示したものである。方法１０００は、コンピューターアーキテクチャー９００のコンポーネントおよびデータに関連して説明される。
【００８２】
[0093]方法１０００は、クラウド・アプライアンスを更新するための複数のコード変更を収集するステップを含み、複数のコード変更は、複数のソフトウェアコンポーネントの各々に対する１つまたは複数のコード変更を含み、各ソフトウェアコンポーネントに対する１つまたは複数のコード変更は、ソフトウェアコンポーネントのための管理開発グループによってリリース済みである（１００１）。例えばビルドシステム９０１は、それぞれ開発グループ９０２Ａおよび９０２Ｂからコード変更９１１Ａおよび９１１Ｂを収集することができる。開発グループ９０２Ａおよび９０２Ｂの各々は、クラウド・アプライアンスで更新されるべきソフトウェアコンポーネントを管理することができる。
【００８３】
[0094]方法１０００は、クラウド・アプライアンスに対するソフトウェア更新パッケージであって、マルチ・パス・インストール・プロセスを介して複数のコード変更をインストールするためのソフトウェア更新パッケージを生成するステップを含む（１００２）。例えばビルドシステム９０１は、クラウド・アプライアンスに対するソフトウェア更新パッケージ９２１を生成することができる。ソフトウェア更新パッケージ９２１は、マルチ・パス・インストール・プロセスを介して、クラウド・アプライアンスでコード変更９１１Ａおよび９１１Ｂを実装するためのものであってもよい。マルチ・パス・インストール・プロセスは、パス９２４Ａ（例えば事前検証）、パス９２４Ｂ（例えば更新）およびパス９２４Ｃ（例えば試験）の３つのパスを含むことができる。
【００８４】
[0095]ソフトウェアパッケージを生成するステップは、複数のコード変更のアクセス方法を示すコード変更参照を識別するステップを含む（１００３）。例えばビルドシステム９０１は、コード変更９１１Ａおよび９１１Ｂのアクセス方法を示すコード変更参照９２２を識別することができる。ソフトウェアパッケージを生成するステップは、複数のコード変更の各々のためのインストールアーチファクトを識別するステップを含む（１００４）。例えばビルドシステム９０１は、それぞれコード変更９１１Ａおよび９１１Ｂのためのインストールアーチファクト９０４Ａおよび９０４Ｂを識別することができる。
【００８５】
[0096]ソフトウェアパッケージを生成するステップは、複数のパスにおけるパス毎に、また、複数のコード変更の各々に対して識別されたインストールアーチファクトに対して、パスに対して適合されたインストールアーチファクトのサブセットを識別するステップを含む（１００５）。例えばビルドシステム９０１は、パス９２４Ａに対して適合されたアーチファクト９０６Ａおよび９０６Ｂを識別することができる。同様に、ビルドシステム９０１は、パス９２４Ｂに対して適合されたアーチファクト９０７Ａおよび９０７Ｂを識別することができる。同様に、ビルドシステム９０１は、パス９２４Ｃに対して適合されたアーチファクト９０８Ａおよび９０８Ｂを識別することができる。
【００８６】
[0097]ソフトウェアパッケージを生成するステップは、識別されたインストールアーチファクトについてのインストールアーチファクト参照を決定するステップを含む（１００６）。例えばビルドシステム９０１は、インストールアーチファクト９０４Ａおよび９０４Ｂに対するインストールアーチファクト参照９２４を識別することができる。より詳細には、ビルドシステム９０１は、アーチファクト９０６Ａに対する参照９１６Ａを識別することができ、アーチファクト９０７Ａに対する参照９１７Ａを識別することができ、アーチファクト９０８Ａに対する参照９１８Ａを識別することができ、９０１は、アーチファクト９０６Ｂに対する参照９１６Ｂを識別することができ、アーチファクト９０７Ｂに対する参照９１７Ｂを識別することができ、また、アーチファクト９０８Ｂに対する参照９１８Ｂを識別することができる。
【００８７】
[0098]ソフトウェアパッケージを生成するステップは、コード変更参照およびインストールアーチファクト参照をソフトウェア更新パッケージの中に含めるステップを含む（１００７）。例えばビルドシステム９０１は、コード変更参照およびインストールアーチファクト参照をソフトウェア更新パッケージ９２１の中に含むことができる。適切である場合、ビルドシステム９０１は、ペイロード９２７をソフトウェア更新パッケージ９２１の中に含むことも可能である。ペイロード９２７は、コード変更および／またはインストールアーチファクトを含むことができる。
【００８８】
[0099]インストールアーチファクト参照をソフトウェア更新パッケージの中に含めるステップは、複数のパスにおけるパス毎に、パスに対して適合されたインストールアーチファクトのサブセットに対するインストールアーチファクト参照がそのパスの期間に処理されるべきことをソフトウェア更新パッケージの中で明示的に示すステップを含む（１００８）。例えばビルドシステム９０１は、参照９１６Ａおよび９１６Ｂは、パス９２４Ａの期間に処理されるべきであることを示すことができる。同様に、ビルドシステム９０１は、参照９１７Ａおよび９１７Ｂは、パス９２４Ｂの期間に処理されるべきであることを示すことができる。同様に、ビルドシステム９０１は、参照９１８Ａおよび９１８Ｂは、パス９２４Ｃの期間に処理されるべきであることを示すことができる。
【００８９】
[0100]方法１０００は、クラウド・アプライアンスを実行するエンティティがマルチ・パス・インストール・プロセスを使用してソフトウェア更新パッケージを実装することができるように、ソフトウェア更新パッケージを利用可能にするステップを含む（１００９）。例えばビルドシステム９０１は、ソフトウェア更新パッケージ９２１をソフトウェア更新のための既知の記憶位置に記憶することができる。既知の記憶位置は、例えば更新ディレクトリー、更新ウェブサイト、ムーバブルディスク、等々を含むことができる。
【００９０】
[0101]方法１０００と同様の方法を同じく使用して、ソフトウェア・インストール・パッケージが生成され得る。
[0102]本発明の上記態様は、すべて、組み合わせて同じく作動してソフトウェア更新パッケージまたはソフトウェア・インストール・パッケージを生成することができる。例えばビルドシステムは、バージョン、部品表（ＢＯＭ）およびマニフェストを含むソフトウェア更新パッケージを生成することができ、検証コード参照はマニフェストの中に含まれる。別法としては、ビルドシステムは、バージョン、部品表（ＢＯＭ）およびマニフェストを含むソフトウェア更新パッケージをビルドすることも可能であり、マニフェストの中に含まれているインストールアーチファクト参照は、マルチ・パス・インストール・プロセスにおける異なるパスに明示的に割り当てられる。別のオプションとして、ビルドシステムは、検証コード参照を含むソフトウェア更新パッケージをビルドすることも可能であり、検証コード参照は、マルチ・パス・インストール・プロセスのパスに明示的に割り当てられる。
【００９１】
[0103]いくつかの環境では、複数の開発グループがクラウド・アプライアンスに含まれている複数の異なるソフトウェアコンポーネントに対するコードを変更している。個々の開発グループは、異なるペースでコードを変更することができる。本発明の態様は、コード変更を使用してクラウド・アプライアンスのインスタンスを更新する複雑性、およびクラウド・アプライアンスの異なるインスタンス間のコード発散の可能性を著しく低減する。一態様では、クラウド・アプライアンスのインスタンスを実行するエンティティは、単一クリック更新を利用することができる。エンティティは、更新を選択して、複数の異なるソフトウェアコンポーネントに対する複数のコード変更を自動的にインストールし、それによりクラウド・アプライアンスを更新することができる。
【００９２】
[0104]図１１は、クラウド・アプライアンスを更新するためのデータフローを示す例示的コンピューターアーキテクチャー１１００を示したものである。コンピューターアーキテクチャー１１００内では、クラウド・アプライアンス１１０６のインスタンスは、ソフトウェアコンポーネント１１２１を含むことができる。開発グループ１１２２は、時間の経過に応じて、ソフトウェアコンポーネント１１２１に対するコード変更１１２３（例えばコード変更１１２３Ａ、１１２３Ｂ、等々）をリリースすることができる。ビルドシステム１１０１は、折々、例えばスケジューリングに基づいて、あるいはエンティティの要求に応答して、ソフトウェア更新１１２４（例えば、更新１１２４Ａ、１１２４Ｂ、等々）をビルドすることができる。ビルドシステム１１０１は、ソフトウェア更新をストレージ１１０２に記憶することができる。エンティティは、ネットワーク１１０３（例えばインターネット）を介して、ストレージ１０２に記憶されている更新にアクセスすることができる。例えばエンティティ１１３１は、ストレージ１１０２から更新１１２４Ａにアクセスしてクラウド・アプライアンス１１０６を（ある状態に）更新することができる。同様に、エンティティ１１３２は、ストレージ１１０２から更新１１２４Ｂにアクセスしてクラウド・アプライアンス１１０６を（別のもっと後の状態に）更新することができる。
【００９３】
[0105]エンティティ１１３３は、機密保護および／またはプライバシーの理由で、展開されたクラウド・アプライアンスを公衆網（例えばインターネット）から切り離された状態を維持することを選択することができる。したがって、ビルドシステム１１０１は、任意のソフトウェア更新１１２４、例えば更新１１２４Ａをムーバブルストレージ１１０４（例えばサムドライブ、ＤＶＤ、ＣＤ、等々）上の内蔵パッケージ中に記憶することも可能である。ムーバブルストレージ１１０４はエンティティ１１３３に提供され得る。エンティティ１１３３は、内蔵パッケージを使用して、公衆網への接続を必要とすることなくクラウド・アプライアンス１１０を更新することができる。
【００９４】
[0106]ビルドシステム１１０１は、ビルドシステム２０１、パッケージビルダー５０６、ビルドシステム７０１およびビルドシステム９０１に対して説明した任意の機能を含むことができる。したがって、ビルドシステム１１０１は、ソフトウェア・インストール・パッケージおよびソフトウェア更新パッケージを生成することができる。ビルドシステム１０１１は、部品表（ＢＯＭ）およびマニフェストを含むパッケージ（例えばソフトウェア更新パッケージ２１１と同様の）を生成するように構成され得る。また、ビルドシステム１１０１は、検証コード参照を含むパッケージ（例えばソフトウェア更新パッケージ７２１と同様の）を生成するように同じく構成され得る。ビルドシステム１１０１は、マルチ・パス・インストール・プロセスにおける異なるパスに明示的に割り当てられるインストールアーチファクト参照を有するパッケージ（例えばソフトウェア更新パッケージ９２１と同様の）を生成するようにさらに構成され得る。また、ビルドシステム１１０１は、上で説明した構造とは異なる組合せを含むパッケージを生成するように同じく構成され得る。
【００９５】
[0107]本発明は、本発明の精神または本質的な特徴から逸脱することなく、他の特定の形態で実装され得る。上で説明した実施態様は、あらゆる点において単なる例証的なものにすぎず、制限的なものではないことに留意されたい。したがって、本発明の範囲は、以上の説明によってではなく、添付の特許請求の範囲によって示されている。特許請求の範囲と等価の意味および範囲の範疇であるすべての変更は、本発明の範囲に包含されるものとする。
【図１】
2017533519.tif 000003
【図２】
2017533519.tif 000004
【図３】
2017533519.tif 000005
【図４】
2017533519.tif 000006
【図５】
2017533519.tif 000007
【図６】
2017533519.tif 000008
【図７】
2017533519.tif 000009
【図８】
2017533519.tif 000010
【図９】
2017533519.tif 000011
【図１０】
2017533519.tif 000012
【図１１】
2017533519.tif 000013
【国際調査報告】
2017533519.tif 000014
2017533519.tif 000015
2017533519.tif 000016
2017533519.tif 000017
2017533519.tif 000018