(57)【特許請求の範囲】
【請求項１】
コンピュータが、
入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよび前記データベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得し、
前記取得された複数の動作ログの中の、前記データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、前記カラムにデータの伝搬があるものと分析し、
前記伝搬があると分析されたカラムを出力する
処理を実行することを特徴とする分析支援方法。
【請求項２】
前記分析する処理は、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせた、積算、加算または積和の演算にかかる係数が一定である場合に、前記カラムにデータの伝搬があるものと分析する
ことを特徴とする請求項１に記載の分析支援方法。
【請求項３】
前記分析する処理は、前記データベースの所定のカラムにかかる更新については、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値との差分が一定である場合に、前記カラムにデータの伝搬があるものと分析する
ことを特徴とする請求項１または２に記載の分析支援方法。
【請求項４】
前記分析する処理は、一画面からの入力がきっかけで発生した画面単位の動作ログごとにキーとするカラムないし画面のパラメータのキー候補を取得し、当該キー候補を有するカラムごとに、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値とを組み合わせて前記所定の演算を行う
ことを特徴とする請求項１乃至３のいずれか一項に記載の分析支援方法。
【請求項５】
コンピュータに、
入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよび前記データベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得し、
前記取得された複数の動作ログの中の、前記データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、前記カラムにデータの伝搬があるものと分析し、
前記データの伝搬があると分析されたカラムを出力する
処理を実行させることを特徴とする分析支援プログラム。
【請求項６】
入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよび前記データベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得する取得部と、
前記取得された複数の動作ログの中の、前記データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、前記カラムにデータの伝搬があるものと分析する分析部と、
前記データの伝搬があると分析されたカラムを出力する出力部と
を有することを特徴とする分析支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、分析支援方法、分析支援プログラムおよび分析支援装置に関する。
【背景技術】
【０００２】
従来、リレーショナル・データベース（ＲＤＢ）などのデータベース（以下、ＤＢと表記する）を用いる業務システムでは、新機能の追加などの保守開発を行う時に、新機能の追加などによる変更の影響がどこまで波及するかを把握することが求められる。この影響が及ぶ範囲の把握では、ＤＢに対するデータの書き込みや読み込みによってデータがどのように伝搬していくかを調査する。例えば、ＤＢがＲＤＢである場合、書き込みはＳＱＬのＩＮＳＥＲＴやＵＰＤＡＴＥ命令に、読み込みはＳＥＬＥＣＴ命令にそれぞれ相当する。
【０００３】
ＤＢに対するＩＮＳＥＲＴやＵＰＤＡＴＥ命令による書き込み、ＳＥＬＥＣＴ命令による読み込みによってデータがどのように伝搬していくかを調査する方法は、大きく分けて静的方法と動的な方法がある。
【０００４】
静的な方法では、業務システムにかかるソースコードから、業務システムが実行された時のデータの流れを解析する方法がある。ソースコードを用いると、ソースコード内のデータ伝搬は正確に把握できる。しかしながら、業務システムにおいてＤＢなど外部データの入出力が存在すると、ＤＢを介して関係付く他のソースコードの発見と、そのソースコード内のデータ伝搬の把握が必要である。
【０００５】
例えば、業務システムのＪａｖａ（登録商標）などのソースコードで記述されたメソッドからＳＱＬを発行してＲＤＢとデータのやり取りを行う場合、データ伝搬を把握するためにはＳＱＬとソースコードの両方を分析する必要がある。しかしながら、ソースコードを正しく分析するのは手間を要し、データ伝搬を把握するのが困難である。また、静的な方法の場合、実際の業務において、あるデータ（カラム）への書き込みや読み出しが発生する順序関係を把握するのが困難であり、実際には発生しないデータ伝搬も抽出する可能性がある。
【０００６】
一方、動的な方法としては、プログラム実行に関する動作ログを取得・解析する方法や、ＳＱＬの実行履歴を動作ログとして用いた分析がある。解析する動作ログとしては、例えば実行したＳＱＬとその時のパラメータ、さらにＳＥＬＥＣＴ命令の場合は検索結果がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−１０２６６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来技術では、ＤＢを用いる業務システムにおけるデータ伝搬について、的確に把握することが困難な場合があるという問題がある。例えば、ＤＢより読み出した値をメソッド内で演算し、演算後の値を別のカラムに書き込むような間接的に関係性のあるデータ伝搬については、的確に把握することは困難である。
【０００９】
図２７は、業務システム３００を説明する説明図である。図２７に示すように、業務システム３００は、Ｗｅｂサーバ３１１、業務サーバ３１２、業務用ＤＢ３１３およびＤＢアクセスデータ３１４を有する。
【００１０】
Ｗｅｂサーバ３１１は、端末装置３０１のブラウザからのアクセスを受け付けて、業務処理のサービスを端末装置３０１のブラウザに提供する。具体的には、Ｗｅｂサーバ３１１は、端末装置３０１からのＨＴＴＰ（HyperText  Transfer  Protocol）パラメータを介した処理要求を業務サーバ３１２へ通知し、業務サーバ３１２の処理結果を端末装置３０１のブラウザに返す。業務サーバ３１２は、Ｗｅｂサーバ３１１からの処理要求をもとに、業務用の各種情報を格納するＲＤＢである業務用ＤＢ３１３へのアクセスを行って業務処理を実行し、処理結果をＷｅｂサーバ３１１へ返す。また、業務サーバ３１２は、業務用ＤＢ３１３へのアクセスにかかるログ（動作ログ）をＤＢアクセスデータ３１４に格納する。この動作ログには、実行したＳＱＬおよびパラメータや、ＳＥＬＥＣＴ命令の場合は検索結果がある。
【００１１】
例えば、Ｗｅｂサーバ３１１からのアクセスがきっかけとなり業務サーバ３１２がＳＥＬＥＣＴ文を実行した後に、ＩＮＳＥＲＴ文を実行する場合を想定する。この場合、ＤＢアクセスデータ３１４の動作ログからは、端末装置３０１より業務サーバ３１２へアクセスしたＨＴＴＰパラメータ（画面パラメータ）と、ＳＥＬＥＣＴ文およびパラメータと、検索結果と、ＩＮＳＥＲＴ文のパラータと、実行時刻とが得られる。
【００１２】
この動作ログにおいて、動的な方法により、例えば業務用ＤＢ３１３におけるＴａｂｌｅ１のカラムＣ１１からＳＥＬＥＣＴ文で読み出された値（ｙ１）と、Ｔａｂｌｅ２のカラムＣ２１にＩＮＳＥＲＴ文で書き込む値（ｚ１）とが常にｙ１＝ｚ１を満たすことが判明したものとする。この場合、カラムＣ１１の値が業務処理を経由してカラムＣ２１に伝搬していると推定できる。このように、検索結果の値をＩＮＳＥＲＴ文でそのまま別のカラムに書き込む場合には、動的な方法によりデータ伝搬を把握できる。
【００１３】
しかしながら、読み出された値（ｙ１）をメソッド内で演算し、演算後の値（ｚ１）を別のカラムに書き込む場合には、ｙ１≠ｚ１であることから、間接的な関係性が存在するにもかかわらず、その関係性を的確に把握することは困難である。また、ＵＰＤＡＴＥ文で更新する場合は、例えば一旦ＳＥＬＥＣＴ文を実行して読み出した値に演算を施し、演算後の値をＵＰＤＡＴＥ文で更新する。このように、ＵＰＤＡＴＥ文で更新が行われる場合も、既存の値がそのまま更新値として使われるものではないことから、間接的な関係性が存在するにもかかわらず、その関係性を的確に把握することは困難である。
【００１４】
１つの側面では、業務システムにおけるデータ伝搬を的確に把握することを可能とする分析支援方法、分析支援プログラムおよび分析支援装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
第１の案では、分析支援方法は、コンピュータが、入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよびデータベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得する処理を実行する。また、分析支援方法は、コンピュータが、取得された複数の動作ログの中の、データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、入力パラメータに含まれる値またはアクセス記録においてデータベースから読み出された値と、アクセス記録においてデータベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、カラムにデータの伝搬があるものと分析する。また、分析支援方法は、コンピュータが、伝搬があると分析されたカラムを出力する処理を実行する。
【発明の効果】
【００１６】
本発明の１実施態様によれば、業務システムにおけるデータ伝搬を的確に把握できる。
【図面の簡単な説明】
【００１７】
【図１】図１は、実施形態にかかる分析支援装置の構成を例示するブロック図である。
【図２】図２は、実施形態にかかる分析支援装置の動作例を示すフローチャートである。
【図３】図３は、「カラム１個との対応付け」の処理を示すフローチャートである。
【図４】図４は、「画面パラメータ１個との対応付け」の処理を示すフローチャートである。
【図５】図５は、「画面パラメータが持つ複数の繰り返しパラメータとＩＮＳＥＲＴ値の関係推定」の処理を示すフローチャートである。
【図６】図６は、「ＳＥＬＥＣＴ結果の２つのカラムとＩＮＳＥＲＴ値の関係推定」の処理を示すフローチャートである。
【図７】図７は、「キー値を介して関係付く２種類のＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定」の処理を示すフローチャートである。
【図８】図８は、「キー値を介して関係付く画面パラメータとＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定」の処理を示すフローチャートである。
【図９】図９は、実施形態にかかる分析支援装置の動作例を示すフローチャートである。
【図１０】図１０は、業務用ＤＢのテーブル構成を例示する図である。
【図１１】図１１は、動作ログの一例を説明する説明図である。
【図１２】図１２は、データテーブルの一例を説明する説明図である。
【図１３】図１３は、動作ログの一例を説明する説明図である。
【図１４】図１４は、データテーブルの一例を説明する説明図である。
【図１５】図１５は、動作ログの一例を説明する説明図である。
【図１６】図１６は、データテーブルの一例を説明する説明図である。
【図１７】図１７は、動作ログの一例を説明する説明図である。
【図１８】図１８は、データテーブルの一例を説明する説明図である。
【図１９】図１９は、動作ログの一例を説明する説明図である。
【図２０】図２０は、データテーブルの一例を説明する説明図である。
【図２１】図２１は、動作ログの一例を説明する説明図である。
【図２２】図２２は、データテーブルの一例を説明する説明図である。
【図２３】図２３は、動作ログの一例を説明する説明図である。
【図２４】図２４は、データテーブルの一例を説明する説明図である。
【図２５】図２５は、表示画面の一例を説明する説明図である。
【図２６】図２６は、分析支援プログラムを実行するコンピュータの一例を説明する説明図である。
【図２７】図２７は、業務システムを説明する説明図である。
【図２８】図２８は、受注業務におけるデータ伝搬の一例を説明する説明図である。
【図２９】図２９は、データ伝搬の検出に失敗した場合を説明する説明図である。
【図３０】図３０は、別実施形態にかかる分析支援装置の動作例を示すフローチャートである。
【図３１】図３１は、動作ログの一例を説明する説明図である。
【図３２】図３２は、データテーブルの一例を説明する説明図である。
【図３３】図３３は、データテーブルの一例を説明する説明図である。
【図３４】図３４は、データテーブルの一例を説明する説明図である。
【図３５】図３５は、データ伝搬の検出を説明する説明図である。
【図３６】図３６は、データテーブルの一例を説明する説明図である。
【図３７】図３７は、データテーブルの一例を説明する説明図である。
【図３８】図３８は、データテーブルの一例を説明する説明図である。
【図３９】図３９は、データ伝搬の検出を説明する説明図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して、実施形態にかかる分析支援方法、分析支援プログラムおよび分析支援装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する分析支援方法、分析支援プログラムおよび分析支援装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
【００１９】
図１は、実施形態にかかる分析支援装置１の構成を例示するブロック図である。図１に示すように、分析支援装置１は、ＰＣ（Personal  Computer）やワークステーション等の情報処理装置であり、ＤＢアクセスデータ２０に格納された業務システム２の動作ログを取得し、取得した動作ログの分析を行う。分析支援装置１は、動作ログ取得部１０、分析部１１、記憶部１２および出力部１３を有する。
【００２０】
業務システム２では、業務処理のサービスを提供するＷｅｂサーバへの端末装置からの要求により、業務サーバが業務用ＤＢにアクセスして業務処理を実行した際の動作ログをＤＢアクセスデータ２０としてログファイルなどに格納する。なお、本実施形態では、Ｗｅｂサーバを介した端末装置からの要求によるオンライン実行の動作ログの分析を例示する。具体的には、動作ログには、ブラウザ上の画面から入力した値を用いて、業務サーバが業務用ＤＢへアクセスして業務処理を実行した際の履歴が記述されている。なお、分析する動作ログの内容については、上記の例に限定しない。例えば、業務サーバがバッチ処理により業務用ＤＢにアクセスして業務処理を実行する場合の動作ログの分析にも適用可能である。
【００２１】
また、本実施形態では、ＤＢアクセスデータ２０において、業務用ＤＢへのアクセスにかかるＳＱＬ文は、バインド変数を用いて記述されていることを前提とする。このＳＱＬ文については、変数値が埋め込まれているものからバインド変数に相当する部分を抽出し、ＳＱＬとバインド変数、バインド変数値に変換することは可能である。
【００２２】
動作ログ取得部１０は、分析対象の業務システム２における所定のログファイルへアクセスするなどして、業務システム２の動作ログを取得する。具体的には、動作ログ取得部１０は、業務システム２の動作ログとして、端末装置の画面で入力し、業務サーバに入力されるＨＴＴＰパラメータ（画面パラメータ）と、その入力による業務用ＤＢの所定のカラムへのアクセス内容と、これらの実行順を判断可能な情報（処理時刻など）を取得する。業務用ＤＢの所定のカラムへのアクセス内容には、端末装置の画面からの入力による画面パラメータがきっかけで実行される一連のＳＱＬログ（ＳＱＬ文、入力パラメータ（バインド変数値）、ＳＥＬＥＣＴ文の場合は加えて検索結果）がある。
【００２３】
なお、端末装置の一画面からの入力がきっかけで発生した業務処理における動作ログ一式（画面パラメータとＳＱＬログ）を以下では画面単位ログとも呼ぶこととする。
【００２４】
分析部１１は、動作ログ取得部１０が取得した動作ログの内容をもとに、画面パラメータ内の変数値や業務用ＤＢのあるカラムから読み出された値が業務用ＤＢの所定のカラムへ伝搬するデータ伝搬があるか否かを分析する。記憶部１２は、分析部１１が分析する処理を行う際の作業用データ（動作ログ取得部１０が取得した動作ログなど）を記憶する。出力部１３は、分析部１１の分析結果をディスプレイへの表示や、プリンターによる印字により出力する。
【００２５】
分析部１１は、所定のカラムについての動作ログをもとに、画面パラメータ内の変数値や業務用ＤＢのあるカラムから読み出された値などの入力変数値と、所定のカラムへ書込む出力変数値とが一致するか否かを判定し、所定のカラムへの直接的なデータ伝搬があるか否かを分析する。また、分析部１１は、所定のカラムについての複数の動作ログをもとに、業務用ＤＢより読み出した値を演算し、演算後の値を別のカラムに書き込むような間接的なデータ伝搬の有無を分析する。具体的には、分析部１１は、所定のカラムについての複数の動作ログにおいて、入力変数値と、出力変数値とを組み合わせて所定の演算を行った演算結果が一定である場合に、所定のカラムへ間接的なデータ伝搬があるものと分析する。
【００２６】
なお、間接的なデータ伝搬については、任意の演算を対象としてデータ伝搬の有無を分析することは困難である。したがって、本実施形態では、業務処理で発生しがちな予め定められた演算を対象とする。具体的には、定数倍演算（例：消費税計算）、積和演算（例：単価と数量からの合計額計算）、固定値の加算を対象としている。
【００２７】
ここで、間接的なデータ伝搬の有無の分析について詳細に説明する。まず、所定のカラムへの書込みは、ＳＱＬのＩＮＳＥＲＴ文で値を挿入する場合と、ＳＱＬのＵＰＤＡＴＥ文で値を更新する場合とがある。
【００２８】
（ＩＮＳＥＲＴの場合）
分析部１１は、画面単位ログごとに、ＩＮＳＥＲＴ文より以前に実行した１個以上の同一ＳＥＬＥＣＴ文（ただしパラメータは異なる）を抽出する。同一ＳＥＬＥＣＴ文が存在するとき、分析部１１は、その検索結果ないし画面パラメータの１個ないし２個から次の値を計算する。
・カラムないし画面パラメータが１個：α・Ｃ＋β
・カラムないし画面パラメータが２個：αΣＣ・Ｄ＋β
ただし、α、βは定数、Ｃ、ＤはそれぞれＳＥＬＥＣＴ文で得られたテーブルのあるカラムの値ないし画面パラメータの値である。
【００２９】
分析部１１は、計算された値がＩＮＳＥＲＴ文で挿入する値と常に一致する場合には、検索結果のカラムないし画面パラメータがＩＮＳＥＲＴ対象のカラムに伝搬すると分析する。なお、定数α、βの計算は次のように行う。
【００３０】
（カラムないし画面パラメータが１個の場合）
分析部１１は、ある画面単位ログ２回分（ただし画面パラメータは異なる）より、あるＳＥＬＣＥＴで１個得られた検索結果の特定のカラムＣの値（ここではＣ１、Ｃ２とする）と、ＳＥＬＥＣＴより後で実行したＩＮＳＥＲＴでカラム（Ｘ）に挿入した値（ここではＸ１、Ｘ２）とを得る。
【００３１】
次いで、分析部１１は、α＝（Ｘ１−Ｘ２）／（Ｃ１−Ｃ２）の値を求め、求めた値が動作ログの組み合わせによらず常に一定であるか否かを、複数の動作ログを用いて計算する。αの値が常に一定の場合には、β＝Ｘ１−αＣ１なる関係がある。このことから、分析部１１は、複数の動作ログにおいてαの値が常に一定の場合、ＳＥＬＥＣＴで取得したカラムＣの値がαＣ＋βなる変形（演算）を施されてカラムＸにＩＮＳＥＲＴされ伝搬したものと分析する。
【００３２】
（画面パラメータ１個とＩＮＳＥＲＴ値の関係推定）
分析部１１は、ある画面単位ログ２回分（ただし画面パラメータは異なる）より、画面パラメータのうちの特定のパラメータＣの値（ここではＣ１、Ｃ２とする）と、ＩＮＳＥＲＴでカラム（Ｘ）に挿入した値（ここではＸ１、Ｘ２とする）とを得る。
【００３３】
次いで、分析部１１は、α＝（Ｘ１−Ｘ２）／（Ｃ１−Ｃ２）の値を求め、求めた値が動作ログの組み合わせによらず常に一定であるか否かを、複数の動作ログを用いて計算する。αの値が常に一定の場合には、β＝Ｘ１−αＣ１なる関係がある。このことから、分析部１１は、複数の動作ログにおいてαの値が常に一定の場合、画面パラメータＣの値がαＣ＋βなる変形（演算）を施されてカラムＸにＩＮＳＥＲＴされ伝搬したものと分析する。
【００３４】
（カラムないし画面パラメータが２個の場合）
カラムないし画面パラメータが２個の場合も、分析部１１は、画面単位ログ２回分を用い、調査対象のＩＮＳＥＲＴより以前に実行されたＳＥＬＥＣＴ結果ないし画面パラメータとの関係を、次の４つの場合で分析する。
【００３５】
（画面パラメータが持つ複数の繰り返しパラメータとＩＮＳＥＲＴ値の関係推定）
画面パラメータで同種のパラメータ値が複数繰り返される場合、ある動作ログから得られた繰り返されるパラメータの２種類（ＣとＤとする）の値とＩＮＳＥＲＴでカラムＸに挿入した値（Ｘ１とする）、同じ画面の別の動作ログから得られたパラメータ値が得られるものとする。なお、繰り返されるパラメータの２種類の値は、それぞれＣ１ｉとＤ１ｉ（ｉ＝１．．ｍ、ただしｍはパラメータの繰り返し数）とする。また、同じ画面の別の動作ログから得られたパラメータ値は、それぞれＣ２ｉとＤ２ｉ（ｉ＝１．．ｎ、ただしｎはパラメータの繰り返し数）とする。
【００３６】
このとき、分析部１１は、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログの組み合わせで計算する。分析部１１は、αが一定のとき、β＝Ｘ１−αΣＣ１ｉ・Ｄ１ｉであり、画面パラメータＣとＤの値がαΣＣ・Ｄ＋βなる変形を施されてカラムＸにＩＮＳＥＲＴされ伝搬したものと分析する。
【００３７】
なお、パラメータ値が複数繰り返されるというのは、例えばあるＵＲＬのパラメータ名のうち「abc-*、def-*、ghi-*、…（*は任意の文字列）」などの文字列が組となって繰り返されていることが容易に検出されたものを言う。一例としてＵＲＬが「http://aaa.bbb/exec?xyz=001&abc-1=123&def-1=234&ghi-1=345&abc-2=111&def-2=222&ghi-2=333&zzz=999」の場合、パラメータ名の最後の数値を無視すると同一の文字列が同じ順で繰り返し出現している。例示したＵＲＬでは、「abc-*」に対応するパラメータ値は順に(123、111)、「def-*」に対応するパラメータ値は順に(234、222)である。
【００３８】
（ＳＥＬＥＣＴ結果の２つのカラムとＩＮＳＥＲＴ値の関係推定）
画面単位ログで、ＳＥＬＥＣＴ（１つのＳＥＬＥＣＴで１個以上の検索結果が得られた場合ないし、パラメータの異なる同一のＳＥＬＥＣＴを１個以上実行し、１個以上の検索結果が得られた場合）の後にＩＮＳＥＲＴが実行されたものとする。また、検索結果の２つのカラムＣ、Ｄの値（それぞれＣ１ｉとＤ１ｉ、ｉ＝１．．ｍ、ただしｍは検索結果数、とする）と、ＩＮＳＥＲＴでカラムＸに設定した値（Ｘ１とする）が得られ、別の動作ログで同様にＣ、Ｄ、Ｘの値（Ｃ２ｊ、Ｄ２ｊ、ｊ＝１．．ｎ、ただしｎは検索結果数、Ｘ２）が得られたものとする。
【００３９】
このとき、分析部１１は、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログの組み合わせで計算する。分析部１１は、αが常に一定のとき、β＝Ｘ１−αΣＣ１ｉ・Ｄ１ｉであり、カラムＣとＤの値が、αΣＣ・Ｄ＋βなる変形を施されてカラムＸにＩＮＳＥＲＴされ、伝搬したものと分析する。
【００４０】
（キー値を介して関係付く２種類のＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定）
画面単位ログで、２つの異なるＳＥＬＥＣＴの検索結果（ただしそれぞれの検索結果数が同一である組み合わせを選択する）それぞれで得られた特定のカラムＣ、Ｄの値（それぞれＣ１ｉとＤ１ｉ、ｉ＝１．．ｍ、ただしｍは検索結果数、とする）と、その後に実行したＩＮＳＥＲＴでカラムＸに挿入した値（Ｘ１とする）が得られたものとする。また、同様にもう一つの動作ログ１回分から同一のカラムＣ、Ｄ、Ｘの値（Ｃ２ｊ、Ｄ２ｊ、ｊ＝１．．ｎ、ただしｎは検索結果数、Ｘ２）が得られたものとする。
【００４１】
このとき、分析部１１は、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログを用いて計算する。ただし、カラムＣ１ｉ、Ｄ１ｉが含まれるレコード間を対応づけるキーとなるカラムがそれぞれのレコードに存在し、キー値で対応づくレコードからＣ１ｉ、Ｄ１ｉを得る。Ｃ２ｊ、Ｄ２ｊも同様である。分析部１１は、αが常に一定の場合、β＝Ｘ１−αΣＣ１ｉ・Ｄ１ｉであり、カラムＣとＤの値がαΣＣ・Ｄ＋βなる変形を施されてカラムＸに伝搬したものと分析する。
【００４２】
（キー値を介して関係付く画面パラメータとＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定）
画面単位ログで、画面パラメータで同種のパラメータ値が２種類以上繰り返される場合、その繰り返し回数と、検索結果数が同じＳＥＬＥＣＴがあり、画面パラメータの１つと検索結果のカラムが同じでキー関係になっているものとする。また、ＳＥＬＥＣＴ結果の特定のカラムＣと、キーではない画面パラメータＤ（それぞれＣ１ｉとＤ１ｉ、ｉ＝１．．ｍ、ただしｍは検索結果数、とする）と、その後に実行したＩＮＳＥＲＴでカラムＸに挿入した値（Ｘ１とする）とが得られるものとする。また、同様にもう一つの動作ログ１回分から同一のカラムＣ、Ｄ、Ｘの値（Ｃ２ｊ、Ｄ２ｊ、ｊ＝１．．ｎ、ただしｎは検索結果数、Ｘ２）が得られるものとする。
【００４３】
このとき、分析部１１は、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログを用いて計算する。分析部１１は、αが常に一定の場合、β＝Ｘ１−αΣＣ１ｉ・Ｄ１ｉであり、画面パラメータＣとＳＥＬＥＣＴ結果Ｄの値がαΣＣ・Ｄ＋βなる変形を施されてカラムＸにＩＮＳＥＲＴされ伝搬したものと推定する。
【００４４】
（ＵＰＤＡＴＥの場合）
分析部１１は、値をＵＰＤＡＴＥで設定するとき、次の処理でデータ伝搬を分析する。画面単位ログで、ＵＰＤＡＴＥより以前に実行した１個以上の同一ＳＥＬＥＣＴ文（ただしパラメータは異なる）が存在するものとする。このとき、分析部１１は、検索結果ないし画面パラメータの１個ないし２個から計算される次の値がＵＰＤＡＴＥで更新する値と常に一致する場合、そのカラムないし画面パラメータがＵＰＤＡＴＥ対象のカラムに伝搬したものと分析する。
・カラムないし画面パラメータが１個：α・Ｃ＋β
・カラムないし画面パラメータが２個：αΣＣ・Ｄ＋β
ただしα、βの計算方法は前述と同様である。
【００４５】
また、ＵＰＤＡＴＥより以前に実行した１個以上の同一ＳＥＬＥＣＴ文（ただしパラメータは異なる）が存在するとき、その検索結果ないし画面パラメータの１個ないし２個から計算される次の値がＵＰＤＡＴＥで更新する増分値（新たに設定する値と直前のＳＥＬＥＣＴ結果との差分）と常に一致する場合、そのカラムないし画面パラメータがＵＰＤＡＴＥ対象のカラムに伝搬すると分析する。
【００４６】
以上の説明では、ある画面をきっかけで実行したときの画面単位ログに含まれるＳＱＬ列は常に同じということを前提としている。しかしながら、画面から入力する値に応じて実行されるＳＱＬ列が異なる場合もある。この場合は、実行されたＳＱＬ群が同じである実行を同一画面と見なして、上記の処理を行う。
【００４７】
図２は、実施形態にかかる分析支援装置１の動作例を示すフローチャートであり、上述したＩＮＳＥＲＴの場合の処理の一例である。図２に示すように、処理が開始されると、動作ログ取得部１０は、分析対象の業務システム２からＤＢアクセスデータ２０を参照して動作ログを取得する（Ｓ１）。取得する動作ログには、画面パラメータ（ＨＴＴＰパラメータ）、ＳＱＬステートメント、ＳＱＬパラメータ、ＳＱＬがＳＥＬＥＣＴの場合は検索結果、とそれぞれを実行した時刻（実行順を判別可能な精度）がある。なお、動作ログ取得部１０は、ＨＴＴＰパラメータからは、ＧＥＴないしＰＯＳＴメソッド要求で送信される、ＵＲＬないしメッセージボディに記述されたクエリ文字列（パラメータ名と値の対）を抽出する。
【００４８】
次いで、分析部１１は、画面パラメータをもとに、動作ログ取得部１０が取得した動作ログを画面単位の画面単位ログに分割する。例えば、分析部１１は、同一の画面を表示するＵＲＬへのアクセスごとに動作ログを分割する。そして、分析部１１は、分割した画面単位ログからＳＱＬ列を抽出する（Ｓ２）。
【００４９】
次いで、分析部１１は、画面単位ログごとに抽出されたＳＱＬ列をもとに、実行されたＳＱＬ文の組み合わせが同一の画面単位の動作ログの集合を作る（Ｓ３）。このとき、同一のＳＱＬ文（ＳＱＬパラメータは異なる）の実行回数の違いは考慮しないものとする。
【００５０】
次いで、分析部１１は、作成した画面単位の動作ログの集合ごとに、Ｓ４〜Ｓ１４の第１ループ処理を実行する。第１ループ処理が開始されると、分析部１１は、公知の方法を用いて、ＩＮＳＥＲＴするテーブルのカラムと、それ以前に実行したＳＥＬＥＣＴ結果で得られたカラムとを関係づける（Ｓ５）。具体的には、分析部１１は、あるカラムからＳＥＬＥＣＴ文で読み出された値（ｙ１）と、別のカラムにＩＮＳＥＲＴ文で書き込む値（ｚ１）とが常にｙ１＝ｚ１を満たす場合に、あるカラムから別のカラムへの直接的なデータ伝搬があるものと分析する。
【００５１】
次いで、分析部１１は、Ｓ５において直接的なデータ伝搬があるものと分析されず、関係付かなかったカラム（Ｘ）に対して、Ｓ６〜Ｓ１３の第２ループ処理を実行する。
【００５２】
第２ループ処理では、分析部１１は、「カラム１個との対応付け」の処理（Ｓ７）、「画面パラメータ１個との対応付け」の処理（Ｓ８）を実行する。また、分析部１１は、「画面パラメータが持つ複数の繰り返しパラメータとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ９）、「ＳＥＬＥＣＴ結果の２つのカラムとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ１０）を実行する。また、分析部１１は、「キー値を介して関係付く２種類のＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ１１）、「キー値を介して関係付く画面パラメータとＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ１２）を実行する。
【００５３】
第１、第２のループ処理が終了したところで、出力部１３は、第１、第２のループ処理による分析部１１の分析結果をディスプレイへの表示や、プリンターによる印字により出力する（Ｓ１５）。具体的には、出力部１３は、分析部１１の分析結果をもとに、業務用ＤＢの所定のカラムと、このカラムへのデータ伝搬があるものと分析された画面パラメータ内の変数値や業務用ＤＢのカラムとの対応関係を示す画像を出力する。
【００５４】
一例として、出力部１３は、業務用ＤＢのカラムおよび画面パラメータ内の変数値を列挙したテーブルについて、対応関係のあるカラムや変数値同士を線で結びつけた画像を表示する。なお、直接的なデータ伝搬があるものと分析されたカラムや変数値同士の対応関係を示す画像の出力態様と、間接的なデータ伝搬があるものと分析されたカラムや変数値同士の対応関係を示す画像の出力態様とは互いに異なるものであってもよい。例えば、出力部１３は、対応関係のあるカラムや変数値同士を線で結びつけた画像として表示する場合、直接的なデータ伝搬があるものと分析されたカラムや変数値同士は実線で表示し、間接的なデータ伝搬があるものと分析されたカラムや変数値同士は破線で表示してもよい。このように、直接的なデータ伝搬があるものと分析された分析結果と、間接的なデータ伝搬があるものと分析された分析結果との出力態様を互いに異なるようにすることで、分析結果をより見やすくできる。
【００５５】
図３は、「カラム１個との対応付け」の処理（Ｓ７）を示すフローチャートである。図３に示すように、Ｓ７の処理が開始されると、分析部１１は、処理対象の動作ログ集合から、画面をきっかけに処理対象のカラム（Ｘ）へＩＮＳＥＲＴするまでに実行されたＳＥＬＥＣＴ文の検索結果に含まれるカラムの集合（ＳｅｔＣ）を作る（Ｓ２０）。
【００５６】
次いで、分析部１１は、カラムの集合（ＳｅｔＣ）に含まれるカラム（Ｃ）ごとに、Ｓ２１〜Ｓ２６のループ処理を実行する。ループ処理が開始されると、分析部１１は、画面単位ログを一つ選び、ＳＥＬＥＣＴ結果のカラム（Ｃ）の値（ｃ１Ｖａｌ）とＩＮＳＥＲＴで挿入するカラム（Ｘ）の値（ｘ１Ｖａｌ）を取得する（Ｓ２２）。
【００５７】
次いで、分析部１１は、Ｓ２２で用いたもの以外の画面単位ログごとに、ＳＥＬＥＣＴ結果のカラム（Ｃ）の値（ｃ２Ｖａｌ）とＩＮＳＥＲＴで挿入するカラム（Ｘ）の値（ｘ２Ｖａｌ）を用いて次の計算を行い、αの値を求める（Ｓ２３）。
α＝（ｘ１Ｖａｌ−ｘ２Ｖａｌ）／（ｃ１Ｖａｌ−ｃ２Ｖａｌ）
【００５８】
次いで、分析部１１は、全ての動作ログ（画面単位ログ）でαが同じか否かを判定する（Ｓ２４）。αが同一値である場合（Ｓ２４：ＹＥＳ）、分析部１１は、カラム（Ｃ）の値が所定の演算を施されてカラム（Ｘ）にＩＮＳＥＲＴされて伝搬したものと分析する。したがって、分析部１１は、カラム（Ｃ）からカラム（Ｘ）へ間接的なデータ伝搬があったものと推定し（Ｓ２５）、次のカラムへと処理をループする（Ｓ２６）。なお、αが同一値でない場合（Ｓ２４：ＮＯ）、分析部１１は、カラム（Ｃ）からカラム（Ｘ）へ間接的なデータ伝搬があったものとは推定せず、次のカラムへと処理をループする。
【００５９】
図４は、「画面パラメータ１個との対応付け」の処理（Ｓ８）を示すフローチャートである。図４に示すように、Ｓ８の処理が開始されると、分析部１１は、処理対象の動作ログ集合から、画面パラメータの集合（ＳｅｔＣ）を作る（Ｓ３０）。
【００６０】
次いで、分析部１１は、作成した集合（ＳｅｔＣ）に含まれる画面パラメータ（Ｃ）ごとに、Ｓ３１〜Ｓ３６のループ処理を実行する。ループ処理が開始されると、分析部１１は、画面単位ログを一つ選び、画面パラメータ（Ｃ）の値（ｃ１Ｖａｌ）とＩＮＳＥＲＴで挿入するカラム（Ｘ）の値（ｘ１Ｖａｌ）を取得する（Ｓ３２）。
【００６１】
次いで、分析部１１は、Ｓ３２で用いたもの以外の画面単位ログごとに、画面パラメータ（Ｃ）の値（ｃ２Ｖａｌ）とＩＮＳＥＲＴで挿入するカラム（Ｘ）の値（ｘ２Ｖａｌ）を用いて次の計算を行い、αの値を求める（Ｓ３３）。
α＝（ｘ１Ｖａｌ−ｘ２Ｖａｌ）／（ｃ１Ｖａｌ−ｃ２Ｖａｌ）
【００６２】
次いで、分析部１１は、全ての動作ログ（画面単位ログ）でαが同じか否かを判定する（Ｓ３４）。αが同一値である場合（Ｓ３４：ＹＥＳ）、分析部１１は、画面パラメータ（Ｃ）の値が所定の演算を施されてカラム（Ｘ）にＩＮＳＥＲＴされて伝搬したものと分析する。したがって、分析部１１は、画面パラメータ（Ｃ）からカラム（Ｘ）へ間接的なデータ伝搬があったと推定し（Ｓ３５）、次の画面パラメータへと処理をループする。なお、αが同一値でない場合（Ｓ３４：ＮＯ）、分析部１１は、画面パラメータ（Ｃ）からカラム（Ｘ）へ間接的なデータ伝搬があったものとは推定せず、次の画面パラメータへと処理をループする。
【００６３】
図５は、「画面パラメータが持つ複数の繰り返しパラメータとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ９）を示すフローチャートである。図５に示すように、Ｓ９の処理が開始されると、分析部１１は、画面パラメータから、同一回数出現するパラメータ名の組を取得する（Ｓ４０）。次いで、分析部１１は、同一回数出現するパラメータ名の組ごとに、パラメータ２個の組み合わせを作成する（Ｓ４１）。
【００６４】
次いで、分析部１１は、作成した組み合わせごとに、Ｓ４２〜Ｓ４７のループ処理を実行する。ループ処理が開始されると、分析部１１は、画面単位ログを一つ選び、パラメータ名２個それぞれの値（それぞれＣ１ｉとＤ１ｉ、ｉ＝１．．ｍ、ただしｍはパラメータの繰り返し数）を取り出す。そして、分析部１１は、積和値（ΣＣ１ｉ・Ｄ１ｉ）を計算する（Ｓ４３）。また、分析部１１は、ＩＮＳＥＲＴでカラム（Ｘ）に挿入した値（Ｘ１）を取得する。
【００６５】
次いで、分析部１１は、Ｓ４３で用いたもの以外の画面単位ログごとに、画面パラメータから、パラメータ名２個それぞれの値（それぞれＣ２ｉとＤ２ｉ、ｉ＝１．．ｎ、ただしｎはパラメータの繰り返し数）を順に取り出す。また、分析部１１は、ＩＮＳＥＲＴでカラム（Ｘ）に挿入した値（Ｘ２）を取得する。そして、分析部１１は、次の計算を行い、αの値を求める（Ｓ４４）。
α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）
【００６６】
次いで、分析部１１は、全ての動作ログ（画面単位ログ）でαが同じか否かを判定する（Ｓ４５）。αが同一値である場合（Ｓ４５：ＹＥＳ）、分析部１１は、２つの画面パラメータの値が所定の演算を施されてカラム（Ｘ）にＩＮＳＥＲＴされて伝搬したものと分析する。したがって、分析部１１は、２つの画面パラメータからカラム（Ｘ）へ間接的なデータ伝搬があったと推定し（Ｓ４６）、次の組み合わせへと処理をループする。なお、αが同一値でない場合（Ｓ４５：ＮＯ）、分析部１１は、２つの画面パラメータからカラム（Ｘ）へ間接的なデータ伝搬があったものとは推定せず、次の組み合わせへと処理をループする。
【００６７】
図６は、「ＳＥＬＥＣＴ結果の２つのカラムとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ１０）を示すフローチャートである。図６に示すように、Ｓ１０の処理が開始されると、分析部１１は、画面単位ログから、カラム（Ｘ）に対してＩＮＳＥＲＴを実行する前に実行するＳＥＬＥＣＴを探し、その検索結果であるカラムから、カラムを２つ選択した組み合わせ（Ｃ、Ｄ）を作成する（Ｓ５０）。
【００６８】
次いで、分析部１１は、作成した組み合わせごとに、Ｓ５１〜Ｓ５６のループ処理を実行する。ループ処理が開始されると、分析部１１は、画面単位ログを一つ選び、カラム名２個に対応するＳＥＬＥＣＴ文の検索結果値（それぞれＣ１ｉとＤ１ｉ、ｉ＝１．．ｍ、ただしｍは検索結果数）を取り出し、積和値（ΣＣ１ｉ・Ｄ１ｉ）を計算する（Ｓ５２）。また、分析部１１は、ＩＮＳＥＲＴでカラム（Ｘ）に挿入した値（Ｘ１）を取得する。
【００６９】
次いで、分析部１１は、Ｓ５２で用いたもの以外の画面単位ログごとに、カラム名２個に対応するＳＥＬＥＣＴ文の検索結果値（それぞれＣ２ｉとＤ２ｉ、ｉ＝１．．ｎ、ただしｎはパラメータの繰り返し数）を順に取り出す。また、ＩＮＳＥＲＴでカラム（Ｘ）に挿入した値Ｘ２を取得する。そして、分析部１１は、次の計算を行い、αの値を求める（Ｓ５３）。
α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）
【００７０】
次いで、分析部１１は、全ての動作ログ（画面単位ログ）でαが同じか否かを判定する（Ｓ５４）。αが同一値である場合（Ｓ５４：ＹＥＳ）、分析部１１は、２つのカラム（Ｃ、Ｄ）の値が所定の演算を施されてカラム（Ｘ）にＩＮＳＥＲＴされて伝搬したものと分析する。したがって、分析部１１は、２つのカラム（Ｃ、Ｄ）からカラム（Ｘ）へ間接的なデータ伝搬があったと推定し（Ｓ５５）、次の組み合わせへと処理をループする。なお、αが同一値でない場合（Ｓ５４：ＮＯ）、分析部１１は、２つのカラム（Ｃ、Ｄ）からカラム（Ｘ）へ間接的なデータ伝搬があったものとは推定せず、次の組み合わせへと処理をループする。
【００７１】
図７は、「キー値を介して関係付く２種類のＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ１１）を示すフローチャートである。図７に示すように、Ｓ１１の処理が開始されると、分析部１１は、画面単位ログを一つ選び、カラム（Ｘ）に挿入するＩＮＳＥＲＴより前に実行したＳＥＬＥＣＴ文で検索対象となり、検索結果が１個以上であるテーブルを探す（Ｓ６０）。分析部１１は、Ｓ６０におけるテーブルの検索により、条件に該当する複数のテーブル（テーブル群）を得る。
【００７２】
次いで、分析部１１は、Ｓ６０で得られたテーブル群の中から、異なる２個のテーブルの組み合わせを作り、片方のテーブルのカラム値がもう一方のテーブルのカラム値に含まれる関係になっているテーブル／カラム対（Ｋ１、Ｋ２）を抽出する（Ｓ６１）。
【００７３】
次いで、分析部１１は、抽出されたテーブル／カラム対（Ｋ１、Ｋ２）ごとに、Ｓ６２〜Ｓ６９のループ処理を実行する。ループ処理が開始されると、分析部１１は、テーブル／カラム対（Ｋ１、Ｋ２）の２つのテーブルからの検索結果から、カラム対のそれぞれの値（カラム値）が同じである検索結果をそれぞれ得る（Ｓ６３）。
【００７４】
次いで、分析部１１は、２つのテーブルそれぞれから、Ｓ６３で得られたカラム対（Ｋ１、Ｋ２）以外のカラム（Ｃ、Ｄとする）を１個ずつ選択する（Ｓ６４）。
【００７５】
次いで、分析部１１は、Ｋ１とＫ２で対応付く検索結果からＳ６４で選択した２個のカラムの値（Ｃ、Ｄ）から、それぞれＣ１ｉとＤ１ｉ、ｉ＝１．．ｍ、ただしｍは検索結果数とし、積和値ΣＣ１ｉ・Ｄ１ｉを計算する。また、分析部１１は、ＩＮＳＥＲＴでカラム（Ｘ）に挿入した値（Ｘ１）を取得する（Ｓ６５）。
【００７６】
次いで、分析部１１は、最初（Ｓ６０）で選択した画面単位ログ以外の画面単位ログに対してＳ６１〜Ｓ６５と同様の処理を行い、積和値ΣＣ２ｉ・Ｄ２ｉとＩＮＳＥＲＴでカラム（Ｘ）に挿入した値（Ｘ２）を取得する。そして、分析部１１は、次の計算を行い、αの値を求める（Ｓ６６）。
α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）
【００７７】
次いで、分析部１１は、全ての動作ログ（画面単位ログ）でαが同じか否かを判定する（Ｓ６７）。αが同一値である場合（Ｓ６７：ＹＥＳ）、分析部１１は、２つのカラム（Ｃ、Ｄ）の値が所定の演算を施されてカラム（Ｘ）にＩＮＳＥＲＴされて伝搬したものと分析する。したがって、分析部１１は、２つのカラム（Ｃ、Ｄ）からカラム（Ｘ）へ間接的なデータ伝搬があったと推定し（Ｓ６８）、次のカラム対へと処理をループする。なお、αが同一値でない場合（Ｓ６７：ＮＯ）、分析部１１は、２つのカラム（Ｃ、Ｄ）からカラム（Ｘ）へ間接的なデータ伝搬があったものとは推定せず、次のカラム対へと処理をループする。
【００７８】
図８は、「キー値を介して関係付く画面パラメータとＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ１２）を示すフローチャートである。図８に示すように、Ｓ１２の処理が開始されると、分析部１１は、画面単位ログを一つ選び、カラム（Ｘ）に挿入するＩＮＳＥＲＴより前に実行したＳＥＬＥＣＴ文で検索対象となり、検索結果が１個以上であるテーブル（テーブル群）を取得する（Ｓ７０）。
【００７９】
次いで、分析部１１は、画面パラメータから、同一回数出現するパラメータ名の組を取得し、同一回数出現するパラメータ名の組をカラム名、繰り返し毎のパラメータ値の組をＳＥＬＥＣＴの検索結果と見なす（Ｓ７１）。
【００８０】
次いで、分析部１１は、Ｓ７０で取得したテーブル群と、Ｓ７１で取得した画面パラメータの組を擬似的にカラム名とＳＥＬＥＣＴ検索結果と見なしたものの組み合わせを作成する。そして、分析部１１は、テーブルのカラム値が画面パラメータ値に含まれる関係になっているテーブル／画面パラメータ対（Ｋ１、Ｋ２）を抽出する（Ｓ７２）。
【００８１】
分析部１１は、Ｓ７２で抽出されたテーブル／画面パラメータ対（Ｋ１、Ｋ２）について、「キー値を介して関係付く２種類のＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定」の処理（Ｓ１１）におけるＳ６４〜Ｓ６８と同様の処理を行う。
【００８２】
図９は、実施形態にかかる分析支援装置１の動作例を示すフローチャートであり、上述したＵＰＤＡＴＥの場合の処理の一例である。図９に示すように、画面単位の動作ログの集合を作るまでの処理（Ｓ１〜Ｓ３）は、ＩＮＳＥＲＴの場合の処理（図２参照）と同様に行う。
【００８３】
次いで、分析部１１は、作成した画面単位の動作ログの集合ごとに、Ｓ８０〜Ｓ８４のループ処理を実行する。ループ処理が開始されると、分析部１１は、処理対象の動作ログの集合で、ＵＰＤＡＴＥを実行し、かつＵＰＤＡＴＥの実行前にＵＰＤＡＴＥ対象のテーブルに対してＳＥＬＥＣＴを実行する組み合わせを抽出する。また、分析部１１は、ＳＥＬＥＣＴ結果のカラム値がＵＰＤＡＴＥで更新するカラム値と異なるカラム（Ｘ）を抽出する（Ｓ８１）。
【００８４】
次いで、分析部１１は、ＵＰＤＡＴＥ対象のテーブルで、Ｓ８１で抽出したカラム（Ｘ）に対して、「直接的に対応がつかない値をＩＮＳＥＲＴで挿入する場合」の処理（Ｓ７〜Ｓ１２）を、ＩＮＳＥＲＴ値の代わりにＵＰＤＡＴＥで更新する値に置き換えて実行する（Ｓ８２）。
【００８５】
次いで、分析部１１は、ＵＰＤＡＴＥ対象のテーブルで、Ｓ８１で抽出したカラム（Ｘ）に対して、「直接的に対応がつかない値をＩＮＳＥＲＴで挿入する場合」の処理（Ｓ７〜Ｓ１２）を、ＩＮＳＥＲＴ値の代わりに（ＵＰＤＡＴＥで更新する値）−（ＳＥＬＥＣＴの検索結果値）に置き換えて実行する（Ｓ８３）。
【００８６】
上記のループ処理が終了したところで、出力部１３は、ループ処理による分析部１１の分析結果をディスプレイへの表示や、プリンターによる印字により出力する（Ｓ１５）。
【００８７】
ここで、具体的な実施例を参照して分析支援装置１における分析処理を説明する。なお、以下で説明する実施例では、分析対象の業務用ＤＢのテーブルが持つカラムは全て数値型であるものと仮定する。
【００８８】
図１０は、業務用ＤＢ２１のテーブル構成を例示する図である。図１０に示すように、業務用ＤＢ２１は、受注業務を指向したものであり、商品マスタテーブルＴ１、明細テーブルＴ２、受注テーブルＴ３および請求テーブルＴ４を含むものである。なお、業務用ＤＢ２１において、説明で関係しないカラムについては「…」で省略している。
【００８９】
（カラム１個とＩＮＳＥＲＴ値の関係推定について）
図１１は、動作ログ（Ｄ１１、Ｄ１２、Ｄ１３）の一例を説明する説明図である。図１１に示すように、分析対象の業務システム２から取得した動作ログがＤ１１、Ｄ１２、Ｄ１３の内容（値）であったものとする。なお、動作ログＤ１１、Ｄ１２、Ｄ１３は時系列に出力されると仮定し、画面パラメータとＳＱＬの実行ごとに実行順（ｓｅｑ）が割り当てられるものとする（実行した時刻を用いてもよい）。
【００９０】
図１２は、データテーブル（Ｔ１１、Ｔ１２、Ｔ１３）の一例を説明する説明図である。図１２に示すように、データテーブルＴ１１は、動作ログＤ１１、Ｄ１２、Ｄ１３から画面パラメータごとにＩＤ（ｕｒｌＮｏ）と、実行したＵＲＬと、ｓｅｑをまとめたものである。また、データテーブルＴ１２は、同様に、ＳＱＬごとにＩＤ（ｓｑｌＮｏ）、実行したＳＱＬ、そのときのバインド値と検索結果、ＳＱＬに対応する画面パラメータのＩＤ、ｓｅｑをまとめたものである。データテーブルＴ１３はカラムの集合（ＳｅｔＣ）である。
【００９１】
データテーブルＴ１１より、本実施例では、画面は全て同じであり、実行されたＳＱＬ（ＳＥＬＥＣＴ１個、ＩＮＳＥＲＴ１個）もバインド値を除くと同一であるので、これらはＳＱＬが同一な画面単位の動作ログの集合になっている。
【００９２】
これらに対して、公知の方法でＩＮＳＥＲＴするテーブルのカラムとそれに先立つＳＥＬＥＣＴの対応付けを行うと、先行するＳＥＬＥＣＴの検索結果の伝票番号カラムの値が、後続のＩＮＳＥＲＴの伝票番号の値と常に一致することが検出できる。このため、分析支援装置１は、Ｓ５において、受注テーブルＴ３の伝票番号カラムから、請求テーブルＴ４の伝票番号カラムへ直接的なデータ伝搬があると推定する。
【００９３】
上記で関係付かなかった請求テーブルＴ４の請求額カラムに関して、ＩＮＳＥＲＴ以前に実行されたＳＥＬＥＣＴ結果に含まれるカラム集合ＳｅｔＣは（伝票番号、税抜き額、顧客ＩＤ）である。分析支援装置１の分析部１１は、これらの集合ＳｅｔＣごとに、Ｓ４〜Ｓ１４のループ処理を行って間接的なデータ伝搬についての分析を行う。
【００９４】
まず、伝票番号カラムと請求額カラムに伝搬関係があるかを調べる。データテーブルＴ１２のｓｅｑＮｏ＝１のデータから、伝票番号＝１０１、請求額＝２５３４０である。よって、ｃ１Ｖａｌ＝１０１、ｘ１Ｖａｌ＝２５３４０である。次に、ｓｅｑＮｏ＝２のデータから同様に、ｃ２Ｖａｌ＝１０２、ｘ２Ｖａｌ＝４９２８である。これらからαの値を求めると、α＝（２５３４０−４９２８）／（１０１−１０２）＝−２０４１２となる。
【００９５】
同様に、ｓｅｑＮｏ＝３のデータから、ｃ２Ｖａｌ＝１０３、ｘ２Ｖａｌ＝１５８０である。これらからαの値を求めると、α＝（２５３４０−１５８０）／（１０１−１０３）＝−１１８８０となる。よって、αが一定ではないので、この組み合わせは伝搬の関係になっていないことが分かる。
【００９６】
次に、税抜き額カラムと請求額カラムに伝搬関係があるかを調べる。「動作ログ１」から、税抜き額＝ｃ１Ｖａｌ＝２３０００、請求額＝ｘ１Ｖａｌ＝２５３４０である。次に、「動作ログ２」からｃ２Ｖａｌ＝４１００、ｘ２Ｖａｌ＝４９２８である。これらからαの値を求めると、α＝（２５３４０−４９２８）／（２３０００−４１００）＝１．０８となる。
【００９７】
同様に、「動作ログ３」から、ｃ２Ｖａｌ＝１０００、ｘ２Ｖａｌ＝１５８０である。これらからαの値を求めると、α＝（２５３４０−１５８０）／（２３０００−１０００）＝１．０８となる。よって、αが一定であり、β＝ｘ１Ｖａｌ−α・ｃ１Ｖａｌ＝５００である。以上より、この組み合わせは間接的な伝搬関係があり、税抜き額＊１．０８＋５００＝請求額であると推定できる。
【００９８】
なお、顧客ＩＤカラムと請求額カラムの組み合わせでは、「動作ログ１」から、顧客ＩＤ＝ｃ１Ｖａｌ＝２００１、請求額＝ｘ１Ｖａｌ＝２５３４０である。次に、「動作ログ２」からｃ２Ｖａｌ＝１５０７、ｘ２Ｖａｌ＝４９２８である。これらからαの値を求めると、α＝（２５３４０−４９２８）／（２００１−１５０７）＝４１．３となる。同様に、「動作ログ３」からｃ２Ｖａｌ＝３９００、ｘ２Ｖａｌ＝１５８０である。これらからαの値を求めると、α＝（２５３４０−１５８０）／（２００１−３９００）＝−１２．５となる。よって、αが一定ではないので、この組み合わせは伝搬の関係になっていないことが分かる。
【００９９】
（画面パラメータ１個とＩＮＳＥＲＴ値の関係推定について）
図１３は、動作ログ（Ｄ２１、Ｄ２２、Ｄ２３）の一例を説明する説明図である。図１３に示すように、分析対象の業務システム２から取得した動作ログがＤ２１、Ｄ２２、Ｄ２３の内容（値）であったものとする。
【０１００】
図１４は、データテーブル（Ｔ２１、Ｔ２２、Ｔ２３）の一例を説明する説明図である。図１４に示すように、データテーブルＴ２１は、動作ログＤ２１、Ｄ２２、Ｄ２３から画面パラメータごとにＩＤ（ｕｒｌＮｏ）と、実行したＵＲＬと、ｓｅｑをまとめたものである。また、データテーブルＴ２２は、同様に、ＳＱＬごとにＩＤ（ｓｑｌＮｏ）、実行したＳＱＬ、そのときのバインド値と検索結果、ＳＱＬに対応する画面パラメータのＩＤ、ｓｅｑをまとめたものである。データテーブルＴ２３はカラムの集合（ＳｅｔＣ）である。具体的には、動作ログＤ２１、Ｄ２２、Ｄ２３のＵＲＬからＨＴＴＰパラメータを抽出した集合ＳｅｔＣは（ＯＲＤＥＲ，ＰＲＩＣＥ）である。
【０１０１】
まず、画面パラメータＯＲＤＥＲと請求額カラムに伝搬関係があるかを調べる。具体的には、データテーブルＴ２１のｕｒｌＮｏ＝１から、ＯＲＤＥＲ＝ｃ１Ｖａｌ＝１０１、請求額＝ｘ１Ｖａｌ＝２５３４０である。次に、データテーブルＴ２１のｕｒｌＮｏ＝２からｃ２Ｖａｌ＝１０２、ｘ２Ｖａｌ＝４９２８である。これらからαの値を求めると、α＝（２５３４０−４９２８）／（１０１−１０２）＝−２０４１２となる。同様に、ｕｒｌＮｏ＝３からｃ２Ｖａｌ＝１０３、ｘ２Ｖａｌ＝１５８０である。これらからαの値を求めると、α＝（２５３４０−１５８０）／（１０１−１０３）＝−１１８８０となる。よって、αが一定ではないので、この組み合わせは伝搬の関係になっていないことが分かる。
【０１０２】
次に、画面パラメータＰＲＩＣＥと請求額カラムに伝搬関係があるかを調べる。ｕｒｌＮｏ＝１から、ＰＲＩＣＥ＝ｃ１Ｖａｌ＝２３０００、請求額＝ｘ１Ｖａｌ＝２５３４０である。次に、ｕｒｌＮｏ＝２からｃ２Ｖａｌ＝４１００、ｘ２Ｖａｌ＝４９２８である。これらからαの値を求めると、α＝（２５３４０−４９２８）／（２３０００−４１００）＝１．０８となる。
【０１０３】
同様に、ｕｒｌＮｏ＝３からｃ２Ｖａｌ＝１０００、ｘ２Ｖａｌ＝１５８０である。これらからαの値を求めると、α＝（２５３４０−１５８０）／（２３０００−１０００）＝１．０８となる。よって、αが一定であり、β＝ｘ１Ｖａｌ−α・ｃ１Ｖａｌ＝５００である。以上より、この組み合わせは間接的な伝搬関係があり、ＰＲＩＣＥ＊１．０８＋５００＝請求額であると推定できる。
【０１０４】
（画面パラメータが持つ複数の繰り返しパラメータとＩＮＳＥＲＴ値の関係推定について）
図１５は、動作ログ（Ｄ３１、Ｄ３２、Ｄ３３）の一例を説明する説明図である。図１５に示すように、分析対象の業務システム２から取得した動作ログがＤ３１、Ｄ３２、Ｄ３３の内容（値）であったものとする。
【０１０５】
図１６は、データテーブル（Ｔ３１、Ｔ３２、Ｔ３３）の一例を説明する説明図である。図１６に示すように、データテーブルＴ３１は、動作ログＤ３１、Ｄ３２、Ｄ３３から画面パラメータごとにＩＤ（ｕｒｌＮｏ）と、実行したＵＲＬと、ｓｅｑをまとめたものである。また、データテーブルＴ３２は、同様に、ＳＱＬごとにＩＤ（ｓｑｌＮｏ）、実行したＳＱＬ、そのときのバインド値と検索結果、ＳＱＬに対応する画面パラメータのＩＤ、ｓｅｑをまとめたものである。
【０１０６】
画面パラメータの変数名（例えばＣＯＤＥ−１）は非数値（例えばＣＯＤＥ−）の後に数値（例えば１）が連結された文字列から構成されていると仮定し、非数値文字列と数値文字列に分離する。そして、同じ数値文字列ごとに組を構成することにより、動作ログＤ３１のＵＲＬの値から、データテーブルＴ３３に示すパラメータの組を作る。具体的には、パラメータ名２個の組は（ＣＯＤＥ−、ＵＮＩＴＰＲＩＣＥ−）、（ＣＯＤＥ−、ＱＴＹ−）、（ＵＮＩＴＰＲＩＣＥ−、ＱＴＹ−）である。分析部１１は、ＩＮＳＥＲＴで挿入する税抜き額と間接的な伝搬関係があるかを以下の処理で推定する。
【０１０７】
組（ＣＯＤＥ−、ＵＮＩＴＰＲＩＣＥ−）の場合、データテーブルＴ３３のｕｒｌＮｏ＝１からパラメータ２個の値はＣ＝（１２３、１３０）、Ｄ＝（１０００、１５００）である。よって、積和値はΣＣ１ｉ・Ｄ１ｉ＝１２３＊１０００＋１３０＊１５００＝３１８０００であり、Ｘ１＝２３０００である。
【０１０８】
ｕｒｌＮｏ＝２で同様に計算すると、積和値ΣＣ２ｊ・Ｄ２ｊ＝３２８００００、Ｘ２＝４１００である。よって、αの値を求めると、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）＝（２３０００−４１００）／（３１８０００−３２８００００）＝−６．４＊１０−３である。
【０１０９】
ｕｒｌＮｏ＝３で同様に計算するとα＝（２３０００−１５８０）／（３１８０００−６０１００）＝８．３＊１０−２である。よって、αが互いに異なるため、この組み合わせではデータ伝搬していないと判断する。
【０１１０】
同様に、組（ＣＯＤＥ−、ＱＴＹ−）の場合、データテーブルＴ３３のｕｒｌＮｏ＝１から積和値ΣＣ１ｉ・Ｄ１ｉ＝１２３＊２０＋１３０＊２＝２７２０、Ｘ１＝２３０００である。ｕｒｌＮｏ＝２で同様に計算すると、積和値ΣＣ２ｊ・Ｄ２ｊ＝８００、Ｘ２＝４１００である。よって、αの値を求めると、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）＝（２３０００−４１００）／（２７２０−８００）＝９．８である。
【０１１１】
ｕｒｌＮｏ＝３で同様に計算するとα＝（２３０００−１５８０）／（２７２０−８００５）＝−４．１である。よって、αが互いに異なるため、この組み合わせではデータ伝搬していないと判断する。
【０１１２】
同様に、組（ＵＮＩＴＰＲＩＣＥ−、ＱＴＹ−）の場合、データテーブルＴ３３のｕｒｌＮｏ＝１から積和値ΣＣ１ｉ・Ｄ１ｉ＝１０００＊２０＋１５００＊２＝２３０００、Ｘ１＝２３０００である。ｕｒｌＮｏ＝２で同様に計算すると、積和値ΣＣ２ｊ・Ｄ２ｊ＝４１００、Ｘ２＝４１００である。よって、αの値を求めると、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）＝（２３０００−４１００）／（２３０００−４１００）＝１である。
【０１１３】
ｕｒｌＮｏ＝３で同様に計算するとα＝（２３０００−１５８０）／（２３０００−１５８０）＝１である。よって、αが一致するため、ＵＮＩＴＰＲＩＣＥ−＊とＱＴＹ−＊から受注テーブルＴ３の税抜き額カラムに間接的な伝搬関係があると推定する。
【０１１４】
（ＳＥＬＥＣＴ結果の２つのカラムとＩＮＳＥＲＴ値の関係推定について）
図１７は、動作ログ（Ｄ４１、Ｄ４２、Ｄ４３）の一例を説明する説明図である。図１７に示すように、分析対象の業務システム２から取得した動作ログがＤ４１、Ｄ４２、Ｄ４３の内容（値）であったものとする。
【０１１５】
図１８は、データテーブル（Ｔ４１、Ｔ４２、Ｔ４３）の一例を説明する説明図である。図１８に示すように、データテーブルＴ４１は、動作ログＤ４１、Ｄ４２、Ｄ４３から画面パラメータごとにＩＤ（ｕｒｌＮｏ）と、実行したＵＲＬと、ｓｅｑをまとめたものである。また、データテーブルＴ４３は、同様に、ＳＱＬごとにＩＤ（ｓｑｌＮｏ）、実行したＳＱＬ、そのときのバインド値と検索結果、ＳＱＬに対応する画面パラメータのＩＤ、ｓｅｑをまとめたものである。また、データテーブルＴ４２は、ＩＮＳＥＲＴに先立つＳＥＬＥＣＴで検索した明細テーブルＴ２のカラム（明細ＩＤ、伝票番号、商品ＩＤ、税抜き単価、数量）をまとめたものである。
【０１１６】
分析部１１は、ＩＮＳＥＲＴに先立つＳＥＬＥＣＴで検索した明細テーブルＴ２のカラム（明細ＩＤ、伝票番号、商品ＩＤ、税抜き単価、数量）から２つ取出して組を作り、ＩＮＳＥＲＴで挿入する税抜き額と間接的な伝搬関係があるかを以下の処理で推定する。
【０１１７】
例えば、組（商品ＩＤ、税抜き単価）の場合、データテーブルＴ４２のｕｒｌＮｏ＝１からカラム２個の値はＣ＝（１２３、１３０）、Ｄ＝（１０００、１５００）である。よって、積和値ΣＣ１ｉ・Ｄ１ｉ＝１２３＊１０００＋１３０＊１５００＝３１８０００であり、Ｘ１＝２３０００である。
【０１１８】
ｕｒｌＮｏ＝２で同様に計算すると、積和値ΣＣ２ｊ・Ｄ２ｊ＝３２８００００、Ｘ２＝４１００である。よってαの値を求めると、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）＝（２３０００−４１００）／（３１８０００−３２８００００）＝−６．４＊１０−３である。
【０１１９】
ｕｒｌＮｏ＝３で同様に計算するとα＝（２３０００−１５８０）／（３１８０００−６０１００）＝８．３＊１０−２である。よって、αが互いに異なるため、この組み合わせではデータ伝搬していないと判断する。
【０１２０】
同様に（税抜き単価、数量）の場合、データテーブルＴ４２のｕｒｌＮｏ＝１から積和値ΣＣ１ｉ・Ｄ１ｉ＝１０００＊２０＋１５００＊２＝２３０００、Ｘ１＝２３０００である。ｕｒｌＮｏ＝２で同様に計算すると、積和値ΣＣ２ｊ・Ｄ２ｊ＝４１００、Ｘ２＝４１００である。よって、αの値を求めると、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）＝（２３０００−４１００）／（２３０００−４１００）＝１である。
【０１２１】
ｕｒｌＮｏ＝３で同様に計算するとα＝（２３０００−１５８０）／（２３０００−１５８０）＝１である。よって、αが一致するため、明細テーブルＴ２の税抜き単価カラムと数量カラムから受注テーブルＴ３の税抜き額カラムには間接的な伝搬関係があると推定する。
【０１２２】
（キー値を介して関係付く２種類のＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定について）
図１９は、動作ログ（Ｄ５１、Ｄ５２、Ｄ５３）の一例を説明する説明図である。図１９に示すように、分析対象の業務システム２から取得した動作ログがＤ５１、Ｄ５２、Ｄ５３の内容（値）であったものとする。
【０１２３】
図２０は、データテーブル（Ｔ５１、Ｔ５２、Ｔ５３、Ｔ５４）の一例を説明する説明図である。図２０に示すように、データテーブルＴ５１は、動作ログＤ５１、Ｄ５２、Ｄ５３から画面パラメータごとにＩＤ（ｕｒｌＮｏ）と、実行したＵＲＬと、ｓｅｑをまとめたものである。また、データテーブルＴ５２は、同様に、ＳＱＬごとにＩＤ（ｓｑｌＮｏ）、実行したＳＱＬ、そのときのバインド値と検索結果、ＳＱＬに対応する画面パラメータのＩＤ、ｓｅｑをまとめたものである。
【０１２４】
ＩＮＳＥＲＴで挿入する受注テーブルＴ３の税抜き額カラムをカラムＸとするとき、本実施例の動作ログＤ５１、Ｄ５２、Ｄ５３では、ＩＮＳＥＲＴに先立つＳＥＬＥＣＴはそれぞれの画面単位ログで２種類実行される。この２種類のものについて、データテーブルＴ５３は、明細テーブルＴ２からの検索結果をまとめたものである。また、データテーブルＴ５４は、商品マスタテーブルＴ１からの検索結果をまとめたものである。
【０１２５】
分析部１１は、データテーブルＴ５３およびデータテーブルＴ５４から、それぞれカラムを１個ずつ選択し、片方のカラム値がもう片方のカラム値を含んでいるものを探す。これにより、分析部１１は、データテーブルＴ５３の商品ＩＤとデータテーブルＴ５４の商品ＩＤがカラム対（Ｋ１、Ｋ２）に該当することを検出できる。よって、分析部１１は、データテーブルＴ５３およびデータテーブルＴ５４からカラム対（Ｋ１、Ｋ２）以外のカラムを１個ずつ選択する。
【０１２６】
カラムＣとして商品マスタテーブルＴ１の税抜き単価を、カラムＤとして明細テーブルＴ２の数量を選択した場合、ｕｒｌＮｏ＝１で商品ＩＤが同じ値の対を使って積和値を求めると、ΣＣ１ｉ・Ｄ１ｉ＝１０００＊２０＋１５００＊２＝２３０００である。また、この場合にはＸ１＝２３０００である。
【０１２７】
ｕｒｌＮｏ＝２で同様に計算すると、積和値ΣＣ２ｊ・Ｄ２ｊ＝４１００、Ｘ２＝４１００である。よって、αの値を求めると、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）＝（２３０００−４１００）／（２３０００−４１００）＝１である。
【０１２８】
ｕｒｌＮｏ＝３で同様に計算するとα＝（２３０００−１５８０）／（２３０００−１５８０）＝１である。よって、αが一致するため、商品マスタテーブルＴ１の税抜き単価カラムと明細テーブルＴ２の数量カラムが、それぞれの商品ＩＤカラムをキーとして、受注テーブルＴ３の税抜き額カラムに対して間接的な伝搬関係があると推定する。
【０１２９】
（キー値を介して関係付く画面パラメータとＳＥＬＥＣＴ結果のカラムとＩＮＳＥＲＴ値の関係推定について）
図２１は、動作ログ（Ｄ６１、Ｄ６２、Ｄ６３）の一例を説明する説明図である。図２１に示すように、分析対象の業務システム２から取得した動作ログがＤ６１、Ｄ６２、Ｄ６３の内容（値）であったものとする。
【０１３０】
図２２は、データテーブル（Ｔ６１、Ｔ６２、Ｔ６３、Ｔ６４）の一例を説明する説明図である。図２２に示すように、データテーブルＴ６１は、動作ログＤ６１、Ｄ６２、Ｄ６３から画面パラメータごとにＩＤ（ｕｒｌＮｏ）と、実行したＵＲＬと、ｓｅｑをまとめたものである。また、データテーブルＴ６２は、同様に、ＳＱＬごとにＩＤ（ｓｑｌＮｏ）、実行したＳＱＬ、そのときのバインド値と検索結果、ＳＱＬに対応する画面パラメータのＩＤ、ｓｅｑをまとめたものである。
【０１３１】
本実施例の画面パラメータには、「画面パラメータが持つ複数の繰り返しパラメータとＩＮＳＥＲＴ値の関係推定について」に示したように２種類のパラメータの繰り返しがある（例えばＣＯＤＥ−＊とＱＴＹ−＊）。データテーブルＴ６３は、抽出した繰り返しの値をまとめたものである。また、ＩＮＳＥＲＴで挿入する受注テーブルＴ３の税抜き額カラムをカラムＸとするとき、本実施例の動作ログでは、ＩＮＳＥＲＴに先立つＳＥＬＥＣＴはそれぞれの画面単位ログで１種類実行される。データテーブルＴ６４は、商品マスタテーブルＴ１からの検索結果をまとめたものである。
【０１３２】
分析部１１は、データテーブルＴ６３およびデータテーブルＴ６４からそれぞれカラムを１個ずつ選択し、片方のカラム値がもう片方のカラム値を含んでいるものを探す。これにより、分析部１１は、データテーブルＴ６３のＣＯＤＥ−と、データテーブルＴ６４の商品ＩＤがカラム対（Ｋ１、Ｋ２）に該当することを検出できる。よって、分析部１１は、データテーブルＴ６３およびデータテーブルＴ６４からカラム対（Ｋ１、Ｋ２）以外のカラムを１個ずつ選択する。
【０１３３】
カラムＣとして商品マスタテーブルＴ１の税抜き単価を、カラムＤとして画面パラメータのＱＴＹ−を選択した場合、ｕｒｌＮｏ＝１で商品ＩＤとＣＯＤＥ−が同じ値の対を使って積和値を求めると、ΣＣ１ｉ・Ｄ１ｉ＝１０００＊２０＋１５００＊２＝２３０００である。また、この場合にはＸ１＝２３０００である。
【０１３４】
ｕｒｌＮｏ＝２で同様に計算すると、積和値ΣＣ２ｊ・Ｄ２ｊ＝４１００、Ｘ２＝４１００である。よって、αの値を求めると、α＝（Ｘ１−Ｘ２）／（ΣＣ１ｉ・Ｄ１ｉ−ΣＣ２ｊ・Ｄ２ｊ）＝（２３０００−４１００）／（２３０００−４１００）＝１である。
【０１３５】
ｕｒｌＮｏ＝３で同様に計算するとα＝（２３０００−１５８０）／（２３０００−１５８０）＝１である。よって、αが一致するため、商品マスタテーブルＴ１の税抜き単価カラムと画面パラメータのＱＴＹ−＊が、それぞれの商品ＩＤカラム、ＣＯＤＥ−＊をキーとして、受注テーブルＴ３の税抜き額カラムに対して間接的な伝搬関係があると推定する。
【０１３６】
（直接的に対応がつかない値をＵＰＤＡＴＥで更新する場合の関係推定について）
図２３は、動作ログ（Ｄ７１、Ｄ７２、Ｄ７３）の一例を説明する説明図である。図２３に示すように、分析対象の業務システム２から取得した動作ログがＤ７１、Ｄ７２、Ｄ７３の内容（値）であったものとする。
【０１３７】
図２４は、データテーブル（Ｔ７１、Ｔ７２、Ｔ７３）の一例を説明する説明図である。図２４に示すように、データテーブルＴ７１は、動作ログＤ７１、Ｄ７２、Ｄ７３から画面パラメータごとにＩＤ（ｕｒｌＮｏ）と、実行したＵＲＬと、ｓｅｑをまとめたものである。また、データテーブルＴ７２は、同様に、ＳＱＬごとにＩＤ（ｓｑｌＮｏ）、実行したＳＱＬ、そのときのバインド値と検索結果、ＳＱＬに対応する画面パラメータのＩＤ、ｓｅｑをまとめたものである。データテーブルＴ７３は、請求額の更新値と請求額の差分とをまとめたものである。
【０１３８】
請求テーブルＴ４の請求額カラムをカラムＸとするとき、ＩＮＳＥＲＴ以前に実行されたＳＥＬＥＣＴ結果に含まれるカラム集合ＳｅｔＣは受注テーブルの伝票番号、税抜き額、顧客ＩＤと請求テーブルの伝票番号である。
【０１３９】
「カラム１個との対応付け」に関し、税抜き額カラムと請求額カラムに伝搬関係があるかを調べる場合を例示する。まず、ＵＰＤＡＴＥで更新する値そのものをカラムＸの値として処理する。
【０１４０】
「動作ログ１」から、税抜き額＝ｃ１Ｖａｌ＝２３０００、請求額＝ｘ１Ｖａｌ＝２５３４０である。次に、「動作ログ２」からｃ２Ｖａｌ＝４１００、ｘ２Ｖａｌ＝５４２８である。これらからα＝（２５３４０−５４２８）／（２３０００−４１００）＝１．０５となる。同様に、「動作ログ３」からｃ２Ｖａｌ＝１０００、ｘ２Ｖａｌ＝２５８０である。これらからαの値を求めると、α＝（２５３４０−２５８０）／（２３０００−１０００）＝１．０３となり、αは一定ではない。
【０１４１】
次に、ＵＰＤＡＴＥに先立ち実行されたＳＥＬＥＣＴの検索結果との差分値（データテーブルＴ７３の請求額の差分）を用いて処理する。「動作ログ１」から、税抜き額＝ｃ１Ｖａｌ＝２３０００、請求額の差分＝ｘ１Ｖａｌ＝２４８４０である。
【０１４２】
次に、「動作ログ２」からｃ２Ｖａｌ＝４１００、ｘ２Ｖａｌ＝４４２８である。これらからαの値を求めると、α＝（２４８４０−４４２８）／（２３０００−４１００）＝１．０８となる。
【０１４３】
同様に、「動作ログ３」からｃ２Ｖａｌ＝１０００、ｘ２Ｖａｌ＝１０８０である。これらからαの値を求めると、α＝（２４８４０−１０８０）／（２３０００−１０００）＝１．０８となる。よって、αが一定であり、β＝ｘ１Ｖａｌ−α・ｃ１Ｖａｌ＝０である。以上より、この組み合わせは間接的な伝搬関係があり、税抜き額＊１．０８＝請求額の更新値であると推定する。
【０１４４】
上記の実施例では「カラム１個との対応付け」の処理を行う場合を例示したが、他の場合も同様に行うことで、ＵＰＤＡＴＥの更新値ないし更新値の差分と間接的なデータ伝搬の関係にあるかを推定することができる。
【０１４５】
図２５は、表示画面Ｇの一例を説明する説明図である。図２５に示すように、出力部１３は、分析部１１の分析結果をディスプレイの表示画面Ｇに表示する。具体的には、出力部１３は、表示画面Ｇ上に業務用ＤＢ２１のカラムおよび画面パラメータ内の変数値を列挙したテーブル・カラム画像Ｇ１〜Ｇ５を表示する。そして、出力部１３は、分析部１１の分析結果に基づいて、対応関係のあるカラムや変数値同士を線で結びつけた接続関係表示Ｇ１１、Ｇ１２を行う。
【０１４６】
例えば、直接的なデータ伝搬があるものと分析されたカラムや変数値同士は実線などの接続関係表示Ｇ１１とする。また、間接的なデータ伝搬があるものと分析されたカラムや変数値同士は破線などの接続関係表示Ｇ１２とする。これにより、ユーザは、直接的なデータ伝搬があるものと分析された分析結果と、間接的なデータ伝搬があるものと分析された分析結果とを容易に識別できる。
【０１４７】
以上のように、分析支援装置１は、画面パラメータ、バインド変数値等の入力パラメータと、この入力パラメータに基づいて業務用ＤＢからのデータの読み出しおよび業務用ＤＢへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得する。そして、分析支援装置１は、取得された複数の動作ログの中の、業務用ＤＢの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、入力パラメータに含まれる値またはアクセス記録において業務用ＤＢから読み出された値と、アクセス記録において業務用ＤＢへ書き込みを行った値と組み合わせて所定の演算を行う。分析支援装置１は、この演算結果（α）が一定である場合に、カラムにデータの伝搬があるものと分析し、伝搬があると分析されたカラムを出力する。このため、分析支援装置１は、例えば、業務用ＤＢより読み出した値をメソッド内で演算し、演算後の値を別のカラムに書き込むような間接的に関係性のあるデータ伝搬についても把握することができる。また、分析支援装置１は、業務システム２がＤＢアクセスデータ２０として収集した動作ログを取得する構成である。これにより、例えば、保守開発の上流工程で業務システム２の業務用ＤＢ周りのデータ伝搬を把握でき、システム変更の現行システムへの影響をより調査しやすくなる利点がある。
【０１４８】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、分析部１１、記憶部１２または出力部１３を分析支援装置１の外部装置としてネットワークで接続するようにしてもよい。また、分析部１１、記憶部１２または出力部１３を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の分析支援装置１の機能を実現するようにしてもよい。
【０１４９】
また、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図２６を用いて、上記の実施形態と同様の機能を有する分析支援プログラムを実行するコンピュータの一例について説明する。
【０１５０】
図２６は、分析支援プログラム２７０ａを実行するコンピュータ２００の一例を説明する説明図である。図２６に示すように、コンピュータ２００は、操作部２１０ａと、スピーカ２１０ｂと、カメラ２１０ｃと、ディスプレイ２２０と、通信部２３０とを有する。さらに、このコンピュータ２００は、ＣＰＵ２５０と、ＲＯＭ２６０と、ＨＤＤ２７０と、ＲＡＭ２８０とを有する。これら２１０〜２８０の各部はバス２４０を介して接続される。
【０１５１】
ＨＤＤ２７０には、上記の実施形態で示した分析部１１、記憶部１２および出力部１３と同様の機能を発揮する分析支援プログラム２７０ａが予め記憶される。この分析支援プログラム２７０ａについては、分析部１１、記憶部１２および出力部１３の各構成要素と同様、適宜統合または分離してもよい。例えば、ＨＤＤ２７０に格納されるデータは、常に全てのデータがＨＤＤ２７０に格納される必要はなく、処理に必要なデータのみがＨＤＤ２７０に格納されればよい。
【０１５２】
コンピュータ２００では、ＣＰＵ２５０が分析支援プログラム２７０ａをＨＤＤ２７０から読み出してＲＡＭ２８０に展開する。これによって、分析支援プログラム２７０ａは、分析支援プロセス２８０ａとして機能する。この分析支援プロセス２８０ａは、ＨＤＤ２７０から読み出した各種データを適宜ＲＡＭ２８０上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、分析支援プロセス２８０ａは、分析部１１、記憶部１２および出力部１３にて実行される処理を含む。また、ＣＰＵ２５０上で仮想的に実現される各処理部は、常に全ての処理部がＣＰＵ２５０上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されればよい。
【０１５３】
なお、上記の分析支援プログラム２７０ａについては、必ずしも最初からＨＤＤ２７０やＲＯＭ２６０に記憶させておく必要はない。例えば、コンピュータ２００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ２００がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ２００に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ２００がこれらから各プログラムを取得して実行するようにしてもよい。
【０１５４】
（別実施形態）
上述した実施形態の別実施形態を説明する。業務システム２では、受注業務を例にとると、画面で１つの受注に含まれる複数の明細項目が入力され、組ごとに処理が行われることがある。例えば、画面からは明細項目として商品コードと、受注数量の組とを幾つか入力し、その入力データを用いて明細ごとの商品コードと受注数量の値を明細テーブルに書き込む。また同時に、明細単位の合計金額を計算した値なども明細テーブルに書き込む場合がある。また、受注伝票自体を用いて受注テーブルを更新する。
【０１５５】
画面からの入力をきっかけにして実行されるＳＱＬは、受注伝票自体の処理と明細ごとに繰り返される処理の２種類が混在して実行される。よって、上述した実施形態では、データの対応関係を推定することが困難な場合がある。
【０１５６】
図２８は、受注業務におけるデータ伝搬の一例を説明する説明図である。図２９は、データ伝搬の検出に失敗した場合を説明する説明図である。図２８において、動作ログＤ８１は、受注業務における画面入力（ＨＴＴＰ）のログである。また、動作ログＤ８２は、画面入力をきっかけにして実行されるＳＱＬのログである。また、商品マスタテーブルＴ１、明細テーブルＴ２、受注テーブルＴ３およびメッセージ画面パラメータテーブルＴ５は、受注業務にかかるデータテーブルを示し、テーブル間の実線・破線はテーブルにおける項目同士のデータ伝搬を示す。なお、実線は直接的なデータ伝搬を示し、破線は間接的なデータ伝搬を示す。図２９の例では、明細テーブルＴ２へのデータ伝搬関係の検出に失敗している。
【０１５７】
図２８に示すように、受注業務における動作ログＤ８１、Ｄ８２では、受注テーブルＴ３へのデータ伝搬関係と、明細テーブルＴ２へのデータ伝搬関係とが存在する。動作ログＤ８１、Ｄ８２の例では、２つの明細に関するＳＱＬが実行されたが、例えば、明細テーブルＴ２の受注数量カラムに「１０」を挿入するＳＱＬに対し、画面パラメータテーブルＴ５の受注数量は、「１０」と「２１」の異なる２つの値に対応する。したがって、上述した実施形態では、対応関係を推定することが困難であり、図２９に示すように、明細テーブルＴ２へのデータ伝搬関係の検出に失敗する。
【０１５８】
このため、別実施形態では、分析部１１は、一画面からの入力がきっかけで発生した画面単位の動作ログ（画面単位ログ）ごとにキーとするカラムないし画面のパラメータのキー候補を取得する。次いで、分析部１１は、キー候補を有するカラム（キーカラム候補）ごとに、画面パラメータ、バインド変数値等の入力パラメータに含まれる値またはデータの書き込みを行ったアクセス記録において業務用ＤＢ２１から読み出された値と、アクセス記録において業務用ＤＢ２１へ書き込みを行った値を組み合わせ、上述した実施形態と同様に所定の演算を行う。これにより、別実施形態では、上述した実施形態ではデータの対応関係を推定することが困難な事例（例えば明細ごとのデータ伝搬）であっても、データ伝搬を推定することができる。
【０１５９】
以下に別実施形態を詳細に説明する。なお、以下の別実施形態では、分析対象の業務システム２で実行するアプリケーションはオンライン実行であり、ある画面から入力した値を用いて業務アプリの内部処理が実行され、かつ画面単位でステートレスであるという前提で説明する。ただし、この前提は一例であり、バッチ処理などでも適用可能である。また、ＳＱＬ文はバインド変数を用いて記述されていることを前提とするが、変数値が埋め込まれているＳＱＬからバインド変数に相当する部分を抽出してＳＱＬとバインド変数、バインド変数値に変換することは可能である。
【０１６０】
動作ログ取得部１０は、分析対象の業務システム２における所定のログファイルへアクセスするなどして、端末装置の一画面からの入力がきっかけで発生した業務処理における動作ログ一式（画面単位ログ）を収集する。具体的には、動作ログ取得部１０は、画面で入力し業務アプリに入力されるＨＴＴＰパラメータ（画面パラメータ）と、その画面がきっかけで実行される一連のＳＱＬログ（ＳＱＬ文、入力パラメータ（バインド変数値）、ＳＥＬＥＣＴ文の場合は加えて検索結果）とそれらの実行順を判断可能な情報（時刻など）を収集する。
【０１６１】
分析部１１は、動作ログ取得部１０が取得した画面単位ログごとに、明細を区別する値（キー値）と、そのキー値を有する画面パラメータないしカラムを画面単位ログから検索する。ここで、キー値およびキー値を有する画面パラメータ名やカラム名は不明であるため、分析部１１は、まずデータ遷移先テーブル（ＳＱＬのうちＩＮＳＥＲＴないしＵＰＤＡＴＥ文が扱うテーブル）に出現する値をキー値と仮定し、キーとするカラムの候補を生成する。
【０１６２】
次に、分析部１１は、同じキー値を持つＳＱＬをグループとし、グループに属するＳＱＬと、画面パラメータとで上述した実施形態と同様の演算を行い、データ伝搬（直接的なデータ伝搬および間接的なデータ伝搬）の検出を行う。
【０１６３】
具体的には、分析部１１は、次の（１）〜（３）の計算を実行する。
（１）データ遷移先のキー値の候補と同じ値をデータ遷移元から検索し、キーとするカラムないし画面パラメータの候補を生成する。
（２）キー候補が同じＳＱＬをグループ化する。
（３）上記のＳＱＬのグループを対象にして、上述した実施形態と同様の演算を行い、データ伝搬の検出を行う。
【０１６４】
図３０は、別実施形態にかかる分析支援装置１の動作例を示すフローチャートである。なお、上述した実施形態と同様の処理については同一の符号を付して説明を省略する。
【０１６５】
図３０に示すように、分析部１１は、作成した画面単位ログの集合ごとに、Ｓ４ａ〜Ｓ１４ａの第１ループ処理を実行する。具体的には、分析部１１は、第１ループ処理が開始されると、画面単位ログごとに、キー値の候補を取得する（Ｓ１００）。キー値の候補は、画面単位ログに含まれるＩＮＳＥＲＴないしＵＰＤＡＴＥで設定される値と、ＵＰＤＡＴＥのＷＨＥＲＥ句に出現する値などである。
【０１６６】
次いで、分析部１１は、候補とするキー値ごとに、キー値を有するＳＱＬ列（文）を作る（Ｓ１０１）。ここでいうＳＱＬ列は、画面単位ログのＳＱＬ列のうち、キー値を含むＩＮＳＥＲＴないしＵＰＤＡＴＥを１つと、その１つのＩＮＳＥＲＴないしＵＰＤＡＴＥ以前に実行されたキーとをＷＨＥＲＥ節にもつＳＥＬＥＣＴ（０個以上）とを有する。
【０１６７】
次いで、分析部１１は、Ｓ１０１で作ったＳＱＬ列のうち、ＩＮＳＥＲＴないしＵＰＤＡＴＥでキー値を持つカラム名（キーカラム候補）を作る（Ｓ１０２）。具体的には、分析部１１は、Ｓ１０１で作ったＳＱＬ列において、ＩＮＳＥＲＴないしＵＰＤＡＴＥされるテーブル／カラム（データ伝搬先）を探し、キーカラム候補を作る。
【０１６８】
次いで、分析部１１は、Ｓ１００、Ｓ１０１、Ｓ１０２の結果をもとに、キー値の候補、ＳＱＬ列、キーカラム候補を有する一覧を作る（Ｓ１０３）。次いで、分析部１１は、Ｓ１０３で作成した一覧をもとに、キーカラム候補ごとに、Ｓ１０４〜Ｓ１０９の第２ループ処理を実行する。
【０１６９】
第２ループ処理が開始されると、分析部１１は、キーカラム候補に対応するＳＱＬ（列）を対象として上述した実施形態と同様の演算を行い、データ伝搬の検出を行う（Ｓ１０５）。これにより、分析部１１は、テーブルからのデータ伝搬を検出する。
【０１７０】
次いで、分析部１１は、キー値が画面パラメータの何番目（Ｋ）かを求める（Ｓ１０６）。具体的には、分析部１１は、画面パラメータ名の一部が共通するグループ（例えば、「ｃｏｄｅ−１」、「ｃｏｄｅ−２」、「ｃｏｄｅ−３」の場合は「ｃｏｄｅ−」が共通）を対象として、グループの値にキー値を１つ持ち、他のグループの値全てが異なるグループを探す。そして、分析部１１は、探し出したグループにおいて、キー値が何番目かを求める（Ｋ番目とする）。
【０１７１】
次いで、分析部１１は、Ｋ番目の画面パラメータを取り出す（Ｓ１０７）。具体的には、Ｓ１０６におけるグループとキー値が同じ個数の別グループを探し、Ｋ番目のパラメータを取り出す（キー値に対応する画面パラメータ一式とする）。ただし、パラメータ名には共通の文字列（例えば、「ｃｏｄｅ−１」、「ｃｏｄｅ−２」、「ｃｏｄｅ−３」の場合は「ｃｏｄｅ−」）を用いる。
【０１７２】
次いで、分析部１１は、キー値に対応してＳ１０７で取り出したＫ番目の画面パラメータと、同じキー値に対応するＳＱＬ列とを組み合わせて上述した実施形態と同様の演算を行い、データ伝搬の検出を行う（Ｓ１０８）。これにより、分析部１１は、画面パラメータからのデータ伝搬を検出する。
【０１７３】
ここで、より具体的な具体例を参照して分析支援装置１の別実施形態を説明する。なお、以下で説明する具体例では、分析対象の業務用ＤＢ２１のテーブルが持つカラムは全て数値型であるものと仮定する。ただし、文字列型カラムに数値が入っている場合でも、文字列を適切に変換処理して数値として扱うことで、数値型と同様に処理できる。
【０１７４】
図３１は、動作ログの一例を説明する説明図である。図３１に示すように、動作ログＤ９１、Ｄ９２は、ＵＲＬで示した画面操作がきっかけで実行されたＳＱＬの実行文（ＳＱＬとバインド値、ＳＥＬＥＣＴの場合は検索で得られた値も含む）を有する。なお、動作ログＤ９１、Ｄ９２は、画面操作がきっかけで同じ種類のＳＱＬ文を実行する（例えば、バインド値が異なるものの、実行するＳＥＬＥＣＴ文とＩＮＳＥＲＴ文が同じ）ため、同じ画面単位ログの集合に属する。
【０１７５】
Ｓ１００において、分析部１１は、動作ログＤ９１、Ｄ９２ごとに、キー値の候補を取得する。図３２は、データテーブルの一例を説明する説明図である。より具体的には、図３２は、動作ログＤ９１、Ｄ９２ごとにキー値候補を取得して得られたデータテーブルＴ８１を例示している。
【０１７６】
図３２に示すように、分析部１１は、画面単位ログ（動作ログＤ９１、Ｄ９２）ごとに、ＩＮＳＥＲＴ文で設定される値をキー値候補として取得する。なお、本例では、ＵＰＤＡＴＥを実行しなかったので、ＵＰＤＡＴＥで設定される値とＷＨＥＲＥ句の出現する値は取得されていない。
【０１７７】
次いで、分析部１１は、Ｓ１０３において、画面単位ログのキー値候補、キー値候補を含むＳＱＬ列およびＩＮＳＥＲＴないしＵＰＤＡＴＥでキー値を持つキーカラム候補の一覧を作る。
【０１７８】
図３３は、データテーブルの一例を説明する説明図である。より具体的には、図３３は、動作ログＤ９１におけるキーカラム候補の一覧を示すデータテーブルＴ８２ａと、動作ログＤ９２におけるキーカラム候補の一覧を示すデータテーブルＴ８２ｂを例示する図である。
【０１７９】
図３３のデータテーブルＴ８２ａに示すように、例えば、動作ログＤ９１でキー値候補「００１」を持つＩＮＳＥＲＴ文とＷＨＥＲＥ節にキー値を持つＳＥＲＥＣＴ文は（ＳＱＬ１，ＳＱＬ３）であり、ＩＮＳＥＲＴ文でキー値候補「００１」が出現するカラムは「明細．商品コード」である。
【０１８０】
図３４は、データテーブルの一例を説明する説明図であり、より具体的には、図３３のデータテーブルＴ８２ａ、Ｔ８２ｂを用い、キーカラム候補ごとのＳＱＬ列一覧を示すデータテーブルＴ８３を例示する図である。図３４に示すように、分析部１１は、データテーブルＴ８３のキーカラム候補ごとに、キーカラム候補に対応するＳＱＬ列を用いて上述した実施形態と同様の演算を行い、データ伝搬の検出を行う。
【０１８１】
図示例では、キーカラム候補のうち「明細．商品コード」以外はＩＮＳＥＲＴしか存在しないので、データ伝搬は発生していない。一方、キーカラム候補が「明細．商品コード」の場合は、それぞれのＳＱＬ列がＳＥＬＥＣＴとＩＮＳＥＲＴの組み合わせになっており、データ伝搬が検出される。
【０１８２】
図３５は、データ伝搬の検出を説明する説明図である。具体的には、図３５に示すように、「商品マスタ．商品コード」→「明細．商品コード」へのデータ伝搬が検出され、商品マスタテーブルＴ１と明細テーブルＴ２とのデータ伝搬関係が検出される。
【０１８３】
次に、分析部１１は、画面パラメータ名の一部が共通するグループを作る。図３６は、データテーブルの一例を説明する説明図であり、より具体的には、動作ログＤ９１、Ｄ９２より画面パラメータ名の一部が共通するグループを作成して得られるデータテーブルＴ８４を例示する図である。本例では、「商品コード−１、商品コード−２」の「商品コード−」と、「受注数量−１、受注数量−２」の「受注数量−」とが該当し、図３６に示すように、データテーブルＴ８４が得られる。
【０１８４】
次に、分析部１１は、キーカラム候補ごとに、キー値が画面パラメータに含まれるか否かを調べ、含まれる場合はキー値が上記のグループの何番目（Ｋ）を取得する。
【０１８５】
図３７は、データテーブルの一例を説明する説明図であり、より具体的には、キーカラム候補ごとに、キー値が画面パラメータに含まれるか否かを調べて得られるデータテーブルＴ８５を例示する図である。図３７に示すように、例えば、「動作ログ１」においてキーカラム候補「明細．商品コード」のキー値「０２０」は、「商品コード−」の２番目の値（Ｋ＝２）に存在する。「商品コード−」以外のグループの２番目の値（本例では「受注数量−」）である「２１」と合わせた値「商品コード−＝０２０＆受注数量−＝２１」が画面パラメータとして得られる。なお、キーカラム候補「明細．商品コード」の他の動作ログおよびキー値も同様に画面パラメータが得られる。
【０１８６】
図３８は、データテーブルの一例を説明する説明図であり、より具体的には、対応する画面パラメータが存在する動作ログ、キー値、画面パラメータ、ＳＱＬの組み合わせを有するデータテーブルＴ８６を例示する図である。分析部１１は、データテーブルＴ８５をもとに、図３８に示すデータテーブルＴ８６を得る。分析部１１は、このデータテーブルＴ８６を用いて上述した実施形態と同様の演算を行い、データ伝搬の検出を行う。
【０１８７】
図３９は、データ伝搬の検出を説明する説明図である。具体的には、図３９に示すように、データテーブルＴ８６を用いてデータ伝搬の検出を行うと次の関係が検出される。
「商品マスタ．商品コード」→「明細．商品コード」
「（画面）商品コード−」→「明細．商品コード」
「（画面）受注数量−」→「明細．受注数量」
「（画面）受注数量−＊商品マスタ．単価」→「明細．合計金額」
【０１８８】
これにより、商品マスタテーブルＴ１、明細テーブルＴ２および画面パラメータテーブルＴ５のデータ伝搬関係が検出される。よって、別実施形態では、図２９においてデータ伝搬関係の検出に失敗した箇所のデータ伝搬関係も検出することができる。
【符号の説明】
【０１８９】
１…分析支援装置
２…業務システム
１０…動作ログ取得部
１１…分析部
１２…記憶部
１３…出力部
２０…ＤＢアクセスデータ
２１…業務用ＤＢ
２００…コンピュータ
Ｔ１…商品マスタテーブル
Ｔ２…明細テーブル
Ｔ３…受注テーブル
Ｔ４…請求テーブル
Ｔ１１〜Ｔ８６…データテーブル
Ｄ１１〜Ｄ９２…動作ログ
Ｇ…表示画面
Ｇ１〜Ｇ５…テーブル・カラム画像
Ｇ１１、Ｇ１２…接続関係表示
【図１】
0006634938.tif 000002
【図２】
0006634938.tif 000003
【図３】
0006634938.tif 000004
【図４】
0006634938.tif 000005
【図５】
0006634938.tif 000006
【図６】
0006634938.tif 000007
【図７】
0006634938.tif 000008
【図８】
0006634938.tif 000009
【図９】
0006634938.tif 000010
【図１０】
0006634938.tif 000011
【図１１】
0006634938.tif 000012
【図１２】
0006634938.tif 000013
【図１３】
0006634938.tif 000014
【図１４】
0006634938.tif 000015
【図１５】
0006634938.tif 000016
【図１６】
0006634938.tif 000017
【図１７】
0006634938.tif 000018
【図１８】
0006634938.tif 000019
【図１９】
0006634938.tif 000020
【図２０】
0006634938.tif 000021
【図２１】
0006634938.tif 000022
【図２２】
0006634938.tif 000023
【図２３】
0006634938.tif 000024
【図２４】
0006634938.tif 000025
【図２５】
0006634938.tif 000026
【図２６】
0006634938.tif 000027
【図２７】
0006634938.tif 000028
【図２８】
0006634938.tif 000029
【図２９】
0006634938.tif 000030
【図３０】
0006634938.tif 000031
【図３１】
0006634938.tif 000032
【図３２】
0006634938.tif 000033
【図３３】
0006634938.tif 000034
【図３４】
0006634938.tif 000035
【図３５】
0006634938.tif 000036
【図３６】
0006634938.tif 000037
【図３７】
0006634938.tif 000038
【図３８】
0006634938.tif 000039
【図３９】
0006634938.tif 000040