(57)【要約】【課題】プログラムの実行状況に応じて修正の適用の要否を判定可能とすること。【解決手段】適用判定プログラムは、実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶部に記憶し、前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、処理をコンピュータに実行させる。【選択図】図３
2015197841.tif 000002
【特許請求の範囲】
【請求項１】
実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶部に記憶し、
前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
処理をコンピュータに実行させる修正ファイルの適用判定プログラム。
【請求項２】
前記記憶する処理は、前記実行ファイルに含まれる複数のプログラムについてそれぞれの実行回数を前記記憶部に記憶し、
前記判定する処理は、前記一部のプログラムについての実行回数として、所定回数以上の実行回数が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする請求項１記載の適用判定プログラム。
【請求項３】
前記記憶する処理は、前記実行ファイルごとの実行履歴を前記記憶部に記憶し、
前記実行ファイルについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする請求項１又は２記載の適用判定プログラム。
【請求項４】
前記判定する処理は、第一のプログラムから呼び出される第二のプログラム及び第三のプログラムのうち、前記第二のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されており、前記第三のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されてない場合に、前記第三のプログラムについて修正された修正ファイルを、前記第一のプログラム、前記第二のプログラム、及び前記第三のプログラムを含む実行ファイルに適用すると判定する、
ことを特徴とする請求項１乃至３いずれか一項記載の適用判定プログラム。
【請求項５】
前記記憶する処理は、複数の実行ファイルに含まれる複数のプログラムのそれぞれの実行履歴を前記記憶部に記憶し、
前記判定する処理は、複数の実行ファイルのそれぞれに対する複数の修正ファイルのうち、実行されたことを示す実行履歴が前記記憶部に記憶されているプログラムを含む実行ファイルに対応する修正ファイルについて、適用すると判定する、
ことを特徴とする請求項１乃至４いずれか一項記載の適用判定プログラム。
【請求項６】
実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶部に記憶し、
前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
処理をコンピュータが実行することを特徴とする修正ファイルの適用判定方法。
【請求項７】
実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶する記憶部と、
前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する判定部と、
を有することを特徴とする修正ファイルの適用判定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、修正ファイルの適用判定プログラム、適用判定方法、及び適用判定装置に関する。
【背景技術】
【０００２】
ソフトウェアを構成する或る関数におけるバグの修正や機能拡張等を目的として当該関数が修正されると、修正後の当該関数を含むライブラリを含むパッチが提供される。パッチを利用することにより、ソフトウェア全体を更新する場合に比べ、ソフトウェアの修正作業の効率化を図ることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２００７／１０５２７４号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、パッチが適用されると、ソフトウェアのファイル構成が変化したり、ソフトウェアによるメモリの使用状況等が変化したりする場合が有る。斯かる変化により、これまで正常に動作していた機能に関して、その動作が不安定になる可能性が有る。
【０００５】
したがって、ユーザによるソフトウェアの利用状況が、パッチによって修正される関数が実行されるようなものではない場合、パッチの適用を避けた方が、ソフトウェアの安定稼動にとって望ましい場合もある。
【０００６】
そこで、本発明は、一側面では、プログラムの実行状況に応じて修正の適用の要否を判定可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
一つの案では、適用判定プログラムは、実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶部に記憶し、前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、処理をコンピュータに実行させる。
【発明の効果】
【０００８】
一態様によれば、プログラムの実行状況に応じて修正の適用の要否を判定可能とすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態における情報処理システムの構成例を示す図である。
【図２】本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における情報処理装置の機能構成例を示す図である。
【図４】実行履歴書込部が実行する処理手順の一例を説明するためのフローチャートである。
【図５】実行履歴記憶部の構成例を示す図である。
【図６】パッチ処理部が実行する処理手順の一例を説明するためのフローチャートである。
【図７】適用情報ファイルの構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における情報処理システムの構成例を示す図である。図１において、パッチ管理サーバ２０と１以上の情報処理装置１０とは、ＬＡＮ（Local Area Network）又はインターネット等のネットワークを介して接続される。
【００１１】
情報処理装置１０は、パッチの適用対象とされるソフトウェアを有するコンピュータである。当該ソフトウェアは、ＯＳ（Operating System）、ミドルウェア、及びアプリケーション等のいずれであってもよい。また、情報処理装置１０は、ネットワークを介して接続されるクライアント装置に対してサービスを提供するサーバ装置でもよいし、当該クライアント装置でもよい。また、携帯電話、スマートフォン、及びタブレット型端末等が、情報処理装置１０であってもよい。
【００１２】
パッチ管理サーバ２０は、情報処理装置１０にインストールされたソフトウェアに対するパッチを管理するコンピュータである。パッチとは、ソフトウェアを構成するファイル群のうちの一部のファイルに対してバグの修正等が行われたファイルを含むデータをいう。例えば、ソフトウェアを構成する実行ファイルに含まれる各プログラムのうちの一部のプログラムに関してバグ修正が行われた場合、修正後の当該プログラムを含む実行ファイルがパッチを構成する。なお、本実施の形態において、実行ファイルとは、情報処理装置１０のＣＰＵに処理を実行させるファイルをいう。実行ファイルには、実行形式のファイルのみならず、ライブラリ等、関数の集合であるファイルも含まれる。
【００１３】
図２は、本発明の実施の形態における情報処理装置のハードウェア構成例を示す図である。図２の情報処理装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１４】
情報処理装置１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１５】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って情報処理装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１６】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００１７】
図３は、本発明の実施の形態における情報処理装置の機能構成例を示す図である。図３において、情報処理装置１０には、ソフトウェア製品ＳＷ１がインストールされている。ソフトウェア製品ＳＷ１は、１以上のコンポーネントＣＰを含む。コンポーネントＣＰとは、ソフトウェア製品ＳＷ１を構成する部品としてのソフトウェアをいう。例えば、ソフトウェア製品ＳＷ１の機能別にコンポーネントＣＰが作成されてもよい。各コンポーネントＣＰは、１以上のモジュールを含む。１つのモジュールは、１つ以上のファイルを構成する。モジュールは、例えば、プロセスを生成する実行形式ファイル若しくはコマンドファイル、又は関数の集合であるライブラリ、又は設定情報を含むリソースファイル等である。例えば、ライブラリとしてのモジュールには、複数の関数が含まれる。実行形式ファイルとしてのモジュールにも、１以上の関数が含まれてもよい。なお、図３に示されるソフトウェア製品ＳＷ１の構造は、一例に過ぎない。図３とは異なる構造を有するソフトウェア製品に関して、本実施の形態が適用されてもよい。
【００１８】
情報処理装置１０は、また、実行履歴書込部１１及びパッチ処理部１２等を有する。これら各部は、情報処理装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。情報処理装置１０は、更に、実行履歴記憶部１３及びインストール情報記憶部１４等を利用する。実行履歴記憶部１３は、補助記憶装置１０２、又は情報処理装置１０にネットワークを介して接続される非図示の記憶装置等を用いて実現可能である。
【００１９】
実行履歴書込部１１は、モジュールに埋め込まれたチェックポイントに係る処理が実行された場合に、当該チェックポイントが実行されたことを示す実行履歴を、実行履歴記憶部１３に記憶する。チェックポイントとは、モジュールのソースコードにおいて、予め埋め込まれる、実行履歴書込部１１の呼び出し部分をいう。なお、実行履歴書込部１１を利用せずに、汎用的なコメントの出力関数を用いて、実行履歴が記憶されてもよい。実行履歴書込部１１は、関数（以下、「実行履歴書込関数」という。）として実装されてもよい。この場合、モジュール内において、実行履歴書込関数を呼び出している箇所が、チェックポイントである。なお、チェックポイントは、モジュール単位又はモジュールに含まれる関数単位で埋め込まれても良いし、関数内の複数箇所に埋め込まれてもよい。モジュール単位の場合、当該モジュールを利用する側において、実行履歴書込関数が呼び出されてもよいし、当該モジュールのロード後に最初に実行される箇所において実行履歴書込関数が呼び出されてもよい。関数単位の場合、関数の最初又は最後等において、実行履歴書込関数が呼び出されてもよい。関数内の複数箇所の場合、例えば、一つの関数において、特定の条件が満たされた場合に実行される経路ごとに、実行履歴書込関数が呼び出されてもよい。
【００２０】
インストール情報記憶部１４は、情報処理装置１０にインストールされているソフトウェア製品ＳＷ１のコンポーネントＣＰごとに、当該コンポーネントＣＰの識別情報（以下、「コンポーネントＩＤ」という。）を記憶する。
【００２１】
パッチ処理部１２は、パッチＰ１の適用に関する処理を実行する。図３において、パッチ処理部１２は、照会部１２１、適用情報取得部１２２、適用判定部１２３、修正モジュール取得部１２４、及び修正モジュール適用部１２５等を含む。
【００２２】
照会部１２１は、情報処理装置１０にインストールされているコンポーネントＣＰに対するパッチＰ１の有無を、パッチ管理サーバ２０に照会する。本実施の形態では、コンポーネントＣＰごとにパッチＰ１がリリースされる。
【００２３】
適用情報取得部１２２は、パッチＰ１がリリースされていることが判明した場合に、当該パッチＰ１の適用情報ファイルｆ１を取得する。本実施の形態において、一つのパッチＰ１は、適用情報ファイルｆ１及び修正モジュール群ｐｓ１を含む。適用情報ファイルｆ１は、パッチＰ１を適用する１以上の条件（以下、「適用条件」という。）や、各適用条件が満たされた場合に実行すべき処理を示す情報が定義されたファイルである。適用情報ファイルｆ１は、例えば、一つのテキストファイルである。修正モジュール群ｐｓ１は、１以上の修正されたモジュール（以下、「修正モジュール」という。）の集合である。例えば、ライブラリに対応する修正モジュールは、当該修正モジュールに含まれる関数のうちの一部の関数について、修正が行われている。各修正モジュールは、対応するモジュールの識別情報（以下、「モジュールＩＤ」という。）に関連付けられて、パッチ管理サーバ２０に記憶されている。なお、本実施の形態において、モジュールと、当該モジュールの修正モジュールとのモジュールＩＤは、便宜上、同じであるとする。したがって、モジュールＩＤによって、モジュールと、当該モジュールの修正モジュールとの対応関係が把握される。
【００２４】
適用判定部１２３は、実行履歴記憶部１３に記憶されている実行履歴が、適用情報取得部１２２によって取得された適用情報ファイルｆ１に定義されている１以上の適用条件のうちのいずれかを満たすか否かに応じて、各修正モジュールの適用の要否を判定する。修正モジュールの適用とは、当該修正モジュールによって、当該修正モジュールに対応するモジュールを置き換えることをいう。
【００２５】
修正モジュール取得部１２４は、適用判定部１２３によって、いずれかの修正モジュールの適用が必要であると判定された場合に、当該修正モジュール又は当該修正モジュールを含む修正モジュール群を、パッチ管理サーバ２０から取得（ダウンロード）する。修正モジュール適用部１２５は、修正モジュール取得部１２４によって取得された修正モジュールを適用する。
【００２６】
なお、パッチＰ１が記憶されている場所は、パッチ管理サーバ２０でなくてもよい。例えば、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体にパッチＰ１が記憶されていてもよい。この場合、パッチ処理部１２は、情報処理装置１０のドライブ装置１００にセットされた当該記録媒体を参照して処理を実行してもよい。
【００２７】
以下、情報処理装置１０が実行する処理手順について説明する。図４は、実行履歴書込部が実行する処理手順の一例を説明するためのフローチャートである。図４に示される処理は、ソフトウェア製品ＳＷ１に含まれる各コンポーネンに埋め込まれているチェックポイントにおける、実行履歴書込関数の呼び出しに応じて開始される。なお、実行履歴書込関数には、各チェックポイントを識別する識別情報（以下、「チェック番号」という。）が指定される。すなわち、実行履歴書込部１１には、チェックポイントのチェック番号が通知される。なお、チェック番号は、チェックポイントの識別名であってもよい。例えば、或る関数のチェックポイントに対するチェック番号は、当該関数の関数名を含んでいてもよい。また、或るモジュールのチェックポイントに対するチェック番号は、当該モジュールのファイル名を含んでもよい。すなわち、チェックポイントの命名規則は、適宜決定されてよい。
【００２８】
実行履歴書込関数の呼び出しに応じ、実行履歴書込部１１は、通知されたチェック番号に対するエントリが、実行履歴記憶部１３に記憶されているか否かを判定する（Ｓ１０１）。
【００２９】
図５は、実行履歴記憶部の構成例を示す図である。図５において、実行履歴記憶部１３は、チェック番号に対応付けて、実行回数を記憶する。実行回数は、実行履歴の一例であり、当該チェック番号に係るチェックポイントが実行された回数である。
【００３０】
ステップＳ１０１では、通知されたチェック番号を含むエントリ（レコード）の有無が判定される。該当するエントリが有る場合（Ｓ１０１でＹｅｓ）、実行履歴書込部１１は、当該エントリの実行回数に１を加算する（Ｓ１０３）。該当するエントリが無い場合（Ｓ１０１でＮｏ）、実行履歴書込部１１は、当該チェック番号に対応するエントリを、実行履歴記憶部１３に追加する（Ｓ１０２）。追加されたエントリの実行回数の値は、０に初期化される。続いて、実行履歴書込部１１は、ステップＳ１０３を実行する。したがって、この場合、当該エントリの実行回数の値は、１となる。
【００３１】
このように、各モジュールに埋め込まれたチェックポイントが実行されるたびに、当該チェックポイントの実行回数がインクリメントされる。なお、チェックポイントは、モジュールごと、関数ごと、コマンドごと等、コンポーネントＣＰの作成者の任意の箇所に埋め込まれる。したがって、例えば、関数ごとにチェックポイントが埋め込まれれば、実行履歴記憶部１３には、各関数の実行回数が記憶されることになる。
【００３２】
続いて、パッチ処理部１２が実行する処理手順について説明する。図６は、パッチ処理部が実行する処理手順の一例を説明するためのフローチャートである。図６の処理は、定期的又は不定期に実行される。不定期に実行される場合、例えば、実行形式ファイルである特定のモジュールの起動、ライブラリである特定のモジュールのロード、特定のモジュールに含まれる特定の関数の実行等に応じて、図６の処理が開始されてもよい。
【００３３】
ステップＳ２０１において、照会部１２１は、パッチＰ１の有無の照会要求をパッチ管理サーバ２０に送信する（Ｓ２０１）。当該照会要求に応じ、パッチ管理サーバ２０は、パッチ管理サーバ２０に記憶されているパッチＰ１に関連付けられているコンポーネントＩＤの一覧を返信する。すなわち、パッチＰ１がリリースされているコンポーネントＣＰのコンポーネントＩＤの一覧が返信される。
【００３４】
続いて、照会部１２１は、返信されたコンポーネントＩＤの一覧の中に、インストール情報記憶部１４に記憶されているコンポーネントＩＤが含まれているか否かに基づいて、情報処理装置１０にインストールされているコンポーネントＣＰに対するパッチＰ１の有無を判定する（Ｓ２０２）。すなわち、返信されたコンポーネントＩＤの一覧の中に、インストール情報記憶部１４に記憶されているコンポーネントＩＤが含まれている場合、照会部１２１は、情報処理装置１０にインストールされているコンポーネントＣＰに対するパッチＰ１は有ると判定する。なお、返信されたコンポーネントＩＤの一覧と、インストール情報記憶部１４との双方に含まれるコンポーネントＩＤを、以下「対象コンポーネントＩＤ」という。対象コンポーネントＩＤは、複数であってもよい。一方、返信されたコンポーネントＩＤの一覧の中に、インストール情報記憶部１４に記憶されているコンポーネントＩＤが含まれていない場合、照会部１２１は、情報処理装置１０にインストールされているコンポーネントＣＰに対するパッチＰ１は無いと判定する。
【００３５】
なお、ステップＳ２０２における判定は、パッチ管理サーバ２０によって行われてもよい。この場合、ステップＳ２０１においてパッチ管理サーバ２０に送信される照会要求には、インストール情報記憶部１４に記憶されているコンポーネントＩＤの一覧が含まれてもよい。パッチ管理サーバ２０は、当該一覧に含まれるいずれかのコンポーネントＩＤに関連付けられて記憶されているパッチＰ１の有無を判定し、当該判定結果を情報処理装置１０に返信してもよい。
【００３６】
情報処理装置１０にインストールされているコンポーネントＣＰに対するパッチＰ１が無い場合（Ｓ２０２でＮｏ）、図６の処理は終了する。該当するパッチＰ１（以下、「対象パッチＰ１」という。）が有る場合（Ｓ２０２でＹｅｓ）、適用情報取得部１２２は、対象パッチＰ１の適用情報ファイルｆ１を取得済みであるか否かを判定する（Ｓ２０３）。例えば、対象コンポーネントＩＤに関連付けられて、補助記憶装置１０２に適用情報ファイルｆ１が記憶されているか否かが判定される。
【００３７】
対象パッチＰ１の適用情報ファイルｆ１が取得されている場合（Ｓ２０３でＮｏ）、ステップＳ２０４は実行せずにステップＳ２０５に進む。なお、適用情報ファイルｆ１が取得されている場合であっても、当該適用情報ファイルｆ１が更新されている場合もあるので、当該適用情報ファイルｆ１に関して更新の有無が確認されてもよい。更新されている場合、改めて、当該適用情報ファイルが取得されてもよい。
【００３８】
対象パッチＰ１の適用情報ファイルｆ１が取得されていない場合（Ｓ２０３でＹｅｓ）、適用情報取得部１２２は、対象パッチＰ１の適用情報ファイルｆ１を、パッチ管理サーバ２０から取得する（Ｓ２０４）。対象パッチＰ１の適用情報ファイルｆ１とは、対象コンポーネントＩＤに関連付けられてパッチ管理サーバ２０に記憶されている適用情報ファイルｆ１である。適用情報取得部１２２は、取得された適用情報ファイルｆ１を、対象コンポーネントＩＤに関連付けて補助記憶装置１０２に記憶する。
【００３９】
図７は、適用情報ファイルの構成例を示す図である。図７に示されるように、適用情報ファイルｆ１は、１以上のエントリを含む。各エントリは、チェック番号、適用条件、修正ＩＤ、及び処理群コード等を含む。
【００４０】
チェック番号は、実行履歴記憶部１３に記憶されている実行回数のうち、適用条件の充足の判定において注目される実行回数のチェック番号である。適用条件は、修正ＩＤに係る修正モジュールが適用される条件である。厳密には、適用条件は、当該エントリの処理群コードによって特定される処理が実行される条件である。適用条件に含まれるＮは、当該エントリのチェック番号に対する実行回数を示す。修正ＩＤは、対象パッチＰ１の修正モジュール群ｐｓ１に含まれる修正モジュールのうち、適用対象となる修正モジュールのモジュールＩＤである。換言すれば、修正ＩＤは、情報処理装置１０が有するモジュールのうち、修正対象のモジュールのモジュールＩＤであるともいえる。
【００４１】
すなわち、本実施の形態では、必ずしも対象パッチＰ１に含まれる全ての修正モジュールが適用対象となるとは限らない。実行履歴記憶部１３に記憶されている情報に応じて、すなわち、ユーザによるソフトウェア製品ＳＷ１の利用状況に応じて、適用対象となる修正モジュールが変化する。処理群コードは、適用条件が満たされた場合に、実行すべき１以上の処理の処理コードの和である。本実施の形態では、処理コードの一例として、以下の値が定義される。
０：何の処理も実行しない。
１：適用対象の修正モジュールをダウンロードする。
２：修正ＩＤに係るモジュールをロードしているプロセスの終了を待機して、修正モジュールを適用する。
４：修正ＩＤに係るモジュールをロードしているプロセスを強制終了して、修正モジュールを適用する。
８：以降のエントリを無視する。
【００４２】
上記したように、適用情報ファイルｆ１に含まれる処理群コードは、処理コードの和である。但し、処理コード「０」は、単独でのみ用いられ、処理群コードを構成しない。また、複数の処理コードを含む処理群コードにおいて、各処理コードに係る処理の実行順は、処理コードの小さい順となる。したがって、例えば、処理群コード「５」は、処理コード「１」の処理の実行後に、処理コード「２」の処理を実行すべきことを示す。処理群コード「３」は、処理コード「１」の処理の実行後に、処理コード「４」の処理を実行すべきことを示す。
【００４３】
なお、適用情報ファイルｆ１は、照会部１２１によるパッチＰ１の有無の照会に基づいて取得されなくてもよい。例えば、パッチ管理サーバ２０に新たなパッチＰ１が登録された際に、当該パッチＰ１の適用情報ファイルｆ１が、パッチ管理サーバ２０から情報処理装置１０に対して配信されてもよい。
【００４４】
続いて、適用判定部１２３は、取得された適用情報ファイルｆ１に含まれる各エントリの適用条件について、充足の有無を判定する（Ｓ２０５）。例えば、図７の１番目のエントリに関しては、チェック番号「Ｗ００１」に対する実行回数が、１以上であるか否かが判定される。２番目のエントリに関しては、チェック番号「ｘａ００１」に対する実行回数が、１以上３０以下であるか否かが判定される。３番目のエントリに関しては、チェック番号「ｘｂ００１」に対する実行回数が０であるか否かが判定される。４番目のエントリに関しては、チェック番号「ｘｃ００２」に対する実行回数が、６０以上であるか否かが判定される。５番目のエントリに関しては、チェック番号「ｙｂ０１１」に対する実行回数が、１以上であるか否かが判定される。６番目のエントリに関しては、実行回数が０であるか否かが判定される。なお、チェック番号に対する実行回数とは、当該チェック番号に対応付けられて実行履歴記憶部１３に記憶されている実行回数をいう。
【００４５】
なお、ステップＳ２０５は、ステップＳ２０４に同期して（ステップＳ２０４に続けて）実行されなくてもよい。ステップＳ２０４の実行後の任意のタイミングにおいて実行されてもよい。例えば、実行形式ファイルとしてのモジュールの起動若しくは終了、又は特定の関数の開始若しくは終了に応じてステップＳ２０５が実行されてもよい。このように、ステップＳ２０５の実行タイミングを動的にする場合、当該タイミングを示す定義情報が生成され、補助記憶装置１０２に記憶されてもよい。又は、当該定義情報は、パッチ管理サーバ２０からダウンロードされてもよい。
【００４６】
適用条件が充足されるエントリが無い場合（Ｓ２０６でＮｏ）、図６の処理は終了する。適用条件が充足されるエントリが１以上有る場合（Ｓ２０６でＹｅｓ）、適用処理部は、当該エントリの処理群コードが示す処理を実行する（Ｓ２０７）。
【００４７】
例えば、図７の１番目又は５番目のエントリであれば、修正モジュール取得部１２４は、当該エントリの修正ＩＤに係る修正モジュールを含む修正モジュール群を、パッチ管理サーバ２０から取得する。修正モジュール適用部１２５は、当該モジュールＩＤに係るモジュールをロードするプロセスを強制終了して、当該修正モジュールを適用する。
【００４８】
なお、或るモジュールをロードするプロセスの特定は、例えば、モジュールとプロセスとの関係を示す情報に基づいて行われてもよい。モジュールとプロセスとの関係を示す情報とは、厳密には、モジュールと、当該モジュールをロードするプロセスを生成する実行形式ファイルとの関係を示す情報である。当該情報は、予め作成され、補助記憶装置１０２に記憶されていてもよいし、パッチ管理サーバ２０からダウンロードされてもよい。
【００４９】
また、２番目のエントリであれば、修正モジュール取得部１２４は、モジュールＩＤが「ｐ１００２」である修正モジュールを、パッチ管理サーバ２０から取得する。この場合、当該修正モジュールの適用は、当該モジュールＩＤに係るモジュールをロードするプロセスが終了しても実行されない。２番目のエントリの意義は、ｘａ００１のチェックポイントが１以上３０以下である場合は、モジュールＩＤが「ｐ１００２」である修正モジュールを適用する必要性が高いため、その準備のためにダウンロードだけをしておくというものである。したがって、２番目のエントリに対応させて、修正ＩＤが「ｐ１００２」であり、処理群コードが「２」又は「４」であるエントリが定義されてもよい。
【００５０】
３番目のエントリであれば、４番目以降のエントリが無視される。なお、処理コード「８」の意味は、「以前のエントリを無効化する」でもよい。４番目又は６番目のエントリであれば、修正モジュール取得部１２４は、当該エントリの修正ＩＤに係る修正モジュールを、パッチ管理サーバ２０から取得する。修正モジュール適用部１２５は、当該モジュールＩＤに係るモジュールをロードするプロセスが終了するのを待機して、当該修正モジュールを適用する。
【００５１】
なお、或るプロセスの終了のタイミングは、当該プロセスによって修正モジュール適用部１２５に通知されることにより検知されてもよい。または、修正モジュール適用部１２５が、ＯＳ（Operating System）等を介して、各プロセスの状態を監視することにより、各プロセスの終了が検知されてもよい。
【００５２】
上記では、修正モジュールの適用のタイミングは、当該修正モジュールに対応するモジュールをロードしているプロセスの終了後であるが、更に細かい単位で、修正モジュールの適用のタイミングの選択肢が設けられてもよい。例えば、修正モジュールの適用のタイミングの選択肢として、ライブラリのアンロード時を追加したい場合、各ライブラリのアンロードが、修正モジュール適用部１２５に通知されるようにしてもよい。ライブラリのアンロードの通知は、当該ライブラリが通知可能であれば当該ライブラリによって行われてもよいし、当該ライブラリをアンロードする側のモジュールによって行われてもよい。また、修正モジュールの適用のタイミングの選択肢として、モジュールに含まれる関数の開始又は関数の終了後を追加したい場合、各関数の開始又は終了が、修正モジュール適用部１２５に通知されるようにしてもよい。関数の開始及び終了は、当該関数内において通知されてもよいし、当該関数を呼び出す側において通知されてもよい。
【００５３】
なお、６番目のエントリが示す内容は、チェック番号「ｚ１１０」に対する実行回数が０である場合に、モジュールＩＤが「ｐ１００４」である修正モジュールをダウンロードして適用するというものである。当該エントリは、チェック番号「ｚ１１０」に係るチェックポイントが実行されていないことで、当該チェックポイントと排他的な関係に有る箇所が実行されていることが推定されるという考えに基づく。すなわち、修正ＩＤ「ｐ１００４」は、当該チェックポイントと排他的な関係に有る箇所が実行されている場合に、適用されるべき修正モジュールのモジュールＩＤである。
【００５４】
このように、適用情報ファイルｆ１では、どのような状況においてどの修正モジュールを適用するのかについて、柔軟な設定を行うことができる。
【００５５】
例えば、ライブラリとしての或るモジュール（以下、「モジュールａ」という。）が、関数Ａと、関数Ａが条件に応じて呼び分ける関数Ｂ及び関数Ｃとを含むとする。このようなモジュールａに対して、関数Ｃにおけるバグが修正された、修正モジュールＣを含むパッチＰ１がリリースされたとする。この場合、当該パッチＰ１に関する適用情報ファイルｆ１において、以下のようなエントリが定義されてもよい。
【００５６】
チェック番号：関数Ｂ内の任意の箇所のチェックポイントに対するチェック番号
適用条件：１≦Ｎ
修正ＩＤ：修正モジュールＣのモジュールＩＤ
処理群コード：１又は３又は５
上記のようなエントリによれば、関数Ｃが実行されていない場合でも、関数Ｂが実行されていれば、修正モジュールＣを適用することができる。上記したように、関数Ｂは、関数Ａから呼び出される。したがって、関数Ｂが実行されているということは、関数Ａが実行されているということになる。そして、関数Ａが実行されているということは、関数Ａ内の条件次第で、関数Ｃが呼び出される可能性が有るということである。したがって、関数Ｂが実行されている場合に、関数Ｃに関して修正された修正モジュールＣを適用する意義は有ると考えられる。
【００５７】
また、図７の２番目のエントリのように、実行回数が、所定値以上である場合には、修正モジュールを適用しない、といったエントリが定義されてもよい。所定値は、十分な実行実績が有ると考えられる値である。斯かるエントリによれば、十分な実行実績が有り、安定稼働しているモジュールに関して、修正モジュールが適用されることを回避することができる。
【００５８】
なお、パッチＰ１が可搬型の記録媒体によって配布される場合、図６の処理において、パッチ管理サーバ２０に対して行われていた処理は、当該記録媒体に対して行われるようにしてもよい。
【００５９】
続いて、実行履歴記憶部１３に記憶される実行履歴の変形例について説明する。上記では、実行履歴の一例として実行回数が記憶される例を説明した。修正モジュールの適用条件が、実行実績の有無によって判定可能であれば、実行履歴として、実行実績の有無が記憶されてもよい。この場合、実行履歴書込部１１は、実行履歴書込部１１が属するプロセスの起動時に、実行履歴記憶部１３に記憶されているエントリをメモリ装置１０３に読み込んでおく。実行履歴書込部１１は、図４のステップＳ１０１の実行前に、通知されたチェック番号を含むエントリがメモリ装置１０３に記憶されている場合、ステップＳ１０１以降を実行しない。その結果、実行履歴記憶部１３には、実行されたチェックポイントごとに１が記憶され、以降の実行に応じて実行回数の更新は行われない。こうすることで、実行履歴記憶部１３に対するアクセス回数を減少させることができ、実行履歴の書き込みによる性能の劣化の可能性を低減することができる。
【００６０】
また、チェックポイントにおける特定の変数の値が実行履歴に含まれるようにしてもよい。この場合、適用条件は、当該変数の値に関して設定されてもよい。そうすることで、関数の実行状況等に応じて、修正モジュールの適用の要否を判定することができる。
【００６１】
また、関数の引数の値が実行履歴に含まれるようにしてもよい。この場合、適用条件は、当該引数の値に関して設定されてもよい。そうすることで、関数の引数の値に応じて、修正モジュールの適用の要否を判定することができる。引数のデータ型が文字列であれば、当該文字列の文字種別（全角、半角、英数字等）を示す値が実行履歴に含まれてもよい。
【００６２】
また、実行履歴には、「ＯＮ」又は「ＯＦＦ」等、適用条件の充足の有無を示す値が含まれてもよい。この場合、適用情報ファイルｆ１の各エントリにおいて、適用条件は設けられなくてもよい。実行履歴記憶部１３において、チェック番号に対して「ＯＮ」が記憶されていれば、適用条件は満たされたと判定可能であるからである。このような実行履歴は、或るチェックポイントが実行された場合に、修正モジュールの適用を回避したい場合等に有効である。この場合、当該チェックポイントでは、「ＯＦＦ」という実行履歴が実行履歴記憶部１３に記憶されるようにすればよい。
【００６３】
上述したように、本実施の形態によれば、各モジュールに含まれる関数等に関して、実行履歴を記憶し、当該実行履歴が所定の条件を満たすか否かに応じて、修正モジュールの適用の要否が判定される。したがって、関数の実行状況に応じて修正モジュールの適用の要否を判定可能とすることができる。
【００６４】
また、本実施の形態によれば、複数の修正モジュールのうち、実行されたことを示す実行履歴が記憶されている関数を含むモジュールに対応する修正モジュールが、適用対象とされる。したがって、実行されている関数を含まないモジュール、すなわち、利用されていないモジュールに対応する修正モジュールが適用されることによって、ソフトウェア製品ＳＷ１の動作が不安定になる可能性を低減することができる。
【００６５】
なお、一つの情報処理装置１０に複数のソフトウェア製品がインストールされており、各ソフトウェア製品が、同一のコンポーネントを別個に有する場合、例えば、同一のコンポーネントのうち、パッチの適用対象の特定を可能とするために、パッチ適用ファイルは、ソフトウェア製品ごと作成されてもよい。また、チェック番号や修正ＩＤに、ソフトウェア製品の識別情報及びコンポーネントの識別情報が含まれるようにしてもよい。
【００６６】
なお、本実施の形態において、実行履歴記憶部１３は、記憶部の一例である。適用判定部１２３は、判定部の一例である。情報処理装置１０は、適用判定装置の一例である。モジュールは、実行ファイルの一例である。修正モジュールは、修正ファイルの一例である。
【００６７】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００６８】
以上の説明に関し、更に以下の項を開示する。
（付記１）
実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶部に記憶し、
前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
処理をコンピュータに実行させる修正ファイルの適用判定プログラム。
（付記２）
前記記憶する処理は、前記実行ファイルに含まれる複数のプログラムについてそれぞれの実行回数を前記記憶部に記憶し、
前記判定する処理は、前記一部のプログラムについての実行回数として、所定回数以上の実行回数が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする付記１記載の適用判定プログラム。
（付記３）
前記記憶する処理は、前記実行ファイルごとの実行履歴を前記記憶部に記憶し、
前記実行ファイルについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする付記１又は２記載の適用判定プログラム。
（付記４）
前記判定する処理は、第一のプログラムから呼び出される第二のプログラム及び第三のプログラムのうち、前記第二のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されており、前記第三のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されてない場合に、前記第三のプログラムについて修正された修正ファイルを、前記第一のプログラム、前記第二のプログラム、及び前記第三のプログラムを含む実行ファイルに適用すると判定する、
ことを特徴とする付記１乃至３いずれか一項記載の適用判定プログラム。
（付記５）
前記記憶する処理は、複数の実行ファイルに含まれる複数のプログラムのそれぞれの実行履歴を前記記憶部に記憶し、
前記判定する処理は、複数の実行ファイルのそれぞれに対する複数の修正ファイルのうち、実行されたことを示す実行履歴が前記記憶部に記憶されているプログラムを含む実行ファイルに対応する修正ファイルについて、適用すると判定する、
ことを特徴とする付記１乃至４いずれか一項記載の適用判定プログラム。
（付記６）
実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶部に記憶し、
前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
処理をコンピュータが実行することを特徴とする修正ファイルの適用判定方法。
（付記７）
前記記憶する処理は、前記実行ファイルに含まれる複数のプログラムについてそれぞれの実行回数を前記記憶部に記憶し、
前記判定する処理は、前記一部のプログラムについての実行回数として、所定回数以上の実行回数が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする付記６記載の適用判定方法。
（付記８）
前記記憶する処理は、前記実行ファイルごとの実行履歴を前記記憶部に記憶し、
前記実行ファイルについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする付記６又は７記載の適用判定方法。
（付記９）
前記判定する処理は、第一のプログラムから呼び出される第二のプログラム及び第三のプログラムのうち、前記第二のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されており、前記第三のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されてない場合に、前記第三のプログラムについて修正された修正ファイルを、前記第一のプログラム、前記第二のプログラム、及び前記第三のプログラムを含む実行ファイルに適用すると判定する、
ことを特徴とする付記６乃至８いずれか一項記載の適用判定方法。
（付記１０）
前記記憶する処理は、複数の実行ファイルに含まれる複数のプログラムのそれぞれの実行履歴を前記記憶部に記憶し、
前記判定する処理は、複数の実行ファイルのそれぞれに対する複数の修正ファイルのうち、実行されたことを示す実行履歴が前記記憶部に記憶されているプログラムを含む実行ファイルに対応する修正ファイルについて、適用すると判定する、
ことを特徴とする付記６乃至９いずれか一項記載の適用判定方法。
（付記１１）
実行ファイルに含まれる複数のプログラムについてそれぞれの実行履歴を記憶する記憶部と、
前記実行ファイルの修正に用いられる修正ファイルの適用により、前記実行ファイルに含まれる前記複数のプログラムのうち一部のプログラムが変更される場合に、該一部のプログラムについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する判定部と、
を有することを特徴とする修正ファイルの適用判定装置。
（付記１２）
前記記憶部は、前記実行ファイルに含まれる複数のプログラムについてそれぞれの実行回数を前記記憶部に記憶し、
前記判定部は、前記一部のプログラムについての実行回数として、所定回数以上の実行回数が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする付記１１記載の適用判定装置。
（付記１３）
前記記憶部は、前記実行ファイルごとの実行履歴を前記記憶部に記憶し、
前記実行ファイルについての実行履歴として、所定の条件に合致する実行履歴が前記記憶部に記憶されているか否かに応じて前記修正ファイルを適用するか否かを判定する、
ことを特徴とする付記１１又は１２記載の適用判定装置。
（付記１４）
前記判定部は、第一のプログラムから呼び出される第二のプログラム及び第三のプログラムのうち、前記第二のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されており、前記第三のプログラムが実行されたことを示す実行履歴が前記記憶部に記憶されてない場合に、前記第三のプログラムについて修正された修正ファイルを、前記第一のプログラム、前記第二のプログラム、及び前記第三のプログラムを含む実行ファイルに適用すると判定する、
ことを特徴とする付記１１乃至１３いずれか一項記載の適用判定装置。
（付記１５）
前記記憶部は、複数の実行ファイルに含まれる複数のプログラムのそれぞれの実行履歴を前記記憶部に記憶し、
前記判定部は、複数の実行ファイルのそれぞれに対する複数の修正ファイルのうち、実行されたことを示す実行履歴が前記記憶部に記憶されているプログラムを含む実行ファイルに対応する修正ファイルについて、適用すると判定する、
ことを特徴とする付記１１乃至１４いずれか一項記載の適用判定装置。
【符号の説明】
【００６９】
１０          情報処理装置
１１          実行履歴書込部
１２          パッチ処理部
１３          実行履歴記憶部
１４          インストール情報記憶部
２０          パッチ管理サーバ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１２１        照会部
１２２        適用情報取得部
１２３        適用判定部
１２４        修正モジュール取得部
１２５        修正モジュール適用部
Ｂ            バス
【図１】
2015197841.tif 000003
【図２】
2015197841.tif 000004
【図３】
2015197841.tif 000005
【図４】
2015197841.tif 000006
【図５】
2015197841.tif 000007
【図６】
2015197841.tif 000008
【図７】
2015197841.tif 000009