(57)【要約】【課題】ソフトウェア導入による不具合回避を支援すること。【解決手段】演算部１ｂは、情報処理装置２，３，４における複数のソフトウェアそれぞれの動作実績を収集し、収集した動作実績に基づいて、複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出する。演算部１ｂは、情報処理装置２に対してソフトウェアＸを新たに導入する際に、情報処理装置２に既に導入されているソフトウェアＹ，Ｚを特定する情報とソフトウェアＸを含む２以上のソフトウェアについての連続稼働時間とに基づいて、ソフトウェアＸの導入についての影響に関する指標を出力する。【選択図】図１
2017033079.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
前記コンピュータと通信可能な複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、
収集した前記動作実績に基づいて、前記複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出し、
情報処理装置に対して前記複数のソフトウェアのいずれかを新たに導入する際に、前記複数のソフトウェアのいずれかを新たに導入する導入対象の情報処理装置に既に導入されているソフトウェアを特定する情報と、新たに導入する前記ソフトウェアを含む前記２以上のソフトウェアについての前記連続稼働時間とに基づいて、前記導入対象の情報処理装置に対する新たに導入する前記ソフトウェアの導入についての影響に関する指標を出力する、
ことを実行させることを特徴とするソフトウェア導入支援プログラム。
【請求項２】
前記出力では、情報処理装置毎に算出した前記連続稼働時間に応じて前記２以上のソフトウェアの動作時の安定性を前記情報処理装置毎に評価し、安定に動作したと評価された情報処理装置の数および安定に動作しなかったと評価された情報処理装置の数により前記指標を決定し、決定した前記指標を出力する、請求項１記載のソフトウェア導入支援プログラム。
【請求項３】
前記評価では、前記連続稼働時間が閾値以下である場合に、前記２以上のソフトウェアの動作時の安定性を、前記連続稼働時間における前記２以上のソフトウェアに関するエラーの発生頻度に基づいて評価する、請求項２記載のソフトウェア導入支援プログラム。
【請求項４】
前記出力では、新たに導入する前記ソフトウェアと既に導入されている他のソフトウェアとの組合せ毎に前記指標を出力する、請求項１乃至３のいずれか１項に記載のソフトウェア導入支援プログラム。
【請求項５】
情報処理装置に既に導入されているソフトウェアを特定する情報を記憶する記憶部と、
複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、収集した前記動作実績に基づいて、前記複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出し、情報処理装置に対して前記複数のソフトウェアのいずれかを新たに導入する際に、前記記憶部に記憶された情報と、新たに導入する前記ソフトウェアを含む前記２以上のソフトウェアについての前記連続稼働時間とに基づいて、導入対象の情報処理装置に対する新たに導入する前記ソフトウェアの導入についての影響に関する指標を出力する演算部と、
を有することを特徴とするソフトウェア導入支援装置。
【請求項６】
コンピュータが、
前記コンピュータと通信可能な複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、
収集した前記動作実績に基づいて、前記複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出し、
情報処理装置に対して前記複数のソフトウェアのいずれかを新たに導入する際に、前記複数のソフトウェアのいずれかを新たに導入する導入対象の情報処理装置に既に導入されているソフトウェアを特定する情報と、新たに導入する前記ソフトウェアを含む前記２以上のソフトウェアについての前記連続稼働時間とに基づいて、前記導入対象の情報処理装置に対する新たに導入する前記ソフトウェアの導入についての影響に関する指標を出力する、
ことを特徴とするソフトウェア導入支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はソフトウェア導入支援プログラム、ソフトウェア導入支援装置およびソフトウェア導入支援方法に関する。
【背景技術】
【０００２】
現在、複数の情報処理装置を含む情報処理システムが利用されている。各情報処理装置では、種々のソフトウェアが実行され得る。情報処理装置は、新たにソフトウェアをインストールすることもあるし、導入済のソフトウェアをアンインストールすることもある。また、情報処理装置は、導入済のソフトウェアのバージョンを更新することもある。
【０００３】
例えば、導入済のソフトウェアをバージョンアップする際に、当該ソフトウェアに実装された機能の使用回数と使用頻度の情報とに所定のアルゴリズムを適用して、バージョンアップに伴い各ソフトウェアに生じる影響の多少を示す影響指数を算出する提案がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２６５２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
情報処理装置に新たにソフトウェアを導入した場合に、当該ソフトウェアまたは導入済の他のソフトウェアの動作に不具合が発生することがある。不具合の原因として、例えば
ソフトウェア間の共有資源（ポート番号や共有ファイルなど）の競合がある。ソフトウェア導入による不具合を回避するために、例えば、原因となる競合発生の可能性を各ソフトウェアの組合せに対して予め調査することが考えられる。しかし、調査の対象となるソフトウェアの数は膨大であり、あらゆるソフトウェアについて事前に調査を行うことは容易ではない。
【０００６】
１つの側面では、本発明は、ソフトウェア導入による不具合回避を支援するソフトウェア導入支援プログラム、ソフトウェア導入支援装置およびソフトウェア導入支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、ソフトウェア導入支援プログラムが提供される。このソフトウェア導入支援プログラムは、コンピュータに、コンピュータと通信可能な複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、収集した動作実績に基づいて、複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出し、情報処理装置に対して複数のソフトウェアのいずれかを新たに導入する際に、複数のソフトウェアのいずれかを新たに導入する導入対象の情報処理装置に既に導入されているソフトウェアを特定する情報と、新たに導入するソフトウェアを含む２以上のソフトウェアについての連続稼働時間とに基づいて、導入対象の情報処理装置に対する新たに導入するソフトウェアの導入についての影響に関する指標を出力する、ことを実行させる。
【発明の効果】
【０００８】
１つの側面では、ソフトウェア導入による不具合回避を支援できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態のソフトウェア導入支援装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】収集サーバのハードウェア例を示す図である。
【図４】情報処理システムの機能例を示す図である。
【図５】連続稼働時間の例を示す図である。
【図６】ローカル管理テーブルの例を示す図である。
【図７】マスタ管理テーブルの例を示す図である。
【図８】全サーバ管理テーブルの例を示す図である。
【図９】診断テーブルの例を示す図である。
【図１０】インストール時の管理レコードの登録例を示すフローチャートである。
【図１１】ローカル管理テーブルに対するレコードの追加例を示す図である。
【図１２】ソフトウェア起動／停止時の処理例を示す図である。
【図１３】ソフトウェアの起動／停止の管理例を示す図である。
【図１４】連続稼働時間およびエラー回数の更新例を示すフローチャートである。
【図１５】各ソフトウェアが起動済であるレコードの特定例を示す図である。
【図１６】マスタ管理テーブルの更新例を示すフローチャートである。
【図１７】マスタ管理テーブルの更新例を示す図である。
【図１８】管理サーバによる管理情報の収集例を示すフローチャートである。
【図１９】インストール時の診断例を示すフローチャートである。
【図２０】総合判定の例を示すフローチャートである。
【図２１】危険度／安全度の算出例を示す図である。
【図２２】診断結果表示画面の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のソフトウェア導入支援装置を示す図である。ソフトウェア導入支援装置１は、情報処理装置２，３，４に対する新たなソフトウェアの導入を支援する。ソフトウェア導入支援装置１および情報処理装置２，３，４は、ネットワーク５に接続されている。ソフトウェア導入支援装置１および情報処理装置２，３，４それぞれは、「コンピュータ」と呼ばれてもよい。
【００１１】
ソフトウェア導入支援装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、例えば、プロセッサである。プロセッサは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）であってもよく、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの集積回路を含んでもよい。プロセッサは、例えば、ＲＡＭに記憶されたプログラムを実行する。「プロセッサ」は、２以上のプロセッサの集合（マルチプロセッサ）であってもよい。
【００１２】
記憶部１ａは、演算部１ｂによる処理に用いられる情報を記憶する。例えば、記憶部１ａは、情報処理装置２，３，４それぞれに既に導入されているソフトウェアを特定する情報を記憶する。例えば、情報処理装置２に対してソフトウェアＹ，Ｚが既に導入されている。情報処理装置３には、ソフトウェアＸ，Ｙが既に導入されている。情報処理装置４には、ソフトウェアＺ，Ｘが既に導入されている。
【００１３】
演算部１ｂは、複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、収集した動作実績に基づいて、複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出する。連続稼働時間は、複数のソフトウェアが並行に連続動作していた時間である。情報処理装置の起動／停止に伴って同じソフトウェアの組合せで連続動作していた期間が複数ある場合、当該期間の累積を連続稼働時間としてもよい。
【００１４】
例えば、演算部１ｂは、情報処理装置２からソフトウェアＹ，Ｚそれぞれの動作実績を収集する。動作実績は、ソフトウェアＹ，Ｚの起動および停止のタイミングを特定する情報を含む。例えば、ソフトウェアＹの起動および停止の間の期間がソフトウェアＹの起動中の期間となる（他のソフトウェアについても同様）。演算部１ｂは、ソフトウェアＹ，Ｚの動作実績に基づいて、ソフトウェアＹ，Ｚの双方が動作した連続稼働時間ＴＡを算出する。演算部１ｂは、情報処理装置３から収集したソフトウェアＹ，Ｚの動作実績に基づいて、連続稼働時間ＴＢを算出する。演算部１ｂは、情報処理装置４から収集したソフトウェアＺ，Ｘの動作実績に基づいて、連続稼働時間ＴＣを算出する。演算部１ｂは、算出された連続稼働時間を管理するテーブル６を記憶部１ａに格納してもよい。
【００１５】
演算部１ｂは、情報処理装置に対して複数のソフトウェアのいずれかを新たに導入する際に、記憶部１ａに記憶された情報に基づいて、当該情報処理装置に既に導入されているソフトウェアを特定する。演算部１ｂは、特定したソフトウェアおよび新たに導入するソフトウェアを含む２以上のソフトウェアについての連続稼働時間に基づいて、導入対象の情報処理装置に対する新たに導入するソフトウェアの導入についての影響に関する指標を出力する。
【００１６】
例えば、演算部１ｂは、情報処理装置２に対して新たにソフトウェアＸを導入する旨の入力を受け付ける。演算部１ｂは、ソフトウェア導入支援装置１に接続された入力デバイスに対するユーザの操作入力により、情報処理装置２に対するソフトウェアＸの導入の入力を受け付けてもよい。あるいは、演算部１ｂは、情報処理装置２からネットワーク５を介して、情報処理装置２に対するソフトウェアＸの導入の入力を受け付けてもよい。
【００１７】
演算部１ｂは、情報処理装置２にソフトウェアＹ，Ｚが既に導入済であることを特定する。前述のように、演算部１ｂは、記憶部１ａに記憶された情報に基づいて、情報処理装置２に既に導入済のソフトウェアＹ，Ｚを特定し得る。また、演算部１ｂは、テーブル６に基づいて、導入対象のソフトウェアＸと、導入済のソフトウェアＹ，Ｚとに関する情報を取得する。具体的には、演算部１ｂは、ソフトウェアＸ，Ｙに対応する連続稼働時間ＴＡを取得する。更に、演算部１ｂは、テーブル６に基づいて、ソフトウェアＺ，Ｘに対応する連続稼働時間ＴＣを取得する。
【００１８】
例えば、演算部１ｂは、ソフトウェアＸ，Ｙに対応する連続稼働時間ＴＡに基づいて、ソフトウェアＸ，Ｙの両方を導入した場合の不具合発生の可能性を評価し得る。より具体的には、連続稼働時間ＴＡが所定時間以上であれば、ソフトウェアＸ，Ｙでは共有資源の競合が発生するリスクが比較的低く、不具合の発生する可能性が低いと評価し得る。一般的に、不具合の発生はソフトウェア導入初期に集中する傾向があり、導入後、一定時間を経過すれば、当該ソフトウェアは安定稼働する傾向にあるからである。
【００１９】
一方、連続稼働時間ＴＡが所定時間よりも短ければ、ソフトウェアＸ，Ｙでは共有資源の競合が発生するリスクに対して注意を要すると評価し得る。ソフトウェアＸ，Ｙの連続稼働時間が比較的短い場合、両ソフトウェアの動作中に共有資源の競合により、いずれか一方が停止している可能性があるからである。この場合、演算部１ｂは、更にソフトウェアＸ，Ｙの両方が起動していた期間におけるエラーの発生数を基に、不具合の発生する可能性を評価してもよい。例えば、一定期間のエラーの発生頻度が所定頻度以上であれば、ソフトウェアＸ，Ｙでは共有資源の競合が発生するリスクが比較的高く、不具合の発生する可能性が高いと評価してもよい。また、一定期間のエラーの発生頻度が所定頻度よりも少なければ、不具合の発生する可能性について注意を要すると評価してもよい。なお、演算部１ｂは、エラーの発生数による評価を行うために、各ソフトウェアの動作実績に基づいて、２以上のソフトウェアが起動中であった期間における当該２以上のソフトウェアそれぞれのエラーの発生数を、連続稼働時間と共に取得してもよい。
【００２０】
同様にして、演算部１ｂは、ソフトウェアＺ，Ｘに対応する連続稼働時間ＴＣに基づいて、ソフトウェアＺ，Ｘの両方を導入した場合の不具合の発生状況を評価し得る。こうして、演算部１ｂは、ソフトウェアＹ，Ｚそれぞれに対して、情報処理装置２に新たにソフトウェアＸを導入した場合の不具合発生の可能性を評価する。例えば、演算部１ｂは、ソフトウェアＸ，Ｙの組、ソフトウェアＸ，Ｚの組それぞれに対する評価結果を、別個に、ソフトウェアＸの導入についての影響に関する指標αとして、出力してもよい。すると、不具合の原因となるソフトウェアのユーザによる特定を支援できる。
【００２１】
あるいは、演算部１ｂは、ソフトウェアＹ，Ｚそれぞれに対する評価結果から、総合的な判断結果を作成し、総合的な判断結果を、ソフトウェアＸの導入についての影響に関する指標αとして出力してもよい。例えば、演算部１ｂは、情報処理装置２に対し、ソフトウェアＹに対するソフトウェアＸの導入についての影響の評価結果、および、ソフトウェアＺに対するソフトウェアＸの導入についての影響の評価結果を得る。具体的には、両方の評価結果の少なくともいずれかで、不具合発生の可能性が比較的高いと評価されている場合、演算部１ｂは、情報処理装置２に対してソフトウェアＸを導入した場合に不具合が発生する可能性が高いと評価し、当該評価結果を指標αとしてもよい。一方、両方の評価結果で不具合発生の可能性が比較的低いと評価されている場合、演算部１ｂは、情報処理装置２に対してソフトウェアＸを導入した場合に不具合が発生する可能性が低いと評価し、当該評価結果を指標αとしてもよい。
【００２２】
演算部１ｂは、ソフトウェア導入支援装置１に接続されたディスプレイなどの表示装置に指標αを出力し、当該表示装置により指標αの内容を表示させてもよい。指標αの内容は、不具合が発生する可能性を示す数値、記号または文字列によって表示されてもよい。また、演算部１ｂは、ネットワーク５を介して、情報処理装置２などの他の情報処理装置に指標αを出力してもよい。例えば、この場合、指標αを受信した他の情報処理装置は、当該他の情報処理装置に接続された表示装置に指標αを出力し、表示させることができる。例えば、ユーザは、指標αの表示を確認することで、情報処理装置２にソフトウェアＸを導入する際の不具合が発生する可能性を予め把握できる。ユーザは、確認に応じて、情報処理装置２に対してソフトウェアＸを導入するか否かを決定することもできる。
【００２３】
上記の例では、主に２つのソフトウェアが起動中であった期間から当該２つのソフトウェアの連続稼働時間を求める場合を例示したが、演算部１ｂは、３つ以上のソフトウェアが起動中であった期間から当該３つ以上のソフトウェアの連続稼働時間を求めてもよい。演算部１ｂは、３つ以上のソフトウェアの連続稼働時間を基に、指標αを評価してもよい。例えば、３つのソフトウェアが起動中であった期間の合計を連続稼働時間として求め、当該連続稼働時間が所定時間よりも長いか否かに応じて指標αを評価することも考えられる。
【００２４】
こうして、ソフトウェア導入支援装置１は、ソフトウェア導入による不具合回避を支援できる。例えば、ソフトウェア導入による不具合を回避するために、導入される可能性のある、全てのソフトウェアについて他のソフトウェアとの共有資源の競合などを事前に調査することも考えられる。しかし、調査の対象となるソフトウェアの数は膨大であり、また、作成元も様々であり、このような調査を事前に行うことは容易でない。
【００２５】
一方、ソフトウェア導入支援装置１では、情報処理装置２，３，４を運用しながら蓄積したソフトウェアの実績により、ソフトウェアの導入についての影響に関する指標を評価するので、事前に調査を行うよりも効率的に評価を行える。例えば、各情報処理装置では、様々なソフトウェアが導入され、利用され得る。ソフトウェア導入支援装置１は、複数の情報処理装置でのソフトウェアの実績を基にするので、評価対象にできるソフトウェアおよびソフトウェアの組合せの網羅性（カバレッジ）を容易に向上できる。また、事前の調査をユーザに強いるよりも、ユーザの作業の省力化を図れる。
【００２６】
なお、演算部１ｂは、同一のソフトウェアの組合せに対する動作実績を２以上の情報処理装置から取得し、２以上の情報処理装置における連続稼働時間の実績を得ることも考えられる。その場合、演算部１ｂは、取得した連続稼働時間の実績を、ソフトウェアの組合せ、および、情報処理装置毎の識別情報に対応付けて記憶部１ａに格納する。そして、演算部１ｂは、情報処理装置毎に算出された連続稼働時間に応じて当該ソフトウェアの組合せでの動作時の安定性を情報処理装置毎に評価してもよい。例えば、演算部１ｂは、安定に動作したと評価された情報処理装置の数および安定に動作しなかったと評価された情報処理装置の数により指標αを決定してもよい。
【００２７】
より具体的には、演算部１ｂは、導入対象のソフトウェアＸと導入済のソフトウェアＹに着目したとき、安定に動作したと評価された情報処理装置の数の、ソフトウェアＸ，Ｙに関して評価対象となった情報処理装置の全数に対する割合が比較的多ければ、ソフトウェアＸの導入に際して不具合が発生する可能性が比較的低いと評価する。一方、演算部１ｂは、安定に動作しなかったと評価された情報処理装置の数の、ソフトウェアＸ，Ｙに関して評価対象となった情報処理装置の全数に対する割合が比較的多ければ、ソフトウェアＸの導入に際して不具合が発生する可能性が比較的高いと評価する。こうして、演算部１ｂは、複数の情報処理装置から収集したソフトウェアの稼働実績により、不具合が発生する可能性についての評価の精度を向上できる。
【００２８】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、収集サーバ１００，１００ａ，１００ｂ、管理サーバ２００および診断サーバ３００を含む。収集サーバ１００，１００ａ，１００ｂ、管理サーバ２００および診断サーバ３００は、ネットワーク１０に接続されている。ネットワーク１０は、例えばＬＡＮ（Local Area Network）である。
【００２９】
収集サーバ１００，１００ａ，１００ｂは、ユーザの業務に用いられるサーバコンピュータである。収集サーバ１００，１００ａ，１００ｂは、ユーザの業務を支援する種々のソフトウェアを実行する。例えば、収集サーバ１００，１００ａ，１００ｂは、ユーザが利用するクライアント装置（図示を省略している）からネットワーク１０を介して業務処理の要求を受け付けてもよい。その場合、収集サーバ１００，１００ａ，１００ｂは、当該要求に応じて業務処理を実行し、業務処理の結果をクライアント装置に応答する。収集サーバ１００，１００ａ，１００ｂそれぞれは、自サーバにおけるソフトウェアの動作実績の情報を取得し、管理サーバ２００へ送信する。
【００３０】
管理サーバ２００は、収集サーバ１００，１００ａ，１００ｂおよび診断サーバ３００の処理に用いられる情報を一元管理するサーバコンピュータである。例えば、管理サーバ２００は、収集サーバ１００，１００ａ，１００ｂにより生成された情報を取得し、各収集サーバの識別情報に対応付けて記憶する。管理サーバ２００は、記憶した情報を診断サーバ３００に提供することもある。
【００３１】
診断サーバ３００は、ユーザの業務に用いられるサーバコンピュータである（この点、収集サーバ１００，１００ａ，１００ｂと同様にユーザの業務に利用され得る）。診断サーバ３００は、診断サーバ３００に新たなソフトウェアが導入される際に、当該ソフトウェアの導入による当該ソフトウェアまたは診断サーバ３００に導入済の他のソフトウェアの動作に不具合が発生する可能性を評価する。なお、診断サーバ３００も、収集サーバ１００，１００ａ，１００ｂと同様に、自サーバにおけるソフトウェアの動作実績の情報を取得し、管理サーバ２００に送信してもよい。
【００３２】
ここで、収集サーバ１００，１００ａ，１００ｂおよび診断サーバ３００には、業務内容に応じて、種々のソフトウェアが新たに導入されたり、削除されたりする。あるソフトウェアをある情報処理装置（コンピュータ）に新たに導入することを、インストールと称することがある。また、ある情報処理装置にインストール済のソフトウェアを、当該情報処理装置から削除することをアンインストールと称することがある。
【００３３】
例えば、インストールでは、ソフトウェアを実行するための各種データ（例えば、実行プログラムや設定情報を含む）がインストール先の情報処理装置が備えるＨＤＤなどの不揮発性記憶装置に格納される。インストールでは、インストール先の情報処理装置のＯＳ（Operating System）が管理する情報に、ソフトウェアの動作設定が書き込まれることもある。また、例えば、アンインストールでは、インストール時に格納された各種データが削除されたり、ＯＳが管理する情報に書き込まれたソフトウェアの動作設定が削除されたりする。
【００３４】
ソフトウェアのインストール時には、上記のように当該ソフトウェアを実行するための情報がインストール先の情報処理装置に書き込まれることになる。このとき、情報処理装置で利用可能な共有資源（例えば、ＴＣＰ（Transmission Control Protocol）／ＵＤＰ（User Datagram Protocol）のポート番号や共有ファイルなど）の利用についてソフトウェア間で競合が発生すると、ソフトウェアの動作に支障をきたすことがある。例えば、複数のソフトウェアで同じポート番号を利用しようとして他の情報処理装置との適切な通信を行えない、共有ファイルの設定内容が複数のソフトウェアにより更新されてしまい各ソフトウェアが適切な設定で実行されないなどの問題が生じ得る。そこで、第２の実施の形態の情報処理システムでは、ソフトウェアの導入時における、このようなソフトウェアの動作に関する不具合の回避を支援する機能を提供する。
【００３５】
図３は、収集サーバのハードウェア例を示す図である。収集サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。各ユニットは収集サーバ１００のバスに接続されている。収集サーバ１００ａ，１００ｂ、管理サーバ２００および診断サーバ３００も収集サーバ１００と同様のハードウェアを用いて実現できる。
【００３６】
プロセッサ１０１は、収集サーバ１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３７】
ＲＡＭ１０２は、収集サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３８】
ＨＤＤ１０３は、収集サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。収集サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３９】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、収集サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４０】
入力信号処理部１０５は、収集サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４１】
媒体リーダ１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４２】
通信インタフェース１０７は、ネットワーク１０を介して他の装置と通信を行う。通信インタフェース１０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４３】
図４は、情報処理システムの機能例を示す図である。収集サーバ１００は、稼働情報記憶部１１０および収集部１２０を有する。稼働情報記憶部１１０は、ＲＡＭ１０２またはＨＤＤ１０３に確保された記憶領域を用いて実現され得る。収集部１２０は、プロセッサ１０１がＲＡＭ１０２に記憶されたプログラムを実行することで実現され得る。なお、収集サーバ１００ａ，１００ｂも、収集サーバ１００と同様の機能を有する（図４では、収集サーバ１００ａ，１００ｂの図示を省略している）。
【００４４】
稼働情報記憶部１１０は、稼働情報を記憶する。稼働情報は、収集サーバ１００にインストールされた２つのソフトウェアの組に対する動作の実績に関する情報である。稼働情報の取得の対象となるソフトウェアは、ＯＳ、ミドルウェアおよびユーザの業務を支援するアプリケーションソフトウェアなどを含み得る。
【００４５】
収集部１２０は、収集サーバ１００にインストールされたソフトウェアの起動や停止を監視し、ソフトウェアの動作の実績を取得し、稼働情報記憶部１１０に格納する。具体的には、収集部１２０は、ある２つのソフトウェアに対して、両方のソフトウェアが連続稼働していた期間を取得する。収集部１２０は、当該期間を積算することで、両方のソフトウェアが稼働していた連続稼働時間を算出し、稼働情報記憶部１１０に格納する。また、収集部１２０は、両方のソフトウェアが稼働していた期間における、両ソフトウェアに関するエラーの発生数を取得し、稼働情報記憶部１１０に格納する。例えば、収集部１２０は、収集サーバ１００のＯＳが出力するログ（該当のソフトウェアの識別情報を含む）や、各ソフトウェアが出力するログに基づいて、いずれかのソフトウェアで発生したエラーの発生数を取得し得る。
【００４６】
また、収集部１２０は、稼働情報記憶部１１０に記憶された稼働情報を、所定の周期（例えば、１時間〜数時間に１回や、１日１回など）で、管理サーバ２００に送信する。
管理サーバ２００は、管理情報記憶部２１０および管理部２２０を有する。管理情報記憶部２１０は、管理サーバ２００が備えるＲＡＭまたはＨＤＤなどの記憶装置に確保された記憶領域を用いて実現され得る。管理部２２０は、管理サーバ２００が備えるプロセッサが、管理サーバ２００が備える記憶装置に記憶されたプログラムを実行することで実現され得る。
【００４７】
管理情報記憶部２１０は、管理情報を記憶する。管理情報は、収集サーバ１００，１００ａ，１００ｂから取得した稼働情報を一元的に管理するための情報である。
管理部２２０は、収集サーバ１００，１００ａ，１００ｂから所定の周期で稼働情報を取得し、取得元の収集サーバの識別情報に対応付けて管理情報記憶部２１０に格納する。収集元の全サーバに関する稼働情報を１まとめにした情報を指して、管理情報と称している。管理部２２０は、診断サーバ３００の要求に応じて、管理情報の一部の情報を診断サーバ３００に提供する。
【００４８】
診断サーバ３００は、診断情報記憶部３１０および判定部３２０を有する。診断情報記憶部３１０は、診断サーバ３００が備えるＲＡＭまたはＨＤＤなどの記憶装置に確保された記憶領域を用いて実現され得る。判定部３２０は、診断サーバ３００が備えるプロセッサが、診断サーバ３００が備える記憶装置に記憶されたプログラムを実行することで実現され得る。
【００４９】
診断情報記憶部３１０は、診断情報を記憶する。診断情報は、診断サーバ３００によるソフトウェアのインストール時の不具合発生の可能性の判定に用いられる情報である。また、診断情報記憶部３１０は、管理サーバ２００から取得された情報（診断情報の元になる情報）も記憶する。
【００５０】
判定部３２０は、あるソフトウェアを診断サーバ３００にインストールする際に、診断サーバ３００に既にインストール済であるソフトウェアの情報、および、管理サーバ２００から取得した情報に基づいて、インストールによる不具合発生の可能性を判定する。判定部３２０は、診断サーバ３００に接続されたディスプレイなどの表示装置に判定結果を出力し、表示させる。
【００５１】
ここで、図４の例では、収集サーバ１００および診断サーバ３００の機能を分けて記載している。ただし、収集サーバ１００も稼働情報記憶部１１０および収集部１２０と併せて、診断サーバ３００の機能（診断情報記憶部３１０および判定部３２０に相当する機能）を有してもよい（収集サーバ１００ａ，１００ｂも同様）。また、診断サーバ３００も診断情報記憶部３１０および判定部３２０と併せて、収集サーバ１００の機能（稼働情報記憶部１１０および収集部１２０に相当する機能）を有してもよい。
【００５２】
図５は、連続稼働時間の例を示す図である。連続稼働時間は、ソフトウェアのインストール時点とアンインストール時点とを境界とし、各ソフトウェアがインストール時点とアンインストール時点の時間区間で連続稼働した時間を示す。
【００５３】
例えば、収集サーバ１００にソフトウェアＸ１，Ｘ２，Ｘ３，Ｘ４がインストールおよびアンインストールされる場合を考える。インストールされたソフトウェアは、収集サーバ１００において起動し動作する。時刻ｔａは、ソフトウェアＸ１がインストールされた時刻である。時刻ｔｂは、時刻ｔａよりも後の時刻であり、ソフトウェアＸ２がインストールされた時刻である。時刻ｔｃは、時刻ｔｂよりも後の時刻であり、ソフトウェアＸ３がインストールされた時刻である。時刻ｔｄは、時刻ｔｃよりも後の時刻であり、ソフトウェアＸ２がアンインストールされた時刻である。時刻ｔｅは、時刻ｔｄよりも後の時刻であり、ソフトウェアＸ４がインストールされた時刻である。時刻ｔｆは、時刻ｔｅよりも後の時刻であり、連続稼働時間を見積もる基準の時刻（例えば、現時刻）である。
【００５４】
時刻ｔａ，ｔｂの時間差は、時間Ｔ１である。時刻ｔｂ，ｔｃの時間差は、時間Ｔ２である。時刻ｔｃ，ｔｄの時間差は、時間Ｔ３である。時刻ｔｄ，ｔｅの時間差は、時間Ｔ４である。時刻ｔｅ，ｔｆの時間差は、時間Ｔ５である。
【００５５】
この場合、ソフトウェアＸ１の連続稼働時間は、時間Ｔ１＋Ｔ２＋Ｔ３＋Ｔ４＋Ｔ５である。ソフトウェアＸ２の連続稼働時間は、時間Ｔ２＋Ｔ３である。ソフトウェアＸ３の連続稼働時間は、時間Ｔ３＋Ｔ４＋Ｔ５である。ソフトウェアＸ４の連続稼働時間は、時間Ｔ５である。
【００５６】
更に、ソフトウェアＸ１，Ｘ２の組に対する連続稼働時間（すなわち、ソフトウェアＸ１，Ｘ２の両方が動作していた時間）は、時間Ｔ２＋Ｔ３である。ソフトウェアＸ１，Ｘ３の組に対する連続稼働時間は、時間Ｔ３＋Ｔ４＋Ｔ５である。ソフトウェアＸ１，Ｘ４の組に対する連続稼働時間は、時間Ｔ５である。ソフトウェアＸ２，Ｘ３の組に対する連続稼働時間は、時間Ｔ３である。ソフトウェアＸ３，Ｘ４の組に対する連続稼働時間は、時間Ｔ５である。
【００５７】
なお、図５の例において、収集サーバ１００がシャットダウンされてパワーオフになることもある。パワーオフ状態の期間がある場合はその期間に相当する時間を除いて連続稼働時間を求める（収集サーバ１００が再度パワーオン状態になれば、各ソフトウェアが起動され動作することになる）。すなわち、収集サーバ１００の起動／停止に伴って同じソフトウェアの組合せで連続動作していた期間が複数ある場合、当該期間の累積を連続稼働時間としてもよい。あるいは、当該複数の期間のうちの最長の期間を、収集サーバ１００における当該ソフトウェアの組合せに対する連続稼働時間としてもよい。
【００５８】
図６は、ローカル管理テーブルの例を示す図である。ローカル管理テーブル１１１は、稼働情報記憶部１１０に格納される。ローカル管理テーブル１１１は、収集部１２０による稼働情報の取得に用いられる。収集サーバ１００ａ，１００ｂおよび診断サーバ３００もローカル管理テーブル１１１と同様の情報を保持する。ローカル管理テーブル１１１は、サーバＩＤ（IDentifier）、ＳＥＱ（SEQuence）、ソフトウェア（１）、ソフトウェア（２）、チェック日時、連続稼働時間およびエラー回数の項目を含む。
【００５９】
サーバＩＤの項目には、サーバＩＤが登録される。サーバＩＤは、各サーバの識別情報である。ローカル管理テーブル１１１は収集サーバ１００によって作成されるので、サーバＩＤの項目には、収集サーバ１００のサーバＩＤが登録されることになる。収集サーバ１００のサーバＩＤは“１”であるとする。ＳＥＱの項目には、レコードに付与された番号が登録される。例えば、各レコードには昇順に番号が付与され、当該番号がＳＥＱの項目に登録される。ソフトウェア（１）の項目には、第１のソフトウェアの識別情報が登録される。ソフトウェア（２）の項目には、第２のソフトウェアの識別情報が登録される。ソフトウェア（２）の項目にはソフトウェアの識別情報が登録されないこともある。チェック日時の項目には、最後に連続稼働時間を確認した時刻（チェック日時）が登録される。エラー回数の項目には、チェック日時の項目に登録されたチェック日時と、１つ前のチェック日時との間の期間において第１のソフトウェアまたは第２のソフトウェアに関するエラーの発生回数が登録される。
【００６０】
例えば、ローカル管理テーブル１１１には、サーバＩＤが“１”、ＳＥＱが“１”、ソフトウェア（１）が“Ｂ”、ソフトウェア（２）が設定なし（設定なしをハイフン記号“−”で図示している）、チェック日時が“２０１５／４／１  ０：００”、連続稼働時間が“１時間”、エラー回数が“１”という情報が登録される。
【００６１】
これは、サーバＩＤ“１”に対応する収集サーバ１００におけるＳＥＱ“１”のレコードであり、ソフトウェアＢ単独の稼働情報であることを示す。また、連続稼働時間を最後に確認した時刻が２０１５年４月１日０時０分であり、ソフトウェアＢ単独での連続稼働時間が“１時間”であることを示す。更に、当該時刻と当該時刻よりも１つ前のチェック日時との間に発生したソフトウェアＢに関するエラーの発生回数が１回であったことを示す。
【００６２】
また、例えば、ローカル管理テーブル１１１には、サーバＩＤが“１”、ＳＥＱが“３”、ソフトウェア（１）が“Ｂ”、ソフトウェア（２）が“Ｃ”、チェック日時が“２０１５／４／１  ０：００”、連続稼働時間が“１時間”、エラー回数が“１”という情報が登録される。
【００６３】
これは、ＳＥＱ“１”のレコードと同様に、サーバＩＤ“１”に対応する収集サーバ１００におけるＳＥＱ“３”のレコードであり、ソフトウェアＢ，Ｃの組に関する稼働情報であることを示す。また、連続稼働時間を最後に確認した時刻が２０１５年４月１日０時０分であり、ソフトウェアＢ，Ｃ両方が動作していた連続稼働時間が“１時間”であることを示す。更に、当該時刻と当該時刻よりも１つ前のチェック日時との間に発生したソフトウェアＢまたはソフトウェアＣに関するエラーの発生回数が１回であったことを示す。ローカル管理テーブル１１１には、他のソフトウェアに関する稼働情報も同様に登録される。
【００６４】
図７は、マスタ管理テーブルの例を示す図である。マスタ管理テーブル１１２は、稼働情報記憶部１１０に格納される。収集サーバ１００ａ，１００ｂおよび診断サーバ３００もローカル管理テーブル１１１と同様の情報を保持する。マスタ管理テーブル１１２は、サーバＩＤ、ＳＥＱ、ソフトウェア（１）、ソフトウェア（２）、チェック日時、連続稼働時間、エラー回数、実績、エラー発生頻度および安全度の項目を含む。
【００６５】
ここで、サーバＩＤ、ＳＥＱ、ソフトウェア（１）、ソフトウェア（２）、チェック日時、連続稼働時間およびエラー回数に登録される内容は、ローカル管理テーブル１１１の同名の項目と同様である。ただし、マスタ管理テーブル１１２における連続稼働時間およびエラー回数には、累積値が登録される。実績の項目には、連続稼働時間が基準時間（実績閾値）よりも長いか否かを示す情報が登録される。エラー発生頻度の項目には、エラー回数を基に算出される一定期間内のエラー発生頻度が、基準頻度（エラー頻度閾値）よりも多いか否かを示す情報が登録される。安全度の項目には、実績およびエラー発生頻度を基に判断される安全度の評価結果を示す情報が登録される。安全度とは、該当のソフトウェア（またはソフトウェアの組）を動作させた場合のエラー発生の度合いを示す指標である。第２の実施の形態の例では、安全度は“安全”、“危険”、“不明”という３種類の区分を含む。“安全”は、安定に動作していたと評価されたことを示す（すなわち、不具合が発生した度合いが比較的少なかったことを示す）。“危険”は、安定に動作していなかったと評価されたことを示す（すなわち、不具合が発生した度合いが比較的多かったことを示す）。“不明”は、“安全”にも“危険”にも区分されなかったことを示す。
【００６６】
例えば、マスタ管理テーブル１１２には、サーバＩＤが“１”、ＳＥＱが“１”、ソフトウェア（１）が“Ｂ”、ソフトウェア（２）が設定なし、チェック日時が“２０１５／４／１  ０：００”、連続稼働時間が“２か月”、エラー回数が“５”、実績が“長い”、エラー発生頻度が“少ない”、安全度が“安全”という情報が登録される。
【００６７】
これは、収集サーバ１００においてソフトウェアＢが動作していた連続稼働時間が２か月であり、当該２か月の間のソフトウェアＢのエラー回数が５回であったことを示す。また、連続稼働時間２か月は、連続稼働時間の実績として実績閾値よりも長いことを示す。更に、当該２か月の間のエラー回数５は、エラー発生頻度としてはエラー頻度閾値よりも少ないことを示す。そして、収集サーバ１００においてソフトウェアＢを動作させた場合の安全度が“安全”と評価されたことを示す。
【００６８】
また、例えば、マスタ管理テーブル１１２には、サーバＩＤが“１”、ＳＥＱが“３”、ソフトウェア（１）が“Ｂ”、ソフトウェア（２）が“Ｃ”、チェック日時が“２０１５／４／１  ０：００”、連続稼働時間が“１か月”、エラー回数が“２”、実績が“長い”、エラー発生頻度が“少ない”、安全度が“安全”という情報が登録される。
【００６９】
これは、収集サーバ１００においてソフトウェアＢ，Ｃの両方が動作していた連続稼働時間が１か月であり、当該１か月の間のソフトウェアＢ，Ｃのエラー回数が２回であったことを示す。また、連続稼働時間１か月は、連続稼働時間の実績として実績閾値よりも長いことを示す。更に、当該１か月の間のエラー回数２は、エラー発生頻度としてはエラー頻度閾値よりも少ないことを示す。そして、収集サーバ１００においてソフトウェアＢ，Ｃの両方を動作させた場合の安全度が“安全”と評価されたことを示す。
【００７０】
また、例えば、マスタ管理テーブル１１２には、サーバＩＤが“１”、ＳＥＱが“６”、ソフトウェア（１）が“Ａ”、ソフトウェア（２）が“Ｃ”、チェック日時が“２０１５／４／１  ０：００”、連続稼働時間が“１０日”、エラー回数が“１０”、実績が“短い”、エラー発生頻度が“多い”、安全度が“危険”という情報が登録される。
【００７１】
これは、収集サーバ１００においてソフトウェアＡ，Ｃの両方が動作していた連続稼働時間が“１０日”であり、当該１０日の間のソフトウェアＡ，Ｃのエラー回数が１０回であったことを示す。また、連続稼働時間１０日は、連続稼働時間の実績として実績閾値よりも短いことを示す。更に、当該１０日の間のエラー回数１０は、エラー発生頻度としてはエラー頻度閾値よりも多いことを示す。そして、収集サーバ１００においてソフトウェアＡ，Ｃの両方を動作させた場合の安全度が“危険”と評価されたことを示す。
【００７２】
ここで、連続稼働時間“１日”は、２４時間に相当すると考えてよい。また、連続稼働時間“１か月”は、例えば、２４時間×３０日＝７２０時間に相当すると考えてよい。
図８は、全サーバ管理テーブルの例を示す図である。管理テーブル２１１は、管理情報記憶部２１０に格納される。管理テーブル２１１は、情報処理システムに含まれる各サーバから取得したマスタ管理テーブルの内容を格納したテーブルである。
【００７３】
管理テーブル２１１は、サーバＩＤ、ＳＥＱ、ソフトウェア（１）、ソフトウェア（２）、連続稼働時間、エラー回数、実績、エラー発生頻度および安全度の項目を含む。各項目に登録される情報は、マスタ管理テーブル１１２の同名の項目に登録される情報と同様である。管理テーブル２１１には、複数のサーバに関するレコードが登録される。各レコードが何れのサーバの情報であるかは、サーバＩＤによって識別される。
【００７４】
図９は、診断テーブルの例を示す図である。診断テーブル３１１は、診断情報記憶部３１０に格納される。診断テーブル３１１は、ソフトウェアＢ，Ｃ，Ｄが診断サーバ３００に既にインストール済で、ソフトウェアＡを診断サーバ３００に新たにインストールする場合を例示している。診断テーブル３１１は、ソフトウェア（１）、ソフトウェア（２）、実績数、安全数、注意数、危険数および総合判定の項目を含む。
【００７５】
ソフトウェア（１）の項目には、第１のソフトウェアの識別情報が登録される。ソフトウェア（２）の項目には、第２のソフトウェアの識別情報が登録される。実績数の項目には、他サーバにおいて、該当のソフトウェア（またはソフトウェアの組）が動作した実績の数が登録される。安全数の項目には、他サーバにおいて、該当のソフトウェア（またはソフトウェアの組）が動作した実績のうち、安全度が“安全”と評価された実績の数が登録される。注意数の項目には、他サーバにおいて、該当のソフトウェア（またはソフトウェアの組）が動作した実績のうち、安全度が“注意”と評価された実績の数が登録される。危険数の項目には、他サーバにおいて、該当のソフトウェア（またはソフトウェアの組）が動作した実績のうち、安全度が“危険”と評価された実績の数が登録される。総合判定の項目には、該当のソフトウェアまたはソフトウェアの組を動作させる際の安全度の指標の総合判定結果が登録される。総合判定結果は、実績数に対する、安全数、注意数、危険数それぞれの割合に基づいて判定される。総合判定結果は、“安全”、“危険”、“注意”の３種類の区分を含む。“安全”は、不具合が発生する可能性が比較的低いことを示す。“危険”は、不具合が発生する可能性が比較的高いことを示す。“注意”は、不具合が発生する可能性が、“安全”または“危険”の何れにも区分されず、注意を要することを示す。
【００７６】
例えば、診断テーブル３１１には、ソフトウェア（１）が“Ａ”、ソフトウェア（２）が設定なし、実績数が“４９８５”、安全数が“４２００”、注意数が“６８９”、危険数が“９６”、総合判定が“安全”という情報が登録される。
【００７７】
これは、ソフトウェアＡがインストールされて動作した他サーバの数（実績数）が４９８５であり、そのうち安全度が“安全”であるものが４２００、“注意”であるものが６８９、“危険”であるものが９６であることを示す。また、当該実績数に対する安全数、注意数および危険数から判定された安全度の指標の総合判定結果が“安全”であったことを示す。この場合、診断サーバ３００にソフトウェアＡをインストールして動作させたとしても、ソフトウェアＡ単独で動作させる分には、不具合が発生する可能性が比較的低いということになる。
【００７８】
また、例えば、診断テーブル３１１には、ソフトウェア（１）が“Ａ”、ソフトウェア（２）が“Ｂ”、実績数が“２５１１”、安全数が“２１０５”、注意数が“２０９”、危険数が“１９７”、総合判定が“安全”という情報が登録される。
【００７９】
これは、ソフトウェアＡ，Ｂの両方がインストールされて動作した他サーバの数（実績数）が２５１１であり、そのうち安全度が“安全”であるものが２１０５、“注意”であるものが２０９、“危険”であるものが１９７であることを示す。また、当該実績数に対する安全数、注意数および危険数から判定された安全度の指標の総合判定結果が“安全”であったことを示す。この場合、診断サーバ３００にソフトウェアＡをインストールし、ソフトウェアＡ，Ｂを並行して動作させても、不具合の発生する可能性が比較的低いということになる。
【００８０】
また、例えば、診断テーブル３１１には、ソフトウェア（１）が“Ａ”、ソフトウェア（２）が“Ｃ”、実績数が“２２４６”、安全数が“１０１０”、注意数が“４１２”、危険数が“８２４”、総合判定が“注意”という情報が登録される。
【００８１】
これは、ソフトウェアＡ，Ｃの両方がインストールされて動作した他サーバの数（実績数）が２２４６であり、そのうち安全度が“安全”であるものが１０１０、“注意”であるものが４１２、“危険”であるものが８２４であることを示す。また、当該実績数に対する安全数、注意数および危険数から判定された安全度の指標の総合判定結果が“注意”であったことを示す。この場合、診断サーバ３００にソフトウェアＡをインストールし、ソフトウェアＡ，Ｃを並行して動作させたときの、不具合の発生する可能性について注意を要するということになる。
【００８２】
また、例えば、診断テーブル３１１には、ソフトウェア（１）が“Ａ”、ソフトウェア（２）が“Ｄ”、実績数が“７９５”、安全数が“９８”、注意数が“４７”、危険数が“６５０”、総合判定が“危険”という情報が登録される。
【００８３】
これは、ソフトウェアＡ，Ｄの両方がインストールされて動作した他サーバの数（実績数）が７９５であり、そのうち安全度が“安全”であるものが９８、“注意”であるものが４７、“危険”であるものが６５０であることを示す。また、当該実績数に対する安全数、注意数および危険数から判定された安全度の指標の総合判定結果が“注意”であったことを示す。この場合、診断サーバ３００にソフトウェアＡをインストールし、ソフトウェアＡ，Ｄを並行して動作させると、不具合の発生する可能性が比較的高いということになる。
【００８４】
次に、第２の情報処理システムにおける処理手順を説明する。以下では、収集サーバ１００の手順を例示するが、他の収集サーバ（収集サーバ１００ａ，１００ｂなど）も収集サーバ１００と同様の手順を実行する。
【００８５】
図１０は、インストール時の管理レコードの登録例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。以下の説明では、収集サーバ１００にソフトウェアＡをインストールする場合について例示する。ただし、他のソフトウェアをインストールする場合も同様の手順となる。
【００８６】
（Ｓ１１）収集部１２０は、収集サーバ１００に対するソフトウェアＡのインストールを検出する。具体的には、収集部１２０は、収集サーバ１００にソフトウェアＡがインストールされると、ソフトウェアＡがインストールされたことを検出する。
【００８７】
（Ｓ１２）収集部１２０は、ローカル管理テーブル１１１から既存のレコードを読み込む。既存のレコードは、収集サーバ１００に既にインストール済のソフトウェア（ソフトウェアＡ以外）に関するレコードである。すなわち、収集部１２０は、ローカル管理テーブル１１１に基づいて、収集サーバ１００にインストール済のソフトウェア（ソフトウェアＡ以外）を得ることもできる。
【００８８】
（Ｓ１３）収集部１２０は、新たにインストールされたソフトウェアＡと、ステップＳ１２で取得したインストール済の他のソフトウェアとの組合せに関するレコードをローカル管理テーブル１１１に追加する。収集部１２０は、ソフトウェアＡ単独に関するレコードも、ローカル管理テーブル１１１に追加する。
【００８９】
図１１は、ローカル管理テーブルに対するレコードの追加例を示す図である。例えば、ローカル管理テーブル１１１に、ソフトウェアＢ，Ｃに関するレコード（ＳＥＱ“１”、“２”、“３”のレコード）が既に存在する場合に、収集サーバ１００にソフトウェアＡがインストールされることを考える。この場合、収集部１２０は、次の３つのレコードをローカル管理テーブル１１１に追加する。第１には、ソフトウェアＡ単独のレコード（ＳＥＱ“４”のレコード）である。第２には、ソフトウェアＡ，Ｂの組合せに関するレコード（ＳＥＱ“５”のレコード）である。第３には、ソフトウェアＡ，Ｃの組合せに関するレコード（ＳＥＱ“６”のレコード）である。
【００９０】
収集サーバ１００にソフトウェアＡがインストールされると、収集サーバ１００においてソフトウェアＡが動作可能となる。収集部１２０は、ソフトウェアＡの起動や停止を次の手順により管理する。
【００９１】
図１２は、ソフトウェア起動／停止時の処理例を示す図である。以下、図１２に示す処理をステップ番号に沿って説明する。
（Ｓ２１）収集部１２０は、ソフトウェアＡの起動を検出する。
【００９２】
（Ｓ２２）収集部１２０は、ソフトウェアＡをアクティブ（起動済）に設定する。例えば、収集部１２０は、ソフトウェアＡの識別情報に対応するフラグ（例えば、ＲＡＭ１０２上の所定の記憶領域に格納される）を、非アクティブ（停止済）からアクティブに変更してもよい。収集サーバ１００のＯＳによってソフトウェアＡの起動／停止状態を管理できる場合、収集部１２０は、ソフトウェアＡの起動／停止状態をＯＳから取得してもよい。
【００９３】
（Ｓ２３）収集部１２０は、起動されたソフトウェアＡを含むレコードをローカル管理テーブル１１１から選択する。
（Ｓ２４）収集部１２０は、ステップＳ２３で選択したレコードに対し、現時点の日時情報をチェック日時に設定する。
【００９４】
（Ｓ２５）収集部１２０は、ステップＳ２３で設定したレコードに対し、連続稼働時間とエラー回数とを初期化する。具体的には、収集部１２０は、連続稼働時間を０に、エラー回数を０に、それぞれ設定する。
【００９５】
（Ｓ２６）収集部１２０は、ソフトウェアＡの停止を検出する。
（Ｓ２７）収集部１２０は、ソフトウェアＡを非アクティブに設定する。例えば、収集部１２０は、ソフトウェアＡの識別情報に対応する前述のフラグをアクティブから非アクティブに変更してもよい。
【００９６】
図１３は、ソフトウェアの起動／停止の管理例を示す図である。図１３（Ａ）は、ソフトウェアＡが起動された際のソフトウェアＡの管理例を示す。例えば、ソフトウェアＡが起動されると、収集部１２０は、ソフトウェアＡに対応する所定のフラグをアクティブに設定することで、ソフトウェアＡを起動済のソフトウェアとして管理する。この場合、ローカル管理テーブル１１１上では、ソフトウェアＡに対応するレコード（ＳＥＱ“３”、“４”，“５”のレコード）が、連続稼働時間やエラー回数などの監視対象の候補となる。
【００９７】
図１３（Ｂ）は、ソフトウェアＡが停止された際のソフトウェアＡの管理例を示す。例えば、ソフトウェアＡが停止されると、収集部１２０は、ソフトウェアＡに対応する所定のフラグを非アクティブに設定することで、ソフトウェアＡを停止済のソフトウェアとして管理する。この場合、ローカル管理テーブル１１１上では、ソフトウェアＡに対応するレコード（ＳＥＱ“３”、“４”、“５”のレコード）が、連続稼働時刻やエラー回数などの監視対象の候補から外れる。
【００９８】
図１４は、連続稼働時間およびエラー回数の更新例を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。収集部１２０は、以下の手順を周期的（例えば、１時間に１回など）に実行する。
【００９９】
（Ｓ３１）収集部１２０は、ローカル管理テーブル１１１のうち、両ソフトウェアが起動済であるレコードを１つ選択する。選択対象となるレコードには、ローカル管理テーブル１１１に含まれるレコードのうち、ソフトウェア（１）にソフトウェアの識別情報が設定されているが、ソフトウェア（２）が設定なしであるレコードも含まれる。
【０１００】
（Ｓ３２）収集部１２０は、ステップＳ３１で選択したレコードの連続稼働時間を更新する。具体的には、収集部１２０は、当該レコードに含まれるチェック日時（前回連続稼働時間を更新した時刻）と現時刻との時間差を算出する。収集部１２０は、当該レコードに含まれる連続稼働時間に、算出した時間差を加算する。収集部１２０は、加算後の時間を、当該レコードの連続稼働時間の項目に設定する。
【０１０１】
（Ｓ３３）収集部１２０は、エラー回数を更新する。例えば、収集部１２０は、ステップＳ３１で選択したレコードに対応するソフトウェアについて、当該レコードに含まれるチェック日時から現時刻までに発生したエラー回数を取得する。収集部１２０は、エラー回数を各ソフトウェアのログから取得してもよいし、ＯＳのログから取得してもよい。収集部１２０は、各ソフトウェアで発生したエラーを、発生の都度、発生時刻に対応付けてＲＡＭ１０２上に記録しておき、記録した結果から各ソフトウェアのエラー回数を取得してもよい。そして、収集部１２０は、選択したレコードに含まれるエラー回数（前回の更新時刻までのエラー回数）に、今回取得したエラー回数を加算することで、ステップＳ３１で選択したレコードのエラー回数を更新する。
【０１０２】
（Ｓ３４）収集部１２０は、ステップＳ３１で選択したレコードのチェック日時を現時刻に更新する。
（Ｓ３５）収集部１２０は、両ソフトウェアが起動済であるレコードを全て処理済であるか否かを判定する。処理済である場合、処理を終了する。処理済でない場合、処理をステップＳ３１に進める。
【０１０３】
図１５は、各ソフトウェアが起動済であるレコードの特定例を示す図である。図１２，１３で例示したように、収集部１２０は、例えば収集サーバ１００にインストールされているソフトウェアＡ，Ｂ，Ｃそれぞれの起動／停止状態を管理する。例えば、ソフトウェアＡ，Ｂが起動済であり、ソフトウェアＣが停止済であるとする。
【０１０４】
この場合、ローカル管理テーブル１１１に含まれる複数のレコードのうち、各ソフトウェアが全て起動済であるレコードは、ＳＥＱ“１”、“４”、“５”のレコードということになる。よって、収集部１２０は、ＳＥＱ“１”、“４”、“５”のレコードを、各ソフトウェアが起動済であるレコードと特定する。
【０１０５】
図１６は、マスタ管理テーブルの更新例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。収集部１２０は、以下の手順を周期的（例えば、１日に１回など）に実行する（ローカル管理テーブル１１１に対する更新の周期よりも長い周期で実行する）。
【０１０６】
（Ｓ４１）収集部１２０は、ローカル管理テーブル１１１からレコードを１つ選択する。
（Ｓ４２）収集部１２０は、ステップＳ４１で選択したレコードの内容を基に、マスタ管理テーブル１１２を更新する。具体的には、収集部１２０は、ステップＳ４１で選択したレコード（更新元のレコード）のＳＥＱにより、マスタ管理テーブル１１２における更新先のレコード（ＳＥＱが一致するレコード）を選択する。そして、収集部１２０は、更新元のレコードのチェック日時を、更新先のレコードに設定する。また、収集部１２０は、更新元のレコードの連続稼働時間を、更新先のレコードの連続稼働時間に反映する（前回反映時点からの今回反映時点までの連続稼働時間を加算する）。更に、収集部１２０は、更新元のレコードのエラー回数を、更新先のレコードのエラー回数に加算する。収集部１２０は、当該更新処理後、更新元のレコードに対し、チェック日時を現時刻に設定し、連続稼働時間を０、エラー回数を０にそれぞれ設定する。マスタ管理テーブル１１２において、更新先のレコードが存在しない場合もある。この場合、収集部１２０は、更新元のレコードに対応するレコードをマスタ管理テーブル１１２に追加する（更新元のレコードのチェック日時、連続稼働時間およびエラー回数を、追加したレコードに登録する）。
【０１０７】
（Ｓ４３）収集部１２０は、マスタ管理テーブル１１２の各レコードのうち、ステップＳ４２で更新した更新先のレコードに含まれる連続稼働時間が、実績閾値よりも長いか否かを判定する。長い場合、処理をステップＳ４５に進める。長くない場合、処理をステップＳ４４に進める。実績閾値は、例えば、２０日や３０日（１か月）など運用に応じた値が予め定められる。
【０１０８】
（Ｓ４４）収集部１２０は、更新先のレコードの実績を「短い」に設定する。そして、処理をステップＳ４７に進める。
（Ｓ４５）収集部１２０は、更新先のレコードの実績を「長い」に設定する。
【０１０９】
（Ｓ４６）収集部１２０は、更新先のレコードの実績を「安全」に設定する。そして、処理をステップＳ５２に進める。
（Ｓ４７）収集部１２０は、更新先のレコードに含まれるエラー発生頻度が、エラー頻度閾値よりも多いか否かを判定する。多い場合、処理をステップＳ５０に進める。多くない場合、処理をステップＳ４８に進める。エラー頻度閾値は、例えば、１０日（２４０時間）当たり１回や２回など運用に応じた値が予め定められる。
【０１１０】
（Ｓ４８）収集部１２０は、更新先のレコードのエラー発生頻度を「少ない」に設定する。
（Ｓ４９）収集部１２０は、更新先のレコードの安全度を「不明」に設定する。そして、処理をステップＳ５２に進める。
【０１１１】
（Ｓ５０）収集部１２０は、更新先のレコードのエラー発生頻度を「多い」に設定する。
（Ｓ５１）収集部１２０は、更新先のレコードの安全度を「危険」に設定する。そして、処理をステップＳ５２に進める。
【０１１２】
（Ｓ５２）収集部１２０は、ローカル管理テーブル１１１の全レコードを処理済であるか否かを判定する。全レコードを処理済である場合、処理を終了する。全レコードを処理済でない場合、処理をステップＳ４１に進める。ステップＳ４１では、ローカル管理テーブル１１１のうち未処理のレコードが順次選択されて、上記の手順が繰り返される。
【０１１３】
なお、ステップＳ４６において、収集部１２０は、更新先のレコードのエラー発生頻度の設定を行ってもよい（例えば、ステップＳ４７と同様にエラー頻度閾値との比較に応じてエラー発生頻度に「少ない」、「多い」などを設定してもよい）。あるいは、ステップＳ４６では、エラー発生頻度に関わらずに（連続稼働時間のみによって）、安全度を「安全」と設定するため、エラー発生頻度を「少ない」と設定してもよい（または、この場合、エラー発生頻度を設定なしとすることも考えられる）。
【０１１４】
図１７は、マスタ管理テーブルの更新例を示す図である。例えば、ローカル管理テーブル１１１には、ＳＥＱ“１”〜“６”のレコードが登録されている場合を考える。収集部１２０は、例えば、１日１回などの所定の周期で、ローカル管理テーブル１１１の内容をマスタ管理テーブル１１２に反映させる。具体的には、収集部１２０は、マスタ管理テーブル１１２に登録された連続稼働時間やエラー回数を、ローカル管理テーブル１１１に基づいて更新する。そして、収集部１２０は、更新後の連続稼働時間およびエラー回数に基づいて、実績、エラー発生頻度および安全度の評価結果をマスタ管理テーブル１１２に登録する。
【０１１５】
このとき、収集部１２０は、連続稼働時間が一定の長さ（実績閾値）よりも長ければ、安全度を「安全」と評価する。一般的に、エラー発生はソフトウェアの導入初期に集中する傾向があり、導入後、一定時間を経過すれば、安定稼働する傾向にあるからである。一方、収集部１２０は、連続稼働時間が実績閾値以下であるとき、エラー発生頻度が比較的多ければ「危険」、エラー発生頻度が比較的少なければ「注意」と評価する。
【０１１６】
連続稼働時間が比較的短くエラー発生頻度が比較的多い場合に「危険」と評価する理由は、当該ソフトウェアまたはソフトウェアの組を収集サーバ１００で動作させると既存環境に悪影響がでる可能性が高いからである。また、連続稼働時間が比較的短くエラー発生頻度が比較的少ない場合に「注意」と評価する理由は、当該ソフトウェアまたはソフトウェアの組を収集サーバ１００で動作させる際の安全性を判断するには、実績が乏しいからである。
【０１１７】
図１８は、管理サーバによる管理情報の収集例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。管理部２２０は、以下の手順を周期的（例えば、１日に１回など）に実行する（例えば、マスタ管理テーブル１１２の更新周期と同等かそれよりも長い周期で実行する）。
【０１１８】
（Ｓ６１）管理部２２０は、ソフトウェアの管理情報を各収集サーバから収集する。例えば、管理部２２０は、マスタ管理テーブル１１２の登録内容を収集サーバ１００から取得する。管理部２２０は、収集サーバ１００ａ，１００ｂからも、マスタ管理テーブルの登録内容をそれぞれ取得する。
【０１１９】
（Ｓ６２）管理部２２０は、ステップＳ６１の収集内容を管理テーブル２１１に登録する。これにより、管理テーブル２１１に登録された内容が、収集サーバ１００，１００ａ，１００ｂそれぞれのマスタ管理テーブルと同期される。また、管理テーブル２１１では、収集サーバ１００，１００ａ，１００ｂそれぞれのマスタ管理テーブルの最新の状態が一元管理されることになる。
【０１２０】
なお、図１６，１８の例では、各収集サーバによりローカル管理テーブルを基にマスタ管理テーブルを更新し、管理サーバ２００によりマスタ管理テーブルの内容を各収集サーバから取得するものとした。一方、管理サーバ２００が、ローカル管理テーブルの内容を各収集サーバから所定の周期で取得し、管理テーブル２１１の登録内容を更新することも考えられる。すなわち、管理部２２０が図１６の手順を実行してもよい。
【０１２１】
診断サーバ３００は、新規ソフトウェアのインストールの際に、管理テーブル２１１の内容を管理サーバ２００から取得して、既存のソフトウェアに対する影響を評価する。
図１９は、インストール時の診断例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。以下の説明では、ソフトウェアＡを診断サーバ３００にインストールする場合を例示するが、他のソフトウェアをインストールする場合も同様の手順である。
【０１２２】
（Ｓ７１）判定部３２０は、診断サーバ３００へのソフトウェアＡのインストール開始を受け付ける。判定部３２０は、ソフトウェアＡのインストールを保留する。
（Ｓ７２）判定部３２０は、対象環境（本例では診断サーバ３００）にインストール済の他ソフトウェアを特定する。例えば、判定部３２０は、診断サーバ３００のＯＳに、診断サーバ３００にインストール済の他ソフトウェアを問い合わせてもよい。または、例えば、判定部３２０は、診断サーバ３００で作成済のローカル管理テーブルまたはマスタ管理テーブルに基づいて、診断サーバ３００にインストール済の他ソフトウェアを特定してもよい。
【０１２３】
（Ｓ７３）判定部３２０は、ソフトウェアＡとステップＳ７２で特定した他ソフトウェアと組合せに応じた診断用レコードを作成し、診断テーブル３１１に追加する。判定部３２０は、追加された各診断用レコードの実績数、安全数、注意数および危険数を初期値“０”に設定する。また、判定部３２０は、各診断用レコードの総合判定を設定なしとする。
【０１２４】
（Ｓ７４）判定部３２０は、診断用レコードのソフトウェアの組合せと同じ組合せの管理レコード（管理テーブル２１１のレコード）を管理サーバ２００から取得する。
（Ｓ７５）判定部３２０は、診断テーブル３１１から診断用レコードを１つ選択する。
【０１２５】
（Ｓ７６）判定部３２０は、選択した診断用レコード（着目する診断用レコード）の実績数に１を加算する。
（Ｓ７７）判定部３２０は、着目する診断用レコードに含まれるソフトウェアまたはソフトウェアの組に一致する管理レコードの安全度の設定値が「安全」であるか否かを判定する。「安全」である場合、処理をステップＳ７８に進める。「安全」でない場合、処理をステップＳ７９に進める。
【０１２６】
（Ｓ７８）判定部３２０は、着目する診断用レコードの安全数に１を加算する。そして、処理をステップＳ８２に進める。
（Ｓ７９）判定部３２０は、着目する診断用レコードに含まれるソフトウェアまたはソフトウェアの組に一致する管理レコードの安全度の設定値が「危険」であるか否かを判定する。「危険」である場合、処理をステップＳ８０に進める。「危険」でない場合、処理をステップＳ８１に進める。
【０１２７】
（Ｓ８０）判定部３２０は、着目する診断用レコードの危険数に１を加算する。そして、処理をステップＳ８２に進める。
（Ｓ８１）判定部３２０は、着目する診断用レコードの注意数に１を加算する。
【０１２８】
（Ｓ８２）判定部３２０は、全ての診断用レコードを処理済であるか否かを判定する。全ての診断用レコードを処理済である場合、処理をステップＳ８３に進める。全ての診断用レコードを処理済でない場合、処理をステップＳ７５に進める。
【０１２９】
（Ｓ８３）判定部３２０は、診断テーブル３１１に基づいて、ソフトウェアＡのインストールに関する診断結果の総合判定を行い、総合判定の結果を出力する。
図２０は、総合判定の例を示すフローチャートである。以下、図２０に示す処理をステップ番号に沿って説明する。なお、以下に示す手順は、図１９のステップＳ８３に相当する。
【０１３０】
（Ｓ９１）判定部３２０は、診断テーブル３１１から診断用レコードを１つ選択する。
（Ｓ９２）判定部３２０は、選択した診断用レコード（着目する診断用レコード）に含まれる実績数に対する危険数の割合が、危険数閾値以上であるか否かを判定する。危険数の割合が危険数閾値以上である場合、処理をステップＳ９３に進める。危険数の割合が危険数閾値以上でない場合、処理をステップＳ９４に進める。危険数閾値は、例えば、８０％や９０％など運用に応じて予め定められる。具体的には、診断サーバ３００が実行するソフトウェアの業務における重要度が高いほど、危険数閾値を小さくすることが考えられる。
【０１３１】
（Ｓ９３）判定部３２０は、着目する診断用レコードの総合判定を「危険」に設定する。そして、処理をステップＳ９７に進める。
（Ｓ９４）判定部３２０は、着目する診断用レコードに含まれる実績に対する安全数の割合が、安全数閾値以上であるか否かを判定する。安全数の割合が安全数閾値以上である場合、処理をステップＳ９５に進める。安全数の割合が安全数閾値以上でない場合、処理をステップＳ９６に進める。安全数閾値は、例えば、８０％や９０％など運用に応じて予め定められる。具体的には、診断サーバ３００が実行するソフトウェアの業務における重要度が高いほど、安全数閾値を大きくすることが考えられる。
【０１３２】
（Ｓ９５）判定部３２０は、着目する診断用レコードの総合判定を「安全」に設定する。そして、処理をステップＳ９７に進める。
（Ｓ９６）判定部３２０は、着目する診断用レコードの総合判定を「注意」に設定する。
【０１３３】
（Ｓ９７）判定部３２０は、診断テーブル３１１に含まれる全ての診断用レコードを処理済であるか否かを判定する。全ての診断用レコードを処理済である場合、処理をステップＳ９８に進める。全ての診断用レコードを処理済でない場合、処理をステップＳ９１に進める。
【０１３４】
（Ｓ９８）判定部３２０は、診断テーブル３１１に含まれる全ての診断用レコードに設定された総合判定の内容に基づいて、ソフトウェアＡのインストールに関する影響の総合診断結果を決定する。具体的には、判定部３２０は、各診断用レコードの総合判定に１つでも「危険」が含まれる場合、総合診断結果を「危険」と決定する。また、判定部３２０は、「危険」が含まれない場合、１つでも「注意」が含まれる場合、総合診断結果を「注意」と決定する。更に、判定部３２０は、全ての診断用レコードの総合判定が「安全」である場合、総合診断結果を「安全」と決定する。
【０１３５】
（Ｓ９９）判定部３２０は、診断結果を画面表示する。具体的には、判定部３２０は、診断サーバ３００に接続されたディスプレイなどの表示装置に診断結果を出力し、当該表示装置により診断結果の画像を表示させる。あるいは、診断サーバ３００は、ネットワーク１０に接続された他のサーバに診断結果を送信し、他のサーバによって診断結果を表示させてもよい。表示される内容には、インストール対象であるソフトウェアＡと診断サーバ３００にインストール済の他ソフトウェアとの間で判定された総合判定の内容、および、各総合判定によって決定された総合診断結果の内容が含まれる。
【０１３６】
判定部３２０は、診断結果の画像と共に、ソフトウェアＡのインストールを継続するか否かを入力する入力部を表示装置に表示させてもよい。すると、ユーザは、診断結果を確認した上で、診断サーバ３００に対するソフトウェアＡのインストールを継続するか、中止するかを診断サーバ３００に入力できる。また、判定部３２０は、例えば、総合診断結果が「危険」の場合、ソフトウェアＡのインストールを強制的に中止してもよい。
【０１３７】
図２１は、危険度／安全度の算出例を示す図である。図２１では、診断テーブル３１１に基づく危険度および安全度の算出例を示す。具体的には、ソフトウェアＡを診断サーバ３００にインストールしてソフトウェアＡ単独で動作させる際の危険度（危険数÷実績数）は、２％＝９６÷４９８５（左辺を百分率で示しているため、右辺に乗じる“×１００”の記載を省略する）である。安全度（安全数÷実績数）は、８４％＝４２００÷４９８５である。
【０１３８】
ソフトウェアＡを診断サーバ３００にインストールしてソフトウェアＡ，Ｂの両方を動作させる際の危険度は、８％＝１９７÷２５１１である。安全度は、８４％＝２１０５÷２５１１である。
【０１３９】
ソフトウェアＡを診断サーバ３００にインストールしてソフトウェアＡ，Ｃの両方を動作させる際の危険度は、３７％＝８２４÷２２４６である。安全度は、４５％＝１０１０÷２２４６である。
【０１４０】
ソフトウェアＡを診断サーバ３００にインストールしてソフトウェアＡ，Ｄの両方を動作させる際の危険度は、８２％＝６５０÷７９５である。安全度は、１２％＝９８÷７９５である。
【０１４１】
図２２は、診断結果表示画面の例を示す図である。判定部３２０は、インストール対象のソフトウェアＡおよび診断サーバ３００に既にインストールされているソフトウェアＢ，Ｃ，Ｄについて、評価結果を含む診断結果表示画面２０の情報を生成し、表示装置に出力する。表示装置は、診断結果表示画面２０を表示する。
【０１４２】
例えば、診断結果表示画面２０は、ソフトウェアＡを単独で動作させる際の評価結果を含む。診断テーブル３１１によれば、ソフトウェアＡ（“＜対象ソフトウェア＞”の欄に識別名が表示される）について、全体の実績数が“４９８５”、安全数が４２００、注意数が“６８９”、危険数が“９６”である。したがって、“＜全体＞”、“＜安全＞”、“＜注意＞”、“＜危険＞”の各欄に、それぞれの値が表示される。また、各欄の値の下に、各値の実績数に対する割合が表示される。更に、診断結果表示画面２０は、ソフトウェアＡの行に、ソフトウェアＡの識別名と対応付けられた指示部２１を含む。
【０１４３】
指示部２１は、全体の実績数に対する、安全数の割合、注意数の割合および危険数の割合を基に判断されたソフトウェアＡ単独での動作に関する総合判定の結果を色により示す画像である。ソフトウェアＡ単独での動作については、総合判定が“安全”である。指示部２１は、“安全”を例えば青色で表す。更に、ソフトウェアＡの識別名の表示箇所、および、総合判定が“安全”と判断された根拠となる数値の表示箇所（指示部２１の例では、“＜安全＞”欄の“４２００”）も、指示部２１と同じ色で表示される（以下に示す他のソフトウェアについても同様）。
【０１４４】
また、診断結果表示画面２０は、“＜総合診断結果＞”の欄に、後述するインストール済のソフトウェアＢ，Ｃ，Ｄへの影響も考慮した総合診断結果を示す指示部２２を含む。本例において、ソフトウェアＡ、ソフトウェアＡ，Ｂの組、ソフトウェアＡ，Ｃの組、ソフトウェアＡ，Ｄの組に対する総合判定の結果から判定される総合診断結果は“危険”である。指示部２２は、“危険”を例えば赤色で表す。
【０１４５】
更に、診断結果表示画面２０は、診断サーバ３００にインストール済のソフトウェアＢ，Ｃ，ＤそれぞれとソフトウェアＡとの組合せに対する評価結果を含む。例えば、診断結果表示画面２０には、総合判定により危険度が高いと評価されたソフトウェアの順に画面上方から画面下方へ各評価結果が表示される。
【０１４６】
図２１の例によれば、ソフトウェアＡ，Ｂの両方を動作させる際の総合判定の結果は“安全”である。ソフトウェアＡ，Ｃの両方を動作させる際の総合判定の結果は“注意”である。ソフトウェアＡ，Ｄの両方を動作させる際の総合判定の結果は“危険”である。したがって、上から、ソフトウェアＡ，Ｄの組、ソフトウェアＡ，Ｃの組、ソフトウェアＡ，Ｂの組の順に評価結果が表示される。
【０１４７】
各組に対する全体の実績数、安全数、注意数および危険数は、ソフトウェアＡと同様に表示される。また、全体の実績数に対する安全数、注意数および危険数の割合もソフトウェアＡと同様に表示される。更に、診断結果表示画面２０は、指示部２３，２４，２５を含む。
【０１４８】
指示部２３は、ソフトウェアＡ，Ｄの両方を動作させる場合の総合判定の結果“危険”を示す画像である。指示部２３は、指示部２２と同様に、“危険”を例えば赤色で表す。指示部２４は、ソフトウェアＡ，Ｃの両方を動作させる場合の総合判定の結果“注意”を示す画像である。指示部２４は、“注意”を例えば黄色で表す。指示部２５は、ソフトウェアＡ，Ｂの両方を動作させる場合の総合判定の結果“安全”を示す画像である。指示部２５は、指示部２１と同様に“安全”を例えば青色で表す。
【０１４９】
上記の例によれば、ソフトウェアＡ、ソフトウェアＡ，Ｂの組、ソフトウェアＡ，Ｃの組、ソフトウェアＡ，Ｄの組に対する４つの総合判定の結果のうち、ソフトウェアＡ，Ｄの組に対する総合判定の結果が“危険”である。よって、判定部３２０は、総合診断結果を“危険”と決定し、指示部２２の表示色を赤色とする。
【０１５０】
なお、上記の例では、判定部３２０が出力する各指標（総合判定の結果および総合診断結果）を指示部２１，２２，２３，２４，２５の色によって表すものとしたが、他の方法によって表してもよい。例えば、指示部２１，２２，２３，２４，２５は、“安全”、“注意”、“危険”などを表す文字、文字列または図形を表示する、“安全”、“注意”、“危険”に応じた点滅周期で表示するなどが考えられる。更に、判定部３２０は、総合診断結果の“危険”や“注意”などを、診断サーバ３００に接続されたスピーカから警告音を発生させることでユーザに通知してもよい。
【０１５１】
また、第２の実施の形態では、主に２つのソフトウェアの組合せに対して連続稼働時間を取得する例を示した。その理由は、複数のソフトウェアを同時に稼働し、その全て、または、いずれかのソフトウェアが正常に動作しない場合、主な原因は、ソフトウェア間の共有資源（ポート番号、共有ファイルなど）の競合だからである。すなわち、共有資源の競合は、異なる２種類のソフトウェアの組合せに対して管理すれば足りる。ただし、３以上のソフトウェアの組合せに対して連続稼働時間を取得してもよい。３以上のソフトウェアの組合せに対して連続稼働時間を取得する場合も、組合せ毎に、ローカル管理テーブル１１１、マスタ管理テーブル１１２、管理テーブル２１１および診断テーブル３１１の各レコードが登録される。診断サーバ３００は、第２の実施の形態で例示した方法によって、これらのテーブルを基に、３以上のソフトウェアの組合せ毎の総合判定を行える。
【０１５２】
このように、第２の実施の形態の情報処理システムによれば、運用中のサーバから２以上のソフトウェアの組合せ毎に連続稼働時間の実績を収集して、あるサーバに新規ソフトウェアを導入する際に既存ソフトウェアとの相性判断に利用する。これにより、ソフトウェア導入による不具合の回避を支援できる。
【０１５３】
ここで、第２の実施の形態の例では、診断サーバ３００にソフトウェアＡがインストールされる際に、診断サーバ３００によりインストールの影響を評価する処理を例示した。これに対し、診断サーバ３００は、他のサーバ（例えば、収集サーバ１００，１００ａ，１００ｂなど）に新たにソフトウェアがインストールされる際に、他のサーバにおける当該ソフトウェアのインストールの影響を評価してもよい。その場合、診断サーバ３００は、インストール先のサーバの識別名とインストール対象のソフトウェアの識別名との入力を受け付ける。すると、診断サーバ３００は、インストール先のサーバの識別名を基に、インストール先のサーバにインストール済のソフトウェアを管理サーバ２００から取得できる。例えば、管理サーバ２００は、診断サーバ３００からインストール先のサーバの識別名を含む問い合わせを受け付けて、管理テーブル２１１から当該サーバの識別名に対応するインストール済のソフトウェアを検索し、診断サーバ３００に提供し得る。そして、診断サーバ３００は、インストール対象のソフトウェアおよびインストール先のサーバにインストール済のソフトウェアに対応する管理レコードを管理サーバ２００から更に取得する。すると、診断サーバ３００は、第２の実施の形態の手順により、インストール先のサーバに対してインストール対象のソフトウェアをインストールしたときの影響を評価できる。
【０１５４】
また、収集サーバ１００，１００ａ，１００ｂおよび診断サーバ３００では、あるソフトウェアを実行するための動作環境（例えば、ハードウェアやＯＳなど）が同一であったり異なっていたりすることもある。その場合、管理サーバ２００は、収集サーバ１００，１００ａ，１００ｂから動作環境の情報（例えば、ハードウェアやＯＳの情報など）を取得し、当該動作環境の情報をサーバＩＤに対応づけて保持してもよい。すると、管理サーバ２００は、例えば診断サーバ３００におけるソフトウェアの動作環境に応じた管理レコードを、診断サーバ３００に提供可能となる。
【０１５５】
更に、収集サーバ１００，１００ａ，１００ｂおよび診断サーバ３００とは別個に、管理サーバ２００を設けて、管理テーブル２１１により各サーバのソフトウェアの動作実績に関する情報を一元管理するものとしたが、管理サーバ２００を設けなくてもよい。例えば、管理サーバ２００を設けずに、診断サーバ３００などいずれかのサーバが、各サーバからソフトウェアの動作実績に関する情報を収集して管理テーブル２１１と同等の情報を保持し、管理サーバ２００と同等の機能を担ってもよい（例えば、管理部２２０を診断サーバ３００に設けてもよい）。
【０１５６】
なお、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１５７】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【０１５８】
以上の第１，第２の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  コンピュータに、
前記コンピュータと通信可能な複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、
収集した前記動作実績に基づいて、前記複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出し、
情報処理装置に対して前記複数のソフトウェアのいずれかを新たに導入する際に、前記複数のソフトウェアのいずれかを新たに導入する導入対象の情報処理装置に既に導入されているソフトウェアを特定する情報と、新たに導入する前記ソフトウェアを含む前記２以上のソフトウェアについての前記連続稼働時間とに基づいて、前記導入対象の情報処理装置に対する新たに導入する前記ソフトウェアの導入についての影響に関する指標を出力する、
ことを実行させることを特徴とするソフトウェア導入支援プログラム。
【０１５９】
（付記２）  前記出力では、情報処理装置毎に算出した前記連続稼働時間に応じて前記２以上のソフトウェアの動作時の安定性を前記情報処理装置毎に評価し、安定に動作したと評価された情報処理装置の数および安定に動作しなかったと評価された情報処理装置の数により前記指標を決定し、決定した前記指標を出力する、付記１記載のソフトウェア導入支援プログラム。
【０１６０】
（付記３）  前記出力では、前記安定性の評価対象とした情報処理装置の全数に対する安定に動作したと評価された情報処理装置の数の第１の割合と、前記全数に対する安定に動作しなかったと評価された情報処理装置の数の第２の割合とを算出し、前記第１の割合および前記第２の割合に応じて、前記２以上のソフトウェアを動作させた際にエラーが発生する可能性の高さを示す前記指標を出力する、付記２記載のソフトウェア導入支援プログラム。
【０１６１】
（付記４）  前記評価では、前記連続稼働時間が閾値以下である場合に、前記２以上のソフトウェアの動作時の安定性を、前記連続稼働時間における前記２以上のソフトウェアに関するエラーの発生頻度に基づいて評価する、付記２または３記載のソフトウェア導入支援プログラム。
【０１６２】
（付記５）  前記出力では、新たに導入する前記ソフトウェアと既に導入されている他のソフトウェアとの組合せ毎に前記指標を出力する、付記１乃至４のいずれか１つに記載のソフトウェア導入支援プログラム。
【０１６３】
（付記６）  前記出力では、前記２以上のソフトウェアを動作させた際にエラーが発生する可能性の高さを示す前記指標を含む画面情報を出力する、付記１乃至５のいずれか１つに記載のソフトウェア導入支援プログラム。
【０１６４】
（付記７）  情報処理装置に既に導入されているソフトウェアを特定する情報を記憶する記憶部と、
複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、収集した前記動作実績に基づいて、前記複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出し、情報処理装置に対して前記複数のソフトウェアのいずれかを新たに導入する際に、前記記憶部に記憶された情報と、新たに導入する前記ソフトウェアを含む前記２以上のソフトウェアについての前記連続稼働時間とに基づいて、導入対象の情報処理装置に対する新たに導入する前記ソフトウェアの導入についての影響に関する指標を出力する演算部と、
を有することを特徴とするソフトウェア導入支援装置。
【０１６５】
（付記８）  コンピュータが、
前記コンピュータと通信可能な複数の情報処理装置における複数のソフトウェアそれぞれの動作実績を収集し、
収集した前記動作実績に基づいて、前記複数のソフトウェアに含まれる２以上のソフトウェアの双方が動作した連続稼働時間を算出し、
情報処理装置に対して前記複数のソフトウェアのいずれかを新たに導入する際に、前記複数のソフトウェアのいずれかを新たに導入する導入対象の情報処理装置に既に導入されているソフトウェアを特定する情報と、新たに導入する前記ソフトウェアを含む前記２以上のソフトウェアについての前記連続稼働時間とに基づいて、前記導入対象の情報処理装置に対する新たに導入する前記ソフトウェアの導入についての影響に関する指標を出力する、
ことを特徴とするソフトウェア導入支援方法。
【符号の説明】
【０１６６】
１  ソフトウェア導入支援装置
１ａ  記憶部
１ｂ  演算部
２，３，４  情報処理装置
５  ネットワーク
６  テーブル
【図１】
2017033079.tif 000003
【図２】
2017033079.tif 000004
【図３】
2017033079.tif 000005
【図４】
2017033079.tif 000006
【図５】
2017033079.tif 000007
【図６】
2017033079.tif 000008
【図７】
2017033079.tif 000009
【図８】
2017033079.tif 000010
【図９】
2017033079.tif 000011
【図１０】
2017033079.tif 000012
【図１１】
2017033079.tif 000013
【図１２】
2017033079.tif 000014
【図１３】
2017033079.tif 000015
【図１４】
2017033079.tif 000016
【図１５】
2017033079.tif 000017
【図１６】
2017033079.tif 000018
【図１７】
2017033079.tif 000019
【図１８】
2017033079.tif 000020
【図１９】
2017033079.tif 000021
【図２０】
2017033079.tif 000022
【図２１】
2017033079.tif 000023
【図２２】
2017033079.tif 000024