(57)【要約】【課題】修正パッチの選択をソフトウェアや修正箇所の稼動状況に応じて支援する。【解決手段】ソフトウェア120に適用する修正パッチ100を入力装置10より入力し、修正個所の修正要素名、修正位置、修正内容の組で表される修正情報を取得し、パッチ毎に修正要素名と修正位置との組による修正位置情報をパッチ情報テーブル121に登録するパッチ情報取得部110と、パッチ情報テーブル121からソフトウェア120の修正位置情報で示される挿入アドレスを計算してパッチ情報テーブル121に登録後、該当位置に稼動情報取得部112の呼び出し処理を挿入し、稼動情報の取得開始、終了を制御する稼動情報取得処理挿入部111と、稼動情報取得部112によって作成された稼動情報テーブル122と、パッチ情報テーブル121とから修正位置毎の稼働率と重要度を計算し、修正パッチ毎の重要度を示す修正重要度情報テーブル123を作成し、出力装置13に出力する。【選択図】図１
2008198001.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて利用されるソフトウェアに適用する修正パッチの選択を支援する修正パッチ選択支援システムにおいて、
入力された個々の修正パッチからパッチ名、修正対象のソフトウェアを構成する個々の要素の修正要素名及び修正位置からなる修正位置情報を取得し、パッチ情報を生成するパッチ情報取得手段と、
生成したパッチ情報からソフトウェアの修正位置情報で示される修正予定箇所に、稼動情報を取得する稼働情報取得手段を呼び出す処理を挿入し、稼動情報の取得の開始、終了を制御する稼働情報取得処理挿入手段と、
前記パッチ情報、稼動情報から修正位置、修正パッチ毎の稼働率と重要度とを計算し、その結果を出力する修正重要度計算手段とを前記コンピュータシステムに備えたことを特徴とする修正パッチ選択支援システム。
【請求項２】
前記稼働情報取得手段は、前記ソフトウェアの稼動時に、前記修正予定箇所に挿入された稼働情報取得手段を呼び出す処理を契機に動作し、前記ソフトウェアの稼動情報を取得することを特徴とする請求項１記載の修正パッチ選択支援システム。
【請求項３】
コンピュータシステムにおいて利用されるソフトウェアに適用する修正パッチの選択を支援する修正パッチ選択支援方法において、
パッチ情報取得手段と、稼働情報取得処理挿入手段と、稼働情報取得手段と、修正重要度計算手段とを前記コンピュータシステムに備え、
前記パッチ情報取得手段は、入力された個々の修正パッチからパッチ名、修正対象のソフトウェアを構成する個々の要素の修正要素名及び修正位置からなる修正位置情報を取得し、パッチ情報を生成し、
前記稼働情報取得処理挿入手段は、生成したパッチ情報からソフトウェアの修正位置情報で示される修正予定箇所に、稼動情報を取得する稼働情報取得手段を呼び出す処理を挿入し、稼動情報の取得の開始、終了を制御し、
前記修正重要度計算手段は、前記パッチ情報、稼動情報から修正位置、修正パッチ毎の稼働率と重要度とを計算し、その結果を出力することを特徴とする修正パッチ選択支援方法。
【請求項４】
前記稼働情報取得手段は、前記ソフトウェアの稼動時に、前記修正予定箇所に挿入された稼働情報取得手段を呼び出す処理を契機に動作し、前記ソフトウェアの稼動情報を取得することを特徴とする請求項３記載の修正パッチ選択支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、修正パッチ選択支援システム及び支援方法に係り、特に、コンピュータシステムにおいて利用されるソフトウェアの予防保守を行う際に適用する修正パッチの選択を支援する修正パッチ選択支援システム及び支援方法に関する。
【背景技術】
【０００２】
コンピュータ上のソフトウェアを安定に稼動させるためには、ソフトウェアに対する修正パッチを適宜対策する必要がある。そして、ミッションクリティカルなコンピュータシステムに対する修正パッチの対策は、対策時のトラブルを防止するために、事前に適用するパッチを選択して行われることが多い。しかし、近年、コンピュータのシステム構成の多様化により、システムで利用されるソフトウェア数が増加し、修正パッチ量も増加の傾向にあるため、修正パッチの選択に伴う作業量が増大している。
【０００３】
前述したような修正パッチの選択に伴う作業量の増大に対して、修正パッチ選択の支援を行う技術が、例えば、特許文献１等に記載されて知られている。この従来技術は、コンピュータシステムの構成情報をデータベースに登録し、その情報に基づいて対策する修正パッチを選択するための情報を提供することができるようにしたものである。また、他の従来技術として、修正パッチそれ自体に設定された重要度から修正パッチを選択するという方法も知られている。これらの方法は、いずれも、コンピュータシステムで利用されるソフトウェアの稼動状況と連動しない情報を用いて修正パッチの選択を行っているものである。
【特許文献１】特開２００５−９９９６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前述した従来技術は、ソフトウェアの修正箇所の稼動状況に応じた情報を提供していないため、稼働率が低いソフトウェアやコンピュータシステムの使用状況では動作しない箇所のソフトウェアに対する修正パッチの対策を除外することができず、逆に、稼動率は高いが修正パッチに与えられた重要度が低い修正パッチが対策されない等、コンピュータシステムの稼動状況に応じた修正パッチの選択を支援することができないという問題点を有している。
【０００５】
本発明の目的は、前述したような従来技術の問題点を解決し、ソフトウェアの修正箇所の稼動状況に連動したデータを取得して、コンピュータシステムの使用状況に基づいて最適に修正パッチの選択を行うことを支援することができるようにした修正パッチ選択支援システム及び支援方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明によれば前記目的は、コンピュータシステムにおいて利用されるソフトウェアに適用する修正パッチの選択を支援する修正パッチ選択支援システムにおいて、入力された個々の修正パッチからパッチ名、修正対象のソフトウェアを構成する個々の要素の修正要素名及び修正位置からなる修正位置情報を取得し、パッチ情報を生成するパッチ情報取得手段と、生成したパッチ情報からソフトウェアの修正位置情報で示される修正予定箇所に、稼動情報を取得する稼働情報取得手段を呼び出す処理を挿入し、稼動情報の取得の開始、終了を制御する稼働情報取得処理挿入手段と、前記パッチ情報、稼動情報から修正位置、修正パッチ毎の稼働率と重要度とを計算し、その結果を出力する修正重要度計算手段とを前記コンピュータシステムに備えたことにより達成される。
【発明の効果】
【０００７】
本発明によれば、コンピュータシステムの稼動情報から、修正個所の稼動状況に基づいて修正パッチの重要度を自動的に計算することができるため、コンピュータシステムの利用状況に則した最適な修正パッチの選択を支援することができるので、ユーザは、ソフトウェアに対して最適な修正パッチを施すことが可能となる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明による修正パッチ選択支援システム及び支援方法の実施形態を図面により詳細に説明する。
【０００９】
図１は本発明の一実施形態による修正パッチ選択支援システムが構築されるコンピュータシステムの構成を示すブロック図である。図示コンピュータシステムは、パッチされるソフトウェアを有して、そのソフトウェアを用いて処理を行うコンピュータシステムであってよい。
【００１０】
図示コンピュータシステム１は、ＰＣに代表される情報処理装置であり、入力装置１０と、ＣＰＵ１１と、主記憶装置１２と、出力装置１３と、ＨＤＤ１５とを備え、これらがバス１４を介して接続されて構成されている。そして、主記憶装置１２には、ＯＳ１１４、コンピュータシステム１上で動作しているソフトウェア１２０が格納されていると共に、本発明により設けられるパッチ情報取得部１１０、稼働情報取得出力挿入部１１１、稼働情報取得部１１２、修正重要度計算部１１３等を実現するプログラム、及び、パッチ情報テーブル１２１、稼働情報テーブル１２２、修正重要度情報テーブル１２３が格納されている。前述したプログラムは、磁気ディスク等により構成される外部記憶装置としてのＨＤＤ１５に格納されていて、主記憶装置１２にロードされ、ＯＳ１１４の下で実行されることにより、対応する各機能を実現する。また、前述した各テーブルは、前述の各機能部により作成される。
【００１１】
前述したように構成される本発明の実施形態において、コンピュータシステム１の記憶装置１２上で動作しているソフトウェア１２０に適用する修正パッチ１００は、その修正パッチを選択する際に、入力装置１０から入力される。修正パッチ１００は、ソフトウェア１２０の開発者等から記録媒体あるいは図示しないネットワークを介して提供され、入力装置１０から入力される。
【００１２】
そして、パッチ情報取得部１１０は、入力された修正パッチ１００から個々の修正個所の修正要素名、修正位置、及び、修正内容の組で表される修正情報を取得し、パッチ毎に得られた修正要素名と修正位置との組で表される修正位置情報をパッチ情報テーブル１２１に登録する。稼動情報取得処理挿入部１１１は、作成されたパッチ情報テーブル１２１内のソフトウェア１２０の修正位置情報から挿入アドレスを計算し、その挿入アドレスをパッチ情報テーブル１２１に登録後、該当位置に稼動情報取得部１１２の呼び出し処理を挿入し、また、稼動情報の取得開始、終了を制御する。稼動情報取得部１１２は、稼働情報テーブル１２２を作成し、修正位置毎の稼働情報を取得し、その稼働情報を稼働情報テーブル１２２に格納する。また、修正重要度計算部１１３は、稼動情報取得部１１２によって作成された修正位置毎の稼動データを記録する稼動情報テーブル１２２と、作成されたパッチ情報テーブル１２１との内容により修正位置毎の稼働率と重要度とを計算し、それに基づいて修正パッチ毎の重要度を示す修正重要度情報テーブル１２３を作成し、その内容を表示装置、印刷装置等による出力装置１３に出力する。
【００１３】
パッチ情報テーブル１２１、稼動情報テーブル１２２、修正重要度情報テーブル１２３は、主記憶装置１２上に作成され、ＣＰＵ１１に制御されてＯＳ１１４上で動作するパッチ情報取得部１１０、稼動情報取得処理挿入部１１１、稼動情報取得部１１２、修正重要度計算部１１３によって作成、更新、または、参照される。
【００１４】
図２はソフトウェア１２０と修正パッチ１００との関係例について説明する図である。
【００１５】
ソフトウェア１２０は、複数の要素の集合で構成され、複数の要素の個々の要素は、要素名を持つ。図示例において、ソフトウェア１２０は、要素Ａ２０１、要素Ｂ２０２の２つの要素により構成されている。
【００１６】
修正パッチ１００は、ソフトウェア１２０を構成する個々の要素の中で修正を行う要素の要素名を示す修正要素名と修正要素の先頭からの変位で表される修正位置とからなる修正位置情報とその位置に対策される修正内容とにより構成される。修正情報は、修正要素名、修正位置、修正内容の順に記録されている。修正位置は、修正要素名の次のデータに記録されている。修正要素名、修正位置を示す情報としてユニークな識別子が設定されている。図２に示す例では、修正要素名を示す識別子をＴＡＧ１、修正位置を示す識別子をＴＡＧ２と表している。修正パッチ１００には複数の修正情報が存在し得る。すなわち、同一の修正要素に対する異なる修正情報が同一の修正パッチ、または、複数の修正パッチに含まれていることがある。図２に示す例の場合、修正パッチ１００は、修正パッチＡ２１、修正パッチＢ２３の２つの修正パッチにより構成されている。
【００１７】
修正パッチＡ２１は、ソフトウェア１２０の要素Ａ２０１に対する修正情報Ａ１（２１０）、修正情報Ａ２（２１８）と、ソフトウェア１２０の要素Ｂ２０２に対する修正情報Ｂ１（２１４）とが含まれている。また、修正情報Ａ１（２１０）は、修正情報として、修正要素名２１１と修正位置２１２と修正内容２１３とを含んで構成される。修正情報Ａ２（２１８）は、修正情報として修正要素名２１９と修正位置２２０と修正内容２２１とを含んで構成される。修正情報Ｂ１（２１４）は、修正情報として、修正要素名２１５と修正位置２１６と修正内容２１７とを含んで構成される。
【００１８】
また、修正パッチＢ２３に含まれるソフトウェア１２０の要素Ｂ２０２に対する修正情報Ｂ２（２３１）は、修正情報として修正要素名２３２と修正位置２３３と修正内容２３４とを含んで構成される。
【００１９】
図２に示す例において、ソフトウェア１２０を構成する要素Ａ２０１、要素Ｂ２０２の先頭アドレスＸ、Ｙは、各要素が格納されている主記憶装置１２の先頭アドレスを表しており、このアドレスは、要素名を入力することによりＯＳ１１４によって取得することができる。
【００２０】
修正パッチＡ２１の修正情報Ａ１（２１０）は、修正要素名２１１が要素Ａ２０１、修正位置が＋１０００番地となっているため、修正要素名Ａ２０１の先頭アドレスＸ番地をＯＳから求め、＋１０００番地目のアドレス＝Ｘ＋１０００番地に、修正内容Ａ１（２１３）が対策される。同様に、修正情報Ａ２（２１８）は、修正要素名Ａ２０１の先頭アドレスＸ番地から＋１１００番地目のアドレス＝Ｘ＋１１００番地に、修正内容Ａ２（２２１）が対策される。同様に、要素Ｂ２０２に対しても、修正パッチＡ２１の修正情報Ｂ１（２１４）から、修正要素名Ｂ２０２の先頭アドレスＹ番地から＋１００番地目のアドレス＝Ｙ＋１００番地に、修正内容Ｂ１（２１７）が対策される。同様に、修正パッチＢ２３の修正情報Ｂ２（２３１）から、修正要素名Ｂ２０２の先頭アドレスＹ番地から＋３００番地目＝Ｙ＋３００番地に、修正内容Ｂ２（２３４）が対策される。
【００２１】
図３はパッチ情報取得部１１０での処理動作を説明するフローチャート、図４は図３に示す処理によって生成されるパッチ情報テーブル１２１の構成例を示す図である。図３に示す処理は、パッチ情報取得部１１０が、図２で説明した修正パッチ１００の構成に基づいて修正パッチ名を取得し、パッチ情報テーブル１２１に登録し、取得した個々の修正パッチの修正情報をパッチ情報テーブル１２１に登録し、また、修正パッチ１００の修正位置毎の稼動情報を後述する稼動情報取得部１１２での処理で取得するために必要な修正位置情報を修正パッチから取得する処理である。
【００２２】
まず、図４を参照してパッチ情報テーブル１２１の構成例について説明する。パッチ情報テーブル１２１は、修正パッチ１００の名称を登録する修正パッチ名４００と、そのパッチに含まれる修正要素名及び修正位置からなる修正位置情報４０１と、後述の処理で使用する挿入アドレス４０２と、稼動情報取得開始時刻４０３と、稼動情報取得終了時刻４０４とを１組のレコードとして構成される。修正位置情報４０１及び挿入アドレス４０２は、対応する修正パッチ毎に作成される。
【００２３】
次に、図３に示すフローを参照してパッチ情報取得部１１０での処理動作を説明する。
【００２４】
（１）修正パッチ１００は複数存在し得るため、パッチ情報取得部１１０は、図１に示す入力装置１０から該当する修正パッチ名を順に入力し、修正パッチ名の入力が完了したか否かを判定し、完了した場合、ここでの処理を終了する（ステップ３００、３０１）。
【００２５】
（２）ステップ３０１の判定で、修正パッチ名の入力が完了していなかった場合、入力される修正パッチ名を、図４に示したパッチ情報テーブル１２１の修正パッチ名４００の欄に登録する（ステップ３０２）。
【００２６】
（３）次に、修正パッチに含まれる複数の修正位置情報（修正位置情報と修正内容とを含む）からなるパッチ情報を図１で示す入力装置１０から入力し、修正パッチ情報の入力が完了したか否かを判定し、修正パッチ情報の入力が完了していた場合、ステップ３００からの処理に戻って次の修正パッチの入力処理からの処理を繰り返す（ステップ３０３、３０４）。
【００２７】
（４）ステップ３０４の判定で、修正パッチの入力が完了していなかった場合、ステップ３０３の処理で入力された修正要素名に対応する識別子が含まれているか否かを判定し、入力データに識別子が含まれていなかった場合、ステップ３０３からの処理に戻って該当する修正パッチの入力処理からの処理を繰り返す（ステップ３０５）。
【００２８】
（５）ステップ３０５の判定で、入力された修正要素名に対応する識別子が含まれていることを検出した場合、入力データから修正要素名を取得し、次のデータを入力して、そのデータから修正位置を取得する（ステップ３０６、３０７）。
【００２９】
（６）次に、パッチ情報テーブル１２１の修正パッチ名に対応する修正位置情報４０１の欄に、先に求めた修正要素名と修正位置情報とを登録し、以上の処理が完了した時点で、ステップ３０３からの処理に戻って該当する修正パッチの入力処理からの処理を繰り返す（ステップ３０８）。
【００３０】
前述したようなパッチ情報取得部１１０での処理により、図４に示したパッチ情報テーブル１２１の修正パッチ名４００の欄、修正位置情報４０１の欄への登録が行われることになる。
【００３１】
図５は稼動情報取得処理挿入部１１１での処理動作を説明するフローチャートであり、次に、これについて説明する。この処理は、図３に示すフローによる処理で作成したパッチ情報テーブル１２１の修正位置情報４０１に基づいて対象ソフトウェアの稼動情報を取得する処理を登録する挿入アドレスを計算し、その位置に稼動情報取得部１１２の呼び出し処理を挿入し、また、対象ソフトウェアの主記憶装置１２への読み込みや実行開始、終了を制御することにより修正位置毎の稼動情報の取得を制御する処理である。
【００３２】
（１）まず、稼動情報取得処理挿入部１１１は、対象のソフトウェア１２０が既に主記憶装置１２上に存在するか否か、すなわち、対象のソフトウェア１２０が動作中であるか否かを判定する（ステップ５００）。
【００３３】
（２）ステップ５００の判定で、対象のソフトウェア１２０が記憶装置１２上に存在していた場合、当該ソフトウェア１２０の実行を終了させ、主記憶装置１２上からそのソフトウェア１２０を消去する（ステップ５０１）。
【００３４】
（３）ステップ５００の判定で、対象のソフトウェア１２０が記憶装置１２上に存在しなかった場合、あるいは、ステップ５０１の処理で、そのソフトウェア１２０を主記憶装置１２から消去した後、対象のソフトウェア１２０を主記憶装置１２に読み込む（ステップ５０２）。
【００３５】
（４）次に、後述の処理で作成する稼動情報テーブル１２２が既に存在するか否かを判定し、存在する場合、この稼動情報テーブル１２２の全ての情報を消去して初期化する（ステップ５０３、５０４）。
【００３６】
（５）ステップ５０３の判定で、稼動情報テーブル１２２が存在しなかった場合、あるいは、ステップ５０４の処理で、当該テーブルを初期化した後、図３に示す処理で作成したパッチ情報テーブル１２１から修正位置情報４０１を順に入力し、入力が完了したか否かを判定する（ステップ５０５、５０６）。
【００３７】
（６）ステップ５０６の判定で、修正位置情報４０１の全ての入力が完了していなかった場合、ステップ５０５の処理で入力された修正位置情報４０１から対応するソフトウェア１２０の修正個所を示すアドレスである修正アドレスを計算するため、修正位置情報４０１内の修正要素名の先頭アドレスをＯＳ１１４から求める（ステップ５０７）。
【００３８】
（７）次に、ステップ５０７の処理で求めた修正要素名の先頭アドレスの値に、修正位置を加算することにより挿入アドレスを決定し、その内容をパッチ情報テーブル１２１の挿入アドレスの欄４０２に登録する（ステップ５０８）。
【００３９】
（８）ステップ５０８の処理で決定した挿入アドレスで示されるソフトウェア１２０の該当位置に稼動情報取得部１１２の呼び出し処理を挿入する。説明している本発明の実施形態では、この挿入処理はＯＳの機能を用いて実現しており、この機能は、修正アドレスで示す位置のソフトウェア１２０の処理を改変せずに処理を挿入することができる。以上の挿入処理が完了した時点で、ステップ５０５からの処理に戻って次の修正位置情報の入力処理からの処理を繰り返す（ステップ５０９）。
【００４０】
（９）ステップ５０６の判定で、修正位置情報４０１の全ての入力が完了した場合、すなわち、全ての修正位置情報の入力と、稼動情報取得部の呼び出し処理の挿入とが完了した場合、パッチ情報テーブル１２１の稼動情報取得開始時間４０３の欄に現在の時刻を設定し、その後、対象ソフトウェア１２０を実行させ、その終了を待つ（ステップ５１０〜５１２）。
【００４１】
（10）ソフトウェア１２０が終了した場合、稼動情報取得処理挿入部１１１は、ステップ５１２でのソフトウェア実行完了待ちの処理を終了する。その後、パッチ情報テーブル１２１の稼動情報取得終了時刻４０４の欄に現在の時間を設定する。以上の処理を完了した段階で、稼動情報取得処理挿入部１１１は処理を終了する（ステップ５１３）。
【００４２】
図６は稼動情報取得部１１２での処理動作を説明するフローチャート、図７は図６に示す稼動情報取得部１１２の処理によって生成される稼動情報テーブル１２２の構成例を示す図である。図６に示す処理は、対象ソフトウェア１２０に挿入した稼動情報取得部１１２の呼び出し処理を経由して起動される稼動情報取得部１１２が修正位置毎の稼動情報を、対象ソフトウェア１２０の稼動状況に基づいて取得する処理である。このため、稼動情報取得部１１２は、対象ソフトウェア１２０が処理を終了するまでの間に何回でも起動されることになる。説明する例では、稼動情報取得部１１２は、１秒間に複数回起動されるものとしている。
【００４３】
まず、図７を参照して、稼動情報取得部１１２の処理によって生成される稼動情報テーブルの構成について説明する。稼動情報テーブル１２２は、図７に示すように、挿入アドレス４０２で表される修正位置毎の稼動情報として、最終実行時刻７００と、稼働時間７０１との組を１つのレコードとして保持するテーブルである。最終実行時刻７００は、挿入アドレス４０２に対応する修正位置が最後に稼動した際の時刻を１秒単位に保持している。稼働時間７０１は、修正個所が動作した時間を１秒単位に保持している。この稼動時間７０１は、該当の修正位置に対応する稼動情報取得部１１２が毎秒１回以上呼び出された場合、１秒単位に加算される。
【００４４】
次に、図６に示すフローを参照して稼動情報取得部１１２での処理動作を説明する。
【００４５】
（１）稼動情報取得処理挿入部１１１での図５により説明したステップ５１１のソフトウェアの実行開始処理によって対象ソフトウェア１２０が実行を開始すると、稼動情報取得部１１２の呼び出し処理を挿入した修正個所を通過する毎に稼動情報取得部１１２が動作し、稼動情報取得部１１２は、呼び出し時の呼び出し元アドレスを、ソフトウェアへの挿入アドレス４０２を設定する際に利用したＯＳの該当機能により求める。ここで求めた呼び出し元アドレスは、パッチ情報テーブル１２１、及び、稼動情報テーブル１２２に登録される挿入アドレス４０２と等価である（ステップ６００）。
【００４６】
（２）次に、呼び出しアドレスと一致する稼動情報テーブル１２２を検索し、該当するレコードが存在するか否かを判定する。このとき、該当するテーブルが存在しなかった場合、稼働情報テーブル１２２を新たに作成し、作成した稼働情報テーブル１２２に新たなレコードを作成して、最終実行時刻７００の欄に０を設定する（ステップ６０１〜６０４）。
【００４７】
（３）ステップ６０２の判定で、稼動情報テーブル１２２が存在した場合、あるいは、ステップ６０４の処理で当該テーブルを生成した場合、該当する稼動情報テーブル１２２から最終実行時刻７００を求め、次に、稼動情報取得部１１２が呼び出された時刻を取得する（ステップ６０５、６０６）。
【００４８】
（４）次に、稼動情報取得部１１２が呼び出された時刻と、先に求めた最終実行時刻７００との差の時間が１秒を越えているか否かを判定し、超えていなかった場合、ここでの処理を終了する（ステップ６０７）。
【００４９】
（５）ステップ６０７の判定で、稼動情報取得部１１２が呼び出された時刻と、先に求めた最終実行時刻７００との差の時間が１秒を越えていた場合、最終実行時刻７００を呼び出された時刻に更新し、稼動時間７０１に１秒を加算して、ここでの処理を終了する。以上の処理がソフトウェア１２０の実行終了まで、稼動情報取得部１１２が呼び出される毎に繰り返される（ステップ６０８、６０９）。
【００５０】
図８は修正重要度計算部１１３での処理動作を説明するフローチャート、図９は修正重要度計算部１１３の処理によって作成される修正重要度情報テーブル１２３の構成例を示す図、図１０は修正重要度計算部１１３がパッチ毎の重要度を決定するために用いる修正重要度テーブル１０００の構成例を示す図である。図８に示す処理は、パッチの重要度を設定するため、稼動情報テーブル１２２に格納されている修正パッチ毎の各修正個所の稼動時間から稼動率と重要度とを計算し、それらの重要度のうち最も高いものから該当する修正パッチの重要度９００を設定する処理である。
【００５１】
修正重要度計算部１１３がパッチ毎の重要度を決定するために用いる修正重要度テーブル１０００には、図１０に示すように、パッチにより修正される箇所の稼働率１００１に対応した５段階の重要度９００が設定されており、修正重要度計算部１１３は、この修正重要度テーブル１０００の内容により、図９に示すような修正パッチ名４００毎に重要度９００を対応させたレコードを持つ修正重要度情報テーブル１２３を作成する。
【００５２】
次に、図８に示すフローを参照して、修正重要度計算部１１３での処理動作を説明する。
【００５３】
（１）修正重要度計算部１１３は、パッチ情報テーブル１２１を入力し、入力が完了したか否か判定し、完了していた場合、後述する修正重要度情報テーブル１２３の作成が終了したとして、修正重要度情報テーブル１２３を出力装置に出力して処理を終了する（ステップ８００、８０１、８１３）。
【００５４】
（２）ステップ８０１の判定で、パッチ情報テーブル１２１の入力が完了していなかった場合、入力したパッチ情報テーブル１２１から修正パッチ名を求め、求めたパッチの重要度の初期値として１を設定する（ステップ８０２、８０３）。
【００５５】
（３）次に、当該修正パッチ名で登録された挿入アドレス４０２をパッチ情報テーブル１２１から順に入力し、入力が完了したか否かを判定する（ステップ８０４、８０５）。
【００５６】
（４）ステップ８０５の判定で、挿入アドレス４０２の入力を完了していた場合、重要度の算出が終了したものとして、修正パッチ名と重要度とを修正重要度情報テーブル１２３に登録し、その後、ステップ８００からの処理に戻って処理を繰り返す（ステップ８１２）。
【００５７】
（５）ステップ８０５の判定で、挿入アドレス４０２の入力が完了していなかった場合、入力された挿入アドレス４０２と一致する稼動情報テーブル１２２の情報を入力し、入力が完了したか否かを判定し、稼動情報テーブル１２２の情報の入力が完了していなかった場合、次の挿入アドレス４０２を入力するステップ８０４からの処理に戻って処理を繰り返す（ステップ８０６、８０７）。
【００５８】
（６）ステップ８０７の判定で、稼動情報テーブル１２２の情報が入力された場合、当該稼働情報テーブル１２２から登録された修正箇所の稼動時間７０１を取得し、取得した稼動時間７０１から修正箇所の稼働率を計算する。稼働率は、パッチ情報テーブル１２１の稼動情報取得終了時刻４０４に記録された時刻からパッチ情報テーブル１２１の稼動情報取得開始時刻４０３に記録された時刻を引いたソフトウェア１２０全体の実働時間を算出し、稼働時間／実働時間の計算を行うことにより算出する（ステップ８０８、８０９）。
【００５９】
（７）次に、算出した稼働率と修正重要度テーブル１０００に定義された稼働率１００１の範囲とを比較し、一致する重要度を求め、求めた重要度と修正パッチの重要度９００とを比較し、修正パッチの重要度が小さい場合、修正パッチの重要度を先に計算した重要度に更新し、パッチ名に対応する挿入アドレス４０２を入力するステップ８０４からの処理に戻って処理を繰り返す（ステップ８１０、８１１）。
【００６０】
前述した処理において、修正パッチの重要度９００は、重要度１で初期化されているため、前述した処理での判定と重要度の更新とを繰り返すことにより、修正パッチに含まれる修正情報の中で最も稼働率が高い修正情報の重要度が登録される。対応する全ての挿入アドレス４０２に対する処理が完了した場合、前述で説明したように、ステップ８１２の処理で、設定した重要度と該当修正パッチ名とが修正重要度情報テーブル１２３に登録される。前述の処理で全ての修正パッチの重要度を修正重要度情報テーブル１２３に登録した時点で、修正重要度情報テーブル１２３の内容は、前述で説明したように、ステップ８１３の処理で、図１で説明した出力装置１３に出力される。
【００６１】
次に、前述までに説明した本発明の実施形態での一連の処理をまとめて具体的に説明する。
【００６２】
ベンダから提供された修正パッチ１００は、入力装置１０を通してコンピュータシステム１に取り込まれる。ここで、修正パッチ１００は、修正パッチＡ２１、修正パッチＢ２３等の複数のパッチから構成されるパッチ群である。このような修正パッチが入力されると、まず、パッチ情報取得部１１０は、図３により説明したフローに示す処理に従い、最初の修正パッチ名として、修正パッチＡ２１を取り込む。ここで、パッチ情報取得部１１０は、修正パッチ名が入力されたか否かを判断し、今回は入力があるため次の処理へ進む。修正パッチ名として、修正パッチＡ２１が入力されると、パッチ情報テーブル１２１の修正パッチ名４００の欄に修正パッチＡ２１が登録される。
【００６３】
次に、パッチ情報取得部１１０は、修正パッチＡ２１の中から修正要素名を表す識別子を検索する。ここでは、修正要素２１１に要素Ａ２０１を表す識別子が含まれているため、修正要素名として要素Ａ２０１が取得される。次に、修正パッチＡ２１から修正要素に続くデータを読み込むことにより、修正位置（＋１０００番地）（２１２）が取得される。取得した情報を、パッチ情報テーブル１２１の修正パッチＡ２１に対応する修正位置情報４０１の欄に、要素Ａ２０１、修正位置（＋１０００番地）（２１２）として登録する。修正パッチＡ２１を続けて検索すると、識別子としての修正要素名として要素Ｂ２１５が得られる。パッチから続けてデータを入力すると修正位置（＋１００番地）（２１６）が得られる。これにより取得した情報を、パッチ情報テーブル１２１の修正パッチＡ２１に対応する修正位置情報４０１の欄に、要素Ｂ２０２、修正位置（＋１００番地）（２１６）として登録する。以上の処理をパッチに識別子がある間、さらに全ての修正パッチ１００について繰り返すことにより、パッチに含まれる修正位置情報をパッチ情報テーブル１２１に登録し、パッチ情報テーブル１２１が完成する。
【００６４】
パッチ情報テーブル１２１が完成すると、次に、稼動情報処理挿入部１１１により図５に示すフローの処理が実行される。
【００６５】
稼動情報取得処理挿入部１１１は、前述のようにソフトウェア１２０に対して、パッチ情報テーブル１２１に登録されたパッチ毎の修正情報で示される修正位置に、稼動情報を取得するための処理を挿入し、ソフトウェア１２０の実行を行う。
【００６６】
まず、対象ソフトウェア１２０が主記憶装置１２中に存在して動作中であるか否かを判断する。ここでは主記憶装置１２中にソフトウェア１２０が存在しなかったとして、対象ソフトウェア１２０の読み込み処理に進む。次に、それまでの処理で作成した稼動情報テーブル１２２が存在するか否かを判断する。ここでは存在しなかったとする。
【００６７】
以上の初期化処理が終わると、次に、稼動情報取得処理挿入部１１１は、パッチ情報テーブル１２１から修正パッチの修正位置情報４０１を順に読み込んでいく。まず、修正位置情報４０１を入力すると、修正要素名として要素Ａ２１１、修正位置として＋１０００番地（２１２）の組で表される修正情報が入力される。ここで、ＯＳの機能から修正要素名の先頭アドレスＸを取得する。先頭アドレスＸと修正位置（＋１０００番地）（２１２）とから、挿入アドレスＸ＋１０００番地が得られる。得られたアドレスに、ＯＳの機能を用いて稼動情報取得部１１２の呼び出し処理を挿入する。
【００６８】
次に、稼動情報取得処理挿入部１１１は、パッチ情報テーブル１２１から新たな修正位置情報４０１を入力し、修正要素名として要素Ｂ２１５、修正位置として＋１００番地（２１６）の組で表される修正情報が入力される。ここでも同様に、ＯＳの機能から修正要素名の先頭アドレスＹを取得する。先頭アドレスＹと修正位置（＋１００番地）（２１６）とから、挿入アドレスＹ＋１００番地が得られる。得られたアドレスに、ＯＳの機能を用いて稼動情報取得部１１２の呼び出し処理を挿入する。
【００６９】
以上の処理をパッチ情報テーブル１２１の全ての修正位置情報に対して実施することにより、全ての修正パッチの修正個所に稼動情報取得部１１２の呼び出し処理を挿入することができる。
【００７０】
稼動情報取得部１１２の呼び出し処理の挿入が完了すると、パッチ情報テーブル１２１の稼動情報取得開始時刻４０３の欄に現在時刻としてｘｘ年ｙｙ月ｚｚ日００時００分００秒を記憶し、対象ソフトウェア１２０の実行を開始する。ソフトウェア１２０の実行が開始されると、稼動情報取得処理挿入部１１１は待ち状態となり、対象ソフトウェア１２０の終了を監視し、ソフトウェアが終了した時点の時刻ｘｘ年ｙｙ月ｚｚ日００時１０分００秒を稼動情報取得終了時刻４０４の欄に登録する。
【００７１】
ソフトウェア１２０が実行されると、内部の個々の要素が動作する。その際、個々の要素に設定された稼動情報取得部１１２の呼び出し処理が実行され、それに伴い稼動情報取得部１１２が呼び出される。ソフトウェア１２０を実行中に、要素Ａ２０１のＸ＋１０００番地が実行された場合、当該アドレスに挿入された稼動情報取得部１１２の呼び出し処理により、稼動情報所取得部１１２に処理が移る。
【００７２】
稼動情報取得部１１２に処理が移ると、稼動情報取得部１１２は、まず、呼び出し元のアドレスを取得し、取得した呼び出し元アドレスを元にパッチ情報テーブル１２１の挿入アドレス４０２に、一致するアドレスを格納したレコードがあるか否かを検索する。該当するテーブルが存在する場合、挿入アドレス４０２を元に稼動情報テーブル１２２に新規のレコードを作成する。このとき、挿入アドレスに対応する最終実行時刻７００を０で初期化する。次に、挿入アドレス４０２に対する最終実行時刻７００を取得する。この場合、最終実行時刻７００は初期値の０が得られる。続いて、稼動情報取得部１１２が呼び出された時刻を取得する。
【００７３】
ここで、稼動情報取得部１１２は、最終実行時刻７００と稼動情報取得部１１２が呼び出された時刻とを比較し、呼び出し時刻が最終実行時刻７００より１秒以上経過している場合は、稼動情報テーブル１２２の最終実行時刻７００を現在時刻に更新し、稼働時間に１秒加算する。最後に、呼び出し元アドレスの次のアドレスに戻る処理を行うことにより、稼動情報取得部１１２での処理が終了する。以上の処理が、ソフトウェア１２０を実行している間、稼動情報取得部１１２の呼び出し処理が登録された修正位置を通る毎に実行され、稼動情報テーブル１２２の情報が更新されていく。
【００７４】
次に、修正重要度計算部１１３の処理が開始され、前述までの処理で得られた稼動情報テーブル１２２の稼動情報から個々の修正情報の稼働率を計算し、そこからパッチの重要度を計算する。修正重要度計算部１１３は、まず、パッチ情報テーブル１２１の入力を行い入力が完了したか否かを判定する。この場合、入力は未完了のため次のパッチ名の取得処理へ進む。パッチ名が得られるとパッチの重要度の初期値として１を設定する。
【００７５】
次に、修正重要度計算部１１３は、個々のパッチの重要度を稼動情報テーブル１２２の稼働時間７０１を元に計算する処理を行う。まず、パッチ情報テーブル１２１から修正パッチ名に対応する挿入アドレス４０２を取得する。ここでは、挿入アドレスＸ＋１０００番地が得られる。次に、この挿入アドレスＸ＋１０００番地を元に稼動情報テーブル１２２を検索すると、この修正位置情報の稼働時間７０１から１００秒が得られる。ここで、ソフトウェア１２０が実際に実行されていた時間を計算するために、パッチ情報テーブル１２１から実行開始時刻である稼動情報取得開始時刻４０３と、実行終了時刻である稼動情報取得終了時刻４０４を取得する。
【００７６】
ここで得られる稼動情報取得開始時刻４０３は、ｘｘ年ｙｙ月ｚｚ日００時００分００秒であり、稼動情報取得終了時刻４０４は、ｘｘ年ｙｙ月ｚｚ日００時１０分００秒である。この終了時刻から開始時刻を引いた１０分、すなわち、６００秒がソフトウェアの実働時間であるため、この修正情報の稼働率は、１００／６００で１６％と計算される。稼働率１６％は、修正重要度テーブル１０００では重要度２に設定されているため重要度が２と決定される。ここで得られた重要度と、修正パッチＡ２１の現在の重要度＝１とを比較し、より大きい重要度である重要度２が修正パッチＡ２１の重要度として選択される。以上の処理を繰り返すことにより、最終的に修正パッチＡ２１の重要度は、要素Ａ２０１と修正位置（＋１１００番地）（２２０）の稼働時間から計算される重要度４となる。パッチの重要度が決定すると、パッチ名とパッチの重要度とが修正重要度情報テーブル１２３に登録される。このような処理を全てのパッチに対して繰り返し実施することにより全てのパッチの重要度が決定される。
【００７７】
最後に、以上から得られた修正重要度情報テーブル１２３を表示装置等の出力装置１３に出力する。作業者は、表示される修正重要度情報テーブル１２３の内容からどの修正パッチが重要であるかを知って、修正パッチを選択することができる。
【００７８】
前述した本発明の実施形態での各処理は、プログラムにより構成し、本発明が備えるＣＰＵに実行させることができ、また、それらのプログラムは、ＦＤ、ＣＤＲＯＭ、ＤＶＤ等の記録媒体に格納して提供することができ、また、ネットワークを介してディジタル情報により提供することができる。
【図面の簡単な説明】
【００７９】
【図１】本発明の一実施形態による修正パッチ選択支援システムが構築されるコンピュータシステムの構成を示すブロック図である。
【図２】ソフトウェアと修正パッチとの関係例について説明する図である。
【図３】パッチ情報取得部での処理動作を説明するフローチャートである。
【図４】図３に示す処理によって生成されるパッチ情報テーブルの構成例を示す図である。
【図５】稼動情報取得処理挿入部での処理動作を説明するフローチャートである。
【図６】稼動情報取得部での処理動作を説明するフローチャートである。
【図７】図６に示す稼動情報取得部の処理によって生成される稼動情報テーブルの構成例を示す図である。
【図８】修正重要度計算部での処理動作を説明するフローチャートである。
【図９】修正重要度計算部の処理によって作成される修正重要度情報テーブルの構成例を示す図である。
【図１０】修正重要度計算部がパッチ毎の重要度を決定するために用いる修正重要度テーブルの構成例を示す図である。
【符号の説明】
【００８０】
１  コンピュータシステム
１０  入力装置
１１  ＣＰＵ
１２  主記憶装置
１３  出力装置
１４  バス
１５  ＨＤＤ
１００  修正パッチ
１１０  パッチ情報取得部
１１１  稼動情報取得処理挿入部
１１２  稼動情報取得部
１１３  修正重要度計算部
１１４  ＯＳ
１２０  ソフトウェア
１２１  パッチ情報テーブル
１２２  稼動情報テーブル
１２３  修正重要度情報テーブル
【図１】
2008198001.tif 000003
【図２】
2008198001.tif 000004
【図３】
2008198001.tif 000005
【図４】
2008198001.tif 000006
【図５】
2008198001.tif 000007
【図６】
2008198001.tif 000008
【図７】
2008198001.tif 000009
【図８】
2008198001.tif 000010
【図９】
2008198001.tif 000011
【図１０】
2008198001.tif 000012