(57)【要約】      （修正有）【課題】アクセス先に対して実行されたデータ操作の種別を示した対応表を画面ごとに出力できる解析プログラムを提供する。【解決手段】解析プログラムは、画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータに実行させる。【選択図】図８
2018045619.tif 000002
【特許請求の範囲】
【請求項１】
画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、
特定した前記操作命令を解析してアクセス先を特定し、
前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、
処理をコンピュータに実行させることを特徴とする解析プログラム。
【請求項２】
前記操作命令を特定する処理は、前記記憶部に記憶された前記表示画面を特定するログに基づいて、前記操作命令を特定する、
ことを特徴とする請求項１に記載の解析プログラム。
【請求項３】
ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、
特定した前記操作命令を解析してアクセス先を特定し、
前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、
処理をコンピュータに実行させることを特徴とする解析プログラム。
【請求項４】
前記操作命令を特定する処理は、前記記憶部に記憶された前記表示ボタンを特定するログに基づいて、前記操作命令を特定する、
ことを特徴とする請求項３に記載の解析プログラム。
【請求項５】
前記操作命令の種別を示す情報は、生成を特定する文字、参照を特定する文字、更新を特定する文字、若しくは削除を特定する文字、又は、前記生成を特定する文字、前記参照を特定する文字、前記更新を特定する文字、前記削除を特定する文字の少なくとも２つの組み合わせである、
ことを特徴とする請求項１から４のいずれか１項に記載の解析プログラム。
【請求項６】
画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、
特定した前記操作命令を解析してアクセス先を特定し、
前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、
処理をコンピュータが実行することを特徴とする解析方法。
【請求項７】
ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、
特定した前記操作命令を解析してアクセス先を特定し、
前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、
処理をコンピュータが実行することを特徴とする解析方法。
【請求項８】
画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、
特定した前記操作命令を解析してアクセス先を特定し、
前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、
処理を実行する処理部を有することを特徴とする解析装置。
【請求項９】
ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、
特定した前記操作命令を解析してアクセス先を特定し、
前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、
処理を実行する処理部を有することを特徴とする解析装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、解析プログラム、解析方法、及び解析装置に関する。
【背景技術】
【０００２】
アプリケーションプログラム（以下、単にアプリという）にStructured Query Language（ＳＱＬ）トレース取得用のコードを埋め込む技術は知られている（例えば特許文献１参照）。また、ＳＱＬ文を解析し、更新や削除といったＳＱＬ文におけるデータ操作の種別を読み出す技術も知られている（例えば特許文献２参照）。さらに、ＳＱＬ発行時のログを利用して、テーブルに対して実行されたデータ操作の種別を示した対応表を、ＳＱＬを発行したクラスやメソッド毎に出力する技術も知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２１３３９２号公報
【特許文献２】特開２００８−０７７２８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、アプリの開発作業を画面単位やボタン単位で各開発チームが分担している場合、上述した対応表が出力されても、どの開発チームが担当すべきか容易に特定することはできない。
【０００５】
そこで、１つの側面では、アクセス先に対して実行されたデータ操作の種別を示した対応表を画面ごと又はボタンごとに出力できる解析プログラム、解析方法、及び解析装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの実施態様では、解析プログラムは、画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータに実行させることを特徴とする解析プログラムである。
【０００７】
１つの実施態様では、解析プログラムは、ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータに実行させることを特徴とする解析プログラムである。
【０００８】
１つの実施態様では、解析方法は、画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータが実行することを特徴とする解析方法である。
【０００９】
１つの実施態様では、解析方法は、ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータが実行することを特徴とする解析方法である。
【００１０】
１つの実施態様では、解析装置は、画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理を実行する処理部を有することを特徴とする解析装置である。
【００１１】
１つの実施態様では、解析装置は、ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理を実行する処理部を有することを特徴とする解析装置である。
【発明の効果】
【００１２】
アクセス先に対して実行されたデータ操作の種別を示した対応表を画面ごと又はボタンごとに出力することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は解析システムの一例を説明するための図である。
【図２】図２は第２サーバのハードウェア構成の一例である。
【図３】図３は第１サーバ及び第２サーバの機能ブロック図の一例である。
【図４】図４はモニタリングデータの一部の一例である。
【図５】図５はモニタリングデータの残部の一例である。
【図６】図６は第１サーバの動作の一例を示すフローチャートである。
【図７】図７は第２サーバの動作の一例を示すフローチャートである。
【図８】図８（ａ）はＣＲＵＤ図の一例である。図８（ｂ）はＣＲＵＤ図の他の一例である。
【図９】図９はＣＲＵＤ図生成処理の一例を示すフローチャートである。
【図１０】図１０はＣＲＵＤ図書込処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
図１は解析システムＳの一例を説明するための図である。解析システムＳは複数台の第１端末１００と第１サーバ２００と解析装置としての第２サーバ３００と第２端末４００を備えている。図１では、第１端末１００及び第２端末４００の一例としてPersonal Computer（ＰＣ）が示されているが、タブレット端末といったスマートデバイスであってもよい。また、図１では、複数台の第１端末１００が示されているが、第１端末１００は１台であってもよい。さらに、複数台の第１端末１００の一部は互いに異なる建物（例えば遠隔地の建物など）に配置されていてもよい。
【００１５】
第１端末１００、第１サーバ２００、第２サーバ３００及び第２端末４００は通信ネットワークＮＷを介して互いに接続されている。通信ネットワークＮＷとしては例えばインターネットやLocal Area Network（ＬＡＮ）などの有線ネットワークがある。通信ネットワークＮＷの一部に電波を利用した無線ネットワークが利用されていてもよい。
【００１６】
第１サーバ２００は開発者が開発したアプリ（例えば業務用アプリなど）を記憶する。アプリは画面表示の命令やボタン表示の命令などを含んでいる。第１端末１００は第１サーバ２００に記憶されたアプリをテストするテスト実施者によって使用される。第１端末１００はテスト実施者からの操作に基づいて、アプリの実行指示を第１サーバ２００に送信する。これにより、第１サーバ２００ではアプリが実行される。
【００１７】
また、第１サーバ２００はアプリの挙動を監視するモニタリングソフトウェア（以下、モニタリングソフトという）を記憶する。第１サーバ２００はモニタリングソフトをモニタリング対象のアプリにアドオンの形式で取り付ける。第１サーバ２００はモニタリングソフトをアプリのコンパイル時に取り付けたり、クラスを仮想マシン（例えばＪａｖａ（登録商標） ＶＭ）にロードする際に取り付けたりする。例えば、第１サーバ２００がアプリをコンパイルすると、第１サーバ２００はコンパイルにより生成された第１の中間コード（例えばバイトコード）に、アプリの挙動を示すログを出力する命令を埋め込む。すなわち、第１サーバ２００は命令を埋め込んだ第２の中間コードを生成する。ここで、アプリの挙動を示すログとしては、例えばアプリの実行により発行したＳＱＬのログや、ＳＱＬを発行した発行元となる画面名やボタン名を特定するログなどがある。したがって、第１サーバ２００が第２の中間コードを実行すると、第２の中間コードからアプリの挙動を示すログが出力される。モニタリングソフトはアプリが出力したログをモニタリングデータとして第２サーバ３００に送信する。第２サーバ３００は第１サーバ２００から送信されたモニタリングデータを記憶する。
【００１８】
第２サーバ３００はモニタリングデータを利用してＣＲＵＤ図を生成して記憶する。ＣＲＵＤ図はデータがどの画面又はどのボタンで生成（Create）、参照又は読み取り（Read）、更新（Update）、削除(Delete)されるのかをマトリクス形式で表現した表である。最後に、第２端末４００はＣＲＵＤ図を確認してテスト結果を判断する担当者によって使用される。第２端末４００は担当者からの操作に基づいて、第２サーバ３００からＣＲＵＤ図を取得（例えばダウンロード）する。これにより、第２端末４００を使用する担当者はＣＲＵＤ図を確認することができる。
【００１９】
以下、上述した第１サーバ２００及び第２サーバ３００の詳細について図面を参照して説明する。
【００２０】
図２は第２サーバ３００のハードウェア構成の一例である。尚、第１端末１００，第１サーバ２００、及び第２端末４００については基本的に第２サーバ３００と同様の構成であるため、説明を省略する。
【００２１】
第２サーバ３００は、少なくともCentral Processing Unit（ＣＰＵ）３００Ａ、Random Access Memory（ＲＡＭ）３００Ｂ、Read Only Memory（ＲＯＭ）３００Ｃ、及びネットワークＩ／Ｆ（インタフェース）３００Ｄを含んでいる。第２サーバ３００は、必要に応じて、Hard Disk Drive（ＨＤＤ）３００Ｅ、入力Ｉ／Ｆ３００Ｆ、出力Ｉ／Ｆ３００Ｇ、入出力Ｉ／Ｆ３００Ｈ、ドライブ装置３００Ｉの少なくとも１つを含んでいてもよい。ＣＰＵ３００Ａからドライブ装置３００Ｉまでは、内部バス３００Ｊによって互いに接続されている。少なくともＣＰＵ３００ＡとＲＡＭ３００Ｂとが協働することによってコンピュータが実現される。
【００２２】
入力Ｉ／Ｆ３００Ｆには、入力装置７１０が接続される。入力装置７１０としては、例えばキーボードやマウスなどがある。
出力Ｉ／Ｆ３００Ｇには、表示装置７２０が接続される。表示装置７２０としては、例えば液晶ディスプレイがある。
入出力Ｉ／Ｆ３００Ｈには、半導体メモリ７３０が接続される。半導体メモリ７３０としては、例えばUniversal Serial Bus（ＵＳＢ）メモリやフラッシュメモリなどがある。入出力Ｉ／Ｆ３００Ｈは、半導体メモリ７３０に記憶されたプログラムやデータを読み取る。
入力Ｉ／Ｆ３００Ｆ及び入出力Ｉ／Ｆ３００Ｈは、例えばＵＳＢポートを備えている。出力Ｉ／Ｆ３００Ｇは、例えばディスプレイポートを備えている。
【００２３】
ドライブ装置３００Ｉには、可搬型記録媒体７４０が挿入される。可搬型記録媒体７４０としては、例えばCompact Disc（ＣＤ）−ＲＯＭ、Digital Versatile Disc（ＤＶＤ）といったリムーバブルディスクがある。ドライブ装置３００Ｉは、可搬型記録媒体７４０に記録されたプログラムやデータを読み込む。
ネットワークＩ／Ｆ３００Ｄは、例えばポートとPhysical Layer Chip（ＰＨＹチップ）とを備えている。第２サーバ３００は、ネットワークＩ／Ｆ３００Ｄを介して通信ネットワークＮＷと接続される。
【００２４】
上述したＲＡＭ３００Ｂには、ＲＯＭ３００ＣやＨＤＤ３００Ｅに記憶されたプログラムがＣＰＵ３００Ａによって格納される。ＲＡＭ３００Ｂには、可搬型記録媒体７４０に記録されたプログラムがＣＰＵ３００Ａによって格納される。格納されたプログラムをＣＰＵ３００Ａが実行することにより、第２サーバ３００は後述する各種の機能を実現し、また、後述する各種の処理を実行する。尚、プログラムは後述するフローチャートに応じたものとすればよい。
【００２５】
続いて、図３から図５を参照して、第１サーバ２００及び第２サーバ３００の機能について説明する。
【００２６】
図３は第１サーバ２００及び第２サーバ３００の機能ブロック図の一例である。図４はモニタリングデータの一部の一例である。図５はモニタリングデータの残部の一例である。図３に示すように、第１サーバ２００は、処理結果ＤＢ２１０、データ処理部２２０、及び挙動監視部２３０を含んでいる。一方、第２サーバ３００は、モニタリングＤＢ３１０、処理部としてのＣＲＵＤ図生成部３２０、及びＣＲＵＤ図ＤＢ３３０を含んでいる。尚、図４及び図５に示すように、モニタリングデータは互いに関連付けられて連続している。
【００２７】
処理結果ＤＢ２１０は業務データが格納された種々のテーブルを記憶する。例えば、処理結果ＤＢ２１０は顧客の属性データが格納された顧客テーブルを記憶する。例えば、商品の販売データが格納された商品テーブルを記憶する。業務データはテスト用のデータであってもよいし、現実に運用されているデータであってもよい。
【００２８】
データ処理部２２０は上述したアプリの実行に応じて種々のデータ処理を実行し、データ処理の処理結果を処理結果ＤＢ２１０に格納する。例えば顧客の属性データを登録したり変更したりするアプリであれば、データ処理部２２０は処理結果ＤＢ２１０に記憶された顧客テーブルにアクセスし、入力された顧客データを顧客テーブルに登録したり、顧客テーブルに格納された顧客データを変更したりする。例えば商品の売り上げを算出するアプリであれば、データ処理部２２０は処理結果ＤＢ２１０に記憶された商品テーブルにアクセスし、商品の単価を表すデータと販売個数を表すデータを取得する。データ処理部２２０は取得したこれのデータに基づいて売り上げを算出し、算出した売り上げを表すデータを商品テーブルに登録する。
【００２９】
挙動監視部２３０は上述したモニタリングソフトが実行されることにより、データ処理部２２０が実行するデータ処理をアプリの挙動として監視する。挙動監視部２３０はデータ処理部２２０がデータ処理を実行すると、データ処理に関するログを収集し、収集したログをモニタリングデータとしてモニタリングＤＢ３１０に格納する。したがって、モニタリングＤＢ３１０はデータ処理部２２０が実行したデータ処理に関するモニタリングデータを記憶する。
【００３０】
ここで、モニタリングデータは、図４及び図５に示すように、種々のデータを構成要素として含んでいる。例えば、図４に示すように、モニタリングデータは、表示画面を識別する情報として画面ＩＤのデータ及び画面名のデータを含んでいる。画面ＩＤであっても画面名であっても表示画面を識別することができる。また、図４に示すように、モニタリングデータは、表示ボタンを識別する情報としてボタンＩＤのデータ及びボタン名のデータを含んでいる。ボタンＩＤであってもボタン名であっても表示ボタンを識別することができる。
【００３１】
さらに、図５に示すように、モニタリングデータは、パラメータのデータを含んでいる。パラメータは、データ処理部２２０がデータ処理を実行した際に発行したＳＱＬのログを表している。例えばログの一部である「ＳＥＬＥＣＴ」は上述した参照又は読み取りを表す命令である。例えばログの一部に「ＩＮＳＥＲＴ」（不図示）が出現した場合、「ＩＮＳＥＲＴ」は上述した生成を表す命令である。尚、「ＵＰＤＡＴＥ」及び「ＤＥＬＥＴＥ」はそれぞれ上述した更新及び削除を表す命令に対応する。さらに、ログにはアクセス先としてのテーブル名が出現する。例えばログの一部に出現する「Ｍ＿ＰＲＯＤＵＣＴ」はテーブル名を表している。このように、モニタリングデータにより、アクセス元としての画面ＩＤや画面名、ボタンＩＤやボタン名と、パラメータ（より詳しくは操作命令としてのＳＱＬ）は互いに対応づけられている。特に、ＳＱＬのログにはアクセス元からアクセスされるテーブル名が含まれている。このため、画面ＩＤや画面名、ボタンＩＤやボタン名とテーブル名とは互いに対応付けることができる。
【００３２】
ＣＲＵＤ図生成部３２０はモニタリングＤＢ３１０が記憶するモニタリングデータを利用してＣＲＵＤ図を生成して出力する。より詳しくは、ＣＲＵＤ図生成部３２０は、画面ＩＤや画面名に対応づけて、特定したアクセス先毎に、特定したＳＱＬの種別を示す情報を示したＣＲＵＤ図を生成して出力する。また、ＣＲＵＤ図生成部３２０は、ボタンＩＤやボタン名に対応づけて、特定したアクセス先毎に、特定したＳＱＬの操作種別を示す情報を示したＣＲＵＤ図を生成して出力する。ここで、ＳＱＬの種別を示す情報は、具体的には、生成を表すCreateの頭文字Ｃ、参照又は読み取りを表すReadの頭文字Ｒ、更新を表すUpdateの頭文字Ｕ、若しくは、削除を表すDeleteの頭文字Ｄ、又は、これらの頭文字の少なくとも２つの組み合わせである。ＣＲＵＤ図生成部３２０が出力したＣＲＵＤ図はＣＲＵＤ図ＤＢ３３０に格納される。これにより、ＣＲＵＤ図ＤＢ３３０はＣＲＵＤ図を記憶する。したがって、第２端末４００はＣＲＵＤ図ＤＢ３３０にアクセスすることで、ＣＲＵＤ図をダウンロードすることができる。
【００３３】
次に、図６を参照して、第１サーバ２００の動作について説明する。
【００３４】
図６は第１サーバ２００の動作の一例を示すフローチャートである。データ処理部２２０は第１端末１００からアプリの実行指示を受信するまで待機する（ステップＳ１０１：ＮＯ）。データ処理部２２０は実行指示を受信すると（ステップＳ１０１：ＹＥＳ）、アプリの実行に応じて種々のデータ処理を実行する（ステップＳ１０２）。ステップＳ１０２の処理が開始すると、データ処理部２２０は処理結果を処理結果ＤＢ２１０に格納し（ステップＳ１０３）、挙動監視部２３０はログをモニタリングＤＢ３１０に格納する（ステップＳ１０４）。尚、ステップＳ１０３の処理とステップＳ１０４の処理の順序は逆であってもよいし、並行していてもよい。
【００３５】
次に、図７を参照して、第２サーバ３００の動作について説明する。
【００３６】
図７は第２サーバ３００の動作の一例を示すフローチャートである。ＣＲＵＤ図生成部３２０は第２端末４００からＣＲＵＤ図の生成要求を受信するまで待機する（ステップＳ２０１：ＮＯ）。ＣＲＵＤ図生成部３２０は生成要求を受信すると（ステップＳ２０１：ＹＥＳ）、ＣＲＵＤ図生成処理を実行する（ステップＳ２０２）。ＣＲＵＤ図生成処理はＣＲＵＤ図を生成する処理である。尚、ＣＲＵＤ図生成処理の詳細については後述する。ステップＳ２０２の処理が完了すると、ＣＲＵＤ図生成部３２０はステップＳ２０２の処理で生成したＣＲＵＤ図をＣＲＵＤ図ＤＢ３３０に格納する（ステップＳ２０３）。尚、生成要求の受信に代えて、設定時刻に従って夜間に開始するバッチ処理によりＣＲＵＤ図生成部３２０がＣＲＵＤ図生成処理を実行するようにしてもよい。
【００３７】
図８（ａ）はＣＲＵＤ図の一例である。図８（ｂ）はＣＲＵＤ図の他の一例である。例えば、ＣＲＵＤ図生成部３２０が画面名毎のＣＲＵＤ図を生成する生成要求を受信した場合、ＣＲＵＤ図ＤＢ３３０は、図８（ａ）に示すように、画面名に対応づけて、特定したテーブル名毎に、Ｃ，Ｒ，Ｕ，Ｄを示したＣＲＵＤ図を記憶する。画面ＩＤに関する生成要求であれば、ＣＲＵＤ図ＤＢ３３０は画面ＩＤに対応づいたＣＲＵＤ図を記憶する。一方、ＣＲＵＤ図生成部３２０がボタン名毎のＣＲＵＤ図を生成する生成要求を受信した場合、ＣＲＵＤ図ＤＢ３３０は、図８（ｂ）に示すように、ボタン名に対応づけて、特定したテーブル名毎に、Ｃ，Ｒ，Ｕ，Ｄを示したＣＲＵＤ図を記憶する。ボタンＩＤに関する生成要求であれば、ＣＲＵＤ図ＤＢ３３０はボタンＩＤに対応づいたＣＲＵＤ図を記憶する。このように、ＣＲＵＤ図ＤＢ３３０は画面ＩＤや画面名毎のＣＲＵＤ図やボタンＩＤやボタン名毎のＣＲＵＤ図を記憶するため、第２端末４００がＣＲＵＤ図ＤＢ３３０にアクセスすれば、これらのＣＲＵＤ図を取得することができる。
【００３８】
次に、図９を参照して、上述したＣＲＵＤ図生成処理の詳細について説明する。尚、図９では、一例として画面名に関するＣＲＵＤ図生成処理を説明するが、画面ＩＤ、ボタン名、ボタンＩＤについても基本的に画面名と同様であるため説明を省略する。後述する図１０についても同様である。
【００３９】
図９はＣＲＵＤ図生成処理の一例を示すフローチャートである。まず、ＣＲＵＤ図生成部３２０はモニタリングＤＢ３１０からモニタリングデータを読み出す（ステップＳ３０１）。ステップＳ３０１の処理が完了すると、ＣＲＵＤ図生成部３２０は読み出したモニタリングデータの末尾まで後続の処理に関してループ処理を開始する（ステップＳ３０２）。具体的には、まず、ＣＲＵＤ図生成部３２０は読み出したモニタリングデータにおける画面名を保持する（ステップＳ３０３）。次いで、ＣＲＵＤ図生成部３２０はモニタリングデータにおけるパラメータを確認し、ＳＱＬデータがあるか否かを判断する（ステップＳ３０４）。
【００４０】
ここで、ＣＲＵＤ図生成部３２０はＳＱＬデータがあると判断した場合（ステップＳ３０４：ＹＥＳ）、そのＳＱＬデータを特定し、ＳＱＬ構文解析処理を実行する（ステップＳ３０５）。具体的には、ＣＲＵＤ図生成部３２０はＳＱＬデータが表すＳＱＬ構文から命令と命令の対象となっているテーブル名を取得して特定する。尚、命令はＳＥＬＥＣＴ、ＩＮＳＥＲＴ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥのほか、例えばＪＯＩＮやＣＯＵＮＴなどもある。ステップＳ３０５の処理が完了すると、次いで、ＣＲＵＤ図生成部３２０は取得した命令の種別を判断する（ステップＳ３０６〜Ｓ３０９）。尚、図９において、ＳＥＬＥＣＴ、ＩＮＳＥＲＴ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥをそれぞれ順にＡ、Ｂ、Ｃ、Ｄとして表記し、ＳＥＬＥＣＴ、ＩＮＳＥＲＴ、ＵＰＤＡＴＥ、ＤＥＬＥＴＥ以外をＥとして表記している。
【００４１】
例えば、ＣＲＵＤ図生成部３２０がＳＥＬＥＣＴを命令として取得した場合（Ｓ３０６：ＹＥＳ）、命令に対応した命令種別「１」を保持する（ステップＳ３１０）。一方、ＣＲＵＤ図生成部３２０がＳＥＬＥＣＴを命令として取得せず（ステップＳ３０６：ＮＯ）、ＩＮＳＥＲＴを命令として取得した場合（ステップＳ３０７：ＹＥＳ）、命令に対応した命令種別「２」を保持する（ステップＳ３１０）。同様に、ＣＲＵＤ図生成部３２０がＩＮＳＥＲＴを命令として取得せず（ステップＳ３０７：ＮＯ）、ＵＰＤＡＴＥを命令として取得した場合（ステップＳ３０８：ＹＥＳ）、命令に対応した命令種別「３」を保持する（ステップＳ３１０）。ＣＲＵＤ図生成部３２０がＵＰＤＡＴＥを命令として取得せず（ステップＳ３０８：ＮＯ）、ＤＥＬＥＴＥを命令として取得した場合（ステップＳ３０９：ＹＥＳ）、命令に対応した命令種別「４」を保持する（ステップＳ３１０）。尚、ＣＲＵＤ図生成部３２０がＤＥＬＥＴＥを命令として取得しなかった場合（ステップＳ３０９：ＮＯ）、後続のステップＳ３１０からステップＳ３１２までの処理をスキップする。
【００４２】
ステップＳ３１０の処理が完了すると、ＣＲＵＤ図生成部３２０はステップＳ３０５の処理で取得したテーブル名を保持する（ステップＳ３１１）。ステップＳ３１１の処理が完了すると、ＣＲＵＤ図生成部３２０はステップＳ３０３で保持した画面名、ステップＳ３１０の処理で保持した命令種別、及びステップＳ３１１の処理で保持したテーブル名を引数としてＣＲＵＤ図書込処理を実行する（ステップＳ３１２）。尚、ＣＲＵＤ図書込処理の詳細については後述する。
【００４３】
一方、上述したステップＳ３０４の処理において、ＣＲＵＤ図生成部３２０はＳＱＬデータがないと判断した場合（ステップＳ３０４：ＮＯ）、ステップＳ３０３で保持した画面名、予め定めた命令種別「５」、及びテーブル名「ＮＵＬＬ」を引数としてＣＲＵＤ図書込処理を実行する（ステップＳ３１３）。例えば図５に示すように、パラメータによってはＳＱＬデータが存在しない場合がある。
【００４４】
ステップＳ３１２，Ｓ３１３の処理が完了すると、ＣＲＵＤ図生成部３２０は次のモニタリングデータに移行する（ステップＳ３１４）。これにより、次のモニタリングデータに対してステップＳ３０３の処理からステップＳ３１２までの処理、又は、ステップＳ３０３，Ｓ３０４，Ｓ３１３の処理が実行される。そして、モニタリングデータの末尾まで、ステップＳ３０３の処理からステップＳ３１２までの処理、又は、ステップＳ３０３，Ｓ３０４，Ｓ３１３の処理が完了すると、ＣＲＵＤ図生成部３２０はＣＲＵＤ図生成処理を終え、生成したＣＲＵＤ図をＣＲＵＤ図ＤＢ３３０に格納する。
【００４５】
次に、図１０を参照して、上述したＣＲＵＤ図書込処理について説明する。
【００４６】
図１０はＣＲＵＤ図書込処理の一例を示すフローチャートである。まず、ＣＲＵＤ図生成部３２０はＣＲＵＤ図ファイルをオープンする（ステップＳ４０１）。ＣＲＵＤ図ファイルは予め定めた表形式の電子ファイルである。ＣＲＵＤ図書込処理が初回である場合には、ＣＲＵＤ図ファイルには何も記入されていない。すなわち、ＣＲＵＤ図ファイルには上述した引数としての画面名、命令種別に応じた命令の頭文字、テーブル名が全く記入されていない。逆に、ＣＲＵＤ図書込処理が２回目以降である場合には、ＣＲＵＤ図ファイルに上述した引数としての画面名、命令種別に応じた命令の頭文字、テーブル名が記入されている場合がある。
【００４７】
ステップＳ４０１の処理が完了すると、次いで、ＣＲＵＤ図生成部３２０はＣＲＵＤ図ファイルの画面名が空文字になるまで後続の処理に関してループ処理を開始する（ステップＳ４０２）。次いで、ＣＲＵＤ図生成部３２０はＣＲＵＤ図ファイルの画面名と引数の画面名が一致するか否かを判断する（ステップＳ４０３）。ＣＲＵＤ図生成部３２０は画面名が一致すると判断した場合（ステップＳ４０３：ＹＥＳ）、ＣＲＵＤ図ファイルのテーブル名が空文字になるまで後続の処理に関してループ処理を開始する（ステップＳ４０４）。
【００４８】
次いで、ＣＲＵＤ図生成部３２０はＣＲＵＤ図ファイルのテーブル名と引数のテーブル名が一致するか否かを判断する（ステップＳ４０５）。ＣＲＵＤ図生成部３２０はテーブル名が一致しないと判断した場合（ステップＳ４０５：ＮＯ）、次のテーブル名に移行する（ステップＳ４０６）。すなわち、ＣＲＵＤ図生成部３２０はテーブル名が一致するか、テーブル名が空文字になるまで、ステップＳ４０５の処理を繰り返す。一方、上述したステップＳ４０３の処理において、ＣＲＵＤ図生成部３２０は画面名が一致しないと判断した場合（ステップＳ４０３：ＮＯ）、次の画面名に移行する（ステップＳ４０７）。すなわち、ＣＲＵＤ図生成部３２０は画面名が一致するか、画面名が空文字になるまで、ステップＳ４０４からＳ４０６までの処理を繰り返す。
【００４９】
ステップＳ４０２からステップＳ４０７までの処理が完了すると、ＣＲＵＤ図生成部３２０はＣＲＵＤ図ファイルの画面名が空文字であるか否かを判断する（ステップＳ４０８）。ＣＲＵＤ図生成部３２０は画面名が空文字であると判断した場合（ステップＳ４０８：ＹＥＳ）、ＣＲＵＤ図ファイルへ引数の画面名を記入する（ステップＳ４０９）。一方、ＣＲＵＤ図生成部３２０は画面名が空文字でないと判断した場合（ステップＳ４０８：ＮＯ）、ステップＳ４０９の処理をスキップする。すなわち、既に記入されている画面名が後続の処理対象となる。
【００５０】
ステップＳ４０８又はステップＳ４０９の処理が完了すると、次いで、ＣＲＵＤ図生成部３２０はＣＲＵＤ図ファイルのテーブル名が空文字であるか否かを判断する（ステップＳ４１０）。ＣＲＵＤ図生成部３２０はテーブル名が空文字であると判断した場合（ステップＳ４１０：ＹＥＳ）、ＣＲＵＤ図ファイルへ引数のテーブル名を記入する（ステップＳ４１１）。一方、ＣＲＵＤ図生成部３２０はテーブル名が空文字でないと判断した場合（ステップＳ４１０：ＮＯ）、ステップＳ４１１の処理をスキップする。すなわち、既に記入されているテーブル名が後続の処理対象となる。
【００５１】
ステップＳ４１０又はステップＳ４１１の処理が完了すると、次いで、ＣＲＵＤ図生成部３２０はＣＲＵＤを記入する（ステップＳ４１２）。より詳しくは、ステップＳ４０８からＳ４１１の処理によって特定された画面名とテーブル名により指定される記入欄にＣ，Ｒ，Ｕ，Ｄのいずれかを記入する。例えば、当該記入欄の１文字目の位置にＣが記入され、４文字目の位置にＤが既に記入されている場合、ＣＲＵＤ図生成部３２０はこれらの記載内容を取得し、命令種別「１」が引数であれば、２文字目の位置を無記入の状態からＲに書き換える。ステップＳ４１２の処理が完了すると、ＣＲＵＤ図ファイルをクローズし（ステップＳ４１３）、処理を終了する。
【００５２】
以上、図９及び図１０を参照して説明したように、最初は何も記入されていないＣＲＵＤ図ファイルに対し、互いに重複しない画面名と互いに重複しないテーブル名が順に記入されていく。そして、画面名とテーブル名とによって特定される記入欄に記入すべき命令が存在する場合、該当の記入欄に命令種別に応じてＣ，Ｒ，Ｕ，Ｄが順に記入されていく。これにより、ＣＲＵＤ図が完成し、ＣＲＵＤ図ＤＢ３３０に蓄積される。
【００５３】
以上、本実施形態によれば、第２サーバ３００はＣＲＵＤ図生成部３２０を備えている。ＣＲＵＤ図生成部３２０は、画面表示の命令を含むアプリのコンパイルにより生成された第１の中間コードに、処理に関するログをモニタリングＤＢ３１０に記憶させる命令を埋め込んだ第２の中間コードの実行によりモニタリングＤＢ３１０に記憶されたログに基づいて、表示画面の画面名に対応づけてＳＱＬを特定する。そして、ＣＲＵＤ図生成部３２０は、特定したＳＱＬを解析してテーブル名を特定し、画面名に対応づけて、特定したテーブル名毎に、特定したＣ，Ｒ，Ｕ，Ｄを示したＣＲＵＤ図を出力する。画面ＩＤ，ボタン名、ボタンＩＤの場合についても基本的に画面名の場合と同様である。これにより、テーブルに対して実行されたデータ操作の種別を示したＣＲＵＤ図を画面ごと又はボタンごとに出力することができる。
【００５４】
ここで、仮にソースファイル内を検索し、ＳＱＬを発行している行を特定することで、ＳＱＬとＳＱＬ発行元のソースファイル名を利用してＣＲＵＤ図を生成しても、画面やボタンごとのＣＲＵＤ図を生成することはできない。また、仮にアプリがＳＱＬを発行する際に、発行したＳＱＬと発行元のクラスやメソッドといった内部構造レベルを利用した場合であっても同様である。本実施形態では、モニタリングＤＢ３１０に記憶された画面を特定するログやボタンを特定するログを利用しているため、ＣＲＵＤ図を画面ごと又はボタンごとに出力することができる。
【００５５】
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば、上述した実施形態では、ソースプログラムの一例としてアプリについて説明したが、アプリに代えて例えばミドルウェアを利用してもよい。
【００５６】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータに実行させることを特徴とする解析プログラム。
（付記２）前記操作命令を特定する処理は、前記記憶部に記憶された前記表示画面を特定するログに基づいて、前記操作命令を特定する、ことを特徴とする付記１に記載の解析プログラム。
（付記３）ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータに実行させることを特徴とする解析プログラム。
（付記４）前記操作命令を特定する処理は、前記記憶部に記憶された前記表示ボタンを特定するログに基づいて、前記操作命令を特定する、ことを特徴とする付記３に記載の解析プログラム。
（付記５）前記操作命令の種別を示す情報は、生成を特定する文字、参照を特定する文字、更新を特定する文字、若しくは削除を特定する文字、又は、前記生成を特定する文字、前記参照を特定する文字、前記更新を特定する文字、前記削除を特定する文字の少なくとも２つの組み合わせである、ことを特徴とする付記１から４のいずれか１項に記載の解析プログラム。
（付記６）画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータが実行することを特徴とする解析方法。
（付記７）ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理をコンピュータが実行することを特徴とする解析方法。
（付記８）画面表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示画面の識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示画面の識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理を実行する処理部を有することを特徴とする解析装置。
（付記９）前記処理部は、前記記憶部に記憶された前記表示画面を特定するログに基づいて、前記操作命令を特定する、ことを特徴とする付記８に記載の解析装置。
（付記１０）ボタン表示の命令を含むソースプログラムのコンパイルにより生成されたプログラムに、処理に関するログを記憶部に記憶させる命令を埋め込んだプログラムの実行により前記記憶部に記憶されたログに基づいて、表示ボタンの識別情報に対応づけてデータベースに関する操作命令を特定し、特定した前記操作命令を解析してアクセス先を特定し、前記表示ボタンの識別情報に対応づけて、特定したアクセス先毎に、特定した操作命令の種別を示す情報を示した対応表を出力する、処理を実行する処理部を有することを特徴とする解析装置。
（付記１１）前記処理部は、前記記憶部に記憶された前記表示ボタンを特定するログに基づいて、前記操作命令を特定する、ことを特徴とする付記１０に記載の解析装置。
（付記１２）前記操作命令の種別を示す情報は、生成を特定する文字、参照を特定する文字、更新を特定する文字、若しくは削除を特定する文字、又は、前記生成を特定する文字、前記参照を特定する文字、前記更新を特定する文字、前記削除を特定する文字の少なくとも２つの組み合わせである、ことを特徴とする付記８から１１のいずれか１項に記載の解析装置。
【符号の説明】
【００５７】
Ｓ  解析システム
１００  第１端末
２００  第１サーバ
２１０  処理結果ＤＢ
２２０  データ処理部
２３０  挙動監視部
３００  第２サーバ
３１０  モニタリングＤＢ
３２０  ＣＲＵＤ図生成部
３３０  ＣＲＵＤ図ＤＢ
４００  第２端末
【図１】
2018045619.tif 000003
【図２】
2018045619.tif 000004
【図３】
2018045619.tif 000005
【図４】
2018045619.tif 000006
【図５】
2018045619.tif 000007
【図６】
2018045619.tif 000008
【図７】
2018045619.tif 000009
【図８】
2018045619.tif 000010
【図９】
2018045619.tif 000011
【図１０】
2018045619.tif 000012