JP2017004500A - 分析支援方法、分析支援プログラムおよび分析支援装置 - Google Patents

分析支援方法、分析支援プログラムおよび分析支援装置 Download PDF

Info

Publication number
JP2017004500A
JP2017004500A JP2016076077A JP2016076077A JP2017004500A JP 2017004500 A JP2017004500 A JP 2017004500A JP 2016076077 A JP2016076077 A JP 2016076077A JP 2016076077 A JP2016076077 A JP 2016076077A JP 2017004500 A JP2017004500 A JP 2017004500A
Authority
JP
Japan
Prior art keywords
column
value
data
database
screen
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016076077A
Other languages
English (en)
Other versions
JP6634938B2 (ja
Inventor
光幾 加藤
Koki Kato
光幾 加藤
忠弘 上原
Tadahiro Uehara
忠弘 上原
武 安家
Takeshi Ake
武 安家
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2017004500A publication Critical patent/JP2017004500A/ja
Application granted granted Critical
Publication of JP6634938B2 publication Critical patent/JP6634938B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】業務システムにおけるデータ伝搬を的確に把握する。【解決手段】実施形態の分析支援方法は、コンピュータが、入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよびデータベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得する処理を実行する。また、コンピュータが、取得された複数の動作ログの中の、データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、入力パラメータに含まれる値またはアクセス記録においてデータベースから読み出された値と、アクセス記録においてデータベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、カラムにデータの伝搬があるものと分析する処理を実行する。また、コンピュータが、伝搬があると分析されたカラムを出力する処理を実行する。【選択図】図2

Description

本発明の実施形態は、分析支援方法、分析支援プログラムおよび分析支援装置に関する。
従来、リレーショナル・データベース(RDB)などのデータベース(以下、DBと表記する)を用いる業務システムでは、新機能の追加などの保守開発を行う時に、新機能の追加などによる変更の影響がどこまで波及するかを把握することが求められる。この影響が及ぶ範囲の把握では、DBに対するデータの書き込みや読み込みによってデータがどのように伝搬していくかを調査する。例えば、DBがRDBである場合、書き込みはSQLのINSERTやUPDATE命令に、読み込みはSELECT命令にそれぞれ相当する。
DBに対するINSERTやUPDATE命令による書き込み、SELECT命令による読み込みによってデータがどのように伝搬していくかを調査する方法は、大きく分けて静的方法と動的な方法がある。
静的な方法では、業務システムにかかるソースコードから、業務システムが実行された時のデータの流れを解析する方法がある。ソースコードを用いると、ソースコード内のデータ伝搬は正確に把握できる。しかしながら、業務システムにおいてDBなど外部データの入出力が存在すると、DBを介して関係付く他のソースコードの発見と、そのソースコード内のデータ伝搬の把握が必要である。
例えば、業務システムのJava(登録商標)などのソースコードで記述されたメソッドからSQLを発行してRDBとデータのやり取りを行う場合、データ伝搬を把握するためにはSQLとソースコードの両方を分析する必要がある。しかしながら、ソースコードを正しく分析するのは手間を要し、データ伝搬を把握するのが困難である。また、静的な方法の場合、実際の業務において、あるデータ(カラム)への書き込みや読み出しが発生する順序関係を把握するのが困難であり、実際には発生しないデータ伝搬も抽出する可能性がある。
一方、動的な方法としては、プログラム実行に関する動作ログを取得・解析する方法や、SQLの実行履歴を動作ログとして用いた分析がある。解析する動作ログとしては、例えば実行したSQLとその時のパラメータ、さらにSELECT命令の場合は検索結果がある。
特開2010−102664号公報
しかしながら、上述した従来技術では、DBを用いる業務システムにおけるデータ伝搬について、的確に把握することが困難な場合があるという問題がある。例えば、DBより読み出した値をメソッド内で演算し、演算後の値を別のカラムに書き込むような間接的に関係性のあるデータ伝搬については、的確に把握することは困難である。
図27は、業務システム300を説明する説明図である。図27に示すように、業務システム300は、Webサーバ311、業務サーバ312、業務用DB313およびDBアクセスデータ314を有する。
Webサーバ311は、端末装置301のブラウザからのアクセスを受け付けて、業務処理のサービスを端末装置301のブラウザに提供する。具体的には、Webサーバ311は、端末装置301からのHTTP(HyperText Transfer Protocol)パラメータを介した処理要求を業務サーバ312へ通知し、業務サーバ312の処理結果を端末装置301のブラウザに返す。業務サーバ312は、Webサーバ311からの処理要求をもとに、業務用の各種情報を格納するRDBである業務用DB313へのアクセスを行って業務処理を実行し、処理結果をWebサーバ311へ返す。また、業務サーバ312は、業務用DB313へのアクセスにかかるログ(動作ログ)をDBアクセスデータ314に格納する。この動作ログには、実行したSQLおよびパラメータや、SELECT命令の場合は検索結果がある。
例えば、Webサーバ311からのアクセスがきっかけとなり業務サーバ312がSELECT文を実行した後に、INSERT文を実行する場合を想定する。この場合、DBアクセスデータ314の動作ログからは、端末装置301より業務サーバ312へアクセスしたHTTPパラメータ(画面パラメータ)と、SELECT文およびパラメータと、検索結果と、INSERT文のパラータと、実行時刻とが得られる。
この動作ログにおいて、動的な方法により、例えば業務用DB313におけるTable1のカラムC11からSELECT文で読み出された値(y1)と、Table2のカラムC21にINSERT文で書き込む値(z1)とが常にy1=z1を満たすことが判明したものとする。この場合、カラムC11の値が業務処理を経由してカラムC21に伝搬していると推定できる。このように、検索結果の値をINSERT文でそのまま別のカラムに書き込む場合には、動的な方法によりデータ伝搬を把握できる。
しかしながら、読み出された値(y1)をメソッド内で演算し、演算後の値(z1)を別のカラムに書き込む場合には、y1≠z1であることから、間接的な関係性が存在するにもかかわらず、その関係性を的確に把握することは困難である。また、UPDATE文で更新する場合は、例えば一旦SELECT文を実行して読み出した値に演算を施し、演算後の値をUPDATE文で更新する。このように、UPDATE文で更新が行われる場合も、既存の値がそのまま更新値として使われるものではないことから、間接的な関係性が存在するにもかかわらず、その関係性を的確に把握することは困難である。
1つの側面では、業務システムにおけるデータ伝搬を的確に把握することを可能とする分析支援方法、分析支援プログラムおよび分析支援装置を提供することを目的とする。
第1の案では、分析支援方法は、コンピュータが、入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよびデータベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得する処理を実行する。また、分析支援方法は、コンピュータが、取得された複数の動作ログの中の、データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、入力パラメータに含まれる値またはアクセス記録においてデータベースから読み出された値と、アクセス記録においてデータベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、カラムにデータの伝搬があるものと分析する。また、分析支援方法は、コンピュータが、伝搬があると分析されたカラムを出力する処理を実行する。
本発明の1実施態様によれば、業務システムにおけるデータ伝搬を的確に把握できる。
図1は、実施形態にかかる分析支援装置の構成を例示するブロック図である。 図2は、実施形態にかかる分析支援装置の動作例を示すフローチャートである。 図3は、「カラム1個との対応付け」の処理を示すフローチャートである。 図4は、「画面パラメータ1個との対応付け」の処理を示すフローチャートである。 図5は、「画面パラメータが持つ複数の繰り返しパラメータとINSERT値の関係推定」の処理を示すフローチャートである。 図6は、「SELECT結果の2つのカラムとINSERT値の関係推定」の処理を示すフローチャートである。 図7は、「キー値を介して関係付く2種類のSELECT結果のカラムとINSERT値の関係推定」の処理を示すフローチャートである。 図8は、「キー値を介して関係付く画面パラメータとSELECT結果のカラムとINSERT値の関係推定」の処理を示すフローチャートである。 図9は、実施形態にかかる分析支援装置の動作例を示すフローチャートである。 図10は、業務用DBのテーブル構成を例示する図である。 図11は、動作ログの一例を説明する説明図である。 図12は、データテーブルの一例を説明する説明図である。 図13は、動作ログの一例を説明する説明図である。 図14は、データテーブルの一例を説明する説明図である。 図15は、動作ログの一例を説明する説明図である。 図16は、データテーブルの一例を説明する説明図である。 図17は、動作ログの一例を説明する説明図である。 図18は、データテーブルの一例を説明する説明図である。 図19は、動作ログの一例を説明する説明図である。 図20は、データテーブルの一例を説明する説明図である。 図21は、動作ログの一例を説明する説明図である。 図22は、データテーブルの一例を説明する説明図である。 図23は、動作ログの一例を説明する説明図である。 図24は、データテーブルの一例を説明する説明図である。 図25は、表示画面の一例を説明する説明図である。 図26は、分析支援プログラムを実行するコンピュータの一例を説明する説明図である。 図27は、業務システムを説明する説明図である。 図28は、受注業務におけるデータ伝搬の一例を説明する説明図である。 図29は、データ伝搬の検出に失敗した場合を説明する説明図である。 図30は、別実施形態にかかる分析支援装置の動作例を示すフローチャートである。 図31は、動作ログの一例を説明する説明図である。 図32は、データテーブルの一例を説明する説明図である。 図33は、データテーブルの一例を説明する説明図である。 図34は、データテーブルの一例を説明する説明図である。 図35は、データ伝搬の検出を説明する説明図である。 図36は、データテーブルの一例を説明する説明図である。 図37は、データテーブルの一例を説明する説明図である。 図38は、データテーブルの一例を説明する説明図である。 図39は、データ伝搬の検出を説明する説明図である。
以下、図面を参照して、実施形態にかかる分析支援方法、分析支援プログラムおよび分析支援装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する分析支援方法、分析支援プログラムおよび分析支援装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
図1は、実施形態にかかる分析支援装置1の構成を例示するブロック図である。図1に示すように、分析支援装置1は、PC(Personal Computer)やワークステーション等の情報処理装置であり、DBアクセスデータ20に格納された業務システム2の動作ログを取得し、取得した動作ログの分析を行う。分析支援装置1は、動作ログ取得部10、分析部11、記憶部12および出力部13を有する。
業務システム2では、業務処理のサービスを提供するWebサーバへの端末装置からの要求により、業務サーバが業務用DBにアクセスして業務処理を実行した際の動作ログをDBアクセスデータ20としてログファイルなどに格納する。なお、本実施形態では、Webサーバを介した端末装置からの要求によるオンライン実行の動作ログの分析を例示する。具体的には、動作ログには、ブラウザ上の画面から入力した値を用いて、業務サーバが業務用DBへアクセスして業務処理を実行した際の履歴が記述されている。なお、分析する動作ログの内容については、上記の例に限定しない。例えば、業務サーバがバッチ処理により業務用DBにアクセスして業務処理を実行する場合の動作ログの分析にも適用可能である。
また、本実施形態では、DBアクセスデータ20において、業務用DBへのアクセスにかかるSQL文は、バインド変数を用いて記述されていることを前提とする。このSQL文については、変数値が埋め込まれているものからバインド変数に相当する部分を抽出し、SQLとバインド変数、バインド変数値に変換することは可能である。
動作ログ取得部10は、分析対象の業務システム2における所定のログファイルへアクセスするなどして、業務システム2の動作ログを取得する。具体的には、動作ログ取得部10は、業務システム2の動作ログとして、端末装置の画面で入力し、業務サーバに入力されるHTTPパラメータ(画面パラメータ)と、その入力による業務用DBの所定のカラムへのアクセス内容と、これらの実行順を判断可能な情報(処理時刻など)を取得する。業務用DBの所定のカラムへのアクセス内容には、端末装置の画面からの入力による画面パラメータがきっかけで実行される一連のSQLログ(SQL文、入力パラメータ(バインド変数値)、SELECT文の場合は加えて検索結果)がある。
なお、端末装置の一画面からの入力がきっかけで発生した業務処理における動作ログ一式(画面パラメータとSQLログ)を以下では画面単位ログとも呼ぶこととする。
分析部11は、動作ログ取得部10が取得した動作ログの内容をもとに、画面パラメータ内の変数値や業務用DBのあるカラムから読み出された値が業務用DBの所定のカラムへ伝搬するデータ伝搬があるか否かを分析する。記憶部12は、分析部11が分析する処理を行う際の作業用データ(動作ログ取得部10が取得した動作ログなど)を記憶する。出力部13は、分析部11の分析結果をディスプレイへの表示や、プリンターによる印字により出力する。
分析部11は、所定のカラムについての動作ログをもとに、画面パラメータ内の変数値や業務用DBのあるカラムから読み出された値などの入力変数値と、所定のカラムへ書込む出力変数値とが一致するか否かを判定し、所定のカラムへの直接的なデータ伝搬があるか否かを分析する。また、分析部11は、所定のカラムについての複数の動作ログをもとに、業務用DBより読み出した値を演算し、演算後の値を別のカラムに書き込むような間接的なデータ伝搬の有無を分析する。具体的には、分析部11は、所定のカラムについての複数の動作ログにおいて、入力変数値と、出力変数値とを組み合わせて所定の演算を行った演算結果が一定である場合に、所定のカラムへ間接的なデータ伝搬があるものと分析する。
なお、間接的なデータ伝搬については、任意の演算を対象としてデータ伝搬の有無を分析することは困難である。したがって、本実施形態では、業務処理で発生しがちな予め定められた演算を対象とする。具体的には、定数倍演算(例:消費税計算)、積和演算(例:単価と数量からの合計額計算)、固定値の加算を対象としている。
ここで、間接的なデータ伝搬の有無の分析について詳細に説明する。まず、所定のカラムへの書込みは、SQLのINSERT文で値を挿入する場合と、SQLのUPDATE文で値を更新する場合とがある。
(INSERTの場合)
分析部11は、画面単位ログごとに、INSERT文より以前に実行した1個以上の同一SELECT文(ただしパラメータは異なる)を抽出する。同一SELECT文が存在するとき、分析部11は、その検索結果ないし画面パラメータの1個ないし2個から次の値を計算する。
・カラムないし画面パラメータが1個:α・C+β
・カラムないし画面パラメータが2個:αΣC・D+β
ただし、α、βは定数、C、DはそれぞれSELECT文で得られたテーブルのあるカラムの値ないし画面パラメータの値である。
分析部11は、計算された値がINSERT文で挿入する値と常に一致する場合には、検索結果のカラムないし画面パラメータがINSERT対象のカラムに伝搬すると分析する。なお、定数α、βの計算は次のように行う。
(カラムないし画面パラメータが1個の場合)
分析部11は、ある画面単位ログ2回分(ただし画面パラメータは異なる)より、あるSELCETで1個得られた検索結果の特定のカラムCの値(ここではC1、C2とする)と、SELECTより後で実行したINSERTでカラム(X)に挿入した値(ここではX1、X2)とを得る。
次いで、分析部11は、α=(X1−X2)/(C1−C2)の値を求め、求めた値が動作ログの組み合わせによらず常に一定であるか否かを、複数の動作ログを用いて計算する。αの値が常に一定の場合には、β=X1−αC1なる関係がある。このことから、分析部11は、複数の動作ログにおいてαの値が常に一定の場合、SELECTで取得したカラムCの値がαC+βなる変形(演算)を施されてカラムXにINSERTされ伝搬したものと分析する。
(画面パラメータ1個とINSERT値の関係推定)
分析部11は、ある画面単位ログ2回分(ただし画面パラメータは異なる)より、画面パラメータのうちの特定のパラメータCの値(ここではC1、C2とする)と、INSERTでカラム(X)に挿入した値(ここではX1、X2とする)とを得る。
次いで、分析部11は、α=(X1−X2)/(C1−C2)の値を求め、求めた値が動作ログの組み合わせによらず常に一定であるか否かを、複数の動作ログを用いて計算する。αの値が常に一定の場合には、β=X1−αC1なる関係がある。このことから、分析部11は、複数の動作ログにおいてαの値が常に一定の場合、画面パラメータCの値がαC+βなる変形(演算)を施されてカラムXにINSERTされ伝搬したものと分析する。
(カラムないし画面パラメータが2個の場合)
カラムないし画面パラメータが2個の場合も、分析部11は、画面単位ログ2回分を用い、調査対象のINSERTより以前に実行されたSELECT結果ないし画面パラメータとの関係を、次の4つの場合で分析する。
(画面パラメータが持つ複数の繰り返しパラメータとINSERT値の関係推定)
画面パラメータで同種のパラメータ値が複数繰り返される場合、ある動作ログから得られた繰り返されるパラメータの2種類(CとDとする)の値とINSERTでカラムXに挿入した値(X1とする)、同じ画面の別の動作ログから得られたパラメータ値が得られるものとする。なお、繰り返されるパラメータの2種類の値は、それぞれC1iとD1i(i=1..m、ただしmはパラメータの繰り返し数)とする。また、同じ画面の別の動作ログから得られたパラメータ値は、それぞれC2iとD2i(i=1..n、ただしnはパラメータの繰り返し数)とする。
このとき、分析部11は、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログの組み合わせで計算する。分析部11は、αが一定のとき、β=X1−αΣC1i・D1iであり、画面パラメータCとDの値がαΣC・D+βなる変形を施されてカラムXにINSERTされ伝搬したものと分析する。
なお、パラメータ値が複数繰り返されるというのは、例えばあるURLのパラメータ名のうち「abc-*、def-*、ghi-*、…(*は任意の文字列)」などの文字列が組となって繰り返されていることが容易に検出されたものを言う。一例としてURLが「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」の場合、パラメータ名の最後の数値を無視すると同一の文字列が同じ順で繰り返し出現している。例示したURLでは、「abc-*」に対応するパラメータ値は順に(123、111)、「def-*」に対応するパラメータ値は順に(234、222)である。
(SELECT結果の2つのカラムとINSERT値の関係推定)
画面単位ログで、SELECT(1つのSELECTで1個以上の検索結果が得られた場合ないし、パラメータの異なる同一のSELECTを1個以上実行し、1個以上の検索結果が得られた場合)の後にINSERTが実行されたものとする。また、検索結果の2つのカラムC、Dの値(それぞれC1iとD1i、i=1..m、ただしmは検索結果数、とする)と、INSERTでカラムXに設定した値(X1とする)が得られ、別の動作ログで同様にC、D、Xの値(C2j、D2j、j=1..n、ただしnは検索結果数、X2)が得られたものとする。
このとき、分析部11は、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログの組み合わせで計算する。分析部11は、αが常に一定のとき、β=X1−αΣC1i・D1iであり、カラムCとDの値が、αΣC・D+βなる変形を施されてカラムXにINSERTされ、伝搬したものと分析する。
(キー値を介して関係付く2種類のSELECT結果のカラムとINSERT値の関係推定)
画面単位ログで、2つの異なるSELECTの検索結果(ただしそれぞれの検索結果数が同一である組み合わせを選択する)それぞれで得られた特定のカラムC、Dの値(それぞれC1iとD1i、i=1..m、ただしmは検索結果数、とする)と、その後に実行したINSERTでカラムXに挿入した値(X1とする)が得られたものとする。また、同様にもう一つの動作ログ1回分から同一のカラムC、D、Xの値(C2j、D2j、j=1..n、ただしnは検索結果数、X2)が得られたものとする。
このとき、分析部11は、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログを用いて計算する。ただし、カラムC1i、D1iが含まれるレコード間を対応づけるキーとなるカラムがそれぞれのレコードに存在し、キー値で対応づくレコードからC1i、D1iを得る。C2j、D2jも同様である。分析部11は、αが常に一定の場合、β=X1−αΣC1i・D1iであり、カラムCとDの値がαΣC・D+βなる変形を施されてカラムXに伝搬したものと分析する。
(キー値を介して関係付く画面パラメータとSELECT結果のカラムとINSERT値の関係推定)
画面単位ログで、画面パラメータで同種のパラメータ値が2種類以上繰り返される場合、その繰り返し回数と、検索結果数が同じSELECTがあり、画面パラメータの1つと検索結果のカラムが同じでキー関係になっているものとする。また、SELECT結果の特定のカラムCと、キーではない画面パラメータD(それぞれC1iとD1i、i=1..m、ただしmは検索結果数、とする)と、その後に実行したINSERTでカラムXに挿入した値(X1とする)とが得られるものとする。また、同様にもう一つの動作ログ1回分から同一のカラムC、D、Xの値(C2j、D2j、j=1..n、ただしnは検索結果数、X2)が得られるものとする。
このとき、分析部11は、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)の値が動作ログの組み合わせによらず常に一定かを、複数の動作ログを用いて計算する。分析部11は、αが常に一定の場合、β=X1−αΣC1i・D1iであり、画面パラメータCとSELECT結果Dの値がαΣC・D+βなる変形を施されてカラムXにINSERTされ伝搬したものと推定する。
(UPDATEの場合)
分析部11は、値をUPDATEで設定するとき、次の処理でデータ伝搬を分析する。画面単位ログで、UPDATEより以前に実行した1個以上の同一SELECT文(ただしパラメータは異なる)が存在するものとする。このとき、分析部11は、検索結果ないし画面パラメータの1個ないし2個から計算される次の値がUPDATEで更新する値と常に一致する場合、そのカラムないし画面パラメータがUPDATE対象のカラムに伝搬したものと分析する。
・カラムないし画面パラメータが1個:α・C+β
・カラムないし画面パラメータが2個:αΣC・D+β
ただしα、βの計算方法は前述と同様である。
また、UPDATEより以前に実行した1個以上の同一SELECT文(ただしパラメータは異なる)が存在するとき、その検索結果ないし画面パラメータの1個ないし2個から計算される次の値がUPDATEで更新する増分値(新たに設定する値と直前のSELECT結果との差分)と常に一致する場合、そのカラムないし画面パラメータがUPDATE対象のカラムに伝搬すると分析する。
以上の説明では、ある画面をきっかけで実行したときの画面単位ログに含まれるSQL列は常に同じということを前提としている。しかしながら、画面から入力する値に応じて実行されるSQL列が異なる場合もある。この場合は、実行されたSQL群が同じである実行を同一画面と見なして、上記の処理を行う。
図2は、実施形態にかかる分析支援装置1の動作例を示すフローチャートであり、上述したINSERTの場合の処理の一例である。図2に示すように、処理が開始されると、動作ログ取得部10は、分析対象の業務システム2からDBアクセスデータ20を参照して動作ログを取得する(S1)。取得する動作ログには、画面パラメータ(HTTPパラメータ)、SQLステートメント、SQLパラメータ、SQLがSELECTの場合は検索結果、とそれぞれを実行した時刻(実行順を判別可能な精度)がある。なお、動作ログ取得部10は、HTTPパラメータからは、GETないしPOSTメソッド要求で送信される、URLないしメッセージボディに記述されたクエリ文字列(パラメータ名と値の対)を抽出する。
次いで、分析部11は、画面パラメータをもとに、動作ログ取得部10が取得した動作ログを画面単位の画面単位ログに分割する。例えば、分析部11は、同一の画面を表示するURLへのアクセスごとに動作ログを分割する。そして、分析部11は、分割した画面単位ログからSQL列を抽出する(S2)。
次いで、分析部11は、画面単位ログごとに抽出されたSQL列をもとに、実行されたSQL文の組み合わせが同一の画面単位の動作ログの集合を作る(S3)。このとき、同一のSQL文(SQLパラメータは異なる)の実行回数の違いは考慮しないものとする。
次いで、分析部11は、作成した画面単位の動作ログの集合ごとに、S4〜S14の第1ループ処理を実行する。第1ループ処理が開始されると、分析部11は、公知の方法を用いて、INSERTするテーブルのカラムと、それ以前に実行したSELECT結果で得られたカラムとを関係づける(S5)。具体的には、分析部11は、あるカラムからSELECT文で読み出された値(y1)と、別のカラムにINSERT文で書き込む値(z1)とが常にy1=z1を満たす場合に、あるカラムから別のカラムへの直接的なデータ伝搬があるものと分析する。
次いで、分析部11は、S5において直接的なデータ伝搬があるものと分析されず、関係付かなかったカラム(X)に対して、S6〜S13の第2ループ処理を実行する。
第2ループ処理では、分析部11は、「カラム1個との対応付け」の処理(S7)、「画面パラメータ1個との対応付け」の処理(S8)を実行する。また、分析部11は、「画面パラメータが持つ複数の繰り返しパラメータとINSERT値の関係推定」の処理(S9)、「SELECT結果の2つのカラムとINSERT値の関係推定」の処理(S10)を実行する。また、分析部11は、「キー値を介して関係付く2種類のSELECT結果のカラムとINSERT値の関係推定」の処理(S11)、「キー値を介して関係付く画面パラメータとSELECT結果のカラムとINSERT値の関係推定」の処理(S12)を実行する。
第1、第2のループ処理が終了したところで、出力部13は、第1、第2のループ処理による分析部11の分析結果をディスプレイへの表示や、プリンターによる印字により出力する(S15)。具体的には、出力部13は、分析部11の分析結果をもとに、業務用DBの所定のカラムと、このカラムへのデータ伝搬があるものと分析された画面パラメータ内の変数値や業務用DBのカラムとの対応関係を示す画像を出力する。
一例として、出力部13は、業務用DBのカラムおよび画面パラメータ内の変数値を列挙したテーブルについて、対応関係のあるカラムや変数値同士を線で結びつけた画像を表示する。なお、直接的なデータ伝搬があるものと分析されたカラムや変数値同士の対応関係を示す画像の出力態様と、間接的なデータ伝搬があるものと分析されたカラムや変数値同士の対応関係を示す画像の出力態様とは互いに異なるものであってもよい。例えば、出力部13は、対応関係のあるカラムや変数値同士を線で結びつけた画像として表示する場合、直接的なデータ伝搬があるものと分析されたカラムや変数値同士は実線で表示し、間接的なデータ伝搬があるものと分析されたカラムや変数値同士は破線で表示してもよい。このように、直接的なデータ伝搬があるものと分析された分析結果と、間接的なデータ伝搬があるものと分析された分析結果との出力態様を互いに異なるようにすることで、分析結果をより見やすくできる。
図3は、「カラム1個との対応付け」の処理(S7)を示すフローチャートである。図3に示すように、S7の処理が開始されると、分析部11は、処理対象の動作ログ集合から、画面をきっかけに処理対象のカラム(X)へINSERTするまでに実行されたSELECT文の検索結果に含まれるカラムの集合(SetC)を作る(S20)。
次いで、分析部11は、カラムの集合(SetC)に含まれるカラム(C)ごとに、S21〜S26のループ処理を実行する。ループ処理が開始されると、分析部11は、画面単位ログを一つ選び、SELECT結果のカラム(C)の値(c1Val)とINSERTで挿入するカラム(X)の値(x1Val)を取得する(S22)。
次いで、分析部11は、S22で用いたもの以外の画面単位ログごとに、SELECT結果のカラム(C)の値(c2Val)とINSERTで挿入するカラム(X)の値(x2Val)を用いて次の計算を行い、αの値を求める(S23)。
α=(x1Val−x2Val)/(c1Val−c2Val)
次いで、分析部11は、全ての動作ログ(画面単位ログ)でαが同じか否かを判定する(S24)。αが同一値である場合(S24:YES)、分析部11は、カラム(C)の値が所定の演算を施されてカラム(X)にINSERTされて伝搬したものと分析する。したがって、分析部11は、カラム(C)からカラム(X)へ間接的なデータ伝搬があったものと推定し(S25)、次のカラムへと処理をループする(S26)。なお、αが同一値でない場合(S24:NO)、分析部11は、カラム(C)からカラム(X)へ間接的なデータ伝搬があったものとは推定せず、次のカラムへと処理をループする。
図4は、「画面パラメータ1個との対応付け」の処理(S8)を示すフローチャートである。図4に示すように、S8の処理が開始されると、分析部11は、処理対象の動作ログ集合から、画面パラメータの集合(SetC)を作る(S30)。
次いで、分析部11は、作成した集合(SetC)に含まれる画面パラメータ(C)ごとに、S31〜S36のループ処理を実行する。ループ処理が開始されると、分析部11は、画面単位ログを一つ選び、画面パラメータ(C)の値(c1Val)とINSERTで挿入するカラム(X)の値(x1Val)を取得する(S32)。
次いで、分析部11は、S32で用いたもの以外の画面単位ログごとに、画面パラメータ(C)の値(c2Val)とINSERTで挿入するカラム(X)の値(x2Val)を用いて次の計算を行い、αの値を求める(S33)。
α=(x1Val−x2Val)/(c1Val−c2Val)
次いで、分析部11は、全ての動作ログ(画面単位ログ)でαが同じか否かを判定する(S34)。αが同一値である場合(S34:YES)、分析部11は、画面パラメータ(C)の値が所定の演算を施されてカラム(X)にINSERTされて伝搬したものと分析する。したがって、分析部11は、画面パラメータ(C)からカラム(X)へ間接的なデータ伝搬があったと推定し(S35)、次の画面パラメータへと処理をループする。なお、αが同一値でない場合(S34:NO)、分析部11は、画面パラメータ(C)からカラム(X)へ間接的なデータ伝搬があったものとは推定せず、次の画面パラメータへと処理をループする。
図5は、「画面パラメータが持つ複数の繰り返しパラメータとINSERT値の関係推定」の処理(S9)を示すフローチャートである。図5に示すように、S9の処理が開始されると、分析部11は、画面パラメータから、同一回数出現するパラメータ名の組を取得する(S40)。次いで、分析部11は、同一回数出現するパラメータ名の組ごとに、パラメータ2個の組み合わせを作成する(S41)。
次いで、分析部11は、作成した組み合わせごとに、S42〜S47のループ処理を実行する。ループ処理が開始されると、分析部11は、画面単位ログを一つ選び、パラメータ名2個それぞれの値(それぞれC1iとD1i、i=1..m、ただしmはパラメータの繰り返し数)を取り出す。そして、分析部11は、積和値(ΣC1i・D1i)を計算する(S43)。また、分析部11は、INSERTでカラム(X)に挿入した値(X1)を取得する。
次いで、分析部11は、S43で用いたもの以外の画面単位ログごとに、画面パラメータから、パラメータ名2個それぞれの値(それぞれC2iとD2i、i=1..n、ただしnはパラメータの繰り返し数)を順に取り出す。また、分析部11は、INSERTでカラム(X)に挿入した値(X2)を取得する。そして、分析部11は、次の計算を行い、αの値を求める(S44)。
α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)
次いで、分析部11は、全ての動作ログ(画面単位ログ)でαが同じか否かを判定する(S45)。αが同一値である場合(S45:YES)、分析部11は、2つの画面パラメータの値が所定の演算を施されてカラム(X)にINSERTされて伝搬したものと分析する。したがって、分析部11は、2つの画面パラメータからカラム(X)へ間接的なデータ伝搬があったと推定し(S46)、次の組み合わせへと処理をループする。なお、αが同一値でない場合(S45:NO)、分析部11は、2つの画面パラメータからカラム(X)へ間接的なデータ伝搬があったものとは推定せず、次の組み合わせへと処理をループする。
図6は、「SELECT結果の2つのカラムとINSERT値の関係推定」の処理(S10)を示すフローチャートである。図6に示すように、S10の処理が開始されると、分析部11は、画面単位ログから、カラム(X)に対してINSERTを実行する前に実行するSELECTを探し、その検索結果であるカラムから、カラムを2つ選択した組み合わせ(C、D)を作成する(S50)。
次いで、分析部11は、作成した組み合わせごとに、S51〜S56のループ処理を実行する。ループ処理が開始されると、分析部11は、画面単位ログを一つ選び、カラム名2個に対応するSELECT文の検索結果値(それぞれC1iとD1i、i=1..m、ただしmは検索結果数)を取り出し、積和値(ΣC1i・D1i)を計算する(S52)。また、分析部11は、INSERTでカラム(X)に挿入した値(X1)を取得する。
次いで、分析部11は、S52で用いたもの以外の画面単位ログごとに、カラム名2個に対応するSELECT文の検索結果値(それぞれC2iとD2i、i=1..n、ただしnはパラメータの繰り返し数)を順に取り出す。また、INSERTでカラム(X)に挿入した値X2を取得する。そして、分析部11は、次の計算を行い、αの値を求める(S53)。
α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)
次いで、分析部11は、全ての動作ログ(画面単位ログ)でαが同じか否かを判定する(S54)。αが同一値である場合(S54:YES)、分析部11は、2つのカラム(C、D)の値が所定の演算を施されてカラム(X)にINSERTされて伝搬したものと分析する。したがって、分析部11は、2つのカラム(C、D)からカラム(X)へ間接的なデータ伝搬があったと推定し(S55)、次の組み合わせへと処理をループする。なお、αが同一値でない場合(S54:NO)、分析部11は、2つのカラム(C、D)からカラム(X)へ間接的なデータ伝搬があったものとは推定せず、次の組み合わせへと処理をループする。
図7は、「キー値を介して関係付く2種類のSELECT結果のカラムとINSERT値の関係推定」の処理(S11)を示すフローチャートである。図7に示すように、S11の処理が開始されると、分析部11は、画面単位ログを一つ選び、カラム(X)に挿入するINSERTより前に実行したSELECT文で検索対象となり、検索結果が1個以上であるテーブルを探す(S60)。分析部11は、S60におけるテーブルの検索により、条件に該当する複数のテーブル(テーブル群)を得る。
次いで、分析部11は、S60で得られたテーブル群の中から、異なる2個のテーブルの組み合わせを作り、片方のテーブルのカラム値がもう一方のテーブルのカラム値に含まれる関係になっているテーブル/カラム対(K1、K2)を抽出する(S61)。
次いで、分析部11は、抽出されたテーブル/カラム対(K1、K2)ごとに、S62〜S69のループ処理を実行する。ループ処理が開始されると、分析部11は、テーブル/カラム対(K1、K2)の2つのテーブルからの検索結果から、カラム対のそれぞれの値(カラム値)が同じである検索結果をそれぞれ得る(S63)。
次いで、分析部11は、2つのテーブルそれぞれから、S63で得られたカラム対(K1、K2)以外のカラム(C、Dとする)を1個ずつ選択する(S64)。
次いで、分析部11は、K1とK2で対応付く検索結果からS64で選択した2個のカラムの値(C、D)から、それぞれC1iとD1i、i=1..m、ただしmは検索結果数とし、積和値ΣC1i・D1iを計算する。また、分析部11は、INSERTでカラム(X)に挿入した値(X1)を取得する(S65)。
次いで、分析部11は、最初(S60)で選択した画面単位ログ以外の画面単位ログに対してS61〜S65と同様の処理を行い、積和値ΣC2i・D2iとINSERTでカラム(X)に挿入した値(X2)を取得する。そして、分析部11は、次の計算を行い、αの値を求める(S66)。
α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)
次いで、分析部11は、全ての動作ログ(画面単位ログ)でαが同じか否かを判定する(S67)。αが同一値である場合(S67:YES)、分析部11は、2つのカラム(C、D)の値が所定の演算を施されてカラム(X)にINSERTされて伝搬したものと分析する。したがって、分析部11は、2つのカラム(C、D)からカラム(X)へ間接的なデータ伝搬があったと推定し(S68)、次のカラム対へと処理をループする。なお、αが同一値でない場合(S67:NO)、分析部11は、2つのカラム(C、D)からカラム(X)へ間接的なデータ伝搬があったものとは推定せず、次のカラム対へと処理をループする。
図8は、「キー値を介して関係付く画面パラメータとSELECT結果のカラムとINSERT値の関係推定」の処理(S12)を示すフローチャートである。図8に示すように、S12の処理が開始されると、分析部11は、画面単位ログを一つ選び、カラム(X)に挿入するINSERTより前に実行したSELECT文で検索対象となり、検索結果が1個以上であるテーブル(テーブル群)を取得する(S70)。
次いで、分析部11は、画面パラメータから、同一回数出現するパラメータ名の組を取得し、同一回数出現するパラメータ名の組をカラム名、繰り返し毎のパラメータ値の組をSELECTの検索結果と見なす(S71)。
次いで、分析部11は、S70で取得したテーブル群と、S71で取得した画面パラメータの組を擬似的にカラム名とSELECT検索結果と見なしたものの組み合わせを作成する。そして、分析部11は、テーブルのカラム値が画面パラメータ値に含まれる関係になっているテーブル/画面パラメータ対(K1、K2)を抽出する(S72)。
分析部11は、S72で抽出されたテーブル/画面パラメータ対(K1、K2)について、「キー値を介して関係付く2種類のSELECT結果のカラムとINSERT値の関係推定」の処理(S11)におけるS64〜S68と同様の処理を行う。
図9は、実施形態にかかる分析支援装置1の動作例を示すフローチャートであり、上述したUPDATEの場合の処理の一例である。図9に示すように、画面単位の動作ログの集合を作るまでの処理(S1〜S3)は、INSERTの場合の処理(図2参照)と同様に行う。
次いで、分析部11は、作成した画面単位の動作ログの集合ごとに、S80〜S84のループ処理を実行する。ループ処理が開始されると、分析部11は、処理対象の動作ログの集合で、UPDATEを実行し、かつUPDATEの実行前にUPDATE対象のテーブルに対してSELECTを実行する組み合わせを抽出する。また、分析部11は、SELECT結果のカラム値がUPDATEで更新するカラム値と異なるカラム(X)を抽出する(S81)。
次いで、分析部11は、UPDATE対象のテーブルで、S81で抽出したカラム(X)に対して、「直接的に対応がつかない値をINSERTで挿入する場合」の処理(S7〜S12)を、INSERT値の代わりにUPDATEで更新する値に置き換えて実行する(S82)。
次いで、分析部11は、UPDATE対象のテーブルで、S81で抽出したカラム(X)に対して、「直接的に対応がつかない値をINSERTで挿入する場合」の処理(S7〜S12)を、INSERT値の代わりに(UPDATEで更新する値)−(SELECTの検索結果値)に置き換えて実行する(S83)。
上記のループ処理が終了したところで、出力部13は、ループ処理による分析部11の分析結果をディスプレイへの表示や、プリンターによる印字により出力する(S15)。
ここで、具体的な実施例を参照して分析支援装置1における分析処理を説明する。なお、以下で説明する実施例では、分析対象の業務用DBのテーブルが持つカラムは全て数値型であるものと仮定する。
図10は、業務用DB21のテーブル構成を例示する図である。図10に示すように、業務用DB21は、受注業務を指向したものであり、商品マスタテーブルT1、明細テーブルT2、受注テーブルT3および請求テーブルT4を含むものである。なお、業務用DB21において、説明で関係しないカラムについては「…」で省略している。
(カラム1個とINSERT値の関係推定について)
図11は、動作ログ(D11、D12、D13)の一例を説明する説明図である。図11に示すように、分析対象の業務システム2から取得した動作ログがD11、D12、D13の内容(値)であったものとする。なお、動作ログD11、D12、D13は時系列に出力されると仮定し、画面パラメータとSQLの実行ごとに実行順(seq)が割り当てられるものとする(実行した時刻を用いてもよい)。
図12は、データテーブル(T11、T12、T13)の一例を説明する説明図である。図12に示すように、データテーブルT11は、動作ログD11、D12、D13から画面パラメータごとにID(urlNo)と、実行したURLと、seqをまとめたものである。また、データテーブルT12は、同様に、SQLごとにID(sqlNo)、実行したSQL、そのときのバインド値と検索結果、SQLに対応する画面パラメータのID、seqをまとめたものである。データテーブルT13はカラムの集合(SetC)である。
データテーブルT11より、本実施例では、画面は全て同じであり、実行されたSQL(SELECT1個、INSERT1個)もバインド値を除くと同一であるので、これらはSQLが同一な画面単位の動作ログの集合になっている。
これらに対して、公知の方法でINSERTするテーブルのカラムとそれに先立つSELECTの対応付けを行うと、先行するSELECTの検索結果の伝票番号カラムの値が、後続のINSERTの伝票番号の値と常に一致することが検出できる。このため、分析支援装置1は、S5において、受注テーブルT3の伝票番号カラムから、請求テーブルT4の伝票番号カラムへ直接的なデータ伝搬があると推定する。
上記で関係付かなかった請求テーブルT4の請求額カラムに関して、INSERT以前に実行されたSELECT結果に含まれるカラム集合SetCは(伝票番号、税抜き額、顧客ID)である。分析支援装置1の分析部11は、これらの集合SetCごとに、S4〜S14のループ処理を行って間接的なデータ伝搬についての分析を行う。
まず、伝票番号カラムと請求額カラムに伝搬関係があるかを調べる。データテーブルT12のseqNo=1のデータから、伝票番号=101、請求額=25340である。よって、c1Val=101、x1Val=25340である。次に、seqNo=2のデータから同様に、c2Val=102、x2Val=4928である。これらからαの値を求めると、α=(25340−4928)/(101−102)=−20412となる。
同様に、seqNo=3のデータから、c2Val=103、x2Val=1580である。これらからαの値を求めると、α=(25340−1580)/(101−103)=−11880となる。よって、αが一定ではないので、この組み合わせは伝搬の関係になっていないことが分かる。
次に、税抜き額カラムと請求額カラムに伝搬関係があるかを調べる。「動作ログ1」から、税抜き額=c1Val=23000、請求額=x1Val=25340である。次に、「動作ログ2」からc2Val=4100、x2Val=4928である。これらからαの値を求めると、α=(25340−4928)/(23000−4100)=1.08となる。
同様に、「動作ログ3」から、c2Val=1000、x2Val=1580である。これらからαの値を求めると、α=(25340−1580)/(23000−1000)=1.08となる。よって、αが一定であり、β=x1Val−α・c1Val=500である。以上より、この組み合わせは間接的な伝搬関係があり、税抜き額*1.08+500=請求額であると推定できる。
なお、顧客IDカラムと請求額カラムの組み合わせでは、「動作ログ1」から、顧客ID=c1Val=2001、請求額=x1Val=25340である。次に、「動作ログ2」からc2Val=1507、x2Val=4928である。これらからαの値を求めると、α=(25340−4928)/(2001−1507)=41.3となる。同様に、「動作ログ3」からc2Val=3900、x2Val=1580である。これらからαの値を求めると、α=(25340−1580)/(2001−3900)=−12.5となる。よって、αが一定ではないので、この組み合わせは伝搬の関係になっていないことが分かる。
(画面パラメータ1個とINSERT値の関係推定について)
図13は、動作ログ(D21、D22、D23)の一例を説明する説明図である。図13に示すように、分析対象の業務システム2から取得した動作ログがD21、D22、D23の内容(値)であったものとする。
図14は、データテーブル(T21、T22、T23)の一例を説明する説明図である。図14に示すように、データテーブルT21は、動作ログD21、D22、D23から画面パラメータごとにID(urlNo)と、実行したURLと、seqをまとめたものである。また、データテーブルT22は、同様に、SQLごとにID(sqlNo)、実行したSQL、そのときのバインド値と検索結果、SQLに対応する画面パラメータのID、seqをまとめたものである。データテーブルT23はカラムの集合(SetC)である。具体的には、動作ログD21、D22、D23のURLからHTTPパラメータを抽出した集合SetCは(ORDER,PRICE)である。
まず、画面パラメータORDERと請求額カラムに伝搬関係があるかを調べる。具体的には、データテーブルT21のurlNo=1から、ORDER=c1Val=101、請求額=x1Val=25340である。次に、データテーブルT21のurlNo=2からc2Val=102、x2Val=4928である。これらからαの値を求めると、α=(25340−4928)/(101−102)=−20412となる。同様に、urlNo=3からc2Val=103、x2Val=1580である。これらからαの値を求めると、α=(25340−1580)/(101−103)=−11880となる。よって、αが一定ではないので、この組み合わせは伝搬の関係になっていないことが分かる。
次に、画面パラメータPRICEと請求額カラムに伝搬関係があるかを調べる。urlNo=1から、PRICE=c1Val=23000、請求額=x1Val=25340である。次に、urlNo=2からc2Val=4100、x2Val=4928である。これらからαの値を求めると、α=(25340−4928)/(23000−4100)=1.08となる。
同様に、urlNo=3からc2Val=1000、x2Val=1580である。これらからαの値を求めると、α=(25340−1580)/(23000−1000)=1.08となる。よって、αが一定であり、β=x1Val−α・c1Val=500である。以上より、この組み合わせは間接的な伝搬関係があり、PRICE*1.08+500=請求額であると推定できる。
(画面パラメータが持つ複数の繰り返しパラメータとINSERT値の関係推定について)
図15は、動作ログ(D31、D32、D33)の一例を説明する説明図である。図15に示すように、分析対象の業務システム2から取得した動作ログがD31、D32、D33の内容(値)であったものとする。
図16は、データテーブル(T31、T32、T33)の一例を説明する説明図である。図16に示すように、データテーブルT31は、動作ログD31、D32、D33から画面パラメータごとにID(urlNo)と、実行したURLと、seqをまとめたものである。また、データテーブルT32は、同様に、SQLごとにID(sqlNo)、実行したSQL、そのときのバインド値と検索結果、SQLに対応する画面パラメータのID、seqをまとめたものである。
画面パラメータの変数名(例えばCODE−1)は非数値(例えばCODE−)の後に数値(例えば1)が連結された文字列から構成されていると仮定し、非数値文字列と数値文字列に分離する。そして、同じ数値文字列ごとに組を構成することにより、動作ログD31のURLの値から、データテーブルT33に示すパラメータの組を作る。具体的には、パラメータ名2個の組は(CODE−、UNITPRICE−)、(CODE−、QTY−)、(UNITPRICE−、QTY−)である。分析部11は、INSERTで挿入する税抜き額と間接的な伝搬関係があるかを以下の処理で推定する。
組(CODE−、UNITPRICE−)の場合、データテーブルT33のurlNo=1からパラメータ2個の値はC=(123、130)、D=(1000、1500)である。よって、積和値はΣC1i・D1i=123*1000+130*1500=318000であり、X1=23000である。
urlNo=2で同様に計算すると、積和値ΣC2j・D2j=3280000、X2=4100である。よって、αの値を求めると、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)=(23000−4100)/(318000−3280000)=−6.4*10−3である。
urlNo=3で同様に計算するとα=(23000−1580)/(318000−60100)=8.3*10−2である。よって、αが互いに異なるため、この組み合わせではデータ伝搬していないと判断する。
同様に、組(CODE−、QTY−)の場合、データテーブルT33のurlNo=1から積和値ΣC1i・D1i=123*20+130*2=2720、X1=23000である。urlNo=2で同様に計算すると、積和値ΣC2j・D2j=800、X2=4100である。よって、αの値を求めると、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)=(23000−4100)/(2720−800)=9.8である。
urlNo=3で同様に計算するとα=(23000−1580)/(2720−8005)=−4.1である。よって、αが互いに異なるため、この組み合わせではデータ伝搬していないと判断する。
同様に、組(UNITPRICE−、QTY−)の場合、データテーブルT33のurlNo=1から積和値ΣC1i・D1i=1000*20+1500*2=23000、X1=23000である。urlNo=2で同様に計算すると、積和値ΣC2j・D2j=4100、X2=4100である。よって、αの値を求めると、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)=(23000−4100)/(23000−4100)=1である。
urlNo=3で同様に計算するとα=(23000−1580)/(23000−1580)=1である。よって、αが一致するため、UNITPRICE−*とQTY−*から受注テーブルT3の税抜き額カラムに間接的な伝搬関係があると推定する。
(SELECT結果の2つのカラムとINSERT値の関係推定について)
図17は、動作ログ(D41、D42、D43)の一例を説明する説明図である。図17に示すように、分析対象の業務システム2から取得した動作ログがD41、D42、D43の内容(値)であったものとする。
図18は、データテーブル(T41、T42、T43)の一例を説明する説明図である。図18に示すように、データテーブルT41は、動作ログD41、D42、D43から画面パラメータごとにID(urlNo)と、実行したURLと、seqをまとめたものである。また、データテーブルT43は、同様に、SQLごとにID(sqlNo)、実行したSQL、そのときのバインド値と検索結果、SQLに対応する画面パラメータのID、seqをまとめたものである。また、データテーブルT42は、INSERTに先立つSELECTで検索した明細テーブルT2のカラム(明細ID、伝票番号、商品ID、税抜き単価、数量)をまとめたものである。
分析部11は、INSERTに先立つSELECTで検索した明細テーブルT2のカラム(明細ID、伝票番号、商品ID、税抜き単価、数量)から2つ取出して組を作り、INSERTで挿入する税抜き額と間接的な伝搬関係があるかを以下の処理で推定する。
例えば、組(商品ID、税抜き単価)の場合、データテーブルT42のurlNo=1からカラム2個の値はC=(123、130)、D=(1000、1500)である。よって、積和値ΣC1i・D1i=123*1000+130*1500=318000であり、X1=23000である。
urlNo=2で同様に計算すると、積和値ΣC2j・D2j=3280000、X2=4100である。よってαの値を求めると、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)=(23000−4100)/(318000−3280000)=−6.4*10−3である。
urlNo=3で同様に計算するとα=(23000−1580)/(318000−60100)=8.3*10−2である。よって、αが互いに異なるため、この組み合わせではデータ伝搬していないと判断する。
同様に(税抜き単価、数量)の場合、データテーブルT42のurlNo=1から積和値ΣC1i・D1i=1000*20+1500*2=23000、X1=23000である。urlNo=2で同様に計算すると、積和値ΣC2j・D2j=4100、X2=4100である。よって、αの値を求めると、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)=(23000−4100)/(23000−4100)=1である。
urlNo=3で同様に計算するとα=(23000−1580)/(23000−1580)=1である。よって、αが一致するため、明細テーブルT2の税抜き単価カラムと数量カラムから受注テーブルT3の税抜き額カラムには間接的な伝搬関係があると推定する。
(キー値を介して関係付く2種類のSELECT結果のカラムとINSERT値の関係推定について)
図19は、動作ログ(D51、D52、D53)の一例を説明する説明図である。図19に示すように、分析対象の業務システム2から取得した動作ログがD51、D52、D53の内容(値)であったものとする。
図20は、データテーブル(T51、T52、T53、T54)の一例を説明する説明図である。図20に示すように、データテーブルT51は、動作ログD51、D52、D53から画面パラメータごとにID(urlNo)と、実行したURLと、seqをまとめたものである。また、データテーブルT52は、同様に、SQLごとにID(sqlNo)、実行したSQL、そのときのバインド値と検索結果、SQLに対応する画面パラメータのID、seqをまとめたものである。
INSERTで挿入する受注テーブルT3の税抜き額カラムをカラムXとするとき、本実施例の動作ログD51、D52、D53では、INSERTに先立つSELECTはそれぞれの画面単位ログで2種類実行される。この2種類のものについて、データテーブルT53は、明細テーブルT2からの検索結果をまとめたものである。また、データテーブルT54は、商品マスタテーブルT1からの検索結果をまとめたものである。
分析部11は、データテーブルT53およびデータテーブルT54から、それぞれカラムを1個ずつ選択し、片方のカラム値がもう片方のカラム値を含んでいるものを探す。これにより、分析部11は、データテーブルT53の商品IDとデータテーブルT54の商品IDがカラム対(K1、K2)に該当することを検出できる。よって、分析部11は、データテーブルT53およびデータテーブルT54からカラム対(K1、K2)以外のカラムを1個ずつ選択する。
カラムCとして商品マスタテーブルT1の税抜き単価を、カラムDとして明細テーブルT2の数量を選択した場合、urlNo=1で商品IDが同じ値の対を使って積和値を求めると、ΣC1i・D1i=1000*20+1500*2=23000である。また、この場合にはX1=23000である。
urlNo=2で同様に計算すると、積和値ΣC2j・D2j=4100、X2=4100である。よって、αの値を求めると、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)=(23000−4100)/(23000−4100)=1である。
urlNo=3で同様に計算するとα=(23000−1580)/(23000−1580)=1である。よって、αが一致するため、商品マスタテーブルT1の税抜き単価カラムと明細テーブルT2の数量カラムが、それぞれの商品IDカラムをキーとして、受注テーブルT3の税抜き額カラムに対して間接的な伝搬関係があると推定する。
(キー値を介して関係付く画面パラメータとSELECT結果のカラムとINSERT値の関係推定について)
図21は、動作ログ(D61、D62、D63)の一例を説明する説明図である。図21に示すように、分析対象の業務システム2から取得した動作ログがD61、D62、D63の内容(値)であったものとする。
図22は、データテーブル(T61、T62、T63、T64)の一例を説明する説明図である。図22に示すように、データテーブルT61は、動作ログD61、D62、D63から画面パラメータごとにID(urlNo)と、実行したURLと、seqをまとめたものである。また、データテーブルT62は、同様に、SQLごとにID(sqlNo)、実行したSQL、そのときのバインド値と検索結果、SQLに対応する画面パラメータのID、seqをまとめたものである。
本実施例の画面パラメータには、「画面パラメータが持つ複数の繰り返しパラメータとINSERT値の関係推定について」に示したように2種類のパラメータの繰り返しがある(例えばCODE−*とQTY−*)。データテーブルT63は、抽出した繰り返しの値をまとめたものである。また、INSERTで挿入する受注テーブルT3の税抜き額カラムをカラムXとするとき、本実施例の動作ログでは、INSERTに先立つSELECTはそれぞれの画面単位ログで1種類実行される。データテーブルT64は、商品マスタテーブルT1からの検索結果をまとめたものである。
分析部11は、データテーブルT63およびデータテーブルT64からそれぞれカラムを1個ずつ選択し、片方のカラム値がもう片方のカラム値を含んでいるものを探す。これにより、分析部11は、データテーブルT63のCODE−と、データテーブルT64の商品IDがカラム対(K1、K2)に該当することを検出できる。よって、分析部11は、データテーブルT63およびデータテーブルT64からカラム対(K1、K2)以外のカラムを1個ずつ選択する。
カラムCとして商品マスタテーブルT1の税抜き単価を、カラムDとして画面パラメータのQTY−を選択した場合、urlNo=1で商品IDとCODE−が同じ値の対を使って積和値を求めると、ΣC1i・D1i=1000*20+1500*2=23000である。また、この場合にはX1=23000である。
urlNo=2で同様に計算すると、積和値ΣC2j・D2j=4100、X2=4100である。よって、αの値を求めると、α=(X1−X2)/(ΣC1i・D1i−ΣC2j・D2j)=(23000−4100)/(23000−4100)=1である。
urlNo=3で同様に計算するとα=(23000−1580)/(23000−1580)=1である。よって、αが一致するため、商品マスタテーブルT1の税抜き単価カラムと画面パラメータのQTY−*が、それぞれの商品IDカラム、CODE−*をキーとして、受注テーブルT3の税抜き額カラムに対して間接的な伝搬関係があると推定する。
(直接的に対応がつかない値をUPDATEで更新する場合の関係推定について)
図23は、動作ログ(D71、D72、D73)の一例を説明する説明図である。図23に示すように、分析対象の業務システム2から取得した動作ログがD71、D72、D73の内容(値)であったものとする。
図24は、データテーブル(T71、T72、T73)の一例を説明する説明図である。図24に示すように、データテーブルT71は、動作ログD71、D72、D73から画面パラメータごとにID(urlNo)と、実行したURLと、seqをまとめたものである。また、データテーブルT72は、同様に、SQLごとにID(sqlNo)、実行したSQL、そのときのバインド値と検索結果、SQLに対応する画面パラメータのID、seqをまとめたものである。データテーブルT73は、請求額の更新値と請求額の差分とをまとめたものである。
請求テーブルT4の請求額カラムをカラムXとするとき、INSERT以前に実行されたSELECT結果に含まれるカラム集合SetCは受注テーブルの伝票番号、税抜き額、顧客IDと請求テーブルの伝票番号である。
「カラム1個との対応付け」に関し、税抜き額カラムと請求額カラムに伝搬関係があるかを調べる場合を例示する。まず、UPDATEで更新する値そのものをカラムXの値として処理する。
「動作ログ1」から、税抜き額=c1Val=23000、請求額=x1Val=25340である。次に、「動作ログ2」からc2Val=4100、x2Val=5428である。これらからα=(25340−5428)/(23000−4100)=1.05となる。同様に、「動作ログ3」からc2Val=1000、x2Val=2580である。これらからαの値を求めると、α=(25340−2580)/(23000−1000)=1.03となり、αは一定ではない。
次に、UPDATEに先立ち実行されたSELECTの検索結果との差分値(データテーブルT73の請求額の差分)を用いて処理する。「動作ログ1」から、税抜き額=c1Val=23000、請求額の差分=x1Val=24840である。
次に、「動作ログ2」からc2Val=4100、x2Val=4428である。これらからαの値を求めると、α=(24840−4428)/(23000−4100)=1.08となる。
同様に、「動作ログ3」からc2Val=1000、x2Val=1080である。これらからαの値を求めると、α=(24840−1080)/(23000−1000)=1.08となる。よって、αが一定であり、β=x1Val−α・c1Val=0である。以上より、この組み合わせは間接的な伝搬関係があり、税抜き額*1.08=請求額の更新値であると推定する。
上記の実施例では「カラム1個との対応付け」の処理を行う場合を例示したが、他の場合も同様に行うことで、UPDATEの更新値ないし更新値の差分と間接的なデータ伝搬の関係にあるかを推定することができる。
図25は、表示画面Gの一例を説明する説明図である。図25に示すように、出力部13は、分析部11の分析結果をディスプレイの表示画面Gに表示する。具体的には、出力部13は、表示画面G上に業務用DB21のカラムおよび画面パラメータ内の変数値を列挙したテーブル・カラム画像G1〜G5を表示する。そして、出力部13は、分析部11の分析結果に基づいて、対応関係のあるカラムや変数値同士を線で結びつけた接続関係表示G11、G12を行う。
例えば、直接的なデータ伝搬があるものと分析されたカラムや変数値同士は実線などの接続関係表示G11とする。また、間接的なデータ伝搬があるものと分析されたカラムや変数値同士は破線などの接続関係表示G12とする。これにより、ユーザは、直接的なデータ伝搬があるものと分析された分析結果と、間接的なデータ伝搬があるものと分析された分析結果とを容易に識別できる。
以上のように、分析支援装置1は、画面パラメータ、バインド変数値等の入力パラメータと、この入力パラメータに基づいて業務用DBからのデータの読み出しおよび業務用DBへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得する。そして、分析支援装置1は、取得された複数の動作ログの中の、業務用DBの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、入力パラメータに含まれる値またはアクセス記録において業務用DBから読み出された値と、アクセス記録において業務用DBへ書き込みを行った値と組み合わせて所定の演算を行う。分析支援装置1は、この演算結果(α)が一定である場合に、カラムにデータの伝搬があるものと分析し、伝搬があると分析されたカラムを出力する。このため、分析支援装置1は、例えば、業務用DBより読み出した値をメソッド内で演算し、演算後の値を別のカラムに書き込むような間接的に関係性のあるデータ伝搬についても把握することができる。また、分析支援装置1は、業務システム2がDBアクセスデータ20として収集した動作ログを取得する構成である。これにより、例えば、保守開発の上流工程で業務システム2の業務用DB周りのデータ伝搬を把握でき、システム変更の現行システムへの影響をより調査しやすくなる利点がある。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、分析部11、記憶部12または出力部13を分析支援装置1の外部装置としてネットワークで接続するようにしてもよい。また、分析部11、記憶部12または出力部13を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の分析支援装置1の機能を実現するようにしてもよい。
また、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図26を用いて、上記の実施形態と同様の機能を有する分析支援プログラムを実行するコンピュータの一例について説明する。
図26は、分析支援プログラム270aを実行するコンピュータ200の一例を説明する説明図である。図26に示すように、コンピュータ200は、操作部210aと、スピーカ210bと、カメラ210cと、ディスプレイ220と、通信部230とを有する。さらに、このコンピュータ200は、CPU250と、ROM260と、HDD270と、RAM280とを有する。これら210〜280の各部はバス240を介して接続される。
HDD270には、上記の実施形態で示した分析部11、記憶部12および出力部13と同様の機能を発揮する分析支援プログラム270aが予め記憶される。この分析支援プログラム270aについては、分析部11、記憶部12および出力部13の各構成要素と同様、適宜統合または分離してもよい。例えば、HDD270に格納されるデータは、常に全てのデータがHDD270に格納される必要はなく、処理に必要なデータのみがHDD270に格納されればよい。
コンピュータ200では、CPU250が分析支援プログラム270aをHDD270から読み出してRAM280に展開する。これによって、分析支援プログラム270aは、分析支援プロセス280aとして機能する。この分析支援プロセス280aは、HDD270から読み出した各種データを適宜RAM280上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、分析支援プロセス280aは、分析部11、記憶部12および出力部13にて実行される処理を含む。また、CPU250上で仮想的に実現される各処理部は、常に全ての処理部がCPU250上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されればよい。
なお、上記の分析支援プログラム270aについては、必ずしも最初からHDD270やROM260に記憶させておく必要はない。例えば、コンピュータ200に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ200がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ200に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ200がこれらから各プログラムを取得して実行するようにしてもよい。
(別実施形態)
上述した実施形態の別実施形態を説明する。業務システム2では、受注業務を例にとると、画面で1つの受注に含まれる複数の明細項目が入力され、組ごとに処理が行われることがある。例えば、画面からは明細項目として商品コードと、受注数量の組とを幾つか入力し、その入力データを用いて明細ごとの商品コードと受注数量の値を明細テーブルに書き込む。また同時に、明細単位の合計金額を計算した値なども明細テーブルに書き込む場合がある。また、受注伝票自体を用いて受注テーブルを更新する。
画面からの入力をきっかけにして実行されるSQLは、受注伝票自体の処理と明細ごとに繰り返される処理の2種類が混在して実行される。よって、上述した実施形態では、データの対応関係を推定することが困難な場合がある。
図28は、受注業務におけるデータ伝搬の一例を説明する説明図である。図29は、データ伝搬の検出に失敗した場合を説明する説明図である。図28において、動作ログD81は、受注業務における画面入力(HTTP)のログである。また、動作ログD82は、画面入力をきっかけにして実行されるSQLのログである。また、商品マスタテーブルT1、明細テーブルT2、受注テーブルT3およびメッセージ画面パラメータテーブルT5は、受注業務にかかるデータテーブルを示し、テーブル間の実線・破線はテーブルにおける項目同士のデータ伝搬を示す。なお、実線は直接的なデータ伝搬を示し、破線は間接的なデータ伝搬を示す。図29の例では、明細テーブルT2へのデータ伝搬関係の検出に失敗している。
図28に示すように、受注業務における動作ログD81、D82では、受注テーブルT3へのデータ伝搬関係と、明細テーブルT2へのデータ伝搬関係とが存在する。動作ログD81、D82の例では、2つの明細に関するSQLが実行されたが、例えば、明細テーブルT2の受注数量カラムに「10」を挿入するSQLに対し、画面パラメータテーブルT5の受注数量は、「10」と「21」の異なる2つの値に対応する。したがって、上述した実施形態では、対応関係を推定することが困難であり、図29に示すように、明細テーブルT2へのデータ伝搬関係の検出に失敗する。
このため、別実施形態では、分析部11は、一画面からの入力がきっかけで発生した画面単位の動作ログ(画面単位ログ)ごとにキーとするカラムないし画面のパラメータのキー候補を取得する。次いで、分析部11は、キー候補を有するカラム(キーカラム候補)ごとに、画面パラメータ、バインド変数値等の入力パラメータに含まれる値またはデータの書き込みを行ったアクセス記録において業務用DB21から読み出された値と、アクセス記録において業務用DB21へ書き込みを行った値を組み合わせ、上述した実施形態と同様に所定の演算を行う。これにより、別実施形態では、上述した実施形態ではデータの対応関係を推定することが困難な事例(例えば明細ごとのデータ伝搬)であっても、データ伝搬を推定することができる。
以下に別実施形態を詳細に説明する。なお、以下の別実施形態では、分析対象の業務システム2で実行するアプリケーションはオンライン実行であり、ある画面から入力した値を用いて業務アプリの内部処理が実行され、かつ画面単位でステートレスであるという前提で説明する。ただし、この前提は一例であり、バッチ処理などでも適用可能である。また、SQL文はバインド変数を用いて記述されていることを前提とするが、変数値が埋め込まれているSQLからバインド変数に相当する部分を抽出してSQLとバインド変数、バインド変数値に変換することは可能である。
動作ログ取得部10は、分析対象の業務システム2における所定のログファイルへアクセスするなどして、端末装置の一画面からの入力がきっかけで発生した業務処理における動作ログ一式(画面単位ログ)を収集する。具体的には、動作ログ取得部10は、画面で入力し業務アプリに入力されるHTTPパラメータ(画面パラメータ)と、その画面がきっかけで実行される一連のSQLログ(SQL文、入力パラメータ(バインド変数値)、SELECT文の場合は加えて検索結果)とそれらの実行順を判断可能な情報(時刻など)を収集する。
分析部11は、動作ログ取得部10が取得した画面単位ログごとに、明細を区別する値(キー値)と、そのキー値を有する画面パラメータないしカラムを画面単位ログから検索する。ここで、キー値およびキー値を有する画面パラメータ名やカラム名は不明であるため、分析部11は、まずデータ遷移先テーブル(SQLのうちINSERTないしUPDATE文が扱うテーブル)に出現する値をキー値と仮定し、キーとするカラムの候補を生成する。
次に、分析部11は、同じキー値を持つSQLをグループとし、グループに属するSQLと、画面パラメータとで上述した実施形態と同様の演算を行い、データ伝搬(直接的なデータ伝搬および間接的なデータ伝搬)の検出を行う。
具体的には、分析部11は、次の(1)〜(3)の計算を実行する。
(1)データ遷移先のキー値の候補と同じ値をデータ遷移元から検索し、キーとするカラムないし画面パラメータの候補を生成する。
(2)キー候補が同じSQLをグループ化する。
(3)上記のSQLのグループを対象にして、上述した実施形態と同様の演算を行い、データ伝搬の検出を行う。
図30は、別実施形態にかかる分析支援装置1の動作例を示すフローチャートである。なお、上述した実施形態と同様の処理については同一の符号を付して説明を省略する。
図30に示すように、分析部11は、作成した画面単位ログの集合ごとに、S4a〜S14aの第1ループ処理を実行する。具体的には、分析部11は、第1ループ処理が開始されると、画面単位ログごとに、キー値の候補を取得する(S100)。キー値の候補は、画面単位ログに含まれるINSERTないしUPDATEで設定される値と、UPDATEのWHERE句に出現する値などである。
次いで、分析部11は、候補とするキー値ごとに、キー値を有するSQL列(文)を作る(S101)。ここでいうSQL列は、画面単位ログのSQL列のうち、キー値を含むINSERTないしUPDATEを1つと、その1つのINSERTないしUPDATE以前に実行されたキーとをWHERE節にもつSELECT(0個以上)とを有する。
次いで、分析部11は、S101で作ったSQL列のうち、INSERTないしUPDATEでキー値を持つカラム名(キーカラム候補)を作る(S102)。具体的には、分析部11は、S101で作ったSQL列において、INSERTないしUPDATEされるテーブル/カラム(データ伝搬先)を探し、キーカラム候補を作る。
次いで、分析部11は、S100、S101、S102の結果をもとに、キー値の候補、SQL列、キーカラム候補を有する一覧を作る(S103)。次いで、分析部11は、S103で作成した一覧をもとに、キーカラム候補ごとに、S104〜S109の第2ループ処理を実行する。
第2ループ処理が開始されると、分析部11は、キーカラム候補に対応するSQL(列)を対象として上述した実施形態と同様の演算を行い、データ伝搬の検出を行う(S105)。これにより、分析部11は、テーブルからのデータ伝搬を検出する。
次いで、分析部11は、キー値が画面パラメータの何番目(K)かを求める(S106)。具体的には、分析部11は、画面パラメータ名の一部が共通するグループ(例えば、「code−1」、「code−2」、「code−3」の場合は「code−」が共通)を対象として、グループの値にキー値を1つ持ち、他のグループの値全てが異なるグループを探す。そして、分析部11は、探し出したグループにおいて、キー値が何番目かを求める(K番目とする)。
次いで、分析部11は、K番目の画面パラメータを取り出す(S107)。具体的には、S106におけるグループとキー値が同じ個数の別グループを探し、K番目のパラメータを取り出す(キー値に対応する画面パラメータ一式とする)。ただし、パラメータ名には共通の文字列(例えば、「code−1」、「code−2」、「code−3」の場合は「code−」)を用いる。
次いで、分析部11は、キー値に対応してS107で取り出したK番目の画面パラメータと、同じキー値に対応するSQL列とを組み合わせて上述した実施形態と同様の演算を行い、データ伝搬の検出を行う(S108)。これにより、分析部11は、画面パラメータからのデータ伝搬を検出する。
ここで、より具体的な具体例を参照して分析支援装置1の別実施形態を説明する。なお、以下で説明する具体例では、分析対象の業務用DB21のテーブルが持つカラムは全て数値型であるものと仮定する。ただし、文字列型カラムに数値が入っている場合でも、文字列を適切に変換処理して数値として扱うことで、数値型と同様に処理できる。
図31は、動作ログの一例を説明する説明図である。図31に示すように、動作ログD91、D92は、URLで示した画面操作がきっかけで実行されたSQLの実行文(SQLとバインド値、SELECTの場合は検索で得られた値も含む)を有する。なお、動作ログD91、D92は、画面操作がきっかけで同じ種類のSQL文を実行する(例えば、バインド値が異なるものの、実行するSELECT文とINSERT文が同じ)ため、同じ画面単位ログの集合に属する。
S100において、分析部11は、動作ログD91、D92ごとに、キー値の候補を取得する。図32は、データテーブルの一例を説明する説明図である。より具体的には、図32は、動作ログD91、D92ごとにキー値候補を取得して得られたデータテーブルT81を例示している。
図32に示すように、分析部11は、画面単位ログ(動作ログD91、D92)ごとに、INSERT文で設定される値をキー値候補として取得する。なお、本例では、UPDATEを実行しなかったので、UPDATEで設定される値とWHERE句の出現する値は取得されていない。
次いで、分析部11は、S103において、画面単位ログのキー値候補、キー値候補を含むSQL列およびINSERTないしUPDATEでキー値を持つキーカラム候補の一覧を作る。
図33は、データテーブルの一例を説明する説明図である。より具体的には、図33は、動作ログD91におけるキーカラム候補の一覧を示すデータテーブルT82aと、動作ログD92におけるキーカラム候補の一覧を示すデータテーブルT82bを例示する図である。
図33のデータテーブルT82aに示すように、例えば、動作ログD91でキー値候補「001」を持つINSERT文とWHERE節にキー値を持つSERECT文は(SQL1,SQL3)であり、INSERT文でキー値候補「001」が出現するカラムは「明細.商品コード」である。
図34は、データテーブルの一例を説明する説明図であり、より具体的には、図33のデータテーブルT82a、T82bを用い、キーカラム候補ごとのSQL列一覧を示すデータテーブルT83を例示する図である。図34に示すように、分析部11は、データテーブルT83のキーカラム候補ごとに、キーカラム候補に対応するSQL列を用いて上述した実施形態と同様の演算を行い、データ伝搬の検出を行う。
図示例では、キーカラム候補のうち「明細.商品コード」以外はINSERTしか存在しないので、データ伝搬は発生していない。一方、キーカラム候補が「明細.商品コード」の場合は、それぞれのSQL列がSELECTとINSERTの組み合わせになっており、データ伝搬が検出される。
図35は、データ伝搬の検出を説明する説明図である。具体的には、図35に示すように、「商品マスタ.商品コード」→「明細.商品コード」へのデータ伝搬が検出され、商品マスタテーブルT1と明細テーブルT2とのデータ伝搬関係が検出される。
次に、分析部11は、画面パラメータ名の一部が共通するグループを作る。図36は、データテーブルの一例を説明する説明図であり、より具体的には、動作ログD91、D92より画面パラメータ名の一部が共通するグループを作成して得られるデータテーブルT84を例示する図である。本例では、「商品コード−1、商品コード−2」の「商品コード−」と、「受注数量−1、受注数量−2」の「受注数量−」とが該当し、図36に示すように、データテーブルT84が得られる。
次に、分析部11は、キーカラム候補ごとに、キー値が画面パラメータに含まれるか否かを調べ、含まれる場合はキー値が上記のグループの何番目(K)を取得する。
図37は、データテーブルの一例を説明する説明図であり、より具体的には、キーカラム候補ごとに、キー値が画面パラメータに含まれるか否かを調べて得られるデータテーブルT85を例示する図である。図37に示すように、例えば、「動作ログ1」においてキーカラム候補「明細.商品コード」のキー値「020」は、「商品コード−」の2番目の値(K=2)に存在する。「商品コード−」以外のグループの2番目の値(本例では「受注数量−」)である「21」と合わせた値「商品コード−=020&受注数量−=21」が画面パラメータとして得られる。なお、キーカラム候補「明細.商品コード」の他の動作ログおよびキー値も同様に画面パラメータが得られる。
図38は、データテーブルの一例を説明する説明図であり、より具体的には、対応する画面パラメータが存在する動作ログ、キー値、画面パラメータ、SQLの組み合わせを有するデータテーブルT86を例示する図である。分析部11は、データテーブルT85をもとに、図38に示すデータテーブルT86を得る。分析部11は、このデータテーブルT86を用いて上述した実施形態と同様の演算を行い、データ伝搬の検出を行う。
図39は、データ伝搬の検出を説明する説明図である。具体的には、図39に示すように、データテーブルT86を用いてデータ伝搬の検出を行うと次の関係が検出される。
「商品マスタ.商品コード」→「明細.商品コード」
「(画面)商品コード−」→「明細.商品コード」
「(画面)受注数量−」→「明細.受注数量」
「(画面)受注数量−*商品マスタ.単価」→「明細.合計金額」
これにより、商品マスタテーブルT1、明細テーブルT2および画面パラメータテーブルT5のデータ伝搬関係が検出される。よって、別実施形態では、図29においてデータ伝搬関係の検出に失敗した箇所のデータ伝搬関係も検出することができる。
1…分析支援装置
2…業務システム
10…動作ログ取得部
11…分析部
12…記憶部
13…出力部
20…DBアクセスデータ
21…業務用DB
200…コンピュータ
T1…商品マスタテーブル
T2…明細テーブル
T3…受注テーブル
T4…請求テーブル
T11〜T86…データテーブル
D11〜D92…動作ログ
G…表示画面
G1〜G5…テーブル・カラム画像
G11、G12…接続関係表示

