(57)【特許請求の範囲】
【請求項１】
複数の第１コンピュータと分析コンピュータとを有する計算機システムにおける分析情報提供方法であって、
前記複数の第１コンピュータに含まれ、所定のアプリケーションをインストール済みかつ起動済みである、一つ以上の第１コンピュータは、前記所定のアプリケーション起動以前に行った複数の構成変更の情報及び前記所定のアプリケーションの起動結果の履歴を含むログを、前記分析コンピュータに送信し、
前記分析コンピュータは、前記ログを受信し、前記ログに基づいて、各構成変更後の前記所定のアプリケーションの起動結果を特定し、構成変更の種別毎に、各種別の構成変更後の前記所定のアプリケーション起動のうち、失敗した回数の割合である起動失敗率を計算し、
前記複数の第１コンピュータに含まれる、前記一つ以上の第１コンピュータ以外の他の第１コンピュータが：
（１）前記分析コンピュータから前記所定のアプリケーションに関する構成変更の種別毎の起動失敗率を含む第１の情報を受信し、
（２）前記起動失敗率に基づいて、前記所定のアプリケーションの起動が失敗する原因となる構成変更の種別を表示する、
ことを特徴とした分析情報提供方法。
【請求項２】
請求項１記載の分析情報提供方法であって、
前記第１の情報に含まれる起動失敗率は、前記分析コンピュータが前記ログに基づいて検知した全ての構成変更の種別の一部の種別の各々についての起動失敗率であって、
前記一部の種別は、前記起動失敗率に基づいて前記分析コンピュータが選択した、
ことを特徴とした分析情報提供方法。
【請求項３】
請求項２記載の分析情報提供方法であって、
前記第１の情報には前記起動失敗率を計算したときを示す集計時間を含み、
前記他の第１コンピュータは、前記集計時間を表示する、
ことを特徴とした分析情報提供方法。
【請求項４】
請求項３記載の分析情報提供方法であって、
前記分析コンピュータは、前記ログに基づいて前記構成変更の種別毎に、当該構成変更後に前記所定のアプリケーションの起動が成功した割合である起動成功率を計算し、
前記他の第１コンピュータは、
（３）前記分析コンピュータから前記所定のアプリケーションに関する構成変更の種別毎の起動成功率を含む第２の情報を受信し、
（４）前記起動成功率に基づいて、前記所定のアプリケーションの起動が成功する原因となる構成変更の種別を表示する、
ことを特徴とした分析情報提供方法。
【請求項５】
請求項４記載の分析情報提供方法であって、
前記他の第１コンピュータは、前記所定のアプリケーション以外の複数のアプリケーションをインストール済みであり、
前記他の第１コンピュータは、前記全ての構成変更の種別に含まれる所定の種別について、起動が失敗する可能性のあるアプリケーションを前記所定のアプリケーション及び前記複数のアプリケーションから選択し、選択したアプリケーションの識別子を表示する、
ことを特徴とした分析情報提供方法。
【請求項６】
請求項５記載の分析情報提供方法であって、
前記（１）の処理は、前記所定のアプリケーションのインストールに関連して実行する、
ことを特徴とした分析情報提供方法。
【請求項７】
請求項６記載の分析情報提供方法であって、
前記種別とは、構成項目又は／及び変更タイプである、
ことを特徴とした分析情報提供方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してコンピュータ内の原因分析に関し、より詳細には、構成の変更を分析することによって知識データベースを使用することなくアプリケーションの失敗の解決策を見つけるための構成の変更を伴う原因分析に関する。
【０００２】
デスクトップ・コンピューティング環境の管理者にとってもっともストレスの大きい仕事の１つは、トラブルが発生した事例の原因分析（トラブルシューティング）である。原因分析はまた、呼者に対して解決策を提供する必要のあるヘルプデスク要員にとっても決定的なものとなる。エンド・ユーザは、多くの種類のソフトウエアをインストールし、またはＯＳの設定を変更する傾向にあり、それが問題を生じさせることがある。さらに、多くの自動アップ・グレード・プログラムがエンド・ユーザのコンピュータ内で日常的に走っていることから、エンド・ユーザの自覚なしにコンピュータの構成が変更され得る。したがって、エンド・ユーザは、いつ構成が障害のあるものとなったかがわからず、いつから問題が生じていたかを思い出せないことがある。その種のデスクトップ・コンピューティング環境の管理者またはヘルプデスク要員は、エンド・ユーザに解決策を提供するために、自分たちの専門知識を用いてトラブルの背景を深く知る必要がある。
【０００３】
現在の解決策は、たとえば、コンピュータ内のイベント・ログを遠隔調査するテクノロジ、構成項目およびそれらの変更履歴を収集し、ストアするテクノロジ、アプリケーションの起動を検出し、それらの起動履歴をストアするテクノロジ、過去の解決策における知識をストアするテクノロジ、および上に述べた情報を組み合わせることによって根本原因を演繹するテクノロジを含む。
【０００４】
特許文献１は、イベント・ログ、構成の変更、および知識データベースによって根本原因を演繹する例である。段落０１３４は、目標監視コンピュータからのエラー・ログ、イベント情報、および構成の変更の時系列データの収集を開示している。段落０１３７および図１６、１７、および１８は、目標コンピュータ上におけるエラー状況と過去のデータにおけるそれの比較を開示している。
【０００５】
イベント・ログを遠隔収集する例は、特許文献２および特許文献３を含む。特許文献４は知識ベースを使用する障害分析の例である。特許文献５はエラー・ログを使用する障害分析の例である。特許文献６は構成変更を遠隔取得する例である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７‐２９３３９３号
【特許文献２】米国特許第６，２８９，３７９号
【特許文献３】米国特許第５，８５７，１９０号
【特許文献４】米国特許第６，０１２，１５２号
【特許文献５】米国特許第６，５９８，１７９号
【特許文献６】米国特許出願公開第２００７／０２１４１９３  Ａ１号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
管理者またはヘルプデスク要員は、イベント・ログ、構成変更履歴、アプリケーション起動履歴、またはこれらの類を精査することによって解決策を提供する種類の知識を必要とする。知識は、他者によって記述された『原因』および『解決策』を与える知識データベースから獲得可能である。知識データベースを誰かが最新に維持する必要があることから、これは維持費用を必要とする。
【０００８】
本発明のもう一つの課題は、エンドユーザが構成変更を行う際に、知識データベースの使用を伴うことなく、構成変更に関連するソフトウェアの問題分析情報を提供することである。
【課題を解決するための手段】
【０００９】
本発明の例示的な実施態様は、知識データベースの必要性を伴うことなく、どの構成変更が問題を生じさせたかを決定するテクニックを提供する。したがって本発明は、根本原因を提供しないが、取り除かれる必要がある『容認限界』（すなわち、最終回答）を提供する。本発明は、『根本原因』指向と言うよりは、むしろ解決策指向の問題を取り扱う直接的な方法を提供する。
【００１０】
エンド・ユーザが問い合わせを行う。ヘルプデスクが分析を開始する。最初のステップで目標期間を検出する。目標期間の検出のために、原因分析プログラムが、アプリケーション起動の最後の成功およびアプリケーション起動の最初の失敗を、イベント・ログおよびアプリケーション起動履歴両方に基づいて検出する。構成変更の検出については、構成変更が、構成変更履歴と目標期間検出の結果の組み合わせによって決定される。これらの構成変更が、アプリケーション起動に影響を与えたおそれがある。これらの構成変更の１つが容認限界であることになる。次のステップは、ほかのコンピュータのチェックである。原因である可能性がもっとも高い構成変更を決定するために、原因分析プログラムは、同じ構成変更を経験したほかのコンピュータをチェックする。原因分析プログラムは、各構成変更が行われる前および後のアプリケーション起動の結果をチェックし、カウントする。当該ほかのコンピュータ内において同じ構成変更が見つかると、プログラムは、そのコンピュータ内において各構成変更が同じ問題を生じさせたか、または修復したかをチェックする。プログラムは、すべてのコンピュータについて類似の事例をカウントする。その後に続いて、プログラムは、各構成変更についてのすべてのインスタンスに対する成功から失敗への変化を伴うインスタンスの比および失敗から成功への変化を伴うインスタンスの比を計算する。原因分析プログラムは、その後その結果を表示する。分析の結果は、図表を用いてランク付けの形式で示される。ヘルプデスクは、いずれの構成変更がもっとも影響を受けやすいかについて質問に答えることができる。
【００１１】
本発明は、人間によって記述される知識データベースをまったく使用しない。ユーザが根本原因を知った場合であっても、どのようにしてそれを容易に修復するかをユーザが知らないこともあるため、根本原因を見つけることを求めない。それに代えて本発明は容認限界を識別する。ユーザが行うべきは、その容認限界を取り除くことである。ユーザにとっては、問題を修復する方が、根本原因が何かを告げられるより効果的である。
【００１２】
本発明の態様は、複数のコンピュータのうちの目標コンピュータのための原因分析の方法に指向されており、それにおいて目標コンピュータは、第１の失敗時においてコンピュータ・アプリケーションのアプリケーション起動失敗を、第１の失敗時に先行する第１の成功時においてコンピュータ・アプリケーションのアプリケーション起動成功を、第１の成功時と第１の失敗時の間の第１の時間期間内にコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している（たとえば図１４参照）。この方法は、（１）コンピュータ・アプリケーションの第１の時間期間の間に生じた１つまたは複数の第１の構成変更を識別するステップ、および（２）原因構成変更分析（Ａ）または修復構成変更分析（Ｂ）のうちの少なくとも１つを実行するステップを包含する。分析（Ａ）は、それらの複数のコンピュータのうちの目標コンピュータを除くほかのすべてのコンピュータの各々について、前記ほかのすべてのコンピュータの各々が、第２の成功時において同一のコンピュータ・アプリケーションのアプリケーション起動成功を、第２の成功時より後の第２の失敗時において同一のコンピュータ・アプリケーションのアプリケーション起動失敗を、第２の成功時と第２の失敗時の間の第２の時間期間内に同一のコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している、ほかのアプリケーション起動失敗のインスタンスを識別すること、および第２の時間期間の間に生じた１つまたは複数の第２の構成変更を識別すること、および当該１つまたは複数の第２の構成変更のそれぞれについての合計の原因構成変更数を、目標コンピュータを除いた複数のコンピュータのすべてについて合計することによって獲得することを含む（たとえば図１７参照）。分析（Ｂ）は、それらの複数のコンピュータのうちの目標コンピュータを除くほかのすべてのコンピュータの各々について、前記ほかのすべてのコンピュータの各々が、第３の失敗時において同一のコンピュータ・アプリケーションのアプリケーション起動失敗を、第３の失敗時より後の第３の成功時において同一のコンピュータ・アプリケーションのアプリケーション起動成功を、第３の失敗時と第３の成功時の間の第３の時間期間内に同一のコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している、アプリケーション起動成功のインスタンスを識別すること、および第３の時間期間の間に生じた１つまたは複数の第３の構成変更を識別すること、および当該１つまたは複数の第３の構成変更のそれぞれについての合計の修復構成変更数を、目標コンピュータを除いた複数のコンピュータのすべてについて合計することによって獲得することを含む（たとえば図１９参照）。
【００１３】
本発明の別の態様は、原因分析のシステムに指向されており、当該システムは、目標コンピュータを含む複数のコンピュータ、およびそれら複数のコンピュータに接続された分析コンピュータを有する。分析コンピュータは、上記のステップ（１）および（２）を実行するべくプログラムされる。いくつかの実施態様においては、分析コンピュータが上記複数のコンピュータのうちの１つになる（たとえば図２５参照）。
【００１４】
本発明の別の態様は、上記のステップ（１）および（２）を実行するべくデータ・プロセッサをコントロールするための複数のインストラクションをストアしているコンピュータ可読ストレージ媒体に指向されている。
【００１５】
いくつかの実施態様においては、方法がさらに、原因構成変更結果（Ａ１）または修復構成変更結果（Ｂ１）のうちの少なくとも１つについての結果を呈示するステップを包含する。ステップ（Ａ１）においては方法が、１つまたは複数の第２の構成変更のそれぞれについて、前記ほかのすべてのコンピュータの各々について識別されたアプリケーション起動失敗のインスタンスの数、および前記ほかのすべてのコンピュータの各々のための１つまたは複数の第２の構成変更のそれぞれを伴うすべてのインスタンスの数をリストすることを包含する（たとえば図１０参照）。ステップ（Ｂ１）においては方法が、１つまたは複数の第３の構成変更のそれぞれについて、前記ほかのすべてのコンピュータの各々について識別されたアプリケーション起動成功のインスタンスの数、および前記ほかのすべてのコンピュータの各々のための１つまたは複数の第３の構成変更のそれぞれを伴うすべてのインスタンスの数をリストすることを包含する（たとえば図１２参照）。
【００１６】
いくつかの実施態様においては、ステップ（１）および（２）が、複数のコンピュータ・アプリケーションについて実行される。さらに方法は、複数のコンピュータ・アプリケーションのそれぞれについて、原因構成変更結果（Ａ２）または修復構成変更結果（Ｂ２）のうちの少なくとも１つについての結果を呈示するステップを包含する。ステップ（Ａ２）においては方法が、１つまたは複数の第２の構成変更のそれぞれについて、前記ほかのすべてのコンピュータの各々について識別されたアプリケーション起動失敗のインスタンスの数、および前記ほかのすべてのコンピュータの各々のための１つまたは複数の第２の構成変更のそれぞれを伴うすべてのインスタンスの数をリストすること、および複数のコンピュータ・アプリケーションのそれぞれについて分析した日時をリストすることを包含する（たとえば図２１参照）。ステップ（Ｂ２）においては方法が、１つまたは複数の第３の構成変更のそれぞれについて、前記ほかのすべてのコンピュータの各々について識別されたアプリケーション起動成功のインスタンスの数、および前記ほかのすべてのコンピュータの各々のための１つまたは複数の第３の構成変更のそれぞれを伴うすべてのインスタンスの数をリストすること、および複数のコンピュータ・アプリケーションのそれぞれについて分析した日時をリストすることを包含する。
【００１７】
特定の実施態様においては方法が、さらに、指定されたコンピュータ・アプリケーションについて、整合原因構成変更分析（Ａ３）または整合修復構成変更分析（Ｂ３）のうちの少なくとも１つを実行するステップを包含する。ステップ（Ａ３）においては方法が、指定されたコンピュータ・アプリケーションと整合するコンピュータ・アプリケーションについての（Ａ２）の結果を整合する原因構成変更結果として検索し、当該整合する原因構成変更結果を分析のために取り出すことを含む（たとえば図２２参照）。ステップ（Ｂ３）においては方法が、指定されたコンピュータ・アプリケーションと整合するコンピュータ・アプリケーションについての（Ｂ２）の結果を整合する修復構成変更結果として検索し、当該整合する修復構成変更結果を分析のために取り出すことを含む。
【００１８】
いくつかの実施態様においては方法が、さらに、組み合わせ原因構成変更分析（Ｃ）または組み合わせ修復構成変更分析（Ｄ）のうちの少なくとも１つを実行するステップを包含する。ステップ（Ｃ）においては方法が、複数のコンピュータのうちの目標コンピュータを除くほかのすべてのコンピュータの各々について、前記ほかのすべてのコンピュータの各々が、第４の成功時において同一のコンピュータ・アプリケーションのアプリケーション起動成功を、第４の成功時より後の第４の失敗時において同一のコンピュータ・アプリケーションのアプリケーション起動失敗を、第４の成功時と第４の失敗時の間の第４の時間期間内に同一のコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している、ほかのアプリケーション起動失敗のインスタンスを識別すること、および第４の時間期間の間に生じた第４の構成変更の１つまたは複数の組み合わせを識別すること、および第４の構成変更の組み合わせのそれぞれについての合計の原因構成変更数を、目標コンピュータを除いた複数のコンピュータのすべてについて合計することによって獲得することを包含する（たとえば図２４参照）。ステップ（Ｄ）においては方法が、複数のコンピュータのうちの目標コンピュータを除くほかのすべてのコンピュータの各々について、前記ほかのすべてのコンピュータの各々が、第５の失敗時において同一のコンピュータ・アプリケーションのアプリケーション起動失敗を、第５の失敗時より後の第５の成功時において同一のコンピュータ・アプリケーションのアプリケーション起動成功を、第５の失敗時と第５の成功時の間の第５の時間期間内に同一のコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している、アプリケーション起動成功のインスタンスを識別すること、および第５の時間期間の間に生じた第５の構成変更の１つまたは複数の組み合わせを識別すること、および１つまたは複数の第５の構成変更のそれぞれについての合計の修復構成変更数を、目標コンピュータを除いた複数のコンピュータのすべてについて合計することによって獲得することを包含する。
【００１９】
いくつかの実施態様においては方法が、さらに、組み合わせ原因構成変更結果（Ｃ１）または組み合わせ修復構成変更結果（Ｄ１）のうちの少なくとも１つについての結果を呈示するステップを包含する。ステップ（Ｃ１）においては方法が、第４の構成変更の１つまたは複数の組み合わせのそれぞれについて、前記ほかのすべてのコンピュータの各々について識別されたアプリケーション起動失敗のインスタンスの数、および前記ほかのすべてのコンピュータの各々のための第４の構成変更の１つまたは複数の組み合わせのそれぞれを伴うすべてのインスタンスの数をリストすることを含む。ステップ（Ｄ１）においては方法が、第５の構成変更の１つまたは複数の組み合わせのそれぞれについて、前記ほかのすべてのコンピュータの各々について識別されたアプリケーション起動成功のインスタンスの数、および前記ほかのすべてのコンピュータの各々のための第５の構成変更の１つまたは複数の組み合わせのそれぞれを伴うすべてのインスタンスの数をリストすることを含む。
【００２０】
本発明の別の態様は、複数のコンピュータのうちの目標コンピュータについての原因分析を実行するためのコンピュータ・システム内における方法に指向されており、それにおいて目標コンピュータは、第１の失敗時においてコンピュータ・アプリケーションのアプリケーション起動失敗を、第１の失敗時に先行する第１の成功時においてそのコンピュータ・アプリケーションのアプリケーション起動成功を、第１の成功時と第１の失敗時の間の第１の時間期間内にそのコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している。この方法は、コンピュータ・アプリケーションの第１の時間期間の間に生じた１つまたは複数の第１の構成変更、および当該１つまたは複数の第１の構成変更のそれぞれの第１の構成変更に対応する絵図表であって、失敗率の領域および成功率の領域を有する絵図表をリストする原因構成変更テーブルを呈示するステップを包含する。失敗率の領域は、複数のコンピュータのうちの目標コンピュータを除くほかのすべてのコンピュータの各々について、前記ほかのすべてのコンピュータの各々が、第２の成功時において同一のコンピュータ・アプリケーションのアプリケーション起動成功を、第２の成功時より後の第２の失敗時において同一のコンピュータ・アプリケーションのアプリケーション起動失敗を、第２の成功時と第２の失敗時の間の第２の時間期間内に同一のコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している、ほかのアプリケーション起動失敗のインスタンスを識別する失敗事例の表現を示す。第２の時間期間の間には、テーブル上にリストされた対応する第１の構成変更に等しい第２の構成変更が生じる。成功率の領域は、複数のコンピュータのうちの目標コンピュータを除くほかのすべてのコンピュータの各々について、前記ほかのすべてのコンピュータの各々が、第３の成功時において同一のコンピュータ・アプリケーションのアプリケーション起動成功を、第３の成功時より後の第３の失敗時において同一のコンピュータ・アプリケーションのアプリケーション起動失敗を、第３の成功時と第３の失敗時の間の第３の時間期間内に同一のコンピュータ・アプリケーションのそのほかのアプリケーション起動成功を伴うことなく、かつそのほかのアプリケーション起動失敗を伴うことなしに経験している、ほかのアプリケーション起動失敗のインスタンス以外を識別する成功事例の表現を示す。第３の時間期間の間には、テーブル上にリストされた対応する第１の構成変更に等しい第３の構成変更が生じる。
【００２１】
いくつかの実施態様においては、上記の絵図表が棒グラフを包含し、失敗率の領域は、失敗事例の数または失敗事例および成功事例の両方の合計数と比較したときの失敗事例のパーセンテージのうちの少なくとも１つを示し、失敗成功領域は、成功事例の数または失敗事例および成功事例の両方の合計数と比較したときの成功事例のパーセンテージのうちの少なくとも１つを示す。原因構成変更テーブルは、１つまたは複数の第１の構成変更の構成項目および変更タイプ、１つまたは複数の第１の構成変更に対応する変更日時、および失敗率の領域および成功率の領域を示す絵図表をリストする。さらにこの方法は、構成項目、変更タイプ、変更日時、および絵図表の失敗率のうちの任意の１つに従って原因構成変更テーブルを並べ替えるための並べ替えキー指標をユーザに対して呈示するステップ、およびユーザにより入力された並べ替えキー指標の選択に応答してユーザにより入力された選択に従って並べ替えられた原因構成変更テーブルを呈示するステップを包含する。
【００２２】
これらの、およびこのほかの本発明の特徴および利点は、以下の特定の実施態様の詳細な説明を検討することにより当業者に明らかなものとなるであろう。
【図面の簡単な説明】
【００２３】
【図１】本発明の方法および装置の適用が考えられるクライアント‐サーバ・アーキテクチャのためのハードウエア構成の例を図解したブロック図である。
【図２】図１のアーキテクチャに適用される本発明の機能ブロックの例を図解したブロック図である。
【図３】本発明の基本概念を図解したアプリケーション起動結果と構成変更の間の関係の例を示す説明図である。
【図４】原因分析プログラムのユーザ・インターフェースの例を示した説明図である。
【図５】原因分析プログラムの結果スクリーンの例を示した説明図である。
【図６】分析コンピュータ内に常駐するイベント・ログ・テーブルの例を示した説明図である。
【図７】分析コンピュータ内に常駐する構成変更履歴テーブルの例を示した説明図である。
【図８】分析コンピュータ内に常駐するアプリケーション起動履歴テーブルの例を示した説明図である。
【図９】本発明の第１の実施態様に従って分析コンピュータ内に常駐する原因構成変更一時テーブルの例を示した説明図である。
【図１０】分析コンピュータ内に常駐する原因構成変更テーブルの例を示した説明図である。
【図１１】分析コンピュータ内に常駐する修復構成変更一時テーブルの例を示した説明図である。
【図１２】分析コンピュータ内に常駐する修復構成変更テーブルの例を示した説明図である。
【図１３】分析コンピュータ内に常駐するログ収集プログラムによって実行されるところのログ収集を一例で図解したフローチャートである。
【図１４】本発明の第１の実施態様に従って分析コンピュータ内に常駐する原因分析プログラムによって実行されるところの原因分析を一例で図解したフローチャートである。
【図１５】分析コンピュータ内に常駐する目標期間検出によって実行されるところの目標期間検出プロセスを一例で図解したフローチャートである。
【図１６】分析コンピュータ内に常駐する起動結果チェッカによって実行されるところのアプリケーション起動結果をチェックするプロセスを一例で図解したフローチャートである。
【図１７】本発明の第１の実施態様に従って分析コンピュータ内に常駐する原因構成変更分析によって実行されるところの原因構成変更分析プロセスを一例で図解したフローチャートである。
【図１８】図１７の原因構成変更分析プロセスのサブルーチンを一例で図解したフローチャートである。
【図１９】分析コンピュータ内に常駐する修復構成変更分析によって実行されるところの修復構成変更分析プロセスを一例で図解したフローチャートである。
【図２０】図１９の修復構成変更分析プロセスのサブルーチンを一例で図解したフローチャートである。
【図２１】本発明の第２の実施態様に従って原因構成変更テーブルの例を示した説明図である。
【図２２】本発明の第２の実施態様に従って原因分析プログラムによって実行されるところの原因分析を一例で図解したフローチャートである。
【図２３】本発明の第３の実施態様に従って原因構成変更テーブルの例を示した説明図である。
【図２４】本発明の第３の実施態様に従って原因構成変更分析によって実行されるところの原因構成変更分析プロセスを一例で図解したフローチャートである。
【図２５】本発明の第４の実施態様に従って全体のシステムのハードウエア・アーキテクチャの構成、ソフトウエア・モジュール、およびテーブルの例を図解した説明図である。
【図２６】第５の実施態様における分析コンピュータと目標コンピュータ内エージェントの機能ブロックの例を図解したブロック図である。
【図２７】第５の実施態様における集計プログラムの処理の一例を図解したフローチャートである。
【図２８】第５の実施態様におけるエージェントの問題情報を提供するユーザインタフェースの例を示した説明図である。
【図２９】第５の実施態様におけるエージェントの対策情報を提供するユーザインタフェースの例を示した説明図である。
【図３０】第５の実施態様におけるエージェントの問題情報を提供するユーザインタフェースの別の例を示した説明図である。
【図３１】第６の実施態様における集計プログラムの処理の一例を図解したフローチャートである。
【図３２】第６の実施態様における原因分析プログラムの処理の一例を図解したフローチャートである。
【発明を実施するための形態】
【００２４】
以下の本発明の詳細な説明においては、開示の一部を形成し、かつ限定ではなく例証の手段として本発明を実施できる例示的な実施態様が示された添付図面を参照する。図面において、類似の番号は、いくつかの図を通じて実質的に類似の構成要素を記述する。さらに注意される必要があるが、この詳細な説明は、以下に述べられており、かつ図面内に図解されているとおりに多様な例示的な実施態様を提供するが、ここに述べられ、図解されている実施態様に本発明が限定されることはなく、当業者が知るとおり、または知ることになるとおり、ほかの実施態様への拡張が可能である。この明細書において『１つの実施態様』、『この実施態様』、または『これらの実施態様』と言及するときは、実施態様に関して述べられている特定の特徴、構造、または特性が本発明の少なくとも１つの実施態様に含まれている意味であり、この明細書の多様な箇所でのこれらの成句の出現は、必ずしもすべてが同一の実施態様を参照していない。それに加えて以下の詳細な説明においては、本発明の完全な理解を提供するために多くの特定の詳細が示されている。しかしながら当業者には明らかとなろうが、これらの特定の詳細がすべて本発明の実施に必要とならないこともある。そのほかの状況においては、不必要に本発明を不明瞭にすることがないように周知の構造、材料、回路、プロセス、およびインターフェースが詳細に説明されていないか、かつ／またはブロック図形式で図解されていることがある。
【００２５】
さらに、以下の詳細な説明のいくつかの部分は、コンピュータ内の動作のアルゴリズムおよび記号表現の形で与えられている。これらのアルゴリズム記述および記号表現は、データ処理分野の当業者によって自分たちの新機軸の本質をほかの当業者にもっとも効果的に伝えるために使用される手段である。アルゴリズムは、望ましい結末の状態または結果を導く一連の定義済みステップである。本発明においては、実行されるステップが、知覚可能な結果を達成するために知覚可能な量の物理的な操作を必要とする。必ずではないが、通常はこれらの量が、ストア、転送、結合、比較、およびそのほかの操作が可能な電気的または磁気的信号またはインストラクションの形式を取る。主として共通的慣習上の理由から、これらの信号をビット、値、要素、記号、文字、項、数、インストラクション、またはこれらの類として言及するとしばしば好都合であることが立証されている。しかしながらこれらの、および類似の用語のすべては適切な物理量に関連付けされるものであり、それらの量に適用される便宜上のラベルに過ぎないことを念頭に置く必要がある。特にほかに言及していない限り、以下の考察から明らかなとおり、この説明を通じて、『処理』、『コンピューティング』、『計算』、『決定』、『表示』、またはこれらの類といった用語を使用した考察が、コンピュータ・システムのレジスタおよびメモリ内の物理的な（電子的な）量として表されるデータを操作し、コンピュータ・システムのメモリまたはレジスタまたはそのほかの情報ストレージ、送信、または表示デバイス内の物理量として類似に表されるほかのデータに変換するコンピュータ・システムまたはそのほかの情報処理デバイスの動作およびプロセスを含むことが可能であると認識される。
【００２６】
本発明は、これにおける動作を実行するための装置にも関係する。この装置は、求められている目的のために特別に構成されたもの、または１つまたは複数のコンピュータ・プログラムによって選択的に起動されるかまたは再構成される１つまたは複数の汎用コンピュータを含むものとすることができる。その種のコンピュータ・プログラムは、限定ではないが光ディスク、磁気ディスク、読み出し専用メモリ、ランダム・アクセス・メモリ、ソリッド・ステート・デバイスおよびドライブ、または電子情報のストアに適したそのほかの任意タイプの媒体等のコンピュータ可読ストレージ媒体内にストアすることができる。ここで与えられているアルゴリズムおよび表示は、本質的に任意の特定のコンピュータまたはそのほかの装置に関係しない。多様な汎用システムを、この中にある教示に従ってプログラムおよびモジュールとともに使用してもよく、または望ましい方法ステップを実行する、より特化された装置を構成すると好都合なことも立証できる。それに加えて本発明は、いずれかの特定のプログラミング言語を参照して述べられていない。認識されることになろうが、多様なプログラミング言語を使用してここに述べられているとおりの本発明の教示を実装することができる。プログラミング言語（１つまたは複数）のインストラクションは、１つまたは複数の処理デバイス、たとえば中央処理ユニット（ＣＰＵ）、プロセッサ、またはコントローラによって実行され得る。
【００２７】
本発明の例示的な実施態様は、より詳細を以下に述べるとおり、知識データベースの使用を伴うことなしに構成変更を分析することによってアプリケーションの失敗に対する解決策を見つけるための装置、方法、およびコンピュータ・プログラムを提供する。
【００２８】
Ａ．  第１の実施態様
１．  システム構成
図１は、本発明の方法および装置の適用が考えられるクライアント‐サーバ・アーキテクチャのためのハードウエア構成の例を図解する。分析コンピュータ１０１および複数の目標コンピュータ１０２が、ＬＡＮ  １０３を通じて接続されている。分析コンピュータ１０１は、ＣＰＵ  １１１、メモリ１１２、ディスク１１３、ビデオ・インターフェース１１４、およびネットワーク・インターフェース１１５を含む汎用コンピュータである。各要素は、システム・バス１１６を通じて接続される。分析コンピュータ１０１は、そのメモリ１１２内に原因分析プログラム１２１およびログ収集プログラム１２２を有する。原因分析プログラム１２１は、ＣＰＵ  １１１によって実行される目標期間検出１３１、原因構成変更分析１３２、修復構成変更分析１３３、および起動結果チェッカ１３４を含む。分析コンピュータ１０１は、そのディスク１１３内に原因構成変更一時テーブル１４４、修復構成変更一時テーブル１４５、原因構成変更テーブル１４６、修復構成変更テーブル１４７、およびログ情報１２３を有する。ログ情報１２３は、イベント・ログ・テーブル１４１、アプリケーション起動履歴テーブル１４２、および構成変更履歴テーブル１４３を含む。分析コンピュータ１０１は、ＬＡＮ  １０３に接続されて複数の目標コンピュータ１０２からのログ情報１７１の収集に使用されるネットワーク・インターフェース１１５を有する。表示器１１７がビデオ・インターフェース１１４に接続され、原因分析プログラム１２１のユーザ・インターフェースおよび原因分析プログラム１２１による原因構成変更分析の結果の表示に使用される。
【００２９】
目標コンピュータ１０２は、ＣＰＵ  １５１、メモリ１５２、ディスク１５３、ビデオ・インターフェース１５４、およびネットワーク・インターフェース１５５を含む汎用コンピュータである。各要素は、システム・バス１５６を通じて接続される。目標コンピュータ１０２は、ＬＡＮ  １０３を介して分析コンピュータ１０１にログ情報１７１を送信するエージェント１６１を有する。目標コンピュータ１０２は、そのディスク１５３内にログ情報１７１を有する。表示器１５７がビデオ・インターフェース１５４に接続されている。
【００３０】
図２は、図１のアーキテクチャに適用される本発明の機能ブロック図の例を図解する。ログ収集プログラム１２２は、分析コンピュータ１０１内に常駐し、目標コンピュータ１０２内に常駐する各エージェント１６１と通信することによってログ情報１７１を収集し、その情報を、分析コンピュータ１０１内のログ情報１２３のイベント・ログ・テーブル１４１、アプリケーション起動履歴テーブル１４２、および構成変更履歴テーブル１４３にストアする。
【００３１】
原因分析プログラム１２１は、ログ情報１２３を読み出し、以下に示すとおり、原因構成変更分析を実行する。目標期間検出１３１は、イベント・ログ・テーブル１４１、アプリケーション起動履歴テーブル１４２、および構成変更履歴テーブル１４３を読み出し、特定のアプリケーションが問題なく起動できた時点と、そのアプリケーションが問題なく起動できなかった（＝失敗した）時点の間における期間を検出する。その後目標期間検出１３１は、構成変更履歴テーブル１４３を参照することによって当該期間内の目標コンピュータ上の構成変更を決定する。原因構成変更分析１３２は、そのほかのコンピュータのログ情報１２３をチェックして結果を原因構成変更テーブル１４６にストアする。原因構成変更一時テーブル１４４は、原因構成変更分析１３２が原因構成変更を分析するときの一時データとして使用される。
【００３２】
修復構成変更分析１３３は、修復構成変更を検出して結果を修復構成変更テーブル１４７にストアする。修復構成変更一時テーブル１４５は、修復構成変更分析１３３が修復構成変更を分析するときの一時データとして使用される。修復構成変更は、アプリケーション起動失敗等の問題のある状況を修復する構成変更である。起動結果チェッカ１３４は、イベント・ログ・テーブル１４１およびアプリケーション起動履歴テーブル１４２両方を参照することによって特定のアプリケーションが問題なく起動できたか否かを検出するサブルーチンである。
【００３３】
図３は、本発明の基本概念を図解したアプリケーション起動結果と構成変更の間の関係の例３０１〜３０４を示す。
【００３４】
図式３０１は、この原因構成変更分析の目標コンピュータ１０２の状況を示す。図式３０１によれば、成功したアプリケーション起動と失敗した起動の間に４つの構成変更が生じている。これらの構成変更の間に、このほかの起動はない。したがってアプリケーション起動失敗は、これら４つの構成変更のうちの１つによって生じた可能性がある。図式３０２、３０３、および３０４は、そのほかのコンピュータの状況を示しており、それらは詳細な分析のために使用されることになる。
【００３５】
図式３０２によれば、別のコンピュータＡに同じ構成変更が生じているが、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８』の削除および『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０』の追加のいずれもそのアプリケーションの起動に影響を与えていない。したがって、これら２つの構成変更がそのアプリケーションの起動に影響を与えた確信度はより低くなる。これに対して、『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』および『ＰＡＴＣＨ‐２３２２』の追加が成功と失敗の間における結果をもたらしている。したがって、これら２つの構成変更がそのアプリケーションの起動に影響を与えた確信度はより高くなる。
【００３６】
図式３０３によれば、『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』の追加が成功と失敗の間における結果をもたらしている。したがって、この構成変更がアプリケーションの起動に影響を与えた確信度がさらに高くなる。さらに失敗の後の『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』の削除が失敗と成功の間における結果をもたらしている。したがって『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』の削除が問題を修復したと見られる。この構成変更がアプリケーションの起動を修復したであろうという確信度がより高くなる。それに加えて『ＰＡＴＣＨ‐２３２２』の追加は、成功と成功の間における結果をもたらしていることから、この構成変更がアプリケーションの起動に影響を与えた確信度はより低くなる。
【００３７】
図式３０４によれば、『ＰＡＴＣＨ‐１２３４』の追加が失敗と成功の間にあり、したがって『ＰＡＴＣＨ‐１２３４』の追加が問題を修復したと見られる。この種類の観察は、２つの種類の結果を導くことが可能である。一方は、どの構成変更がアプリケーションの起動に影響を与えたかについての確信度である。他方は、どの構成変更がアプリケーションの起動の問題（失敗）を修復可能であるかについての確信度である。この例におけるほかのコンピュータの数は３であるが、分析の正確度は、ほかのコンピュータの数を増加することによってより高くすることが可能である。
【００３８】
２．  分析プログラムのユーザ・インターフェース
図４は、原因分析プログラム１２１のユーザ・インターフェース４０１の例を示す。ユーザは、このユーザ・インターフェース４０１を使用することによって分析を開始することができる。原因分析プログラム・ユーザ・インターフェース４０１は、分析条件を入力する２つのテキスト・ボックスを有する。一方はコンピュータＩＤ  ４１１であり、ユーザが分析目標コンピュータの識別子の指定に使用することができる。他方はアプリケーション名４１２であり、ユーザが、問題を有するアプリケーション名の指定に使用することができる。ユーザは、『分析開始』ボタン４１３を押すことによって分析を開始できる。
【００３９】
図５は、原因分析プログラム１２１の結果スクリーンの例を示す。可能性のある原因構成変更が、上側のペイン内にランク付けの形式で表示される。列５１１は構成項目を示す。列５１２は変更タイプを示す。列５１３は、構成変更（すなわち、５１１および５１２）に対応する日付および時刻を示す。図５は、４つの構成変更レコード５２１〜５２４を示す。列５１４は、構成変更に対応する確信度を示す棒グラフを示す。領域５２５は、すべてのコンピュータにおいて指定されたアプリケーションの起動に影響を与えたレコード５２１内の構成変更の事例（『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』‐『追加』）の数を示す。領域５２６は、すべてのコンピュータにおいて指定されたアプリケーションの起動に影響を与えなかった構成変更の事例（『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』‐『追加』）の数を示す。棒グラフの上のパーセンテージは、５２５と５２６の比を示す。記号５１５は、並べ替えキーの指標である。この例においては、数ではなくレート（確信度）の順でこれらの構成変更が示されている。この指標は、各列のリンク（アンダーライン）をクリックすることによってほかの列に移動させることができる。
【００４０】
可能性のある修復構成変更が、下側のペイン内にランク付けの形式で表示されている。列５３１は構成項目を示す。列５３２は変更タイプを示す。列５３３は、構成変更に対応する確信度を示す棒グラフを示す。図５は、３つの構成変更レコード５４１〜５４３を示す。領域５４４は、すべてのコンピュータにおいて指定されたアプリケーションの起動失敗を修復したレコード５４１内の構成変更の事例（『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』‐『削除』）の数を示す。領域５４５は、すべてのコンピュータにおいて指定されたアプリケーションの起動失敗を修復しなかった構成変更の事例（『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』‐『削除』）の数を示す。棒グラフの上のパーセンテージは、５４４と５４５の比を示す。記号５３４は、並べ替えキーの指標である。この例においては、数ではなくレート（確信度）の順でこれらの構成変更が示されている。
【００４１】
３．  データ構造
図６は、分析コンピュータ１０１内に常駐するイベント・ログ・テーブル１４１の例を示す。このテーブル内のイベント・ログ・データは、指定されたアプリケーションが問題なく起動できたか否かの決定に使用される。起動結果チェッカ１３４が、アプリケーションの起動時の直後にイベントの数をチェックする。起動の直後の特定の期間内にいくつかのイベントが見つかる場合に、起動結果チェッカ１３４は、そのアプリケーションの起動が失敗したと判断する。
【００４２】
イベント・ログ・テーブル１４１は、コンピュータＩＤ（６０１）、日時（６０２）、およびイベント・タイプ（６０３）の３つの列を含む。コンピュータＩＤ  ６０１、日時６０２、およびイベント・タイプ６０３は、ログ収集プログラム１２２によって各目標コンピュータ１０２のエージェント１６１から収集されてこのテーブル内にストアされる。各目標コンピュータ１０２内のイベント・ログ・テーブルのテーブル概要は、この実施態様における分析コンピュータ１０１のイベント・ログ・テーブル１４１のそれと同じである。図６は、Ｃｏｍｐ‐００１のためのイベント・ログ・レコード４１５〜４１７、Ｃｏｍｐ‐００２のためのレコード４２１〜４２２、Ｃｏｍｐ‐００３のためのレコード４３１、Ｃｏｍｐ‐００６のためのレコード４４１、およびＣｏｍｐ‐００７のためのレコード４５１〜４５２等々を示している。各目標コンピュータ１０２内のイベント・ログ・テーブルは、それ独自のイベント・ログ・データを有する。分析コンピュータ１０１内のイベント・ログ・テーブル１４１は、各目標コンピュータ１０２から収集されるすべてのイベント・ログ・データを有する。
【００４３】
図７は、分析コンピュータ１０１内に常駐する構成変更履歴テーブル１４３の例を示す。このテーブル内の構成変更履歴データが、成功したアプリケーションの起動と失敗した起動の間においてどの種類の構成変更が行われたか、またどの種類の構成変更が失敗したアプリケーションの起動を修復したかの決定に使用される。
【００４４】
構成変更履歴テーブル１４３は、コンピュータＩＤ  ７０１、変更日時７０２、構成項目７０３、および変更タイプ７０４の４つの列を含む。これら４つの列のデータは、ログ収集プログラム１２２によってそれぞれの目標コンピュータ１０２のエージェント１６１から収集されてこのテーブル内にストアされる。各目標コンピュータ１０２内の構成変更履歴テーブルのテーブル概要は、この実施態様における分析コンピュータ１０１の構成変更履歴テーブル１４３のそれと同じである。各目標コンピュータ１０２内の構成変更履歴テーブルは、それ独自の構成変更履歴データを有する。分析コンピュータ１０１内の構成変更履歴テーブル１４３は、各目標コンピュータ１０２から収集されるすべての構成変更履歴データを有する。
【００４５】
構成項目の例は、ソフトウエア、アプリケーション（追加／削除）、パッチ（追加／削除）、ドライバ（追加／削除）、ＯＳ設定、プロセッサ・スケジューリング（プログラム／バックグラウンド・サービス）、メモリ使用（プログラム／システム・キャッシュ）、任意のレジストリ項目、ハードウエア、メモリ容量、ハード・ドライブ容量、ＢＩＯＳ設定、ハイパー・スレッド（オン／オフ）、および仮想化テクノロジ（オン／オフ）を含む。図７は、Ｃｏｍｐ‐００１のための構成変更履歴レコード７１１〜７１６、Ｃｏｍｐ‐００２のためのレコード７２１〜７２６、Ｃｏｍｐ‐００３のためのレコード７３１〜７３４、Ｃｏｍｐ‐００４のためのレコード７４１〜７４３、Ｃｏｍｐ‐００５のためのレコード７５１〜７５２、Ｃｏｍｐ‐００６のためのレコード７６１〜７６２等々を示している。
【００４６】
図８は、分析コンピュータ１０１内に常駐するアプリケーション起動履歴テーブル１４２の例を示している。このテーブル内のアプリケーション起動履歴データが、構成変更前および後においていつアプリケーションが起動されたかの決定に使用される。このテーブルは、コンピュータＩＤ  ８０１、起動日時８０２、およびアプリケーション名８０３の３つの列を含む。これら３つの列のデータは、ログ収集プログラム１２２によってそれぞれの目標コンピュータ１０２のエージェント１６１から収集されてこのテーブル内にストアされる。各目標コンピュータ１０２内のアプリケーション起動履歴テーブルのテーブル概要は、この実施態様における分析コンピュータ１０１のアプリケーション起動履歴テーブル１４２のそれと同じである。各目標コンピュータ１０２内のアプリケーション起動履歴テーブルは、それ独自のアプリケーション起動履歴データを有する。分析コンピュータ１０１内のアプリケーション起動履歴テーブル１４２は、各目標コンピュータ１０２から収集されるすべてのアプリケーション起動履歴データを有する。図８は、Ｃｏｍｐ‐００１のためのアプリケーション起動履歴レコード８１１〜８２０、Ｃｏｍｐ‐００２のためのレコード８２１〜８２２、Ｃｏｍｐ‐００３のためのレコード８３１〜８３５、Ｃｏｍｐ‐００４のためのレコード８４１〜８４４、Ｃｏｍｐ‐００５のためのレコード８５１等々を示している。
【００４７】
図９は、本発明の第１の実施態様に従って分析コンピュータ１０１内に常駐する原因構成変更一時テーブル１４４の例を示している。このテーブルは、原因分析プログラム１２１が原因構成変更を決定するときの一時テーブルである。このテーブルは、構成変更の前および後におけるアプリケーションの起動の結果を示す。このテーブルは、コンピュータＩＤ  ９０１、変更日時９０２、構成項目９０３、変更タイプ９０４、起動‐前９０５、および起動‐後９０６の６つの列を含む。起動‐前９０５は、構成変更前のアプリケーションの起動結果を示す。起動‐後９０６は、構成変更後のアプリケーションの起動結果を示す。
【００４８】
分析目標コンピュータ１０２ごとに、レコードが、最後に成功したアプリケーションの起動から最初に失敗したアプリケーションの起動までの期間を示す。図９内の分析目標コンピュータ１０２のコンピュータＩＤ  ９０１の値が『Ｃｏｍｐ‐００１』であると仮定する。たとえば、レコード（９１１〜９１４）の起動‐前９０５と起動‐後９０６のペアのすべての値は、それぞれ成功および失敗である。ほかのコンピュータについては、レコードが、分析目標コンピュータ１０２と同じ構成変更の前および後のアプリケーションの起動結果を示す。たとえば、構成項目９０３と変更タイプ９０４のペアの値は、『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』、『ＰＡＴＣＨ‐２３２２  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加』、または『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除』のうちの１つでなければならない。図９は、Ｃｏｍｐ‐００１のための原因構成変更レコード９１１〜９１４、Ｃｏｍｐ‐００２のためのレコード９２１〜９２４、Ｃｏｍｐ‐００３のためのレコード９３１〜９３２、Ｃｏｍｐ‐００４のためのレコード９４１〜９４２、Ｃｏｍｐ‐００５のためのレコード９５１〜９５２、Ｃｏｍｐ‐００６のためのレコード９６１、Ｃｏｍｐ‐００７のためのレコード９７１等々を示している。
【００４９】
図１０は、分析コンピュータ１０１内に常駐する原因構成変更テーブル１４６の例を示している。このテーブルは、原因分析プログラム１２１によって作成される結果のテーブルである。このテーブルは、アプリケーションの起動を失敗させた構成変更および対応する確信度を示す。このテーブルは、構成項目１００１、変更タイプ１００２、変更日時１００３、失敗事例の数１００４、全事例の数１００５の５つの列を含む。全事例の数１００５は、構成項目１００１と変更タイプ１００２のペアについてのすべての事例の数を示す。失敗事例の数１００４は、構成項目１００１と変更タイプ１００２のペアについての失敗した事例の数を示す。図１０は、４つの原因構成変更レコード１０１１〜１０１４を示す。たとえばレコード１０１１においては、構成変更が『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』であり、失敗事例の数１００４が１２であり、全事例の数１００５が１５である。
【００５０】
図１１は、分析コンピュータ１０１内に常駐する修復構成変更一時テーブル１４５の例を示している。このテーブルは、原因分析プログラム１２１が修復構成変更を決定するときの一時テーブルである。このテーブルは、指定のアプリケーションの起動失敗と起動成功の間に行われた構成変更の前および後のアプリケーションの起動の結果を示す。このテーブルは、コンピュータＩＤ  １１０１、変更日時１１０２、構成項目１１０３、変更タイプ１１０４、起動‐前１１０５、および起動‐後１１０６の６つの列を含む。それぞれの列の意味は、原因構成変更一時テーブル１４４と同じである。図１１は、Ｃｏｍｐ‐００１のための修復構成変更レコード１１１１〜１１１３、Ｃｏｍｐ‐００２のためのレコード１１２１、Ｃｏｍｐ‐００３のためのレコード１１３１、Ｃｏｍｐ‐００４のためのレコード１１４１等々を示している。
【００５１】
図１２は、分析コンピュータ１０１内に常駐する修復構成変更テーブル１４７の例を示している。このテーブルは、原因分析プログラム１２１によって作成される結果のテーブルである。このテーブルは、失敗したアプリケーションの起動を修復した構成変更および対応する確信度を示す。このテーブルは、構成項目１２０１、変更タイプ１２０２、修復事例の数１２０３、および全事例の数１２０４の４つの列を含む。全事例の数１２０４は、構成項目１２０１と変更タイプ１２０２のペアについてのすべての事例の数を示す。修復事例の数１２０３は、構成項目１２０１と変更タイプ１２０２のペアについての修復した事例の数を示す。たとえばレコード１２１１においては、構成変更が『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』であり、修復事例の数１２０３が２９であり、全事例の数１２０４が３３である。図１２は、修復構成変更レコード１２１１〜１２１３を示している。
【００５２】
４．  プロセス・フロー
図１３は、分析コンピュータ１０１内に常駐するログ収集プログラム１２２によって実行されるところのログ収集を図解したフローチャートの例である。ログ収集プログラム１２２は、そのプロセスを特定の間隔で周期的に開始する。図１３に図解されているとおり、ステップ１３０１においてログ収集プログラム１２２は、ログ収集のための目標コンピュータを発見する。ステップ１３０２においてはログ収集プログラム（１２２）が、すべての発見済みコンピュータが処理されたか否かをチェックする。イエスであれば、プロセスが終了する。ノーであれば、プロセスがステップ１３０３に進む。ステップ１３０３においてログ収集プログラム１２２は、目標コンピュータ１０２内に常駐するエージェント１６１との通信によってイベント・ログを収集する。またそれは、分析コンピュータ１０１内のイベント・ログ・テーブル１４１の更新も行う。ステップ１３０４においてはログ収集プログラム１２２が、目標コンピュータ１０２内に常駐するエージェント１６１との通信によってアプリケーション起動履歴を収集する。またそれは、分析コンピュータ１０１内のアプリケーション起動履歴テーブル１４２の更新も行う。ステップ１３０５においてログ収集プログラム１２２は、目標コンピュータ１０２内に常駐するエージェント１６１との通信によって構成変更履歴を収集する。またそれは、分析コンピュータ１０１内の構成変更履歴テーブル１４３の更新も行う。すべての発見済みコンピュータからのログ情報を処理すると（ステップ１３０２においてチェックされる）、ログ収集プログラム１２２はプロセスを終了する。
【００５３】
図１４は、本発明の第１の実施態様に従って分析コンピュータ１０１内に常駐する原因分析プログラム１２１によって実行されるところの原因分析を図解したフローチャートの例である。原因分析プログラム１２１は、原因分析プログラム・ユーザ・インターフェース４０１上におけるユーザの操作によってプロセスを開始する。図１４に図解されているとおり、ステップ１４０１においては原因分析プログラム１２１が、原因分析プログラム・ユーザ・インターフェース４０１からパラメータとしてコンピュータＩＤ  ４１１およびアプリケーション名４１２を受信する。この説明においてはコンピュータＩＤを『Ｃｏｍｐ‐００１』とし、アプリケーション名を『ＤＯＣ  ＥＤＩＴＯＲ』とする。ステップ１４０２においては、原因分析プログラム１２１が一時テーブルおよび結果テーブル（１４４、１４５、１４６、および１４７）を初期化する。
【００５４】
ステップ１４０３において原因分析プログラム１２１は、コンピュータＩＤ  ４１１およびアプリケーション名４１２の値をパラメータとして目標期間検出１３１を呼び出す。結果は、原因構成変更一時テーブル１４４内にストアされることになる。このステップの時点で、構成変更一時テーブル１４４内にレコード（９１１〜９１４）がストアされる。したがって、アプリケーションの起動の失敗を生じさせた構成変更は、それらの構成変更（９１１〜９１４）のうちの１つであると見られる。
【００５５】
ステップ１４０４において原因分析プログラム１２１は、コンピュータＩＤ  ４１１およびアプリケーション名４１２の値をパラメータとして原因構成変更分析１３２を呼び出す。結果は、原因構成変更テーブル１４６内にストアされることになる。このステップの時点で、原因構成変更テーブル１４６内にレコード（１０１１〜１０１４）がストアされる。
【００５６】
ステップ１４０５において原因分析プログラム１２１は、アプリケーション名４１２の値をパラメータとして修復構成変更分析１３３を呼び出す。結果は、修復構成変更テーブル１４７内にストアされることになる。このステップの時点で、修復構成変更テーブル１４７内にレコード（１２１１〜１２１３）がストアされる。ステップ１４０６においては、原因分析プログラム１２１が結果を表示器１１７上に表示する。
【００５７】
図１５は、分析コンピュータ１０１内に常駐する目標期間検出１３１によって実行されるところの目標期間検出プロセスを図解したフローチャートの例である。目標期間検出１３１は、原因分析プログラム１２１からの呼び出しによってプロセスを開始する。図１５に図解されているとおり、ステップ１５０１においては目標期間検出１３１が、パラメータとしてコンピュータＩＤおよびアプリケーション名を受領する。この説明においてはコンピュータＩＤを『Ｃｏｍｐ‐００１』とし、アプリケーション名を『ＤＯＣ  ＥＤＩＴＯＲ』とする。
【００５８】
ステップ１５０２においては目標期間検出１３１が、ステップ１５０１において受領したコンピュータＩＤと同じコンピュータＩＤのレコードを構成変更履歴テーブル１４３から抽出する。またそれは、変更日時７０２の降順によりレコードを並べ替える。このステップの時点で、コンピュータＩＤ  ７０１が『Ｃｏｍｐ‐００１』のレコードが抽出される（構成変更履歴テーブル１４３上の７１１〜７１６）。
【００５９】
ステップ１５０３においては目標期間検出１３１が、ステップ１５０２においてレコードが抽出されたか否かをチェックする。イエスであれば、プロセスがステップ１５０４に進む。ノーであれば、プロセスが終了する。
【００６０】
ステップ１５０４においては目標期間検出１３１が、先頭から１つのレコードを取り出し、変更日時７０２、構成項目７０３、および変更タイプ７０４の値を読み取る。このループの最初の実行においては変更日時７０２の値が『０６／０４／２００８  ０８：２０：１１』であり、構成項目７０３が『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ』、変更タイプ（７０４）が『追加』である。
【００６１】
ステップ１５０５においては目標期間検出１３１が、コンピュータＩＤ（ステップ１５０１）、アプリケーション名ステップ（１５０１）、および変更日時（ステップ１５０４）の値をパラメータとして起動結果チェッカ１３４を呼び出す。このループの最初の実行においては、これらのパラメータが『Ｃｏｍｐ‐００１』、『ＤＯＣ  ＥＤＩＴＯＲ』、および『０６／０４／２００８  ０８：２０：１１』である。
【００６２】
ステップ１５０６においては目標期間検出１３１が、ステップ１５０５の結果として起動‐前および起動‐後変数の値を受領する。結果は、アプリケーションがエラーをまったく伴うことなく構成変更の前および後に起動できたか否かを示す。このループの最初の実行においては、起動‐前の結果の値が『成功』であり、起動‐後の結果の値が『失敗』である。
【００６３】
ステップ１５０７においては目標期間検出１３１が、構成変更後の起動結果が成功であるか否かをチェックする。イエスであれば、プロセスが終了する。ノーであれば、プロセスがステップ１５０８に進む。
【００６４】
ステップ１５０８においては目標期間検出１３１が、コンピュータＩＤ  ９０１、変更日時９０２、構成項目９０３、変更タイプ９０４、起動‐前９０５、および起動‐後９０６のレコードを作成する。またそれは、このレコードを原因構成変更一時テーブル１４４内に挿入する。最初のループのこのステップの時点で、原因構成変更一時テーブル１４４内にレコード９１１がストアされる。
【００６５】
ステップ１５０９においては目標期間検出１３１が、ステップ１５０２において抽出されたすべてのレコードが処理されたか否かをチェックする。イエスであれば、プロセスが終了する。ノーであれば、プロセスがステップ１５０４に戻る。この実施態様においては、目標期間検出１３１の実行後にレコード（９１１〜９１４）が構成変更一時テーブル１４４内にストアされる。
【００６６】
図１６は、分析コンピュータ１０１内に常駐する起動結果チェッカ１３４によって実行されるところのアプリケーション起動結果をチェックするプロセスを図解したフローチャートの例である。起動結果チェッカ１３４は、目標期間検出１３１、原因構成変更分析１３２、および修復構成変更分析１３３からの呼び出しによってプロセスを開始する。図１６に図解されているとおり、ステップ１６０１においては起動結果チェッカ１３４が、パラメータとしてコンピュータＩＤ、アプリケーション名、および変更日時を受領する。たとえば、コンピュータＩＤを『Ｃｏｍｐ‐００１』、アプリケーション名を『ＤＯＣ  ＥＤＩＴＯＲ』、および変更日時を『０６／０４／２００８  ０８：２０：１１』とする。
【００６７】
ステップ１６０２においては起動結果チェッカ１３４が、コンピュータＩＤ（ステップ１６０１）およびアプリケーション名（ステップ１６０１）についてアプリケーション起動履歴テーブル１４２を参照することによって変更日時（ステップ１６０１）の直前のアプリケーション起動時刻を獲得する。受領した変更日時が『０６／０４／２００８  ０８：２０：１１』であるとき、『０６／０４／２００８  ０８：２０：１１』の直前の『ＤＯＣ  ＥＤＩＴＯＲ』のアプリケーション起動時刻は、アプリケーション起動履歴テーブル１４２内に『０６／０２／２００８  １４：２６：０３』（８１８）として見つけることができる。
【００６８】
ステップ１６０３においては起動結果チェッカ１３４が、コンピュータＩＤ（ステップ１６０１）についてイベント・ログ・テーブル１４１を参照することによってアプリケーション起動時刻（ステップ１６０２）の直後の特定時間内のイベント数をカウントする。起動時刻が『０６／０２／２００８  １４：２６：０３』であるとき、１０秒内のイベントの数は０である。
【００６９】
ステップ１６０４においては起動結果チェッカ１３４が、ステップ１６０３においてカウントされたイベント数をチェックする。それが０より大きい場合には、プロセスがステップ１６０６に進む。それ以外であればプロセスがステップ１６０５に進む。ステップ１６０５においては起動結果チェッカ１３４が、起動‐前変数を成功にセットする。イベントの数が０であることから、起動‐前変数は成功にセットされる。ステップ１６０６においては起動結果チェッカ１３４が、起動‐前変数を失敗にセットする。
【００７０】
ステップ１６０７においては起動結果チェッカ１３４が、コンピュータＩＤ（ステップ１６０１）およびアプリケーション名（ステップ１６０１）についてアプリケーション起動履歴テーブル１４２を参照することによって変更日時（ステップ１６０１）の直後のアプリケーション起動時刻を獲得する。受領した変更日時が『０６／０４／２００８  ０８：２０：１１』であるとき、『０６／０４／２００８  ０８：２０：１１』の直後の『ＤＯＣ  ＥＤＩＴＯＲ』のアプリケーション起動時刻は、アプリケーション起動履歴テーブル１４２内に『０６／０４／２００８  ０８：２９：２３』（レコード４１７）として見つけることができる。
【００７１】
ステップ１６０８においては起動結果チェッカ１３４が、コンピュータＩＤ（ステップ１６０１）についてイベント・ログ・テーブル１４１を参照することによってアプリケーション起動時刻（ステップ１６０７）の直後の特定時間内のイベント数をカウントする。起動時刻が『０６／０４／２００８  ０８：２９：２３』であるとき、１０秒内のイベントの数は１である。
【００７２】
ステップ１６０９においては起動結果チェッカ１３４が、ステップ１６０８においてカウントされたイベント数をチェックする。それが０より大きい場合には、プロセスがステップ１６１１に進む。それ以外であればプロセスがステップ１６１０に進む。ステップ１６１０においては起動結果チェッカ１３４が、起動‐後変数を成功にセットする。ステップ１６１１においては起動結果チェッカ１３４が、起動‐後変数を失敗にセットする。イベントの数が１であることから、起動‐後変数は失敗にセットされる。
【００７３】
ステップ１６１２においては起動結果チェッカ１３４が、起動‐前および起動‐後変数の値を返す。この説明においては、起動‐前の戻り値が成功であり、起動‐後の値が失敗である。
【００７４】
図１７は、本発明の第１の実施態様に従って分析コンピュータ１０１内に常駐する原因構成変更分析１３２によって実行されるところの原因構成変更分析プロセスを図解したフローチャートの例である。原因構成変更分析１３２は、原因分析プログラム１２１からの呼び出しによってプロセスを開始する。図１７に図解されているとおり、ステップ１７０１においては原因構成変更分析１３２が、パラメータとしてコンピュータＩＤおよびアプリケーション名を受領する。この説明においてはコンピュータＩＤを『Ｃｏｍｐ‐００１』とし、アプリケーション名を『ＤＯＣ  ＥＤＩＴＯＲ』とする。ステップ１７０２においては原因構成変更分析１３２が、コンピュータＩＤ（ステップ１７０１）およびアプリケーション名（ステップ１７０１）の値とともに図１８のサブルーチンを呼び出す。このステップの時点で、レコード（９１１〜９７１）が原因構成変更一時テーブル１４４内にストアされる。ステップ１７０３においては原因構成変更分析１３２が、ステップ１７０２の戻り値として構成変更リストを受領する。リスト内の項目は、構成項目、変更タイプ、および変更日時を含む。この説明においては、構成変更リストが『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加  -  ０６／０４／２００８  ０８：２０：１１』、『ＰＡＴＣＨ‐２３２２  -  追加  -  ０６／０４／２００８  ０７：４３：１１』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加  -  ０６／０３／２００８  １４：２７：３５』、および『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除  -  ０６／０３／２００８  １３：５９：２８』を含む。
【００７５】
ステップ１７０４においては原因構成変更分析１３２が、ステップ１７０３において受領されたリスト内のすべての項目が処理されたか否かをチェックする。イエスであれば、プロセスが終了する。ノーであれば、プロセスがステップ１７０５に進む。ステップ１７０５においては原因構成変更分析１３２が、リスト（ステップ１７０３）から１つの項目を取り出し、構成項目、変更タイプ、および変更日時を読み取る。ステップ１７０６においては原因構成変更分析１３２が、原因構成変更一時テーブル１４４を参照することによって、（構成項目（ステップ１７０５）＝テーブル１４４内の構成項目）、かつ（変更タイプ（ステップ１７０５）＝テーブル１４４内の変更タイプ）、かつ（テーブル１４４内の起動‐前＝成功）、かつ（テーブル１４４内の起動‐後＝失敗）という条件を満たすレコードの数をカウントする。ステップ１７０７においては原因構成変更分析１３２が、原因構成変更一時テーブル１４４を参照することによって、（構成項目（ステップ１７０５）＝テーブル１４４内の構成項目）、かつ（変更タイプ（ステップ１７０５）＝テーブル１４４内の変更タイプ）という条件を満たすレコードの数をカウントする。ステップ１７０８においては原因構成変更分析１３２が、結果のレコードを原因構成変更テーブル１４６内に挿入する。このレコードは、構成項目（ステップ１７０５）、変更タイプ（ステップ１７０５）、変更日時（ステップ１７０５）、失敗レコードの数（ステップ１７０６の結果）、および関係するすべてのレコードの数（ステップ１７０７の結果）を含む。このステップの時点で、レコード（１０１１〜１０１４）が原因構成変更テーブル１４６内にストアされる。
【００７６】
図１８は、図１７のステップ１７０２における原因構成変更分析プロセスのサブルーチンを図解したフローチャートの例である。このサブルーチンは、原因構成変更分析１３２からの呼び出しによってプロセスを開始する。図１８に図解されているとおり、ステップ１８０１においてこのサブルーチンは、コンピュータＩＤおよびアプリケーション名をパラメータとして受領する。この説明においてはコンピュータＩＤを『Ｃｏｍｐ‐００１』とし、アプリケーション名を『ＤＯＣ  ＥＤＩＴＯＲ』とする。ステップ１８０２においてはこのサブルーチンが、原因構成変更一時テーブル１４４からすべてのレコードを取り出す。またこれは、構成項目と変更タイプのすべてのペアを読み取り、それらをリストとしてＣＯＮＦＩＧ‐ＬＩＳＴ変数にセットする。このステップの時点で、ＣＯＮＦＩＧ‐ＬＩＳＴ変数が、『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』、『ＰＡＴＣＨ‐２３２２  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加』、および『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除』を含む。ステップ１８０３においてこのサブルーチンは、ＣＯＮＦＩＧ‐ＬＩＳＴ（ステップ１８０２）内と同じ構成項目９０３と変更タイプ９０４のペアを有するレコードを、ステップ１８０１において受領したコンピュータＩＤについてのレコードを除き、構成変更履歴テーブル１４３から抽出する。
【００７７】
ステップ１８０４においてはこのサブルーチンが、ステップ１８０３において抽出したすべてのレコードが処理されたか否かをチェックする。イエスであれば、プロセスが終了する。ノーであれば、プロセスがステップ１８０５に進む。ステップ１８０５においてはこのサブルーチンが、ステップ１８０３において抽出したレコードから１つのレコードを取り出し、コンピュータＩＤ  ９０１、変更日時９０２、構成項目９０３、および変更タイプ９０４を読み取る。ステップ１８０６においてはこのサブルーチンが、コンピュータＩＤ（ステップ１８０５）、アプリケーション名（ステップ１８０１）、および変更日時（ステップ１８０５）の値とともに起動結果チェッカ１３４を呼び出す。ステップ１８０７においてはこのサブルーチンが、ステップ１８０６の結果として起動‐前および起動‐後変数の値を受領する。結果は、構成変更の前および後においてアプリケーションがエラーをまったく伴うことなく起動できたか否かを示す。ステップ１８０８においてはこのサブルーチンが、コンピュータＩＤ  ９０１、変更日時９０２、構成項目９０３、変更タイプ９０４、起動‐前９０５、および起動‐後９０６を含むレコードを作成する。またそのレコードを、原因構成変更一時テーブル１４４内に挿入する。
【００７８】
図１９は、分析コンピュータ１０１内に常駐する修復構成変更分析１３３によって実行されるところの修復構成変更分析プロセスを図解したフローチャートの例である。修復構成変更分析１３３は、原因分析プログラム１２１からの呼び出しによってプロセスを開始する。図１９に図解されているとおり、ステップ１９０１において修復構成変更分析１３３は、パラメータとしてアプリケーション名を受領する。この説明においてはアプリケーション名を『ＤＯＣ  ＥＤＩＴＯＲ』とする。ステップ１９０２においては修復構成変更分析１３３が、アプリケーション名（ステップ１９０１）の値とともに図２０のサブルーチンを呼び出す。ステップ１９０３においては修復構成変更分析１３３が、（起動‐前１１０５＝失敗）かつ（起動‐後１１０６＝成功）という条件を満たすレコードを修復構成変更一時テーブル１４５（ステップ１９０２）から抽出する。ステップ１９０４においては修復構成変更分析１３３が、ステップ１９０３において抽出したレコードから重複を伴うことなく構成項目１１０３と変更タイプ１１０４のペアを抽出する。ステップ１９０５においては修復構成変更分析１３３が、ステップ１９０３において抽出したレコードからステップ１９０４において抽出したペアの中に構成項目１１０３および変更タイプ１１０４の値が含まれていないレコードを削除する。
【００７９】
ステップ１９０６においては修復構成変更分析１３３が、ステップ１９０４において抽出したすべてのペアが処理されたか否かをチェックする。イエスであれば、プロセスが終了する。ノーであれば、プロセスがステップ１９０７に進む。ステップ１９０７においては修復構成変更分析１３３が、１つのペアを取り出し、構成項目１１０３および変更タイプ１１０４の値を読み取る。ステップ１９０８においては修復構成変更分析１３３が、修復構成変更一時テーブル１４５を参照することによって、（構成項目（ステップ１９０７）＝テーブル１４５内の構成項目）、かつ（変更タイプ（ステップ１９０７）＝テーブル１４５内の変更タイプ）、かつ（テーブル１４５内の起動‐後＝成功）という条件を満たすレコードの数をカウントする。ステップ１９０９においては修復構成変更分析１３３が、修復構成変更一時テーブル１４５を参照することによって、（構成項目（ステップ１９０７）＝テーブル１４５内の構成項目）、かつ（変更タイプ（ステップ１９０７）＝テーブル１４５内の変更タイプ）という条件を満たすレコードの数をカウントする。ステップ１９１０においては修復構成変更分析１３３が、結果のレコードを修復構成変更テーブル１４７内に挿入する。当該レコードは、構成項目（ステップ１９０７）、変更タイプ（ステップ１９０７）、成功レコードの数（ステップ１９０８の結果）、および関係するすべてのレコードの数（ステップ１９０９の結果）を含む。
【００８０】
図２０は、図１９のステップ１９０２における修復構成変更分析プロセスのサブルーチンを図解したフローチャートの例である。このサブルーチンは、修復構成変更分析１３３からの呼び出しによってプロセスを開始する。図２０に図解されているとおり、ステップ２００１においてこのサブルーチンは、アプリケーション名をパラメータとして受領する。ステップ２００２においてはこのサブルーチンが、起動‐後９０６の値が失敗であるレコードを原因構成変更一時テーブル１４４から抽出する。
【００８１】
ステップ２００３においてはこのサブルーチンが、ステップ２００２において抽出したすべてのレコードが処理されたか否かをチェックする。イエスであれば、プロセスがステップ２０１２に進む。ノーであれば、プロセスがステップ２００４に進む。ステップ２００４においてはこのサブルーチンが、ステップ２００２において抽出したレコードの中から１つのレコードを取り出し、コンピュータＩＤ  ９０１および変更日時９０２を読み取る。ステップ２００５においてはこのサブルーチンが、（コンピュータＩＤ  ７０１＝コンピュータＩＤ（ステップ２００４））、かつ（変更日時７０２＞変更日時（ステップ２００４））という条件を満たすレコードを構成変更履歴テーブル１４３から抽出する。
【００８２】
ステップ２００６においてはこのサブルーチンが、ステップ２００５において抽出したすべてのレコードが処理されたか否かをチェックする。イエスであれば、プロセスがステップ２００３に進む。ノーであれば、プロセスがステップ２００７に進む。ステップ２００７においてはこのサブルーチンが、ステップ２００５において抽出したレコードから１つのレコードを取り出し、コンピュータＩＤおよび変更日時を読み取る。ステップ２００８においてはこのサブルーチンが、コンピュータＩＤ（ステップ２００７）、アプリケーション名（ステップ２００１）、および変更日時（ステップ２００７）の値とともに起動結果チェッカ１３４を呼び出す。ステップ２００９においてはこのサブルーチンが、ステップ２００８の結果として起動‐前および起動‐後変数の値を受領する。ステップ２０１０においてはこのサブルーチンが、コンピュータＩＤ  １１０１、変更日時１１０２、構成項目１１０３、変更タイプ１１０４、起動‐前１１０５、および起動‐後１１０６を含むレコードを作成する。またそのレコードを修復構成変更一時テーブル１４５内に挿入する。ステップ２０１１においてはこのサブルーチンが、起動‐後の値（ステップ２００９）が成功か否かをチェックする。イエスであれば、プロセスがステップ２００３に戻る。ノーであれば、プロセスがステップ２００６に戻る。ステップ２０１２においてはこのサブルーチンが、修復構成変更一時テーブル１４５上のレコードの重複を除去する。
【００８３】
Ｂ．  第２の実施態様
図２１は、本発明の第２の実施態様に従って原因構成変更テーブル１４６‐２１の例を示す。第２の実施態様においては、原因分析プログラム１２１が、過去に同じ分析が行われていた場合に、過去に分析およびストアが行われた結果を再使用して表示する。これを行うためには、図１０の原因構成変更テーブル１４６を拡張する必要がある。図２１における列１００１〜１００５は、図１０におけるものに同じである。それに加えてアプリケーション名２１０１および分析日時２１０２のための新しい列が導入されている。たとえば、レコード２１１１は、アプリケーション名『ＤＯＣ  ＥＤＩＴＯＲ』についての分析が分析日時『０６／０５／２００８  １４：２０：１２』に行われたことを示す。アプリケーション名が『ＤＯＣ  ＥＤＩＴＯＲ』であり、目標期間検出１３１の結果が同じとなるように分析条件が指定された場合に、原因分析プログラム１２１は、原因構成変更テーブル１４６‐２１に基づいて分析結果を表示することが可能である。同一の概念を、図１２の修復構成変更テーブル１４７に対しても適用できる。
【００８４】
図２２は、本発明の第２の実施態様に従って原因分析プログラム１２１によって実行されるところの原因分析を図解したフローチャートの例である。ステップ１４０１、１４０３、１４０４、１４０５、および１４０６は、図１４おけるものと同じである。図１４と図２２の間の相違は以下のとおりである。ステップ１４０２‐２２（ステップ１４０２の代わり）においては原因分析プログラム（１２１）が、結果テーブル（原因構成変更テーブル１４６および修復構成変更テーブル１４７）を初期化しない。ステップ２２０１においては原因分析プログラム１２１が、アプリケーション名４１２およびステップ１４０３の構成変更とそれぞれ同じアプリケーション名および構成変更を含むレコードを、原因構成変更テーブル１４６‐２１（図２１に示す）から検索する。ステップ２２０２においては原因分析プログラム１２１が、過去の結果のレコードが見つかったか否かをチェックする。イエスであれば、プロセスがステップ１４０６に進む。ノーであれば、プロセスがステップ１４０４に進む。ステップ１４０４においてストアされる結果は、原因構成変更テーブル１４６‐２１（図２１）の概要に基づくものとする。
【００８５】
Ｃ．  第３の実施態様
図２３は、本発明の第３の実施態様に従って原因構成変更テーブル１４６‐２３の例を示している。第３の実施態様においては、原因分析プログラム１２１が構成変更の組み合わせに基づいて分析を行う。これ行うためには、図１０の原因構成変更テーブル１４６を拡張する必要がある。図２３に示されるとおり、列１００１〜１００５は、図１０におけるものに同じである。それに加えて組み合わせＩＤ  ２３０１のための新しい列が導入される。ここにはレコード２３１１〜２３１７が存在する。たとえばレコード２３１１は、各構成変更のすべての組み合わせを使用することによって分析が行われたことを示す。同一の概念を、図１２の修復構成変更テーブル１４７に対して適用して拡張することができる。
【００８６】
図２４は、本発明の第３の実施態様に従って原因構成変更分析１３２によって実行されるところの原因構成変更分析プロセスを図解したフローチャートの例である。ステップ１７０１、１７０２、および１７０３は、図１７おけるもの同じである。図１７と図２４の間における相違は、以下のとおりとなる。ステップ２４０１においては原因構成変更分析１３２が、構成変更１７０３のすべての組み合わせのリストを作成する。構成変更が『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加』、および『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除』である場合には、それらの組み合わせが次のとおりとなる。
・『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除』
・『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加』
・『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除』
・『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加』、『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除』
・『ＰＲＩＮＴＥＲ  ＤＲＩＶＥＲ  Ａ  -  追加』
・『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ２．０  -  追加』
・『ＶＰＮ‐ＣＬＩＥＮＴ  ｖ１．８  -  削除』
ステップ２４０２においては原因構成変更分析１３２が、ステップ２４０１において作成したリスト内のすべての項目が処理されたか否かをチェックする。イエスであれば、プロセスが終了する。ノーであれば、プロセスがステップ２４０３に進む。ステップ２４０３においては原因構成変更分析１３２が、リスト（ステップ２４０１）から１つの項目を取り出し、構成項目、変更タイプ、および変更日時を読み取る。ステップ２４０４においては原因構成変更分析１３２が、原因構成変更一時テーブル１４４を参照することによって、（構成項目と変更タイプのペア（ステップ２４０３）＝テーブル１４４内のコンピュータにおける構成項目と変更タイプのペア）、かつ（テーブル１４４内のそのコンピュータにおけるもっとも最近の起動‐後の値＝失敗）という条件を満たすコンピュータの数をカウントする。ステップ２４０５においては原因構成変更分析１３２が、原因構成変更一時テーブル１４４を参照することによって、（構成項目と変更タイプのペア（ステップ２４０３）＝テーブル１４４内のコンピュータにおける構成項目と変更タイプのペア）という条件を満たすコンピュータの数をカウントする。ステップ２４０６においては原因構成変更分析１３２が、結果のレコードを原因構成変更テーブル１４６‐２３（図２３）内に挿入する。
【００８７】
Ｄ．  第４の実施態様
図２５は、本発明の第４の実施態様に従って全体のシステムのハードウエア・アーキテクチャの構成、ソフトウエア・モジュール、およびテーブルの例を図解している。ピア‐ツー‐ピア・アーキテクチャのための第４の実施態様においては、状況に応じてすべてのコンピュータがサーバおよびクライアントとなることが可能である。集中サーバは必要ない。各コンピュータ２５０１は、原因分析プログラム（１２１）、エージェント（１６１）、ログ情報（１７１）、およびログ収集プログラム（１２２）を有する。各コンピュータ内のログ情報（１７１）は、そのコンピュータのログ情報だけでなく、ほかのコンピュータのログ情報も含む。
【００８８】
当然のことながら、図１および２に図解されているシステム構成は、本発明の実装が考えられる情報システムの純粋な例示であり、本発明は特定のハードウエア構成に限定されない。本発明を実装するコンピュータおよびストレージ・システムは、上で述べた本発明の実装に使用されるモジュール、プログラム、およびデータ構造をストアし、読み出すことが可能な周知のＩ／Ｏデバイス（たとえば、ＣＤおよびＤＶＤドライブ、フレキシブルディスク・ドライブ、ハード・ドライブ等）を有することも可能である。これらのモジュール、プログラム、およびデータ構造は、その種のコンピュータ可読媒体上においてエンコードすることが可能である。たとえば、本発明のデータ構造を、本発明で使用されるプログラムが常駐する１つまたは複数のコンピュータ可読媒体とは独立してコンピュータ可読媒体上にストアすることができる。システムの構成要素は、たとえば通信ネットワークといった、デジタル・データ通信の任意の形式または媒体によって相互接続が可能である。通信ネットワークの例は、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、たとえばインターネット、無線ネットワーク、ストレージ・エリア・ネットワーク、およびこれらの類を含む。
【００８９】
説明においては、本発明の完全な理解を提供するために説明を目的として多くの詳細が示されている。しかしながら当業者には明らかとなろうが、これらの特定の詳細のすべてが、本発明を実施するために必要とされるわけではない。これもまた注意されたいが、本発明は、一般にフローチャート、フロー図、構造図、またはブロック図として図示されるプロセスとして記述されることがある。フローチャートは、逐次的なプロセスとして動作を記述することがあるが、動作の多くは並列の、または同時的な実行が可能である。それに加えて動作の順序は再編成することができる。
【００９０】
この分野で周知のとおり上で述べた動作は、ハードウエア、ソフトウエア、またはソフトウエアとハードウエアの何らかの組み合わせによって実行することが可能である。本発明の実施態様の多様な側面は、回路および論理デバイス（ハードウエア）を使用して実装できるが、ほかの側面は機械可読媒体上にストアされて、プロセッサによって実行された場合に当該プロセッサに本発明の実施態様を遂行する方法を実行させることになるインストラクション（ソフトウエア）を使用して実装できる。さらに、本発明のいくつかの実施態様はハードウエアだけで実行されることがあり、ほかの実施態様はソフトウエアだけで実行されることがある。さらにまた、記述した多様な機能は、単一ユニット内において実行されることが可能であるか、または多数の構成要素にわたり、多くの方法で分散されることが可能である。ソフトウエアによって実行される場合には、方法を、コンピュータ可読媒体上にストアされるインストラクションに基づいて汎用コンピュータ等のプロセッサによって実行することができる。望ましい場合には、インストラクションを圧縮および／または暗号化されたフォーマットで媒体上にストアすることが可能である。
【００９１】
以上から、本発明が、知識データベースの使用を伴うことなく構成変更を分析することによってアプリケーションの失敗に対する解決策を見つけ出すための方法、装置、およびコンピュータ可読媒体上にストアされるプログラムを提供することが明らかであろう。それに加えて特定の実施態様が図解され、この明細書の中で述べられてきたが、当業者は、同じ目的を達成すると算定される任意の取り合わせが開示された特定の実施態様の代用となり得ることを認識されよう。この開示は、本発明の任意の、およびすべての適応、または変形を保護することが意図されており、また以下の請求項の中に使用されている用語が、明細書の中に開示されている特定の実施態様に本発明を限定すると解釈されるべきでないことが理解されるものとする。むしろ本発明の範囲は、確立された請求項の解釈論に従って、請求項が権利を有する均等の全範囲とともに解釈されるべき以下の請求項によって完全に決定されるものとする。
【００９２】
E．  第５の実施態様
第５の実施態様においては、目標コンピュータ内のエージェントが、アプリケーションのインスールを監視し、インストールを検知したタイミングでインストール開始イベントを分析コンピュータに通知する。本実施態様における分析コンピュータには、集計プログラムを追加する。集計プログラムでは通知されたアプリケーションについて原因構成変更テーブルに一致するアプリケーション名があれば、該当の分析結果を目標コンピュータに送信する。
【００９３】
図２６は第５の実施態様における目標コンピュータ内に配置されるエージェント１６１の機能ブロック図と分析コンピュータ１０１における機能ブロックのうち、本実施態様に関連する部分を示す図である。分析コンピュータには図２に示す機能構成に、集計プログラム２６０１を追加する。集計プログラムは原因分析プログラムが作成した原因構成変更テーブル１４６と修復構成変更テーブル１４７を読み出して利用する。なお、集計プログラム２６０１は分析コンピュータ１０１のメモリ１１２に記録され、ＣＰＵ１１１によって実行されることは言うまでもない。
【００９４】
エージェント１６１には、アプリケーションインストールの監視と通知を行うアプリケーション監視手段２６０２、分析結果の受信処理と保存、ユーザインターフェース２６０６を介しての出力を行う分析情報管理手段２６０３を持つ。受信した情報は問題構成変更テーブル２６０４、対策構成変更テーブル２６０５として保存される。
【００９５】
エージェントプログラムの処理フローについて説明する（図示せず）。インストーラプログラムの起動などでアプリケーションインストールの開始を検知すると、該当のアプリケーション名、変更タイプいとして追加という情報を含む構成変更イベントを分析コンピュータに送信する。
【００９６】
エージェント１６１は、分析コンピュータからの分析結果情報を受信すると、分析結果情報に基づいて問題構成変更テーブル２６０４、又は／及び対策構成変更テーブル２６０５を作成及び更新する。そして、エージェント１６１は、結果に基づく画面を作成し、出力する。
【００９７】
ここで、エージェントはアプリケーションのインストール処理を中断させてもよい。その場合、ユーザに中断を知らせるユーザインタフェースを提供する。インストールを中止させている場合は、分析結果の受信待ちを行い、一定時間受信がなければ、インストール処理を再開する。受信した分析結果の画面への出力処理時に、「インストールを続行しますか？」メッセージとともに、ユーザがインストールを続行または中止を選択可能なユーザインタフェースを提供する。
【００９８】
次に問題構成変更テーブル２６０４について説明する。問題構成変更テーブルは、分析コンピュータ１０１が分析した問題となる可能性のある構成変更を示したテーブルである。問題構成変更テーブル２６０４は、インストール対象（これからインストールしようとしているものを対象に含めてもよい）のアプリケーション毎に分析コンピュータが分析処理を行った時間、一つ以上のレコードを持つ。なお、当該レコードは以下の属性値を持つ。
＊  原因の可能性のある構成変更を示す値
＊  失敗率。
【００９９】
次に対策構成変更テーブル２６０５について説明する。対策構成変更テーブルは、分析コンピュータ１０１が分析した、問題を解決する可能性のある構成変更を示したテーブルである。対策構成変更テーブルは、インストール対象（これからインストールしようとしているものを対象に含めてもよい）のアプリケーション毎に分析コンピュータが分析処理を行った時間、一つ以上のレコードを持つ。なお、当該レコードは以下の属性値を持つ。
＊  アプリケーションの問題を解決する可能性のある構成変更を示す値
＊  成功率。
【０１００】
図２７には分析コンピュータにおける集計プログラムのフローチャートを示す。
【０１０１】
以下は分析結果情報に問題となる構成変更を含め、送信する場合の説明である。この場合、図２７のステップ２７０６乃至ステップ２７０９の実行は省略する。
【０１０２】
（ステップ２７０１）集計プログラムは、構成変更イベントを受信する。
【０１０３】
（ステップ２７０２）集計プログラムは、受信したアプリケーション名について、原因構成変更テーブルを検索する。
【０１０４】
（ステップ２７０３）集計プログラムは、ステップ２７０２の検索にて、受信したアプリケーション名に一致するアプリケーション名のレコードがあるか否かを判断する。
【０１０５】
（ステップ２７０４）集計プログラムは、各構成項目レコードについて、全事例数に対する失敗事例数の割合を確信度として算出する。
【０１０６】
（ステップ２７０５）集計プログラムは、次に確信度に基づいて送信するレコードを抽出する。
【０１０７】
そして抽出したレコードの情報を、分析結果情報に含め、構成変更イベント通知の送信元である目標コンピュータに送信して（ステップ２７１０）、処理を終了する。
【０１０８】
なお、ステップ２７０５の抽出方法としては、閾値を用いる方法と、特定数に限定する方法がある。
【０１０９】
（方法１）閾値を用いる方法の場合、集計プログラムは管理者または目標コンピュータの利用者から確信度の閾値を受信し、当該閾値をメモリ１１２に記録することで閾値の管理を行う。確信度について閾値と比較し、閾値以上の構成項目のレコードのみを抽出する。
【０１１０】
（方法２）特定数に限定する場合、予め特定数（例えば３）を定義しておく。算出した確信度に基づき上位３つまでレコードを抽出する。閾値や特定数の定義がNULLの場合は全レコードとする。
【０１１１】
図２８はエージェント１６１が問題構成変更テーブル２６０４を参照し、ビデオＩ／Ｆ１５４を介して表示器１５７に表示する出力例を示す。上段には、インストール対象の該アプリケーションに対して、起動失敗の原因となる可能性のある構成項目についての情報を表示する。構成項目とその変更タイプ毎（２８０１）に、確信度として失敗率を表示し（２８０２）、さらに確信度によって、エンドユーザに対するメッセージ（２８０３）を出力する。メッセージは確信度の値により、例えば75%以上で「＜警告＞この構成変更が行われている場合、アプリケーションの起動が失敗する可能性が高いため、対策を行ってください」、50%~74%で「＜注意＞この構成変更が行われている場合、アプリケーションの起動が失敗する可能性があります」、50%未満で「＜情報＞この構成変更はアプリケーションに影響ありません」とする。
【０１１２】
また原因構成変更テーブルの情報だけでなく、修復構成変更テーブルについても第2の実施態様により、図２１と同様にアプリケーション名毎にその構成項目と修復事例数、全事例数がテーブルに保存される。図２７のステップ２７０６乃至ステップ２７０９はこのような処理を実現するためのステップである。
【０１１３】
（ステップ２７０６）集計プログラムは、修復構成変更テーブルを検索して、該当するアプリケーションの情報を抽出する。
【０１１４】
（ステップ２７０７）集計プログラムは、ステップ２７０６の検索にて、受信したアプリケーション名に一致するアプリケーション名のレコードがあるか否かを判断する。
【０１１５】
（ステップ２７０８）集計プログラムは、各構成項目レコードについて、全事例数に対する失敗事例数の割合を確信度として算出する。
【０１１６】
（ステップ２７０９）集計プログラムは、次に確信度に基づいて送信するレコードを抽出し、分析結果情報に含める。
【０１１７】
エージェント１６１では、分析結果情報を受信し、分析結果情報に含まれるレコードを用いて対策構成変更テーブルを作成または更新する。本実施例においては、目標コンピュータにおける該アプリケーションにおける問題は未発生であることから、対策については、トラブル情報と同時に出力してもよいし、別にユーザインタフェースによる要求があった場合に出力してもよい。
【０１１８】
図２９はエージェント１６１が対策構成変更テーブル２７０５を参照し、ビデオＩ／Ｆ１５４を介して表示器１５７を該当アプリケーションの起動失敗に対する対策の有効性として表示する出力例を示す。構成項目とその変更タイプ毎（２９０１）に、確信度として対策の成功率を表示し（２９０２）、さらに確信度によって、エンドユーザに対するメッセージ（２９０３）を出力する。メッセージは、例えば「この構成変更により、アプリケーションの起動失敗の問題を修復できる可能性があります」とする。
【０１１９】
第５の実施態様の変形例として、送信するレコードの抽出方法について、確信度に基づく方法ではなく、構成変更イベント送信元のコンピュータの構成に基づく方法について説明する。ステップ２７０３までは同様であり、原因構成変更テーブルのアプリケーション名が一致するレコードを抽出する。次に集計プログラムは図７に示す構成変更履歴テーブルを参照し、コンピュータIDが送信元コンピュータに一致するレコードについて、前記のステップ２７０３で抽出されたレコードにおける各構成項目と変更タイプについても一致するレコードがあるかを検索する。構成項目と変更タイプが一致するレコードのみ、送信するレコードとする。
【０１２０】
これら送信するレコードの抽出は必要最低限の情報を提供するために行う。確信度が低いものや、該当コンピュータの構成に関係のない構成項目に関する情報を削除することで、目標コンピュータへの転送量を減らすことが可能である。
【０１２１】
さらに、第５の実施態様の別の例として、アプリケーションのインストール時のみでなく、パッチの適用やソフトウェアの削除など構成項目の変更時に、情報を提供する方法を説明する。エージェントではアプリケーションインストールだけでなく、パッチ適用やドライバ更新、削除といった構成項目の変更を監視し、検知時には分析コンピュータに構成変更イベントとして通知する。ここでは、アプリケーション名として構成項目を、また追加、削除といった変更タイプを構成変更イベントに含める。
【０１２２】
第１の実施態様においてパッチ追加やソフトウェアの削除は、他のアプリケーションの動失敗の原因候補となる構成項目として原因構成変更テーブルに記録されている。よって、集計プログラムでは、構成変更イベントを受信し、受領したアプリケーション名について、図２７に示したフローにおいて、原因構成変更テーブルを検索した結果、アプリケーション名としての記録がない場合、構成項目を検索する。さらに、変更タイプに一致するものがあるかを検索して、抽出し、エージェントに送信する。
【０１２３】
この場合の目標コンピュータでの画面出力情報を図３０に示す。構成変更の対象としているソフトウェア名に対して、影響する構成項目とその変更タイプ毎（３００１）に、確信度として対策の成功率を表示し（３００２）、さらに確信度によって、エンドユーザに対するメッセージ（３００３）を出力する。
【０１２４】
同一の概念を修復構成変更テーブルに対しても適用できる。  
もう一つの変形例として、構成項目が組み合わされた原因構成変更テーブルの情報を利用する方法を説明する。第３の実施態様に示されている構成変更の組み合わせに基づいて行われた分析結果は、図２３に示す原因構成変更テーブルに保存されている。ここで、図２３のテーブルを拡張し、アプリケーション名および分析日時の列を導入する（特に図示せず）。図２４における原因構成変更分析の結果を保存する際に、対象としたアプリケーション名と分析した日時を保存する。
【０１２５】
本実施例における集計プログラムにおける処理で、図２７に示したフローと異なる点は、ステップ２７０２において図２１の原因構成変更テーブルを検索する代わりに、図２３を拡張した原因構成変更テーブルを検索する点である。拡張した原因構成変更テーブルからアプリケーション名が一致するレコードを抽出し、その組み合わせID毎に、確信度として全事例数に対する失敗事例数を算出する。確信度に基づき、送信する組み合わせIDのレコードを決定する。
【０１２６】
F．  第６の実施態様
第５の実施態様では、以前に該当アプリケーションに関する原因分析要求があり、分析が行われた場合にその結果を目標コンピュータのエンドユーザに提供するものである。ここで、分析が行われていない場合や、最新の分析結果を提供するために、本実施態様では構成変更イベントを受信した時点での分析を実行し、結果を提供する方法を示す。
【０１２７】
分析目標コンピュータにおいてアプリケーションの起動失敗があってからの分析ではなく、アプリケーションをインストールする場合に、該当アプリケーションについて他のコンピュータで起動に問題のある事例があるかを分析する。
【０１２８】
図３１は本発明の第６の実施態様における分析コンピュータにおける集計プログラムによって実行される処理のフローチャートの例である。集計プログラムは、図２７と同様にエージェントからのインストール開始イベント通知を受信し（ステップ２７０１）、送信元コンピュータIDと通知に含まれるアプリケーション名を取り出す（ステップ２７０２）。次に集計プログラムは、コンピュータIDとアプリケーション名をパラメータとして原因分析プログラム１２１(a)を呼び出す（ステップ３１０３）。ここで、原因分析プログラムの処理は第１の実施態様における図１４の処理とは一部で異なるため、図３２で説明する。
【０１２９】
集計プログラムでは、原因分析プログラム１２１(a)の終了後、第５の実施態様と同様に、結果として得られた原因構成変更テーブルについて、構成項目毎に確信度として全事例数に対する失敗事例数を算出（ステップ２７０４）し、確信度に基づいて送信するレコードを抽出して（ステップ２７０５）、エージェントに送信する（ステップ２７１０）。
【０１３０】
また、原因分析プログラム(a)では第１の実施態様と同様に、修復構成変更テーブルを作成してもよい。その場合、結果として得られた修正構成変更テーブルについても同様に確信度を算出して、確信度に基づき送信するレコードを決定し、エージェントに送信する。
【０１３１】
図３２に本実施態様における原因分析プログラム１２１(a)のフローチャートを示す。  （ステップ３２０１）原因分析プログラムは、集計プログラムからコンピュータIDおよびアプリケーションIDを受領する。
【０１３２】
（ステップ３２０２）原因分析プログラムは、一時テーブルおよび結果テーブルを初期化しておく。
【０１３３】
（ステップ３２０３）原因分析プログラムは、次に構成変更履歴テーブルを読み出し、受領したコンピュータIDと同じコンピュータIDのレコードを抽出する。ここで、構成変更履歴テーブルのデータが長期間保存されている場合、抽出対象を一定期間前までのレコードに限定してもよい。
【０１３４】
（ステップ３２０４）原因分析プログラムは、抽出した結果を原因構成変更一時テーブルに保存する。このコンピュータIDに対しては起動チェックを行わないため、保存したレコードの起動−前、起動−後カラムはNULLのままにしておく。
【０１３５】
（ステップ３２０５）原因分析プログラムは、次に他の目標コンピュータの事例を分析する。分析処理は第１の実施態様と同様であるため、ここで図１８のサブルーチンを呼び出す。
【０１３６】
（ステップ３２０６）原因分析プログラムは、サブルーチンの戻り値として構成変更リストを受領する。リスト内の項目は、構成項目、変更タイプ、および変更日時を含む。
【０１３７】
（ステップ３２０７）原因分析プログラムは、リスト内の項目について、全て処理されたかを確認する。処理されていなければ、ステップ３２０８に進む。
【０１３８】
（ステップ３２０８）原因分析プログラムは、サブルーチン（３２０５）の結果、作成された原因構成変更一時テーブルを参照し、次の条件を満たすレコード数をカウントする。構成変更リストの構成項目、変更タイプとテーブルの構成項目、変更タイプが同じで、さらに「起動−前＝成功」かつ「起動−後＝失敗」という条件とする。
【０１３９】
（ステップ３２０９）原因分析プログラムは、原因構成変更一時テーブルを参照し、ステップ３２０１で受領したコンピュータIDについてのレコードを除いて、構成変更リストの構成項目、変更タイプとテーブルの構成項目、変更タイプが同じレコードの数をカウントする。
【０１４０】
（ステップ３２１０）原因分析プログラムは、結果のレコードを原因構成変更テーブルに登録する。原因構成変更テーブルは、図２１で示したテーブル構成とし、ステップ３２０１で受領したアプリケーション名、分析日時、構成変更リスト（ステップ３２０６）に含まれる構成項目、変更タイプ、変更日時と、ステップ３２０８のカウント値を失敗事例の数、ステップ３２０９のカウント値を全事例の数として登録する。
【０１４１】
第６の実施態様の変形例として、該当アプリケーションによる原因構成変更テーブルが既にある場合、分析日時に基づき、一定期間以上前のものでなければ、新たに分析は行わず、該当テーブルの情報を使用する。この場合、図３１に示す集計プログラムの処理において、ステップ２７０２の後に、原因構成変更テーブルを検索し、該当アプリケーションのレコードが見つかった場合に、分析日時を確認する。一定期間以内であれば、原因分析プログラムの呼び出しは行わずに、該当するレコードを使用して、構成項目毎の確信度算出とそれに続く処理（ステップ２７０４〜２７０６）を行う。分析日時が一定期間以内でない場合はステップ３１０３に進む。
【０１４２】
第５または第６の実施態様の変形例として、エージェントが保持するデータを出力する方法について説明する。分析コンピュータより受信し、保持する問題構成変更テーブルおよび対策構成変更テーブルには、アプリケーション毎に、原因構成項目または修復構成項目とその確信度を含む。エージェントはアプリケーション名入力を受け付けるユーザインタフェースを提供し、ユーザがアプリケーション名を入力すると、該アプリケーションに関する情報がテーブルにあるか検索し、情報があれば、図２８や図２９に示した例のように出力する。
【０１４３】
さらに第６の別の実施態様として、分析コンピュータにおいて定期的に集計プログラムを起動し、情報を更新する方法がある。集計プログラムでは、図３１の処理と異なり、起動時にコンピュータIDやアプリケーション名を受領しない。そのため、保存する原因構成変更テーブルにあるアプリケーション名を順番に取り出し、全アプリケーションについて、コンピュータ毎に、前回分析日時以降の構成変更項目を抽出し、原因分析を実施する。定期的に集計した情報は原因構成変更テーブルを更新して保存し、定期的または構成変更イベント受信時やエージェントからの要求時に、目標コンピュータに送信する。
【０１４４】
またアプリケーションのインストールや、パッチの適用といった構成変更の場合以外にも、ユーザ操作が影響するアプリケーションの起動失敗事例の分析を行う方法がある。この場合、分析コンピュータのログ収集プログラムは、ユーザの操作ログを収集し、操作履歴テーブルで管理する。エージェントでは、構成変更監視手段により、OSの設定変更など、ユーザの操作を監視し、特定の操作が行われた場合に、分析コンピュータに通知する。分析コンピュータにおいて集計プログラムと原因分析プログラムにより、操作履歴テーブルを検索し、同様の操作を行った後にアプリケーションの起動失敗が発生している事例を分析し、確信度を集計する。結果をエージェントに送信し、エージェントでは画面に出力する。
【０１４５】
以上により、コンピュータにおける構成変更に起因するアプリケーションの問題について、知識データベースを使用しない分析コンピュータによる分析結果を、エンドユーザが構成変更を行うタイミングで提供し、エンドユーザに対して問題への対応を促す支援を実現できる。
【０１４６】
以上の第５及び第６の実施態様において、複数の目標コンピュータと分析コンピュータとを有する計算機システムにおけるアプリケーション導入方法であって、前記複数の目標コンピュータに含まれ、所定のアプリケーションをインストール済みかつ起動済みである、一つ以上の第１目標コンピュータは、前記所定のアプリケーション起動以前に行った複数の構成変更の情報を含むログを、前記分析コンピュータに送信し、前記分析コンピュータは、前記ログを受信し、前記ログに基づいて構成変更の種別毎に、当該構成変更後に所定のアプリケーション起動が失敗した割合である起動失敗率を計算することを説明した。
【０１４７】
また、前記複数の目標コンピュータに含まれ、前記一つ以上の第１目標コンピュータ以外である、第２目標コンピュータは：（１）前記分析コンピュータから前記所定のアプリケーションに関する構成変更の種別毎の起動失敗率を含む第１の情報を受信し、（２）前記起動失敗率に基づいて、前記所定のアプリケーションの起動が失敗する原因となる構成変更の種別を表示する、ことを説明した。
【０１４８】
なお、前記第１の情報に含まれる起動失敗率は、前記分析コンピュータが前記ログに基づいて検知した全ての構成変更の種別の一部の種別の各々についての起動失敗率であって、前記一部の種別は、前記起動失敗率に基づいて前記分析コンピュータが選択したものでもよいことを説明した。
【０１４９】
また、前記分析コンピュータは、前記ログに基づいて前記構成変更の種別毎に、当該構成変更後に前記所定のアプリケーションの起動が成功した割合である起動成功率を計算し、前記第２目標コンピュータは、（３）前記分析コンピュータから前記所定のアプリケーションに関する構成変更の種別毎の起動成功率を含む第２の情報を受信し、（４）前記起動成功率に基づいて、前記所定のアプリケーションの起動が成功する原因となる構成変更の種別を表示してもよいことを説明した。
【０１５０】
また、前記第２目標コンピュータは、前記所定のアプリケーション以外の複数のアプリケーションをインストール済みであり、前記第２目標コンピュータは、前記全ての構成変更の種別に含まれる所定の種別について、起動が失敗する可能性のあるアプリケーションを前記所定のアプリケーション及び前記複数のアプリケーションから選択し、選択したアプリケーションの識別子を表示してもよいことを説明した。
【０１５１】
また、前記種別とは、構成項目又は／及び変更タイプが一例であることを説明したが、他の例としては構成変更操作の種類であってもよい。
【０１５２】
なお、以上の説明では「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、「ａａａキュー」等の表現にて本発明の情報を説明したが、これら情報は必ずしもテーブル、リスト、ＤＢ、キュー、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、「ａａａキュー」等について「ａａａ情報」と呼んでもよい。さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いたが、これらについてはお互いに置換が可能である。
【０１５３】
なお、分析コンピュータは複数のコンピュータであってもよい。なお、目標コンピュータ１０２のメモリ１５２とディスク１５３は区別せずにひとまとめに記憶資源（すなわち記憶するデバイス）として扱っても良い。同様に、分析コンピュータ１０１のメモリ１１２とディスク１１３は区別せずにひとまとめに記憶資源として扱っても良い。
【０１５４】
なお、以上の説明では「プログラム」を主語として説明を行う場合があった、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御デバイス）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
【０１５５】
また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
【符号の説明】
【０１５６】
１０１  分析コンピュータ
１０２  分析目標コンピュータ
１０３  ＬＡＮ
１１１  ＣＰＵ
１１２  メモリ
１１３  ディスク
１１４  ビデオ・インターフェース
１１５  ネットワーク・インターフェース
１１６  システム・バス
１１７  表示器
１２１  原因分析プログラム
１２２  ログ収集プログラム
１２３  ログ情報
１３１  目標期間検出
１３２  原因構成変更分析
１３３  修復構成変更分析
１３４  起動結果チェッカ
１４１  イベント・ログ・テーブル
１４２  アプリケーション起動履歴テーブル
１４３  構成変更履歴テーブル
１４４  原因構成変更一時テーブル
１４５  修復構成変更一時テーブル
１４６  原因構成変更テーブル
１４６‐２１  原因構成変更テーブル
１４６‐２３  原因構成変更テーブル
１４７  修復構成変更テーブル
１５１  ＣＰＵ
１５２  メモリ
１５３  ディスク
１５４  ビデオ・インターフェース
１５５  ネットワーク・インターフェース
１５６  システム・バス
１５７  表示器
１６１  エージェント
１７１  ログ情報
【図１】
0005417264.tif 000002
【図２】
0005417264.tif 000003
【図３】
0005417264.tif 000004
【図４】
0005417264.tif 000005
【図５】
0005417264.tif 000006
【図６】
0005417264.tif 000007
【図７】
0005417264.tif 000008
【図８】
0005417264.tif 000009
【図９】
0005417264.tif 000010
【図１０】
0005417264.tif 000011
【図１１】
0005417264.tif 000012
【図１２】
0005417264.tif 000013
【図１３】
0005417264.tif 000014
【図１４】
0005417264.tif 000015
【図１５】
0005417264.tif 000016
【図１６】
0005417264.tif 000017
【図１７】
0005417264.tif 000018
【図１８】
0005417264.tif 000019
【図１９】
0005417264.tif 000020
【図２０】
0005417264.tif 000021
【図２１】
0005417264.tif 000022
【図２２】
0005417264.tif 000023
【図２３】
0005417264.tif 000024
【図２４】
0005417264.tif 000025
【図２５】
0005417264.tif 000026
【図２６】
0005417264.tif 000027
【図２７】
0005417264.tif 000028
【図２８】
0005417264.tif 000029
【図２９】
0005417264.tif 000030
【図３０】
0005417264.tif 000031
【図３１】
0005417264.tif 000032
【図３２】
0005417264.tif 000033