(57)【要約】  情報処理装置（１０）が、運用中のプログラムに修正がある場合、修正箇所が実行されると、修正箇所が実行された回数を計数させる処理を組み込んだチェックデータを運用中のプログラムに適用するチェックデータ適用部（１１１）と、適用されたチェックデータが適用された結果、修正箇所が実行された回数を示すカウントがアップしているか否かを所定のタイミングで判定するカウントアップ判定部（１１２）と、カウントがアップしていると判定された場合、カウントがアップしていると判定された、修正箇所を含むチェックデータを、当該修正箇所を修正した修正済みのプログラムに置き換えるパッチデータ適用部（１１３）と、を備えることとしたので、修正済みのプログラムを適用するか否かの判断を適切に行うことができる。
2012127635.tif 000002
【特許請求の範囲】
【請求項１】
運用中のプログラムに修正がある場合、修正箇所が実行されると、修正箇所が実行された回数を計数させる処理を組み込んだ暫定修正プログラムを前記運用中のプログラムに適用するプログラム適用部と、
前記プログラム適用部によって適用された前記暫定修正プログラムが適用された結果、修正箇所が実行された回数を示すカウントがアップしているか否かを所定のタイミングで判定する判定部と、
前記判定部によってカウントがアップしていると判定された場合、カウントがアップしていると判定された、修正箇所を含む暫定修正プログラムを、当該修正箇所を修正した修正済みのプログラムに置き換える置換部と
を有することを特徴とする情報処理装置。
【請求項２】
前記置換部は、
前記判定部によって前記カウントがアップしていないと判定された場合、前記暫定修正プログラムを、前記修正済みのプログラムに置換しないことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判定部は、
自装置を停止するタイミングまたは自装置を起動するタイミングで、前記カウントがアップしているか否かを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
コンピュータに、
運用中のプログラムに修正がある場合、修正箇所が実行されると、修正箇所が実行された回数を計数させる処理を組み込んだ暫定修正プログラムを前記運用中のプログラムに適用し、
前記暫定修正プログラムが適用された結果、修正箇所が実行された回数を示すカウントがアップしているか否かを所定のタイミングで判定し、
該判定によってカウントがアップしていると判定された場合、カウントがアップしていると判定された、修正箇所を含む暫定修正プログラムを、当該修正箇所を修正した修正済みのプログラムに置き換える
処理を実行させる修正適用判定プログラム。
【請求項５】
運用中のプログラムに修正がある場合、修正箇所が実行されると、修正箇所が実行された回数を計数させる処理を組み込んだ暫定修正プログラムを前記運用中のプログラムに適用し、
前記暫定修正プログラムが適用された結果、修正箇所が実行された回数を示すカウントがアップしているか否かを所定のタイミングで判定し、
該判定によってカウントがアップしていると判定された場合、カウントがアップしていると判定された、修正箇所を含む暫定修正プログラムを、当該修正箇所を修正した修正済みのプログラムに置き換える
処理を含むことを特徴とする修正適用判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置等に関する。
【背景技術】
【０００２】
近年、稼動中の計算機システムにおけるプログラムのパッチは、障害の大小を問わず公開されている。公開された全てのパッチを対応するプログラムに適用すると、パッチによるレベルダウンが発生する場合がある。そこで、パッチによるレベルダウンを防止するため、スキルが高い人間が、公開されたパッチの情報から適用するパッチを抽出する。【０００３】
また、システムの稼動時に、プログラムの走行回数を制御表に記録し、パッチの受信時に、そのパッチと同一の機能名をもつプログラムの走行回数を制御表から求め、走行回数が所定回数以上のとき、当該パッチを適用するパッチとして抽出する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−１０７６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、パッチを適用する従来の技術では、パッチを適用するか否かの判断が困難であるという問題があった。一例として、人間が、適用するパッチを抽出する場合、スキルが高いと過不足ないパッチを抽出できるが、スキルが低いとパッチを適用するか否かを判断できかねる場合がある。また、スキルが高い場合であっても、パッチの組み合わせまで考慮して、過不足ないパッチを抽出することは困難である。【０００６】
別の一例として、プログラムの走行回数を用いた技術の場合、プログラムのどの部分が動作したかに関係なく走行回数をカウントしているので、このカウントにより自己のシステムでパッチの適用が必要であるか否かを判断することは困難である。【０００７】
開示の技術は、パッチを適用するか否かの判断を適切に行うことができる情報処理装置等を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本願の開示する情報処理装置は、一つの態様において、運用中のプログラムに修正がある場合、修正箇所が実行されると、修正箇所が実行された回数を計数させる処理を組み込んだ暫定修正プログラムを前記運用中のプログラムに適用するプログラム適用部と、前記プログラム適用部によって適用された前記暫定修正プログラムが適用された結果、修正箇所が実行された回数を示すカウントがアップしているか否かを所定のタイミングで判定する判定部と、前記判定部によってカウントがアップしていると判定された場合、カウントがアップしていると判定された、修正箇所を含む暫定修正プログラムを、当該修正箇所を修正した修正済みのプログラムに置き換える置換部とを有する。
【発明の効果】
【０００９】
本願の開示する情報処理装置の一つの態様によれば、パッチを適用するか否かの判断を適切に行うことができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例に係るパッチ適用判定を行なうシステムの構成を示す機能ブロック図である。
【図２】図２は、パッチ作成部によるパッチ作成の具体例を説明する図である。
【図３】図３は、実施例に係るカウンタＤＢのデータ構造の一例を示す図である。
【図４】図４は、実施例に係るパッチ作成の手順を示すフローチャートである。
【図５】図５は、実施例に係るパッチ公開の手順を示すフローチャートである。
【図６】図６は、実施例に係るパッチ適用判定の手順を示すフローチャートである。
【図７】図７は、実施例に係るカウンタＤＢ作成の手順を示すフローチャートである。
【図８】図８は、実施例に係るカウンタ処理の手順を示すフローチャートである。
【図９】図９は、実施例に係るパッチデータ適用の手順を示すフローチャートである。
【図１０】図１０は、パッチデータの内容の具体例を示す図である。
【図１１】図１１は、カウンタＤＢの状態を説明する図である。
【図１２】図１２は、１個のパッチＩＤに対して修正があるオブジェクトが２個ある場合のカウンタＤＢの状態を説明する図である。
【図１３】図１３は、パッチ適用判定プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する情報処理装置、修正適用判定プログラムおよび修正適用判定方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、問題があったプログラムの修正後のプログラムのことを「パッチ」というものとする。また、実施例によりこの発明が限定されるものではない。
【実施例】
【００１２】
［実施例に係る計算機システムの構成］
図１は、実施例に係るパッチ適用判定を行うシステムの構成を示す機能ブロック図である。図１に示すように、計算機システム１は、情報処理装置１０と、ネットワーク２０と、パッチ公開サーバ３０と、パッチ作成サーバ４０とを有する。【００１３】
パッチ作成サーバ４０は、パッチを作成するサーバである。すなわち、パッチ作成サーバ４０は、運用中のプログラムのいずれかの箇所で障害が発生した場合、プログラムの障害箇所を修正したパッチデータを作成する。また、パッチ作成サーバ４０は、パッチを適用する側である後述する情報処理装置１０において、パッチデータを適用するか否かを判断するためのチェックデータを作成する。チェックデータは、パッチデータの修正箇所にカウンタ処理を組み込んだデータのことをいう。このカウンタ処理は、呼び出されるとパッチデータの識別情報として与えられるパッチＩＤ（identification）に対応するカウントをアップさせる。つまり、情報処理装置１０がチェックデータを実行し、チェックデータ内のカウンタ処理が走行すると、カウンタ処理は、パラメータとして引き渡されるパッチデータのパッチＩＤに対応するカウントをアップさせる。なお、カウント処理は、例えばあらかじめ作成されたライブラリ内に部品化されているものである。【００１４】
パッチ作成サーバ４０は、制御部４１および記憶部４２を有する。制御部４１は、パッチ作成部４１１を有する。記憶部４２は、修正前ソースデータ４２１および修正後ソースデータ４２２を有する。修正前ソースデータ４２１は、運用中のプログラムのソースファイルを示す。修正後ソースデータ４２２は、プログラムの障害箇所を修正したパッチデータのソースファイル、すなわち修正後のプログラムのソースファイルを示す。パッチ作成部４１１は、修正前ソースデータ４２１の障害箇所に修正部分を追加し、修正後ソースデータ４２２を作成する。そして、パッチ作成部４１１は、修正後ソースデータ４２２をコンパイルし、さらにパッチ関連のデータを作成するツールであるパッチ作成ツールを動作させ、パッチデータを作成する。また、パッチ作成部４１１は、修正前ソースデータ４２１と修正後ソースデータ４２２とを比較し、差分となる修正箇所を探索する。そして、パッチ作成部４１１は、修正前ソースデータ４２１の探索した修正箇所にカウンタ処理を追加する。そして、パッチ作成部４１１は、カウンタ処理を追加したソースデータをコンパイルし、さらにパッチ作成ツールを動作させ、チェックデータを作成する。【００１５】
ここで、パッチ作成部４１１によるパッチ作成の具体例について、図２を参照して説明する。図２は、パッチ作成部によるパッチ作成の具体例を説明する図である。図２に示すように、修正前ソースデータ４２１には、ａａａ、ｂｂｂおよびｃｃｃのソースコードが記述されている。ここで、ｂｂｂの箇所で障害が発生したとする。パッチ作成部４１１は、修正前ソースデータ４２１の障害箇所であるｂｂｂとｃｃｃとの間に修正コードを追加し、修正後ソースデータ４２２を作成する（ｓ１）。そして、パッチ作成部４１１は、作成した修正後ソースデータ４２２をコンパイルし、さらにパッチ作成ツールを動作させ、パッチデータを作成する（ｓ２）。パッチデータには、例えば、パッチＩＤとして「１２３４５６」が書き込まれる。【００１６】
次に、パッチ作成部４１１は、修正前ソースデータ４２１と修正後ソースデータ４２２とを比較し（ｓ３）、差分となる修正箇所を探索する。ここでは、パッチ作成部４１１は、ｂｂｂとｃｃｃとの間に修正コードが追加されているので、探索の結果、ｂｂｂとｃｃｃとの間を修正箇所とする。そして、パッチ作成部４１１は、修正前ソースデータ４２１の修正箇所にカウンタ処理を追加する（ｓ４）。このとき、パッチ作成部４１１は、カウンタ処理のパラメータとして、パッチデータのパッチＩＤを記述する。そして、パッチ作成部４１１は、修正前ソースデータ４２１にカウンタ処理を追加したソースデータをコンパイルし、さらにパッチ作成ツールを動作させ、チェックデータを作成する（ｓ５）。【００１７】
図１に戻って、パッチ作成部４１１は、作成したパッチデータおよびチェックデータを、パッチ公開サーバ３０へ登録する。【００１８】
パッチ公開サーバ３０は、パッチを公開するサーバである。パッチ公開サーバ３０は、制御部３１および記憶部３２を有する。制御部３１は、パッチ提供部３１１を有する。記憶部３２は、チェックデータ３２１およびパッチデータ３２２を有する。チェックデータ３２１は、パッチ作成部４１１によって登録されたチェックデータを示す。パッチデータ３２２は、パッチ作成部４１１によって登録されたパッチデータを示す。そして、パッチ公開サーバ３０は、パッチ作成サーバ４０によって登録されたパッチデータ３２２およびチェックデータ３２１を一括して管理する。また、パッチ公開サーバ３０は、情報処理装置１０からパッチデータ３２２のダウンロード要求を取得すると、要求があったパッチデータ３２２およびパッチデータ３２２に対応するチェックデータ３２１を、要求元に対して提供する。【００１９】
情報処理装置１０は、運用中のプログラムに修正がある場合、パッチデータを適用する代わりに、カウンタ処理が組み込まれたチェックデータを用いて通常運用し、チェックデータ内の修正箇所が実行された場合にカウントをアップさせる。そして、情報処理装置１０は、所定のタイミングで、カウントがアップしたか否かを判定し、カウントがアップした修正について、本来のパッチデータを適用する。すなわち、情報処理装置１０は、一度でも修正箇所が実行された場合、例えば電源オフまたはオンのタイミングで、カウントアップを検出した修正箇所のチェックデータを本来のパッチデータに置き換える。【００２０】
情報処理装置１０は、パッチ公開サーバ３０とネットワーク２０で接続される。また、情報処理装置１０は、制御部１１および記憶部１２を有する。制御部１１は、チェックデータ適用部１１１と、カウントアップを判定するカウントアップ判定部１１２と、例えば情報処理装置１０の電源オンまたはオフ時にカウントアップされたパッチを適用するパッチデータ適用部１１３とを有する。なお、制御部１１の機能は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現することができる。また、所定のプログラムがＣＰＵ（Central  Processing  Unit）を機能させることで実現することができる。【００２１】
記憶部１２は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置である。さらに、記憶部１２は、カウンタＤＢ１２１と、チェックデータ１２２と、パッチデータ１２３とを有する。カウンタＤＢ１２１は、パッチデータの修正箇所を通過したか否かの判定に用いられるカウンタをパッチデータ毎に記憶する。なお、カウンタＤＢ１２１の詳細な説明については、後述するものとする。【００２２】
チェックデータ１２２は、パッチデータの修正箇所にカウンタ処理を組み込んだオブジェクトである。パッチデータ１２３は、運用中のプログラムの障害箇所を修正したオブジェクトである。チェックデータ１２２およびパッチデータ１２３は、パッチデータ１２３のダウンロード要求に基づいて、パッチ公開サーバ３０から提供される。【００２３】
チェックデータ適用部１１１は、運用中のプログラムに修正がある場合、修正箇所を通過するとカウントをアップさせるカウンタ処理を組み込んだ暫定修正プログラム、すなわちチェックデータ１２２を運用中のプログラムに適用する。例えば、チェックデータ適用部１１１は、運用中のプログラムに修正がある場合、修正があるプログラムに対応したパッチデータ３２２およびチェックデータ３２１のダウンロード要求をパッチ公開サーバ３０に出力する。そして、チェックデータ適用部１１１では、要求に応じたパッチデータ３２２およびチェックデータ３２１がパッチ公開サーバ３０から提供される。そして、チェックデータ適用部１１１は、提供されたチェックデータ３２１を本来実行されるべきオブジェクトの配置先へ配置し、提供されたパッチデータ３２２をパッチデータ３２２毎に区別できる配置先へ配置する。一例として、チェックデータ適用部１１１は、パッチデータ３２２を本来実行されるべきオブジェクトの配置先の上位にパッチＩＤを付加した配置先へ配置する。【００２４】
また、チェックデータ適用部１１１は、提供されたパッチデータ１２３に関するカウンタＤＢ１２１を作成する。ここで、カウンタＤＢ１２１のデータ構造について、図３を参照しながら説明する。図３は、実施例に係るカウンタＤＢのデータ構造の一例を示す図である。図３に示すように、カウンタＤＢ１２１は、パッチＩＤ１２１ａ毎に、チェックデータのオブジェクト１２１ｂ、パッチデータのオブジェクト１２１ｃおよびカウンタ１２１ｄを対応付けて記憶する。パッチＩＤ１２２ａには、パッチデータ１２３の識別子が記憶される。チェックデータのオブジェクト１２２ｂには、チェックデータ１２２の配置先が記憶される。パッチデータのオブジェクト１２２ｃには、パッチデータ１２３の配置先が記憶される。例えば、カウンタＤＢ１２２は、パッチＩＤの値が「１２３４５６」である場合、チェックデータのオブジェクトの配置先として「／ｏｐｔ／パッケージ名／ｓｂｉｎ／ａａａ」を記憶する。パッチデータのオブジェクトの配置先として「／ｏｐｔ／ｐａｔｃｈ／１２３４５６／ｏｐｔ／パッケージ名／ｓｂｉｎ／ａａａ」を記憶する。すなわち、パッチデータのオブジェクトの配置先は、チェックデータのオブジェクトの配置先の上位にパッチＩＤ「１２３４５６」を付加した配置先となっている。また、カウンタＤＢ１２２は、カウンタ１２２ｄの値として初期値の０を記憶する。なお、チェックデータ適用部１１１は、カウンタＤＢ１２２をパッチデータ１２３の配置先に作成しても良いし、カウンタＤＢ１２２を作成するための専用の配置先に作成しても良い。【００２５】
図１に戻って、チェックデータ適用部１１１は、情報処理装置１０でプログラムを実行した際に、チェックデータ１２２内の修正箇所を通過した場合には、修正箇所に埋め込まれたカウンタ処理にカウンタＤＢ１２２のカウンタ１２２ｄの値をインクリメントさせる。なお、カウンタ処理の手順については、後述するものとする。【００２６】
カウントアップ判定部１１２は、チェックデータ適用部１１１によってチェックデータ１２２が実行された結果、所定のタイミングで、カウントがアップしているか否かを判定する。例えば、カウントアップ判定部１１２は、情報処理装置１０の電源オフまたは電源オンのタイミングで、カウンタＤＢ１２１のカウンタ１２２ｄの値を順次読み出し、読み出したカウンタ１２２ｄの値が「０」でないか否かを判定する。【００２７】
パッチデータ適用部１１３は、カウントアップ判定部１１２によってカウントがアップしていると判定された場合、チェックデータ１２２を、修正箇所を修正した修正済みのプログラム、すなわちパッチデータ１２３に置き換える。例えば、パッチデータ適用部１１３は、カウンタＤＢ１２１のカウンタ１２２ｄの値が「０」でないと判定された場合、「０」でないと判定された行のパッチＩＤをカウンタＤＢ１２１から読み出す。そして、パッチデータ適用部１１３は、読み出したパッチＩＤと同じ行のパッチデータのオブジェクトをチェックデータのオブジェクトの配置先にコピーする。すなわち、パッチデータ適用部１１３は、動作していたチェックデータのオブジェクトを修正済みのプログラムであるパッチデータに置き換える。さらに、パッチデータ適用部１１３は、カウンタＤＢ１２２から置き換え対象となったパッチＩＤの行を削除する。【００２８】
［実施例に係るパッチ適用判定の手順］
次に、実施例に係るパッチ適用判定の手順を、図４〜図６を参照して説明する。図４は、実施例に係るパッチ作成の手順を示すフローチャートである。図５は、実施例に係るパッチ公開の手順を示すフローチャートである。図６は、実施例に係るパッチ適用判定の手順を示すフローチャートである。なお、一例として、運用中のプログラムのいずれかの箇所で障害が発生したものとする。【００２９】
運用中のプログラムで障害が発生すると、パッチ作成サーバ４０では、パッチ作成部４１１が、障害が発生したプログラムのソースファイルである修正前ソースデータ４２１の修正を実施する（ステップＳ１１）。そして、パッチ作成部４１１は、修正前ソースデータ４２１の障害箇所に修正部分を追加し、修正後ソースデータ４２２を作成する。そして、パッチ作成部４１１は、作成した修正後ソースデータ４２２をコンパイルし、さらにパッチ作成ツールを動作させ、パッチデータを作成する（ステップＳ１２）。【００３０】
続いて、パッチ作成部４１１は、修正前ソースデータ４２１と修正後ソースデータ４２２とを比較し、差分となる修正箇所にカウンタ処理を追加する（ステップＳ１３）。そして、パッチ作成部４１１は、カウンタ処理を追加したソースデータをコンパイルし、さらにパッチ作成ツールを動作させ、チェックデータを作成する（ステップＳ１４）。【００３１】
そして、パッチ作成部４１１は、作成したパッチデータおよびチェックデータをパッチ公開サーバ３０へ登録する（ステップＳ１５）。【００３２】
パッチ作成サーバ４０によりパッチデータ３２２およびチェックデータ３２１が登録されると、パッチ公開サーバ３０は、登録されたパッチデータ３２２およびチェックデータ３２１を公開する（ステップＳ２１）。【００３３】
続いて、情報処理装置１０では、チェックデータ適用部１１１が、障害が発生したプログラムに関するパッチデータ３２２およびチェックデータ３２１をパッチ公開サーバ３０からダウンロードする（ステップＳ３１）。そして、チェックデータ実行部１１１は、ダウンロードしたチェックデータ１２２を本来実行されるべきオブジェクトの配置先へ配置し、ダウンロードしたパッチデータ１２３をパッチデータ毎に区別できる配置先へ配置する。【００３４】
そして、チェックデータ適用部１１１は、ダウンロードしたパッチデータ１２３のパッチＩＤに対応するカウンタＤＢ１２１を作成する（ステップＳ３２）。なお、カウンタＤＢ１２１の作成手順については、後に詳述する。【００３５】
続いて、情報処理装置１０におけるプログラム実行中にチェックデータ１２２内の修正箇所を通過した場合には、通過したチェックデータ内の修正箇所のカウンタがカウントアップを実施する（ステップＳ３３）。すなわち、チェックデータ実行部１１１は、チェックデータ１２２内の修正箇所を通過した場合には、修正箇所に埋め込まれたカウンタ処理にカウンタＤＢ１２１のカウンタ１２１ｄの値をインクリメントさせる。なお、カウンタ処理には、パラメータとしてパッチデータのパッチＩＤが与えられる。そして、カウンタ処理は、カウンタＤＢ１２１について、与えられたパッチＩＤに対応するカウンタ１２１ｄの値を１加算することとなる。【００３６】
その後、カウントアップ判定部１１２は、電源オフまたは電源オンのタイミングで、パッチＩＤに対応するカウンタ１２２ｄの値をカウンタＤＢ１２１から読み出す（ステップＳ３４）。そして、カウントアップ判定部１１２は、読み出したカウンタ１２２ｄの値が０であるか否かを判定する（ステップＳ３５）。カウンタ１２２ｄの値が０であると判定した場合（ステップＳ３５；Ｙｅｓ）、カウントがアップしていないので、パッチデータを適用しても修正箇所は動作しないと判断し、パッチ適用判定処理を終了する。【００３７】
一方、カウンタ１２２ｄの値が０でないと判定した場合（ステップＳ３５；Ｎｏ）、パッチデータ適用部１１３は、カウントがアップしているので、パッチデータ１２３を自動適用する（ステップＳ３６）。すなわち、パッチデータ適用部１１３は、動作していたチェックデータ１２２をパッチデータ１２３に置き換える。なお、パッチデータの適用手順については、後に詳述する。【００３８】
［実施例に係るカウンタＤＢ作成の手順］
次に、図６に示すＳ３２の処理手順を、図７を参照して説明する。図７は、実施例に係るカウンタＤＢ作成の手順を示すフローチャートである。図７の例では、カウンタＤＢ１２１は、パッチデータ１２３に記述された、パッチＩＤおよびオブジェクトの配置先に基づいて作成されるものとする。【００３９】
まず、チェックデータ適用部１１１は、カウンタＤＢ１２１が作成済みであるか否かを判定する（ステップＳ４１）。カウンタＤＢ１２１が作成済みでないと判定する場合（ステップＳ４１；Ｎｏ）、チェックデータ適用部１１１は、空のカウンタＤＢ１２１を作成し（ステップＳ４２）、ステップＳ４３に移行する。一方、カウンタＤＢ１２１が作成済みであると判定する場合（ステップＳ４１；Ｙｅｓ）、チェックデータ適用部１１１は、ステップＳ４３に移行する。【００４０】
続いて、チェックデータ適用部１１１は、適用するパッチデータ１２３からパッチＩＤを読み出す（ステップＳ４３）。そして、チェックデータ適用部１１１は、読み出したパッチＩＤをカウンタＤＢ１２１のパッチＩＤ欄に追加する（ステップＳ４４）。【００４１】
そして、チェックデータ適用部１１１は、パッチデータ１２３内のオブジェクトの配置先の中から、最初に「／ｏｐｔ／ｐａｔｃｈ」と付いている配置先をカウンタＤＢ１２１のパッチデータのオブジェクト欄に更新する（ステップＳ４５）。【００４２】
さらに、チェックデータ適用部１１１は、パッチデータ１２３内のオブジェクトの配置先の中から、その他の配置先を読み出す。そして、チェックデータ適用部１１１は、読み出した配置先の中からパッチデータのオブジェクトの配置先内の「／ｏｐｔ／ｐａｔｃｈ／ＸＸＸＸＸＸ」配下と同じ配置先を検索する。そして、チェックデータ適用部１１１は、検索した配置先をカウンタＤＢ１２１のチェックデータのオブジェクト欄に更新する（ステップＳ４６）。【００４３】
そして、チェックデータ適用部１１１は、カウンタＤＢ１２１のカウンタ欄に初期値の０を更新する（ステップＳ４７）。【００４４】
［実施例に係るカウンタ処理の手順］
次に、図６に示すＳ３３のカウンタ処理の手順を、図８を参照して説明する。図８は、実施例に係るカウンタ処理の手順を示すフローチャートである。なお、パラメータとしてパッチＩＤが与えられたものとする。【００４５】
まず、カウンタ処理は、カウンタＤＢ１２１のパッチＩＤを読み出す（ステップＳ５１）。そして、カウンタ処理は、カウンタＤＢ１２１から読み出したパッチＩＤとパラメータとして与えられたパッチＩＤとを比較する（ステップＳ５２）。そして、カウンタ処理は、読み出したパッチＩＤがパラメータとして与えられたパッチＩＤと一致しているか否かを判定する（ステップＳ５３）。【００４６】
一致していないと判定する場合（ステップＳ５３；Ｎｏ）、カウンタ処理は、カウンタＤＢ１２１の次行のパッチＩＤを読み出し（ステップＳ５４）、ステップＳ５２に移行する。【００４７】
一方、一致していると判定する場合（ステップＳ５３；Ｙｅｓ）、カウンタ処理は、一致していると判定したパッチＩＤと同じ行のカウンタ値を読み出す（ステップＳ５５）。そして、カウンタ処理は、読み出したカウンタ値を１加算し、カウントをアップする（ステップＳ５６）。そして、カウンタ処理は、カウンタＤＢ１２１のカウンタ値を加算した値に更新する（ステップＳ５７）。【００４８】
［実施例に係るパッチデータ適用の手順］
次に、図６に示すＳ３４〜Ｓ３６のパッチデータ適用の手順を、図９を参照して説明する。図９は、実施例に係るパッチデータ適用の手順を示すフローチャートである。【００４９】
まず、カウントアップ判定部１１２は、電源オフまたは電源オンであるか否かを判定する（ステップＳ６１）。電源オフおよび電源オンでないと判定した場合（ステップＳ６１；Ｎｏ）、カウントアップ判定部１１２は、電源オフまたは電源オンとなるまで判定を繰り返す。【００５０】
一方、電源オフまたは電源オンであると判定した場合（ステップＳ６１；Ｙｅｓ）、カウントアップ判定部１１２は、カウンタＤＢ１２１の先頭行を選択する（ステップＳ６２）。そして、カウントアップ判定部１１２は、選択した先頭行からカウンタ値を読み出す（ステップＳ６３）。【００５１】
続いて、カウントアップ判定部１１２は、読み出したカウンタ値が０であるか否かを判定する（ステップＳ６４）。カウントアップ判定部１１２によってカウンタ値が０でないと判定された場合（ステップＳ６４；Ｎｏ）、パッチデータ適用部１１３は、選択した行のパッチＩＤを読み出す（ステップＳ６５）。そして、パッチデータ適用部１１３は、読み出したパッチＩＤと同じ行のパッチデータのオブジェクトをチェックデータの配置先にコピーする（ステップＳ６６）。すなわち、パッチデータ適用部１１３は、動作していたチェックデータ１２２をパッチデータ１２３に置き換える。【００５２】
そして、パッチデータ適用部１１３は、カウンタＤＢ１２１から読み出したパッチＩＤと同じパッチＩＤの行を削除する（ステップＳ６７）。その後、パッチデータ適用部１１３は、次の行を選択すべく、ステップＳ６９に移行する。【００５３】
一方、カウントアップ判定部１１２によってカウンタ値が０であると判定された場合（ステップＳ６４；Ｙｅｓ）、パッチデータ適用部１１３は、選択した行が最終行であるか否かを判定する（ステップＳ６８）。選択した行が最終行でないとパッチデータ適用部１１３によって判定された場合（ステップＳ６８；Ｎｏ）、カウントアップ判定部１１２は、カウンタＤＢ１２１の次の行を選択し（ステップＳ６９）、ステップＳ６３に移行する。【００５４】
一方、選択した行が最終行であると判定した場合（ステップＳ６８；Ｙｅｓ）、パッチデータ適用部１１３は、パッチデータ１２３がＯＳ（Operation  System）に係るデータであった場合には、カーネルの再構成を実施する（ステップＳ７０）。なお、パッチデータ１２３がＯＳに係るデータでない場合には、カーネルの再構成は実施しなくても良い。【００５５】
［パッチデータを運用中のオブジェクトに適用する具体例］
ここで、パッチＩＤの値が「１２３４５６」であるパッチデータを運用中のオブジェクトに適用する具体例について、図１０および図１１を参照して説明する。図１０は、パッチデータの内容の具体例を示す図である。図１１は、カウンタＤＢの状態を説明する図である。なお、運用中のオブジェクトは、「／ｏｐｔ／ＦＪＳＶａｂｃｄ／ｓｂｉｎ／ａａａ」に配置されているものとする。【００５６】
図１０に示すように、パッチデータ１２３には、パッチＩＤの値として「１２３４５６」、パッケージの名称として「ＦＪＳＶａｂｃｄ」が記述されている。オブジェクトの配置先は、チェックデータ１２２およびパッチデータ１２３の配置先が記述されている。チェックデータ１２２の配置先には、「／ｏｐｔ／ＦＪＳＶａｂｃｄ／ｓｂｉｎ／ａａａ」が記述され、「ａａａ」がチェックデータ１２３のオブジェクト名となっている。【００５７】
パッチデータ１２３の配置先には、「／ｏｐｔ／ｐａｔｃｈ／１２３４５６／ｏｐｔ／ＦＪＳＶａｂｃｄ／ｓｂｉｎ／ａａａ」が記述され、「ａａａ」がパッチデータ１２２のオブジェクト名となっている。すなわち、パッチデータ１２３の配置先は、「／ｏｐｔ／１２３４５６／ｏｐｔ」配下に、本来実行されるべきオブジェクトの配置先が付加された配置先となっている。【００５８】
このようなパッチデータ１２３およびチェックデータ１２２が情報処理装置１０に提供されると、チェックデータ適用部１１１は、パッチデータ１２３に記述されたパッチＩＤ「１２３４５６」に関するカウンタＤＢ１２１を作成する。図１１に示すように、作成直後のカウンタＤＢ１２１の状態は、パッチＩＤの値が「１２３４５６」であり、チェックデータ１２２のオブジェクトの配置先として「／ｏｐｔ／ＦＪＳＶａｂｃｄ／ｓｂｉｎ／ａａａ」を記憶している。パッチデータ１２３のオブジェクトの配置先として「／ｏｐｔ／ｐａｔｃｈ／１２３４５６／ｏｐｔ／ＦＪＳＶａｂｃｄ／ｓｂｉｎ／ａａａ」を記憶し、カウンタ１２１ｄの値として初期値の０を記憶している。【００５９】
この状態で、チェックデータ適用部１１１は、チェックデータ１２２であるオブジェクト「ａａａ」を実行し、オブジェクト「ａａａ」内の修正箇所を通過した場合には、カウンタ処理によってカウンタＤＢ１２１のカウンタ値を１加算させる。その後、電源オフまたは電源オンのタイミングで、パッチデータ適用部１１３は、カウンタＤＢ１２１に記憶された、パッチＩＤ「１２３４５６」に対応するカウンタの値をチェックする。【００６０】
ここで、パッチデータ適用部１１３は、パッチＩＤ「１２３４５６」に対応するカウンタの値が図１１に示すように０である場合には、パッチＩＤ「１２３４５６」の修正を行っても修正箇所を通過しないので、パッチデータ１２３を適用しない。しかしながら、パッチデータ適用部１１３は、パッチＩＤ「１２３４５６」に対応するカウンタの値が０以外の数である場合には、パッチＩＤ「１２３４５６」の修正を行うと修正箇所を通過するので、パッチデータ１２３を適用する。すなわち、パッチデータ適用部１１３は、チェックデータ１２２のオブジェクト「ａａａ」をパッチデータ１２３のオブジェクト「ａａａ」に置き換える。【００６１】
ところで、上記した実施例では、１個のパッチＩＤに対して修正があるオブジェクトが１個の場合について説明した。しかしながら、１個のパッチＩＤに対して修正があるオブジェクトが２個以上の場合であっても、パッチ適用判定処理に変化はない。１個のパッチＩＤに対して修正があるオブジェクトが２個ある場合のカウンタＤＢ１２１の状態を、図１２を参照して説明する。図１２は、１個のパッチＩＤに対して修正があるオブジェクトが２個ある場合のカウンタＤＢの状態を説明する図である。【００６２】
図１２に示すように、作成直後のカウンタＤＢ１２１の状態は、パッチＩＤの値が「１２３４５６」であり、修正があるオブジェクトが「ａａａ」、「ｂｂｂ」の２個ある。そして、パッチＩＤ「１２３４５６」に対して修正があるオブジェクトが２個あっても、カウンタは１つしか使用されない。したがって、チェックデータ適用部１１１は、「ａａａ」および「ｂｂｂ」のどちらか一方でも、修正箇所を通過した場合には、１つのカウンタ値を１加算させることとなる。【００６３】
ここで、パッチＩＤ「１２３４５６」に対応するカウンタの値が図１２に示すように０であるものとする。この場合には、パッチデータ適用部１１３は、パッチＩＤ「１２３４５６」の修正を行っても修正箇所を通過しないので、パッチデータ１２３のオブジェクト「ａａａ」および「ｂｂｂ」を適用しない。しかしながら、パッチデータ適用部１１３は、カウンタ値が０以外の数である場合には、チェックデータ１２２のオブジェクト「ａａａ」をパッチデータ１２３のオブジェクト「ａａａ」に置き換える。さらに、パッチデータ適用部１１３は、チェックデータ１２２のオブジェクト「ｂｂｂ」をパッチデータ１２３のオブジェクト「ｂｂｂ」に置き換える。【００６４】
［実施例の効果］
上記実施例によれば、情報処理装置１０のチェックデータ適用部１１１は、運用中のプログラムに修正がある場合、修正箇所を通過するとカウントをアップさせる処理を組み込んだチェックデータ１２２を運用中のプログラムに組み込む。そして、カウントアップ判定部１１２は、情報処理装置１０上でのプログラム実行によりチェックデータ１２２が実行されたか否かを、所定のタイミングで、カウンタＤＢのカウントアップの有無により判定する。さらに、パッチデータ適用部１１３は、カウントアップ判定部１１２によってカウントがアップしているパッチ（チェックデータ）適用箇所があると判定された場合、カウントアップが行われたチェックデータ１２２を、修正箇所を修正した修正済みのプログラム、すなわちパッチデータ１２３に置き換える。かかる構成によれば、情報処理装置１０は、修正箇所を通過するとカウントをアップさせる処理を組み込んだチェックデータ１２２を実行するようにしたので、カウントを用いることにより修正箇所を通過したか否かを判定できる。このため、情報処理装置１０は、修正箇所を通過した場合に、パッチデータ１２３を適用できるので、パッチデータ１２３を適用するか否かを適切に判断できる。【００６５】
また、上記実施例によれば、パッチデータ適用部１１３は、カウントアップ判定部１１２によってカウントがアップしていないと判定された場合、チェックデータ１２２をパッチデータ１２３に置き換えない。かかる構成によれば、パッチデータ適用部１１３は、カウントがアップしていない場合、すなわち修正箇所を通過していない場合にチェックデータ１２２をパッチデータ１２３に置き換えないこととした。このため、パッチデータ適用部１１３は、パッチデータ１２３を適用しなくても良い場合にまで適用してしまうことによるレベルダウンの発生を未然に防止することができる。【００６６】
また、上記実施例によれば、カウントアップ判定部１１２は、情報処理装置１０を停止するタイミングまたは自装置を起動するタイミングで、カウントがアップしているか否かを判定する。かかる構成によれば、カウントアップ判定部１１２は、カウントがアップしているか否かの判定をプログラムの運用の妨げとならないタイミングにしているので、仮にカウントがアップしている場合には、効率的にパッチデータ１２３に置き換えることができる。【００６７】
なお、実施例では、チェックデータ適用部１１１は、運用中のプログラムに修正がある場合、修正箇所が実行されると修正箇所が実行された回数を計数させるカウント処理を組み込んだチェックデータ１２２を運用中のプログラムに適用するものと説明した。そして、チェックデータ１２２内のカウンタ処理が走行すると、カウンタ処理が、パラメータとして引き渡されるパッチデータ１２３のパッチＩＤに対応するカウントをアップさせる。しかしながら、カウンタ処理は、これに限定されず、パラメータとして引き渡されるパッチデータ１２３のパッチＩＤに対応するカウントをダウンさせるものとしても良い。この場合、パッチデータ適用部１１３は、カウント判定部１１２によってカウントがダウンしていると判定された場合、チェックデータ１２２を、パッチデータ１２３に置き換えるようにすれば良い。【００６８】
［プログラム等］
なお、情報処理装置１０は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置に、上記した制御部１１および記憶部１２等の各機能を搭載することによって実現することができる。【００６９】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、カウントアップ判定部１１２とパッチデータ適用部１１３とを１個の部として統合しても良い。一方、チェックデータ適用部１１１は、チェックデータ３２１およびパッチデータ３２２をダウンロードするダウンロード部と、ダウンロードしたチェックデータ３２１を実行するチェックデータ適用部１１１とに分散しても良い。また、カウンタＤＢ１２１等の記憶部１２を情報処理装置１０の外部装置としてネットワーク経由で接続するようにしても良い。【００７０】
また、上記実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーション等のコンピュータで実行することによって実現することができる。そこで、以下では、図１３を用いて、図１に示した情報処理装置１０の制御部１１と同様の機能を有するパッチ適用判定プログラムを実行するコンピュータの一例を説明する。【００７１】
図１３は、パッチ適用判定プログラムを実行するコンピュータを示す図である。図１３に示すように、コンピュータ１０００は、図１に示した情報処理装置１０と同じものであり、ＲＡＭ１０１０と、ネットワークインタフェース装置１０２０と、ＨＤＤ１０３０と、ＣＰＵ１０４０、媒体読取装置１０５０およびバス１０６０とを有する。ＲＡＭ１０１０、ネットワークインタフェース装置１０２０、ＨＤＤ１０３０、ＣＰＵ１０４０、媒体読取装置１０５０は、バス１０６０によって接続されている。なお、図１におけるパッチ作成サーバ４０やパッチ公開サーバ３０も図１３と同様の構成を有する情報処理装置により実現できる。【００７２】
そして、ＨＤＤ１０３０には、図１に示した制御部１１と同様の機能を有するパッチ適用判定プログラム１０３１が記憶される。また、ＨＤＤ１０３０には、図１に示したカウンタＤＢ１２１、チェックデータ１２２およびパッチデータ１２３に対応するパッチ適用判定処理関連情報１０３２が記憶される。【００７３】
そして、ＣＰＵ１０４０がパッチ適用判定プログラム１０３１をＨＤＤ１０３０から読み出してＲＡＭ１０１０に展開することにより、パッチ適用判定プログラム１０３１は、パッチ適用判定プロセス１０１１として機能するようになる。そして、パッチ適用判定プロセス１０１１は、パッチ適用判定処理関連情報１０３２から読み出した情報等を適宜ＲＡＭ１０１０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。【００７４】
媒体読取装置１０５０は、パッチ適用判定プログラム１０３１がＨＤＤ１０３０に記憶されていない場合であっても、パッチ適用判定プログラム１０３１を記憶する媒体等からパッチ適用判定プログラム１０３１を読み取る。媒体読取装置１０５０には、例えばＣＤ−ＲＯＭや光ディスク装置がある。【００７５】
ネットワークインタフェース装置１０２０は、外部装置とネットワーク経由で接続する装置であり、有線に対応するものであっても、無線に対応するものであっても良い。【００７６】
なお、上記のパッチ適用判定プログラム１０３１は、公衆回線、インターネット、ＬＡＮ、ＷＡＮ（Wide  Area  Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等に記憶されるようにしても良い。この場合には、コンピュータ１０００がネットワークインタフェース装置１０２０を介して他のコンピュータ等からパッチ適用判定プログラム１０３１を読み出して実行する。
【符号の説明】
【００７７】
１  計算機システム
１０  情報処理装置
１１  制御部
１１１  チェックデータ適用部
１１２  カウントアップ判定部
１１３  パッチデータ適用部
１２  記憶部
１２１  カウンタＤＢ
１２２、３２１  チェックデータ
１２３、３２２  パッチデータ
２０  ネットワーク
３０  パッチ公開サーバ
３１    制御部
３１１  パッチ提供部
３２  記憶部
４０  パッチ作成サーバ
４１  制御部
４１１  パッチ作成部
４２  記憶部
４２１  修正前ソースデータ
４２２  修正後ソースデータ
【図１】
2012127635.tif 000003
【図２】
2012127635.tif 000004
【図３】
2012127635.tif 000005
【図４】
2012127635.tif 000006
【図５】
2012127635.tif 000007
【図６】
2012127635.tif 000008
【図７】
2012127635.tif 000009
【図８】
2012127635.tif 000010
【図９】
2012127635.tif 000011
【図１０】
2012127635.tif 000012
【図１１】
2012127635.tif 000013
【図１２】
2012127635.tif 000014
【図１３】
2012127635.tif 000015
【国際調査報告】
2012127635.tif 000016
2012127635.tif 000017