Claims (6)

  1. コンピュータが、
    入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよび前記データベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得し、
    前記取得された複数の動作ログの中の、前記データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、前記カラムにデータの伝搬があるものと分析し、
    前記伝搬があると分析されたカラムを出力する
    処理を実行することを特徴とする分析支援方法。
  2. 前記分析する処理は、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせた、積算、加算または積和の演算にかかる係数が一定である場合に、前記カラムにデータの伝搬があるものと分析する
    ことを特徴とする請求項1に記載の分析支援方法。
  3. 前記分析する処理は、前記データベースの所定のカラムにかかる更新については、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値との差分が一定である場合に、前記カラムにデータの伝搬があるものと分析する
    ことを特徴とする請求項1または2に記載の分析支援方法。
  4. 前記分析する処理は、一画面からの入力がきっかけで発生した画面単位の動作ログごとにキーとするカラムないし画面のパラメータのキー候補を取得し、当該キー候補を有するカラムごとに、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値とを組み合わせて前記所定の演算を行う
    ことを特徴とする請求項1乃至3のいずれか一項に記載の分析支援方法。
  5. コンピュータに、
    入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよび前記データベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得し、
    前記取得された複数の動作ログの中の、前記データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、前記カラムにデータの伝搬があるものと分析し、
    前記データの伝搬があると分析されたカラムを出力する
    処理を実行させることを特徴とする分析支援プログラム。
  6. 入力パラメータと、当該入力パラメータに基づいてデータベースからのデータの読み出しおよび前記データベースへのデータの書き込みの内の少なくともデータの書き込みを行ったアクセス記録とを含む動作ログを複数取得する取得部と、
    前記取得された複数の動作ログの中の、前記データベースの所定のカラムにかかるアクセス記録を含む動作ログの各々おいて、前記入力パラメータに含まれる値または前記アクセス記録において前記データベースから読み出された値と、前記アクセス記録において前記データベースへ書き込みを行った値と組み合わせて所定の演算を行った演算結果が一定である場合に、前記カラムにデータの伝搬があるものと分析する分析部と、
    前記データの伝搬があると分析されたカラムを出力する出力部と
    を有することを特徴とする分析支援装置。
