(57)【要約】【課題】既存のシステムを動作させることなく、データベーストレースログから既存のシステムで必要なソースコードを選別することで、効率よく他のプログラミング言語のソースコードを再構築することが可能となるデータベースアクセス設計情報解析システムを提供する。【解決手段】ＳＱＬ解析部１０３では、ＤＢトレースログ記憶部１０１から読み込まれたＤＢトレースログ、及びテーブル定義情報記憶部１０２から読み込まれた各種テーブル定義情報に基づいて既存システムで利用されていたＳＱＬ文が解析される。そして、当該ＳＱＬ文の解析結果に基づいて既存のシステムで用いられていたソースコードとは異なる他のプログラミング言語のソースコードが再構築される。【選択図】図１
2008077329.tif 000002
【特許請求の範囲】
【請求項１】
既存システムのデータベーストレースログが記憶されているデータベーストレースログ記憶部と、
前記既存システムで利用されているデータベース内のテーブル定義情報が記憶されているテーブル定義情報記憶部と、
前記データベーストレースログ及びテーブル定義情報を解析してデータベースアクセス設計情報を作成する解析部と、
前記データベースアクセス設計情報に基づいてソースコードを生成するソースコード生成部と
を備えたことを特徴とするデータベースアクセス設計情報解析システム。
【請求項２】
前記データベーストレースログには、前記既存システムで実際に実行されたＳＱＬ文が含まれていることを特徴とする請求項１に記載のデータベースアクセス設計情報解析システム。
【請求項３】
前記テーブル定義情報には、前記ＳＱＬ文で参照されるテーブルに関する情報が含まれていることを特徴とする請求項２に記載のデータベースアクセス設計情報解析システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、既存のデータベースアクセスコンポーネントのソースコードの内容を他のプログラミング言語に再構築する機能を有するデータベースアクセス設計情報解析システムに関するものである。
【背景技術】
【０００２】
ソフトウェア開発において、既存のシステムを新しいプラットフォームや、新しいプログラミング言語で再構築することがある。その際には、画面表示処理や通信処理、データベースアクセス処理などの各コンポーネントについて作成しなおす必要がある。
コンピュータ等における画面表示や通信処理は、プラットフォームの変更や言語の変更に伴い大幅に改修する必要があるが、データベースアクセスに関しては、既存システムがRDBMS（Relational  Data  Base  Management  System）を利用している。したがって、新しいシステムも当該RDBMSを利用する限り、既存のシステムで使用しているデータベースアクセスコンポーネントと同様の仕様で新しいデータベースアクセスコンポーネントを作成することが可能となる。
【０００３】
現在では、特許文献１に記載された発明のように、既存のデータベースアクセスコンポーネントのソースコードから仕様書を作成して、当該作成された仕様書を基にした新しいデータベースアクセスコンポーネントのソースコードを作成することや、既存のデータベースアクセスコンポーネントのソースコードの内容をそのまま他のプログラミング言語で再構築することが主流となっている。
【特許文献１】特開２０００−１８１６９７
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術にあっては、次のような問題点がある。
既存のデータベースアクセスコンポーネントのソースコードを利用して仕様書を作成する場合や、既存のデータベースアクセスコンポーネントのソースコードをそのまま他のプログラミング言語に書きなおす場合には、既存のデータベースアクセスコンポーネント中に含まれるＳＱＬ文（Structured  Query  Language）を参照する必要がある。
【０００５】
ここで、当該ＳＱＬ文のすべてが既存のシステムで使用されているとは限らず、仕様書を作成する場合等において無駄な変換作業をしなければならない場合がある。また、前記ＳＱＬ文の中から既存のシステムで必要とされているＳＱＬ文がどのＳＱＬ文であるのかを判別させるためには、既存のシステムを動作させることで必要なＳＱＬ文を選別する必要がある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明のデータベースアクセス設計情報解析システムは既存システムのデータベーストレースログが記憶されているデータベーストレースログ記憶部と、前記既存システムで利用されているデータベース内のテーブル定義情報が記憶されているテーブル定義情報記憶部と、前記データベーストレースログ及びテーブル定義情報を解析してデータベースアクセス設計情報を作成する解析部と、前記データベースアクセス設計情報に基づいてソースコードを生成するソースコード生成部とを備えたことを特徴とする。
【０００７】
また、前記データベーストレースログには、前記既存システムで実際に実行されたＳＱＬ文が含まれていることを特徴とする。
また、前記テーブル定義情報には、前記ＳＱＬ文で参照されるテーブルに関する情報が含まれていることを特徴とする
【発明の効果】
【０００８】
本発明のデータベースアクセス設計情報解析システムによれば、既存のシステムを動作させることなく、データベーストレースログから既存のシステムで必要なソースコードを選別することによって、効率よく他のプログラミング言語のソースコードを再構築することができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明を適用したデータベースアクセス設計情報解析システムの一実施の形態について説明する。
図１に示すように、本データベースアクセス設計情報解析システムは、データベーストレースログ記憶部１０１（以下、「ＤＢトレースログ記憶部１０１」ともいう。）と、テーブル定義情報記憶部１０２と、解析部としてのＳＱＬ解析部１０３と、解析結果格納部１０４と、ソースコード生成部１０５と、ソースコード記憶部１０６とから構成されている。
【００１０】
ＤＢトレースログ記憶部１０１には、既存システムで利用されているデータベーストレースログ（以下、「ＤＢトレースログ２０１」ともいう。）が記憶されている（図２参照）。このＤＢトレースログ２０１には、実行日の日付２０２と実際に実行されたＳＱＬ文２０３とが含まれている。また、テーブル定義情報記憶部１０２には、既存システムで利用されていたデータベースに含まれているテーブル定義情報が記憶されている。このテーブル定義情報には、ＳＱＬ文２０３で参照されるテーブルに関する情報が含まれている。具体的に、テーブル定義情報は、ＳＱＬ文２０３で参照されているテーブルＴ１，Ｔ２等の情報である（図２参照）。
【００１１】
ＳＱＬ解析部１０３では、前記ＤＢトレースログ及びテーブル定義情報に基づいて既存システムで利用されていたＳＱＬ文２０３が解析される。解析結果格納部１０４には、ＳＱＬ解析部１０３において解析された解析結果が格納される。また、ソースコード生成部１０５では、解析結果格納部１０４に格納されている解析結果に基づいてデータベースアクセス用のソースコードが生成される。そして、ソースコード記憶部１０６には、ソースコード生成部１０５で生成されたソースコードが記憶される。
【００１２】
次に、解析結果格納部１０４に格納される解析結果の具体的な内容について説明する。図３ａに示すように、ＳＱＬ解析部１０３において解析されたＳＱＬ文３０４の解析結果は、ＳＱＬテーブル３０１の形式で解析結果格納部１０４に格納される。このＳＱＬテーブル３０１には、ＳＱＬ解析部１０３において解析されたＳＱＬ文３０４のＩＤであるＳＱＬＩＤ３０２、解析されたＳＱＬ文３０４が対象とするテーブルである対象テーブル３０３、解析されたＳＱＬ文３０４、当該解析されたＳＱＬ文３０４のＳＱＬタイプ３０５の各情報が含まれている。
【００１３】
ＳＱＬテーブル３０１におけるＳＱＬＩＤ３０２の欄には、ＳＱＬ解析部１０３において解析された順に連続する番号が記述される。また、対象テーブル３０３の欄には、ＳＱＬ解析部１０３において解析されたＳＱＬ文３０４によって検索、挿入、更新、削除の対象となるテーブルであって解析対象となるＳＱＬ文３０４から抽出された情報が記述される。ＳＱＬタイプ３０５は、ＳＱＬ解析部１０３において解析されたＳＱＬ文３０４のタイプに対応している。すなわち、このＳＱＬタイプ３０５の欄には、ＳＱＬ解析部１０３において解析されたＳＱＬ文３０４が検索であればＳＥＬＥＣＴが、挿入であればＩＮＳＥＲＴが、更新であればＵＰＤＡＴＥが、そして削除であればＤＥＬＥＴＥがそれぞれ記述される。
【００１４】
さらに、解析結果格納部１０４には、ＳＱＬ解析部１０３においてＳＱＬ文３０４が解析されることで得られるパラメータ情報が、パラメータテーブル３０６の形式で格納される。図３ｂに示すように、パラメータテーブル３０６には、ＳＱＬテーブル３０１のＳＱＬＩＤ３０２に対応するＳＱＬＩＤ３０７、サブＩＤであるＯＲＤＥＲ３０８、パラメータのタイプであるパラメータタイプ３０９、パラメータ名３１０、パラメータの型である型３１１の各情報が含まれている。
【００１５】
ＯＲＤＥＲ３０８の欄には、１つのＳＱＬＩＤ３０７に対して複数のパラメータが存在する場合にテーブルレコードを一意に識別するためのサブＩＤが記述される。パラメータタイプ３０９の欄には、パラメータが外部からの入力データとして必要なデータの場合にはＩＮが、ＳＱＬ実行の結果に出力される値の場合にはＯＵＴがそれぞれ記述される。図３ｂに示す例では、ＳＱＬＩＤ３０７が３で、かつＯＲＤＥＲ３０８が１のＳＱＬデータについては、パラメータタイプ３０９がＯＵＴとなっている。これは、当該ＳＱＬデータが、ＳＱＬテーブル３０１におけるＳＱＬＩＤ３０７のＳＱＬデータのパラメータであることを表しており、当該ＳＱＬデータのＳＱＬ文は検索のＳＱＬ文となっているので、ＳＱＬ実行の結果に出力される値であることを表している。
【００１６】
次に、テーブル定義情報記憶部１０２に記憶されるテーブル定義情報４０１について説明する。図４に示すように、テーブル定義情報４０１には、連続する番号４０２、列の名前を表す項目名４０３、列の型を表す型４０４、列の長さを表す長さ４０５、列が必須であるか否かを表す必須情報４０６、列が主キーであるか否かを表す主キー情報４０７の各情報が含まれている。このテーブル定義情報４０１は、既存システムで利用されているデータベース内に存在するすべてのテーブルの数量だけ存在する。
【００１７】
次に、このように構成される本データベースアクセス設計情報解析システムを用いてＳＱＬ文を解析するための方法について説明する。なお、以下の処理は図示しないコンピュータのＲＯＭ（Read  Only  Memory）等に記憶されているプログラムに基づいて、ＭＰＵ（MicroProcessing  Unit）等の制御手段による制御のもとで実行される。
【００１８】
まず、本システムによってＤＢトレースログ２０１が解析されてからソースコードが生成されるまでの流れを説明する。図５に示すように、ＳＱＬ解析部１０３にＤＢトレースログ記憶部１０１からＳＱＬデータが読み込まれるとともに、テーブル定義情報記憶部１０２から各種のテーブル定義情報４０１が読み込まれる（ステップ５０１）。
【００１９】
次に、ＳＱＬ解析部１０３において、ＳＱＬデータ及び各種のテーブル定義情報４０１に基づいて作成されたデータベースアクセス設計情報が解析結果として解析結果格納部１０４に格納される（ステップ５０２）。そして、ソースコード生成部１０５に、解析結果格納部１０４から解析結果に関する情報が読み込まれてソースコードが生成される（ステップ５０３）。なお、当該ソースコードはソースコード記憶部１０６に記憶される。
【００２０】
次に、図５におけるステップ５０１、５０２の処理を詳述する。
図６に示すように、まず、ＳＱＬ解析部１０３では、ＤＢトレースログ記憶部１０１からすべてのＳＱＬデータが読み込まれる（ステップ６０１）。次に、ＳＱＬ解析部１０３では、読み込まれたすべてのＳＱＬデータのＳＱＬタイプ３０５がそれぞれ判別されて解析結果格納部１０４のＳＱＬテーブル３０１へと格納される（ステップ６０２）。次に、ＳＱＬ解析部１０３では、読み込まれたＳＱＬデータから当該ＳＱＬデータが対象とする対象テーブル３０３に関する情報が検出されるとともに、当該対象テーブル３０３に関する情報が解析結果格納部１０４のＳＱＬテーブル３０１へと格納される（ステップ６０３）。
【００２１】
次に、解析結果格納部１０４に格納されているＳＱＬテーブル３０１内において、重複しているＳＱＬデータがある場合には、当該重複しているＳＱＬデータのうち、何れか１つのみが残されて、他はすべて削除される（ステップ６０４）。次に、後述するパラメータ抽出処理（ステップ６０５）が実行されるとともに、包含関係解析処理（ステップ６０６）が実行される。具体的には、ステップ６０５におけるパラメータ抽出処理でパラメータ抽出されたＳＱＬデータ（図８ａ参照）と、パラメータ抽出されていないＳＱＬデータ（図８ｂ参照）との比較が行われ、パラメータ部分が包含関係となっているＳＱＬデータを見つけてパラメータ抽出されていないＳＱＬデータの削除が実行される。そして、最後に後述するＳＥＬＥＣＴ文の処理が実行される（ステップ６０７）。
【００２２】
次に、図６におけるステップ６０５の処理を詳述する。
図７に示すように、解析結果格納部１０４のＳＱＬテーブル３０１に格納されているすべてのＳＱＬデータの比較が完了するまで以降の処理が繰り返される（ステップ７０１）。まず、任意の２つのＳＱＬデータが比較される（ステップ７０２）。そして、これら２つのＳＱＬデータにおいて、定数値のみ異なる場合には（ステップ７０３）、当該定数値の部分の型が検査される（ステップ７０４）。ここで、定数値とは、ＳＱＬ文に記述される「列名＝'ＸＸ'」のＸＸ部分を意味する。一方、比較された２つのＳＱＬデータにおいて、定数値以外の情報も異なる場合には、ステップ７０４からステップ７０９までの処理は実行されず、ステップ７０２へと処理が戻されて次のＳＱＬデータの比較が開始される。
【００２３】
ステップ７０４において、検査された定数値の部分の型が文字列である場合、解析結果格納部１０４に格納されているパラメータテーブル３０６の型３１１の欄に「文字列」が記述される（ステップ７０５）。一方、ステップ７０４において、検査された定数値部分の型が数値である場合、解析結果格納部１０４に格納されているパラメータテーブル３０６の型３１１の欄に「数値」が記述される（ステップ７０６）。
【００２４】
その後、解析結果格納部１０４に格納されているパラメータテーブル３０６のＳＱＬＩＤ３０７の欄に比較元であるＳＱＬデータのＳＱＬＩＤが記述されるとともに、パラメータタイプ３０９の欄に「ＩＮ」が記述される（ステップ７０７）。次に、解析結果格納部１０４に格納されているパラメータテーブル３０６のパラメータ名３１０の欄にパラメータとして認識された値の列名の部分が記述されるとともに（ステップ７０８）、比較元であるＳＱＬデータがパラメータの含まれるＳＱＬ文として修正されて（図８ｃ参照）、解析結果格納部１０４に格納されているＳＱＬテーブル３０１に記述される（ステップ７０９）。
【００２５】
次に、図６におけるステップ６０７の処理を詳述する。
図９に示すように、解析結果格納部１０４に格納されているＳＱＬテーブル３０１に記述されているＳＱＬデータのうち、ＳＱＬタイプ３０５がＳＥＬＥＣＴであるＳＱＬデータについての比較が完了するまで以降の処理が繰り返される（ステップ９０１）。まず、解析結果格納部１０４に格納されているＳＱＬテーブル３０１から対象テーブル３０３とＳＱＬ文３０４とが抽出されるとともに（ステップ９０２）、抽出されたＳＱＬ文３０４におけるＳＥＬＥＣＴ句に含まれている列がすべて取得される（ステップ９０３）。
【００２６】
次に、テーブル定義情報記憶部１０２に記憶されているテーブル定義情報４０１に含まれており、ステップ９０２で抽出された対象テーブル３０３に一致するテーブルのテーブル情報と、ステップ９０３で取得された列の情報とが比較されることにより、各列の定義情報が取得される（ステップ９０４）。次に、ステップ９０４で取得された各列の定義情報に記述されている列の型が解析結果格納部１０４に格納されているパラメータテーブル３０６の型３１１の欄に記述されるとともに、ステップ９０３で取得された各列が解析結果格納部１０４に格納されているパラメータテーブル３０６におけるパラメータ名３１０の欄に記述される（ステップ９０５）。
【００２７】
次に、解析結果格納部１０４に格納されているパラメータテーブル３０６におけるパラメータタイプ３０９の欄に「ＯＵＴ」が記述されるとともに（ステップ９０６）、ＳＱＬＩＤ３０７の欄にステップ９０２で抽出されたＳＱＬ文３０４のＳＱＬＩＤが記述される。また、パラメータテーブル３０６におけるＯＲＤＥＲ３０８の欄には、ステップ９０５で記述される列に対応した連続する番号が記述される（ステップ９０７）。
【００２８】
次に、図５におけるステップ５０３の処理を詳述する。
ソースコード生成部１０５においては、図１０に示すように、解析結果格納部１０４に格納されているＳＱＬテーブル３０１における対象テーブル３０３の欄に記述されている情報が同一である間は、以降の処理が繰り返される（ステップ１００１）。まず、ＳＱＬテーブル３０１から１つのＳＱＬデータが取得される（ステップ１００２）。このとき、パラメータテーブル３０６のＳＱＬＩＤ３０７の欄に記述されているＩＤの数値が同一である間は、ステップ１００４からステップ１００７までの処理が繰り返される（ステップ１００３）。
【００２９】
次に、ステップ１００２で取得されたＳＱＬデータと同一のＳＱＬＩＤ３０７を有するＳＱＬデータがパラメータテーブル３０６から取得される（ステップ１００４）。次に、パラメータテーブル３０６におけるパラメータタイプ３０９の欄に「ＩＮ」が記述されている場合には、ＩｎＤＴＯ作成処理が実行される（ステップ１００６）。一方、パラメータテーブル３０６におけるパラメータタイプ３０９の欄に「ＯＵＴ」が記述されている場合には、ＯｕｔＤＴＯ作成処理が実行される（ステップ１００７）。ここで、ＤＴＯとは、Data  Transfer  Objectの略である。ＩｎＤＴＯは、ＳＱＬ実行のために必要なパラメータが格納されるＤＴＯのことであり、ＯｕｔＤＴＯは、ＳＱＬ実行の結果、データベースから取得されたデータが格納されるＤＴＯのことである。
【００３０】
そして、パラメータテーブル３０６におけるＳＱＬＩＤ３０７の欄に記述されているＩＤの数値が同一である間処理が繰り返されたら、ソースコード生成部１０５においてＤＡＯ作成処理が実行される（ステップ１００８）。ここで、ＤＡＯとは、Data  Access  Objectの略であり、データベースに対してＳＱＬ実行のためのメソッドを所有するオブジェクトのことである。
【００３１】
ソースコード生成部１０５において生成されたＤＡＯ１１０１は、図１１に示すように、クラス名１１０２に対象テーブル３０３の欄に記述された情報が反映されるとともに、メソッド名１１０３にＳＱＬテーブル３０１におけるＳＱＬタイプ３０５が反映されている。また、引数１１０４にはＩｎＤＴＯが反映されるとともに、ＳＱＬ１１０５にはＳＱＬテーブル３０１に記述されているＳＱＬ文３０５が反映されている。そして、戻り値１１０６にはＯｕｔＤＴＯが反映されている。
【００３２】
ソースコード生成部１０５において生成されたＩｎＤＴＯ１２０１は、図１２に示すように、クラス名１２０２には、連続する番号が記載されている。また、属性の型１２０３、ｇｅｔメソッドの戻り値１２０５、ｓｅｔメソッドの引数の型１２０９にはパラメータテーブル３０６の型３１１が反映されている。また、属性名１２０４、ｇｅｔメソッドの名前１２０６、ｇｅｔメソッドの戻り値１２０７、ｓｅｔメソッドの名前１２０８、及び引数名１２１０にはパラメータテーブル３０６に記述されているパラメータ名３１０が反映されている。
【００３３】
ソースコード生成部１０５において生成されたＯｕｔＤＴＯ１３０１は、図１３に示すように、クラス名１３０２には、連続する番号が記載されている。また、属性の型１３０３、ｇｅｔメソッドの戻り値１３０５、ｓｅｔメソッドの引数の型１３０９にはパラメータテーブル３０６の型３１１が反映されている。また、属性名１３０４、ｇｅｔメソッドの名前１３０６、ｇｅｔメソッドの戻り値１３０７、ｓｅｔメソッドの名前１３０８、及び引数名１３１０にはパラメータテーブル３０６に記述されているパラメータ名３１０が反映されている。
【００３４】
以上のように、本実施の形態のデータベースアクセス設計情報解析システムによれば、次のような効果がある。
・本実施の形態では、既存のデータベースアクセスコンポーネントのソースコードをそのまま他のプログラミング言語に再構築するのではなく、ＤＢトレースログ２０１をＳＱＬ解析部１０３で解析し、その解析結果に基づいて他のプログラミング言語のソースコードを再構築するようにした。したがって、既存のシステムで必要とされているＳＱＬ文がどのＳＱＬ文であるのかを判別させるために当該既存のシステムを動作させることなく、ＤＢトレースログ２０１から既存のシステムで必要なＳＱＬ文を選別して効率よく他のプログラミング言語のソースコードを再構築することができる。
【００３５】
なお、上記実施の形態は、以下のように変更して実施してもよい。
・上記実施の形態においては、再構築する他のプログラミング言語としてＣ＋＋を例に説明したが、当該プログラミング言語は、Ｃ言語やＶｉｓｕａｌ系の他の言語等であってもよい。
【図面の簡単な説明】
【００３６】
【図１】データベースアクセス設計情報解析システムのブロック図。
【図２】ＤＢトレースログの概要図。
【図３】(ａ)はＳＱＬテーブル、(ｂ)はパラメータテーブル。
【図４】テーブル定義情報の例。
【図５】ソース生成までの作業フローチャート。
【図６】データベースアクセス設計情報を作成する処理のフローチャート。
【図７】パラメータ抽出処理フローチャート。
【図８】(ａ)はパラメータ抽出されたＳＱＬデータの概要図、(ｂ)はパラメータ抽出されていないＳＱＬデータの概要図、(ｃ)はパラメータを含むＳＱＬとして修正されたＳＱＬデータの概要図。
【図９】ＳＥＬＥＣＴ文処理フローチャート。
【図１０】ソースコード生成処理フローチャート。
【図１１】生成されたＤＡＯの概要図。
【図１２】生成されたＩｎＤＴＯの概要図。
【図１３】生成されたＯｕｔＤＴＯの概要図。
【符号の説明】
【００３７】
１０１・・・データベーストレースログ記憶部、１０２・・・テーブル定義情報記憶部、１０３・・・解析部としてのＳＱＬ解析部、１０７・・・ソースコード生成部、２０１・・・データベーストレースログ、４０１・・・テーブル定義情報。
【図１】
2008077329.tif 000003
【図２】
2008077329.tif 000004
【図３】
2008077329.tif 000005
【図４】
2008077329.tif 000006
【図５】
2008077329.tif 000007
【図６】
2008077329.tif 000008
【図７】
2008077329.tif 000009
【図８】
2008077329.tif 000010
【図９】
2008077329.tif 000011
【図１０】
2008077329.tif 000012
【図１１】
2008077329.tif 000013
【図１２】
2008077329.tif 000014
【図１３】
2008077329.tif 000015