(57)【要約】【課題】プログラムとデータとのアクセス関係の特定を容易にすること。【解決手段】情報処理装置１０１は、システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得する。情報処理装置１０１は、取得した構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成する。情報処理装置１０１は、システムの構成要素である各プログラムについて、各プログラムのソースコードに基づいて、システムの構成要素であるデータのうち、各プログラムからアクセスされるデータを特定する。情報処理装置１０１は、生成したアクセス一覧表における、各プログラムと、特定したデータとの組み合わせに対応する箇所にマーキングする。【選択図】図１
2019215686.tif 000002
【特許請求の範囲】
【請求項１】
システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得し、
取得した前記構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成し、
前記システムの構成要素である各プログラムについて、前記各プログラムのソースコードに基づいて、前記システムの構成要素であるデータのうち、前記各プログラムからアクセスされるデータを特定し、
生成した前記アクセス一覧表における、前記各プログラムと、特定した前記データとの組み合わせに対応する箇所にマーキングする、
処理をコンピュータに実行させることを特徴とする生成プログラム。
【請求項２】
前記特定する処理は、
特定した前記データに前記各プログラムがアクセスする際の操作種別をさらに特定し、
前記マーキングする処理は、
特定した前記操作種別に応じた文字、記号、図形、模様のいずれかを前記箇所に設定する、ことを特徴とする請求項１に記載の生成プログラム。
【請求項３】
前記システムの構成要素であるデータを格納するデータベースに対して行われた操作について、前記データベースの性能劣化に影響を及ぼす度合いを示す値を含むＳＱＬ統計情報を取得し、
取得した前記ＳＱＬ統計情報に基づいて、前記データベースの性能劣化に影響を及ぼす度合いが相対的に高いプログラムとデータとの第２の組み合わせを特定し、
前記箇所にマーキングした前記アクセス一覧表を表示する際に、特定した前記第２の組み合わせに対応する箇所を強調表示する、
処理を前記コンピュータに実行させることを特徴とする請求項１または２に記載の生成プログラム。
【請求項４】
前記システムの構成要素である各データについて、特定した前記各プログラムからアクセスされるデータに基づいて、前記各プログラムから前記各データにアクセスする回数を計数し、
前記箇所にマーキングした前記アクセス一覧表を表示する際に、前記各データについて、計数した前記各プログラムがアクセスする回数を積算した値を前記各データに対応付けて表示する、
処理を前記コンピュータに実行させることを特徴とする請求項１〜３のいずれか一つに記載の生成プログラム。
【請求項５】
システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得し、
取得した前記構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成し、
前記システムの構成要素である各プログラムについて、前記各プログラムのソースコードに基づいて、前記システムの構成要素であるデータのうち、前記各プログラムからアクセスされるデータを特定し、
生成した前記アクセス一覧表における、前記各プログラムと、特定した前記データとの組み合わせに対応する箇所にマーキングする、
処理をコンピュータが実行することを特徴とする生成方法。
【請求項６】
システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得し、
取得した前記構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成し、
前記システムの構成要素である各プログラムについて、前記各プログラムのソースコードに基づいて、前記システムの構成要素であるデータのうち、前記各プログラムからアクセスされるデータを特定し、
生成した前記アクセス一覧表における、前記各プログラムと、特定した前記データとの組み合わせに対応する箇所にマーキングする、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、生成プログラム、生成方法および情報処理装置に関する。
【背景技術】
【０００２】
複数の拠点に導入されたシステムを一元化して、業務の効率化や保守管理の容易化を図ることは重要である。一方で、拠点ごとに要件が異なることがあるため、システムは、拠点間で共通の機能と、拠点単位で個別の機能とをあわせたものとなることが多い。また、複数の拠点で同時多発的に発生する開発テーマや要望に応じて、システムの機能改修が行われることがある。
【０００３】
関連する先行技術としては、ソフトウェア内のプログラムおよび当該プログラムからアクセスされるデータを含む要素群をクラスタに分割し、クラスタ内のデータが、クラスタ内外のプログラムからどれだけ読み書きされているかを示す指標を算出するものがある。また、既存システムに対する入力にともなう出力データの変化を、出力要素ごとの変化の種類に基づき分類し、既存システムに対して異なる入力を与えて得た該分類を組み合わせ、入力項目値の利用パターンに基づく処理の種類を特定する技術がある。また、マッピングファイルの表示部に対して指定されたデータを移動する操作を受け付けた場合に、移動されたデータがデータモデルを示すものであれば、Ｗｅｂサービス記述言語ファイルから取得された入出力の項目と当該データモデルの項目とを対応付けたマッピングファイルを生成する技術がある。また、画面上に表示する入出力項目の識別情報をキーとしてパーツオブジェクトについてのパラメータの初期値からなる情報を保持する辞書テーブルから、パーツオブジェクトについてのパラメータを取得し、ラベルコントロールおよび／または入出力コントロールを表示する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−２２８０４８号公報
【特許文献２】特開２０１７−０５８９８４号公報
【特許文献３】特開２０１８−００５４５１号公報
【特許文献４】特開２０１３−２３５３８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、頻繁に改修が行われるようなシステム内の構成要素間のアクセス関係を把握することが難しい。例えば、システムの改修を行うにあたり、どのプログラムがどのデータにアクセスするのかを把握できなければ、改修にともなう影響範囲を特定することができない。
【０００６】
一つの側面では、本発明は、プログラムとデータとのアクセス関係の特定を容易にすることを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得し、取得した前記構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成し、前記システムの構成要素である各プログラムについて、前記各プログラムのソースコードに基づいて、前記システムの構成要素であるデータのうち、前記各プログラムからアクセスされるデータを特定し、生成した前記アクセス一覧表における、前記各プログラムと、特定した前記データとの組み合わせに対応する箇所にマーキングする、生成プログラムが提供される。
【発明の効果】
【０００８】
本発明の一側面によれば、プログラムとデータとのアクセス関係の特定を容易にすることができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる生成方法の一実施例を示す説明図である。
【図２】図２は、作業支援システム２００のシステム構成例を示す説明図である。
【図３】図３は、情報処理装置１０１のハードウェア構成例を示すブロック図である。
【図４】図４は、プログラム一覧情報４００の具体例を示す説明図である。
【図５】図５は、テーブル一覧情報５００の具体例を示す説明図である。
【図６】図６は、情報処理装置１０１の機能的構成例を示すブロック図である。
【図７】図７は、プログラム管理テーブル２３０の記憶内容の一例を示す説明図である。
【図８】図８は、テーブル管理テーブル２４０の記憶内容の一例を示す説明図である。
【図９】図９は、ＣＲＵＤ管理テーブル２５０の記憶内容の一例を示す説明図である。
【図１０】図１０は、ＣＲＵＤ一覧表の表示例を示す説明図（その１）である。
【図１１】図１１は、ＣＲＵＤ一覧表の表示例を示す説明図（その２）である。
【図１２】図１２は、詳細情報１２００の具体例を示す説明図である。
【図１３】図１３は、情報処理装置１０１の生成処理手順の一例を示すフローチャートである。
【図１４】図１４は、ソースコード解析処理の具体的処理手順の一例を示すフローチャート（その１）である。
【図１５】図１５は、ソースコード解析処理の具体的処理手順の一例を示すフローチャート（その２）である。
【図１６】図１６は、レポート情報ＲＴの具体例を示す説明図である。
【図１７】図１７は、統計情報管理テーブル１７００の記憶内容の一例を示す説明図である。
【図１８】図１８は、情報処理装置１０１のＳＱＬ統計情報取得処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかる生成プログラム、生成方法および情報処理装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態）
図１は、実施の形態にかかる生成方法の一実施例を示す説明図である。図１において、情報処理装置１０１は、システム内のアクセス関係のある構成要素の組み合わせに対応する箇所がマーキングされたアクセス一覧表を生成するコンピュータである。具体的には、アクセス一覧表は、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式の情報である。
【００１２】
プログラムは、システムの構成要素となるプログラムであり、例えば、システムの各種機能を実現するソフトウェアである。データは、システムの構成要素となるデータであり、例えば、プログラムからアクセスされるテーブルやファイルなどである。システムは、例えば、工場系システムのように、構成管理が要求される大規模なシステムである。
【００１３】
ここで、システムの改修を行うにあたり、改修にともなう影響範囲を特定して、適宜対策を施さなければ、トラブルを引き起こすおそれがある。例えば、システムのデータベースに項目変更等の変更をかけるときは、その変更箇所にアクセスしているプログラムを変更する必要がある。すなわち、システムの改修を行うにあたり、システムのどのような構成要素に影響を与えるのかを把握することは重要である。
【００１４】
システムの機能改修にともなう影響範囲の特定には、ＣＲＵＤ一覧が用いられることが多い。ＣＲＵＤは、Ｃｒｅａｔｅ（生成）、Ｒｅａｄ（読み取り）、Ｕｐｄａｔｅ（更新）、Ｄｅｌｅｔｅ（削除）という、データベースに対する操作を示す文字列の頭文字を並べたものである。すなわち、ＣＲＵＤ一覧は、各種プログラムから各種テーブル等に対してどのような操作が行われるのかを示した表である。
【００１５】
ところが、システムの機能改修が日々行われる中で、人手によりＣＲＵＤ一覧を最新の状態に保つには工数がかかる。このため、システムの機能改修を行うにあたり、ＣＲＵＤ一覧の更新作業が行われないことも多い。すなわち、前回までの機能改修にともなう変更がＣＲＵＤ一覧に正しく反映されている保証はなく、改修者にとって、それを情報源として影響範囲を判断するにはリスクが高いのが現状である。
【００１６】
そこで、本実施の形態では、アクセス関係のあるプログラムとデータとの組み合わせに対応する箇所がマーキングされたアクセス一覧表を自動生成することで、システムの構成要素であるプログラムとデータとのアクセス関係の特定を容易にする生成方法について説明する。以下、情報処理装置１０１の処理例について説明する。
【００１７】
（１）情報処理装置１０１は、システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得する。構成要素情報は、例えば、システムの構成要素であるプログラムの識別情報をリスト化した情報と、システムの構成要素であるデータの識別情報をリスト化した情報とを含む。プログラムの識別情報は、例えば、プログラムＩＤやプログラム名である。データの識別情報は、データＩＤやデータ名である。
【００１８】
図１の例では、構成要素情報１１０が取得された場合を想定する。構成要素情報１１０は、システムの構成要素であるプログラムのプログラム名（プログラム１，２，３）をリスト化した情報と、システムの構成要素であるデータのデータ名（データＡ，Ｂ，Ｃ，Ｄ，Ｅ）をリスト化した情報とを含む。
【００１９】
（２）情報処理装置１０１は、取得した構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成する。すなわち、情報処理装置１０１は、縦方向の項目として各プログラム（または、各データ）の識別情報を設定し、横方向の項目として各データ（または、各プログラム）の識別情報を設定したマトリクス表を生成する。
【００２０】
図１の例では、構成要素情報１１０に基づいて、アクセス一覧表１２０が生成された場合を想定する。アクセス一覧表１２０は、縦軸にプログラムのプログラム名（プログラム１，２，３）を並べ、横軸にデータのデータ名（データＡ，Ｂ，Ｃ，Ｄ，Ｅ）を並べた表形式の情報である。ただし、この時点では、アクセス一覧表１２０における各プログラム名と各データ名との組み合わせに対応する箇所は「空欄」である。
【００２１】
（３）情報処理装置１０１は、システムの構成要素である各プログラムについて、各プログラムのソースコードに基づいて、システムの構成要素であるデータのうち、各プログラムからアクセスされるデータを特定する。データへのアクセスは、例えば、データの生成、更新、読み出し、削除などの操作に応じたアクセスである。
【００２２】
具体的には、例えば、情報処理装置１０１は、各プログラムのソースコードを解析して、データにアクセスする際の操作種別を示す文字列を検索し、当該文字列に対応するシステムの構成要素であるデータの識別情報を示す文字列を特定する。操作種別を示す文字列としては、例えば、「ＩＮＳＥＲＴ」、「ＵＰＤＡＴＥ」、「ＳＥＬＥＣＴ」、「ＤＥＬＥＴＥ」などが挙げられる。これにより、各プログラムからアクセスされるデータを特定することができる。
【００２３】
図１の例では、プログラム１からアクセスされるデータＡが特定され、プログラム２からアクセスされるデータＡ，Ｂが特定され、プログラム３からアクセスされるデータＣが特定された場合を想定する。各プログラム１〜３のソースコードは、例えば、構成要素情報１１０に含まれていてもよく、また、構成要素情報１１０とは別に取得されることにしてもよい。
【００２４】
なお、上記（２）および（３）の処理を実行する順序は逆であってもよい。すなわち、上記（３）の処理は、上記（２）の処理よりも前に行われてもよい。
【００２５】
（４）情報処理装置１０１は、生成したアクセス一覧表における、各プログラムと、特定したデータとの組み合わせに対応する箇所にマーキングする。ここで、マーキングするとは、例えば、プログラムとデータとの組み合わせに対応する箇所（セル）に、文字、記号、図形、模様などを設定することである。
【００２６】
図１の例では、アクセス一覧表１２０において、プログラム１とデータＡとの組み合わせに対応するセル１２１に○印が設定されている。また、プログラム２とデータＡとの組み合わせに対応するセル１２２に○印が設定され、プログラム２とデータＢとの組み合わせに対応するセル１２３に○印が設定されている。また、プログラム３とデータＣとの組み合わせに対応するセル１２４に○印が設定されている。
【００２７】
このように、情報処理装置１０１によれば、システムの構成要素であるプログラムと当該プログラムからアクセスされるデータとの組み合わせに対応する箇所にマーキングを施したアクセス一覧表を生成することができる。これにより、システムの構成要素であるプログラムとデータとのアクセス関係の特定を容易にすることができる。
【００２８】
すなわち、プログラムのソースコードからアクセス対象のデータを洗い出してアクセス一覧表に自動で反映することができるため、システムの構成要素であるプログラムとデータとのアクセス関係の特定にかかる作業負荷を削減することができる。このため、日々機能改修が行われるようなシステムにおいても、アクセス一覧表が陳腐化するのを防いで、使用する側（例えば、改修者）のリスクを排除することができる。
【００２９】
図１の例では、ユーザは、アクセス一覧表１２０を参照することで、プログラム１からデータＡにアクセスし、プログラム２からデータＡ，Ｂにアクセスし、プログラム３からデータＣにアクセスすることを直感的に把握することができる。これにより、システムの改修を行うにあたり、改修にともなう影響範囲を特定しやすくなる。例えば、データＡを変更するときには、ユーザは、プログラム１，２の変更が必要である可能性が高いことがわかる。
【００３０】
また、各データに対する実際のアクセス状況を把握できれば、不正なプログラムからのアクセスを検出することができる。例えば、アクセス一覧表１２０ではアクセスが示されていないにもかかわらず、あるデータ（例えば、データＤ，Ｅ）へのアクセスが増加していることが判明した際に、不正なプログラムからのアクセスが発生している可能性があることを検出することができる。
【００３１】
以下の説明では、システムの構成要素であるデータとして、「テーブル」を例に挙げて説明する。
【００３２】
（作業支援システム２００のシステム構成例）
つぎに、図１に示した情報処理装置１０１を含む作業支援システム２００のシステム構成例について説明する。作業支援システム２００は、ＣＲＵＤ一覧表の作成にかかる作業を支援するコンピュータシステムである。作業支援システム２００は、例えば、構成管理が要求される大規模なシステムや、定期的に改修がかかっても整合性を保つ必要があるクリティカルなシステムに適用される。
【００３３】
図２は、作業支援システム２００のシステム構成例を示す説明図である。図２において、作業支援システム２００は、情報処理装置１０１と、データベースサーバ２０１と、クライアント装置２０２と、を含む。作業支援システム２００において、情報処理装置１０１、データベースサーバ２０１およびクライアント装置２０２は、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００３４】
ここで、情報処理装置１０１は、プログラムソースＤＢ（Ｄａｔａｂａｓｅ）２２０、プログラム管理テーブル２３０、テーブル管理テーブル２４０およびＣＲＵＤ管理テーブル２５０を有し、ＣＲＵＤ一覧表を生成する。情報処理装置１０１は、例えば、サーバである。
【００３５】
プログラムソースＤＢ２２０は、対象システムの構成要素であるプログラムＰＧのソースコードを記憶する。対象システムは、本作業支援システム２００が適用されるシステムであり、例えば、複数拠点に導入される工場系システムである。なお、各種テーブル２３０，２４０，２５０の記憶内容については、図７、図８および図９を用いて後述する。
【００３６】
データベースサーバ２０１は、対象システムのデータベースＤＢを有するコンピュータである。データベースＤＢには、対象システムの構成要素であるテーブルＴＢが格納されている。データベースサーバ２０１は、例えば、対象システムのクライアントからのリクエストに応じて、データベースＤＢの検索処理などを行って処理結果を返す。
【００３７】
クライアント装置２０２は、作業支援システム２００のユーザが使用するコンピュータである。作業支援システム２００のユーザは、例えば、対象システムの機能改修などを行う開発者である。クライアント装置２０２は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、タブレット型ＰＣなどである。
【００３８】
なお、上述した説明では、情報処理装置１０１とデータベースサーバ２０１とクライアント装置２０２とが、それぞれ別体に設けられることにしたが、これに限らない。例えば、情報処理装置１０１は、データベースサーバ２０１により実現されてもよく、また、クライアント装置２０２により実現されてもよい。
【００３９】
（情報処理装置１０１のハードウェア構成例）
図３は、情報処理装置１０１のハードウェア構成例を示すブロック図である。図３において、情報処理装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、ディスクドライブ３０４と、ディスク３０５と、を有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４０】
ここで、ＣＰＵ３０１は、情報処理装置１０１の全体の制御を司る。ＣＰＵ３０１は、複数のコアを有していてもよい。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭがＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のプログラムを記憶し、ＲＯＭがアプリケーションプログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４１】
Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して外部のコンピュータ（例えば、図２に示したデータベースサーバ２０１、クライアント装置２０２）に接続される。そして、Ｉ／Ｆ３０３は、ネットワーク２１０と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４２】
ディスクドライブ３０４は、ＣＰＵ３０１の制御に従ってディスク３０５に対するデータのリード／ライトを制御する。ディスク３０５は、ディスクドライブ３０４の制御で書き込まれたデータを記憶する。ディスク３０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００４３】
なお、情報処理装置１０１は、上述した構成部のほかに、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、入力装置、ディスプレイ等を有することにしてもよい。また、図２に示したデータベースサーバ２０１、クライアント装置２０２についても、情報処理装置１０１と同様のハードウェア構成により実現することができる。ただし、クライアント装置２０２は、上述した構成部のほかに、入力装置、ディスプレイ等を有する。
【００４４】
（プログラム一覧情報４００の具体例）
つぎに、情報処理装置１０１が用いるプログラム一覧情報４００の具体例について説明する。以下の説明では、対象システムの構成要素であるプログラムを「プログラムＰＧ」と表記する場合がある。
【００４５】
図４は、プログラム一覧情報４００の具体例を示す説明図である。図４において、プログラム一覧情報４００は、対象システムの構成要素であるプログラムＰＧをリスト化して示す情報である。具体的には、プログラム一覧情報４００は、プログラムＩＤとプログラム名との対応関係を示す。
【００４６】
ここで、プログラムＩＤは、プログラムＰＧを一意に識別する識別子である。例えば、プログラムＩＤは、「ＯＹＡ＃＃＃ＰＧ」という文字列によって表される。「ＯＹＡ」は、対象システムの識別子の一例である。「＃＃＃」は、３桁の英数字である。「ＰＧ」は、プログラムを示す文字列である。プログラム名は、プログラムＰＧの名称である。例えば、プログラム名は、対象システムの機能名によって表される。なお、プログラムＰＧは、例えば、メインプログラムであってもよく、また、メインプログラムから呼び出されるサブプログラムであってもよい。
【００４７】
（テーブル一覧情報５００の具体例）
つぎに、情報処理装置１０１が用いるテーブル一覧情報５００の具体例について説明する。以下の説明では、対象システムの構成要素であるテーブルを「テーブルＴＢ」と表記する場合がある。
【００４８】
図５は、テーブル一覧情報５００の具体例を示す説明図である。図５において、テーブル一覧情報５００は、対象システムの構成要素であるテーブルＴＢをリスト化して示す情報である。具体的には、テーブル一覧情報５００は、テーブルＩＤとテーブル名との対応関係を示す。
【００４９】
ここで、テーブルＩＤは、テーブルＴＢを一意に識別する識別子である。例えば、テーブルＩＤは、「ＯＹＡ＃＃＃ＴＢ」という文字列によって表される。「ＯＹＡ」は、対象システムの識別子の一例である。「＃＃＃」は、３桁の英数字である。「ＴＢ」は、テーブルを示す文字列である。テーブル名は、テーブルＴＢの名称である。
【００５０】
なお、図１に示した構成要素情報１１０は、例えば、図４に示したプログラム一覧情報４００および図５に示したテーブル一覧情報５００に相当する。
【００５１】
（情報処理装置１０１の機能的構成例）
図６は、情報処理装置１０１の機能的構成例を示すブロック図である。図６において、情報処理装置１０１は、取得部６０１と、生成部６０２と、特定部６０３と、表示制御部６０４と、を含む。取得部６０１〜表示制御部６０４は制御部となる機能であり、具体的には、例えば、図３に示したメモリ３０２、ディスク３０５などの記憶装置に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、Ｉ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ３０２、ディスク３０５などの記憶装置に記憶される。
【００５２】
取得部６０１は、対象システムの構成要素であるプログラムＰＧとテーブルＴＢとを特定する構成要素情報を取得する。具体的には、例えば、取得部６０１は、対象システムの構成要素を管理する不図示の構成管理システムから、図４に示したようなプログラム一覧情報４００および図５に示したようなテーブル一覧情報５００を取得することにしてもよい。
【００５３】
また、取得部６０１は、例えば、不図示の入力装置を用いたユーザの操作入力により、プログラム一覧情報４００およびテーブル一覧情報５００を取得することにしてもよい。また、取得部６０１は、図２に示したクライアント装置２０２から、プログラム一覧情報４００およびテーブル一覧情報５００を取得することにしてもよい。
【００５４】
生成部６０２は、取得された構成要素情報に基づいて、縦軸（または、横軸）にプログラムＰＧの識別情報を並べ、横軸（または、縦軸）にテーブルＴＢの識別情報を並べた表形式のアクセス一覧表を生成する。プログラムＰＧの識別情報は、例えば、プログラムＩＤおよび／またはプログラム名である。テーブルＴＢの識別情報は、例えば、テーブルＩＤおよび／またはテーブル名である。ただし、この時点では、アクセス一覧表における各プログラムＰＧと各テーブルＴＢとの組み合わせに対応する箇所（セル）は「空欄」である。
【００５５】
以下の説明では、アクセス一覧表として、「ＣＲＵＤ一覧表」を生成する場合を例に挙げて説明する。ＣＲＵＤ一覧表は、プログラムＰＧからテーブルＴＢに対して、Ｃｒｅａｔｅ（生成）、Ｒｅａｄ（読み取り）、Ｕｐｄａｔｅ（更新）、Ｄｅｌｅｔｅ（削除）のいずれの操作が行われるのかを示す表である。
【００５６】
具体的には、例えば、生成部６０２は、プログラム一覧情報４００およびテーブル一覧情報５００に基づいて、縦軸にプログラムＰＧのプログラムＩＤおよびプログラム名を並べ、横軸にテーブルＴＢのテーブルＩＤおよびテーブル名を並べた表形式のＣＲＵＤ一覧表を生成する。
【００５７】
また、生成部６０２は、各プログラムＰＧのプログラム管理情報を、プログラム管理テーブル２３０に登録する。プログラム管理情報は、ＣＲＵＤ一覧表における各プログラムＰＧの位置を特定する情報である。また、生成部６０２は、各テーブルＴＢのテーブル管理情報を、テーブル管理テーブル２４０に登録する。テーブル管理情報は、ＣＲＵＤ一覧表における各テーブルＴＢの位置を特定する情報である。
【００５８】
ここで、図７および図８を用いて、プログラム管理テーブル２３０およびテーブル管理テーブル２４０の記憶内容について説明する。プログラム管理テーブル２３０およびテーブル管理テーブル２４０は、例えば、図３に示したメモリ３０２、ディスク３０５などの記憶装置により実現される。
【００５９】
図７は、プログラム管理テーブル２３０の記憶内容の一例を示す説明図である。図７において、プログラム管理テーブル２３０は、プログラムＩＤ、プログラム名および行番号のフィールドを有し、各フィールドに情報を設定することで、プログラム管理情報（例えば、プログラム管理情報７００−１，７００−２）をレコードとして記憶する。
【００６０】
ここで、プログラムＩＤは、プログラムＰＧを一意に識別する識別子である。プログラム名は、プログラムＰＧの名称である。行番号は、ＣＲＵＤ一覧表におけるプログラムＰＧの位置（行）を特定する情報である。例えば、プログラム管理情報７００−１は、ＣＲＵＤ一覧表における１行目の項目として、プログラムＩＤ「ＯＹＡ００１ＰＧ」およびプログラム名「ＰＡ−ＯＮ」が設定されていることを示す。
【００６１】
図８は、テーブル管理テーブル２４０の記憶内容の一例を示す説明図である。図８において、テーブル管理テーブル２４０は、テーブルＩＤ、テーブル名および列番号のフィールドを有し、各フィールドに情報を設定することで、テーブル管理情報（例えば、テーブル管理情報８００−１，８００−２）をレコードとして記憶する。
【００６２】
ここで、テーブルＩＤは、テーブルＴＧを一意に識別する識別子である。テーブル名は、テーブルＴＧの名称である。列番号は、ＣＲＵＤ一覧表におけるテーブルＴＧの位置（列）を特定する情報である。例えば、テーブル管理情報８００−１は、ＣＲＵＤ一覧表における１列目の項目として、テーブルＩＤ「ＯＹＡ００１ＴＢ」およびテーブル名「事業所マスタ」が設定されていることを示す。
【００６３】
これにより、縦軸にプログラムＰＧのプログラムＩＤおよびプログラム名を並べ、横軸にテーブルＴＢのテーブルＩＤおよびテーブル名を並べた表形式のＣＲＵＤ一覧表を生成することができる。ただし、この時点では、ＣＲＵＤ一覧表における各プログラムＰＧと各テーブルＴＢとの組み合わせに対応する箇所（セル）は「空欄」である。
【００６４】
図６の説明に戻り、特定部６０３は、対象システムの構成要素である各プログラムＰＧについて、各プログラムＰＧのソースコードに基づいて、対象システムの構成要素であるテーブルＴＢのうち、各プログラムＰＧからアクセスされるテーブルＴＢを特定する。この際、特定部６０３は、テーブルＴＢに各プログラムＰＧがアクセスする際の操作種別をさらに特定することにしてもよい。
【００６５】
具体的には、例えば、特定部６０３は、プログラム一覧情報４００を参照して、図２に示したプログラムソースＤＢ２２０から、プログラムＰＧのソースコードを取得する。つぎに、特定部６０３は、取得したソースコードを解析して、ＤＢ操作文字列を検索する。検索対象となるＤＢ操作文字列は、大文字によって表されている。ＤＢ操作文字列は、データベース（例えば、図２に示したデータベースサーバ２０１のデータベースＤＢ）に対する操作を示す文字列である。ＤＢ操作文字列としては、例えば、ＳＱＬの操作を表す「ＩＮＳＥＲＴ」、「ＵＰＤＡＴＥ」、「ＳＥＬＥＣＴ」、「ＤＥＬＥＴＥ」などがある。
【００６６】
ここで、ＤＢ操作文字列が検索された場合、特定部６０３は、取得したソースコードを解析して、検索したＤＢ操作文字列に対応するテーブル文字列を検索する。検索対象となるテーブル文字列は、大文字によって表されている。テーブル文字列は、操作対象となるテーブルＴＢを示す文字列であり、例えば、「ＯＹＡ＃＃＃ＴＢ」という文字列（テーブルＩＤ）によって表される。例えば、特定部６０３は、ＤＢ操作文字列に対応するテーブル文字列を検索する処理を、プログラムＰＧのソースコードを最初から最後まで１行単位で読み込みながら順次実施する。ただし、コメント分は除く。
【００６７】
これにより、プログラムＰＧからテーブル文字列が示すテーブルＴＢに対して、ＤＢ操作文字列が示す操作（アクセス）が行われることを特定することができる。
【００６８】
一例として、プログラムＰＧのソースコードに「ＳＥＬＥＣＴ  ＪＩＧＹＳ＿ＩＤ，  ＪＩＧＹＳ＿ＮＡＭＥ  ＦＲＯＭ  ＯＹＡ００１ＴＢ；」という文字列が含まれている場合を想定する。この場合、特定部６０３は、上記文字列からＤＢ操作文字列「ＳＥＬＥＣＴ」を検索する。そして、特定部６０３は、上記文字列からＤＢ操作文字列「ＳＥＬＥＣＴ」に対応するテーブル文字列「ＯＹＡ００１ＴＢ」を検索する。これにより、テーブルＩＤ「ＯＹＡ００１ＴＢ」のテーブルＴＢに対して、「ＳＥＬＥＣＴ」の操作が行われることを特定することができる。
【００６９】
また、プログラムＰＧのソースコードに「ＩＮＳＥＲＴ  ＩＮＴＯ  ＯＹＡ００２ＴＢ  ＶＡＬＵＥＳ  （’０００１’，  ’サンプル’）；」という文字列が含まれている場合を想定する。この場合、特定部６０３は、上記文字列からＤＢ操作文字列「ＩＮＳＥＲＴ」を検索する。そして、特定部６０３は、上記文字列からＤＢ操作文字列「ＩＮＳＥＲＴ」に対応するテーブル文字列「ＯＹＡ００２ＴＢ」を検索する。これにより、テーブルＩＤ「ＯＹＡ００２ＴＢ」のテーブルＴＢに対して、「ＩＮＳＥＲＴ」の操作が行われることを特定することができる。
【００７０】
また、プログラムＰＧのソースコードに「ＵＰＤＡＴＥ  ＯＹＡ００３ＴＢ  ＳＥＴ  ＪＩＧＹＳ＿ＮＡＭＥ  ＝  ’サンプル’  ＷＨＥＲＥ  ＪＩＧＹＳ＿ＩＤ  ＝  ’０００１’；」という文字列が含まれている場合を想定する。この場合、特定部６０３は、上記文字列からＤＢ操作文字列「ＵＰＤＡＴＥ」を検索する。そして、特定部６０３は、上記文字列からＤＢ操作文字列「ＵＰＤＡＴＥ」に対応するテーブル文字列「ＯＹＡ００３ＴＢ」を検索する。これにより、テーブルＩＤ「ＯＹＡ００３ＴＢ」のテーブルＴＢに対して、「ＵＰＤＡＴＥ」の操作が行われることを特定することができる。
【００７１】
また、プログラムＰＧのソースコードに「ＤＥＬＥＴＥ  ＦＲＯＭ  ＯＹＡ００４ＴＢ  ＷＨＥＲＥ  ＪＩＧＹＳ＿ＩＤ  ＝  ’０００１’；」という文字列が含まれている場合を想定する。この場合、特定部６０３は、上記文字列からＤＢ操作文字列「ＤＥＬＥＴＥ」を検索する。そして、特定部６０３は、上記文字列からＤＢ操作文字列「ＤＥＬＥＴＥ」に対応するテーブル文字列「ＯＹＡ００４ＴＢ」を検索する。これにより、テーブルＩＤ「ＯＹＡ００４ＴＢ」のテーブルＴＢに対して、「ＤＥＬＥＴＥ」の操作が行われることを特定することができる。
【００７２】
なお、プログラムＰＧのソースコードを解析する具体的な処理手順例については、図１４および図１５のフローチャートを用いて後述する。また、特定された結果は、例えば、ＣＲＵＤ管理テーブル２５０に記憶される。ＣＲＵＤ管理テーブル２５０は、例えば、メモリ３０２、ディスク３０５などの記憶装置により実現される。
【００７３】
図９は、ＣＲＵＤ管理テーブル２５０の記憶内容の一例を示す説明図である。図９において、ＣＲＵＤ管理テーブル２５０は、プログラムＩＤ、テーブルＩＤ、操作種別および回数のフィールドを有し、各フィールドに情報を設定することで、ＣＲＵＤ管理情報（例えば、ＣＲＵＤ管理情報９００−１〜９００−５）をレコードとして記憶する。
【００７４】
ここで、プログラムＩＤは、プログラムＰＧを一意に識別する識別子である。テーブルＩＤは、テーブルＴＧを一意に識別する識別子である。操作種別は、プログラムＩＤのプログラムＰＧから、テーブルＩＤのテーブルＴＢに対して行われる操作の種別を示す。操作種別には、Ｃ，Ｒ，Ｕ，Ｄのいずれかの文字が設定される。
【００７５】
Ｃは、Ｃｒｅａｔｅの頭文字であり、データを挿入する操作を示す。Ｃは、ＳＱＬのＩＮＳＥＲＴ文の操作に対応する。Ｒは、Ｒｅａｄの頭文字であり、データを取り出す操作を示す。Ｒは、ＳＱＬのＳＥＬＥＣＴ文の操作に対応する。Ｕは、Ｕｐｄａｔｅの頭文字であり、データを更新する操作を示す。Ｕは、ＳＱＬのＵＰＤＡＴＥ文の操作に対応する。Ｄは、Ｄｅｌｅｔｅの頭文字であり、データを削除する操作を示す。Ｄは、ＳＱＬのＤＥＬＥＴＥ文の操作に対応する。
【００７６】
回数は、プログラムＩＤのプログラムＰＧから、テーブルＩＤのテーブルＴＢに対して、操作種別の操作が行われる回数である。例えば、プログラムＰＧからテーブルＴＢに対して、データを挿入する操作が３回行われる場合、操作種別に「Ｃ」が設定され、回数に「３」が設定される。
【００７７】
例えば、ＣＲＵＤ管理情報９００−１は、プログラムＩＤ「ＯＹＡ００１ＰＧ」のプログラムＰＧから、テーブルＩＤ「ＯＹＡ００１ＴＢ」のテーブルＴＢに対して、操作種別「Ｃ」の操作が行われる回数「１」を示す。なお、各ＣＲＵＤ管理情報には、プログラム名やテーブル名が含まれていてもよい。
【００７８】
図６の説明に戻り、生成部６０２は、生成したＣＲＵＤ一覧表における、各プログラムＰＧと、特定された該各プログラムＰＧからアクセスされるテーブルＴＢとの組み合わせに対応する箇所にマーキングする。ここで、マーキングするとは、例えば、文字、記号、図形、模様などを設定することである。
【００７９】
具体的には、例えば、生成部６０２は、図９に示したＣＲＵＤ管理テーブル２５０を参照して、ＣＲＵＤ一覧表における、プログラムＰＧと当該プログラムＰＧからアクセスされるテーブルＴＢとの組み合わせに対応する箇所（セル）に、特定された操作種別に応じた文字を設定する。なお、ＣＲＵＤ一覧表の構造は、例えば、図７に示したプログラム管理テーブル２３０および図８に示したテーブル管理テーブル２４０から特定される。
【００８０】
例えば、プログラムＰＧがテーブルＴＢにアクセスする際の操作種別が「Ｃ」の場合、生成部６０２は、プログラムＰＧとテーブルＴＢとの組み合わせに対応するセルに文字「Ｃ」を設定する。また、操作種別が「Ｒ」の場合、生成部６０２は、プログラムＰＧとテーブルＴＢとの組み合わせに対応するセルに文字「Ｒ」を設定する。また、操作種別が「Ｕ」の場合、生成部６０２は、プログラムＰＧとテーブルＴＢとの組み合わせに対応するセルに文字「Ｕ」を設定する。また、操作種別が「Ｄ」の場合、生成部６０２は、プログラムＰＧとテーブルＴＢとの組み合わせに対応するセルに文字「Ｄ」を設定する。
【００８１】
また、プログラムＰＧがテーブルＴＢにアクセスする際の操作種別として、複数の操作種別が特定される場合がある。この場合、生成部６０２は、例えば、複数の操作種別それぞれに応じた文字を全て付すことにしてもよく、また、複数の操作種別のうちのいずれかの操作種別に応じた文字を付すことにしてもよい。複数の操作種別それぞれに応じた文字を全て付す場合には、特定部６０３は、「Ｃ＞Ｒ＞Ｕ＞Ｄ」の順番で付すことにしてもよい。
【００８２】
一例として、プログラムＩＤ「ＯＹＡ００１ＰＧ」のプログラムＰＧと、テーブルＩＤ「ＯＹＡ００３ＴＢ」のテーブルＴＢとの組み合わせを例に挙げる。この場合、生成部６０２は、ＣＲＵＤ管理テーブル２５０を参照して、プログラムＩＤ「ＯＹＡ００１ＰＧ」とテーブルＩＤ「ＯＹＡ００３ＴＢ」との組み合わせに対応する操作種別「Ｃ」、「Ｒ」および「Ｄ」を特定する。そして、生成部６０２は、ＣＲＵＤ一覧表におけるプログラムＩＤ「ＯＹＡ００１ＰＧ」とテーブルＩＤ「ＯＹＡ００３ＴＢ」との組み合わせに対応するセルに、「ＣＲＤ」を設定（プロット）する。
【００８３】
表示制御部６０４は、プログラムＰＧと当該プログラムＰＧからアクセスされるテーブルＴＢとの組み合わせに対応する箇所にマーキングされたＣＲＵＤ一覧表を表示する制御を行う。具体的には、例えば、表示制御部６０４は、図２に示したクライアント装置２０２からの表示要求に応じて、マーキングされたＣＲＵＤ一覧表をクライアント装置２０２に表示することにしてもよい。
【００８４】
この際、表示制御部６０４は、例えば、マーキングされたＣＲＵＤ一覧表を表示する画面の画面情報を生成して、クライアント装置２０２に送信することにしてもよい。これにより、クライアント装置２０２において、マーキングされたＣＲＵＤ一覧表を含む画面を表示することができる。また、表示制御部６０４は、マーキングされたＣＲＵＤ一覧表のみをクライアント装置２０２に送信することにしてもよい。この場合、クライアント装置２０２は、例えば、ＷＥＢサーバからＣＲＵＤ一覧参照用のＷＥＢ画面を取得して、ＣＲＵＤ一覧表を表示してもよい。
【００８５】
また、表示制御部６０４は、マーキングされたＣＲＵＤ一覧表を、自装置の不図示のディスプレイに表示してもよく、また、不図示のプリンタへ印刷出力してもよい。なお、マーキングされたＣＲＵＤ一覧表の表示例については、図１０を用いて後述する。
【００８６】
また、特定部６０３は、各テーブルＴＢについて、特定した結果（各プログラムＰＧからアクセスされるテーブルＴＢ）に基づいて、各プログラムＰＧから各テーブルＴＢにアクセスする回数を計数することにしてもよい。そして、特定部６０３は、各テーブルＴＢについて、計数した各プログラムＰＧがアクセスする回数を積算することにより、アクセスＳＱＬ数を算出することにしてもよい。アクセスＳＱＬ数は、各テーブルＴＢが、対象システムの構成要素であるプログラムＰＧからアクセスされる合計回数を示す。
【００８７】
具体的には、例えば、特定部６０３は、ＣＲＵＤ管理テーブル２５０を参照して、プログラムＰＧからテーブルＴＢにアクセスする操作種別ごとの回数を特定する。つぎに、特定部６０３は、特定した操作種別ごとの回数を積算することにより、プログラムＰＧからテーブルＴＢにアクセスする回数を計数する。そして、特定部６０３は、各テーブルＴＢについて、計数した各プログラムＰＧがアクセスする回数を積算することにより、アクセスＳＱＬ数を算出する。
【００８８】
この場合、表示制御部６０４は、マーキングされたＣＲＵＤ一覧表を表示する際に、各テーブルＴＢについて、算出されたアクセスＳＱＬ数を、各テーブルＴＢに対応付けて表示する制御を行うことにしてもよい。各テーブルＴＢのアクセスＳＱＬ数を、ＣＲＵＤ一覧表のどの位置に表示するかは、任意に設定可能である。
【００８９】
なお、各テーブルＴＢに対応付けてアクセスＳＱＬ数を表示する場合のＣＲＵＤ一覧表の表示例については、図１０を用いて後述する。
【００９０】
また、取得部６０１は、データベースＤＢに対して行われた操作について、データベースＤＢの性能劣化に影響を及ぼす度合いを示す値（以下、「コスト値」という）を含むＳＱＬ統計情報を取得することにしてもよい。ここで、データベースＤＢは、対象システムのデータベースであり、対象システムの構成要素であるテーブルＴＢを格納する。データベースＤＢに対する操作は、プログラムＰＧからテーブルＴＢへのアクセスに相当する。
【００９１】
具体的には、例えば、取得部６０１は、図２に示したデータベースサーバ２０１から、データベースＤＢの性能劣化に影響を及ぼす度合いが高いワーストＮ位までの操作についてのＳＱＬ統計情報を取得することにしてもよい。Ｎは、任意に設定可能であり、例えば、１〜１０程度の値に設定される。ＳＱＬ統計情報には、例えば、アクセス元であるプログラムＰＧの識別情報（例えば、プログラムＩＤ）と、データベースＤＢに対して行われた操作を示すＳＱＬ文とがさらに含まれる。
【００９２】
なお、データベースサーバ２０１からＳＱＬ統計情報を取得する際の具体的な処理手順例については、図１６〜図１８を用いて後述する。
【００９３】
また、特定部６０３は、取得されたＳＱＬ統計情報に基づいて、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高いプログラムＰＧとテーブルＴＢとの組み合わせを特定することにしてもよい。具体的には、例えば、特定部６０３は、ＳＱＬ統計情報に含まれるプログラムＩＤから、アクセス元であるプログラムＰＧを特定する。
【００９４】
また、特定部６０３は、ＳＱＬ統計情報に含まれるＳＱＬ文を解析して、アクセス先であるテーブルＴＢを特定する。より詳細に説明すると、例えば、特定部６０３は、ＳＱＬ文の先頭から末尾まで行単位のデータを取得して、「ＯＹＡ＃＃＃ＴＢ」という文字列を検索することにより、テーブルＩＤを特定する。
【００９５】
これにより、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高いプログラムＰＧとテーブルＴＢとの組み合わせを特定することができる。以下の説明では、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高いプログラムＰＧとテーブルＴＢとの組み合わせを「第２の組み合わせ」と表記する場合がある。
【００９６】
また、表示制御部６０４は、マーキングされたＣＲＵＤ一覧表を表示する際に、特定された第２の組み合わせに対応する箇所を強調表示する制御を行うことにしてもよい。ここで、箇所（セル）を強調表示するとは、他の箇所（セル）とは異なる態様で表示することであり、例えば、セル内を網掛け表示したり、セルの枠を太線や点線で表示したりすることである。
【００９７】
また、表示制御部６０４は、強調表示した箇所が選択されたことに応じて、ＳＱＬ統計情報に含まれるコスト値およびＳＱＬ文を表示することにしてもよい。この際、表示制御部６０４は、例えば、コスト値およびＳＱＬ文をポップアップ表示することにしてもよい。強調表示された箇所（セル）の選択は、例えば、クライアント装置２０２のユーザの操作入力により行われる。
【００９８】
なお、第２の組み合わせに対応する箇所（セル）を強調表示する場合のＣＲＵＤ一覧表の表示例については、図１１を用いて後述する。
【００９９】
また、情報処理装置１０１の各機能部は、作業支援システム２００内の情報処理装置１０１とは異なる他のコンピュータ、例えば、データベースサーバ２０１またはクライアント装置２０２で実現することにしてもよい。また、情報処理装置１０１の各機能部は、作業支援システム２００内の複数のコンピュータにより実現されることにしてもよい。
【０１００】
（ＣＲＵＤ一覧表の表示例）
つぎに、ＣＲＵＤ一覧表の表示例について説明する。ここでは、情報処理装置１０１の制御に従って、クライアント装置２０２の不図示のディスプレイに、ＣＲＵＤ一覧表を表示する場合を例に挙げて説明する。
【０１０１】
図１０は、ＣＲＵＤ一覧表の表示例を示す説明図（その１）である。図１０において、ＣＲＵＤ一覧表１０００は、縦軸にプログラムＰＧのプログラムＩＤおよびプログラム名を並べ、横軸にテーブルＴＢのテーブルＩＤ（図１０中、「ＩＤ」と表記）およびテーブル名（図１０中、「名称」と表記）を並べた表形式のアクセス一覧表である。なお、図１０中、縦軸のＮｏは「行番号」に相当し、横軸のＮｏは「列番号」に相当する。
【０１０２】
ＣＲＵＤ一覧表１０００において、プログラムＰＧと、当該プログラムＰＧからアクセスされるテーブルＴＢとの組み合わせに対応するセルには、操作種別に応じた文字（Ｃ，Ｒ，Ｕ，Ｄ）が設定されている。例えば、プログラムＩＤ「ＯＹＡ００１ＰＧ」のプログラムＰＧと、テーブルＩＤ「ＯＹＡ００３ＴＢ」のテーブルＴＢとの組み合わせに対応するセル１００１には、「ＣＲＤ」という文字列が設定されている。
【０１０３】
ＣＲＵＤ一覧表１０００によれば、クライアント装置２０２のユーザは、プログラムＰＧからテーブルＴＢに対して、Ｃｒｅａｔｅ（生成）、Ｒｅａｄ（読み取り）、Ｕｐｄａｔｅ（更新）、Ｄｅｌｅｔｅ（削除）のいずれの操作が行われるのかを直感的に把握することができる。
【０１０４】
例えば、セル１００１には、「ＣＲＤ」という文字列が設定されている。このため、ユーザは、プログラムＩＤ「ＯＹＡ００１ＰＧ」のプログラムＰＧから、テーブルＩＤ「ＯＹＡ００３ＴＢ」のテーブルＴＢに対して、Ｃｒｅａｔｅ（生成）、Ｒｅａｄ（読み取り）およびＤｅｌｅｔｅ（削除）の操作が行われることを把握することができる。
【０１０５】
また、ＣＲＵＤ一覧表１０００において、各テーブルＴＢに対応付けて、アクセスＳＱＬ数が表示されている。アクセスＳＱＬ数は、各テーブルＴＢについて、対象システムの構成要素であるプログラムＰＧがアクセスする回数を積算した値である。例えば、テーブルＩＤ「ＯＹＡ００１ＴＢ」のテーブルＴＢに対応するセル１００２には、アクセスＳＱＬ数「４」が設定されている。
【０１０６】
アクセスＳＱＬ数によれば、ユーザは、各テーブルＴＢに対して、どれだけのアクセス数が見込まれるかを把握することができる。例えば、セル１００２には、アクセスＳＱＬ数「４」が設定されている。このため、テーブルＩＤ「ＯＹＡ００１ＴＢ」のテーブルＴＢに対して、４回のアクセスが見込まれることを把握することができる。
【０１０７】
つぎに、図１１を用いて、第２の組み合わせに対応する箇所（セル）を強調表示する場合のＣＲＵＤ一覧表の表示例について説明する。第２の組み合わせは、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高いプログラムＰＧとテーブルＴＢとの組み合わせである。ただし、ここでは、データベースＤＢの性能劣化に影響を及ぼす度合いが最も高いプログラムＰＧとテーブルＴＢとの組み合わせに対応する箇所のみを強調表示する場合を例に挙げて説明する。
【０１０８】
図１１は、ＣＲＵＤ一覧表の表示例を示す説明図（その２）である。ＣＲＵＤ一覧表１０００において、セル１１０１が強調表示（網掛け表示）されている。セル１１０１は、データベースＤＢの性能劣化に影響を及ぼす度合いが最も高いプログラムＰＧとテーブルＴＢとの組み合わせに対応するセルである。
【０１０９】
これにより、ユーザは、データベースＤＢの性能劣化に影響を及ぼす度合いが最も高いプログラムＰＧとテーブルＴＢとの組み合わせを直感的に把握することができる。図１１の例では、ユーザは、プログラムＩＤ「ＯＹＡ００８ＰＧ」のプログラムＰＧと、テーブルＩＤ「ＯＹＡ００６ＴＢ」のテーブルＴＢとの組み合わせが、データベースＤＢの性能劣化に影響を及ぼす度合いが最も高いことがわかる。
【０１１０】
また、ＣＲＵＤ一覧表１０００において、クライアント装置２０２の不図示の入力装置を用いたユーザの操作入力により、セル１１０１を選択すると、例えば、図１２に示すような詳細情報１２００がポップアップ表示される。ここで、詳細情報１２００の具体例について説明する。
【０１１１】
図１２は、詳細情報１２００の具体例を示す説明図である。図１２において、詳細情報１２００は、Ｍｏｄｕｌｅと、コスト値と、ＳＱＬ  Ｔｅｘｔと、を含む。ここで、Ｍｏｄｕｌｅは、プログラムＩＤを示す。コスト値は、データベースＤＢの性能劣化に影響を及ぼす度合いを示す。ＳＱＬ  Ｔｅｘｔは、ＳＱＬ文の詳細情報である。ただし、図１２に示すＳＱＬ文の内容は一例であり、ＳＱＬ文に含まれるテーブルＩＤは、図１１に示したＣＲＵＤ一覧表１０００のテーブルＩＤとは対応していない。
【０１１２】
詳細情報１２００によれば、ユーザは、ＳＱＬ  Ｔｅｘｔを参照することで、データベースＤＢの性能劣化に影響を及ぼす度合いが高い操作の詳細を把握することができる。また、ユーザは、コスト値を参照することで、データベースＤＢの性能劣化に影響を及ぼす度合い評価して、何らかの対策をとるべきか否かを判断することができる。
【０１１３】
（情報処理装置１０１の生成処理手順）
つぎに、図１３を用いて、情報処理装置１０１の生成処理手順について説明する。情報処理装置１０１の生成処理は、例えば、クライアント装置２０２のユーザからの指示に応じて実行が開始される。
【０１１４】
図１３は、情報処理装置１０１の生成処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、情報処理装置１０１は、対象システムの構成要素であるプログラムＰＧをリスト化して示すプログラム一覧情報を取得する（ステップＳ１３０１）。そして、情報処理装置１０１は、取得したプログラム一覧情報に基づいて、縦軸にプログラムＰＧのプログラムＩＤおよびプログラム名を並べて、各プログラムＰＧのプログラム管理情報を、プログラム管理テーブル２３０に登録する（ステップＳ１３０２）。
【０１１５】
つぎに、情報処理装置１０１は、対象システムの構成要素であるテーブルＴＢをリスト化して示すテーブル一覧情報を取得する（ステップＳ１３０３）。そして、情報処理装置１０１は、取得したテーブル一覧情報に基づいて、横軸にテーブルＴＢのテーブルＩＤおよびテーブル名を並べて、各テーブルＴＢのテーブル管理情報を、テーブル管理テーブル２４０に登録する（ステップＳ１３０４）。
【０１１６】
つぎに、情報処理装置１０１は、取得したプログラム一覧情報から選択されていない未選択のプログラムＩＤを選択する（ステップＳ１３０５）。そして、情報処理装置１０１は、プログラムソースＤＢ２２０から、選択したプログラムＩＤのプログラムＰＧのソースコードを取得する（ステップＳ１３０６）。
【０１１７】
つぎに、情報処理装置１０１は、取得したソースコードを解析するソースコード解析処理を実行する（ステップＳ１３０７）。ソースコード解析処理の具体的な処理手順については、図１４および図１５を用いて後述する。ソースコード解析処理では、ＣＲＵＤ管理テーブル２５０が作成される。
【０１１８】
そして、情報処理装置１０１は、プログラム一覧情報から選択されていない未選択のプログラムＩＤがあるか否かを判断する（ステップＳ１３０８）。ここで、未選択のプログラムＩＤがある場合（ステップＳ１３０８：Ｙｅｓ）、情報処理装置１０１は、ステップＳ１３０５に戻る。
【０１１９】
一方、未選択のプログラムＩＤがない場合（ステップＳ１３０８：Ｎｏ）、情報処理装置１０１は、プログラム管理テーブル２３０、テーブル管理テーブル２４０およびＣＲＵＤ管理テーブル２５０を参照して、プログラムＰＧと当該プログラムＰＧからアクセスされるテーブルＴＢとの組み合わせに対応するセルに操作種別に応じた文字を設定したＣＲＵＤ一覧表を生成する（ステップＳ１３０９）。
【０１２０】
そして、情報処理装置１０１は、ＣＲＵＤ管理テーブル２５０を参照して、各テーブルＴＢのアクセスＳＱＬ数を算出する（ステップＳ１３１０）。つぎに、情報処理装置１０１は、生成したＣＲＵＤ一覧表に、算出した各テーブルＴＢのアクセスＳＱＬ数を設定する（ステップＳ１３１１）。
【０１２１】
そして、情報処理装置１０１は、各テーブルＴＢのアクセスＳＱＬ数を設定したＣＲＵＤ一覧表を、クライアント装置２０２に表示して（ステップＳ１３１２）、本フローチャートによる一連の処理を終了する。この際、情報処理装置１０１は、後述の図１７に示す統計情報管理テーブル１７００から特定される第２の組み合わせに対応する箇所を強調表示することにしてもよい。
【０１２２】
これにより、クライアント装置２０２からの指示に応じて、プログラムＰＧからテーブルＴＢに対して、Ｃｒｅａｔｅ（生成）、Ｒｅａｄ（読み取り）、Ｕｐｄａｔｅ（更新）、Ｄｅｌｅｔｅ（削除）のいずれの操作が行われるのかを示すＣＲＵＤ一覧表を生成して提示することができる。
【０１２３】
つぎに、図１４および図１５を用いて、ステップＳ１３０７のソースコード解析処理の具体的な処理手順について説明する。
【０１２４】
図１４および図１５は、ソースコード解析処理の具体的処理手順の一例を示すフローチャートである。図１４のフローチャートにおいて、まず、情報処理装置１０１は、ステップＳ１３０６において取得したソースコードの先頭から、取得されていない未取得の１行分のデータを取得する（ステップＳ１４０１）。
【０１２５】
つぎに、情報処理装置１０１は、取得したデータからコメント文を削除する（ステップＳ１４０２）。例えば、情報処理装置１０１は、コメント文をＮＵＬＬに置換する。そして、情報処理装置１０１は、コメント文を削除したデータから、ＤＢ操作文字列を検索する（ステップＳ１４０３）。
【０１２６】
つぎに、情報処理装置１０１は、ＤＢ操作文字列が検索されたか否かを判断する（ステップＳ１４０４）。ここで、ＤＢ操作文字列が検索されなかった場合（ステップＳ１４０４：Ｎｏ）、情報処理装置１０１は、図１５に示すステップＳ１５０１に移行する。一方、ＤＢ操作文字列が検索された場合（ステップＳ１４０４：Ｙｅｓ）、情報処理装置１０１は、ＤＢ操作文字列が「ＵＰＤＡＴＥ」であるか否かを判断する（ステップＳ１４０５）。
【０１２７】
ここで、ＤＢ操作文字列が「ＵＰＤＡＴＥ」ではない場合（ステップＳ１４０５：Ｎｏ）、情報処理装置１０１は、ステップＳ１４０７に移行する。一方、ＤＢ操作文字列が「ＵＰＤＡＴＥ」の場合（ステップＳ１４０５：Ｙｅｓ）、情報処理装置１０１は、ＤＢ操作文字列の前に“ＦＯＲ”が存在するか否かを判断する（ステップＳ１４０６）。
【０１２８】
ここで、ＤＢ操作文字列の前に“ＦＯＲ”が存在する場合（ステップＳ１４０６：Ｙｅｓ）、情報処理装置１０１は、図１５に示すステップＳ１５０１に移行する。一方、ＤＢ操作文字列の前に“ＦＯＲ”が存在しない場合（ステップＳ１４０６：Ｎｏ）、情報処理装置１０１は、ＤＢ操作文字列の前後文字が区切り文字であるか否かを判断する（ステップＳ１４０７）。なお、区切り文字は、例えば、ダブルコーテーション、スペース、タブ、カンマ、括弧、ＮＵＬＬなどである。
【０１２９】
ここで、ＤＢ操作文字列の前後文字が区切り文字ではない場合（ステップＳ１４０７：Ｎｏ）、情報処理装置１０１は、図１５に示すステップＳ１５０１に移行する。一方、ＤＢ操作文字列の前後文字が区切り文字の場合（ステップＳ１４０７：Ｙｅｓ）、情報処理装置１０１は、テーブル操作区分にＤＢ操作文字列を設定して（ステップＳ１４０８）、図１５に示すステップＳ１５０１に移行する。
【０１３０】
図１５のフローチャートにおいて、まず、情報処理装置１０１は、コメント文を削除したデータから、テーブル文字列を検索する（ステップＳ１５０１）。テーブル文字列は、例えば、「ＯＹＡ＃＃＃ＴＢ」である。つぎに、情報処理装置１０１は、テーブル文字列が検索されたか否かを判断する（ステップＳ１５０２）。
【０１３１】
ここで、テーブル文字列が検索されなかった場合（ステップＳ１５０２：Ｎｏ）、情報処理装置１０１は、ステップＳ１５０５に移行する。一方、テーブル文字列が検索された場合（ステップＳ１５０２：Ｙｅｓ）、情報処理装置１０１は、テーブル文字列の前後文字が区切り文字であるか否かを判断する（ステップＳ１５０３）。
【０１３２】
ここで、テーブル文字列の前後文字が区切り文字ではない場合（ステップＳ１５０３：Ｎｏ）、情報処理装置１０１は、ステップＳ１５０５に移行する。一方、テーブル文字列の前後文字が区切り文字の場合（ステップＳ１５０３：Ｙｅｓ）、情報処理装置１０１は、ＣＲＵＤ管理テーブル２５０を更新する（ステップＳ１５０４）。
【０１３３】
具体的には、例えば、情報処理装置１０１は、ＣＲＵＤ管理テーブル２５０から、ステップＳ１３０５において選択したプログラムＩＤと、ステップＳ１５０２において検索されたテーブル文字列と、ステップＳ１４０８において設定されたテーブル操作区分との組み合わせに対応するレコードを検索する。ここで、レコードが検索された場合、情報処理装置１０１は、検索したレコードの回数をインクリメントする。一方、レコードが検索されなかった場合、情報処理装置１０１は、プログラムＩＤとテーブル文字列とテーブル操作区分との組み合わせに対応する新規レコードをＣＲＵＤ管理テーブル２５０に登録する。新規レコードの回数は「１」とする。
【０１３４】
つぎに、情報処理装置１０１は、ソースコードから取得されていない未取得行のデータがあるか否かを判断する（ステップＳ１５０５）。ここで、未取得行のデータがある場合（ステップＳ１５０５：Ｙｅｓ）、情報処理装置１０１は、ステップＳ１４０１に戻る。一方、未取得行のデータがない場合（ステップＳ１５０５：Ｎｏ）、情報処理装置１０１は、ソースコード解析処理を呼び出したステップに戻る。
【０１３５】
これにより、プログラムＰＧからアクセスされるテーブルＴＢと、プログラムＰＧがテーブルＴＢにアクセスする際の操作種別とを特定して、ＣＲＵＤ管理テーブル２５０に登録することができる。また、プログラムＰＧがテーブルＴＢにアクセスする操作種別ごとの回数を計数することができる。
【０１３６】
（情報処理装置１０１の影響分析情報取得処理手順）
つぎに、図１６〜図１８を用いて、情報処理装置１０１の影響分析情報取得処理について説明する。情報処理装置１０１の影響分析情報取得処理は、例えば、１時間ごとに定期的に実行される。
【０１３７】
まず、図１６を用いて、データベースサーバ２０１から取得されるレポート情報ＲＴの具体例について説明する。
【０１３８】
図１６は、レポート情報ＲＴの具体例を示す説明図である。図１６において、レポート情報ＲＴは、データベースＤＢの性能劣化に影響を及ぼす度合いが高いワースト１０の操作についてのレポートを含む。各レポートは、プログラムＰＧと、テーブルＴＢと、操作種別との組み合わせごとに生成される。ただし、図１６では、ワースト１，２のレポート１６０１，１６０２のみ示している。
【０１３９】
各レポート１６０１，１６０２において、Ｍｏｄｕｌｅの後の文字列は、プログラムＰＧのプログラムＩＤである。また、Ｍｏｄｕｌｅの一行前のＨａｓｈ  Ｖａｌｕｅの値は、データベースＤＢに対して行われた操作を識別する情報である。
【０１４０】
つぎに、図１７を用いて、情報処理装置１０１が用いる統計情報管理テーブル１７００の記憶内容について説明する。統計情報管理テーブル１７００は、例えば、メモリ３０２、ディスク３０５などの記憶装置により実現される。
【０１４１】
図１７は、統計情報管理テーブル１７００の記憶内容の一例を示す説明図である。図１７において、統計情報管理テーブル１７００は、プログラムＩＤ、テーブルＩＤ、ＳＱＬ文、Ｈａｓｈ  Ｖａｌｕｅ値、処理フラグおよび処理日時のフィールドを有する。各フィールドに情報を設定することで、統計情報（例えば、統計情報１７００−１，１７００−２）がレコードとして記憶される。
【０１４２】
ここで、プログラムＩＤは、プログラムＰＧを一意に識別する識別子である。テーブルＩＤは、テーブルＴＧを一意に識別する識別子である。ＳＱＬ文は、データベースＤＢに対して行われた操作を示すＳＱＬ文である。Ｈａｓｈ  Ｖａｌｕｅ値は、データベースＤＢに対して行われた操作を識別する情報である。
【０１４３】
処理フラグは、レポートの処理状況を示すフラグである。ここでは、処理フラグには、０，１，２のいずれかが設定される。処理フラグ「０」は、レポートが未処理であることを示す。処理フラグ「１」は、レポートが処理済みであることを示す。処理フラグ「２」は、前回のレポートであることを示す。処理日時は、レポートが処理された日時を示す。
【０１４４】
つぎに、図１８を用いて、情報処理装置１０１のＳＱＬ統計情報取得処理手順について説明する。
【０１４５】
図１８は、情報処理装置１０１のＳＱＬ統計情報取得処理手順の一例を示すフローチャートである。図１８のフローチャートにおいて、まず、情報処理装置１０１は、データベースサーバ２０１からレポート情報ＲＴを取得する（ステップＳ１８０１）。
【０１４６】
そして、情報処理装置１０１は、取得したレポート情報ＲＴから選択されていない未選択のレポートを選択する（ステップＳ１８０２）。つぎに、情報処理装置１０１は、選択したレポートから、プログラムＩＤを取得する（ステップＳ１８０３）。具体的には、例えば、情報処理装置１０１は、Ｍｏｄｕｌｅの後の「ＯＹＡ＃＃＃ＰＧ」という文字列を検索することにより、プログラムＩＤを取得する。検索対象となる文字列は、大文字によって表されている。
【０１４７】
つぎに、情報処理装置１０１は、選択したレポートから、Ｈａｓｈ  Ｖａｌｕｅ値を取得する（ステップＳ１８０４）。具体的には、例えば、情報処理装置１０１は、Ｍｏｄｕｌｅの一行前のデータのうちの７項目目の値を、Ｈａｓｈ  Ｖａｌｕｅ値として特定する。つぎに、情報処理装置１０１は、統計情報管理テーブル１７００から、取得したプログラムＩＤに対応する処理フラグ「１」のＨａｓｈ  Ｖａｌｕｅ値を取得する（ステップＳ１８０５）。
【０１４８】
そして、情報処理装置１０１は、ステップＳ１８０４において取得したＨａｓｈ  Ｖａｌｕｅ値を今回値とし、ステップＳ１８０５において取得したＨａｓｈ  Ｖａｌｕｅ値を前回値として、データベースサーバ２０１からＳＱＬ統計情報を取得する（ステップＳ１８０６）。
【０１４９】
つぎに、情報処理装置１０１は、取得したプログラムＩＤと、ステップＳ１８０４において取得したＨａｓｈ  Ｖａｌｕｅ値と、取得したＳＱＬ統計情報に含まれるＳＱＬ文とを含む統計情報を、統計情報管理テーブル１７００に新規登録する（ステップＳ１８０７）。ただし、この時点では、新規登録される統計情報のテーブルＩＤは未設定である。また、処理フラグは「０」である。処理日時には、現時点の日時が設定される。
【０１５０】
そして、情報処理装置１０１は、取得したＳＱＬ統計情報に含まれるＳＱＬ文を解析して、テーブルＩＤを取得する（ステップＳ１８０８）。具体的には、例えば、情報処理装置１０１は、ＳＱＬ文の先頭から末尾まで行単位のデータを取得して、「ＯＹＡ＃＃＃ＴＢ」という文字列を検索することにより、テーブルＩＤを取得する。
【０１５１】
つぎに、情報処理装置１０１は、統計情報管理テーブル１７００に新規登録した統計情報に、取得したテーブルＩＤを設定する（ステップＳ１８０９）。そして、情報処理装置１０１は、統計情報管理テーブル１７００内の今回・前回の統計情報の処理フラグを更新する（ステップＳ１８１０）。
【０１５２】
今回の統計情報は、新規登録された統計情報である。前回の統計情報は、ステップＳ１８０５において取得されたＨａｓｈ  Ｖａｌｕｅ値を含む統計情報である。情報処理装置１０１は、今回の統計情報の処理フラグに「１」を設定する。また、情報処理装置１０１は、前回の統計情報の処理フラグに「２」を設定する。なお、新規登録された統計情報に、取得されたＳＱＬ統計情報に含まれるコスト値を含めることにしてもよい。
【０１５３】
つぎに、情報処理装置１０１は、レポート情報ＲＴから選択されていない未選択のレポートがあるか否かを判断する（ステップＳ１８１１）。ここで、未選択のレポートがある場合（ステップＳ１８１１：Ｙｅｓ）、情報処理装置１０１は、ステップＳ１８０２に戻る。
【０１５４】
一方、未選択のレポートがない場合（ステップＳ１８１１：Ｎｏ）、情報処理装置１０１は、本フローチャートによる一連の処理を終了する。これにより、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高い操作についてのＳＱＬ統計情報を取得することができる。また、ＳＱＬ統計情報に含まれるＳＱＬ文等を統計情報管理テーブル１７００に登録することができる。
【０１５５】
統計情報管理テーブル１７００によれば、情報処理装置１０１は、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高いプログラムＰＧとテーブルＴＢとの組み合わせ（第２の組み合わせ）、および、ＳＱＬ文の詳細情報を特定することができる。
【０１５６】
具体的には、例えば、情報処理装置１０１は、統計情報管理テーブル１７００を参照して、処理フラグ「１」の統計情報から特定されるプログラムＰＧとテーブルＴＢとの組み合わせを、第２の組み合わせとして特定する。そして、情報処理装置１０１は、ＣＲＵＤ一覧表を表示する際に、特定した第２の組み合わせに対応する箇所を強調表示することができる。
【０１５７】
以上説明したように、実施の形態にかかる情報処理装置１０１によれば、対象システムの構成要素であるプログラムＰＧとテーブルＴＢとを特定する構成要素情報を取得し、取得した構成要素情報に基づいて、縦軸（または、横軸）にプログラムＰＧの識別情報を並べ、横軸（または、縦軸）にテーブルＴＢの識別情報を並べた表形式のＣＲＵＤ一覧表を生成することができる。ただし、この時点では、ＣＲＵＤ一覧表における各プログラムＰＧと各テーブルＴＢとの組み合わせに対応する箇所（セル）は「空欄」である。また、情報処理装置１０１によれば、対象システムの構成要素である各プログラムＰＧについて、各プログラムＰＧのソースコードに基づいて、システムの構成要素であるテーブルＴＢのうち、各プログラムＰＧからアクセスされるテーブルＴＢと、当該テーブルＴＢに各プログラムＰＧがアクセスする際の操作種別とを特定することができる。そして、情報処理装置１０１によれば、生成したＣＲＵＤ一覧表における、プログラムＰＧと当該プログラムＰＧからアクセスされるテーブルＴＢとの組み合わせに対応する箇所に、特定した操作種別に応じたマーキング、例えば、文字、記号、図形、模様のいずれかを設定することができる。
【０１５８】
これにより、対象システムの構成要素であるプログラムＰＧからテーブルＴＢに対して、Ｃｒｅａｔｅ（生成）、Ｒｅａｄ（読み取り）、Ｕｐｄａｔｅ（更新）、Ｄｅｌｅｔｅ（削除）のいずれの操作が行われるのかを容易に特定可能なＣＲＵＤ一覧表を生成することができる。また、プログラムＰＧのソースコードからアクセス対象のテーブルＴＢを洗い出してＣＲＵＤ一覧表に自動で反映することができるため、ＣＲＵＤ一覧表の作成や更新にかかる作業負荷を削減することができる。このため、日々機能改修が行われるようなシステムにおいても、ＣＲＵＤ一覧表が陳腐化するのを防いで、使用する側（例えば、改修者）のリスクを排除することができる。また、対象システムの改修を行うにあたり、ＣＲＵＤ一覧表から改修にともなう影響範囲を把握できるため、障害発生前に事前に対策をとることが可能となる。
【０１５９】
また、情報処理装置１０１によれば、データベースＤＢに対して行われた操作について、データベースＤＢの性能劣化に影響を及ぼす度合いを示すコスト値を含むＳＱＬ統計情報を取得し、取得したＳＱＬ統計情報に基づいて、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高いプログラムＰＧとテーブルＴＢとの組み合わせを特定することができる。そして、情報処理装置１０１によれば、マーキングしたＣＲＵＤ一覧表を表示する際に、特定された第２の組み合わせに対応する箇所を強調表示する制御を行うことができる。
【０１６０】
これにより、データベースＤＢの性能劣化に影響を及ぼす度合いが相対的に高い操作が行われているプログラムＰＧとテーブルＴＢとの組み合わせを特定可能にして、ボトルネックとなっている操作を絞り込みやすくさせることができる。また、データベースの専門知識がなくても、レスポンスの問題箇所を直感的に把握可能にすることができる。
【０１６１】
また、情報処理装置１０１によれば、強調表示した箇所が選択されたことに応じて、ＳＱＬ統計情報に含まれるコスト値およびＳＱＬ文をポップアップ表示することができる。これにより、ボトルネックとなっている可能性がある操作についての詳細な内容を把握可能にして、実際に対策をとるべきか、どのような対策をとるべきかといったことの判断に役立てることができる。
【０１６２】
また、情報処理装置１０１によれば、各テーブルＴＢについて、特定した各プログラムＰＧからアクセスされるテーブルＴＢに基づいて、各プログラムＰＧから各テーブルＴＢにアクセスする回数を計数することができる。そして、情報処理装置１０１によれば、マーキングしたＣＲＵＤ一覧表を表示する際に、各テーブルＴＢについて、計数した各プログラムＰＧがアクセスする回数を積算したアクセスＳＱＬ数を各テーブルＴＢに対応付けて表示する制御を行うことができる。
【０１６３】
これにより、各テーブルＴＢに対して、どれだけのアクセス数が見込まれるかを特定可能にすることができる。この結果、負荷がかかるテーブルＴＢを推定して、適切な対応をとることが可能となり、トラブルを未然に防ぐことができる。
【０１６４】
これらのことから、情報処理装置１０１によれば、ＣＲＵＤ一覧表の生成を自動化することで、システムの開発者や保守作業員のＣＲＵＤ一覧表の作成にかかる工数を削減することができるとともに、システムの改修にともなうトラブルを未然に防ぐことができる。
【０１６５】
例えば、ＣＲＵＤ一覧表の作成について、保守作業員の調査に要する工数を「１２人日／年」とし、開発者によるテーマ当たりの改定に要する工数を「２人日／テーマ」とする。１年間に３０件の開発テーマが発生するとする。この場合、３．６人月／年（＝１２人日／年＋２人日／テーマ×３０）の工数を削減することが可能となる。また、トラブルを未然に防ぐことで、システムが安定化して生産停止時間を削減することができる。また、トラブル発生時に費やされていたオーバーヘッド分の工数も削減することができる（例えば、１回当たり１時間程度）。
【０１６６】
なお、本実施の形態で説明した生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本生成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本生成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１６７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１６８】
（付記１）システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得し、
取得した前記構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成し、
前記システムの構成要素である各プログラムについて、前記各プログラムのソースコードに基づいて、前記システムの構成要素であるデータのうち、前記各プログラムからアクセスされるデータを特定し、
生成した前記アクセス一覧表における、前記各プログラムと、特定した前記データとの組み合わせに対応する箇所にマーキングする、
処理をコンピュータに実行させることを特徴とする生成プログラム。
【０１６９】
（付記２）前記特定する処理は、
特定した前記データに前記各プログラムがアクセスする際の操作種別をさらに特定し、
前記マーキングする処理は、
特定した前記操作種別に応じた文字、記号、図形、模様のいずれかを前記箇所に設定する、ことを特徴とする付記１に記載の生成プログラム。
【０１７０】
（付記３）前記システムの構成要素であるデータを格納するデータベースに対して行われた操作について、前記データベースの性能劣化に影響を及ぼす度合いを示す値を含むＳＱＬ統計情報を取得し、
取得した前記ＳＱＬ統計情報に基づいて、前記データベースの性能劣化に影響を及ぼす度合いが相対的に高いプログラムとデータとの第２の組み合わせを特定し、
前記箇所にマーキングした前記アクセス一覧表を表示する際に、特定した前記第２の組み合わせに対応する箇所を強調表示する、
処理を前記コンピュータに実行させることを特徴とする付記１または２に記載の生成プログラム。
【０１７１】
（付記４）前記システムの構成要素である各データについて、特定した前記各プログラムからアクセスされるデータに基づいて、前記各プログラムから前記各データにアクセスする回数を計数し、
前記箇所にマーキングした前記アクセス一覧表を表示する際に、前記各データについて、計数した前記各プログラムがアクセスする回数を積算した値を前記各データに対応付けて表示する、
処理を前記コンピュータに実行させることを特徴とする付記１〜３のいずれか一つに記載の生成プログラム。
【０１７２】
（付記５）前記ＳＱＬ統計情報は、前記データベースに対して行われた操作を示すＳＱＬ文を含み、
強調表示した前記第２の組み合わせに対応する箇所が選択されたことに応じて、前記ＳＱＬ統計情報に含まれる前記値と前記ＳＱＬ文とを表示する、
処理を前記コンピュータに実行させることを特徴とする付記３に記載の生成プログラム。
【０１７３】
（付記６）前記操作種別は、Ｃｒｅａｔｅ、Ｒｅａｄ、ＵｐｄａｔｅおよびＤｅｌｅｔｅのいずれかを示す、ことを特徴とする付記２に記載の生成プログラム。
【０１７４】
（付記７）システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得し、
取得した前記構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成し、
前記システムの構成要素である各プログラムについて、前記各プログラムのソースコードに基づいて、前記システムの構成要素であるデータのうち、前記各プログラムからアクセスされるデータを特定し、
生成した前記アクセス一覧表における、前記各プログラムと、特定した前記データとの組み合わせに対応する箇所にマーキングする、
処理をコンピュータが実行することを特徴とする生成方法。
【０１７５】
（付記８）システムの構成要素であるプログラムとデータとを特定する構成要素情報を取得し、
取得した前記構成要素情報に基づいて、縦軸または横軸のいずれか一方にプログラムの識別情報を並べ、他方にデータの識別情報を並べた表形式のアクセス一覧表を生成し、
前記システムの構成要素である各プログラムについて、前記各プログラムのソースコードに基づいて、前記システムの構成要素であるデータのうち、前記各プログラムからアクセスされるデータを特定し、
生成した前記アクセス一覧表における、前記各プログラムと、特定した前記データとの組み合わせに対応する箇所にマーキングする、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【０１７６】
１０１  情報処理装置
１１０  構成要素情報
１２０  アクセス一覧表
１２１，１２２，１２３，１２４，１００１，１００２，１１０１  セル
２００  作業支援システム
２０１  データベースサーバ
２０２  クライアント装置
２１０  ネットワーク
２２０  プログラムソースＤＢ
２３０  プログラム管理テーブル
２４０  テーブル管理テーブル
２５０  ＣＲＵＤ管理テーブル
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  Ｉ／Ｆ
３０４  ディスクドライブ
３０５  ディスク
４００  プログラム一覧情報
５００  テーブル一覧情報
６０１  取得部
６０２  生成部
６０３  特定部
６０４  表示制御部
１０００  ＣＲＵＤ一覧表
１２００  詳細情報
１６０１，１６０２  レポート
１７００  統計情報管理テーブル
ＲＴ  レポート情報
【図１】
2019215686.tif 000003
【図２】
2019215686.tif 000004
【図３】
2019215686.tif 000005
【図４】
2019215686.tif 000006
【図５】
2019215686.tif 000007
【図６】
2019215686.tif 000008
【図７】
2019215686.tif 000009
【図８】
2019215686.tif 000010
【図９】
2019215686.tif 000011
【図１０】
2019215686.tif 000012
【図１１】
2019215686.tif 000013
【図１２】
2019215686.tif 000014
【図１３】
2019215686.tif 000015
【図１４】
2019215686.tif 000016
【図１５】
2019215686.tif 000017
【図１６】
2019215686.tif 000018
【図１７】
2019215686.tif 000019
【図１８】
2019215686.tif 000020