JP2016076077A 2015-06-04 2016-04-05 分析支援方法、分析支援プログラムおよび分析支援装置 Active JP6634938B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2015114264 2015-06-04
JP2015114264 2015-06-04

Publications (2)

Publication Number Publication Date
JP2017004500A true JP2017004500A (ja) 2017-01-05
JP6634938B2 JP6634938B2 (ja) 2020-01-22

Family

ID=57752827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016076077A Active JP6634938B2 (ja) 2015-06-04 2016-04-05 分析支援方法、分析支援プログラムおよび分析支援装置

Country Status (1)

Country Link
JP (1) JP6634938B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108307235A (zh) * 2018-01-18 2018-07-20 晶晨半导体(上海)股份有限公司 一种屏幕参数配置系统
WO2020245952A1 (ja) * 2019-06-05 2020-12-10 富士通株式会社 ログ取得プログラム、ログ取得方法、情報処理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234260A (ja) * 2007-03-20 2008-10-02 Fujitsu Ltd 想定動作条件分析プログラム、想定動作条件分析装置および想定動作条件分析方法
JP2011141775A (ja) * 2010-01-08 2011-07-21 Hitachi Ltd データフロー記録再生システム
WO2011151931A1 (ja) * 2010-06-02 2011-12-08 株式会社日立製作所 アプリケーションの解析方法、解析システム及び記録媒体
US20120255023A1 (en) * 2009-12-15 2012-10-04 Ofer Maor Methods and systems of detecting and analyzing correlated operations in a common storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234260A (ja) * 2007-03-20 2008-10-02 Fujitsu Ltd 想定動作条件分析プログラム、想定動作条件分析装置および想定動作条件分析方法
US20120255023A1 (en) * 2009-12-15 2012-10-04 Ofer Maor Methods and systems of detecting and analyzing correlated operations in a common storage
JP2011141775A (ja) * 2010-01-08 2011-07-21 Hitachi Ltd データフロー記録再生システム
WO2011151931A1 (ja) * 2010-06-02 2011-12-08 株式会社日立製作所 アプリケーションの解析方法、解析システム及び記録媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108307235A (zh) * 2018-01-18 2018-07-20 晶晨半导体(上海)股份有限公司 一种屏幕参数配置系统
WO2019140978A1 (zh) * 2018-01-18 2019-07-25 晶晨半导体(上海)股份有限公司 一种屏幕参数配置系统
WO2020245952A1 (ja) * 2019-06-05 2020-12-10 富士通株式会社 ログ取得プログラム、ログ取得方法、情報処理装置

