(57)【要約】【課題】データ処理でエラーが発生したときのエラー発生経路を、効率的に絞込むことで、効率的なデバッグ作業を行うことを可能にしたデータ遷移トレース装置を提供する。【解決手段】本願発明のデータ遷移トレース装置は、データレコードの集合であるチャンクを複数入力し、入力チャンクに対応して出力チャンクを出力する、複数の情報処理を順次実行する実行手段と、２番目以降の前記情報処理ごとに、前段の前記情報処理の前記出力チャンクを当該情報処理の前記入力チャンクに編成し直すとともに、何れかの前記データレコードを共有する、前記入力チャンクと前段の前記出力チャンクを対応付けるチェーン情報を、チェーン記憶手段に記憶するチャンク分割手段と、を備える。【選択図】      図１
2014067109.tif 000002
【特許請求の範囲】
【請求項１】
データレコードの集合であるチャンクを複数入力し、入力チャンクに対応して出力チャンクを出力する、複数の情報処理を順次実行する実行手段と、
２番目以降の前記情報処理ごとに、前段の前記情報処理の前記出力チャンクを当該情報処理の前記入力チャンクに編成し直すとともに、何れかの前記データレコードを共有する、前記入力チャンクと前段の前記出力チャンクを対応付けるチェーン情報を、チェーン記憶手段に記憶するチャンク分割手段と、
を備えるデータ遷移トレース装置。
【請求項２】
前記チャンク分割手段は、前記出力チャンクごとに、当該出力チャンクに含まれる前記データレコードを含む後段の前記入力チャンクの識別子を前記チェーン情報として、前記チェーン記憶手段に記憶する
請求項１のデータ遷移トレース装置。
【請求項３】
前記チャンク分割手段は、前記入力チャンクごとに、当該入力チャンクに含まれる前記データレコードが含まれていた前段の前記出力チャンクの識別子を前記チェーン情報として、前記チェーン記憶手段に記憶する
請求項１のデータ遷移トレース装置。
【請求項４】
いずれかの前記情報処理の前記出力チャンクでエラーを検出して、前記チェーン記憶手段を参照して、当該情報処理の前段の前記情報処理の前記出力チャンクを特定する、トレースを繰り返して、最初の前記情報処理の前記入力チャンクを特定するトレース手段
をさらに備える請求項１乃至３のデータ遷移トレース装置。
【請求項５】
前記トレース手段が特定した最初の前記情報処理の前記入力チャンクが包含する前記データレコードを、１つずつ前記実行手段に入力して前記情報処理を順次実行させ、各々の前記情報処理ごとに、入力データレコードの値と、当該情報処理が当該入力データレコードを処理して出力した出力データレコードの値と、当該情報処理の前段の前記情報処理が出力した前記出力データレコードと当該入力データレコードを対応付ける対応情報とを対応付けて、トレース記憶手段に記憶するトレース情報格納手段と、
をさらに備える請求項４のデータ遷移トレース装置。
【請求項６】
前記実行手段が、全ての前記データレコードの処理を１回実行した後に、前記トレース手段が特定した、最初の前記情報処理の前記入力チャンクが包含する前記データレコードをまとめた後、各々の前記情報処理の前記入力チャンクが包含する前記データレコードの数が、１回目の前記処理のときよりも、所定の値小さくなるように前記チャンク分割手段に指示した上で、前記実行手段に前記データレコードの処理の再実行を指示するトレース制御手段
をさらに備える請求項４乃至５のデータ遷移トレース装置。
【請求項７】
前記トレース情報格納手段は、各々の前記情報処理の前記入力データレコード毎に、当該情報処理の識別情報を、当該情報処理のプログラムのソースコード内のコメント情報に照らし合わせて、当該情報処理に関する前記プログラムのソースコードの情報を収集し、当該入力データレコード処理時のログ情報から前記プログラムの状態情報を収集して、前記プログラムのソースコードの情報、および、前記プログラムの状態情報を、前記トレース記憶手段に記憶する
請求項５乃至６のデータ遷移トレース装置。
【請求項８】
前記トレース記憶手段が記憶した情報をもとに、各々の前記情報処理に入力される前記入力データレコードを示すアイコンを始点とし、当該入力データレコードに対する当該情報処理の前記出力データレコードであって、当該情報処理の後段の前記情報処理に入力される前記入力データレコードを示す前記アイコンを終点とする矢印線で接続し、前記アイコンの上にマウスカーソルが置かれたときに、当該アイコンに対応する前記入力データレコードの詳細情報を表示し、前記矢印線の上にマウスカーソルが置かれたときに、当該矢印線の前記始点に接続された前記アイコンに対応する前記入力データレコードの処理に関わる前記プログラムのソースコードの情報、および、前記プログラムの状態情報を画面表示する表示手段
をさらに備える請求項５乃至７のデータ遷移トレース装置。
【請求項９】
データレコードの集合であるチャンクを複数入力し、入力チャンクに対応して出力チャンクを出力する、複数の情報処理を順次実行し、
２番目以降の前記情報処理ごとに、前段の前記情報処理の前記出力チャンクを当該情報処理の前記入力チャンクに編成し直すとともに、何れかの前記データレコードを共有する、前記入力チャンクと前段の前記出力チャンクを対応付けるチェーン情報を、記憶域に記憶する
データ遷移トレース方法。
【請求項１０】
データレコードの集合であるチャンクを複数入力し、入力チャンクに対応して出力チャンクを出力する、複数の情報処理を順次実行する実行処理と、
２番目以降の前記情報処理ごとに、前段の前記情報処理の前記出力チャンクを当該情報処理の前記入力チャンクに編成し直すとともに、何れかの前記データレコードを共有する、前記入力チャンクと前段の前記出力チャンクを対応付けるチェーン情報を、記憶域に記憶するチャンク分割処理と、
をコンピュータに実行させるデータ遷移トレースプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、データ処理時にエラーが発生した場合に、デバックのためにエラーをトレースするためのデータ遷移トレース装置、データ遷移トレース方法、及び、データ遷移トレースプログラムに関する。
【背景技術】
【０００２】
近年のコンピュータシステムで動作するソフトウェアのライン数や処理するデータ量は非常に大規模になってきている。したがって、ソフトウェアや入力データにおけるバグによりデータ処理時にエラーが発生したときのデバッグ作業の難易度は年々高くなってきており、デバッグ作業を効率的に行うための技術が求められている。
【０００３】
デバッグ作業を効率的に行うための技術としては、例えば、プログラムの実行途中にチェックポイントをいくつか設定し、エラーが発生した場合は、エラーが発生する直前のチェックポイントからプログラムを再実行させてプログラムの実行をトレースする技術などが、一般的によく知られている。
【０００４】
上述に関連する技術として、特許文献１には、チェックポイントを取得しながらプログラムを実行するコンピュータシステムにおいて、プログラムの障害発生が検出されたときに、プログラムをデバックモードに移行させて、チェックポイントからリスタートさせるシステムが公開されている。
【０００５】
また、特許文献２には、チェックポイントについての情報、およびチェックポイントに関連するプログラムの実行状態やバグについての情報を正確に記録して共有化し、複数の作業者によるデバッグを効率的に行うシステムが公開されている。
【０００６】
また、特許文献３には、プログラムの実行順序を把握するために用いるトレース制御システムに関して、トレース条件設定回路による回路の複雑化やトレースメモリの物理的規模の拡大を抑えて、ソースプログラムの関数ＩＤ又はＯＳによって管理されるタスクの処理順序を把握するシステムが公開されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平7-311693号公報
【特許文献２】特開2009-86808号公報
【特許文献３】特開2009-9201号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
例えば、入力データを複数のジョブステップで処理し、前段のジョブステップの出力結果を後段のジョブステップが処理することを順次繰り返して、最終的な出力結果が得られるようなデータ処理でエラーが発生した場合、当該エラーが発生したジョブステップの処理に必ずしも問題があるとは限らない。
【０００９】
例えば、入力データが包含する何れかのレコードにエラーの原因が存在する場合、当該エラーが発生したジョブステップの入力データを生成した前段以前のジョブステップが、エラーとなったデータを生成したことに原因があることになる。
【００１０】
上述のデータ処理ケースの場合、エラーの可能性のある入力データのレコードの絞込みを行うことでデバッグ作業を効率化できるが、特許文献１乃至３のシステムでは、エラーの可能性のある入力データのレコードの絞込みの機能は有していない。
【００１１】
本願発明の目的は、上述の問題点を解決したデータ遷移トレース装置、データ遷移トレース方法、及び、データ遷移トレースプログラムを提供することである。
【課題を解決するための手段】
【００１２】
本願発明の一実施形態のデータ遷移トレース装置は、データレコードの集合であるチャンクを複数入力し、入力チャンクに対応して出力チャンクを出力する、複数の情報処理を順次実行する実行手段と、２番目以降の前記情報処理ごとに、前段の前記情報処理の前記出力チャンクを当該情報処理の前記入力チャンクに編成し直すとともに、何れかの前記データレコードを共有する、前記入力チャンクと前段の前記出力チャンクを対応付けるチェーン情報を、チェーン記憶手段に記憶するチャンク分割手段と、を備える。
【００１３】
本願発明の一実施形態のデータ遷移トレース方法は、データレコードの集合であるチャンクを複数入力し、入力チャンクに対応して出力チャンクを出力する、複数の情報処理を順次実行し、２番目以降の前記情報処理ごとに、前段の前記情報処理の前記出力チャンクを当該情報処理の前記入力チャンクに編成し直すとともに、何れかの前記データレコードを共有する、前記入力チャンクと前段の前記出力チャンクを対応付けるチェーン情報を、記憶域に記憶する。
【００１４】
本願発明の一実施形態のデータ遷移トレースプログラムは、データレコードの集合であるチャンクを複数入力し、入力チャンクに対応して出力チャンクを出力する、複数の情報処理を順次実行する実行処理と、２番目以降の前記情報処理ごとに、前段の前記情報処理の前記出力チャンクを当該情報処理の前記入力チャンクに編成し直すとともに、何れかの前記データレコードを共有する、前記入力チャンクと前段の前記出力チャンクを対応付けるチェーン情報を、記憶域に記憶するチャンク分割処理と、をコンピュータに実行させる。
【発明の効果】
【００１５】
本願発明は、データ処理でエラーが発生したときのエラー発生経路を、効率的に絞込むことで、効率的なデバッグ作業を行うことができるようにする。
【図面の簡単な説明】
【００１６】
【図１】本願発明の第１の実施形態のデータ遷移トレース装置の構成を示すブロック図である。
【図２】本願発明の第１の実施形態におけるチェーン情報の格納動作を示すフローチャートである。
【図３】本願発明の第１の実施形態におけるトレース情報の格納、表示動作を示すフローチャートである。
【図４】本願発明の第１の実施形態におけるデータ処理ケース１のデータ遷移例である。
【図５】本願発明の第１の実施形態におけるデータ処理ケース１の場合のチェーン情報の構成例である。
【図６】本願発明の第１の実施形態におけるデータ処理ケース１の場合のトレース情報の構成例である。
【図７】本願発明の第１の実施形態におけるデータ処理ケース２のデータ遷移例である。
【図８】本願発明の第１の実施形態におけるデータ処理ケース２の場合のチェーン情報の構成例である。
【図９】本願発明の第１の実施形態におけるデータ処理ケース２の場合のトレース情報の構成例である。
【図１０】本願発明の第１の実施形態における表示部のトレース情報の表示例である。
【図１１】本願発明の第２の実施形態のデータ遷移トレース装置の構成を示すブロック図である。
【図１２】本願発明の第２の実施形態におけるデータ処理ケース２の場合のトレース制御部によるエラー箇所絞込みの動作例である。
【図１３】本願発明の第３の実施形態のデータ遷移トレース装置の構成を示すブロック図である。
【発明を実施するための形態】
【００１７】
本願発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１８】
図１は本実施形態のデータ遷移トレース装置の構成を示すブロック図である。
【００１９】
本実施形態のデータ遷移トレース装置１は、実行部１０と、チャンク分割部２０と、チェーン記憶部３０と、トレース部４０と、トレース情報格納部５０と、トレース記憶部６０と、表示部７０とを包含している。
【００２０】
実行部１０は、情報処理１実行部１０１と、情報処理２実行部１０２と、情報処理３実行部１０３と、情報処理１入力データ１１１と、情報処理２入力データ１１２と、情報処理３入力データ１１３と、出力データ１１４と、プログラムソースコード１２０とを包含している。
【００２１】
情報処理１実行部１０１は、情報処理１入力データ１１１を入力してデータ処理し、処理結果を出力する。情報処理２実行部１０２は、情報処理１実行部１０１からの出力結果をチャンク分割部２０が再編成して生成した情報処理２入力データ１１２を入力してデータ処理し、処理結果を出力する。情報処理３実行部１０３は、情報処理２実行部１０２からの出力結果をチャンク分割部２０が再編成して生成した情報処理３入力データ１１３を入力してデータ処理し、出力データ１１４を出力する。
【００２２】
プログラムソースコード１２０は、情報処理１実行部１０１、情報処理２実行部１０２、及び、情報処理３実行部１０３が実行するデータ処理のプログラムのソースコードである。
【００２３】
チャンク分割部２０は、情報処理１入力データ１１１と、情報処理２入力データ１１２と、情報処理３入力データ１１３のそれぞれについて、包含する入力データレコードを、入力データレコードの塊であるチャンクに、所定のレコード数（以下、チャンクサイズと記載）で分割する。
【００２４】
データ処理ケース１における、チャンク分割部２０による、各入力データのチャンクへの分割例を図４に示す。
【００２５】
図４に示すデータ処理ケース１では、情報処理１入力データ１１１は、７つの入力データレコードを包含している。
【００２６】
チャンク分割部２０は、情報処理１入力データ１１１を、チャンクサイズを３にして、チャンクに分割し、各チャンクを識別するためのチャンクＩＤを付与する。本データ処理ケース１の場合、チャンク１−１は１番目から３番目の入力データレコードを包含し、チャンク１−２は４番目から６番目の入力データレコードを包含し、チャンク１−３は７番目の入力データレコードを包含する。
【００２７】
情報処理１実行部１０１は、各入力データレコードの住所を、都道府県と区市以下の部分に分割する処理を行う。情報処理１入力データ１１１の６番目の入力データレコードは、データ入力ミスにより、東京都の“都”が抜けており、情報処理１実行部１０１は、当該入力データレコードの都道府県を認識できず、都道府県部分を“ｎｕｌｌ”として出力するが、エラーとしては扱わない。情報処理１実行部１０１は、チャンク分割部２０の指示に従い、上述の処理をチャンク単位で実行し、チャンクごとに結果を出力する。
【００２８】
チャンク分割部２０は、情報処理１実行部１０１の出力結果（図示せず）を再編成して情報処理２入力データ１１２を生成し、チャンクサイズを３にして、新たにチャンクに分割し、各チャンクを識別するためのチャンクＩＤ２−１乃至２−３を付与する。チャンク２−１は、情報処理１実行部１０１から出力された１番目から３番目のデータレコードを包含し、チャンク２−２は４番目から６番目のデータレコードを包含し、チャンク２−３は７番目のデータレコードを包含する。
【００２９】
情報処理２実行部１０２は、各入力レコードの都道府県を漢字からカタカナに変換し、区市以下の部分を、区市とそれ以下の部分に分割する処理を行う。情報処理２実行部１０２は、“ｎｕｌｌ”を包含している６番目の入力データレコードをエラーとしては扱わない。情報処理２実行部１０２は、チャンク分割部２０の指示に従い、上述の処理をチャンク単位で実行し、チャンクごとに結果を出力する。
【００３０】
チャンク分割部２０は、情報処理２実行部１０２の出力結果（図示せず）を再編成して情報処理３入力データ１１３を生成し、チャンクサイズを３にして、新たにチャンクに分割し、各チャンクを識別するためのチャンクＩＤ３−１乃至３−３を付与する。チャンク３−１は、情報処理２実行部１０２から出力された１番目から３番目のデータレコードを包含し、チャンク３−２は４番目から６番目の入力データレコードを包含し、チャンク３−３は７番目の入力データレコードを包含する。
【００３１】
情報処理３実行部１０３は、各入力データレコードをコード変換する処理を行う。情報処理３実行部２０３は、“ｎｕｌｌ”を包含している６番目の入力データレコードのコード変換ができないため、エラーとして出力データ１１４に出力する。情報処理３実行部１０３は、チャンク分割部２０の指示に従い、上述の処理をチャンク単位で実行しチャンクごとに結果を出力する。
【００３２】
上述のデータ処理ケース１とは異なるデータ処理ケース２における、チャンク分割部２０による、各入力データのチャンクへの分割例を図７に示す。
【００３３】
図７に示すデータ処理ケース２では、情報処理１実行部１０１のデータ処理内容は、データ処理ケース１と同様である。情報処理２実行部１０２は、データ処理ケース１のときとは異なり、チャンク分割部２０により都道府県をキーとしてソートされた入力データレコードを、都道府県毎に入力データレコード数を集計するデータ処理を行う。
【００３４】
データ処理ケース２ではソート処理が入るため、情報処理２実行部１０２への入力データレコードの順番は、データ処理ケース１のときのように、情報処理１実行部１０１から出力されたレコード順とはならない。情報処理２入力データ１１２の入力データレコードは、情報処理１実行部１０１からの出力順が、１番目、２番目、４番目、６番目、３番目、５番目、７番目のレコード順で、情報処理２実行部１０２へ入力される。
【００３５】
チャンク分割部２０は、情報処理１実行部１０１からの出力順が、１番目、２番目、４番目のデータレコードに対応する入力データレコードをチャンク２−１とし、６番目、３番目、５番目のデータレコードに対応する入力データレコードをチャンク２−２とし、７番目のデータレコードに対応する入力データレコードをチャンク２−３として、情報処理２実行部１０２へ入力する。
【００３６】
情報処理３実行部１０３は、各入力データレコードの都道府県をコード変換する処理を行う。チャンク分割部２０は、チャンクサイズが２であるチャンク３−１乃至３−３を情報処理３実行部１０３へ入力する。情報処理３実行部１０３は、“ｎｕｌｌ”を包含している２番目の入力データレコードのコード変換ができないため、エラーとして出力データ１１４に出力する。
【００３７】
チャンク分割部２０は、また、各情報処理実行部の各出力チャンクについて、当該出力チャンクに包含されるデータレコードを包含する、後段の情報処理実行部への入力チャンクを対応付けて、当該出力チャンク、当該入力チャンクの識別情報をチェーン記憶部３０に格納する。上述のデータ処理ケース１におけるチェーン記憶部３０が記憶したチェーン情報３００の構成例を図５に示す。
【００３８】
例えば、情報処理１実行部１０１が、チャンク１−１を処理して出力した出力チャンクが包含するデータレコードは、全て、情報処理２実行部１０２へ入力されるチャンク２−１に包含されることを示している。
【００３９】
チャンク３−２については、情報処理３実行部１０３が入力して実行したときにエラーとなるため、チャンク分割部２０は、チェーン情報３００における出力チャンク３−２のチェーンレコードにエラー発生の情報を登録する。
【００４０】
上述のデータ処理ケース２におけるチェーン記憶部３０が記憶したチェーン情報３００の構成例を図８に示す。この場合、例えば、情報処理１実行部１０１が、チャンク１−１を処理して出力した出力チャンクが包含するデータレコードは、情報処理２実行部１０２へ入力されるチャンク２−１、チャンク２−２の何れかに包含されることを示している。
【００４１】
チャンク３−１については、情報処理３実行部１０３が入力して実行したときにエラーとなるため、チャンク分割部２０は、チェーン情報３００における出力チャンク３−２のチェーンレコードにエラー発生の情報を登録する。
【００４２】
尚、チャンク分割部２０がチェーン情報３００を格納する方式としては、上述の他に、各情報処理実行部の各入力チャンクについて、当該入力チャンクに包含されるデータレコードを包含していた、前段の情報処理実行部の出力チャンクを対応付けて、当該入力チャンク、当該出力チャンクの識別情報をチェーン記憶部３０に格納する方式もある。
【００４３】
トレース部４０は、チェーン記憶部３０のチェーン情報３００をトレースして、エラー発生に影響している可能性のある、情報処理１入力データ１１１におけるチャンクを特定する。
【００４４】
図５に示すデータ処理ケース１の例の場合、トレース部４０は、出力チャンクの項目でエラーとなっているチェーンレコードの入力チャンクが３−２であることを確認する。トレース部４０は、次に、情報処理３実行部１０３の前段の情報処理２実行部１０２に関するチェーンレコードで、後段入力チャンクの項目が３−２を包含するものをサーチして、ヒットしたチェーンレコードの出力チャンクが２−２であることを特定する。
【００４５】
トレース部４０は、さらに、情報処理２実行部１０２の前段の情報処理１実行部１０１に関するチェーンレコードで、後段入力チャンクの項目が２−２を包含するものをサーチして、ヒットしたチェーンレコードの出力チャンクが１−２であることを最終的に特定する。
【００４６】
図８に示すデータ処理ケース２の例の場合、トレース部４０は、出力チャンクの項目でエラーとなっているチェーンレコードの入力チャンクが３−１であることを確認する。トレース部４０は、次に、情報処理３実行部１０３の前段の情報処理２実行部１０２に関するチェーンレコードで、後段チャンクチャンクの項目が３−１を包含するものをサーチして、ヒットしたチェーンレコードの出力チャンクが２−１及び２−２であることを特定する。
【００４７】
トレース部４０は、さらに、情報処理２実行部１０２の前段の情報処理１実行部１０１に関するチェーンレコードで、後段入力チャンクの項目が２−１及び２−２を包含するものをサーチして、ヒットしたチェーンレコードの出力チャンクが１−１及び１−２であることを最終的に特定する。
【００４８】
データトレース情報格納部５０は、トレース部４０により特定された、情報処理１入力データ１１１におけるチャンクが包含する入力データレコードを、情報処理１実行部１０１が１つずつ入力してデータ処理し、引き続いて、情報処理２実行部１０２、および、情報処理３実行部１０３も入力データレコードを１つずつ入力してデータ処理したときの、データトレースに必要な情報を実行部１０から収集する。
【００４９】
トレース情報格納部５０が収集する情報は、各々の入力データレコードの値と、当該入力データレコードを処理する情報処理実行部の識別情報と、当該入力データレコード処理時のプログラムの状態情報と、当該入力データレコードの処理に関係するプログラムのソースファイル情報と、情報処理実行部が当該入力データレコードを処理して出力した出力データレコードの値と、前段の情報処理実行部が出力した出力データレコードと当該入力データレコードを対応付ける対応情報である。
【００５０】
上述の情報のうち、当該入力データレコード処理時のプログラムの状態情報については、トレース情報格納部５０が、当該入力データレコードを情報処理実行部が処理しているときの、実行部２０のログから収集する。
【００５１】
当該入力データレコードの処理に関係するプログラムのソースファイル情報については、トレース情報格納部５０が、プログラムソースコード１２０から収集する。通常、プログラムソースコード１２０には、各情報処理実行部が行うプログラムがどの部分に相当するかコメントされており、トレース情報格納部５０が、情報処理実行部の識別情報を、プログラムソースコード１２０のコメント行に照らし合わせて、上述のソースファイル情報を収集する。
【００５２】
トレース情報格納部５０は、上述で収集した各情報を、入力データレコードの値をキーとして対応付けたトレース情報として、トレース記憶部６０に出力する。上述のデータ処理ケース１におけるトレース情報６００の構成例を図６に示す。
【００５３】
図６に示すとおり、トレース情報６００の各トレースレコードには、トレース情報格納部５０によりＩＤが付与されている。図６における親ＩＤは、上述した、前段の情報処理実行部が出力した出力データレコードと当該入力データレコードを対応付ける対応情報である。
【００５４】
例えば、出力データレコードがエラーとなっている、トレース情報６００におけるＩＤが９のトレースレコードの親ＩＤは６である。トレース情報６００におけるＩＤが９のトレースレコードの入力データレコードの値と、ＩＤが６のトレースレコードの出力データレコードの値は、いずれも“ｎｕｌｌ，東京Ｆ，Ｕ”である。すなわち、ＩＤと親ＩＤの値は、ある特定の入力データレコードに関して、何れかの情報処理実行部での処理結果に関する情報と、当該情報処理実行部の前段の情報処理実行部での処理結果に関する情報とを対応付けている。
【００５５】
図６のデータ処理ケース１の場合、出力でエラーが発生したＩＤが９のトレースレコードの親ＩＤは６であり、ＩＤが６のトレースレコードの親ＩＤは３である。実行部１０のデバッグ担当者は、トレース情報６００におけるＩＤが９、６、３のトレースレコードの情報を順番にトレースし、ＩＤが３のトレースレコードの入力データレコードの値が“東京Ｆ区Ｕ”となっており、東京都の“都”が抜けていることがエラー発生の原因であることを特定する。
【００５６】
上述のデータ処理ケース２におけるトレース情報６００の構成例を図９に示す。この場合、出力でエラーが発生したＩＤが１６のトレースレコードの親ＩＤは１０であり、ＩＤが１０のトレースレコードの親ＩＤは６である。実行部１０のデバッグ担当者は、トレース情報６００におけるＩＤが１６、１０、６のトレースレコードの情報を順番にトレースし、ＩＤが６のトレースレコードの入力データレコードの値が“東京Ｆ区Ｕ”となっており、東京都の“都”が抜けていることがエラー発生の原因であることを特定する。
【００５７】
表示部７０は、トレース情報６００を画面上にグラフィック表示する。表示部７０の画面表示例を図１０に示す。図１０は、上述のデータ処理ケース２の場合のトレース情報６００を画面表示したときのイメージである。
【００５８】
表示部７０は、表示画面のウィンドウの上部に情報処理の実行フロー図を表示し、下部にデータレコードの遷移図を表示する。
【００５９】
データレコードの遷移図における、１乃至１６の数字が表示されたアイコンは、それぞれ、図９に示したトレース情報６００における、ＩＤが１乃至１６に対応する入力データレコードを示している。例えば、トレース情報６００におけるＩＤが６の入力データレコードは、情報処理１実行部１０１の処理によりＩＤが１０の入力データレコードに遷移し、ＩＤが１０の入力データレコードは、情報処理２実行部１０２の処理によりＩＤが１６の入力データレコードに遷移し、ＩＤが１６の入力データレコードは、情報処理３実行部１０３の処理によりエラーとなることを表示している。
【００６０】
表示画面上で、デバッグ担当者がマウスカーソルを、入力データレコードを示すアイコンの上においたとき、表示部７０は、当該入力データレコードの詳細情報を表示する。例えば、１２と表示されたアイコンについては、表示部７０は、「埼玉県，Ｅ市Ｖ」という情報を表示する。
【００６１】
表示画面上で、デバッグ担当者がマウスカーソルを、アイコン同士を結ぶ矢印線の上においたとき、表示部７０は、矢印線の始点側のアイコンが示す入力データレコードの処理に関わるプログラムのソースコードの情報や、プログラム状態情報を表示する。例えばアイコン１０からアイコン１６への矢印線については、表示部７０は、図９のトレース情報６００におけるＩＤが１０のレコードにおけるプログラム状態情報とプログラムソースファイル情報を表示する。
【００６２】
次に図２のフローチャートを参照して、本実施形態のチェーン情報３００の格納動作について詳細に説明する。
【００６３】
チャンク分割部２０は、情報処理１入力データ１１１が包含する入力データレコードを、所定のチャンクサイズのチャンクに分割し、チャンクＩＤを付与する（Ｓ１０１）。情報処理１実行部１０１は、情報処理１入力データ１１１をチャンクごとに入力してデータ処理し、チャンクごとに結果出力する（Ｓ１０２）。
【００６４】
情報処理１実行部１０１の処理でエラーが発生した場合（Ｓ１０３でＹｅｓ）、チャンク分割部２０は、チェーン記憶部３０に、エラー発生情報を追加し（Ｓ１１２）、全体の処理は終了する。情報処理１実行部１０１の処理でエラーが発生しなかった場合（Ｓ１０３でＮｏ）、チャンク分割部２０は、情報処理１実行部１０１の出力結果を再編成して、情報処理２入力データ１１２を生成し、所定のチャンクサイズのチャンクに分割し、チャンクＩＤを付与する（Ｓ１０４）。
【００６５】
チャンク分割部２０は、情報処理１実行部１０１から出力された各チャンクについて、当該チャンクに包含されるデータレコードを包含する、情報処理２入力データ１１２のチャンクと対応付けて、それぞれのチャンクの識別情報をチェーン記憶部３０に格納する（Ｓ１０５）。情報処理２実行部１０２は、情報処理２入力データ１１２をチャンクごとに入力してデータ処理し、チャンクごとに結果出力する（Ｓ１０６）。
【００６６】
情報処理２実行部１０２の処理でエラーが発生した場合（Ｓ１０７でＹｅｓ）、チャンク分割部２０は、チェーン記憶部３０に、エラー発生情報を追加し（Ｓ１１２）、全体の処理は終了する。情報処理２実行部１０２の処理でエラーが発生しなかった場合（Ｓ１０７でＮｏ）、チャンク分割部２０は、情報処理２実行部１０２の出力結果を再編成して、情報処理３入力データ１１３を生成し、所定のチャンクサイズのチャンクに分割し、チャンクＩＤを付与する（Ｓ１０８）。
【００６７】
チャンク分割部２０は、情報処理２実行部１０２から出力された各チャンクについて、当該チャンクに包含されるデータレコードを包含する、情報処理３入力データ１１３チャンクと対応付けて、それぞれのチャンクの識別情報をチェーン記憶部３０に格納する（Ｓ１０９）。情報処理３実行部１０３は、情報処理３入力データ１１３をチャンクごとに入力してデータ処理し、出力データ１１４を出力する（Ｓ１１０）。
【００６８】
情報処理３実行部１０３の処理でエラーが発生した場合（Ｓ１１１でＹｅｓ）、チャンク分割部２０は、チェーン記憶部３０に、エラー発生情報を追加し（Ｓ１１２）、全体の処理は終了する。情報処理３実行部１０３の処理でエラーが発生しなかった場合（Ｓ１１１でＮｏ）、全体の処理は終了する。
【００６９】
次に図３のフローチャートを参照して、本実施形態のトレース情報６００の格納、表示動作について詳細に説明する。
【００７０】
トレース部４０は、チェーン記憶部３０のチェーン情報３００を参照し、エラー発生情報を含むチェーンレコードをサーチする（Ｓ２０１）。エラー発生情報を含むチェーンレコードが無い場合（Ｓ２０２でＮｏ）、全体の処理は終了する。エラー発生情報を含むチェーンレコードが有る場合（Ｓ２０２でＹｅｓ）、トレース部４０は、エラーが発生した情報処理Ｎ（Ｎは整数）に関するエラー情報を包含するチェーンレコード内の出力チャンクのＩＤを確認し、その値を後段入力チャンクのＩＤとして含む、情報処理Ｎ−１に関するチェーンレコードを全て特定する（Ｓ２０３）。
【００７１】
整数ｉをＮ−１から２まで１ずつ減少させて、ループ処理に入る（Ｓ２０４）。トレース部４０は、特定した情報処理ｉに関するチェーンレコード内の出力チャンクのＩＤの値を確認し、その値を後段入力チャンクのＩＤとして含む、情報処理ｉ−１に関するチェーンレコードを全て特定し（Ｓ２０５）、Ｓ２０４に戻る（Ｓ２０６）。
【００７２】
トレース部４０は、特定した情報処理１に関するチェーンレコード内の入力チャンクのＩＤの情報を、実行部１０へ送信する（Ｓ２０７）。情報処理１実行部１０１は、情報処理１入力データ１１１における、トレース部４０により特定された入力チャンクが包含する入力データレコードのみを１つずつ入力してデータ処理し、情報処理２入力データ１１２を出力する（Ｓ２０８）。
【００７３】
トレース情報格納部５０は、入力データレコード毎にＩＤを付与し、情報処理１実行部１０１の識別情報と、入力データレコードの値と、プログラム状態情報と、プログラムソースファイル情報と、出力データレコードの値を対応付けて、トレース記憶部６０に格納する（Ｓ２０９）。情報処理２実行部１０２は、情報処理２入力データ１１２の入力データレコードを１つずつ入力してデータ処理し、情報処理３入力データ１１３を出力する（Ｓ２１０）。
【００７４】
トレース情報格納部５０は、入力データレコード毎にＩＤを付与し、情報処理２実行部１０２の識別情報と、親ＩＤの情報と、入力データレコードの値と、プログラム状態情報と、プログラムソースファイル情報と、出力データレコードの値を対応付けて、トレース記憶部６０に格納する（Ｓ２１１）。情報処理3実行部１０3は、情報処理３入力データ１１３の入力データレコードを１つずつ入力してデータ処理し、出力データ１１４を出力する（Ｓ２１２）。
【００７５】
トレース情報格納部５０は、入力データレコード毎にＩＤを付与し、情報処理３実行部１０３の識別情報と、親ＩＤの情報と、入力データレコードの値と、プログラム状態情報と、プログラムソースファイル情報と、出力データレコードの値を対応付けて、エラー発生情報とともに、トレース記憶部６０に格納する（Ｓ２１３）。表示部７０は、トレース記憶部６０のトレース情報６００を画面表示し（Ｓ２１４）、全体の処理は終了する。
【００７６】
本実施形態には、データ処理でエラーが発生したときのエラー発生経路を、効率的に絞込むことで、効率的なデバッグ作業を行うことができるようにする効果がある。その第一の理由は、チャンク分割部２０が、実行部１０における各情報処理への入力データをチャンクに分割して、チャンク間のチェーン情報を生成してチェーン記憶部３０に格納するからである。その第二の理由は、トレース部４０が、チェーン情報をもとに、エラーの発生原因の可能性があるチャンクを特定し、特定されたチャンクが包含する入力データレコードについて、実行部１０が１つずつデータ処理したときの詳細情報を、トレース情報格納部５０が実行部１０から収集して、トレース情報としてトレース記憶部６０に格納するからである。
【００７７】
膨大なデータを処理する装置においてエラーが発生した場合、エラーの発生原因を追跡するデバッグ作業は困難な作業である。例えば、複数のステップを包含するバッチ処理の場合、ステップ単位でひとまとめにしたデータ処理を行うため、ステップ間にまたがるデータの関連を追跡することは、通常、困難である。
【００７８】
上述の問題に対応するため、データ処理が包含する複数のステップの各々に入力されるデータの関連を記録したチェーン情報を生成することにより、デバッグ作業を効率化することができる。
【００７９】
しかしながら、もし、個々のデータレコード間で上述のチェーン情報を生成しようとすると、その情報量は膨大なものとなる。本実施形態でチャンク分割部２０が生成するチェーン情報は、複数のデータレコードをまとめたチャンク間のものであるため、その情報量を小さく抑えることが可能となる。
【００８０】
そして、トレース部４０が、チェーン情報で示されるチャンク間の対応関係の経路を、エラー発生箇所から遡ることで、エラーの発生原因の可能性がある、実行部１０への入力チャンクを特定することができる。トレース情報格納部５０が、エラーの原因の可能性がある入力チャンクが包含する入力データレコードのみに絞り込んで、１つずつ実行部１０が入力して実行したときの詳細情報をトレース情報として生成することで、デバッグ担当者は効率的なデバッグ作業を行うことが可能となる。
【００８１】
また、実行部１０が行うデータ処理の仕様によっては、情報処理２入力データ１１２や情報処理３入力データ１１３のような、データ処理の中間データは、データ処理中の実行部１０内のメモリにのみ存在し、データ処理終了後、データが消えてしまう可能性がある。本実施形態のトレース情報格納部６０は、このような中間データに関する情報も、トレース情報としてトレース記憶部６０に格納し、トレース情報は、各々のデータレコードの処理に関係するプログラムの状態情報やプログラムソースファイル情報も包含するため、デバッグ効率を向上させる。
【００８２】
さらに、本実施形態では、表示部７０がトレース情報を画面上にグラフィック表示させることにより、デバッグ担当者がトレース情報の内容を容易に把握することができるため、デバッグ作業の効率をさらに向上させることが可能となる。
＜第２の実施形態＞
次に、本願発明の第２の実施形態について図面を参照して詳細に説明する。
【００８３】
図１１は本願発明の第２の実施形態のデータ遷移トレース装置の構成を示すブロック図である。
【００８４】
本実施形態のデータ遷移トレース装置１は、トレース制御部８０をさらに包含していることを除いては、第１の実施形態と同様であり、トレース制御部８０を除く部分の動作も第１の実施形態と同様である。
【００８５】
トレース制御部８０は、実行部１０が全ての入力データレコードの処理を１回実行したときにエラーが発生した場合、トレース部４０が特定した、エラー発生に影響している疑いのある、情報処理１入力データ１１１におけるチャンクが包含するデータレコードをまとめる。トレース制御部８０は、チャンクサイズを１回目の実行のときよりも小さくしてチャンクに分割するように、チャンク分割部２０に指示した後、上述でまとめたデータレコードについて、２回目のデータ処理の実行を実行部１０に指示する。
【００８６】
トレース制御部８０は、同様の動作を繰り返し実行し、エラー発生に影響している疑いのある、情報処理１入力データ１１１におけるデータレコードの絞り込みを行う。第１の実施形態の説明で示したデータ処理ケース２の場合での、本実施形態のトレース制御部８０によるエラー箇所絞込みの動作例を図１２に示す。
【００８７】
実行部１０が、全ての入力データレコードの処理を１回実行したときに発生したエラーについて、トレース部４０のトレース動作により、チャンク１−３−１はエラーに影響を与えていないことが判明する。
【００８８】
トレース制御部８０は、上述の結果をトレース部４０から受け取り、チャンク１−１−１、及び、１−２−１が包含する６個の入力データレコードについて、２回目のデータ処理の実行を実行部１０に指示する。このとき、トレース制御部８０は、１回目のデータ実行時よりも、チャンクサイズを小さくするように、チャンク分割部２０に指示する。
【００８９】
チャンク分割部２０は、トレース制御部８０からの指示を受けて、情報処理１入力データ１１１、及び、情報処理２入力データ１１２におけるチャンクサイズを、３から２に小さくし、情報処理３入力データ１１３におけるチャンクサイズを、２から１に小さくする。
【００９０】
実行部１０の２回目のデータ処理実行の後、トレース部４０のトレース動作により、チャンク１−１−２はエラーに影響を与えていないことが判明する。
【００９１】
トレース制御部８０は、上述の結果をトレース部４０から受け取り、チャンク１−２−２、及び、１−３−２が包含する４個の入力データレコードについて、３回目のデータ処理の実行を実行部１０に指示する。このとき、トレース制御部８０は、２回目のデータ実行時よりも、チャンクサイズをさらに小さくするように、チャンク分割部２０に指示する。
【００９２】
トレース制御部８０は、上述の動作を、所定の回数、繰り返し実行する。
【００９３】
本実施形態には、第１の実施形態と同様に、データ処理でエラーが発生したときのエラー発生経路を、効率的に絞込むことで、効率的なデバッグ作業を行うことができるようにする効果がある。その理由は、トレース制御部８０が、実行部１０の１回目のデータ処理実行後のトレース部４０のトレース結果を受けて、エラー原因の疑いのある入力データレコードのみについて、チャンクサイズを１回目のときより小さくして２回目のデータ処理を実行するように、実行部１０、及び、チャンク分割部２０へ指示し、同様の動作を３回目以降のデータ処理に関しても繰り返すからである。
【００９４】
実行部１０がデータ処理を１回実行した後では、トレース部４０による、エラー原因の疑いのある入力データレコードの絞込みが十分でない可能性があり、その場合、後でトレース情報格納部５０が生成するトレース情報のサイズが大きくなる恐れがある。
【００９５】
また、チャンク分割部２０が、最初からチャンクサイズを小さくしてチェーン情報を生成すれば、トレース部４０が、エラー原因の疑いのある入力データレコードを早く絞り込める可能性があるが、その場合、チェーン情報のサイズが大きくなる。
【００９６】
本実施形態のように、まずはチャンク分割部２０がチャンクサイズをある程度大きな値に設定してチェーン情報を生成した後、トレース制御部８０が、チャンクサイズを次第に小さくさせながら被疑データレコードの絞り込みを行うようにトレース制御を行うことにより、生成するチェーン情報やトレース情報のサイズを小さくさせ、デバッグ作業をさらに効率化することが可能となる。
＜第３の実施形態＞
次に、本願発明の第３の実施形態について図面を参照して詳細に説明する。
【００９７】
図１３は本願発明の第３の実施形態のデータ遷移トレース装置の構成を示すブロック図である。
【００９８】
本実施形態のデータ遷移トレース装置は、実行部１０と、チャンク分割部２０と、チェーン記憶部３０と、を包含している。
【００９９】
実行部１０は、チャンクを複数入力し、入力チャンクごとに出力チャンクを出力する情報処理を行う情報処理１実行部１０１、情報処理２実行部１０２、及び、情報処理３実行部１０３とを包含している。
【０１００】
チャンク分割部２０は、各情報処理実行部が行う情報処理ごとに、当該情報処理の入力チャンクと前記出力チャンクの対応をチェーン記憶部３０に格納し、２番目以降の情報処理ごとに、前段の情報処理の出力チャンクを当該情報処理の入力チャンクに編成し直す。
【０１０１】
チャンク分割部２０は、何れかのデータレコードを共有する、当該情報処理の入力チャンクと前段の出力チャンクを対応付けるチェーン情報を、チェーン記憶部３０に記憶する。
【０１０２】
本実施形態には、第１、及び、第２の実施形態と同様に、データ処理でエラーが発生したときのエラー発生経路を、効率的に絞込むことで、効率的なデバッグ作業を行うことができるようにする効果がある。その理由は、チャンク分割部２０が、実行部１０における各情報処理への入力データをチャンクに分割して、チャンク間のチェーン情報を生成してチェーン記憶部３０に格納するからである。
【０１０３】
本実施形態では、チェーン情報を基に、第１、及び、第２の実施形態におけるトレース部４０やトレース情報格納部５０に相当する装置が、デバックに必要なトレース情報等の情報を生成する場合もあれば、デバッグ作業者が、チェーン情報を直接解析してデバッグ作業を行う場合もある。
【０１０４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されたものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１０５】
１    データ遷移トレース装置
１０    実行部
２０    チャンク分割部
３０    チェーン記憶部
４０    トレース部
５０    トレース情報格納部
６０    トレース記憶部
７０    表示部
８０    トレース制御部
１０１    情報処理１実行部
１０２    情報処理２実行部
１０３    情報処理３実行部
１１１    情報処理１入力データ
１１２    情報処理２入力データ
１１３    情報処理３入力データ
１１４    出力データ
１２０    プログラムソースコード
３００    チェーン情報
６００    トレース情報
【図１】
2014067109.tif 000003
【図２】
2014067109.tif 000004
【図３】
2014067109.tif 000005
【図４】
2014067109.tif 000006
【図５】
2014067109.tif 000007
【図６】
2014067109.tif 000008
【図７】
2014067109.tif 000009
【図８】
2014067109.tif 000010
【図９】
2014067109.tif 000011
【図１０】
2014067109.tif 000012
【図１１】
2014067109.tif 000013
【図１２】
2014067109.tif 000014
【図１３】
2014067109.tif 000015