(57)【要約】ソフトウェア・コンポーネントを更新するための方法、装置、及びコンピュータ命令である。ソフトウェア・コンポーネントを更新するかどうかに関して判断される（６０２）。ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントが更新され、更新済みソフトウェア・コンポーネントを生成する（６０６）。更新済みソフトウェア・コンポーネントは、自動的にテストされる（６１２）。更新済みコンポーネントのテスト失敗に応答して、修正措置が行われる（６２０）。
2006507570.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいて、ソフトウェア・コンポーネントを更新するための方法であって、
前記ソフトウェア・コンポーネントを更新するかどうかを判断し、
前記ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントを更新して更新済みソフトウェア・コンポーネントを生成し、
前記更新済みソフトウェア・コンポーネントを自動的にテストし、
前記更新済みコンポーネントのテストの失敗に応答して修正措置を行う、
コンピュータ実装ステップを含む方法。
【請求項２】
前記判断ステップが、
前記ソフトウェア・コンポーネントについて更新が存在するかどうかを判断し、
前記ソフトウェア・コンポーネントについて前記更新が存在することに応答して、該更新が該ソフトウェア・コンポーネントに適用されるべきかどうかを判断し、
前記更新を前記ソフトウェア・コンポーネントに適用する判断に応答して、該更新を該ソフトウェア・コンポーネントに適用し、前記更新済みソフトウェア・コンポーネントを形成する、
ステップを含む、請求項１に記載の方法。
【請求項３】
前記修正措置が、前記更新済みソフトウェア・コンポーネントを、前記更新が行われる以前の状態にロールバックすることを含む、請求項１に記載の方法。
【請求項４】
前記修正措置が、代替的な更新を特定すること、前記更新済みソフトウェア・コンポーネントを前記更新なしの前記ソフトウェア・コンポーネントにロールバックすること、異なるソフトウェア・コンポーネントをインストールすること、及び、前記代替的な更新をインストールすることのうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項５】
前記テストするステップが、
行うテストをテストのベータベースから特定して特定済みテストを生成し、
前記更新済みコンポーネントの前記特定済みテストを行う、
ステップを含む、請求項１に記載の方法。
【請求項６】
前記更新が設定ファイルについての新たなパラメータである、請求項１に記載の方法。
【請求項７】
前記更新が前記ソフトウェア・コンポーネントについての実行可能ファイルに対するものである、請求項１に記載の方法。
【請求項８】
更新、ロールバック、前記更新済みコンポーネントのテストから得られるテスト結果、ユーザの組の間における障害の発生、特定の種類のソフトウェア・コンポーネント間における障害の発生、及び、オペレーティング・システムの組の間における障害の発生、のうちの少なくとも１つに関するデータを格納するステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記自動的にテストするステップが、性能テスト、オンザフライのレグレッション・テスト、ユニット・テスト、及び互換性テストのうちの少なくとも１つを用いる、請求項１に記載の方法。
【請求項１０】
第１のパーティが更新ソフトウェアのソースであり、第２のパーティが、前記ソフトウェア・コンポーネントを更新するかどうかを判断するのに用いられるポリシーを提供する、請求項１に記載の方法。
【請求項１１】
前記判断するステップが、
前記更新が利用可能かどうかを判断し、
前記更新が利用可能である場合には、特定の種類のソフトウェア・ソース、ユーザ、オペレーティング・システムの種類、及び、データ処理システムの種類のうちの少なくとも１つと相関関係のある失敗の発生パターンを用いて、該更新を適用するかどうかを判断する、
ステップを含む、請求項１に記載の方法。
【請求項１２】
前記ソフトウェア・コンポーネントが、更新に成功して前記更新済みソフトウェア・コンポーネントが生成されたかどうかを判断し、
前記ソフトウェア・コンポーネントの更新に成功しなかったことに応答して、失敗の通知を送信する、
ステップをさらに含む、請求項１に記載の方法。
【請求項１３】
前記ソフトウェア・コンポーネントが、更新に成功して前記更新済みソフトウェア・コンポーネントが生成されたかどうかを判断し、
前記ソフトウェア・コンポーネントの更新に成功しなかったことに応答して、該ソフトウェア・コンポーネントの更新を再試行する、
ステップをさらに含む、請求項１に記載の方法。
【請求項１４】
前記ソフトウェア・コンポーネントに対する少なくとも２回の更新の試行が失敗した後に通知が送信される、請求項１３に記載の方法。
【請求項１５】
データ処理システムにおいて、ネットワーク・データ処理システムにおける複数のノードに更新を配置するためのコンピュータ方法であって、
更新を要求するソフトウェア・コンポーネントを有する前記ネットワーク・データ処理システムにおける前記複数のノード内部のノードを特定して、特定済みノードの組を生成し、
前記更新を用いて前記特定済みノードの組の更新を開始して、更新済みノードの組を生成し、
前記更新済みノードの組を自動的にテストし、
前記更新済みノードの組におけるノードのテストの失敗に応答して修正措置を行う、
ステップを含むコンピュータ方法。
【請求項１６】
前記修正措置が、テスト失敗の通知を送信すること、テスト失敗となっているノードの更新を再試行すること、前記更新をロールバックすること、及び、異なるソフトウェア・コンポーネントをインストールすることのうちの少なくとも１つである、請求項１５に記載のコンピュータ方法。
【請求項１７】
前記特定済みノードの組における前記ソフトウェア・コンポーネントを更新するときに、ノードに失敗が起こったかどうかを判断し、
前記ノードの組の少なくとも２つのノードにおける前記ソフトウェア・コンポーネントを更新するのに失敗したことに応答して、前記失敗の通知を送信する、
ステップをさらに含む、請求項１５に記載のコンピュータ方法。
【請求項１８】
前記特定済みノードの組における前記ソフトウェア・コンポーネントを更新するときに、ノードに失敗が起こったかどうかを判断し、
前記ノードにおける前記ソフトウェア・コンポーネントを更新するのに失敗したことに応答して、該ノードにおける該ソフトウェア・コンポーネントの更新を再試行する、
ステップをさらに含む、請求項１５に記載のコンピュータ方法。
【請求項１９】
前記ノードにおける前記ソフトウェア・コンポーネントの更新の第２の失敗に応答して、前記失敗の通知を送信するステップをさらに含む、請求項１８に記載のコンピュータ方法。
【請求項２０】
前記複数のノードにおいて更新の配置に成功したことと、更新のテストから得られる結果とのうちの少なくとも１つのメトリックに関するデータを格納するステップをさらに含む、請求項１５に記載のコンピュータ方法。
【請求項２１】
前記データを分析して、前記複数のノードにおけるテスト失敗のパターンを特定するステップをさらに含む、請求項２０に記載のコンピュータ方法。
【請求項２２】
テスト失敗を減少させるように、将来の更新を受信する前記複数のノード内部のノードの特定を前記テスト失敗のパターンに基づいて修正するステップをさらに含む、請求項２１に記載のコンピュータ方法。
【請求項２３】
前記複数のノードにおける幾つかのノードが前記ソフトウェア・コンポーネントについての更新を受信するのを中止するように、将来の更新を受信する該複数のノード内部のノードの特定を前記テスト失敗のパターンに基づいて修正するステップをさらに含む、請求項２１に記載のコンピュータ方法。
【請求項２４】
前記複数のノードにおける幾つかのノードが前記ソフトウェア・コンポーネントについての更新を受信するのを中止するように、将来の更新を受信する該複数のノード内部のノードの特定を修正するステップをさらに含み、前記幾つかのノードが、失敗が発生する可能性が高いノードであり、前記特定が前記テスト失敗のパターンに基づくものである、請求項２１に記載のコンピュータ方法。
【請求項２５】
前記複数のノードにおける幾つかのノードが前記更新を早期に受信するように、将来の更新を受信する該複数のノード内部のノードの特定を前記テスト失敗のパターンに基づいて修正するステップをさらに含む、請求項２１に記載のコンピュータ方法。
【請求項２６】
コンピュータにおいて、ソフトウェア・コンポーネントを更新するためのコンピュータで実行される方法であって、
前記コンピュータ上で実行中の前記ソフトウェア・コンポーネントを更新するかどうかを判断し、
前記ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントの更新の配置のために該ソフトウェア・コンポーネントも含む第２のコンピュータを特定し、
前記コンピュータが前記ソフトウェア・コンポーネントを実行し続けた状態で、前記第２のコンピュータ上の該ソフトウェア・コンポーネントの更新を開始して、該第２のコンピュータ上に更新済みソフトウェア・コンポーネントを生成し、
前記第２のコンピュータ上の前記更新済みソフトウェア・コンポーネントを自動的にテストし、
前記更新済みコンポーネントのテスト失敗に応答して修正措置を行う、
ステップを含むコンピュータで実行される方法。
【請求項２７】
前記テストするステップが、前記コンピュータ上で実行中の前記ソフトウェア・コンポーネントのクライアントを、前記第２のコンピュータ上の前記更新済みソフトウェア・コンポーネントに移行するステップを含む、請求項２６に記載の方法。
【請求項２８】
前記ソフトウェア・コンポーネントのテスト成功に応答して、前記コンピュータ上の前記ソフトウェア・コンポーネントをサービスから除外するステップをさらに含む、請求項２７に記載の方法。
【請求項２９】
ソフトウェア・コンポーネントを更新するためのデータ処理システムであって、
バス・システムと、
前記バス・システムに接続された通信ユニットと、
前記バス・システムに接続され、命令のセットを含むメモリと、
前記バス・システムに接続された処理ユニットと、
を備え、前記処理ユニットが、前記ソフトウェア・コンポーネントを更新するかどうかを判断し、該ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントを更新して更新済みソフトウェア・コンポーネントを生成し、前記更新済みソフトウェア・コンポーネントを自動的にテストし、該更新済みコンポーネントのテストの失敗に応答して修正措置を行う、命令のセットを実行するデータ処理システム。
【請求項３０】
ネットワーク・データ処理システムにおける複数のノードに更新を配置するためのデータ処理システムであって、
バス・システムと、
前記バス・システムに接続された通信ユニットと、
前記バス・システムに接続され、命令のセットを含むメモリと、
前記バス・システムに接続された処理ユニットと、
を備え、前記処理ユニットが、更新を要求するソフトウェア・コンポーネントを有するネットワーク・データ処理システムにおける前記複数のノード内部のノードを特定して特定済みノードの組を生成し、前記更新を用いて前記特定済みノードの組の更新を開始して更新済みノードの組を生成し、前記更新済みノードの組を自動的にテストし、該更新済みノードの組におけるノードのテストの失敗に応答して修正措置を行う、命令のセットを実行するデータ処理システム。
【請求項３１】
ソフトウェア・コンポーネントを更新するためのデータ処理システムであって、
バス・システムと、
前記バス・システムに接続された通信ユニットと、
前記バス・システムに接続され、命令のセットを含むメモリと、
前記バス・システムに接続された処理ユニットと、
を備え、前記処理ユニットが、コンピュータ上で実行中の前記ソフトウェア・コンポーネントを更新するかどうかを判断し、該ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントの更新の配置のために該ソフトウェア・コンポーネントも含む第２のコンピュータを特定し、該コンピュータが該ソフトウェア・コンポーネントを実行し続けた状態で、前記第２のコンピュータ上の該ソフトウェア・コンポーネントの更新を開始して、該第２のコンピュータ上に更新済みソフトウェア・コンポーネントを生成し、該第２のコンピュータ上の前記更新済みソフトウェア・コンポーネントを自動的にテストし、該更新済みコンポーネントのテストの失敗に応答して修正措置を行う、命令のセットを実行するデータ処理システム。
【請求項３２】
ソフトウェア・コンポーネントを更新するためのデータ処理システムであって、
前記ソフトウェア・コンポーネントを更新するかどうかを判断するための判断手段と、
前記ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントを更新し、更新済みソフトウェア・コンポーネントを生成するための更新手段と、
前記更新済みソフトウェア・コンポーネントを自動的にテストするためのテスト手段と、
前記更新済みコンポーネントのテストの失敗に応答して修正措置を行うための実施手段と、
を含むデータ処理システム。
【請求項３３】
前記判断手段が第１の判断手段であり、
前記ソフトウェア・コンポーネントについて更新が存在するかどうかを判断するための第２の判断手段と、
前記ソフトウェア・コンポーネントについて前記更新が存在することに応答して、該更新が該ソフトウェア・コンポーネントに適用されるべきかどうかを判断するための第３の判断手段と、
前記更新を前記ソフトウェア・コンポーネントに適用するという判断に応答して、該更新を該ソフトウェア・コンポーネントに適用し、前記更新済みソフトウェア・コンポーネントを形成するための適用手段と、
をさらに含む、請求項３２に記載のデータ処理システム。
【請求項３４】
前記修正措置が、前記更新済みソフトウェア・コンポーネントを、前記更新が行われる以前の状態にロールバックすることを含む、請求項３２に記載のデータ処理システム。
【請求項３５】
前記修正措置が、代替的な更新を特定すること、前記更新済みソフトウェア・コンポーネントを前記更新なしの前記ソフトウェア・コンポーネントにロールバックすること、異なるソフトウェア・コンポーネントをインストールすること、及び、前記代替的な更新をインストールすることのうちの少なくとも１つを含む、請求項３２に記載のデータ処理システム。
【請求項３６】
前記実施手段が第１の実施手段であり、前記テスト手段が、
行うテストをテストのベータベースから特定して特定済みテストを生成するための特定手段と、
前記更新済みコンポーネントの前記特定済みテストを行うための第２の実施手段と、
を含む、請求項３２に記載のデータ処理システム。
【請求項３７】
前記更新が設定ファイルについての新たなパラメータである、請求項３２に記載のデータ処理システム。
【請求項３８】
前記更新が前記ソフトウェア・コンポーネントについての実行可能ファイルに対するものである、請求項３２に記載のデータ処理システム。
【請求項３９】
更新、ロールバック、前記更新済みコンポーネントのテストから得られるテスト結果、ユーザの組の間における障害の発生、特定の種類のソフトウェア・コンポーネント間における障害の発生、及び、オペレーティング・システムの組の間における障害の発生、のうちの少なくとも１つに関するデータを格納するための格納手段をさらに含む、請求項３２に記載のデータ処理システム。
【請求項４０】
前記自動的にテストするための手段が、性能テスト、オンザフライのレグレッション・テスト、ユニット・テスト、及び互換性テストのうちの少なくとも１つを用いる、請求項３２に記載のデータ処理システム。
【請求項４１】
第１のパーティが更新ソフトウェアのソースであり、第２のパーティが、前記ソフトウェア・コンポーネントを更新するかどうかを判断するのに用いられるポリシーを提供する、請求項３２に記載のデータ処理システム。
【請求項４２】
前記判断手段が、
前記更新が利用可能かどうかを判断するための第１の手段と、
前記更新が利用可能であることに応答して、特定の種類のソフトウェア・ソース、ユーザ、オペレーティング・システムの種類、及び、データ処理システムの種類のうちの少なくとも１つと相関関係のある失敗の発生パターンを用いて、該更新を適用するかどうかを判断するための第２の手段と、
を含む、請求項３２に記載のデータ処理システム。
【請求項４３】
前記判断手段が第１の判断手段であり、
前記ソフトウェア・コンポーネントが、更新に成功して前記更新済みソフトウェア・コンポーネントが生成されたかどうかを判断するための第２の判断手段と、
前記ソフトウェア・コンポーネントの更新に成功しなかったことに応答して、前記失敗の通知を送信するための送信手段と、
をさらに含む、請求項３２に記載のデータ処理システム。
【請求項４４】
前記判断手段が第１の判断手段であり、前記更新手段が第１の更新手段であり、
前記ソフトウェア・コンポーネントが、更新に成功して前記更新済みソフトウェア・コンポーネントが生成されたかどうかを判断するための第２の判断手段と、
前記ソフトウェア・コンポーネントの更新に成功しなかったことに応答して、該ソフトウェア・コンポーネントの更新を再試行するための第２の更新手段と、
をさらに含む、請求項３２に記載のデータ処理システム。
【請求項４５】
前記ソフトウェア・コンポーネントに対する少なくとも２回の更新の試行が失敗した後に通知が送信される、請求項４４に記載のデータ処理システム。
【請求項４６】
ネットワーク・データ処理システムにおける複数のノードに更新を配置するためのデータ処理システムであって、
更新を要求するソフトウェア・コンポーネントを有するネットワーク・データ処理システムにおける前記複数のノード内部のノードを特定して、特定済みノードの組を生成するための特定手段と、
前記更新を用いて前記特定済みノードの組の更新を開始して、更新済みノードの組を生成するための開始手段と、
前記更新済みノードの組を自動的にテストするためのテスト手段と、
前記更新済みノードの組におけるノードのテストの失敗に応答して修正措置を行うための実施手段と、
を含むデータ処理システム。
【請求項４７】
前記修正措置が、テスト失敗の通知を送信すること、テスト失敗となっているノードの更新を再試行すること、前記更新をロールバックすること、及び、異なるソフトウェア・コンポーネントをインストールすることのうちの少なくとも１つである、請求項４６に記載のデータ処理システム。
【請求項４８】
前記特定済みノードの組における前記ソフトウェア・コンポーネントを更新するときに、ノードに失敗が起こったかどうかを判断するための判断手段と、
前記ノードの組の少なくとも２つのノードにおける前記ソフトウェア・コンポーネントを更新するのに失敗したことに応答して、前記失敗の通知を送信するための送信手段と、
をさらに含む、請求項４６に記載のデータ処理システム。
【請求項４９】
前記更新手段が第１の更新手段であり、
前記特定済みノードの組における前記ソフトウェア・コンポーネントを更新するときに、ノードに失敗が起こったかどうかを判断するための判断手段と、
前記ノードにおいて前記ソフトウェア・コンポーネントを更新するのに失敗したことに応答して、該ノードにおける該ソフトウェア・コンポーネントの更新を再試行するための第２の更新手段と、
をさらに含む、請求項４６に記載のデータ処理システム。
【請求項５０】
前記ノードにおいて前記ソフトウェア・コンポーネントの更新の第２の失敗に応答して、前記失敗の通知を送信するための送信手段をさらに含む、請求項４９に記載のデータ処理システム。
【請求項５１】
前記複数のノードにおいて更新の配置に成功したことと、更新のテストから得られる結果とのうちの少なくとも１つのメトリックに関するデータを格納するための格納手段をさらに含む、請求項４６に記載のデータ処理システム。
【請求項５２】
前記データを分析して、前記複数のノードにおけるテスト失敗のパターンを特定するための分析手段をさらに含む、請求項５１に記載のデータ処理システム。
【請求項５３】
テスト失敗を減少させるように、将来の更新を受信する前記複数のノード内部のノードの特定を前記テスト失敗のパターンに基づいて修正するための修正手段をさらに含む、請求項５２に記載のデータ処理システム。
【請求項５４】
前記複数のノードにおける幾つかのノードが前記ソフトウェア・コンポーネントについての更新を受信するのを中止するように、将来の更新を受信する該複数のノード内部のノードの特定を前記テスト失敗のパターンに基づいて修正するための修正手段をさらに含む、請求項５２に記載のデータ処理システム。
【請求項５５】
前記複数のノードにおける幾つかのノードが前記ソフトウェア・コンポーネントについての更新を受信するのを中止するように、将来の更新を受信する該複数のノード内部のノードの特定を修正するための修正手段をさらに含み、前記幾つかのノードが、失敗が発生する可能性が高いノードであり、前記特定が前記テスト失敗のパターンに基づくものである、請求項５２に記載のデータ処理システム。
【請求項５６】
前記複数のノードにおける幾つかのノードが前記更新を早期に受信するように、将来の更新を受信する該複数のノード内部のノードの特定を前記テスト失敗のパターンに基づいて修正するための修正手段をさらに含む、請求項５２に記載のデータ処理システム。
【請求項５７】
ソフトウェア・コンポーネントを更新するためのデータ処理システムであって、
コンピュータ上で実行中の前記ソフトウェア・コンポーネントを更新するかどうかを判断するための判断手段と、
前記ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントの更新の配置のために該ソフトウェア・コンポーネントも含む第２のコンピュータを特定するための特定手段と、
前記コンピュータが前記ソフトウェア・コンポーネントを実行し続けた状態で、前記第２のコンピュータ上の該ソフトウェア・コンポーネントの更新を開始して、該第２のコンピュータ上に更新済みソフトウェア・コンポーネントを生成するための開始手段と、
前記第２のコンピュータ上の前記更新済みソフトウェア・コンポーネントを自動的にテストするためのテスト手段と、
前記更新済みコンポーネントのテストの失敗に応答して修正措置を行うための実施手段と、
を含むデータ処理システム。
【請求項５８】
前記テスト手段が、前記コンピュータ上で実行中の前記ソフトウェア・コンポーネントのクライアントを、前記第２のコンピュータ上の前記更新済みソフトウェア・コンポーネントに移行するための移行手段を含む、請求項５７に記載のデータ処理システム。
【請求項５９】
前記ソフトウェア・コンポーネントのテスト成功に応答して、前記コンピュータ上の前記ソフトウェア・コンポーネントをサービスから除外するための除外手段をさらに含む、請求項５８に記載のデータ処理システム。
【請求項６０】
ソフトウェア・コンポーネントを更新するための、コンピュータ読取可能媒体内のコンピュータ・プログラムであって、
前記ソフトウェア・コンポーネントを更新するかどうかを判断するための第１の命令と、
前記ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントを更新して更新済みソフトウェア・コンポーネントを生成するための第２の命令と、
前記更新済みソフトウェア・コンポーネントを自動的にテストするための第３の命令と、
前記更新済みコンポーネントのテストの失敗に応答して修正措置を行うための第４の命令と、
を含むコンピュータ・プログラム。
【請求項６１】
ネットワーク・データ処理システムにおける複数のノードに更新を配置するための、コンピュータ読取可能媒体内のコンピュータ・プログラムであって、
更新を要求するソフトウェア・コンポーネントを有する前記ネットワーク・データ処理システムにおける前記複数のノード内部のノードを特定して、特定済みノードの組を生成するための第１の命令と、
前記更新を用いて前記特定済みノードの組の更新を開始して、更新済みノードの組を生成するための第２の命令と、
前記更新済みノードの組を自動的にテストするための第３の命令と、
前記更新済みノードの組におけるノードのテストの失敗に応答して修正措置を行うための第４の命令と、
を含むコンピュータ・プログラム。
【請求項６２】
ソフトウェア・コンポーネントを更新するための、コンピュータ読取可能媒体内のコンピュータ・プログラムであって、
コンピュータ上で実行中の前記ソフトウェア・コンポーネントを更新するかどうかを判断するための第１の命令と、
前記ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントの更新の配置のために該ソフトウェア・コンポーネントも含む第２のコンピュータを特定するための第２の命令と、
前記コンピュータが前記ソフトウェア・コンポーネントを実行し続けた状態で、前記第２のコンピュータ上の該ソフトウェア・コンポーネントの更新を開始して、該第２のコンピュータ上に更新済みソフトウェア・コンポーネントを生成するための第３の命令と、
前記第２のコンピュータ上の前記更新済みソフトウェア・コンポーネントを自動的にテストするための第４の命令と、
前記更新済みコンポーネントのテストの失敗に応答して修正措置を行うための第５の命令と、
を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、改善されたデータ処理システムに関し、特に、ソフトウェア・コンポーネントを管理するための方法及び装置に関する。さらにより特定的には、本発明は、ソフトウェア・コンポーネントを自動的に更新するための方法及び装置を提供する。
【背景技術】
【０００２】
近年のコンピュータ技術が、非常に複雑で絶え間なく変わり続ける環境をもたらした。こうした環境の１つは、「インターネットワーク」とも呼ばれるインターネットである。インターネットは、データ転送と、送信ネットワークのプロトコルから受信ネットワークによって用いられるプロトコルへのメッセージ変換とを処理するゲートウェイによって相互に結合された、異なるものである場合もあるコンピュータ・ネットワークの組である。「インターネット」という用語を用いる場合、この用語は、ＴＣＰ／ＩＰプロトコル・スイートを用いるネットワーク及びゲートウェイの集合を指す。現在、インターネット上でデータを転送するのに利用される最も一般的な方法は、単に「ウェブ」とも呼ばれるワールド・ワイド・ウェブ環境を利用するものである。情報を転送するために、ファイル転送プロトコル（ＦＴＰ）及びＧｏｐｈｅｒなどの他のインターネット・リソースが存在するが、これらはウェブほど普及しなかった。ウェブ環境においては、サーバ及びクライアントが、様々なデータ・ファイル（例えば、テキスト、静止グラフィック画像、音声、動画ビデオなど）の転送を処理するための既知のプロトコルであるハイパーテキスト転送プロトコル（ＨＴＴＰ）を用いて、データ・トランザクションを行う。様々なデータ・ファイルの情報は、ユーザに提示するために、標準的なページ記述言語であるハイパーテキスト・マークアップ言語（ＨＴＭＬ）によって書式設定される。インターネットはまた、ブラウザを用いてアプリケーションをユーザに転送するのに広く用いられる。多くの場合、ソフトウェア・パッケージのユーザは、これらのソフトウェア・パッケージの更新版をインターネット経由で検索し、取得することができる。
【０００３】
他のタイプの複雑なネットワーク・データ処理システムとして、大企業の仕事を容易にするために作成されるシステムが挙げられる。多くの場合、こうしたネットワークは、世界の様々な場所において地域を越えて広がることになる。こうした複雑なネットワークも、事業を行うための仮想製品ネットワークの一部として、インターネットを用いることができる。ネットワーク内部で用いられるソフトウェアを管理し、更新する必要性により、こうしたネットワークがさらに複雑なものになる。
【０００４】
緩やかに結びついた多くのソフトウェア・コンポーネントで構成されるこうした環境は、典型的には、やや脆弱なものである。こうした環境内部では、ネットワーク・データ処理システムに含まれるソフトウェア・コンポーネントの１つの新たなバージョンを配置することが問題となり、交換されるコンポーネントに僅かに関係する程度に接続されているに過ぎないシステム全体の部品に、広範囲に及ぶ予測不可能な影響を与える可能性がある。明らかに危険性の少ない変更でさえ、望ましくない不測の副作用をもたらす可能性があることが多い。したがって、システム管理者は、こうした広範囲に及ぶ影響のために、コンポーネントのアップグレード又は設定のマイナーチェンジといった更新の実行に極めて慎重であることが多い。今日のビジネスにとって情報システムは非常に重要なので、数秒のダウンタイム（ｄｏｗｎｔｉｍｅ）でさえ深刻な問題となる可能性があり、そのダウンタイムを追跡するには、数秒以上の時間を要する可能性がある。例えば、電子メール・サーバは、企業又は組織の内外のユーザ間におけるコミュニケーションを容易にするため、多くの企業にとって重要なコンポーネントを提供するものである。電子メール・メッセージの配信エラーの原因となる電子メール・サーバの更新が、企業又は組織の生産性低下及び事業損失をもたらす可能性がある。
【０００５】
ソフトウェアが、次第に「自律型」になるように変化するにつれて、ソフトウェアを更新し、設定し、パッチを当てるタスクは、管理者が行うのではなく、コンピュータ自身が行うことがさらに多くなる。現在の更新機構は、「自律型」プロセスに向かっている。例えば、多くのオペレーティング・システム及びソフトウェア・パッケージは、タイマー又はユーザによるアクションの特定の組といった何らかのイベントに基づいて、自動的に更新を探す。更新機構は、多くの場合、予め選択された場所でインターネットに接続し、更新が存在するかどうかを確かめる。更新が存在する場合には、メッセージがユーザに提示され、その更新をダウンロードし、インストールするかどうかをユーザに尋ねる。「自律型」コンピューティングが向かう次のステップには、ユーザ介入を必要とすることなく更新を特定し、ダウンロードすることが含まれる。したがって、ソフトウェアのこうした更新、再設定、及びパッチがもたらす可能性のある、ほとんど予測不可能な望ましくない影響に対応する改善された方法、装置、及びコンピュータ命令を有することが有利であろう。
【発明の開示】
【０００６】
本発明は、ソフトウェア・コンポーネントを更新するための方法、装置、及びコンピュータ命令を提供する。ソフトウェア・コンポーネントを更新するかどうかに関して判断される。ソフトウェア・コンポーネントを更新するという判断に応答して、該ソフトウェア・コンポーネントが更新され、更新済みソフトウェア・コンポーネントを生成する。更新済みソフトウェア・コンポーネントは、自動的にテストされる。更新済みコンポーネントのテスト失敗に応答して、修正措置が行われる。
【０００７】
本発明の特質であると考えられる新規な特徴は、添付の特許請求の範囲に記述される。しかしながら、発明自体並びにその好ましい使用形態、さらなる目的、及び利点は、添付図面と共に読んだときに、以下の例示的な実施形態の詳細な説明を参照して、最も良く理解されるであろう。
【発明を実施するための最良の形態】
【０００８】
ここで図面を参照すると、図１は、本発明を実装することができるデータ処理システムのネットワークの図形表示を示す。ネットワーク・データ処理システム１００は、本発明を実装することができるコンピュータのネットワークである。ネットワーク・データ処理システム１００は、該ネットワーク・データ処理システム１００内で相互に接続される様々な装置及びコンピュータ間の通信リンクを提供するのに用いられる媒体であるネットワーク１０２を含む。ネットワーク１０２は、ワイヤ、ワイヤレス通信リンク、又は光ファイバ・ケーブルなどの接続を含むことができる。
【０００９】
図示された例においては、サーバ１０４が、ストレージ・ユニット１０６と共に、ネットワーク１０２に接続される。さらに、クライアント１０８、１１０、及び１１２が、ネットワーク１０２に接続される。これらのクライアント１０８、１１０、及び１１２は、例えばパーソナル・コンピュータ又はネットワーク・コンピュータとすることができる。図示された例においては、サーバ１０４は、ブート・ファイル、オペレーティング・システム・イメージ、及びアプリケーションなどのデータをクライアント１０８、１１０、及び１１２に提供する。クライアント１０８、１１０、及び１１２は、サーバ１０４に対するクライアントである。サーバ１０４は、クライアント１０８、１１０、及び１１２などのクライアントのための更新ソースを提供することができる。この例では、ネットワーク・データ処理システム１００は、ネットワーク・データ処理システム１００内部で用いられるソフトウェア・コンポーネントを更新する機能などの自律型コンピューティング機能を含む。具体的には、更新を取得してインストールするユーザ介入を必要とすることなく、ソフトウェア・コンポーネントに対して更新を行うことができる。こうした更新には、例えば、ソフトウェア・コンポーネントについての実行可能ファイルの更新か、ソフトウェア・コンポーネントについての新たな実行可能ファイル若しくはデータ・ファイルか、場合によってはソフトウェア・コンポーネントについての設定ファイルの変更も、含まれる場合がある。ネットワーク・データ処理システム１００は、付加的なサーバ、クライアント、及び図示されない他の装置を含んでもよい。
【００１０】
図示された例においては、ネットワーク・データ処理システム１００は、Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（ＴＣＰ／ＩＰ）プロトコル・スイートを用いて相互に通信を行うネットワーク及びゲートウェイの世界的な集合を表すネットワーク１０２を持つインターネットである。インターネットの中心には、データ及びメッセージ送付する何千もの商用コンピュータ・システム、政府系コンピュータ・システム、教育用コンピュータ・システム、その他のコンピュータ・システムで構成されるメジャー・ノード又はホスト・コンピュータ間の高速データ通信線のバックボーンがある。当然のことながら、ネットワーク・データ処理システム１００は、例えばインターネット、ローカル・エリア・ネットワーク（ＬＡＮ）、又は広域ネットワーク（ＷＡＮ）などの、多数の異なるタイプのネットワークとして実装することもできる。図１は、一例を表すものであり、本発明についてのアーキテクチャ面の制限として意図されるものではない。
【００１１】
図２を参照すると、本発明の好ましい実施形態に係る、図１のサーバ１０４などのサーバとして実装することができるデータ処理システムのブロック・ダイアグラムが示される。データ処理システム２００は、システム・バス２０６に接続された複数のプロセッサ２０２及び２０４を含む対称型マルチプロセッサ・システム（ＳＭＰ）とすることができる。代替的に、シングル・プロセッサ・システムを使用することもできる。システム・バス２０６には、ローカル・メモリ２０９とのインターフェースになるメモリ・コントローラ／キャッシュ２０８も接続される。Ｉ／Ｏバス・ブリッジ２１０が、システム・バス２０６に接続され、Ｉ／Ｏバス２１２とのインターフェースになる。メモリ・コントローラ／キャッシュ２０８及びＩ／Ｏバス・ブリッジ２１０は、図示されるように一体化することができる。
【００１２】
Ｉ／Ｏバス２１２に接続されたペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス・ブリッジ２１４が、ＰＣＩローカル・バス２１６とのインターフェースになる。ＰＣＩローカル・バス２１６には、多数のモデムを接続することができる。典型的なＰＣＩバス実装は、４つのＰＣＩ拡張スロット又はアドイン・コネクタをサポートするものである。図１のクライアント１０８、１１０、及び１１２との通信リンクは、アドイン・ボードを介してＰＣＩローカル・バス２１６に接続されたモデム２１８及びネットワーク・アダプタ２２０によって構成することができる。
【００１３】
付加的なＰＣＩバス・ブリッジ２２２及び２２４が、付加的なモデム又はネットワーク・アダプタをサポートすることができる付加的なＰＣＩローカル・バス２２６及び２２８のためのインターフェースになる。このようにして、データ処理システム２００は、多数のネットワーク・コンピュータとの接続が可能になる。図示されるように、メモリ・マップ・グラフィックス・アダプタ２３０及びハード・ディスク２３２も、直接的に又は間接的に、Ｉ／Ｏバス２１２に接続することができる。
【００１４】
当業者であれば、図２に示されたハードウェアは変更できることを理解するであろう。例えば、図示されたハードウェアに加えて、又はそれらに代えて、光ディスク・ドライブなどといった他の周辺装置を用いることもできる。図示された例は、本発明についてのアーキテクチャ面での制限を意味することを意図するものではない。
【００１５】
図２に示されたデータ処理システムは、例えば、拡張対話式エグゼクティブ（ＡＩＸ）オペレーティング・システム又はＬＩＮＵＸオペレーティング・システムが作動する、ニューヨーク州アーモンクのＩｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ  Ｃｏｒｐｏｒａｔｉｏｎの製品であるＩＢＭ  ｅＳｅｒｖｅｒ  ｐＳｅｒｉｅｓシステムとすることができる。
【００１６】
ここで図３を参照すると、本発明を実装することができるデータ処理システムを説明するブロック・ダイアグラムが示される。データ処理システム３００は、クライアント・コンピュータの例である。データ処理システム３００は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ローカル・バス・アーキテクチャを利用する。図示された例はＰＣＩバスを利用するものであるが、Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）及びＩｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）などの他のバス・アーキテクチャを用いることもできる。プロセッサ３０２及びメイン・メモリ３０４が、ＰＣＩブリッジ３０８を介してＰＣＩローカル・バス３０６に接続される。ＰＣＩブリッジ３０８は、プロセッサ３０２のための一体型のメモリ・コントローラ及びキャッシュ・メモリを含むこともできる。コンポーネントの直接相互接続によって、又はアドイン・ボードを介して、ＰＣＩローカル・バス３０６との付加的な接続が行われる。図示された例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ３１０、ＳＣＳＩホスト・バス・アダプタ３１２、及び拡張バス・インターフェース３１４が、コンポーネントの直接接続によってＰＣＩローカル・バス３０６に接続される。対照的に、オーディオ・アダプタ３１６、グラフィックス・アダプタ３１８、及びオーディオ／ビデオ・アダプタ３１９が、拡張スロットに挿入されたアドイン・ボードによって、ＰＣＩローカル・バス３０６に接続される。拡張バス・インターフェース３１４は、キーボード及びマウス・アダプタ３２０、モデム３２２、及び追加メモリ３２４の接続を提供する。小型コンピュータ・システム・インターフェース（ＳＣＳＩ）ホスト・バス・アダプタ３１２は、ハード・ディスク・ドライブ３２６、テープ・ドライブ３２８、及びＣＤ−ＲＯＭドライブ３３０の接続を提供する。
【００１７】
オペレーティング・システムが、プロセッサ３０２上で作動し、図３のデータ処理システム３００内部の様々なコンポーネントの制御を調整及び提供するのに用いられる。オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＷｉｎｄｏｗｓ（商標）ＸＰなどの市販のオペレーティング・システムとすることができる。Ｊａｖａのようなオブジェクト指向プログラミング・システムが、オペレーティング・システムと共に作動し、データ処理システム３００上で実行しているＪａｖａプログラム又はアプリケーションからオペレーティング・システムを呼び出すことができる。「Ｊａｖａ」は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．の登録商標である。オペレーティング・システム、オブジェクト指向オペレーティング・システム、及び、アプリケーション又はプログラムのための命令は、ハード・ディスク・ドライブ３２６などのストレージ・デバイス上に置かれ、プロセッサ３０２による実行のためにメイン・メモリ３０４に読み込むことができる。
【００１８】
当業者であれば、図３のハードウェアは、実装形態に応じて変更できることを理解するであろう。図３に示されたハードウェアに加えて、又はそれらに代えて、フラッシュ読み取り専用メモリ（ＲＯＭ）、同様の不揮発性メモリ、及び光ディスク・ドライブなどといった他の内蔵ハードウェア又は周辺装置を用いることもできる。また、本発明の処理は、マルチプロセッサ・データ処理システムに応用することができる。
【００１９】
図３に示された例及び上述の例は、アーキテクチャ面での制限を意味することを意図するものではない。例えば、データ処理システム３００は、ＰＤＡの形態をとることに加えて、ノートブック・コンピュータ又はハンドヘルド・コンピュータとすることもできる。データ処理システム３００は、キオスク又はＷｅｂアプライアンスとすることもできる。
【００２０】
ここで図４に移ると、本発明の好ましい実施形態に係る、ソフトウェア・コンポーネントを更新するのに用いられるコンポーネントを示すダイアグラムが図示される。これらのコンポーネントは、単一のデータ処理システム内部に置くことができるが、これらのコンポーネントの１つ又はそれ以上を、１つ又はそれ以上の他のデータ処理システムに置いてもよい。
【００２１】
自律型更新を行う場合は、更新管理コンポーネント４００が、データベース４０２を利用する。「自律型更新」という用語の使用は、ソフトウェア・コンポーネントの更新が、いかなるユーザ介入も伴わないソフトウェア処理を用いて自動的に行われることを意味する。この更新は、例えば、実行可能ファイルの変更、データ・ファイルの変更、新たな実行可能ファイルの追加、新たなデータ・ファイルの追加、又は設定の変更を含むことができる。データベース４０２には、利用可能な更新群４０４と、テスト情報４０６と、インストール情報４０８と、ロールバック情報４１０とが含まれる。利用可能な更新群４０４は、異なるソフトウェア・コンポーネントについての更新に関する情報を含み、更新管理コンポーネント４００が管理することができる。この情報は、例えば、バージョン番号によって特定される、その時点で利用可能な更新群、更新群を特定することができる位置若しくはパス、又は実際の更新ファイル自体を含むことができる。この情報は、自律型更新に関係する異なるデータ処理システムの特定を含むこともできる。更新が、利用可能な更新群４０４の外部に置かれる場合には、パス情報又は位置情報を通してこれらの更新を位置指定することができる。例えば、利用可能な更新群４０４内部の更新情報は、更新管理コンポーネントがアクセス可能なストレージ・メディア４１２をポイントすることができる。ストレージ・メディア４１２は、更新管理コンポーネント４００と同一のデータ処理システムに置くか、又は遠隔のデータ処理システムに置くことができる。このストレージ・メディアは、例えば、ハード・ディスク・ドライブ、磁気テープ、又はＣＤ−ＲＯＭなどの様々な形態をとることができる。
【００２２】
データベース４０２は、利用可能な更新群４０４にリストされる各々の更新についてのテスト情報も含む。この例では、テスト情報４０６は、更新の自律型配置に続いて行われることになるゼロ又はそれ以上のテストを指定する。「自律型配置」という用語の使用は、「自律型更新」という用語と置き換えることが可能である。自律型更新の後に行われるテストは、特定の実施形態に応じて変わることになる。テストは、更新が適切にインストールされたかどうかを判断するのに用いられるテスト以外のテストを含むことができる。例えば、場合によっては、テストは、性能テスト、ユニット・テスト、互換性テスト、又は、オンザフライのレグレッション・テストを含むことがある。ユニット・テストは、より大きな全体の小さな部分をテストすることに関係するものである。例えば、ソフトウェア・ユニット・テストは、個々のオブジェクトが異なる入出力に応答して正しく機能することを検証するために開発されている特定のソフトウェアについて、これらのオブジェクト上で行われる。この例では、ユニット・テストは、適用された更新に特に関連する１つ又はそれ以上のコンポーネントのテストを含む。更新は、例えば、新たなプログラム・ファイル、修正されたプログラム・ファイル、又は設定変更とすることができる。このタイプのテストは、時間及び影響の点から見て低コストであり、幾つかの基準又はベンチマークに対して十分に機能していることを手順レベルで確認するものである。性能テストは、更新後のシステムの性能が許容できるものであることを保証するために用いられる。性能テストの一部として、様々なしきい値及びベンチマークを用いることができる。互換性テストは、更新済みコンポーネントが、該更新済みコンポーネントと通信を行う他のコンポーネントにとって許容できる形で機能することを保証するために、使用することができる。レグレッション・テストは、更新済みコンポーネントが古いコンポーネントと同等に機能するかどうかを判断するのに利用することができる別のテストである。性能テストで、ソフトウェア・コンポーネントが幾つかのメトリック又はしきい値を満たさない場合には、たとえ更新がソフトウェア・コンポーネントにうまく配置されたとしても、そのテストは失敗である。行われる異なるタイプのテストは、更新が実行された後に自動的に行われるため、「自律型」テストと呼ばれる。これらのテストを行うのにユーザ入力は不要である。この例では、自律型テストは更新管理コンポーネント４００が行う。「自律型」テストは、ユーザ入力又はユーザ介入を必要とすることなく開始され、行われるテストである。言い換えると、自律型テストは、テストを選択するか又は開始するユーザ入力をユーザがデータ処理システムに与えることを必要とせずに、発生した更新に応答して開始される。テストを行うかどうか、及び、どのテストを行うかということは、テスト情報４０６内のポリシーに基づいている。例えば、ポリシーは、更新が電子メール・サーバに対するものである場合には、更新が配置された後に性能テストを行うことになることを指定できる。さらに、とるべき修正措置を、テスト情報４０６に含むことができる。修正措置として、例えば、更新をロールバックすること、完全に異なるソフトウェア・コンポーネントをインストールすること、又は、異なるパラメータ又は選択肢を持つ更新を再インストールすることを挙げることができる。
【００２３】
さらに、データベース４０２は、インストール情報４０８を含むこともできる。この例では、このインストール情報は、特定の更新を持つソフトウェア・コンポーネントをインストールするか又は更新する際に更新管理コンポーネント４００が用いる手順を指定する。ロールバック情報４１０は、更新がロールバックされることになる場合に行う手順を指定する。更新のロールバックは、更新を取り除き、ソフトウェア・コンポーネントを更新前の以前の状態に戻すことを伴う。こうした手順は、更新済みソフトウェア・コンポーネントのテストが失敗するか又は幾つかの特定のエラーを引き起こした場合に、本発明の好ましい実施形態に従って行われる。幾つかの場合には、エラーが軽微なものであり、ロールバックせずに更新を維持することになる場合がある。他の場合には、エラーが深刻なものであり、更新管理コンポーネント４００が更新のロールバックを行うことになる場合もある。
【００２４】
インストール・データベース４１４は、特定のデータ処理システムにインストールされるソフトウェア・コンポーネント及び更新のデータベースである。インストール・データベース４１４は、１つのデータ処理システムについての情報、又は多くのデータ処理システムについての情報を含むことができる。更新管理コンポーネント４００は、このデータベースの情報と利用可能な更新群４０４とを相互に参照して特定のデータ処理システムに適用可能な更新を特定するために、インストール・データベース４１４を用いることができる。次に、履歴データベース４１６は、データ処理システムに対して行われた更新の履歴を含む。例えば、この履歴情報は、データ処理システムに配置された利用可能な更新群４０４からの更新の特定、各々の更新が配置された時期、並びに更新に関して行われたテストの結果を含む。このデータベースは、２つ以上のコンピュータについてのステータスを追跡することもできる。さらに、更新のテストに続いて行われた決定、及びテストの結果としてとられたあらゆる措置を、履歴データベース４１６に格納することができる。更新管理コンポーネント４００は、履歴データベース４１６を用いて、例えばどの更新をインストールするか及び更新をいつインストールするかといった、更新に関する決定を行うことができる。更新管理コンポーネント４００によって用いられる別のデータベースは、優先データベース４１８である。このデータベースは、更新管理コンポーネント４００の動作を制御するのに用いられる付加的な情報を含む。例えば、優先データベース４１８は、特定のソフトウェア・コンポーネントについて、最新の更新をインストールすべきではないことを指定できる。結果として、その特定のソフトウェア・コンポーネントは、常に、その時点で利用可能な更新以前の更新を用いて作動することになる。
【００２５】
この例では、インストール・データベース４１４と、履歴データベース４１６と、優先データベース４１８とは、２つ以上のクライアント・データ処理システムに関する情報を含むことができる。例えば、優先データベース４１８は、特定のソフトウェア・コンポーネント及び特定のデータ処理システムについて、最新の更新をインストールすべきではないことを指定できる。結果として、その特定のデータ処理システムは、常に、その特定のソフトウェア・コンポーネントについてその時点で利用可能な更新の前の更新を用いて作動することになる。更新管理コンポーネント４００は、データベース４０２に示される情報以外の他のタイプの情報を追跡することもできる。例えば、コンピュータ及び更新の過去のステータスに関する情報を、データベース４０２に格納することができる。
【００２６】
ここで図５を参照すると、本発明の好ましい実施形態に係る、自律型更新に用いられるコンポーネントを示すダイアグラムが図示される。この例では、クライアント５０２及び５０４などの多数の異なるクライアントに関する更新を管理するために、一次更新管理コンポーネント５００といった中央の、すなわち一次更新コンポーネントを用いて、更新が行われる。これらのクライアントは、例えば二次更新管理コンポーネント５０６及び５０８といった二次更新管理コンポーネントを含む。一次更新管理コンポーネント５００は、図１のサーバ１０４などのサーバに置くことができ、一方、二次更新管理コンポーネント５０６及び５０８は、図１のクライアント１０８及び１１０などのクライアントに置くことができる。これらの二次更新管理コンポーネントの各々は、該コンポーネントの各々が置かれるクライアント上のソフトウェア・コンポーネントを管理する。
【００２７】
この例では、一次更新管理コンポーネント５００は、利用可能な更新の自律型更新、テスト、及びロールバックを制御するために、データベース５１０にアクセスする。利用可能な更新は、この例では、利用可能な更新群５１２に置かれる。更新をクライアント５０２及び５０４にインストールするのに用いられる情報は、インストール情報５１４に置かれ、一方、インストール後に行われることになるテストは、テスト情報５１６に置かれる。テストに失敗した場合には、更新をロールバックするのに用いられる手順は、ロールバック情報５１８に置かれる。
【００２８】
二次更新管理コンポーネント５０６は、履歴データベース５２０及び優先データベース５２２にアクセスし、二次更新管理コンポーネント５０８は、履歴データベース５２４及び優先データベース５２６にアクセスする。これらの二次更新管理コンポーネントの各々は、各々の特定のクライアントについて更新が利用可能かどうかを判断するために、一次更新管理コンポーネント５００と連絡を取る。利用可能な更新について調査する場合には、インストール済みの更新に関する優先情報及び履歴情報を、二次更新管理コンポーネント５０６及び二次更新管理コンポーネント５０８から一次更新管理コンポーネント５００に送信することができる。この調査は、タイマーの終了のような定期イベント又はソフトウェア・コンポーネントの起動といった他の何らかの非定期イベントなどの何らかのイベントに基づいて行うことができる。更新の利用可能性は、利用可能な更新群５１２に格納される。
【００２９】
更新が利用可能である場合には、更新をインストールするための手順は、一次更新管理コンポーネント５００によってインストール情報５１４から取得され、二次更新管理コンポーネント５０６及び５０８に送信される。インストール情報の受信に応答して、二次更新管理コンポーネント５０６及び二次更新管理コンポーネント５０８は、一次更新管理コンポーネント５００から受信した手順を用いて自律型更新を行う。更新のインストール後、二次更新管理コンポーネント５０６及び二次更新管理コンポーネント５０８は、テスト情報５１６から一次更新管理コンポーネント５００を通して受信したテスト情報を用いて、更新のテストを行う。テストに成功した場合には、ソフトウェア・コンポーネントは作動し続ける。テストに成功しなかった場合には、ロールバック手順が、ロールバック情報から一次更新管理コンポーネント５００を通して受信される。更新、テスト、及びロールバックに関するデータ及び統計情報は、履歴データベース５２０及び履歴データベース５２４に格納される。
【００３０】
この特定の例では、一次更新管理コンポーネント５００は、自律型更新に関与するコンピュータに関する情報、テストを行うデータ処理システムの特定、その時点でコンピュータにインストールされている各々のソフトウェア・コンポーネントのバージョン及び設定の特定、並びに、インストール可能なソフトウェア・コンポーネントについてのバージョン及び設定に関する情報といった、付加的な情報を追跡することができる。さらに、一次更新管理コンポーネント５００は、その時点でクライアント上で進行中の更新及びテストに関する他の情報を追跡することもできる。この情報は、例えば、その時点で更新過程にあるソフトウェア・コンポーネントと、実行中のあらゆるテストの状態又は段階とを含むことができる。
【００３１】
重要なソフトウェア・コンポーネントの場合には、そのソフトウェア・コンポーネントのインストールは、類似の又は同一の設定を有する新たなクライアント上で行うことができる。例えば、クライアント５０２は、ネットワーク・データ処理システムの重要な構成要素となる電子メール・サーバとすることができる。電子メール・サーバ・コンポーネントが利用可能な更新を二次更新管理コンポーネント５０６が特定すると、更新が行われるべき別のクライアントが特定される。具体的には、クライアント５０４に対しては、二次更新管理コンポーネント５０８によって更新が行われるが、クライアント５０２に関しては更新が行われない。クライアント５０４上の電子メール・サーバ・コンポーネントに関して更新が行われ、テストが行われた後で、ユーザは、クライアント５０２からクライアント５０４に転送すなわち移行することができる。障害又はエラーが発生しなかった場合には、クライアント５０２は段階的に切り離され、クライアント５０４は、電子メール・サービスをユーザに提供することができる。エラーが発生した場合には、ユーザはクライアント５０２に戻ることができる。この手順は、更新後に何らかのエラー又は障害が発生した場合の付加的なフェールセーフ機構を提供する。第２のデータ処理システム上で更新を行うことによって、第１のデータ処理システムを更新しない状態で維持しながら、該第２のデータ処理システムの障害の場合には、該第１のデータ処理システムを迅速にサービスに復帰させることができる。当然のことながら、この手順は、図５に示される分散構造を利用するのではなく、図４に示されるような、ソフトウェア・コンポーネントの更新と使用の移行とを指示する単一の管理コンポーネントによって行うことができる。
【００３２】
ここで図６に移ると、本発明の好ましい実施形態に係る、自律型更新を行うために用いられる処理のフローチャートが図示される。図６に示される処理は、図４の更新管理コンポーネント４００などの更新管理コンポーネントに実装することができる。
【００３３】
処理は、ソフトウェア・コンポーネントを選択することから始まる（ステップ６００）。コンポーネントの選択は、特定の実装形態に応じて変えることができる。この例では、選択されるコンポーネントは、図４のインストール・データベース４１４などのインストール・データベースにアクセスすることによって特定することができる。インストール・データベースは、特定のデータ処理システムにインストールされるソフトウェア・コンポーネントを特定することができる。あるいは、更新が行われることになる時といった特定の時点で、動的にソフトウェア・コンポーネントを特定することができる。このソフトウェア・コンポーネントについて更新が利用可能かどうかに関して判断される（ステップ６０２）。この更新は、情報についての図４のデータベース４０２などのデータベースを検査することによって行うことができる。更新がコンポーネント関して利用可能である場合には、更新が望ましいかどうかに関して判断される（ステップ６０４）。この決定は、図４の履歴データベース４１６及び優先データベース４１８などのデータベースから入手することができる優先情報及び履歴情報を用いて、行うことができる。更新が望ましい場合には、更新が配置される（ステップ６０６）。更新の配置後、配置が成功したかどうかに関して判断される（ステップ６０８）。配置が成功した場合には、更新をテストするかどうかに関して判断される（ステップ６１０）。場合によっては、更新に対してテストが行われないことがある。更新がテストされることになる場合には、１つ又はそれ以上の指定されたテストが行われる（ステップ６１２）。実行される特定のテスト又は複数のテストは、図４のデータベース４０２に存在するテスト情報４０６などのテスト情報によって指定される。テストが行われた後、更新に対して行われたテストに成功したかどうかに関して判断される（ステップ６１４）。テストに成功した場合には、履歴データベースが更新される（ステップ６１６）。この履歴データベースは、図４の履歴データベース４１６などのデータベースである。データベースに書き込まれた情報は、更新形式についての情報、テスト結果、及び、ソフトウェア・コンポーネントに対する将来の更新の適用を判断するために用いることができる他の何らかのデータを含む。次に、付加的な未処理のソフトウェア・コンポーネントが存在するかどうかに関して判断される（ステップ６１８）。付加的な未処理のソフトウェア・コンポーネントが存在しない場合は、処理は終了する。
【００３４】
再度ステップ６１８を参照すると、未処理のソフトウェア・コンポーネントがさらに存在する場合には、処理は上述のステップ６００に戻る。ステップ６１４に戻ると、テストに失敗した場合は、修正措置が行われる（ステップ６２０）。この修正措置として、ソフトウェア・コンポーネントの更新のロールバックを行うことができる。行うことができる他の修正措置として、例えば、異なる更新を特定してソフトウェア・コンポーネントに適用すること、又は、現在のコンポーネントの代わりをする完全に新しいソフトウェア・コンポーネントのロールアウトを速めることが挙げられる。例えば、ウェブ・サーバ処理の更新がテスト失敗という結果になった場合には、ウェブ・サーバ処理をその未更新の状態にロールバックするのではなく、現在のウェブ・サーバ処理の代わりに異なるソースからのウェブ・サーバ処理をインストールすることができる。図４のデータベース４０２などのデータベースには、取るべき特定の修正措置を含むことができる。ロールバックが行われる場合には、更新をロールバックするのに用いられる処理は、図４のデータベース４０２のロールバック情報４１０から特定することが可能である。その後、通知が送信される（ステップ６２２）。通知は、典型的には、更新を最適用する試行がそれ以上行われないときに送信される。この通知は、典型的には、管理者に送信される。通知は、例えば、電子メール、ページャー、及び簡易ネットワーク管理プロトコル（ＳＮＭＰ）などの様々な通信機構によって送信することができ、処理は、上述のステップ６１８に進む。
【００３５】
ステップ６０８に戻ると、配置が失敗した場合には、更新の配置を再試行するかどうかに関して判断される（ステップ６２４）。更新が繰り返されることになる場合には、処理はステップ６０６に戻る。そうでなければ、処理は上述のステップ６２２に進む。この場合、通知は、配置の失敗を表す。通知は、例えば、配置が一度失敗した場合、同一目標に対する同一更新の配置の試行が二度又はそれ以上失敗した場合、異なる目標に対する同一更新の配置の試行が二度又はそれ以上失敗した場合、又は、同一目標に対する２又はそれ以上の異なる更新の配置の試行が一度又はそれ以上失敗した場合など、様々な種類の失敗の後に発生させることができる。これらの通知は、特定の実装形態に応じて、ファイルに記録するか、又は管理者に送信することができる。再度ステップ６１０を参照すると、テストが行われない場合には、処理は上述のステップ６１８に進む。場合によっては、メトリックが、失敗が発生する可能性が低いことを示す場合には、テストは行われない。更新が望ましくない場合にも、処理はステップ６０４からステップ６１８に進む。再度ステップ６０２を参照すると、更新がコンポーネントに利用可能ではない場合にも、処理はステップ６１８に進む。
【００３６】
ここで図７を参照すると、本発明の好ましい実施形態に係る、自律型更新を行うために用いられる処理のフローチャートが図示される。図７に示される処理は、図５の二次更新管理コンポーネント５０６などの二次更新管理コンポーネントに実装することができる。
【００３７】
処理は、一次更新管理コンポーネントにメッセージを送信することから始まる（ステップ７００）。このメッセージには、更新が利用可能で、かつ行われるべきかどうかに関するクエリが含まれる。一次管理コンポーネントに送信されるメッセージは、例えば、更新に関する優先情報、及び、ソフトウェア・コンポーネントに対して行われた最新の更新に関する履歴情報といった情報を含むことができる。メッセージに対する応答が受信される（ステップ７０２）。メッセージは、行われることになるあらゆる更新の特定と共に、更新が行われるべきかどうかを表す。このメッセージは、更新をインストールする手順、更新がインストールされた後に行う１つ又はそれ以上のテストの特定、及び、テストに失敗した場合のロールバック処理の特定といった情報を含むこともできる。更新が行われることになるかどうかに関して判断される（ステップ７０４）。更新が行われることになる場合には、一次更新管理コンポーネントから受信したインストール情報を用いて、ソフトウェア・コンポーネントの更新が行われる（ステップ７０６）。コンポーネントはテストされ（ステップ７０８）、テストに成功したかどうかに関して判断される（ステップ７１０）。テストに成功した場合には、履歴データベースが更新され（ステップ７１２）、処理はその後終了する。
【００３８】
再度ステップ７１０に戻ると、テストに失敗した場合には、更新をソフトウェア・コンポーネントから除去して該ソフトウェア・コンポーネントを以前の状態に戻すために更新のロールバックが行われ（ステップ７１４）、処理はその後終了する。再度ステップ７０４を参照すると、更新が行われない場合には、処理は終了する。
【００３９】
図７に示されるステップは、一次更新管理コンポーネントが二次更新管理コンポーネントと連絡を取ることが可能になるように修正することもできる。この場合は、一次更新管理コンポーネントは、どんな更新が利用可能であるかを二次更新管理コンポーネントに伝える。この構成は、二次更新管理コンポーネントが一次更新管理コンポーネントにクエリを行って更新が利用可能であるかどうかを判断するようにしたこれまでの例に示されるプル・モデルとは異なるプッシュ・モデルである。
【００４０】
ここで図８に移ると、本発明の好ましい実施形態に係る、自律型更新を行うために用いられる処理のフローチャートが図示される。図８に示される処理は、図５の二次更新管理コンポーネント５０６及び図４の更新管理コンポーネント４００などの更新管理コンポーネントに実装することができる。この例の処理は、重要な機能を有するソフトウェア・コンポーネントのソフトウェア更新を行うのに用いられる。
【００４１】
処理は、更新が利用可能であるかどうかに関して判断することから始まる（ステップ８００）。更新が利用可能である場合には、更新が望ましいかどうかに関して判断される（ステップ８０２）。更新が望ましい場合には、新たなシステムが特定される（ステップ８０４）。この新たなシステムは別のデータ処理システムであり、更新管理コンポーネントによって管理されるソフトウェア・コンポーネントと同じ機能を提供するように構成されるものである。例えば、ソフトウェア・コンポーネントが電子メール・サーバである場合には、このソフトウェア・コンポーネントを含む別のデータ処理システムが選択され、更新される。更新は、新たなシステムに配置される（ステップ８０６）。新たなシステム上の更新はテストされ（ステップ８０８）、更新が成功したかどうかに関して判断される（ステップ８１０）。更新が成功した場合には、ソフトウェア・コンポーネントのクライアントを新たなシステムに移動させる（ステップ８１２）。ステップ８１２では、特定の実装形態に応じて、クライアントの一部又は全部を新たなシステムに移動させることができる。クライアントが新たなシステムに移動又は移行した後に、エラーが存在するかどうかに関して判断される（ステップ８１４）。エラーが存在する場合には、クライアントは古いシステムに戻され（ステップ８１６）、処理はその後終了する。
【００４２】
再度ステップ８１４を参照すると、エラーが存在しない場合には、古いシステムは段階的に切り離され（ステップ８１８）、処理はその後終了する。再度ステップ８１０に戻ると、更新が成功しなかった場合には、処理は終了する。当然のことながら、特定の実装形態に応じて、更新を実装する試行をさらに行ってもよい。再度ステップ８０２を参照すると、更新が望ましくない場合には、処理は終了する。再度ステップ８００を参照すると、更新が利用可能ではない場合には、処理は終了する。
【００４３】
ここで図９に移ると、本発明の好ましい実施形態に係る、自律型更新を修正するために用いられる処理のフローチャートが図示される。図９に示される処理は、図５の二次更新管理コンポーネント５０６などの更新管理コンポーネントに実装することができる。
【００４４】
処理は、更新に関するメトリックを取得することから始まる（ステップ９００）。これらのメトリックは、図５の履歴データベース５２０又は履歴データベース５２４などの履歴データベースから取得することができる。これらのメトリックは、ネットワーク・データ処理システム内の単一のクライアント若しくはノード、又は多数のクライアント若しくはノードから、取り出すことができる。これらのメトリックは、例えば、ロールアウトが行われたデータ及びクライアント、ロールバックが発生したデータ及びクライアント、並びに、更新に関連するあらゆるテスト及びテスト結果といったデータを含む。メトリックは、分析される（ステップ９０２）。この分析は、特定の実装形態に応じて、様々な形態をとることができる。例えば、特定の種類又はセットのソフトウェア・エンティティ間、ユーザ間、ハードウェアの種類間、及びオペレーティング・システム間における失敗の発生ごとのパターン及び相関関係を特定するように、メトリックを分析することができる。更新の配置は、分析結果を用いて修正され（ステップ９０４）、処理はその後終了する。この修正は、様々な形態をとることができる。例えば、更新が失敗する可能性の高いデータ処理システムに関しては、更新の配置を避けることができる。この修正には、更新が成功する可能性の高いデータ処理システムへの更新の配置を速めることを含むこともできる。修正には、更新の配置を中止すること又は更新を修正することを含むこともできる。分析によって、以前の更新の成功を改善するように付加的な更新が配置されるか又は行われる修正がもたらされることがある。さらに、ステップ９２０で特定された特定の相関又はパターンに応じて、その相関又はパターンの通知を管理者に提供することができる。
【００４５】
このように、本発明は、ソフトウェア・コンポーネントの自律型更新について、改善された方法、装置、及びコンピュータ命令を提供する。本発明の機構は、ソフトウェア・コンポーネントを更新し、障害又はエラーが発生したかどうかを判断するために該ソフトウェア・コンポーネントを自動的にテストし、テストにおいて障害又はエラーが特定された場合は、更新を以前のバージョンにロールバックするか、又は他の幾つかの修正措置をとることができる。本発明の更新管理コンポーネントは、更新の進行及びステータスに関する情報を受信し、その情報に基づいて決定できることが明らかであろう。こうした決定は、簡単なもの（例えば、更新をロールバックする決定、及び再配置を試行しない決定）から複雑なもの（例えば、更新を部分的にロールバックする、すなわち更新済みコンピュータのサブセットから更新をロールバックする決定、及び更新がテストに失敗したコンピュータと幾つかの関連メトリックが類似するコンピュータの更新の配置を試行しない決定）にまで及ぶものとすることができる。更新管理コンポーネントの存在によって、更新管理コンポーネントがない場合に可能な決定と比べてより一層複雑な決定を、極めて広範な利用可能データの組に基づいて、自動的に行うことができるようになるものと理解できる。
【００４６】
詳しく述べると、別の好ましい実施形態においては、（１つ又はそれ以上の適切なメトリックによる）更新の飛躍的な成功は、他のマシンへの更新の配置を速めることができる。さらに別の実施形態においては、メトリックの分析は、ソフトウェア更新がある環境では作動に成功するが、他の環境では作動しないことを表すことができ、分析が、更新が作動しない環境間の類似点を表すときには、更新が失敗した環境と共通の類似点を持たないマシンに対して更新のロールアウトを続けることができる。別の実施形態においては、コンポーネントの配置に伴う問題に遭遇した場合に、検出された問題を解決するか又は何らかの他の方法で処理すると考えられる別のソフトウェア・コンポーネントの配置を速めることを決定することができる。別の可能な実施形態は、多数のコンピュータに同一の更新を行い、そのようなコンピュータの多くに関して更新及びテストが成功した後で、それに続く残りのコンピュータへの更新の配置に関するテストの幾つか又はすべてをスキップするように決定する更新管理コンポーネントを有する。
【００４７】
さらに、本発明の機構は、すべてのソフトウェア更新と、ロールアウトと、ロールバックと、特定の種類のソフトウェア・エンティティ間、特定の種類のユーザ間、特定の種類のデータ処理システム間、及び、又はオペレーティング・システム間における障害の発生パターンを特定するテストと、のメトリックを維持することができる。これらのパターンは、パターンを特定するのに通常用いられる異なる統計分析によって、特定することができる。多数のデータ処理システムにおける多数の更新の全体的な振る舞いの例には、特定のオペレーティング・システムが作動するマシンで更新が試行されるたびに、更新が失敗するパターンを含むものもある。この場合は、その特定のオペレーティング・システム上の更新は、その後行われるべきではない。別の例は、更新が特定の製造者のデータ処理システムにインストールされるたびに更新が失敗する場合である。別のパターンの例は、３番目の更新はインストールできるが、３番目の更新が１番目の更新後にインストールされると必ずテストに成功しない場合である。別のパターンは、例えば、２番目の更新が最初にインストールされない限り、４番目の更新がインストールできない場合である。より細分化されたパターン検出が、例えば性能又は互換性のパターンといった他のパターンを検出するのに用いることもできる。これらのパターンを用いて、更新処理における更新の手順又は他の要因を適応的に修正し、配置の失敗及び必要なロールバックの発生を減少させることができる。例えば、特定のパターンが、インストールが行われる方法の変化を表すか、又は、さらなる障害又はテスト失敗をもたらすものとして特定のステップ又は選択肢が特定された場合には更新についての選択肢の選択を表すことができる。このように、テストに失敗する可能性の高いシステムに関して、配置又は更新を避けることができる。さらに、これらの特定により、他のコンピュータを更新するソフトウェアの配置を速めることができる。これは、特定されたパターンが、更新が何らかの障害を引き起こす可能性が低いことを示す場合に、特に当てはまる。また、パターンが、多くの障害が発生することを表すときは、更新の配置を中止するか又は終了することができる。別の場合には、パターンは、以前の更新の成功を改善するために付加的な更新を利用すべきであることを表すことができる。この機構を用いて、次の更新が成功する可能性を高めるように更新についての修正を特定することもできる。あるインストールが失敗するか又はうまく行われないパターンなどのパターンを、先の更新のどれが行われ、どれが行われなかったかに基づいて自動的に検出し、対応する更新手順を使用することができる。更新処理は、更新のテスト又はインストールの失敗を避けるように処理を変えることによって、適応させることができる。
【００４８】
本発明は完全に機能するデータ処理システムに即して説明されたが、当業者であれば、本発明の処理の命令を、コンピュータ読取可能媒体の形態及び様々な形態で配布することが可能であり、本発明は、実際に配布を行うのに用いられる信号支持媒体の具体的な種類にかかわらず等しく利用されると理解するであろうということに留意することが重要である。コンピュータ読取可能媒体の例として、フロッピー・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの書き込み可能タイプの媒体、並びに、例えば無線通信及び光通信などの通信形態を用いる、デジタル及びアナログ通信リンク、有線又は無線通信リンクといった通信タイプの媒体が挙げられる。コンピュータ読取可能媒体は、特定のデータ処理システムで実際に用いるためにデコードされるコード化フォーマットの形式をとることができる。
【００４９】
本発明の記述は、例示及び説明の目的で提示され、網羅的であること又は本発明を開示された形態に限定することを意図するものではない。当業者には、多くの修正又は変形が明らかであろう。実施形態は、本発明の原理及び実際の適用を最もよく説明するように、及び、考慮された特定の使用に適合するような種々の修正を伴う様々な実施形態について当業者以外でも本発明を理解できるように、選択し記述された。
【図面の簡単な説明】
【００５０】
【図１】本発明を実装することができるデータ処理システムのネットワークの図形表示である。
【図２】本発明の好ましい実施形態に係る、サーバとして実装することができるデータ処理システムのブロック・ダイアグラムである。
【図３】本発明を実装することができるデータ処理システムを説明するブロック・ダイアグラムである。
【図４】本発明の好ましい実施形態に係る、ソフトウェア・コンポーネントを更新するのに用いられるコンポーネントを示すダイアグラムである。
【図５】本発明の好ましい実施形態に係る、自律型更新に用いられるコンポーネントを示すダイアグラムである。
【図６】本発明の好ましい実施形態に係る、自律型更新を行うために用いられる処理のフローチャートである。
【図７】本発明の好ましい実施形態に係る、自律型更新を行うために用いられる処理のフローチャートである。
【図８】本発明の好ましい実施形態に係る、自律型更新を行うために用いられる処理のフローチャートである。
【図９】本発明の好ましい実施形態に係る、自律型更新を修正するために用いられる処理のフローチャートである。
【図１】
2006507570.tif 000003
【図２】
2006507570.tif 000004
【図３】
2006507570.tif 000005
【図４】
2006507570.tif 000006
【図５】
2006507570.tif 000007
【図６】
2006507570.tif 000008
【図７】
2006507570.tif 000009
【図８】
2006507570.tif 000010
【図９】
2006507570.tif 000011
【国際調査報告】
2006507570.tif 000012
2006507570.tif 000013