(57)【要約】【課題】本発明は、ソフトウェア・コンポーネント間の呼出関係をトレースする機能を、アプリケーションの運用段階で邪魔にならないように付加することを目的としている。【解決手段】ソフトウェア・コンポーネントに対して、アプリケーションの運用前の試験段階で、ソフトウェア・コンポーネント間の呼出関係を通知する機能（モニタ部）を付加しておいて、試験段階での処理を実行し、アプリケーションの運用段階では前記機能を取り除くようにする。【選択図】        図２
2004272505.tif 000002
【特許請求の範囲】
【請求項１】
複数のソフトウェア・コンポーネントで構成されたアプリケーションを実行してゆくデータ処理システムに関連するソフトウェア・コンポーネント間の呼出関係トレース方法において、
アプリケーションの運用前の試験段階で、
ソフトウェア・コンポーネントに対する処理に当たって、アプリケーション実行中のソフトウェア・コンポーネント間の呼出関係を通知する処理を実行し、
当該通知されたその呼出関係を収集及び蓄積する処理を実行し、
アプリケーションの運用段階で、
アプリケーションから前記のソフトウェア・コンポーネントにおける呼出関係を通知する処理を取り除いてアプリケーションを実行する
ことを特徴とするソフトウェア・コンポーネント間の呼出関係トレース方法。
【請求項２】
アプリケーションの運用前の試験段階で、前記のソフトウェア・コンポーネントにおける呼出関係を通知する処理を実行し、
アプリケーションに対する利用者からのリクエストに対応させた形式で、ソフトウェア・コンポーネント間の呼出関係を収集及び蓄積する処理を実行し、
アプリケーションの運用段階で、アプリケーションから前記のソフトウェア・コンポーネントにおける呼出関係を通知する処理を取り除いてアプリケーションを実行する
ことを特徴とする請求項１記載のソフトウェア・コンポーネント間の呼出関係トレース方法。
【請求項３】
ソフトウェア・コンポーネントのメソッドの単位でも呼出関係をトレースする
ことを特徴とする請求項１または請求項２記載のソフトウェア・コンポーネント間の呼出関係トレース方法。
【請求項４】
複数のソフトウェア・コンポーネントで構成されたアプリケーションを実行してゆくデータ処理システムに関連するソフトウェア・コンポーネント間の呼出関係トレース・システムにおいて、
アプリケーションの運用前の試験段階で、
ソフトウェア・コンポーネントについて、当該ソフトウェア・コンポーネントが、アプリケーション実行中のソフトウェア・コンポーネント間の呼出関係を通知する処理を実行する手段をもつよう構成されると共に、
当該通知されたその呼出関係を収集及び蓄積する処理を実行するコンポーネント呼出関係トレース・システムをそなえ、
アプリケーションの運用前の試験段階で、前記コンポーネント呼出関係トレース・システムが、アプリケーション実行中のソフトウェア・コンポーネント間の呼出関係を通知しかつ当該通知されたその呼出関係を収集及び蓄積すると共に、
アプリケーションの運用段階で、アプリケーションから前記のソフトウェア・コンポーネントにおける呼出関係を通知する処理を実行する手段を取り除いてアプリケーションを実行する
ことを特徴とするソフトウェア・コンポーネント間の呼出関係トレース・システム。
【請求項５】
前記コンポーネント呼出関係トレース・システムが、ソフトウェア・コンポーネントのメソッドの単位でも呼出関係をトレースする
ことを特徴とする請求項４記載のソフトウェア・コンポーネント間の呼出関係トレース・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のソフトウェア・コンポーネントで構成されたアプリケーションの管理方法及びシステムに関わり、特に、ソフトウェア・コンポーネント間の呼出関係をトレースするに当たって、ソフトウェア・コンポーネントを、アプリケーション実行中のソフトウェア・コンポーネント間の呼出関係を通知可能なように構成し、通知されたその呼出関係を収集及び蓄積して、ソフトウェア・コンポーネント間の呼出関係をトレースするソフトウェア・コンポーネント間の呼出関係トレース方法及びシステムに関する。
【０００２】
【従来の技術】
複数のソフトウェア・コンポーネントで構成されたアプリケーションにおける、ソフトウェア・コンポーネント間の呼出関係をトレースする従来の方法では、アプリケーションの運用前のデバッグ等の試験目的で機能が具備され、試験実施最中のソフトウェア・コンポーネント間の呼出関係のみが参照可能なものであった（例えば、特許文献１参照）。
【０００３】
【特許文献１】
特開平８−８３１９７号公報
【０００４】
【発明が解決しようとする課題】
上記従来のソフトウェア・コンポーネント間の呼出関係をトレースする方法では、アプリケーションの運用中に、ソフトウェア・コンポーネント間の呼出関係を把握することができない。そのため、運用中に、アプリケーションの障害をソフトウェア・コンポーネントの単位で検知した際に、障害を検知したソフトウェア・コンポーネントが、どのソフトウェア・コンポーネントから呼び出され、どのソフトウェア・コンポーネントを呼び出しているのかを把握することができないという問題がある。
【０００５】
また、上記従来のソフトウェア・コンポーネント間の呼出関係をトレースする機能を、アプリケーションの運用中においても具備した状態でアプリケーションを運用した場合、アプリケーションの運用中においてもソフトウェア・コンポーネント間の呼出関係をトレースすることが可能となるため、上記問題は解決されるが、ソフトウェア・コンポーネント間の呼出関係をトレースする機能を、アプリケーションの運用中においても具備した状態であるため、アプリケーションのパフォーマンスの低下を引き起こすという問題がある。
【０００６】
本発明は、ソフトウェア・コンポーネント間の呼出関係をトレースする機能を、アプリケーションの運用段階で邪魔にならないように付加することを目的としている。
【０００７】
【課題を解決するための手段】
請求項に記載のソフトウェア・コンポーネント間の呼出関係トレース方法及びシステムは、アプリケーションの運用前の試験段階で、各ソフトウェア・コンポーネントを、アプリケーション実行中のソフトウェア・コンポーネント間の呼出関係を通知する通知手段を備えるように構成しておき、コンポーネント呼出関係トレース・システムが、通知されたその呼出関係を収集し、収集した呼出関係を蓄積し、アプリケーションの運用前の試験段階において、ソフトウェア・コンポーネント間の呼出関係を収集及び蓄積する。そしてアプリケーションの運用段階では、アプリケーションから前記のソフトウェア・コンポーネントにおける通知手段を取り除いてアプリケーションを運用し、ソフトウェア・コンポーネント間の呼出関係の参照は、アプリケーションの運用前の試験段階で蓄積されたデータを用いて行う。
【０００８】
【発明の実施の形態】
以下、図面を用いて本発明の実施形態を詳細に説明する。
【０００９】
図１は、本実施例におけるソフトウェア・コンポーネント間の呼出関係トレース対象のアプリケーションの構成図の例を示したものである。
【００１０】
アプリケーション実行装置１は、アプリケーション１１を搭載しており、アプリケーション１１に対して実行環境を提供する。アプリケーション１１は、ソフトウェア・コンポーネントであるコンポーネント１２ａ、１２ｂ、１２ｃから構成されており、コンポーネント１２ａ、１２ｂ、１２ｃが相互に通信して動作することによりアプリケーションとしての処理を実行する。
【００１１】
図２は、図１で示したアプリケーション実行装置及び仮想リクエスト発生装置を含む、本発明のコンポーネント呼出関係トレース・システムの構成図であり、ソフトウェア・コンポーネントの呼出関係をトレースするための、コンポーネント間呼出関係収集時のシステム構成図であり、アプリケーションの運用前の試験段階の構成を示している。
【００１２】
図２は、図１に示したアプリケーション実行装置１と、仮想リクエスト発生装置２と、コンポーネント呼出関係トレース・システム３とから構成されている。仮想リクエスト発生装置２は、アプリケーション１１への仮想的なリクエストを複数同時に発生させることが可能なソフトウェアを搭載した装置であり、アプリケーション１１の利用者からの実際のリクエストを仮想的に模擬するものである。仮想リクエスト発生装置２は、既存の技術または製品として既に提供されているものであり、本実施例においても、仮想リクエスト発生装置２については、既存技術または製品を利用することを前提として説明を行う。
【００１３】
コンポーネント呼出関係トレース・システム３は、コンポーネント呼出関係収集部３１と、コンポーネント呼出関係蓄積部３２と、コンポーネント呼出関係検索部３３と、コンポーネント呼出関係表示部３４とを備えている。
【００１４】
アプリケーション実行装置１のアプリケーション１１におけるコンポーネント１２ａ、１２ｂ、１２ｃには、コンポーネント間呼出関係収集時においてはソフトウェア・コンポーネントの呼出関係をトレースするために、それぞれ、モニタ部１３ａ、１３ｂ、１３ｃを組込んでおくようにされて、モニタ部１３ａ、１３ｂ、１３ｃは、コンポーネント呼出関係トレース・システム３の一部の機能を担う。
【００１５】
図３は、図２におけるコンポーネント呼出関係の蓄積までの動作フロー図である。
【００１６】
図４は、図３に示した動作フローに従って蓄積された、コンポーネント呼出関係の蓄積データのイメージ図である。
【００１７】
図５は、コンポーネント呼出関係の検索時の動作フロー図である。
以下では、図１から図５を用いて、システムの一動作例を説明する。
【００１８】
前述のように、アプリケーション１１は、元来は図１に示す構成状態にある。アプリケーション１１の運用前の試験段階において、コンポーネント１２ａ、１２ｂ、１２ｃの呼出関係をトレースするため、コンポーネント１２ａ、１２ｂ、１２ｃに、それぞれ、モニタ部１３ａ、１３ｂ、１３ｃを組込み、仮想リクエスト発生装置２と、コンポーネント呼出関係トレース・システム３とを配備する。
【００１９】
まず、コンポーネント呼出関係を収集及び蓄積するために、アプリケーション１１に対して仮想リクエスト発生装置２によってリクエストを発生させる（ステップＳ１）。該リクエストに対する処理は、コンポーネント１２ａに渡され、リクエストに対応した処理が行われる（ステップＳ２）。
【００２０】
コンポーネント１２ａは、次の処理依頼をコンポーネント１２ｂに行う（ステップＳ３）。この時、コンポーネント１２ａに組込まれたモニタ部１３ａは、コンポーネント１２ａが外部からリクエストを受けて、次の処理依頼をコンポーネント１２ｂに行ったことを、コンポーネント呼出関係収集部３１に通知する（ステップＳ４）。
【００２１】
コンポーネント１２ｂは、コンポーネント１２ａからの処理依頼を受けて、該処理依頼に対応した処理を行う（ステップＳ５）。コンポーネント１２ｂは、次の処理依頼をコンポーネント１２ｃに行う（ステップＳ６）。この時、コンポーネント１２ｂに組込まれたモニタ部１３ｂは、コンポーネント１２ｂがコンポーネント１２ａから処理依頼を受けて、次の処理依頼をコンポーネント１２ｃに行ったことを、コンポーネント呼出関係収集部３１に通知する（ステップＳ７）。
【００２２】
コンポーネント１２ｃは、コンポーネント１２ｂからの処理依頼を受けて、該処理依頼に対応した処理を行う（ステップＳ８）。コンポーネント１２ｃは、処理結果の応答をコンポーネント１２ｂに行う（ステップＳ９）。この時、コンポーネント１２ｃに組込まれたモニタ部１３ｃは、コンポーネント１２ｃがコンポーネント１２ｂから処理依頼を受けて、応答をコンポーネント１２ｂに行ったことを、コンポーネント呼出関係収集部３１に通知する（ステップＳ１０）。
【００２３】
コンポーネント１２ｂは、コンポーネント１２ｃからの応答を受けて、該応答に対応した処理を行う（ステップＳ１１）。コンポーネント１２ｂは、処理結果の応答をコンポーネント１２ａに行う（ステップＳ１２）。この時、コンポーネント１２ｂに組込まれたモニタ部１３ｂは、コンポーネント１２ｂがコンポーネント１２ｃから応答を受けて、次の応答をコンポーネント１２ａに行ったことを、コンポーネント呼出関係収集部３１に通知する（ステップＳ１３）。
【００２４】
コンポーネント１２ａは、コンポーネント１２ｂからの応答を受けて、該応答に対応した処理を行う（ステップＳ１４）。コンポーネント１２ａは、処理結果の応答を仮想リクエスト発生装置２に行う（ステップＳ１５）。この時、コンポーネント１２ａに組込まれたモニタ部１３ａは、コンポーネント１２ａがコンポーネント１２ｂから応答を受けて、次の応答を仮想リクエスト発生装置２に行ったことを、コンポーネント呼出関係収集部３１に通知する（ステップＳ１６）。
【００２５】
以上の処理によって、１つのリクエストに対応する一連のコンポーネント呼出関係が、コンポーネント呼出関係収集部３１に全て通知される。コンポーネント呼出関係収集部３１は、通知されたデータを蓄積可能な形式に処理を行い（ステップＳ１７）、コンポーネント呼出関係蓄積部３２に対して蓄積依頼を行う（ステップＳ１８）。コンポーネント呼出関係蓄積部３２は、該蓄積依頼に従って、コンポーネント呼出関係を蓄積する（ステップＳ１９）。
【００２６】
当該呼出関係の蓄積に当たっては、アプリケーションを利用する運用者または管理者（両者を利用者という）からのリクエストにもとづいて、当該リクエストに対応する処理毎に、当該呼出関係を蓄積するようにすることができる。
【００２７】
図４は、コンポーネント呼出関係蓄積部３２によって蓄積された、コンポーネント呼出関係の蓄積データのイメージを示している。図４では、前記利用者からのリクエスト毎に、そのリクエストに対応したコンポーネント呼出関係が蓄積されていることを示している。
【００２８】
図３に示した動作例では、その際のリクエストをリクエスト１とすると、図４に示すように、「コンポーネント１２ａ→コンポーネント１２ｂ→コンポーネント１２ｃ→コンポーネント１２ｂ→コンポーネント１２ａ」のように蓄積されていることを示している。他の種々のリクエストに関しても、図４の他の行エントリに示すような形式で蓄積される。以上の作業を、コンポーネントの呼出関係を収集したい全てのリクエストに対して実施することにより、コンポーネントの呼出関係を収集及び蓄積作業は終了する。
【００２９】
コンポーネントの呼出関係の収集及び蓄積作業の終了後は、コンポーネントの呼出関係をトレースするために、コンポーネント１２ａ、１２ｂ、１２ｃに組込んだ、モニタ部１３ａ、１３ｂ、１３ｃはそれぞれ取り除かれて、図１に示す状態にアプリケーション１１を戻す。そしてアプリケーション１１を実運用する。
【００３０】
次に、図５を用いて、蓄積したコンポーネント呼出関係のデータの利用例を説明する。一例として、アプリケーション１１を運用中に（アプリケーションの運用段階で）、アプリケーション１１の運用者が、アプリケーション１１の、あるコンポーネントでの障害を検知した場合や、利用者からのアプリケーション１１に対するあるリクエストで障害を検知した場合を考える。
【００３１】
前記の場合、検知した障害に関連するコンポーネントやリクエストを把握するために、アプリケーション１１の運用者または管理者は、コンポーネント呼出関係トレース・システムのコンポーネント呼出関係表示部に、前記図４に示したリクエスト毎の呼出関係の蓄積のうちで障害を検知したリクエスト種別またはコンポーネント名を指定する（ステップＳ２１）。
【００３２】
これを受けたコンポーネント呼出関係表示部は、検索要求をコンポーネント呼出関係検索部に依頼する（ステップＳ２２）。コンポーネント呼出関係検索部は、検索要求を受け付け（ステップＳ２３）、コンポーネント呼出関係蓄積部が検索を行える要求形式でコンポーネント呼出関係蓄積部に検索要求を行う（ステップＳ２４）。
【００３３】
コンポーネント呼出関係蓄積部は、検索要求に従って検索を実行し（ステップＳ２５）、検索結果をコンポーネント呼出関係検索部に応答する（ステップＳ２６）。コンポーネント呼出関係検索部は、検索結果の応答を受け付け（ステップＳ２７）、コンポーネント呼出関係表示部が表示可能な形式でコンポーネント呼出関係表示部に検索結果の応答を返す（ステップＳ２８）。コンポーネント呼出関係表示部は、受け取った検索結果に基づき、検索結果を表示する（ステップＳ２９）。
【００３４】
コンポーネント呼出関係表示部による検索結果の表示内容は、指定したコンポーネントやリクエストに対応する形式で、関連するコンポーネントやリクエストの呼出関係が表示される。これにより、アプリケーション１１の運用者または管理者は、検知した障害に関連するコンポーネントやリクエストを把握することができる。
【００３５】
本発明にいうアプリケーションとしては、一実施例として、Ｗｅｂアプリケーションが想定されている。その場合、最近ではＷｅｂアプリケーションはＪａｖａ言語（（ジャヴァ言語）：サンマイクロシステムズ社が開発したオブジェクト指向プログラム言語）で記述されることが多く、さらにＪ２ＥＥと呼ばれる仕様に基づいて構成されることも多い。また、仮想リクエスト発生装置においても、Ｗｅｂアプリケーションに対する仮想リクエスト（ＨＴＴＰの仮想リクエスト）を発生するソフトないしシステムが多くの製品として市販されており、Ｗｅｂアプリケーションを想定した場合には当該市販の製品を利用することができる。
【００３６】
上記実施例では、コンポーネントの単位でトレース情報を蓄積する例を示したが、各コンポーネントにおける処理はコンポーネント内のメソッドにおいて行われるため、同様な方法でメソッドの単位でトレースすることができることは言うまでもない。
【００３７】
【発明の効果】
以上に説明したように、本発明によれば、アプリケーションを運用中に、アプリケーションの運用者が、アプリケーションのコンポーネントでの障害を検知した場合や、利用者からのアプリケーションに対するあるリクエストで障害を検知した場合に、検知した障害に関連するコンポーネントやリクエストを把握することができる。そして、アプリケーションの運用段階では、アプリケーションから前記のソフトウェア・コンポーネントにおける通知手段を取り除いてアプリケーションを運用するため、コンポーネントの呼出関係をトレースするために、アプリケーションのパフォーマンスが低下するという悪影響が無い。
【図面の簡単な説明】
【図１】呼出関係トレース対象のソフトウェア・アプリケーションの構成図の例を示す。
【図２】コンポーネント呼出関係収集時のシステム構成図の例を示す。
【図３】コンポーネント呼出関係の蓄積までの動作フロー図を示す。
【図４】コンポーネント呼出関係の蓄積データのイメージ図を示す。
【図５】コンポーネント呼出関係の検索時の動作フロー図を示す。
【符号の説明】
１    アプリケーション実行装置
１１  アプリケーション
１２ａ〜１２ｃ    コンポーネント
１３ａ〜１３ｃ    モニタ部
２    仮想リクエスト発生装置
３    コンポーネント呼出関係トレース・システム
３１  コンポーネント呼出関係収集部
３２  コンポーネント呼出関係蓄積部
３３  コンポーネント呼出関係検索部
３４  コンポーネント呼出関係表示部
【図１】
2004272505.tif 000003
【図２】
2004272505.tif 000004
【図３】
2004272505.tif 000005
【図４】
2004272505.tif 000006
【図５】
2004272505.tif 000007