以下、添付図面に基づいて、本発明を実施するための形態について、詳しく説明する。
本発明の実施形態である保守日程提案装置は、いわゆる業務ネットワークシステム内の各サーバ装置のソフトウエアを保守する際にその保守の最適な日程を提案するためのコンピュータである。なお、業務ネットワークシステムは、ネットワークを介して多数のクライアント装置に接続された一つ以上のサーバ装置に、財務会計や顧客管理などの業務サービスを提供するための業務サービスプログラムが、分散してインストールされたシステムである。
図1は、本実施形態の保守日程提案装置10を概略的に示す構成図である。保守日程提案装置10は、CPU[Central Processing Unit]10a,RAM[Random Access Memory]10b,表示装置10c,入力装置10d,FDD[Flexible Disk Drive]10e,CDD[Compact Disk Drive]10f,及び、HDD[Hard Disk Drive]10gを、備えており、これらハードウエア10a〜10gは、バスBを介して互いに接続されている。
CPU10aは、保守日程提案装置10全体を制御するための中央処理装置である。RAM10bは、CPU10aが各種プログラムを実行するに際しての作業領域が展開される主記憶装置である。
表示装置10cは、CPU10aによって生成された画面データに基づいて各種画面を表示するための装置であり、具体的には液晶ディスプレイやブラウン管ディスプレイである。入力装置10dは、操作者からの入力を受け付けるための装置であり、具体的にはキーボードやマウスやタッチスクリーンである。
FDD10e及びCDD10fは、コンピュータ可読媒体であるフレキシブルディスクFDやコンパクトディスクCDからデータやプログラムを読み出したりこれらディスクFD,CDに書き込んだりするための補助記憶装置であり、ディスクFD,CDを着脱自在に装着するための機構を、備えている。
HDD10gは、保守日程提案装置10に内蔵され或いは外付けされる補助記憶装置であり、CPU10aによってRAM10b上に読み出されて実行される各種プログラムを格納している。このHDD10gには、ハードウエアとソフトウエアとを統合的に管理するためのOS[Operating System]ソフトウエアの他、本発明に係るプログラム及びテーブルとして、ソフトウエア管理テーブル11,連携情報管理テーブル12,アクセス履歴テーブル13,及び、保守日程提案プログラム14が、記録されている。
ソフトウエア管理テーブル11は、上記業務ネットワークシステムの有するサーバ装置とそれにインストールされているソフトウエアとの対応関係を記録しておくためのテーブルである。図2は、ソフトウエア管理テーブル11のデータ構造の一例を示す図である。図2のソフトウエア管理テーブル11は、上記業務ネットワークシステムの有するサーバ装置と同じ数のレコードを、有している。各レコードは、「サーバ識別情報」,「OS」,及び、「ソフトウエアスイート」のフィールドを、有している。
ここで、「サーバ識別情報」は、上記業務ネットワークシステムの有するサーバ装置を個別に識別するために各サーバ装置に一意に割り当てられた識別情報であるサーバ識別情報が記録されるフィールドである。また、「OS」は、そのサーバ装置にインストールされているOSソフトウエアの名称が記録されるフィールドである。また、「ソフトウエアスイート」は、そのサーバ装置にインストールされているソフトウエアスイートの名称が記録されるフィールドである。なお、ソフトウエアスイートは、文章編集ツールや表計算ツールや描画ツールや発表ツールなどの事務用の機能をコンピュータに付加するためのソフトウエアの集合体である。
連携情報管理テーブル12は、上記業務ネットワークシステムの有するサーバ装置とそれによって提供される業務サービスを機能させる業務サービスプログラムとの対応関係を記録しておくためのテーブルである。図3は、連携情報管理テーブル12のデータ構造の一例を示す図である。図3の連携情報管理テーブル12は、上記業務ネットワークシステムによって提供される業務サービスと同じ数のレコードを、有している。各レコードは、「サーバ識別情報」,「本サービス名」,「連携サービス名1」,「連携サービス名2」,…,「稼働状態」,「動作確認時間」,及び、「締め日」のフィールドを、有している。
ここで、「サーバ識別情報」は、その業務サービスを提供するサーバ装置のサーバ識別情報が記録されるフィールドである。また、「本サービス名」は、上記業務ネットワークシステムが各クライアント装置の操作者に提供するための業務サービスのうち、そのサーバ装置のOSソフトウエアやソフトウエアスイートの機能を利用してそのサーバ装置において稼働する業務サービスの名称が本サービス名として記録されるフィールドである。また、「連携サービス名1」,「連携サービス名2」,…は、何れも、本サービス名の業務サービスによる機能や生成情報を利用して稼働する他の業務サービスが存在する場合にそれら他の業務サービスの名称が連携サービス名として記録されるフィールドである。
また、「稼働状態」は、その本サービス名の業務サービスがサーバ装置において運用中であるか待機中であるを示す稼働状態情報が記録されるフィールドである。また、「動作確認時間」は、その業務サービスをコンピュータに機能させるための業務サービスプログラムを起動してからその業務サービスが正常に稼働した状態となったことを確認するまでに必要な時間が記録されるフィールドである。また、「締め日」は、その本サービス名の業務サービスへの情報の入力やその業務サービスの情報の利用が集中するためにその業務サービスの稼働を停止すべきでない日にちが停止不可期間情報として記録されるフィールドである。
なお、ソフトウエア管理テーブル11及び連携情報管理テーブル12は、前述した記憶手段に相当する。
アクセス履歴テーブル13は、上記業務ネットワークシステムのクライアント装置が各業務サービスにアクセスした回数を日々記録するためのテーブルである。図4は、アクセス履歴テーブル13のデータ構造の一例を示す図である。図4のアクセス履歴テーブル13は、上記業務ネットワークシステムによって提供される業務サービスと同じ数のレコードを、有している。各レコードは、年月日が記述された一日毎のフィールドを、有している。
このアクセス履歴テーブル13の各セルには、アクセス数が記録されており、このアクセス数は、その業務サービスが稼働するサーバ装置に付加されたアクセスカウンタモジュールプログラムによって生成される数値である。なお、アクセスカウンタモジュールプログラムによる処理の内容は、一般的であるので詳しくは説明しないが、簡単に説明すると、このモジュールプログラムに従ったCPU10aは、業務サービスのそれぞれについて、各クライアント装置から受けたアクセスの回数を一日間カウントし、その日が経過すると、アクセス履歴テーブル13における各業務サービスのレコードのその日用のフィールドに、アクセス数を記録する。
以上のように構成される保守日程提案装置10において実行される処理の内容について、詳しく説明する。
保守日程提案装置10のCPU10aは、その入力装置10dが操作されることによって、保守日程提案プログラム14の起動を指示されると、その保守日程提案プログラム14をHDD10gから読み込んで、保守日程提案処理を実行する。図5は、保守日程提案処理の内容を示すフローチャートである。
保守日程提案処理の開始後、最初のステップS101では、CPU10aは、入力画面を表示装置10cに表示する。図6は、入力画面21の一例を示す図である。図6の入力画面21には、五個のプルダウンリストボックス21a〜21eが、示されている。五個のプルダウンリストボックス21a〜21eのうち、一個目のプルダウンリストボックス21aは、バージョンアップやウイルス対策修正やバグ修正のためのパッチをあてるべき保守対象となるソフトウエアの名称を入力するためのものである。なお、本実施形態では、このプルダウンリストボックス31aに入力されるソフトウエアの名称は、OSソフトウエアの名称,及び、ソフトウエアスイートの名称の何れかである。
二個目のプルダウンリストボックス21bは、そのソフトウエアのバージョン番号を入力するためのものである。三個目のプルダウンリストボックス21cは、パッチを当てる作業に掛かる時間を入力するためのものである。四個目のプルダウンリストボックス21dは、そのソフトウエアにパッチを当てた際にサーバ装置の再起動が必要であるか否かを指定する情報を入力するためのものである。五個目のプルダウンリストボックス21eは、そのパッチを当てる作業をどの程度早めに行うべきかを示す情報である緊急度を入力するするためのものである。なお、本実施形態では、緊急度は、高度,中度,低度の三段階となっており、そのうちの何れか一つが、五個目のプルダウンリストボックス21eに入力されることとなる。
また、図6の入力画面21には、一個のテキストボックス21fが示されている。このテキストボックス21fは、パッチを当てる作業を何日以内に行うべきかを指定する日数制限情報を入力するためのテキストボックスであり、最も高い緊急度を示す「高度」が五個目のプルダウンリストボックス21eに入力された場合にのみ機能する。
また、図6の入力画面21には、上記五個のプルダウンリストボックス21a〜21eを通じて保守対象として指定されたソフトウエアに関する情報が記述される一覧表21gが、示されている。また、図6の入力画面21には、五個のプルダウンリストボックス21a〜21eに入力された各情報からなるレコードを一覧表21gに登録しようとする操作者によってクリックされる登録ボタン21hが、示されている。なお、この登録ボタン21hがクリックされる毎に、一覧表21gには、レコードが一つずつ順に追加登録されることとなる。
また、図6の入力画面21には、一覧表21gへの保守対象の登録を済ませた操作者によってクリックされる実行ボタン21iが、示されている。
CPU10aは、図6に示されるような入力画面21を表示装置10cに表示した後、ステップS102へ処理を進める。
ステップS102では、CPU10aは、入力画面21の実行ボタン21iがクリックされるまで、待機する(S102;NO)。そして、実行ボタン21iがクリックされると(S102;YES)、CPU10aは、ステップS103へ処理を進める。
なお、ステップS101及びS102を実行するCPU10aは、前述した受付手段に相当する。
ステップS103では、CPU10aは、第1ワークテーブル31を生成する。図7は、第1ワークテーブル31のデータ構造の一例を示す図である。図7の第1ワークテーブル31には、各レコードの有するフィールドとして、「サーバ識別情報」,「緊急度」,「保守所要時間」,及び、「保守可能期間」のフィールドが、用意されている。
ここで、「サーバ識別情報」は、後述の処理によって抽出されたサーバ識別情報がそれぞれ記録されるフィールドである。また、「緊急度」は、そのサーバ識別情報の示すサーバ装置内において保守対象となっているソフトウエアに指定されている緊急度のうちの最も高いものが記録されるフィールドである。また、「保守所要時間」は、そのサーバ識別情報のサーバ装置を保守するために必要な時間が後述の処理によって記録されるフィールドである。また、「保守可能期間」は、そのサーバ識別情報の示すサーバ装置を停止しても良い日を示す保守可能期間情報が後述の処理によって記録されるフィールドである。
CPU10aは、レコードを一つも有していない上記の第1ワークテーブル31を新たに生成した後、ステップS104へ処理を進める。
ステップS104では、CPU10aは、サーバ特定処理を実行する。図8は、サーバ特定処理の内容を示すフローチャートである。
サーバ特定処理の開始後、CPU10aは、まず、第1処理ループL1を実行する。具体的には、CPU10aは、入力画面21の一覧表21gに入力されたレコードを一つずつ処理対象として特定することによって、ステップS201〜S208を全てのレコードに対して順に実行する。
ステップS201では、CPU10aは、処理対象レコード中の保守対象ソフトウエア名を検索条件として、図2のソフトウエア管理テーブル11を検索する。
次のステップS202では、CPU10aは、保守対象ソフトウエア名に対応するサーバ識別情報を図2のソフトウエア管理テーブル11から検出できたか否かを、判別する。そして、CPU10aは、保守対象ソフトウエア名に対応するサーバ識別情報を図2のソフトウエア管理テーブル11から検出できなかったと判断した場合(S202;NO)、ステップS205へ処理を進め、保守対象ソフトウエア名に対応するサーバ識別情報を図2のソフトウエア管理テーブル11から検出できたと判断した場合(S202;YES)、ステップS203へ処理を進める。
ステップS203では、CPU10aは、ステップS202において検出されたサーバ識別情報と同じサーバ識別情報が図7の第1ワークテーブル31に既に記録されているか否かを、判別する。そして、ステップS202において検出されたサーバ識別情報と同じサーバ識別情報が図7の第1ワークテーブル31に未だ記録されていないと判断した場合(S203;NO)、CPU10aは、ステップS204へ処理を進める。
ステップS204では、CPU10aは、ステップS202において検出されたサーバ識別情報を持つ新たなレコードを、図7の第1ワークテーブル31に追加する。但し、追加されるレコードの「保守可能期間」フィールドには、情報が含まれていない。また、CPU10aは、その新たなレコード中の保守所要時間については、そのサーバ識別情報に対応する動作確認時間を、連携情報管理テーブル12から読み出し、読み出した中で最大の動作確認時間に対して処理対象レコード中の所要時間を加算することによって、取得している。追加後、CPU10aは、この処理対象レコードに対する第1処理ループL1の実行を終了する。
一方、ステップS203において、ステップS202において検出されたサーバ識別情報と同じサーバ識別情報が図7の第1ワークテーブル31に記録されていると判断した場合(S203;YES)、CPU10aは、CPU10aは、ステップS205へ処理を進める。
ステップS205では、CPU10aは、処理対象レコード中の緊急度がその処理対象レコードと同じサーバ識別情報について既に図7の第1ワークテーブル31に記録済の緊急度よりも高いか否かを、判別する。そして、CPU10aは、処理対象レコード中の緊急度がその処理対象レコードと同じサーバ識別情報について既に図7の第1ワークテーブル31に記録済の緊急度と同じか低いと判断した場合(S205;NO)、ステップS207へ処理を進め、処理対象レコード中の緊急度がその処理対象レコードと同じサーバ識別情報について既に図7の第1ワークテーブル31に記録済の緊急度よりも高いと判断した場合(S205;YES)、ステップS206へ処理を進める。
ステップS206では、CPU10aは、図7の第1ワークテーブル31における処理対象レコードと同じサーバ識別情報を含むレコードにおいて、処理対象レコードの緊急度を上書き更新する。更新後、CPU10aは、ステップS207へ処理を進める。
ステップS207では、CPU10aは、処理対象レコードについて上記のように算出される保守所要時間がその処理対象レコードと同じサーバ識別情報について既に図7の第1ワークテーブル31に記録済の保守所要時間よりも長いか否かを、判別する。そして、CPU10aは、処理対象レコードの保守所要時間がその処理対象レコードと同じサーバ識別情報について既に図7の第1ワークテーブル31に記録済の保守所要時間よりも短い場合(S207;NO)、この処理対象レコードに対する第1処理ループL1の実行を終了し、処理対象レコードの保守所要時間がその処理対象レコードと同じサーバ識別情報について既に図7の第1ワークテーブル31に記録済の保守所要時間よりも長い場合(S207;YES)、ステップS208へ処理を進める。
ステップS208では、CPU10aは、図7の第1ワークテーブル31における処理対象レコードと同じサーバ識別情報を含むレコードにおいて、処理対象レコードの保守所要時間を上書き更新する。更新後、CPU10aは、この処理対象レコードに対する第1処理ループL1の実行を終了する。
CPU10aは、このような第1処理ループL1を、入力画面21の一覧表21gに入力されたレコードに対して順に実行し、全てのレコードについて第1処理ループL1を実行し終えると、図8のサーバ特定処理を終了し、図5の保守日程提案処理におけるステップS105へ処理を進める。
なお、ステップS104,第2処理ループL2,及び、ステップS201〜S208を実行するCPU10aは、前述した読出手段に相当する。
ステップS105では、CPU10aは、保守実行期日決定処理を実行する。図9は、保守実行期日決定処理の内容を示すフローチャートである。
保守実行期日決定処理の開始後、CPU10aは、第2処理ループL2を実行する。具体的には、CPU10aは、図7の第1ワークテーブル31に記録されレコードを一つずつ処理対象として特定することによって、ステップS301〜S304を全てのレコードに対して順に実行する。
ステップS301では、CPU10aは、第2ワークテーブル32,第3ワークテーブル33,及び、図示せぬ第4ワークテーブルを生成する。図10は、第2ワークテーブル32のデータ構造の一例を示す図であり、図11は、第3ワークテーブル33のデータ構造の一例を示す図である。
図10の第2ワークテーブル32には、各レコードの有するフィールドとして、「本サービス名」,「稼働状態」,「締め日」,及び、「延べ顧客数」のフィールドが、用意されている。ここで、「本サービス名」は、図3の連携情報管理テーブル12において処理対象レコード中のサーバ識別情報に対応する本サービス名がそれぞれ記録されるフィールドである。また、「稼働状態」及び「締め日」は、その本サービス名に対応する稼働状態情報及び停止不可期間情報がそれぞれ記録されるフィールドである。また、「延べ顧客数」は、その本サービス名の業務サービスを所定期間(N日間)内に利用した顧客の一日毎の延べ数が後述の処理によって記録されるフィールドである。
図11の第3ワークテーブル33には、各レコードの有するフィールドとして、「本サービス名」,「一日前」,「二日前」,…,「N日前」のフィールドが、用意されている。ここで、「本サービス名」は、図3の連携情報管理テーブル12において処理対象レコード中のサーバ識別情報に対応する本サービス名がそれぞれ記録されるフィールドである。また、「1日前」,「二日前」,…,「N日前」は、この保守実行期日決定処理を実行している日から所定のN日間だけ遡った日までの間の全ての日にちのそれぞれについて、本サービス名の業務サービス及びそれに連携する業務サービスに対してその日にあったアクセスの延べ数を計数して得られた値が、後述の処理によって記録されるフィールドである。
CPU10aは、レコードを一つも有していない上記の第2ワークテーブル32,第3ワークテーブル33,及び、図示せぬ第4ワークテーブルをそれぞれ新たに生成した後、ステップS302へ処理を進める。
ステップS302では、CPU10aは、顧客数積算処理を実行する。図12及び図13は、顧客数積算処理の内容を示すフローチャートである。
顧客数積算処理の開始後、最初のステップS401では、CPU10aは、処理対象レコード中のサーバ識別情報に対応する本サービス名と稼働状態情報と停止不可期間情報とを、図3の連携情報管理テーブル12から読み出して、図10の第2ワークテーブル32の「本サービス名」,「稼働状態」,及び、「締め日」のフィールドに記録する。
このステップS401の実行後、CPU10aは、第3処理ループL3を実行する。具体的には、CPU10aは、図10の第2ワークテーブル32に記録されている本サービス名を一つずつ処理対象として特定することによって、ステップS411〜S416,第4処理ループL4,及び、ステップS417〜S420を、全てのレコードに対して順に実行する。
ステップS411では、CPU10aは、処理対象本サービス名を図11の第3ワークテーブル33に記録する。記録後、CPU10aは、ステップS412へ処理を進める。
ステップS412では、CPU10aは、変数nに0を代入し、ステップS413へ処理を進める。
ステップS413では、CPU10aは、変数nを1だけインクリメントし、ステップS414へ処理を進める。
ステップS414では、CPU10aは、この保守実行期日決定処理を実行している日からn日間だけ遡った日における処理対象本サービス名に対応するアクセス数を、図4のアクセス履歴テーブル13から読み出す。
次のステップS415では、CPU10aは、図11の第3ワークテーブル33における処理対象本サービス名を持つレコードの「n日前」のフィールドに、ステップS414において読み出したアクセス数を記録する。
次のステップS416では、CPU10aは、処理対象(第2処理ループL2の処理対象)のレコードのサーバ識別情報と処理対象(第3処理ループL3の処理対象)の本サービス名とに対応する連携サービス名を、図3の連携情報管理テーブル12から読み出す。
このステップS416の実行後、CPU10aは、第4処理ループL4を実行する。具体的には、CPU10aは、ステップS416において読み出された連携サービス名を一つずつ処理対象として特定することによって、ステップS461〜S463を全ての連携サービス名に対して順に実行する。
ステップS461では、CPU10aは、処理対象の連携サービス名が既に第4ワークテーブル(図示略)に記録されているか否かを、判別する。なお、図示せぬ第4ワークテーブルは、図11の第3ワークテーブル33にアクセス数を記録していく際に、同一の業務サービスについてのアクセス数を二重に積算するのを防止するために利用されるテーブルであり、具体的には、業務サービスの名称を記録しておくためのテーブルとなっている。
そして、CPU10aは、処理対象の連携サービス名が既に第4ワークテーブル(図示略)に記録されていると判断した場合(S461;YES)、この処理対象連携サービス名に対する第4処理ループL4の実行を終了し、処理対象の連携サービス名が未だ第4ワークテーブル(図示略)に記録されていないと判断した場合(S461;NO)、ステップS462へ処理を進める。
ステップS462では、CPU10aは、この保守実行期日決定処理を実行している日からn日間だけ遡った日における処理対象連携サービス名に対応するアクセス数を、図4のアクセス履歴テーブル13から読み出す。
次のステップS463では、CPU10aは、図11の第3ワークテーブル33における処理対象本サービス名を持つレコードの「n日前」のフィールド中の値に、ステップS462において読み出したアクセス数を加算する。加算後、CPU10aは、この処理対象連携サービス名に対する第4処理ループL4の実行を終了する。
CPU10aは、このような第4処理ループL4を、ステップS416において読み出された連携サービス名に対して順に実行し、全ての連携サービス名について第4処理ループL4を実行し終えると、ステップS417へ処理を進める。
ステップS417では、CPU10aは、変数nが所定の上限値Nに達しているか否かを、判別する。そして、CPU10aは、変数nが所定の上限値Nに達していないと判断した場合(S417;NO)、ステップS413へ処理を戻し、変数nが所定の上限値Nに達していると判断した場合(S417;YES)、ステップS418へ処理を進める。
ステップS418では、CPU10aは、ステップS416において読み出された連携サービス名のうち、第4ワークテーブル(図示略)に記録されていないものを、第4ワークテーブル(図示略)に追加記録する。
次のステップS419では、CPU10aは、図11の第3ワークテーブル33中の全てのレコードのそれぞれについて、「1日前」,「2日前」,…,「N日前」のフィールド中の値を合算することによって、処理対象本サービス名についての延べ顧客数を、算出する。
次のステップS420では、CPU10aは、処理対象本サービス名について算出された延べ顧客数を、図10の第2ワークテーブル32における処理対象本サービス名を持つレコードの「延べ顧客数」フィールドに記録する。記録後、CPU10aは、処理対象本サービス名に対する第3処理ループL3の実行を終了する。
CPU10aは、このような第3処理ループL3を、図10の第2ワークテーブル32に記録されているレコードに対して順に実行し、全てのレコードについて第3処理ループL3を実行し終えると、図12及び図13の顧客数積算処理を終了し、第2処理ループL2中のステップS303へ処理を進める。
ステップS303では、CPU10aは、保守可能期間決定処理を実行する。図14乃至図16は、保守可能期間決定処理の内容を示すフローチャートである。
保守可能期間決定処理の開始後、最初のステップS501では、CPU10aは、処理対象レコード中の緊急度が低度であるか否かを、判別する。そして、処理対象レコード中の緊急度が低度であると判断した場合(S501;YES)、CPU10aは、ステップS502へ処理を進める。
ステップS502では、CPU10aは、延べ顧客数の判定に用いる上限値を「0」に設定する。
次のステップS503では、CPU10aは、1からNまでの数値をそれぞれRAM10b内において一時記憶する。
このステップS503の実行後、CPU10aは、第5処理ループL5を実行する。具体的には、CPU10aは、図10の第2ワークテーブル32中の本サービス名を一つずつ処理対象として特定することによって、ステップS551及びS552を、各本サービス名に対して順に実行する。
ステップS551では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する延べ顧客数を読み出し、この延べ顧客数がこの時点で設定されている上限値を超過しているか否かを、判別する。そして、CPU10aは、処理対象本サービス名に対応する延べ顧客数が上限値を超過していないたと判断した場合(S551;NO)、この処理対象本サービス名に対する第5処理ループL5の実行を終了し、処理対象本サービス名に対応する延べ顧客数が上限値を超過していると判断した場合(S551;YES)、ステップS552へ処理を進める。
なお、ステップS551を実行するCPU10aは、前述した優先サービス特定手段に相当する。
ステップS552では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する停止不可期間情報(「締め日」フィールド内の情報)を読み出し、保守可能期間決定処理の実行日からこの停止不可期間情報に含まれる日にちまでの日数に相当する数値を、RAM10b内の数値から削除する。削除後、CPU10aは、この処理対象本サービス名に対する第5処理ループL5の実行を終了する。
CPU10aは、このような第5処理ループL5を、図10の第2ワークテーブル32中の本サービス名に対して順に実行し、全ての本サービス名について第5処理ループL5を実行し終えると、ステップS504へ処理を進める。
ステップS504では、CPU10aは、RAM10b内に一時記憶しておいた数値が残っているか否かを、判別する。そして、RAM10b内に一時記憶しておいた数値が残っていなかった場合(S504;NO)、CPU10aは、ステップS505へ処理を進める。
ステップS505では、CPU10aは、延べ顧客数の判定に用いる上限値を、この時点で設定されている値から、所定量だけ増加させる。この後、CPU10aは、ステップS503へ処理を戻す。
一方、ステップS504において、RAM10b内に一時記憶しておいた数値が残っていた場合(S504;YES)、CPU10aは、ステップS506へ処理を進める。
ステップS506では、CPU10aは、RAM10b内に残っている全ての数値のそれぞれについて、保守可能期間決定処理の実行日からその数値と同じ日数だけ加算した日にちをそれぞれ算出する。
次のステップS507では、CPU10aは、ステップS506において算出した各日にちからなる保守可能期間を、図7の第1ワークテーブル31における処理対象レコードの「保守可能期間」フィールドに記録する。記録後、CPU10aは、図14の保守可能期間決定処理を終了して、図9の保守実行期日決定処理におけるステップS304へ処理を進める。
なお、ステップS506及びS507は、前述した停止可能期間決定手段に相当する。
一方、ステップS501において、処理対象レコード中の緊急度が低度でないと判断した場合(S501;NO)、CPU10aは、ステップS508へ処理を進める。
ステップS508では、CPU10aは、処理対象レコード中の緊急度が中度であるか否かを、判別する。そして、処理対象レコード中の緊急度が中度であると判断した場合(S508;YES)、CPU10aは、ステップS509へ処理を進める。
ステップS509では、CPU10aは、延べ顧客数の判定に用いる上限値を「0」に設定する。
次のステップS510では、CPU10aは、1からNまでの数値をそれぞれRAM10b内において一時記憶する。
このステップS510の実行後、CPU10aは、第6処理ループL6を実行する。具体的には、CPU10aは、図10の第2ワークテーブル32中の本サービス名を一つずつ処理対象として特定することによって、ステップS561〜S563を、各本サービス名に対して順に実行する。
ステップS561では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する稼働状態情報を読み出し、この稼働状態情報が「運用中」を示すものであるか否かを、判別する。そして、CPU10aは、処理対象本サービス名に対応する稼働状態情報が「運用中」でないと判断した場合(S561;NO)、この処理対象本サービス名に対する第6処理ループL6の実行を終了し、処理対象本サービス名に対応する稼働状態情報が「運用中」であると判断した場合(S561;YES)、ステップS562へ処理を進める。
ステップS562では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する延べ顧客数を読み出し、この延べ顧客数がこの時点で設定されている上限値を超過しているか否かを、判別する。そして、CPU10aは、処理対象本サービス名に対応する延べ顧客数が上限値を超過していないと判断した場合(S562;NO)、この処理対象本サービス名に対する第6処理ループL6の実行を終了し、処理対象本サービス名に対応する延べ顧客数が上限値を超過していると判断した場合(S562;YES)、ステップS563へ処理を進める。
なお、ステップS561及びS562を実行するCPU10aは、前述した優先サービス特定手段に相当する。
ステップS563では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する停止不可期間情報(「締め日」フィールド内の情報)を読み出し、保守可能期間決定処理の実行日からこの停止不可期間情報に含まれている日にちまでの日数に相当する数値を、RAM10b内の数値から削除する。削除後、CPU10aは、この処理対象本サービス名に対する第6処理ループL6の実行を終了する。
CPU10aは、このような第6処理ループL6を、図10の第2ワークテーブル32中の本サービス名に対して順に実行し、全ての本サービス名について第6処理ループL6を実行し終えると、ステップS511へ処理を進める。
ステップS511では、CPU10aは、RAM10b内に一時記憶しておいた数値が残っているか否かを、判別する。そして、RAM10b内に一時記憶しておいた数値が残っていなかった場合(S511;NO)、CPU10aは、ステップS512へ処理を進める。
ステップS512では、CPU10aは、延べ顧客数の判定に用いる上限値を、この時点で設定されている値から、所定量だけ増加させる。この後、CPU10aは、ステップS510へ処理を戻す。
一方、ステップS511において、RAM10b内に一時記憶しておいた数値が残っていた場合(S511;YES)、CPU10aは、ステップS513へ処理を進める。
ステップS513では、CPU10aは、RAM10b内に残っている全ての数値のそれぞれについて、保守可能期間決定処理の実行日からその数値と同じ日数だけ加算した日にちを算出する。
次のステップS514では、CPU10aは、ステップS513において算出した各日にちからなる保守可能期間を、図7の第1ワークテーブル31における処理対象レコードの「保守可能期間」フィールドに記録する。記録後、CPU10aは、図14の保守可能期間決定処理を終了して、図9の保守実行期日決定処理におけるステップS304へ処理を進める。
なお、ステップS513及びS514は、前述した停止可能期間決定手段に相当する。
一方、ステップS508において、処理対象レコード中の緊急度が中度でないと判断した場合(S508;NO)、CPU10aは、処理対象レコード中の緊急度が高度であるとして、ステップS515へ処理を進める。
ステップS515では、CPU10aは、延べ顧客数の判定に用いる上限値を「0」に設定する。
次のステップS516では、CPU10aは、図6の入力画面21におけるテキストボックス21fに入力された日数を読み出し、1からその日数と同じ数までの数値をそれぞれRAM10b内において一時記憶する。
このステップS516の実行後、CPU10aは、第7処理ループL7を実行する。具体的には、CPU10aは、図10の第2ワークテーブル32中の本サービス名を一つずつ処理対象として特定することによって、ステップS571〜S573を、各本サービス名に対して順に実行する。
ステップS571では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する稼働状態情報を読み出し、この稼働状態情報が「運用中」を示すものであるか否かを、判別する。そして、CPU10aは、処理対象本サービス名に対応する稼働状態情報が「運用中」でないと判断した場合(S571;NO)、この処理対象本サービス名に対する第7処理ループL7の実行を終了し、処理対象本サービス名に対応する稼働状態情報が「運用中」であると判断した場合(S571;YES)、ステップS572へ処理を進める。
ステップS572では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する延べ顧客数を読み出し、この延べ顧客数がこの時点で設定されている上限値を超過しているか否かを、判別する。そして、CPU10aは、処理対象本サービス名に対応する延べ顧客数が上限値を超過していないと判断した場合(S572;NO)、この処理対象本サービス名に対する第7処理ループL7の実行を終了し、処理対象本サービス名に対応する延べ顧客数が上限値を超過していると判断した場合(S572;YES)、ステップS573へ処理を進める。
なお、ステップS571及びS572を実行するCPU10aは、前述した優先サービス特定手段に相当する。
ステップS573では、CPU10aは、図10の第2ワークテーブル32から、処理対象本サービス名に対応する停止不可期間情報(「締め日」フィールド内の情報)を読み出し、保守可能期間決定処理の実行日からこの停止不可期間情報に含まれる日にちまでの日数に相当する数値を、RAM10b内の数値から削除する。削除後、CPU10aは、この処理対象本サービス名に対する第7処理ループL7の実行を終了する。
CPU10aは、このような第7処理ループL7を、図10の第2ワークテーブル32中の本サービス名に対して順に実行し、全ての本サービス名について第6処理ループL6を実行し終えると、ステップS517へ処理を進める。
ステップS517では、CPU10aは、RAM10b内に一時記憶しておいた数値が残っているか否かを、判別する。そして、RAM10b内に一時記憶しておいた数値が残っていなかった場合(S517;NO)、CPU10aは、ステップS518へ処理を進める。
ステップS518では、CPU10aは、延べ顧客数の判定に用いる上限値を、この時点で設定されている値から、所定量だけ増加させる。この後、CPU10aは、ステップS516へ処理を戻す。
一方、ステップS517において、RAM10b内に一時記憶しておいた数値が残っていた場合(S517;YES)、CPU10aは、ステップS519へ処理を進める。
ステップS519では、CPU10aは、RAM10b内に残っている全ての数値のそれぞれについて、保守可能期間決定処理の実行日からその数値と同じ日数だけ加算した日にちを算出する。
次のステップS520では、CPU10aは、ステップS519において算出した各日にちからなる保守可能期間を、図7の第1ワークテーブル31における処理対象レコードの「保守可能期間」フィールドに記録する。記録後、CPU10aは、図14の保守可能期間決定処理を終了して、図9の保守実行期日決定処理におけるステップS304へ処理を進める。
なお、ステップS519及びS520を実行するCPU10aは、前述した停止可能期間決定手段に相当する。
ステップS304では、CPU10aは、図10の第2ワークテーブル32,図11の第3ワークテーブル33,及び、第4ワークテーブル(図示略)を削除する。削除後、CPU10aは、処理対象レコードに対する第2処理ループL2の実行を終了する。
CPU10aは、このような第2処理ループL2を、図7の第1ワークテーブル31中の各レコードに対して順に実行し、全てのレコードについて第2処理ループL2を実行し終えると、ステップS311へ処理を進める。
ステップS311では、CPU10aは、図7の第1ワークテーブル31内のサーバ識別情報のそれぞれについて、その保守可能期間中の日にちのうち、現時点に最も近い日にちを、保守実行期日として決定する。決定後、CPU10aは、図9の保守実行期日決定処理を終了し、図5の保守日程提案処理におけるステップS106へ処理を進める。
ステップS106では、CPU10aは、ステップS311において決定された保守実行期日と、図7の第1ワークテーブル31中の各レコードとに基づいて、保守日程案提示画面を表示装置10cに表示する。図17は、保守日程案提示画面22の一例を示す図である。図17の保守日程案提示画面22には、保守実行期日と保守所要時間とが、記述されている。また、図17の保守日程案提示画面22には、第1ワークテーブル31中の各サーバ識別情報にて示される各サーバ装置において運用中の業務サービスの名称が、列挙されている。CPU10aは、このような保守日程案提示画面22を表示装置10cに表示した後、図5の保守日程提案処理を終了する。
なお、ステップS106を実行するCPU10aは、前述した表示手段に相当する。
以上のような処理が実行されるため、本実施形態の保守日程提案装置10は、以下に記述するように作用する。
上記業務ネットワークシステムの管理者は、何れかのサーバ装置にインストールされているOSソフトウエアや事務用ソフトウエアスイートにパッチを当てる必要が生じた場合、保守日程提案装置10の入力装置10dを操作することによって、保守日程提案プログラム14を起動する。
すると、保守日程提案装置10の表示装置10cには、図6に示されるような入力画面21が、表示される(S101)。管理者は、この入力画面21の一個目のプルダウンリストボックス21aに、パッチを当てる必要が生じたソフトウエアの名称を入力するとともに、残りのプルダウンリストボックス21b〜21eに、そのパッチを当てる際の保守作業の条件を入力し、登録ボタン21hをクリックする。
そして、管理者は、このような入力作業を、パッチを当てる必要のあるソフトウエアの数だけ行った後、実行ボタン21iをクリックする(S102)。すると、保守日程提案装置10は、パッチを当てるという保守作業が必要なソフトウエアがインストールされているサーバ装置を割り出し(S103,L1,S201〜S208)、割り出したサーバ装置のそれぞれについて、入力画面21において指定された緊急度,及び、そのサーバ装置が提供する業務サービスの顧客規模とその稼働状態とその停止不可期間情報とに応じて、保守実行期日を決定する(S105,L2,S311)。
ここで、保守日程提案装置10は、緊急度が低度である場合(S501;YES)には、まず、その実行日から所定のN日間までの各日にちが、そのサーバ装置が提供する全ての業務サービスの停止不可期間情報にて示される日にちにて満たされているかを、判別する(S502,L5,S504)。そして、保守日程提案装置10は、何れかの日にちが残されていれば、その実行日に最も近い日を保守実行期日として決定し(S504;YES,S506,S507)、何れの日にちも残されていなければ、延べ顧客数が上限値を超過しない業務サービスが出てくるまで、上限値を徐々に増加させる(S504;NO,S505,S503,L5)。
また、保守日程提案装置10は、緊急度が中度である場合(S501;NO,S508;YES)には、まず、その実行日から所定のN日間までの各日にちが、そのサーバ装置における運用中の業務サービスの停止不可期間情報にて示される日にちにて満たされているかを、判別する(S510,L6,S511)。そして、保守日程提案装置10は、何れかの日にちが残されていれば、その実行日に最も近い日を保守実行期日として決定し(S511;YES,S513,S514)、何れの日にちも残されていなければ、延べ顧客数が上限値を超過しない運用中の業務サービスが出てくるまで、上限値を徐々に増加させる(S511;NO,S512,S510,L6)。
さらに、保守日程提案装置10は、緊急度が高度である場合(S501;NO,S508;NO)には、まず、その実行日から、図6の入力画面21において指定された日数までの日にちが、そのサーバ装置における運用中の業務サービスの停止不可期間情報にて示される日にちにて満たされているかを、判別する(S516,L7,S517)。そして、保守日程提案装置10は、何れかの日にちが残されていれば、その実行日に最も近い日を保守実行期日として決定し(S517;YES,S519,S520)、何れの日にちも残されていなければ、延べ顧客数が上限値を超過しない運用中の業務サービスが出てくるまで、上限値を徐々に増加させる(S517;NO,S518,S516,L7)。
そして、保守日程提案装置10は、上記のようにして、各サーバ装置について決定した保守実行期日を、保守日程案提示画面22を表示装置10cに表示することによって、管理者に通知する。
以上のように作用するため、本実施形態の保守日程提案装置10は、業務ネットワークシステム内の各サーバ装置を保守する際に、各サーバ装置が提供する業務サービスの利用者の規模に応じてその保守に最適な日程を、管理者に提案することができる。つまり、管理者は、ソフトウエアの保守作業に係る条件を入力画面21に入力するだけで、業務サービスの利用者の規模に応じて最適な保守の実行日を、簡単に決定することができる。