(57)【特許請求の範囲】
【請求項１】
コンピュータ・システム内のソフトウェア・アプリケーションにおける問題を識別する方法であって、
基準コンピュータ・システムにおいて、ユーザ定義された１つまたは複数の使用シナリオ記述子中のコンポーネント要素セクションにリスト表示されたコンポーネントを使用して、前記使用シナリオ記述子中のランタイム・セクション内に記述された使用シナリオを実行するステップと、
前記基準コンピュータ・システムにおいて前記使用シナリオの前記実行中に、前記基準コンピュータ・システムおよびその内部の前記ソフトウェア・アプリケーションのうちの１つまたは複数の状況に関するデータのスナップショットを獲得するステップと、
検討中の前記コンピュータ・システムにおいて、前記基準コンピュータ・システム内で実行された同じ前記１つまたは複数の使用シナリオ記述子中のコンポーネント要素セクションにリスト表示されたコンポーネントを使用して、前記使用シナリオ記述子中のランタイム・セクション内に記述された使用シナリオを実行するステップと、
前記検討中の前記コンピュータ・システムにおいて前記使用シナリオの前記実行中に、前記検討中のコンピュータ・システムおよびその内部の前記ソフトウェア・アプリケーションのうちの１つまたは複数の状況に関するデータのスナップショットを獲得するステップと、
前記基準コンピュータ・システムと前記検討中のコンピュータ・システムとの間の１つまたは複数の相違点を識別するために、それらからの前記データのスナップショット同士を比較するステップと
を含む、前記方法。
【請求項２】
前記ユーザが、前記検討中のコンピュータ・システムにおける問題を表す可能性が最も高い相違点を識別するために、前記相違点を分析することを可能にするステップ
をさらに含む、請求項１に記載の方法。
【請求項３】
前記方法が、
ユーザが前記ソフトウェア・アプリケーションの１つまたは複数の使用シナリオ記述子を定義することを可能にするステップ
をさらに含み、
前記可能にするステップが、
製造業者が、前記ソフトウェア・アプリケーションの典型的な使用シナリオ記述子を反映する１つまたは複数の使用シナリオ記述子を定義することを可能にするステップ、又は
ユーザが、前記ソフトウェア・アプリケーションの特定の使用を反映する特定の使用シナリオ記述子を定義することを可能にするステップ
を含む、請求項１又は２に記載の方法。
【請求項４】
前記検討中のコンピュータ・システム内で実行される前記ソフトウェア・アプリケーション内の１つまたは複数のソフトウェア・コンポーネント間の、１つまたは複数の関係およびフローを示すステップ
をさらに含む、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
ソフトウェアのインストール・プロセスの最後に請求項１に記載の前記方法の各ステップを実行するステップを含む、請求項１に記載の方法。
【請求項６】
前記検討中のコンピュータ・システム内にエラーを検出すると請求項１に記載の前記方法の各ステップを自動的に実行するステップを含む、請求項１に記載の方法。
【請求項７】
前記方法を分散コンピューティング環境内で実行するステップを含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記方法が、
前記相違点を使用シナリオ・ビューアへと出力するステップ
をさらに含む、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
前記使用シナリオ記述子はインストール・プロセス用の使用シナリオ記述子である、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
請求項１〜９のいずれか一項に記載の方法を実行するように適合されたコンポーネントを備える、ソフトウェアの問題を識別するためのシステム。
【請求項１１】
コンピュータ・システム内のソフトウェア・アプリケーションにおける問題を識別するコンピュータ・プログラムであって、コンピュータに請求項１〜９のいずれか一項に記載の方法を実行させる、前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア問題を識別するための方法、システム、およびコンピュータ・プログラムに関する。
【背景技術】
【０００２】
ソフトウェア問題を検出および解決するために、典型的には、ソフトウェア問題が発生したシナリオに関与するソフトウェア・コンポーネントを識別および隔離する必要がある。話を簡単にするために、以下ではこれらのシナリオを「使用シナリオ」と呼ぶ。より具体的に言えば、ソフトウェア問題のトラブルシューティング・プロセスには、識別されたソフトウェア・コンポーネントのランタイム依存性および構成の収集および分析が必要である。しかしながら、このプロセスには極端に費用および時間がかかる（たとえば、しばしば数日を要し、顧客支援機構の関与を必要とする）可能性がある。
【０００３】
ＩＢＭ  Ｔｉｖｏｌｉ  Ａｐｐｌｉｃａｔｉｏｎ  Ｄｅｐｅｎｄｅｎｃｙ  Ｄｉｓｃｏｖｅｒｙ  Ｍａｎａｇｅｒ（ＴＡＤＤＭ）は、多層ソフトウェア・アプリケーションのランタイム依存性および構成を発見および分析するためのメカニズムを提供する、ソフトウェア・ツールである。具体的に言えば、ＴＡＤＤＭは、ソフトウェア・アプリケーションの現在のインフラストラクチャのスナップショットを、アプリケーションの全トポロジの読み取り専用ビューの形で提供する。さらにＴＡＤＤＭは、検討中のソフトウェア・アプリケーションの様々なスナップショットを比較することが可能な、分析報告ツールを備える。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながらＴＡＤＤＭは、ソフトウェア・アプリケーションの特定の使用シナリオに関与するソフトウェア・コンポーネントを隔離することができない。同様にＴＡＤＤＭは、自動的に実行されず、基準環境で取られたスナップショットとシナリオとを比較することができない。
【課題を解決するための手段】
【０００５】
本発明によれば、コンピュータ・システム内のソフトウェア・アプリケーションにおける問題を識別する方法が提供され、この方法は、ユーザがソフトウェア・アプリケーションの１つまたは複数の使用シナリオを定義することを可能にするステップと、基準コンピュータ・システムにおいて、使用シナリオのうちの１つまたは複数を用いてソフトウェア・アプリケーションを実行するステップと、使用シナリオのうちの１つまたは複数を用いたソフトウェア・アプリケーションの実行中に、基準コンピュータ・システムおよびその内部のソフトウェア・アプリケーションのうちの１つまたは複数の状況に関するデータを獲得するステップと、検討中のコンピュータ・システムにおいて、基準コンピュータ・システム内で実行された同じ１つまたは複数の使用シナリオを用いてソフトウェア・アプリケーションを実行するステップと、使用シナリオのうちの１つまたは複数を用いたソフトウェア・アプリケーションの実行中に、検討中のコンピュータ・システムおよびその内部のソフトウェア・アプリケーションのうちの１つまたは複数の状況に関するデータを獲得するステップと、基準コンピュータ・システムと検討中のコンピュータ・システムとの間の１つまたは複数の相違点を識別するために、それらからのデータを比較するステップと、を含む。
【０００６】
好ましい実施形態は、多層アプリケーション上のランタイム依存性構成を発見および分析するためのシステムおよび方法を提供する。具体的に言えば、好ましい実施形態の方法およびシステムにより、現在のインフラストラクチャにおける問題障害に関与する特定ソフトウェア・コンポーネントが識別および検出できるように、ソフトウェア・システムの現在のインフラストラクチャのスナップショットを取り、基準ソフトウェア・システムのスナップショットと比較することができる。
【０００７】
好ましい実施形態の方法は、インストール・プロセス用の使用シナリオ記述子を定義することによって、製品またはパッチが正常にインストールされたかどうかをチェックするために、インストール・プロセスの最後に使用することができる。好ましい実施形態の方法は、使用シナリオのテスト行程にも使用することができる。具体的に言えば、好ましい実施形態の方法によって、ユーザは、生産環境においてパッチを適用する前に、各回帰（regression）シナリオについて使用シナリオ記述子を作成することができる。さらに、好ましい実施形態の方法は、テスト環境において使用シナリオ発見プロセスを自動的に実行し、その結果をコンパレータに検証させることができる。
【０００８】
本明細書では、本発明のある実施形態について、添付の図面を参照しながら単なる例として説明する。
【図面の簡単な説明】
【０００９】
【図１】好ましい実施形態のシステムのアーキテクチャを示すブロック図である。
【図２】使用シナリオ記述子を表すＸＭＬファイルを備える図である。
【図３】好ましい実施形態の方法を示す流れ図である。
【図４】好ましい実施形態の方法を実行するように適合されたコンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【００１０】
１．概要
好ましい実施形態は、
−ソフトウェア問題を隔離するプロセス、
−問題の性質を検出するプロセス、および
−それを解決するプロセス
を加速させるためのメカニズムを提供する。好ましい実施形態は、問題が発生したソフトウェア・システムに関与するソフトウェア・コンポーネントを隔離することによって、これを達成する。そのため、好ましい実施形態は、
−障害のあるソフトウェア・アプリケーションのインフラストラクチャ内で、事前に定義された使用シナリオを自動的に実行し、
−このプロセスの結果を、基準ソフトウェア・システム内での事前に定義された使用シナリオの実行結果と比較する。
【００１１】
事前に定義された使用シナリオは、「基準使用シナリオ」または「実世界使用シナリオ」とすることができる。基準使用シナリオとは、製品の典型的な使用シナリオであり、ソフトウェア製造業者によって提供される。実世界使用シナリオとは、特定の目的のためにユーザによって実装される特定の使用シナリオである。どちらの使用シナリオをユーザが採用するかの選択は、検討中のソフトウェア・システムをユーザがどのように使用するかに大きく依存する。
【００１２】
２．詳細な説明
図１を参照すると、好ましい実施形態のシステム１０は、使用シナリオ記述子１２、および、発見エンジン・マネージャ１４と１次リポジトリ１６との間で伝送される使用シナリオ・スナップショット（図示せず）を備える。１次リポジトリ１６は、使用シナリオ・ビューア１８および使用シナリオ・コンパレータ２０によってもアクセスされる。
【００１３】
この例では、使用シナリオ記述子１２は、潜在的な使用シナリオおよびその使用シナリオに関与するソフトウェア・コンポーネントを記述する、ファイルである。使用シナリオは、「基準使用シナリオ」または「実世界使用シナリオ」とすることができる。基準使用シナリオとは、製品の典型的な使用シナリオであり、ソフトウェア製造業者によって提供される。実世界使用シナリオとは、特定の目的のためにユーザによって実装される特定の使用シナリオである。この例では、使用シナリオ記述子１２はＸＭＬで提供される。しかしながら、当業者であれば、使用シナリオ記述子１２が任意の他の好適な言語でも作成可能であることを理解されよう。
【００１４】
図２を参照すると、使用シナリオ記述子１２は、シナリオＩＤ２２によって特定の使用シナリオを識別する。使用シナリオ記述子１２は、アプリケーションＩＤ２４によってソフトウェア・アプリケーションも識別する。ソフトウェア・アプリケーションおよびその中のアプリケーション・コンポーネントは、記述タグ２６および一連のコンポーネント要素２８によって、さらに詳述される。一連のコンポーネント要素２８は、コンポーネントの名前、インストールされているコンピュータの詳細（たとえば、ホスト名、プロトコル（たとえばｓｓｈ）、およびコンポーネントをリモートに実行するために必要なパスワード）を含む。
【００１５】
使用シナリオ記述子１２は、検討中のアプリケーションのコンポーネント上で実行されることになるアクション・セットを記述する、ランタイム・セクション３０をさらに備える。アクションは、たとえば、コンポーネントへの要求の送信、そこからの応答の受信、検討中のアプリケーションのスナップショット（たとえば、ログ、アプリケーション状況、システム情報、レジストリ情報など）を形成するための応答の照合（collate）を含む。この例では、ランタイム・セクション３０はスクリプト様の言語で表されている。しかしながら、ランタイム・セクションを他の言語で表すこともできることを理解されよう。使用シナリオ記述子１２の前述の定式化は例示のためにのみ提供されたものであり、使用シナリオ記述子１２がこの特定の定式化に限定されることを意味するものとは、決して解釈すべきでない。具体的に言えば、使用シナリオ記述子１２は、他のタグ付けメカニズムおよび記述子メカニズムを使用して、当該の使用シナリオ、および問題が発生したソフトウェア・アプリケーションのコンポーネントを識別すること、および参照することができる。
【００１６】
発見エンジン・マネージャ１４は、使用シナリオ発見を実行、すなわち、使用シナリオ記述子１２のコンポーネント要素２８セクションにリスト表示されたコンポーネントを使用して、使用シナリオ記述子１２のランタイム・セクション３０内に記述されたシナリオを実行する。このプロセス中に、検討中のコンピュータ・システムの使用シナリオ・スナップショットが取られる。話を簡単にするために、「スナップショット」という用語は、コンピュータ・システムの状況に関連するデータを意味するものと理解されよう。発見エンジン・マネージャ１４は、使用シナリオ記述子１２および使用シナリオ・スナップショットの両方を、１次リポジトリ１６に格納する。
【００１７】
好ましい実施形態は、基準コンピュータ・システム上でも同じ使用シナリオを実行する。この基準コンピュータ・システムとは、製品がインストールされ、設計された通りに動作している、コンピュータ・システムである。これは、テスト・コンピュータ・システム（すなわち、製品コンピュータ内にインストールされる前に製品を検証するために、顧客によって使用されるコンピュータ・システム）、または、内部で製品がテストされ、「基準使用シナリオ」のスナップショットを作成するために使用される、製造業者のコンピュータとすることができる。コンピュータ・システムという用語は、本実施形態で使用される場合、アプリケーションのそれぞれのソフトウェア・コンポーネントが異なるコンピュータ（すなわち物理または仮想）上に常駐可能であるため、分散コンピュータ・システムを包含することも理解されよう。
【００１８】
使用シナリオ・コンパレータ２０は、検討中のシステムの使用シナリオ・スナップショットを、同じ使用シナリオを実行している基準コンピュータ・システムから取られたスナップショットと比較する。使用シナリオ・コンパレータ２０は、２つのスナップショット間の相違点を、とりわけ使用シナリオ・ビューア１８へと出力する。使用シナリオ・ビューア１８は、使用シナリオに関与するソフトウェア・コンポーネント間の関係およびデータフローをグラフィカルに表す。使用シナリオ・ビューア１８は、検討中のシステムと基準システムとの使用シナリオ・スナップショット間の相違点も示す。
【００１９】
図３を参照すると、好ましい実施形態の方法は、ユーザが特定の使用シナリオ用の使用シナリオ記述子を定義することを可能にする３２、諸ステップを含む。前述のように、使用シナリオは、「基準使用シナリオ」（ソフトウェア製造業者によって提供される製品の典型的な使用シナリオ）または「実世界使用シナリオ」（特定の目的のためにユーザによって実装される特定の使用シナリオ）とすることができる。次に、好ましい実施形態の方法は、ユーザが、基準環境において使用シナリオ発見プロセスを実行すること、およびそのスナップショットを生成することを可能にする３４。好ましい実施形態の方法は、基準環境の使用シナリオ記述子および使用シナリオ・スナップショットを、リポジトリにエクスポートする３６。
【００２０】
次に、好ましい実施形態の方法は、検討中のコンピュータ・システムのユーザが、基準システムに使用されたものと同じ使用シナリオを使用して、コンピュータ・システムの使用シナリオ発見を実行することを可能にする３８。基準環境の場合と同様、好ましい実施形態の方法は、使用シナリオ発見を内部で実行しながら、検討中のシステムのスナップショットを作成する。
【００２１】
次に、好ましい実施形態の方法は、基準環境の使用シナリオ・スナップショットと、検討中のコンピュータ・システムのそれとを比較し、ユーザが、内部の関連する問題を識別および検出するように、シナリオ・ビューア内のこの比較結果を分析すること３９を可能にする。
【００２２】
図４を参照すると、好ましい諸実施形態を支援するように適合された汎用コンピュータ・システム４０が、システム・バス４２に並列に接続されたいくつかのユニットによって形成される。詳細には、１つまたは複数のマイクロプロセッサ（ＸＰ）４４がコンピュータ４０の動作を制御し、ＲＡＭ４６はマイクロプロセッサ４４によって作業メモリとして直接使用され、ＲＯＭ４８はコンピュータ４０のブートストラップに関する基本コードを格納する。周辺ユニットは、ローカル・バス５０の周辺に（それぞれのインターフェースによって）クラスタ化される。具体的に言えば、大容量メモリは、ハードディスク５２およびＣＤ−ＲＯＭ５６を読み取るためのドライブ５４からなる。さらにコンピュータ４０は、入力デバイス５８（たとえばキーボードおよびマウス）、および出力デバイス６０（たとえばモニタおよびプリンタ）を含む。ネットワーク・インターフェース・カード（ＮＩＣ）６２は、コンピュータ４０をネットワークに接続するために使用される。ブリッジ・ユニット６４は、システム・バス４２をローカル・バス５０とインターフェースさせる。マイクロプロセッサ４４およびブリッジ・ユニット６４は、それぞれ、情報を伝送するためにシステム・バス４２へのアクセスを要求するマスタ・エージェントとして動作可能である。アービタ６６は、相互排除を伴うシステム・バス４２へのアクセス権授与を管理する。
【００２３】
システムが異なるトポロジを有する場合、または他のネットワークに基づく場合、同様の考察が加えられる。別の方法として、コンピュータは、等価のユニットを含む異なる構造を有するか、または他のデータ処理エンティティ（ＰＤＡ、携帯電話など）からなる。
【００２４】
本発明の範囲を逸脱することなく、前述の内容に対する変更および修正が可能である。
【図１】
0005400873.tif 000002
【図２】
0005400873.tif 000003
【図３】
0005400873.tif 000004
【図４】
0005400873.tif 000005