(57)【要約】【課題】異常の原因箇所の特定を容易にすることを可能とすること。【解決手段】本発明にかかる異常原因特定支援システム９は、プログラムのソースコードが格納されたソースコード記憶部９２と、プログラムの変数を示す変数情報が格納される変数情報記憶部９１と、ソースコードで、受信したデータが代入される変数を示す変数情報を変数情報記憶部９１に格納するとともに、変数情報が示す変数が利用されている箇所を検出する変数利用箇所検出部９３と、ソースコードで、変数利用箇所検出部９３が検出した箇所に、その箇所で利用される変数の値を出力する出力処理を追加する処理追加部９４を備える。変数利用箇所検出部９３は、変数情報が示す変数が利用されている箇所を検出するとともに、その変数の値が代入される変数を示す変数情報を変数情報記憶部９２に格納する処理を、変数情報記憶部９２に格納された変数情報が示す変数のそれぞれに対して繰り返す。【選択図】図８
2013182441.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置から受信したデータをプログラムにおける特定の変数に代入して、当該プログラムを実行し、実行結果を前記他の情報処理装置に送信する異常原因特定支援システムであって、
前記プログラムのソースコードが格納されたソースコード記憶部と、
前記プログラムにおける変数を示す変数情報が格納される変数情報記憶部と、
前記ソースコード記憶部に格納されたソースコードにおいて、前記他の情報処理装置から受信したデータが代入される変数を示す変数情報を前記変数情報記憶部に格納するとともに、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出する変数利用箇所検出部と、
前記ソースコード記憶部に格納されたソースコードにおいて、前記変数利用箇所検出部によって検出された箇所に、当該箇所で利用される変数の値を出力する出力処理を追加する処理追加部と、を備え、
前記変数利用箇所検出部は、
前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出するとともに、当該変数の値が代入される変数を示す変数情報を前記変数情報記憶部に格納する処理、を前記変数情報記憶部に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返す、
異常原因特定支援システム。
【請求項２】
前記変数利用箇所検出部は、さらに、前記受信したデータが利用されている箇所を検出し、
前記処理追加部は、さらに、前記変数利用箇所検出部によって検出された、前記受信したデータが利用されている箇所に、当該受信したデータの値を出力する出力処理を追加する、
請求項１に記載の異常原因特定支援システム。
【請求項３】
前記処理追加部は、前記出力処理を追加したソースコードをコンパイルすることで、新たなプログラムを生成して、前記プログラムに代えて前記新たなプログラムを前記異常原因特定支援システムに適用する、
請求項１又は２に記載の異常原因特定支援システム。
【請求項４】
前記異常原因特定支援システムは、さらに、
前記出力処理によって出力された値が格納される出力値記憶部と、
前記新たなプログラムの実行結果が異常である場合に、前記出力値記憶部に格納された値を表示し、前記実行結果が異常でない場合には、前記出力値記憶部に格納された値の表示を抑止する表示制御部と、を備える、
請求項３に記載の異常原因特定支援システム。
【請求項５】
前記異常原因特定支援システムは、さらに、異常である場合における実行結果を示す実行結果情報が格納された実行結果情報記憶部を備え、
前記表示制御部は、前記新たなプログラムの実行結果と、前記実行結果情報記憶部に格納された実行結果情報が示す実行結果とが一致するか否かによって、前記新たなプログラムの実行結果が異常であるか否かを判定する、
請求項４に記載の異常原因特定支援システム。
【請求項６】
前記変数が利用されている箇所は、前記変数の値が他の変数に代入される箇所と、前記変数が関数の処理に利用される箇所とを含む、
請求項１乃至５のいずれか１項に記載の異常原因特定支援システム。
【請求項７】
前記異常原因特定支援システムは、前記他の情報処理装置から、前記データとともに前記データのデータ名を受信するものであって、
前記変数利用箇所検出部は、前記他の情報処理装置から受信したデータ名に基づいて、前記ソースコードにおいて、前記他の情報処理装置から受信したデータが代入される変数を特定する、
請求項１乃至６のいずれか１項に記載の異常原因特定支援システム。
【請求項８】
他の情報処理装置から受信したデータをプログラムにおける特定の変数に代入して、当該プログラムを実行し、実行結果を前記他の情報処理装置に送信するシステムにおいて、前記実行結果の異常原因の特定を支援する異常原因特定支援方法であって、
ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記他の情報処理装置から受信したデータが代入される変数を示す変数情報を変数情報記憶部に格納するとともに、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出する変数利用箇所検出ステップと、
前記ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記検出された箇所に、当該箇所で利用される変数の値を出力する出力処理を追加する処理追加ステップと、を備え、
前記変数利用箇所検出ステップでは、
前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出するとともに、当該変数の値が代入される変数を示す変数情報を前記変数情報記憶部に格納する処理、を前記変数情報記憶部に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返す、
異常原因特定支援方法。
【請求項９】
他の情報処理装置から受信したデータをプログラムにおける特定の変数に代入して、当該プログラムを実行し、実行結果を前記他の情報処理装置に送信するシステムにおいて、前記実行結果の異常原因の特定を支援するための異常原因特定支援プログラムであって、
ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記他の情報処理装置から受信したデータが代入される変数を示す変数情報を変数情報記憶部に格納するとともに、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出する変数利用箇所検出処理と、
前記ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記検出された箇所に、当該箇所で利用される変数の値を出力する処理を追加する出力処理追加処理と、をコンピュータに実行させ、
前記変数利用箇所検出処理は、
前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出するとともに、当該変数の値が代入される変数を示す変数情報を前記変数情報記憶部に格納する処理、を前記変数情報記憶部に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返す、
異常原因特定支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異常原因特定支援システム、異常原因特定支援方法及び異常原因特定支援プログラムに関し、特に、他の情報処理装置から受信したデータに基づいてプログラムを実行し、実行結果を他の情報処理装置に送信するシステムにおいて、実行結果の異常原因の特定を支援する技術に関する。
【背景技術】
【０００２】
サーバのように、クライアントと間でデータの送受信を行うシステムにおいては、システムが、クライアントから受信したデータに基づいて内部処理を行い、その処理結果をクライアントに送信するといったことが一般的に行われている。この際、処理結果に誤りがあった場合には、受信したデータ自体に誤りがあったのか、又は、受信したデータを利用した内部処理のいずれかの箇所の処理に誤りがあったのか等の異常の原因を特定する必要がある。
【０００３】
このような異常の原因箇所を特定する方法として、内部処理において、受信したデータに関するログを出力するようにして、出力されたログを確認する方法が考えられる。この方法の場合、作業者は、システムが実行するプログラムのソースコードを機械的に追って、受信したデータに関する処理の箇所にログ出力処理を追加する必要がある。しかしながら、複雑なシステムや、開発されてから長期間経過しているシステムでは、システムが実行するプログラムのソースコードは、大きく、かつ複雑になる傾向がある。そのため、システムが受信したデータの利用範囲を把握することは、人力では難しい。例えば、ソースコード上において、受信したデータを代入した変数のみを追うと、その変数が別の変数に代入されていたり、その変数の値を利用した処理が実行されることによって、新たな値が生成されていたりする場合には、システムが受信したデータの本当の利用範囲を特定することはできない。そのため、必要な箇所に対するログ出力処理の追加に漏れが生じてしまい、適切なログを出力することができなくなってしまう。すなわち、ログの出力結果に基づいて、異常の原因箇所を特定することが困難になってしまうという問題がある。
【０００４】
特許文献１には、静的解析によって指摘されたコードに含まれる変数の値を取得する取得コードを、プログラムのソースコードに挿入する技術が開示されている。しかしながら、特許文献１は、上述した問題に対して、必要な箇所に十分にログ出力処理を追加して、異常の原因箇所の特定を容易にする技術を開示したものではない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１３３９６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上に説明したように、必要な箇所に十分にログ出力処理を追加することができず、異常の原因箇所を特定することが困難になってしまっているという課題がある。
【０００７】
本発明の目的は、上述したような課題を解決するために、異常の原因箇所の特定を容易にすることを可能とする異常原因特定支援システム、異常原因特定支援方法及び異常原因特定支援プログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明の第１の態様にかかる異常原因特定支援システムは、他の情報処理装置から受信したデータをプログラムにおける特定の変数に代入して、当該プログラムを実行し、実行結果を前記他の情報処理装置に送信する異常原因特定支援システムであって、前記プログラムのソースコードが格納されたソースコード記憶部と、前記プログラムにおける変数を示す変数情報が格納される変数情報記憶部と、前記ソースコード記憶部に格納されたソースコードにおいて、前記他の情報処理装置から受信したデータが代入される変数を示す変数情報を前記変数情報記憶部に格納するとともに、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出する変数利用箇所検出部と、前記ソースコード記憶部に格納されたソースコードにおいて、前記変数利用箇所検出部によって検出された箇所に、当該箇所で利用される変数の値を出力する出力処理を追加する処理追加部と、を備え、前記変数利用箇所検出部は、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出するとともに、当該変数の値が代入される変数を示す変数情報を前記変数情報記憶部に格納する処理、を前記変数情報記憶部に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返すものである。
【０００９】
本発明の第２の態様にかかる異常原因特定支援方法は、他の情報処理装置から受信したデータをプログラムにおける特定の変数に代入して、当該プログラムを実行し、実行結果を前記他の情報処理装置に送信するシステムにおいて、前記実行結果の異常原因の特定を支援する異常原因特定支援方法であって、ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記他の情報処理装置から受信したデータが代入される変数を示す変数情報を変数情報記憶部に格納するとともに、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出する変数利用箇所検出ステップと、前記ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記検出された箇所に、当該箇所で利用される変数の値を出力する出力処理を追加する処理追加ステップと、を備え、前記変数利用箇所検出ステップでは、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出するとともに、当該変数の値が代入される変数を示す変数情報を前記変数情報記憶部に格納する処理、を前記変数情報記憶部に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返すものである。
【００１０】
本発明の第３の態様にかかる異常原因特定支援プログラムは、他の情報処理装置から受信したデータをプログラムにおける特定の変数に代入して、当該プログラムを実行し、実行結果を前記他の情報処理装置に送信するシステムにおいて、前記実行結果の異常原因の特定を支援するための異常原因特定支援プログラムであって、ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記他の情報処理装置から受信したデータが代入される変数を示す変数情報を変数情報記憶部に格納するとともに、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出する変数利用箇所検出処理と、前記ソースコード記憶部に格納された前記プログラムのソースコードにおいて、前記検出された箇所に、当該箇所で利用される変数の値を出力する処理を追加する出力処理追加処理と、をコンピュータに実行させ、前記変数利用箇所検出処理は、前記変数情報記憶部に格納された変数情報が示す変数が利用されている箇所を検出するとともに、当該変数の値が代入される変数を示す変数情報を前記変数情報記憶部に格納する処理、を前記変数情報記憶部に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返すものである。
【発明の効果】
【００１１】
上述した本発明の各態様によれば、異常の原因箇所の特定を容易にすることを可能とする異常原因特定支援システム、異常原因特定支援方法及び異常原因特定支援プログラムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】発明の実施の形態にかかるデータ処理システムの一例を示す全体構成図である。
【図２】発明の実施の形態にかかる各装置を構成する情報処理装置のハードウェア構成の一例を示す図である。
【図３】発明の実施の形態にかかる受信データ解析装置の処理の一例を示すフローチャートである。
【図４】発明の実施の形態にかかるソースコード解析装置及びログ出力追記装置の処理の一例を示すフローチャートである。
【図５】発明の実施の形態にかかる参照変数一覧の一例を示す図である。
【図６】発明の実施の形態にかかるソースコードの追記プロセスを示す図である。
【図７】発明の実施の形態にかかるＷｅｂシステムのログ出力制御処理の一例を示す図である。
【図８】発明の実施の形態にかかる異常原因特定支援システムの一例を示す全体構成図である。
【発明を実施するための形態】
【００１３】
＜発明の実施の形態＞
以下、図面を参照して本発明の実施の形態について説明する。まず、図１を参照して、本発明の実施の形態にかかるデータ処理システム１の全体構成について説明する。図１は、本発明の実施の形態にかかるデータ処理システム１の一例を示す全体構成図である。
【００１４】
データ処理システム１は、受信データ解析装置１１、Ｗｅｂシステム１２、ソースコード解析装置１３、ログ出力追記装置１４、及びソースコード記憶装置１５を備える。受信データ解析装置１１、Ｗｅｂシステム１２、ソースコード解析装置１３、及びログ出力追記装置１４のそれぞれは、例えば、パーソナルコンピュータ及びサーバ等の情報処理装置で構成される。
【００１５】
なお、図１中の実線の矢印はデータの入出力の流れを示している。データ処理システム１は、データ送信装置２と接続されている。データ処理システム１のＷｅｂシステム１２は、データ送信装置２から送信されたデータに基づいて処理を実行し、処理結果をデータ送信装置２に送信する。すなわち、Ｗｅｂシステム１２は、サーバとして機能し、データ送信装置２は、クライアントとして機能する。よって、データ送信装置２は、１つに限られず、複数のデータ送信装置２がデータ処理システム１に接続されていてもよい。また、データ処理システム１は、データ送信装置２から送信されたデータに基づいて、そのデータに関するログ出力処理を自動的にＷｅｂシステム１２に適用することができる。これにより、データ処理システム１の管理者は、あるデータに基づいた処理結果に異常があった場合に、異常の原因箇所を容易に特定することが可能となる。
【００１６】
受信データ解析装置１１は、Ｗｅｂシステム１２とデータ送信装置２との間に接続される。受信データ解析装置１１は、データ送信装置２から送信されたデータを受信して、Ｗｅｂシステム１２に転送する。受信データ解析装置１１は、Ｗｅｂシステム１２から送信された処理結果のデータを受信して、データ送信装置２に転送する。また、受信データ解析装置１１は、データ送信装置２から受信したデータを解析して、そのデータに含まれる「値（パラメータ）」と、その「パラメータ名」とを分離する。受信データ解析装置１１は、データ送信装置２から受信したデータから分離した「パラメータ名」を示すパラメータ情報を、ソースコード解析装置１３に出力する。具体的には、データ送信装置２から送信されるデータは、例えば、ＨＴＴＰ（HyperText Transfer Protocol）リクエストであり、上述した「値」と「パラメータ名」の組は、ＨＴＴＰリクエストに含まれるリクエストパラメータである。
【００１７】
Ｗｅｂシステム１２は、データ送信装置２から送信されたデータを、受信データ解析装置１１を介して受信する。Ｗｅｂシステム１２は、受信したデータに基づいて処理を実行し、必要に応じて処理結果を受信データ解析装置１１を介してデータ送信装置２に送信する。具体的には、Ｗｅｂシステム１２は、例えば、Ｗｅｂサーバである。Ｗｅｂシステム１２は、データ送信装置２から送信されたＨＴＴＰリクエストに応じた処理を実行する。Ｗｅｂシステム１２は、処理結果として、ＨＴＭＬ（HyperText Markup Language）ドキュメント及びオブジェクト（画像、音声等）等の各種情報をデータ送信装置２に送信する。この受信したデータに基づいた処理は、Ｗｅｂシステム１２が、ソースコード記憶装置１５に格納されているソースコードから生成されたプログラムを実行することによって行われる。
【００１８】
ソースコード解析装置１３は、受信データ解析装置１１から送信されたパラメータ情報を取得するとともに、ソースコード記憶装置１５からＷｅｂシステム１２で実行されるプログラムのソースコードを取得する。ソースコード解析装置１３は、ソースコードを処理単位で解析することにより、パラメータ情報が示す「パラメータ名」の値を利用している処理部分を検出する。さらに、ソースコード解析装置１３は、その値が代入された変数を利用している処理部分、その変数の値が代入された変数を利用している処理部分等についても、同様に検出する。すなわち、ソースコード解析装置１３は、パラメータ情報が示す「パラメータ名」の値の影響を受ける処理部分を検出する。ソースコード解析装置１３は、検出した処理部分を示す検出結果情報を、ログ出力追記装置１４に出力する。
【００１９】
ログ出力追記装置１４は、ソースコード解析装置１３から送信された検出結果情報を取得するとともに、Ｗｅｂシステム１２で実行されるプログラムのソースコードを、ソースコード記憶装置１５から取得する。ログ出力追記装置１４は、ソースコードにおいて、検出結果情報が示す「パラメータ名」の値及びその値が代入された変数等が利用される処理部分に、ログ出力処理のコードを追記する。さらに、ログ出力追記装置１４は、ソースコードにおいて、ログ出力処理の実行に必要なライブラリを読み込むコードが存在しない場合には、そのライブラリを読み込むコードもソースコードに対して追記する。
【００２０】
ログ出力追記装置１４は、ログ出力処理のコードを追記済みのソースコードを、コンパイルして、Ｗｅｂシステム１２において実行可能なプログラムを生成する。ログ出力追記装置１４は、生成したプログラムをＷｅｂシステム１２に送信する。これに応じて、Ｗｅｂシステム１２は、現在実行しているプログラムに代えて、ログ出力追記装置１４から送信されたプログラムの実行を開始する。以降、Ｗｅｂシステム１２は、受信データ解析装置１１の解析対象となったデータに関するログを出力することが可能となる。
【００２１】
ソースコード記憶装置１５は、Ｗｅｂシステム１２で実行されるプログラムのソースコードが記憶される。ソースコード記憶装置１５は、例えば、ソースコードが記憶されるデータ（ファイルサーバ）である。
【００２２】
続いて、図２を参照して、本発明の実施の形態にかかる各装置１１〜１５を構成する情報処理装置８のハードウェア構成例について説明する。図２は、本発明の実施の形態にかかる各装置１１〜１５を構成する情報処理装置８のハードウェア構成の一例を示す図である。
【００２３】
情報処理装置８は、入力装置８１、記憶装置８２、ＣＰＵ（Central Processing Unit）８３、通信装置８４、及び、表示装置８５を有する。
【００２４】
入力装置８１は、データ処理システム１の管理者からの入力を受けて、入力内容をＣＰＵ８３に通知する。入力装置８１は、例えば、マウス及びキーボード等である。記憶装置８２は、ＣＰＵ８３が実行するプログラム及びプログラムの実行に伴って生成される各種情報が格納される。記憶装置８２は、例えば、メモリ及びハードディスク等である。ＣＰＵ８３は、各装置１１〜１５における処理を実行させるプログラムを実行する。すなわち、各装置１１〜１５は、ＣＰＵ８３によって、各装置１１〜１５における処理を実行させるプログラムを実行することによって、本実施の形態にかかる各装置１１〜１５における処理を実現する。通信装置８４は、他の装置との間でデータを送受信する。通信装置８４は、例えば、ネットワークアダプタである。表示装置８５は、ＣＰＵ８３から指示された表示内容を表示する。表示装置８５は、例えば、液晶ディスプレイ、プラズマディスプレイ、有機ＥＬ（Electro Luminescence）ディスプレイ等である。図２では、情報処理装置８は、入力装置８１、記憶装置８２、ＣＰＵ８３、及び、通信装置８４を１つだけ有する場合について例示したが、２つ以上有するようにしてもよい。
【００２５】
なお、図１では、ソースコード解析装置１３、ログ出力追記装置１４及びソースコード記憶装置１５が、それぞれ異なる情報処理装置で構成される場合について例示したが、これに限られない。Ｗｅｂシステム１２、ソースコード解析装置１３、ログ出力追記装置１４及びソースコード記憶装置１５の２つ以上が、１つの情報処理装置によって構成されていてもよい。この場合、情報処理装置が有するＣＰＵ８３によって、上述した装置の２つ以上における処理を実行させるプログラムを実行することによって、それらの装置における処理が１つの情報処理装置で実行されることになる。ソースコード記憶装置１５が他の装置と１つの情報処理装置によって構成されている場合には、ソースコード記憶装置１５は、その情報処理装置が有する記憶装置８２として構成されるようにしてもよい。
【００２６】
データ送信装置２は、例えば、パーソナルコンピュータ及び携帯端末装置等のように、ネットワークを経由してＷｅｂシステム１２にアクセス可能な情報処理装置である。携帯端末装置は、例えば、携帯電話（スマートフォンを含む）、ＰＨＳ（Personal Handyphone System）、及び、ＰＤＡ（Personal Digital Assistant）等である。データ送信装置２は、データ送信装置２が有する入力装置（図示せず）を介して、ユーザから入力された指示に応じて、その指示に応じたデータを、受信データ解析装置１１を介してＷｅｂシステム１２に送信する。また、データ送信装置２は、データ送信装置２が有する表示装置（図示せず）によって、Ｗｅｂシステム１２から受信した処理結果をユーザに対して表示する。
【００２７】
以下、本発明の実施の形態にかかるデータ処理システム１の処理について説明する。まず、図３を参照して、本発明の実施の形態にかかる受信データ解析装置１１の処理について説明する。図３は、本発明の実施の形態にかかる受信データ解析装置１１の処理の一例を示すフローチャートである。
【００２８】
データ送信装置２は、ユーザからの指示に応じて、データをＷｅｂシステム１２に対して送信する（ステップＳ１）。受信データ解析装置１１は、データ送信装置２が送信したデータを受信する（ステップＳ２）。
【００２９】
ステップＳ２にて受信データ解析装置１１が受信したデータは、「パラメータ名＝値」という形式のデータが複数個連結されている。受信データ解析装置１１は、受信したデータを文字列解析によって、「パラメータ名」と「値」の組み合わせに分離する（ステップＳ３）。これによって、どのようなパラメータ名の値が送信されているのかが、受信データ解析装置１１によって解析される。受信データ解析装置１１は、分離した「パラメータ名」のそれぞれを示すパラメータ情報を生成して、ソースコード解析装置１３に出力する（ステップＳ４）。また、受信データ解析装置１１は、データ送信装置２から受信したデータをＷｅｂシステム１２に出力する。これによって、Ｗｅｂシステム１２において、データ送信装置２から送信されたデータに基づいたプログラムの処理も実行することができる。
【００３０】
続いて、図４を参照して、本実施の形態にかかるソースコード解析装置１３及びログ出力追記装置１４の処理について説明する。図４は、本実施の形態にかかるソースコード解析装置１３及びログ出力追記装置１４の処理の一例を示すフローチャートである。なお、図４に示す処理は、パラメータ情報が示す「パラメータ名」のそれぞれについて実行されることになる。
【００３１】
ソースコード解析装置１３は、「パラメータ名」を示すパラメータ情報をパラメータ名受信する（ステップＳ５）。ソースコード解析装置１３は、パラメータ情報が示す「パラメータ名」の値が、ソースコード記憶装置１５から取得したソースコードにおいて、変数に代入されているか否かを判定する（ステップＳ６）。ソースコード解析装置１３は、例えば、ソースコード記憶装置１５から取得したソースコードに対して文字列解析を行って、ソースコードにおいて「パラメータ名」の文字列が含まれている箇所を特定することにより、「パラメータ名」が変数に代入されているか否かを判定する。以下のステップＳ９、Ｓ１２においても、同様にして、文字列解析を行うことで、ソースコードにおいて、変数の値を代入している文字列、変数の値を利用している処理の文字列が含まれる箇所を特定する。
【００３２】
「パラメータ名」の値が変数に代入されていない場合（ステップＳ６のＮｏ）、ソースコード解析装置１３は、その「パラメータ名」に対する処理を終了する。パラメータ情報が示す「パラメータ名」の全てに対して、図４に示す処理を実行していない場合には、ソースコード解析装置１３及びログ出力追記装置１４は、それらの「パラメータ名」について図４に示す処理を実行する。なお、パラメータ情報が示す「パラメータ名」の全てにおいて、ステップＳ６でＮｏとなった場合には、後述するような、ソースコードへのログ出力文（ログ出力処理のコード）の追記及びＷｅｂシステム１２のプログラムの更新は行われない。
【００３３】
「パラメータ名」の値が変数に代入されている場合（ステップＳ６のＹｅｓ）、ソースコード解析装置１３は、ソースコードにおいて、その「パラメータ名」の値が変数に代入されている箇所を示す検出結果情報をログ出力追記装置１４に出力する。ログ出力追記装置１４は、ソースコードにおいて、ソースコード解析装置１３から出力された検出結果情報が示す箇所に、「パラメータ名」の値（変数に代入される値）を出力するログ出力文を追記する（ステップＳ７）。
【００３４】
そして、ソースコード解析装置１３は、「パラメータ名」の値が代入された変数を、参照変数一覧に記載する（ステップＳ８）。なお、参照変数一覧を示す情報は、ソースコード解析装置１３が有する記憶装置に格納される。
【００３５】
図５は、参照変数一覧の一例を示す図である。図５（ａ）は、上記のステップＳ８の処理後の参照変数一覧を示す図である。図５（ａ）に示すように、「パラメータ名」の値が代入された変数の変数名「変数１」が記載される。
【００３６】
以降のステップＳ９〜Ｓ１３の処理は、参照変数一覧に記載された変数のそれぞれに対して順番に行われる。ステップＳ８の処理後、ソースコード解析装置１３は、ソースコードにおいて、参照変数一覧に記載された変数の値が他の変数に代入されているか否かを判定する（ステップＳ９）。すなわち、ここでは、最初に処理対象となる変数は、「パラメータ名」のデータが代入された変数「変数１」となる。
【００３７】
変数の値が他の変数に代入されている場合（ステップＳ９のＹｅｓ）、ソースコード解析装置１３は、ソースコードにおいて変数の値が他の変数に代入されている箇所を示す検出結果情報をログ出力追記装置１４に送信する。ログ出力追記装置１４は、ソースコードにおいて、ソースコード解析装置１３から出力された検出結果情報が示す箇所に、代入元の変数の値を出力するログ出力文を追記する（ステップＳ１０）。そして、ソースコード解析装置１３は、変数の値が代入された変数を参照変数一覧に追加する（ステップＳ１１）。
【００３８】
図５（ｂ）は、上記のステップＳ１１の処理後の参照変数一覧を示す図である。図５（ｂ）に示すように、変数の値が代入された他の変数の変数名「変数２」が、図５（ａ）に示す参照変数一覧に追加して記載される。なお、このとき、参照変数一覧に追加する変数と同一の変数が既に参照変数一覧に追加済みである場合には、変数の追加を抑止することが好ましく、そのようにしてもよい。
【００３９】
ステップＳ１１の処理が終了した場合、及び、変数の値が他の変数に代入されていない場合（ステップＳ９のＮｏ）、ソースコード解析装置１３は、ソースコードにおいて、参照変数一覧に記載された変数の値が、処理に利用されているか否かを判定する（ステップＳ１２）。ここで、「変数の値が処理に利用されている」とは、例えば、変数の値が、関数の引数として指定されて、関数の処理に利用されている場合である。
【００４０】
変数の値が処理に利用されている場合（ステップＳ１２のＹｅｓ）、ソースコード解析装置１３は、ソースコードにおいて変数の値が処理に利用されている箇所を示す検出結果情報をログ出力追記装置１４に送信する。ログ出力追記装置１４は、ソースコードにおいて、ソースコード解析装置１３から出力された検出結果情報が示す箇所に、処理に利用される変数の値を出力するログ出力文を追記する（ステップＳ１３）。
【００４１】
ステップＳ１３の処理が終了した場合、及び、変数の値が処理に利用されていない場合（ステップＳ１２のＮｏ）、ソースコード解析装置１３は、参照変数一覧を参照し、ステップＳ９〜Ｓ１３の処理が参照変数一覧に記載された全ての変数に対して行われたか否かを判定する（ステップＳ１４）。
【００４２】
ステップＳ９〜Ｓ１３の処理が参照変数一覧に記載された全ての変数に対して行われていない場合（ステップＳ１４のＮｏ）、ソースコード解析装置１３及びログ出力追記装置１４は、参照変数一覧に記載された変数のうち、ステップＳ９〜Ｓ１３の処理を未実行の変数に対して、ステップＳ９〜Ｓ１３の処理を実行する。例えば、参照変数一覧が図５（ｂ）に示す状態である場合、変数「変数２」が処理対象となる。また、変数「変数２」の値が他の変数に代入されている場合には（ステップＳ９のＹｅｓ）、値が代入された変数が参照変数一覧に追加され（ステップＳ１１）、変数「変数２」に対する処理の終了後に、その参照変数一覧に追加された変数に対する処理が行われることになる（ステップＳ１４、Ｓ９〜１３）。
【００４３】
ステップＳ９〜Ｓ１３の処理が参照変数一覧に記載された全ての変数に対して行われた場合（ステップＳ１４のＹｅｓ）、ソースコード解析装置１３及びログ出力追記装置１４は、処理を終了する。パラメータ情報が示す「パラメータ名」の全てに対して、上述した処理を実行していない場合には、ソースコード解析装置１３及びログ出力追記装置１４は、順次、それらの「パラメータ名」について処理を実行する。
【００４４】
なお、以上の説明では、パラメータ情報において複数の「パラメータ名」が示されている場合には、複数の「パラメータ名」のそれぞれについて１つずつ図４に示す処理を実行する場合について説明した。しかし、複数の「パラメータ名」の全てについて、一度に、図４に示す処理を実行するようにしてもよい。例えば、ステップＳ６においては、複数の「パラメータ名」の全てについて、それらの値が変数に代入されているか否かを判定する。そして、変数に代入された「パラメータ名」が１つでもあった場合には、その「パラメータ名」の値を変数に代入するコードの直前にログ出力文を追記する（ステップＳ７）とともに、その「パラメータ名」の値が代入された変数を参照変数一覧に記載する（ステップＳ８）。以降、ソースコード解析装置１３及びログ出力追記装置１４は、参照変数一覧に記載された変数の１つずつについて、ステップＳ９以降の処理を実行する。
【００４５】
また、図４のステップＳ９〜Ｓ１１の処理と、ステップＳ１２〜Ｓ１３の処理の順番は入れ替えてもよい。つまり、処理対象の変数の値が他の変数に代入されている箇所と、処理対象の変数の値が処理に利用されている箇所にログ出力文を追記するものであれば、処理実行順序は、図４に示す順序に限られない。
【００４６】
また、以上の説明では、ステップＳ１０、Ｓ１３で検出結果情報を、適宜、ログ出力追記装置１４に送信する場合について例示したが、これに限られない。ステップＳ１０、Ｓ１３で検出した箇所を示す情報を検出結果情報に蓄積して行き、全ての「パラメータ名」に対して、図４に示す処理が終了したときに、その検出結果情報をログ出力追記装置１４に送信するようにしてもよい。そして、ログ出力追記装置１４は、検出結果情報に示される箇所のそれぞれについてログ出力文を追記する。
【００４７】
続いて、図６を参照して、図４を参照して説明した処理によって、ソースコードに対して、ログ出力処理のコードが追記されるプロセスについて説明する。図６は、図４を参照して説明した処理によって、ソースコードに対して、ログ出力処理のコードが追記されるプロセスの一例を示した図である。
【００４８】
図６（ａ）は、図４のステップＳ５において、ソースコード記憶装置１５に格納されているソースコードを示す図である。Ｗｅｂシステム１２は、このソースコードから生成されたプログラムを実行することによって動作している。図６（ａ）のソースコードの１つ目のコード、２つ目のコードでは、変数として「value」及び「value2」が定義されている。３つ目のコードでは、変数「value」にパラメータ名「key1」の値が代入されている。４つ目のコードでは、変数「value2」に変数「value」が代入されている。５つ目のコードでは、関数「trim」の処理に変数「value2」の値が利用されている。
【００４９】
ここでは、ステップＳ５において、ソースコード解析装置１３が、受信データ解析装置１１からパラメータ名「key1」とその値を受信した場合について説明する。つまり、データ処理システム１が、データ送信装置２からパラメータ名「key1」と、その値を含むデータを受信した場合について説明する。ステップＳ６において、ソースコード解析装置１３は、図６（ａ）に示すソースコードにパラメータ名「key1」の値が変数に代入されているか否かを判定する。
【００５０】
前述の通り、図６（ａ）に示すソースコードの３つ目のコードには、パラメータ名「key1」の値を変数「value」に代入するコードが記載されている（ステップＳ６のＹｅｓ）。そのため、ログ出力追記装置１４は、このコードの直前に、パラメータ名「key1」の値をログとして出力するコードを追記する（ステップＳ７）。
【００５１】
図６（ｂ）は、このステップＳ７の処理終了後において、ログ出力追記装置１４がログ出力処理のコードを追記したソースコードである。図６（ｂ）に示すように、ログ出力追記装置１４は、パラメータ名「key1」の値をログとして出力するコード「log_output(getParameter("key1"))」を、パラメータ名「key1」の値を変数「value」に代入するコードの１行前（図６（ｂ）の３つ目のコード）に新たに記載する。図６（ｂ）において、新たにコードが記載された箇所を下線で示す。そして、ソースコード解析装置１３は、パラメータ名「key1」の値が代入された変数「value」を参照変数一覧に記載する（ステップＳ８）。
【００５２】
次に、前述の通り、図６（ａ）に示すソースコードの４つ目のコードには、変数「value」の値を変数「value2」に代入するコードが記載されている（ステップＳ９のＹｅｓ）。そのため、ログ出力追記装置１４は、このコードの直前に、代入元の変数「value」の値をログとして出力するコードを追記する（ステップＳ１０）。
【００５３】
図６（ｃ）は、このステップＳ１０の処理終了後において、ログ出力追記装置１４がログ出力処理のコードを追記したソースコードである。図６（ｃ）に示すように、ログ出力追記装置１４は、変数「value」の値をログとして出力するコード「log_output(value)」を、変数「value」の値を変数「value2」に代入するコードの１行前（図６（ｃ）の５つ目のコード）に新たに記載する。図６（ｃ）において、新たにコードが記載された箇所を下線で示す。そして、ソースコード解析装置１３は、変数「value」の値が代入された変数「value2」を参照変数一覧に追加する（ステップＳ１１）。
【００５４】
ここで、図６（ａ）に示すソースコードにおいて、変数「value」の値は関数の処理には利用されていない（ステップＳ１２のＮｏ）。そのため、ログ出力追記装置１４は、ログとして出力するコードを追記（ステップＳ１３）は実行しない。
【００５５】
ここで、変数「value」に対するステップＳ９〜Ｓ１３の処理が終了するが、参照変数一覧に記載された変数「value2」については処理が実行されていない（ステップＳ１４のＮｏ）。そのため、ソースコード解析装置１３は、変数「value2」に対してステップＳ９〜Ｓ１３の処理を実行する。
【００５６】
ここで、図６（ａ）に示すソースコードにおいて、変数「value2」の値は他の変数に代入されていない(ステップＳ９のＮｏ)。そのため、ログ出力追記装置１４は、ログ出力追記装置１４は、ログとして出力するコードを追記（ステップＳ１０）は実行しない。
【００５７】
前述の通り、図６（ａ）に示すソースコードの５つ目のコードには、変数「value2」の値が関数「trim」の処理に利用されている（ステップＳ１２のＹｅｓ）。そのため、ソースコード解析装置１３は、変数「value2」の値を利用して関数「trim」の処理を実行するコードの直前に、変数「value2」の値をログとして出力するコードを追記する（ステップＳ１３）。このとき、ソースコード解析装置１３は、変数の値を利用して処理を実行する関数の戻り値が代入された変数が、参照変数一覧に追加済みでない場合には、参照変数一覧に追加するようにしてもよい。
【００５８】
図６（ｄ）は、このステップＳ１３の処理終了後において、ログ出力追記装置１４がログ出力処理のコードを追記したソースコードである。図６（ｄ）に示すように、ログ出力追記装置１４は、処理に利用されている変数「value2」の値をログとして出力するコード「log_output(value2)」を、変数「value2」の値を利用して処理をするコードの１行前（図６（ｃ）の７つ目のコード）に新たに記載する。図６（ｄ）において、新たにコードが記載された箇所を下線で示す。
【００５９】
ここで、参照変数一覧に記載された全ての変数「value」及び「value2」に対するステップＳ９〜Ｓ１３の処理が終了するので、ソースコード解析装置１３及びログ出力追記装置１４の処理は、図４に示す処理を終了する。
【００６０】
また、ソースコード解析装置１３は、ログ出力処理のコードをソースコードに追加するときに、ログ出力処理のコードの実行に必要なライブラリを読み込むコードが、ソースコード上に存在するか否かについて解析を行う。これは、ログ出力処理に必要なライブラリの名前又はパッケージ名を示す情報を、ソースコード解析装置１３が有する記憶装置に予め格納しておき、その情報が示す名前又はパッケージ名のライブラリを読み込むコードがソースコードに含まれているか否かによって判定する。
【００６１】
そして、ライブラリを読み込むコードがソースコード上に存在しなかった場合、ソースコード解析装置１３は、そのライブラリの名前又はパッケージ名を示す情報を、ログ出力追記装置１４に対して出力する。ログ出力追記装置１４は、ソースコード解析装置１３から出力された情報が示す名前又はパッケージ名のライブラリを読み込むコードをソースコードに追記する。
【００６２】
ライブラリを読み込むコードがソースコード上に存在する場合には、ソースコード解析装置１３は、そのライブラリの名前又はパッケージ名を示す情報を、ログ出力追記装置１４に対して出力しない。すなわち、ログ出力追記装置１４によって、ライブラリを読み込むコードは追記されない。
【００６３】
なお、上述した説明では、パラメータ名の値又は変数の値が利用されているコード（パラメータ名の値又は変数の値を他の変数に代入するコード、及び、変数の値を関数の処理に利用しているコード）の直前にログ出力処理のコードを追加するようにしているが、これに限られない。例えば、パラメータ名の値又は変数の値が利用されているコードの直後にログ出力処理のコードを追加するようにしてもよい。すなわち、本実施の形態において、ログ出力処理の追加対象となる位置は、ソースコードにおいて、パラメータ名の値又は変数の値が利用されているコードから、そのパラメータ名の値又は変数の値が同一である範囲内であれば、いずれの位置であってもよい。
【００６４】
図４に示す処理の終了後、ログ出力追記装置１４は、ログ出力処理のコードを追記したソースコードを、コンパイラを実行することによってコンパイルする。ログ出力追記装置１４は、コンパイルによって生成したプログラムを、Ｗｅｂシステム１２に送信する。Ｗｅｂシステム１２は、Ｗｅｂシステム１２が有する記憶装置に元から格納されているプログラム（ログ出力処理が追加されていないプログラム）を、ログ出力追記装置１４から送信されたプログラムに置換して、その新たに生成されたプログラムを実行する。
【００６５】
なお、コンパイルによって生成したプログラムに代えて、ログ出力処理のコードを追記したソースコードをＷｅｂシステム１２に送信するようにしてもよい。この場合、Ｗｅｂシステム１２は、ログ出力追記装置１４から受信したソースコードを、コンパイラを実行することによってコンパイルする。そして、Ｗｅｂシステム１２は、Ｗｅｂシステム１２が有する記憶装置に元から格納されているプログラム（ログ出力処理が追加されていないプログラム）を、コンパイルによって生成したプログラムに置換して、その新たに生成されたプログラムを実行する。
【００６６】
新たに生成したプログラムの適用後に、データ送信装置２のユーザがデータ送信装置２からプログラムの生成に使用されたデータと同じデータを送信すること、又は、受信データ解析装置１１がプログラムの生成に使用されたデータと同じデータを送信することによって、Ｗｅｂシステム１２において、そのデータに関する処理のログを出力することが可能となる。
【００６７】
実施の形態にかかるデータ処理システム１は、例えば、Ｗｅｂシステム１２によるＷｅｂサービスが実際に運用中の状態か、本格的な運用前ではあるが実際に利用されている状態で、ユーザがデータ送信装置２から送信するデータによるＷｅｂシステム１２での処理結果に異常が発生したような場合に適用することができる。
【００６８】
具体的には、受信データ解析装置１１は、Ｗｅｂシステム１２に転送したデータを、受信データ解析装置１１が有する記憶装置に格納しておくようにする。そして、データ処理システム１の管理者は、受信データ解析装置１１から、Ｗｅｂシステム１２から送信された処理結果に異常があった場合に、受信データ解析装置１１に記憶装置に格納されたデータのうち、その処理結果の生成に利用されたデータを、ログ出力処理を追加した新たなプログラムの適用後に、Ｗｅｂシステム１２に送信するようにする。また、データ送信装置２から、その処理結果の生成に利用されたデータと同一のデータを再送するようにしてもよい。すなわち、ログ出力処理の追加によって、関連するログが出力されるようになったデータを、データ送信装置２又は受信データ解析装置１１から送信する。
【００６９】
Ｗｅｂシステム１２は、送信されたデータ及び新たなプログラムに基づいて、再度処理を実行する。この際、新たなプログラムには、上述したようにログ出力処理が追加されているため、送信されたデータの値と、その値が代入された変数の値と、その変数の値の代入が複数の変数を介して繰り返された場合における各変数の値とが、ログに出力される。
【００７０】
データ処理システム１の管理者は、出力されたログを参照することで、受信したデータ自体に誤りがあったのか、又は、受信したデータを利用した処理のいずれかの箇所の処理に誤りがあったのか等の異常の原因を特定することが可能となる。ログには、処理において、受信したデータの値がどのような値で、どのような変数の値が処理に利用され、変数の値がどのように変化するのかが記載されているからである。これによって、データ処理システム１の管理者は、受信したデータの値に異常がない場合においても、処理のどの箇所で異常が生じたか（どの箇所で変数の値が想定外の値となったか）を特定することができる。すなわち、異常の原因箇所の特定を容易にすることが可能となる。
【００７１】
なお、Ｗｅｂシステム１２によるログは、テキストファイルに対して出力するようにしてもよく、Ｗｅｂシステム１２が有する表示装置にテキストの形式で出力するようにしてもよい。
【００７２】
ここで、Ｗｅｂシステム１２は、データ送信装置２から受信したデータに基づいて処理を実行する際に、常にログを出力するようにしてもよいが、処理結果に異常が発生した場合のみにログを出力するようにしてもよい。これは、異常が発生したことを特徴付ける処理結果をＷｅｂシステム１２に認識させておくことで、Ｗｅｂシステム１２において処理結果に異常が発生したことを検出可能とする。
【００７３】
具体的には、データ処理システム１の管理者は、異常発生時における処理結果をＷｅｂシステム１２の記憶装置に予め格納しておく。そして、Ｗｅｂシステム１２は、データ送信装置２から受信したデータに基づいた処理結果が、記憶装置に格納された異常発生時における処理結果と一致するか否かを判定する。処理結果が異常発生時における処理結果と一致しない場合、Ｗｅｂシステム１２は、ログを出力する。
【００７４】
例えば、異常発生時における処理結果が、データ送信装置２の画面上に何も表示を行わないことを示す情報となる場合、その処理結果をＷｅｂシステム１２の記憶装置に格納しておく。そして、Ｗｅｂシステム１２は、データ送信装置２から受信したデータに基づいた処理結果が、記憶装置に格納された異常発生時における処理結果と一致する場合に、ログを出力する。これは、ログの出力結果となるテキストを一時的にＷｅｂシステム１２の記憶装置に保持しておき、処理結果に異常が発生した場合に、記憶装置に保持していたテキストを表示装置に出力することによって実現する。上述した受信データ解析装置１１における処理結果の異常の判断も、同様にして行うようにしてよい。
【００７５】
図７を参照して、このログの出力を制御する処理について説明する。図７は、本発明の実施の形態にかかるＷｅｂシステム１２のログ出力制御処理の一例を示すフローチャートである。図７（ａ）は、Ｗｅｂシステム１２のログ出力制御処理の一例を示すフローチャートであり、図７（ｂ）は、Ｗｅｂシステム１２によって生成されるログ出力一覧の一例を示す。ログ出力一覧は、Ｗｅｂシステム１２の記憶装置に出力されたログの情報となる。
【００７６】
まず、Ｗｅｂシステム１２は、データ送信装置２から受信したデータに基づいて処理を実行する。このとき、Ｗｅｂシステム１２は、プログラムに追加されたログ出力処理によって、ログ出力一覧に、受信したデータの値又は変数の値を追加する（ステップＳ１５）。例えば、ログ出力処理によって、変数１、変数２、及び変数３の値が出力される場合、Ｗｅｂシステム１２は、図７（ｂ）に示すように、ログ出力一覧を生成する。
【００７７】
Ｗｅｂシステム１２は、データ送信装置２から受信したデータに基づいた処理の終了後、データ送信装置２の画面上に表示させるデータがあるか否かを判定する（ステップＳ１６）。すなわち、Ｗｅｂシステム１２の処理結果に誤りがないか否かを判定する。
【００７８】
データ送信装置２の画面上に表示させるデータがある場合、（ステップＳ１６のＹｅｓ）、Ｗｅｂシステム１２は、ログを表示装置に出力しない。この場合、Ｗｅｂシステム１２は、データ送信装置２の画面上に表示させるデータを示す処理結果を、受信データ解析装置１１を介してデータ送信装置２に送信する。
【００７９】
データ送信装置２の画面上に表示させるデータがない場合（ステップＳ１６のＮｏ）、Ｗｅｂシステム１２は、記憶装置に保持されたログ出力一覧に存在する値を、ログとして表示装置に出力する（ステップＳ１７）。以上に説明した処理によって、Ｗｅｂシステム１２は、処理結果に誤りが発生した場合のみ、ログを表示する。
【００８０】
＜発明の実施の形態の概要＞
続いて、図８を参照して、本発明の実施の形態にかかるデータ処理システム１の概要となる異常原因特定支援システム９について説明する。図８は、本発明の実施の形態にかかる異常原因特定支援システム９の一例を示す全体構成図である。
【００８１】
異常原因特定支援システム９は、変数情報記憶部９１、ソースコード記憶部９２、変数利用箇所検出部９３、及び、処理追加部９４を有する。異常原因特定支援システム９は、他の情報処理装置から受信したデータをプログラムにおける特定の変数に代入して、プログラムを実行し、実行結果を他の情報処理装置に送信する。
【００８２】
変数情報記憶部９１は、異常原因特定支援システム９が実行するプログラムにおける変数を示す変数情報が格納される。ソースコード記憶部９２は、異常原因特定支援システム９が実行するプログラムのソースコードが格納される。ソースコード記憶部９２は、ソースコード記憶装置１５に対応する。
【００８３】
変数利用箇所検出部９３は、ソースコード記憶部９２に格納されたソースコードにおいて、他の情報処理装置から受信したデータが代入される変数を示す変数情報を変数情報記憶部９１に格納する。また、変数利用箇所検出部９３は、変数情報記憶部９１に格納された変数情報が示す変数が利用されている箇所を検出する。さらに、変数利用箇所検出部９３は、変数情報記憶部９１に格納された変数情報が示す変数が利用されている箇所を検出するとともに、その変数の値が代入される変数を示す変数情報を変数情報記憶部９１に格納する処理、を変数情報記憶部９１に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返す。変数情報記憶部９１及び変数利用箇所検出部９３は、ソースコード解析装置１３に対応する。
【００８４】
処理追加部９４は、ソースコード記憶部９２に格納されたソースコードにおいて、変数利用箇所検出部９３によって検出された箇所に、その箇所で利用される変数の値を出力する出力処理を追加する。処理追加部９４は、ログ出力追記装置１４に対応する。
【００８５】
続いて、本発明の実施の形態にかかる異常原因特定支援システム９の処理について説明する。
【００８６】
変数利用箇所検出部９３は、ソースコード記憶部９２に格納されたソースコードにおいて、他の情報処理装置から受信したデータが代入される変数を示す変数情報を変数情報記憶部９１に格納するとともに、変数情報記憶部９１に格納された変数情報が示す変数が利用されている箇所を検出する処理を実行する。また、この処理において、変数利用箇所検出部９３は、変数利用箇所検出部９３は、変数情報記憶部９１に格納された変数情報が示す変数が利用されている箇所を検出するとともに、その変数の値が代入される変数を示す変数情報を変数情報記憶部９１に格納する処理、を変数情報記憶部９１に格納された変数情報が示す変数のそれぞれに対して実行するまで繰り返す。
【００８７】
処理追加部９４は、ソースコード記憶部９２に格納されたソースコードにおいて、変数利用箇所検出部９３によって検出された箇所に、その箇所で利用される変数の値を出力する出力処理を追加する。
【００８８】
これによれば、受信したデータに関する全ての処理を自動的に判別して、そこにログ出力処理を追加することができる。すなわち、受信したデータの利用範囲において、必要な箇所に十分にログ出力処理を追加することができるため、適切なログを出力することが可能となる。したがって、ログを参照することによって、異常の原因箇所の特定を容易にすることが可能となる。
【００８９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００９０】
上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００９１】
１  データ処理システム
２  データ送信装置
８  情報処理装置
９  異常原因特定支援システム
１１  受信データ解析装置
１２  Ｗｅｂシステム
１３  ソースコード解析装置
１４  ログ出力追記装置
１５  ソースコード記憶装置
８１  入力装置
８２  記憶装置
８３  ＣＰＵ
８４  通信装置
８５  表示装置
９１  変数情報記憶部
９２  ソースコード記憶部
９３  変数利用箇所検出部
９４  処理追加部
【図１】
2013182441.tif 000003
【図２】
2013182441.tif 000004
【図３】
2013182441.tif 000005
【図４】
2013182441.tif 000006
【図５】
2013182441.tif 000007
【図６】
2013182441.tif 000008
【図７】
2013182441.tif 000009
【図８】
2013182441.tif 000010