Also Published As

Publication number Publication date
JP6634938B2 (ja) 2020-01-22

Similar Documents

Publication Publication Date Title
JP7343568B2 (ja) 機械学習のためのハイパーパラメータの識別および適用
US11100420B2 (en) Input processing for machine learning
US9448999B2 (en) Method and device to detect similar documents
US9135351B2 (en) Data processing method and distributed processing system
US20150379425A1 (en) Consistent filtering of machine learning data
US20150161207A1 (en) Assisting query and querying
KR101390220B1 (ko) 소프트웨어 버그 정정을 위한 적합한 개발자 추천 방법 및 장치
WO2011116082A2 (en) Indexing and searching employing virtual documents
US11461394B2 (en) Storing semi-structured data
CN107391528B (zh) 前端组件依赖信息搜索方法及设备
CN111047434B (zh) 一种操作记录生成方法、装置、计算机设备和存储介质
CN111209325B (zh) 业务系统接口识别方法、装置及存储介质
US8051110B2 (en) Identifying screen flows to support multiple entities and their diverse rules with a single application instance
JP6634938B2 (ja) 分析支援方法、分析支援プログラムおよび分析支援装置
US7610293B2 (en) Correlation of resource usage in a database tier to software instructions executing in other tiers of a multi tier application
CN109739554A (zh) 防止代码重复提交方法、系统、计算机设备和存储介质
JP2012133694A (ja) 需要予測方法
KR20190020363A (ko) 동적 분석과 정적 분석을 연계한 프로그램을 분석하기 위한 방법 및 장치
CN110019357B (zh) 数据库查询脚本生成方法及装置
CN105824976A (zh) 一种优化分词库的方法和装置
CN110781375A (zh) 一种用户状态标识确定方法及装置
KR20110094804A (ko) 소프트웨어 재사용을 지원하기 위한 시맨틱 태깅 서버와 그 방법
JP5538459B2 (ja) 情報処理装置及び方法
CN114564507A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US20150026164A1 (en) Utilizing Dependency Among Internet Search Results

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191009

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191202

R150 Certificate of patent or registration of utility model

Ref document number: 6634938

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150