(57)【要約】【課題】  適用するパッチを必要最小限にとどめてパッチを再構成する。【解決手段】既に提供されたパッチおよび新たに提供されるパッチをモジュール単位に分解し、再構築するためのパッチ再構成方法であって、パッチ情報とその重要度を照合し、提供されたパッチの対象となるモジュール間の互換性情報を管理し、パッチ情報と互換性情報を照合して最低限必要と判断したモジュールを抽出し、その抽出した結果を基にパッチの再構成を行う。【選択図】  図１
2008146163.tif 000002
【特許請求の範囲】
【請求項１】
計算機を用いて既に提供されたパッチおよび新たに提供されるパッチをモジュール単位に分解し、再構築するためのパッチ再構成方法であって、該計算機は、パッチ情報とその重要度を照合するステップと、提供されたパッチの対象となるモジュール間の互換性情報を管理するステップと、パッチ情報と互換性情報を照合し、最低限必要と判断したモジュールを抽出するステップと、前記抽出した結果を基にパッチの再構成を行うステップと、を実行することを特徴とするパッチ再構成方法。
【請求項２】
提供されたパッチの重要度を格納した前記パッチ情報と、前記互換性情報を照合し、パッチを適用する対象のシステムに対して最低限必要と判断したモジュールのみを抽出することを特徴とする請求項１のパッチ再構成方法。
【請求項３】
提供されたパッチの重要度を格納した前記パッチ情報と、前記互換性情報を照合し、パッチを適用する対象のシステムに対して最低限必要と判断したモジュールの情報を基に、パッチの再構成を行うことを特徴とする特徴とする請求項１又は２のパッチ再構成方法。
【請求項４】
ＣＰＵ，メモリ，入力装置，及び記憶装置を有する計算機を用いて、既に提供されたパッチおよび新たに提供されるパッチをモジュール単位に分解して、再構築するためのパッチ再構成システムであって、
該メモリはパッチを再構成するためのプログラムを格納し、かつ該記憶装置は、パッチ情報を記憶するパッチ情報テーブル，及びモジュールの互換情報を記憶するモジュール互換性テーブルを格納し、
該ＣＰＵは、該プログラムを実行することにより、該パッチ情報テーブルを参照して該パッチ情報を管理するパッチ情報管理部と、該モジュール互換性テーブルを参照して該モジュール情報を管理するモジュール情報管理部と、該テーブル内又は変更したパッチ情報又はモジュール互換性情報を基に、パッチの重要度を判断するパッチ重要度照合部と、該パッチ重要度照合部の判断に従って対象となるモジュールを抽出するモジュール抽出部と、該モジュール抽出部で抽出されたモジュールに対してパッチの再構成の処理を行うパッチ再構成部を実現する機能を有し、再構成されたパッチ情報を出力することを特徴とするパッチ再構成システム。
【請求項５】
前記パッチ情報テーブルは、登録されたパッチに固有のＩＤと、パッチの重要性を示すパッチ重要度と、該パッチＩＤの対象となるモジュール名称の一覧を示すパッチ対象モジュールとを記憶し、
前記モジュール互換性テーブルは、該パッチに固有のパッチＩＤと、パッチの対象となるモジュールの名称であるパッチ対象モジュール名と、該モジュールの互換性情報の具体的な内容として、該モジュールごとにパッチ対象のモジュールと互換性のあるパッチのバージョンを含むモジュール互換性情報とを記憶することを特徴とする請求項４のパッチ再構成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパッチ再構成方法に係り、特にソフトウェアの部分的な修正や変更を行うパッチの適用情報を管理するパッチの再構成方法及びシステムに関する。
【背景技術】
【０００２】
ソフトウェア製品で発生した問題点を修正する手段の一つとしてパッチ提供という方法が知られている。パッチは通常、修正対象となる問題点ごとに作成され、該当する問題に対応するパッチを作成することで、製品の再インストールなしに問題点の修正を行える。
なお、利用者は現行のシステム環境を極力変更せず、かつ重要度の高い問題点のみを修正したいと考えるケースが多いため、パッチの適用に際しては、利用者のシステムのパッチ適用履歴や、パッチによる修正内容を管理し、その中で顧客システム環境において前提条件を加味した上で該当するパッチを抽出している（例えば、特許文献１参照）。
【０００３】
【特許文献１】特開２００５−０９９９６７  号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、パッチは前提関係を持つ場合があり、パッチ適用時にその前提となるパッチを事前に適用しておく必要があるため、顧客の必要としないパッチまで適用しなければならない可能性がある。
【０００５】
本発明の目的は、適用するパッチを必要最小限にとどめてパッチを再構成することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、好ましくは、既に提供されたパッチおよび新たに提供されるパッチをモジュール単位に分解し、再構築するためのパッチ再構成方法であって、パッチ情報とその重要度を照合し、提供されたパッチの対象となるモジュール間の互換性情報を管理し、パッチ情報と互換性情報を照合して最低限必要と判断したモジュールを抽出し、その抽出した結果を基にパッチの再構成を行うように構成する。
【発明の効果】
【０００７】
本発明によれば、適用するパッチを分析し、前提関係にあるパッチをモジュール単位に分解し、前提関係にあるモジュールのみを抽出してパッチを再構成することにより、適用するパッチを必要最小限にとどめることが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照して本発明の実施例について説明する。
図１は、一実施形態に係る全体のシステムを示すブロック図である。同図において、計算機１０１はＣＰＵ１０２，メモリ１０３，入力装置１０４，ディスク１０５を有して構成される。メモリ１０３にはパッチ再構成プログラム１０６が格納され、そのプログラムはＣＰＵ１０２で実行される。パッチ再構成プログラム１０６は、パッチ情報管理部１０７，モジュール情報管理部１０８，パッチ重要度照合部１０９，モジュール抽出部１１０，パッチ再構成部１１１で構成され、再構成後のパッチ情報１１２を出力する。
ディスク１０５にはパッチの再構成処理のために必要なパッチ情報テーブル１１３，モジュール互換性テーブル１１４が蓄積されている。
【０００９】
図１において、パッチ再構成プログラム１０６を起動させると、パッチ情報管理部１０７は、ディスク１０５に格納されたパッチ情報テーブル１１３を読み出す。また、同様にモジュール情報管理部１０８はモジュール互換性テーブル１１４をメモリ１０３上に読み出し、必要であれば入力装置１０４により変更をかける。読み出したまたは変更をかけたパッチ情報およびモジュール互換性情報をもとに、パッチ重要度照合部１０９にて適用するパッチを判断し、モジュール抽出部１１０にて対象となるモジュールのバージョンを抽出し、パッチ再構成部１１１にてパッチが再構成される。その結果をもとに、再構成後のパッチ情報１１２が出力される。
パッチ再構成プログラム１０６の終了の際には、パッチ情報管理部１０７およびモジュール情報管理部１０８にて変更されたパッチ情報およびモジュール互換性情報を、パッチ情報テーブル１１３およびモジュール互換性テーブル１１４に格納する。
【００１０】
図２６は、パッチ再構成プログラム１０６の処理動作を示すフローチャートである。
再構成プログラム１０６が起動される（Ｓ２６０１）と、パッチ情報テーブル１１３およびモジュール互換性テーブル１１４の初期設定が未完了であるか確認する（Ｓ２６０２）。その結果、未完了の場合（Ｓ２６０２＝ＹＥＳ）、パッチ情報テーブル１１３の初期設定（Ｓ２６０３）と、モジュール互換性テーブル１１４の初期設定（Ｓ２６０４）を行う。
次に、追加提供されたパッチがあるか確認する（Ｓ２６０５）。その結果、追加パッチがあれば（Ｓ２６０５＝ＹＥＳ）、パッチ情報テーブル１１３にパッチ情報を追加し（Ｓ２６０６）、かつモジュール互換性テーブル１１４に追加する（Ｓ２６０７）。
【００１１】
次にパッチの重要度が変更されているかを確認し（Ｓ２６０８）、変更されていれば（Ｓ２６０８＝ＹＥＳ）、パッチ重要度を変更する（Ｓ２６０９）。そして、モジュール互換性情報よりモジュール関連テーブルを生成する（Ｓ２６１０）。更に、パッチ情報テーブル１１３よりパッチの重要度を取得し（Ｓ２６１１）、重要度の高いパッチのみでモジュールの抽出する（パッチの再構成）（Ｓ２６１２）。
そして、抽出したモジュールどうしの互換性が補償されるかをチェックする（Ｓ２６１３）。もし、互換性が保障されていなければ（Ｓ２６１３＝ＮＯ）、再度モジュールの抽出を行う。一方、互換性が保障されれば（Ｓ２６１３＝ＹＥＳ）、処理を終了する（Ｓ２６１４）。
【００１２】
次に、パッチを管理するためのパッチ情報のレコード形式について説明する。
図２は、図１のシステムでパッチごとに管理されるパッチ情報レコードの形式の一例を示す。同図において、パッチ情報レコードは、パッチの管理ＩＤを示すパッチＩＤ２０１と、パッチ情報２０２の具体的な内容として、重要度，パッチ対象モジュール名を有する。本実施形態では、それぞれのパッチごとに固有の管理ＩＤを付加したものを１つのレコードによって管理する。
【００１３】
図３は、パッチ情報テーブル１１３を示す。
パッチ情報テーブル１１３は、パッチ情報管理部１０７（図１）により管理され、ディスク１０５に保持されるテーブルである。新たにパッチが提供されるごとに、新規レコードとしてパッチ情報レコードが追加される。また、新たにパッチが提供されなくても、パッチの適用状況などによりパッチの重要性が変わった場合、本レコードの重要度を更新する。
【００１４】
パッチ情報テーブル３０１内のパッチＩＤ３０２は、登録済みのパッチのＩＤを示し、パッチ重要度３０３は、パッチＩＤ３０２が示すパッチの重要性を示し、パッチ対象モジュール３０４は、パッチＩＤ３０２の対象となるモジュール名称の一覧を示す。
パッチ情報テーブル３０１では、パッチ情報テーブル１１３の初期値を示している。パッチ登録の前にパッチＩＤ“ＩＤ００”として入力装置１０４によって必ず登録されている。パッチＩＤ“ＩＤ００”は、パッチ対象プログラムのベースバージョンであるため、パッチ対象モジュールは全てのモジュールであり、また、重要度は対象外であるため“−”が入力される。パッチ情報テーブル３０１では、パッチ対象プログラムを構成する全てのモジュールが、モジュール名“Ａ”，“Ｂ”，“Ｃ”，“Ｄ”のケースを示している。
【００１５】
次に、パッチごとのモジュール間の互換性を管理するためのモジュール互換性情報のレコード形式について説明する。
図４は、図１のシステムでパッチ対象のモジュールごとに管理されるモジュール互換性レコードの形式の一例を示す。
同図において、モジュール互換性レコードは、パッチの管理ＩＤを示すパッチＩＤ４０１と、パッチの対象となるモジュールの名称であるパッチ対象モジュール名４０２と、モジュール互換性情報４０３の具体的な内容として、モジュールごとにパッチ対象モジュールと互換性のあるパッチのバージョンとしてパッチＩＤ４０４を有する。本実施形態では、それぞれのパッチの対象となるモジュールごとに１つのレコードによって管理する。
【００１６】
図５は、モジュール情報管理部１０８により管理され、ディスク１０５に保持されるモジュール互換性テーブル１１４を示す。
新たにパッチが提供されるごとに、新規レコードとしてパッチ互換レコードが追加される。モジュール互換性テーブル５０１内のパッチＩＤ５０２は、登録済みのパッチのＩＤを示し、パッチ対象モジュール名５０３は、パッチＩＤ５０２が示すパッチの対象となるモジュール名称である。パッチ対象モジュールと互換性のあるパッチＩＤ一覧５０４は、パッチ対象モジュール名５０３と、パッチ対象プログラムを構成する全てのモジュール５０５との互換性のあるモジュールのバージョンをパッチＩＤで記したものである。互換性情報のセル５０６を例に説明すると、パッチＩＤ“ＩＤ００”のモジュール名“Ｂ”と互換性のあるモジュール名“Ａ”のバージョンは“ＩＤ００”となる。なお、セル５０７の“−”は、パッチ対象モジュール名と比較対象モジュール名が同一のため、対象外であることを示している。
【００１７】
モジュール互換性テーブル５０１は、モジュール互換性テーブル１１４の初期値を示している。パッチ登録の前にパッチＩＤ“ＩＤ００”として入力装置１０４によって登録されている。パッチＩＤ“ＩＤ００”はパッチ対象プログラムのベースバージョンであるため、パッチ対象モジュールは全てのモジュールであり、全てのモジュール間で互換性がある。モジュール互換性テーブル５０１では、パッチ対象プログラムを構成する全てのモジュールが、モジュール名“Ａ”，“Ｂ”，“Ｃ”，“Ｄ”のケースを示している。
【００１８】
次に、パッチが提供された際のパッチ情報テーブルと、モジュール互換性テーブルの更新方法について説明する。
図６は、パッチが提供された際のパッチ情報を示す。パッチ情報６０１は、パッチＩＤが“ＩＤ０１”、重要度が“高”、パッチ対象モジュールがモジュール名“Ａ”，“Ｄ”のケースを示す。このパッチ情報６０１は、パッチの内容を理解している者が判断して提供し、入力装置１０４により入力される。
【００１９】
図７は、パッチが提供された際のモジュール互換性情報を示す。モジュール互換性情報７０１は、パッチＩＤが“ＩＤ０１”、パッチ対象モジュール名がモジュール名“Ａ”，“Ｄ”で、互換関係はそれぞれ、モジュール名“Ａ”の“ＩＤ０１”と互換性があるのは、モジュール名“Ｂ”の“ＩＤ００”，モジュール名“Ｃ”の“ＩＤ００”，モジュール名“Ｄ”の“ＩＤ００”および“ＩＤ０１”、モジュール名“Ｄ”の“ＩＤ０１”と互換性があるのは、モジュール名“Ａ”の“ＩＤ００”および“ＩＤ０１”，モジュール名“Ｂ”の“ＩＤ００”，モジュール名“Ｃ”の“ＩＤ００”であることを示す。このモジュール互換性情報７０１は、パッチの内容を理解している者が判断して提供し、入力装置１０４より入力する。
【００２０】
図８は、パッチ登録後のパッチ情報テーブルを示す。
パッチ情報テーブル８０１は、パッチ情報テーブル３０１にパッチ情報６０１を登録した場合を示したものである。入力装置１０４によりパッチ情報６０１が入力され、パッチ情報レコード８０２として追加登録される。
【００２１】
図９は、パッチ登録後のモジュール互換性テーブルを示す。
モジュール互換性テーブル９０１は、モジュール互換性テーブル５０１にモジュール互換性情報７０１を登録した場合を示したものである。入力装置１０４によりモジュール互換性情報７０１が入力され、モジュール互換レコード９５１および９６１として追加登録される。ここで、新たにパッチＩＤが追加されたことにより、追加されたパッチの対象となるモジュールのバージョンが増えるため、登録済みのモジュール互換レコード９１１，９２１，９３１および９４１の更新が必要となる。この更新処理はモジュール情報管理部１０８により自動的に行われる。
【００２２】
次にモジュール互換レコードの自動更新動作について説明する。モジュール互換性情報７０１（図７）に示すように、パッチＩＤ“ＩＤ０１”で追加されるモジュールとそのバージョンは、モジュール名“Ａ”の“ＩＤ０１”である。ここで、以後特に断りがなければ、モジュール名およびバージョンを簡略し、モジュール名“Ａ”のバージョン“ＩＤ０１”の場合、“Ａ−ＩＤ０１”と略する。“Ａ−ＩＤ０１”と互換性があるモジュール名“Ｂ”のバージョンは、セル７１３（図７）で示すように“Ｂ−ＩＤ００”である。別の表現をすれば、“Ｂ−ＩＤ００”は“Ａ−ＩＤ０１”と互換関係にあるといえる。よって、登録済みのモジュール互換レコードの“Ｂ−ＩＤ００”のレコードに、“Ａ−ＩＤ０１”と互換性があることを示す情報を追加する必要がある。
【００２３】
モジュール情報管理部１０８では、モジュール互換性情報７０１をもとに、モジュール互換性テーブルの各レコードの更新を行う。まず、モジュール互換性情報レコード７１１のセル７１２をチェックする。ここには“−”が入っており無効セルのため何もしない。次にセル７１３をチェックし、“Ｂ−ＩＤ００”と“Ａ−ＩＤ０１”が互換関係にあることを検出すると、“Ｂ−ＩＤ００”のモジュール互換レコード９２１を検索し、モジュール名“Ａ”のセルであるセル９２２に“ＩＤ０１”を追記する。
【００２４】
以降、モジュール互換性情報レコード７１１のセル７１４，７１５をチェックし、“Ｃ−ＩＤ００”および“Ｄ−ＩＤ００”と“Ａ−ＩＤ０１”が互換関係にあることを検出すると、図９のモジュール互換レコード９３１のセル９３２、およびモジュール互換レコード９４１のセル９４２に“ＩＤ０１”を追記する。また、“Ｄ−ＩＤ０１”と“Ａ−ＩＤ０１”が互換関係にあることを検出するが、モジュール互換レコード９６１のセル９６２には“ＩＤ０１”が既に登録されているため、ここでは追記を行わない。このようにして、モジュール互換性情報レコード７１１のチェックを完了する。
【００２５】
次に、モジュール互換性情報レコード７２１を同様にチェックし、モジュール互換性テーブル９０１の更新を行う。追加された全てのモジュール互換性情報レコードのチェックが完了すると、更新処理を終了する。このようにして処理したモジュール互換性テーブルを図１０に示す。モジュール互換性テーブル１００１に示すように、セル１００２,１００３,１００４,１００５，１００６および１００７に、“ＩＤ０１”が追記されている。
【００２６】
図１１は、パッチ“ＩＤ０２”，“ＩＤ０３”が提供された際のパッチ情報を示す。
パッチ情報１１０１は、パッチＩＤ“ＩＤ０２”重要度が“低”、パッチ対象モジュールがモジュール名“Ａ”，“Ｂ” ，“Ｃ”、および、パッチＩＤ“ＩＤ０３”重要度が“高”、パッチ対象モジュールがモジュール名“Ｄ”のケースを示す。このパッチ情報１１０１は、パッチの内容を理解している者が判断して提供し、入力装置１０４より入力する。
【００２７】
図１２は、パッチ“ＩＤ０２”，“ＩＤ０３”が提供された際のモジュール互換性情報を示す。
モジュール互換性情報１２０１は、パッチＩＤが“ＩＤ０２”、パッチ対象モジュール名がモジュール名“Ａ”，“Ｂ”，“Ｃ”で、互換関係はそれぞれ、“Ａ−ＩＤ０２”と互換性があるのは、 “Ｂ−ＩＤ００”，“Ｂ−ＩＤ０２”，“Ｃ−ＩＤ００”，“Ｃ−ＩＤ０２”，“Ｄ−ＩＤ００”，“Ｄ−ＩＤ０１”、“Ｂ−ＩＤ０２”と互換性があるのは、 “Ａ−ＩＤ０２”，“Ｃ−ＩＤ００”，“Ｃ−ＩＤ０２”，“Ｄ−ＩＤ００”，“Ｄ−ＩＤ０１”、“Ｃ−ＩＤ０２”と互換性があるのは、“Ａ−ＩＤ００”，“Ａ−ＩＤ０１”，“Ａ−ＩＤ０２”，“Ｂ−ＩＤ００”，“Ｂ−ＩＤ０２”，“Ｄ−ＩＤ００”，“Ｄ−ＩＤ０１”である。
更に、パッチＩＤが“ＩＤ０３”、パッチ対象モジュール名がモジュール名“Ｄ”で、“Ｄ−ＩＤ０３”と互換性があるのは、“Ａ−ＩＤ００”，“Ａ−ＩＤ０１”，“Ａ−ＩＤ０２”，“Ｂ−ＩＤ０２”，“Ｃ−ＩＤ００”，“Ｃ−ＩＤ０２”であることを示す。このモジュール互換性情報１２０１は、パッチの内容を理解している者が判断して提供し、入力装置１０４より入力する。
【００２８】
図１３は、パッチ“ＩＤ０２”，“ＩＤ０３”登録後のパッチ情報テーブルを示す。パッチ情報テーブル１３０１は、パッチ情報テーブル８０１に、パッチ情報１１０１を登録した場合を示したものである。入力装置１０４よりパッチ情報１１０１が入力され、パッチ情報レコード１３０２，１３０３として追加登録される。
【００２９】
図１４は、パッチ“ＩＤ０２”，“ＩＤ０３”登録後のモジュール互換性テーブルを示す。モジュール互換性テーブル１４０１は、モジュール互換性テーブル１００１（図１０）に、モジュール互換性情報１２０１（図１２）を登録した場合を示したものである。
入力装置１０４よりモジュール互換性情報１２０１が入力され、モジュール互換レコード１４１１，１４２１，１４３１および１４４１として追加登録される。また、モジュール情報管理部１０８により、登録済みのモジュール互換レコードに、互換性があるパッチＩＤとして“ＩＤ０２”および“ＩＤ０３”が追記されている。
【００３０】
次にパッチの再構成方式について説明する。
パッチ“ＩＤ０１”，“ＩＤ０２”，“ＩＤ０３”が提供されている状態で、パッチの情報はパッチ情報テーブル１３０１、モジュールの互換関係はモジュール互換性テーブル１４０１に示す内容の場合を考える。
【００３１】
図１５，図１６，図１７，および図１８は、モジュール間の互換性の有無を表したモジュール関連テーブルを示す。モジュール関連テーブル１５０１，１６０１，１７０１，および１８０１は、パッチ再構成部１１１により自動生成される。
【００３２】
次にモジュール関連テーブルの自動生成動作について説明する。
図１のパッチ再構成部１１１は、パッチ互換性テーブルの情報をもとにモジュール関連テーブルを自動生成する。図１５のモジュール名“Ａ”のバージョン一覧１５０２には、図１４のパッチ対象モジュール名１４５１，１４５３，１４５４より、“ＩＤ００”，“ＩＤ０１”，“ＩＤ０２”を設定する。
【００３３】
対応モジュール一覧１５０３には、図１４のモジュール名一覧１４６１から、モジュール名“Ａ”を除いたモジュール名“Ｂ”，“Ｃ”，“Ｄ”を設定する。モジュール名“Ｂ”のバージョン一覧１５０４には、パッチ対象モジュール名１４５２，１４５５より、“ＩＤ００”，“ＩＤ０２”を設定する。同様に、モジュール名“Ｃ”のバージョン一覧１５０５は、“ＩＤ００”，“ＩＤ０２”を、モジュール名“Ｄ”のバージョン一覧１５０６は、“ＩＤ００”，“ＩＤ０１”，“ＩＤ０３”を設定する。互換性情報１５１１は、モジュール名“Ａ”の各バージョンと、その他モジュールの各バージョン間の互換性の有無を“○”（互換性あり），“×”（互換性なし）で表した情報である。
【００３４】
“Ａ−ＩＤ００”と“Ｂ−ＩＤ００”の互換関係を示すセル１５２２は、セル１４５６に“ＩＤ００”があるため“○”、“Ａ−ＩＤ００”と“Ｂ−ＩＤ０２”の互換関係を示すセル１５２３は、セル１４５６に“ＩＤ０２”がないため“×”を設定する。同様に各セルに“○”，“×”を設定し、モジュール関連テーブル１５０１を完成させる。モジュール関連テーブル１６０１，１７０１，および１８０１ついても、同様の手順によりテーブルを生成する。
このようにして生成したモジュール関連テーブルをもとに、パッチの再構成を実行する。
【００３５】
図２７は、パッチ重要度照合部１０９における、重要パッチ対象モジュール関連テーブル作成動作を示すフローチャートである。図２７において、重要パッチ対象モジュール関連テーブル作成動作開始されたとき（Ｓ２７０１）、パッチ情報テーブル１３０１より、重要度が“高”に設定されているパッチ（以後、重要パッチと略する）のパッチＩＤ“ＩＤ０１”および“ＩＤ０３”を取得する（Ｓ２７０２）。
【００３６】
次に、モジュール関連テーブル１５０１内の先頭レコード１５２１を読み出し（Ｓ２７０３）、パッチＩＤが一致するか比較する（Ｓ２７０４）。比較の結果、レコード１５０２はパッチＩＤが一致しないので（Ｓ２７０４＝ＮＯ）、次のレコード１５３１を読み出す（Ｓ２７０３）。今度はパッチＩＤが一致するので（Ｓ２７０４＝ＹＥＳ）、当該レコードを重要パッチ対象モジュール関連テーブル１９０１のレコード１９１１として出力する（Ｓ２７０５）。このとき、重要パッチ対象モジュールと対応モジュールのモジュール名が同一のセルには、対象外として“−”を設定（セル１９１２のように）する（Ｓ２７０６）。全てのレコードを読み終えていないため（Ｓ２７０７＝ＮＯ）、再度レコードを読み出す。
【００３７】
この動作を繰り返し、モジュール関連レコード１８１１，１８２１も、レコード１９２１，１９３１として出力する。そして全てのレコードを読み終える（Ｓ２７０７＝ＹＥＳ）と、動作を終了する（Ｓ２７０９）。図１９は、図２７のフローチャートの処理により出力された、重要パッチ対象モジュール関連テーブルを示した図である。
【００３８】
図２８は、モジュール抽出部１１０における、最古バージョンテーブル作成動作を示すフローチャートである。
この処理動作では、重要パッチ対象のモジュールと、対応するモジュールとの２モジュール間の互換性のある各バージョンから、最古のバージョン（パッチＩＤ小さいもの）を抽出する。ここで、互換性のあるモジュールの中から最古バージョンを抽出する理由は、モジュールのベースバージョン（パッチＩＤ“ＩＤ００”）を抽出するためである。モジュールのベースバージョンは、どのバージョンのプログラムにも含まれているため、再構成の結果にベースバージョンがあれば、そのモジュールはパッチ対象外にすることができるからである。
【００３９】
図２８において、最古バージョンテーブル作成動作が開始されたとき（Ｓ２８０１）、重要パッチ対象モジュール（図１９）の関連テーブルより、先頭レコード１９１１を読み出し（Ｓ２８０２）、重要パッチのモジュールバージョン“Ａ−ＩＤ０１”と“Ａ−ＩＤ００”の互換性情報であるセル１９１２が“−”であるか比較を行う（Ｓ２８０３）。セル１９１２は“−”である（Ｓ２８０３＝ＹＥＳ）ため、最古バージョンテーブル２００１（図２０）内の、“Ａ−ＩＤ０１”に互換性のあるモジュール名“Ａ”の最古バージョンとして、セル２０１１に重要パッチのモジュールバージョンである“ＩＤ０１”を出力し（Ｓ２８０４）、次のモジュールを検証する。
【００４０】
次は重要パッチのモジュールバージョン“Ａ−ＩＤ０１”と“Ｂ−ＩＤ００”の互換性情報であるセル１９１３が“−”であるか比較を行い、セル１９１３は“○”である（Ｓ２８０３＝ＮＯ）ため、次にセル１９１３が“○”であるか比較する（Ｓ２８０５）。セル１９１３は“○”である（Ｓ２８０５＝ＹＥＳ）ため、最古バージョンテーブル２００１内の、“Ａ−ＩＤ０１”に互換性のあるモジュール名“Ｂ”の最古バージョンとして、セル２０１２に“ＩＤ００”を出力する（Ｓ２８０６）。全てのモジュールを検証していない（Ｓ２８０７＝ＮＯ）ため、次のモジュールを検証する。同様に、モジュール名“Ｃ”，“Ｄ”ついて検証し、セル２０１３および２０１４に“ＩＤ００”を出力する。
全てのモジュールを検証し終わる（Ｓ２８０７＝ＹＥＳ）と、次のレコードを読み出す（Ｓ２８０８＝ＮＯ）。これを繰り返し、全てのレコードの読み終える（Ｓ２８０８＝ＹＥＳ）と、動作を終了する（Ｓ２８１２）。
【００４１】
図２０は、図２８のフローチャートの処理により出力された、重要パッチ対象モジュールと互換性のあるモジュール最古バージョンテーブルを示す図である。
最古バージョン一覧２００１で示すように、重要パッチ対象モジュール“Ａ−ＩＤ０１”と互換性のある最古バージョンは、それぞれ、“Ｂ−ＩＤ００”，“Ｃ−ＩＤ００”，“Ｄ−ＩＤ００”であり、重要パッチ対象モジュール“Ｄ−ＩＤ０１”と互換性のあるモジュールの最古バージョンは、“Ａ−ＩＤ００”，“Ｂ−ＩＤ００”，“Ｃ−ＩＤ００”であり、Ｄ−ＩＤ０３”と互換性のあるモジュールの最古バージョンは、“Ａ−ＩＤ００”，“Ｂ−ＩＤ０２”，“Ｃ−ＩＤ００”であることを示す。
【００４２】
図２１は、重要パッチで再構成したときに、必要となる各モジュールのバージョンの一覧を示す図である。再構成パッチモジュールバージョンテーブル２１０１は、最古バージョン一覧２００１の各モジュールのバージョンのうち、最新のバージョン（パッチＩＤが大きいもの）を抽出したものである。
モジュール名“Ａ”について説明すると、最古バージョン一覧２００１のモジュール名“Ａ”のバージョンであるセル２０１１（ＩＤ０１），２０１５（ＩＤ００），２０１６（ＩＤ００）のうち、最新のバージョンはセル２０１１の“ＩＤ０１”であり、図２１のモジュール名“Ａ”のバージョンであるセル２１０２は“ＩＤ０１”となる。同様に、モジュール名“Ｂ”のセル２１０３は“ＩＤ０２”、モジュール名“Ｃ”のセル２１０４は“ＩＤ００”、モジュール名“Ｄ”のセル２１０４は“ＩＤ０３”となる。
【００４３】
ここで、最新バージョンを抽出する理由は、最新バージョンであれば、重要パッチ対象のモジュールのバージョンを必ず含ませるためである。なお、当該パッチの仕組みとして、バージョンの新しいモジュールは、同一モジュールのそれ以前のバージョンを含んでいることが前提である必要がある。最新のバージョンを抽出したことにより、各モジュール間の互換性が保障されない組み合わせになっている可能性があるため、これらの互換性のチェックを行う。
【００４４】
図２２は、図２１中の再構成パッチモジュールバージョンテーブル２１０１の各モジュールバージョン間の互換性を検証した結果を示す図である。モジュール間の互換性検証結果２２０１は、縦軸および横軸に各モジュールバージョンを並べ、縦軸と横軸が交差するセルに各々のモジュール間の互換性有無を“○”（互換性あり），“×”（互換性なし）を示している。セル２２０２およびセル２２０３の“×”が示すように、“Ａ−ＩＤ０１”と“Ｂ−ＩＤ０２”の互換性がない。モジュール名“Ａ”のモジュール関連テーブル１５０１にて検証すると、セル１５３２が示すように互換性がない。したがって、再構成パッチに必要なモジュールのバージョン２１０１（図２１）うち、モジュール名“Ａ”とモジュール名“Ｂ”（その他の互換性は問題なし）の互換性が保障できるよう、バージョンを変更する必要がある。
【００４５】
図２３は、図２１の再構成パッチに必要なモジュールのバージョン２１０１内の、“モジュール名“Ａ”とモジュール名“Ｂ”の互換性を保障したモジュールバージョンを示す図である。
図２１の“モジュール名“Ａ”，“Ｂ”バージョンを比較した場合、モジュール名“Ａ”のバージョンが古いため、モジュール名“Ａ”を新しいバージョンに変更する。セル１６１１が現在のバージョンである“Ａ−ＩＤ０１”と“Ｂ−ＩＤ０２”の互換性情報であるが、いうまでもなく“×”で互換性がない。一方、“Ａ−ＩＤ０２”と“Ｂ−ＩＤ０２”の互換性情報であるセル１６１２は、“○”であり互換性がある。したがって、セル２３０２に示すように、モジュール名“Ａ”のバージョンを、“Ａ−ＩＤ０１”から“Ａ−ＩＤ０２”に変更する。そして、各モジュール間の互換性について再度検証をおこなう。
【００４６】
図２４は、図２３の検証後の再構成パッチモジュールバージョンテーブル２３０１の各モジュールバージョン間の互換性を検証した結果を示す図である。モジュール間の互換性再検証結果２４０１が示すように、全てのモジュール間で互換性が保障されているしたがって、再構成パッチに必要なモジュールのバージョンは、“Ａ−ＩＤ０２”，“Ｂ−ＩＤ０２”，“Ｃ−ＩＤ００”，“Ｄ−ＩＤ０３”である。
【００４７】
図２５は、再構成後のパッチ対象モジュールとそのバージョンを示す図である。再構成パッチに必要なモジュールのバージョンは、“Ａ−ＩＤ０２”，“Ｂ＝ＩＤ０２”，“Ｃ−ＩＤ００”，“Ｄ−ＩＤ０３”であるが、“Ｃ−ＩＤ００”はモジュール名“Ｃ”のベースバージョンであるため、再構成パッチに含めないようにする。したがって、再構成後のパッチ対象モジュールとそのバージョンは、テーブル２５０１に示すように、“Ａ−ＩＤ０２”，“Ｂ−ＩＤ０２”，“Ｄ−ＩＤ０３”の３モジュールという結果を出力する。
【図面の簡単な説明】
【００４８】
【図１】一実施形態におけるパッチ再構成のシステム構成例を示す図。
【図２】パッチ情報レコードの形式を示す図。
【図３】パッチ情報テーブルを示す図。
【図４】モジュール互換レコード形式を示す図。
【図５】パッチ登録前のモジュール互換性テーブルを示す図。
【図６】パッチＩＤ０１のパッチ情報を示す図。
【図７】パッチＩＤ０１のモジュール互換性情報を示す図。
【図８】パッチＩＤ０１登録後のパッチ情報テーブルを示す図。
【図９】パッチＩＤ０１登録後のモジュール互換性テーブルを示す図。
【図１０】パッチＩＤ０１自動更新後のモジュール互換性テーブルを示す図。
【図１１】パッチＩＤ０２，パッチＩＤ０３のパッチ情報を示す図。
【図１２】パッチＩＤ０２，パッチＩＤ０３のモジュール互換性情報を示す図。
【図１３】パッチＩＤ０２，パッチＩＤ０３登録後のパッチ情報テーブルを示す図。
【図１４】パッチＩＤ０２，パッチＩＤ０３自動更新後のモジュール互換性テーブルを示す図。
【図１５】モジュールＡのモジュール関連テーブルを示す図。
【図１６】モジュールＢのモジュール関連テーブルを示す図。
【図１７】モジュールＣのモジュール関連テーブルを示す図。
【図１８】モジュールＤのモジュール関連テーブルを示す図。
【図１９】重要パッチ対象モジュールの関連テーブルを示す図。
【図２０】重要パッチ対象モジュールと互換性のあるモジュールの最古バージョン一覧を示す図。
【図２１】再構成パッチに必要なモジュールバージョンを示す図。
【図２２】再構成パッチに必要なモジュール間の互換性検証結果を示す図。
【図２３】検証後の再構成パッチに必要なモジュールバージョンを示す図。
【図２４】再構成パッチに必要なモジュール間の互換性再検証結果を示す図。
【図２５】再構成後のパッチ対象モジュールとバージョンを示す図。
【図２６】パッチ再構成の処理動作を説明するフローチャートである。
【図２７】重要パッチ対象モジュール関連テーブル作成動作のフローチャートである。
【図２８】最古バージョン一覧作成動作のフローチャートである。
【符号の説明】
【００４９】
１０１：計算機  １０２：ＣＰＵ  １０３：メモリ  １０４：入出力装置  １０５：ディスク  １０６：パッチ再構成プログラム  １０７：パッチ情報管理部  １０８：モジュール情報管理部  １０９：パッチ重要度照合部  １１０：モジュール抽出部  １１１：パッチ再構成部  １１２：再構成後のパッチ情報  １１３：パッチ情報テーブル  １１４：モジュール互換性テーブル  
【図１】
2008146163.tif 000003
【図２】
2008146163.tif 000004
【図３】
2008146163.tif 000005
【図４】
2008146163.tif 000006
【図５】
2008146163.tif 000007
【図６】
2008146163.tif 000008
【図７】
2008146163.tif 000009
【図８】
2008146163.tif 000010
【図９】
2008146163.tif 000011
【図１０】
2008146163.tif 000012
【図１１】
2008146163.tif 000013
【図１２】
2008146163.tif 000014
【図１３】
2008146163.tif 000015
【図１４】
2008146163.tif 000016
【図１５】
2008146163.tif 000017
【図１６】
2008146163.tif 000018
【図１７】
2008146163.tif 000019
【図１８】
2008146163.tif 000020
【図１９】
2008146163.tif 000021
【図２０】
2008146163.tif 000022
【図２１】
2008146163.tif 000023
【図２２】
2008146163.tif 000024
【図２３】
2008146163.tif 000025
【図２４】
2008146163.tif 000026
【図２５】
2008146163.tif 000027
【図２６】
2008146163.tif 000028
【図２７】
2008146163.tif 000029
【図２８】
2008146163.tif 000030