(57)【要約】      （修正有）【課題】データベースの構造(スキーマ)が変更されても、データベース関連プログラムソースコード間の整合性を確保しながらプログラムソースコードを生成するオブジェクト指向データベース生成プログラム作成装置を提供する。【解決手段】描画入力された図形情報からなるデータベース構造モデルとなるクラス図１をクラスの属性及び関連の情報を項目別に分類して抽出し、項目別クラス図情報リスト２３１としてクラス情報データベース２３２へ登録後、クラスの関連、集約、継承及び多重度に関するクラス間の関係に係る詳細情報２３３を分類及び加工し、前記クラス別詳細データ２３３と予め作成されたソースコード定義テンプレート・スクリプト２３４に基づきデータベース構造定義プログラムソースコード３、データ投入プログラムソースコード４及びデータベースアクセスプログラムソースコード５を生成し整合して出力するソースコード生成装置２とを有する。【選択図】図１
2005202612.tif 000002
【特許請求の範囲】
【請求項１】
以下に示す各処理装置間での入出力データを保持するデータ保持装置と、
描画入力された図形情報からなるデータベース構造モデルとなるクラス図をクラスの属性及び関連の情報を項目別に分類して抽出し、前記データ保持装置に項目別クラス図情報リストとして保存するモデル情報処理装置と、
前記項目別クラス図情報リストをクラス情報データベースへ登録後、クラスの関連、集約、継承及び多重度に関するクラス間の関係に係る詳細情報を分類及び加工して前記クラス情報データベースに再登録し、クラス別詳細データとして出力する配列変換処理装置と、
前記クラス別詳細データと予め作成されたソースコード定義テンプレート・スクリプトに基づきデータベース構造定義プログラムソースコード、データ投入プログラムソースコード及びデータベースアクセスプログラムソースコードを生成し整合して出力するソースコード生成装置とを有することを特徴とするデータベース生成プログラム作成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、新規なデータベース生成プログラム作成装置に関する。
【背景技術】
【０００２】
オブジェクト指向データベースを開発する場合は、データベース言語であるＳＱＬ(Structured Query Language)を使ってデータベースの構造定義(以下、スキーマと称する)や、データ投入・操作を行わないため、アプリケーションで使用する言語(Ｃ＋＋など)を使用して、ＳＱＬの構造照合言語に代わるプログラムを独自に開発する必要がある。これらのプログラムの開発は、通常データベースの構造定義を行った後、それに合わせて後からデータ投入用プログラムやデータベース操作プログラム（データベースアクセスプログラム）の開発が行われる。
【０００３】
オブジェクト指向データベースを構築する場合において、データベースの構造定義については、スキーマ定義言語やオブジェクト指向分析手法に対して知識を有する専門家でなくてもスキーマを定義できるスキーマ定義装置が特許文献１に記載されている。
【０００４】
また、オブジェクト指向データベースのデータベース定義から属性解析等を行い、データベースアクセスプログラムソースコードを自動生成する技術が特許文献２に記載されている。これは、データ構造を定義したデータベース定義ファイルを用意し、そこからデータベースアクセスプログラムソースコードを自動生成するというものである。
【０００５】
【特許文献１】特開平７−１８２１４６号公報
【０００６】
【特許文献２】特開平８−２６３２７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載されたスキーマ生成に関する技術は、特にスキーマを定義する装置であり、データベースへのデータ投入用プログラムソースコードや、データベースアクセスプログラムソースコードを生成することはできない。スキーマを定義する装置だけでは、定義したスキーマと一致するようにそれぞれのプログラムソースコードを後から別途作成しなくてはならず、クラス数の増加や複雑なクラス構造になった場合など、各プログラム間での整合性を確保することが難しいという問題がある。また、スキーマが変わるたびにソースコードの修正、もしくは再作成しなければならず、作成期間が長くなる欠点がある。
【０００８】
また、特許文献２に記載されたデータベース定義データからデータベースアクセスプログラムソースコードを自動生成する技術においては、データベース構造定義とアクセスプログラムソースコード間の整合性は確保される。しかし、データベース定義を文字ベースで準備するため、視覚的に分かり難く、定義方法が煩雑になったり、定義方法の習得が難しくなったりして、管理・保守が困難になるという傾向がある。
【０００９】
本発明の目的は、スキーマが変更されても、データベース関連プログラムソースコード間の整合性を確保しながらプログラムソースコードを生成すると共に、入力情報をデータベース構造モデルとなるクラス図として視覚的に分かり易くすることにより、開発やテストの工数・期間を低減できるオブジェクト指向データベースを生成することのできるデータベース生成プログラム作成装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、以下の各処理装置間での入出力データを保持するデータ保持装置と、
描画入力され記憶されたデータベース構造モデルとなるクラス図をクラスの属性及び関連の情報を項目別に分類して抽出し、前記データ保持装置に項目別クラス図情報リストとして保存するモデル情報処理装置と、
前記項目別クラス図情報リストをクラス情報データベースへ登録後、クラスの関連、集約、継承及び多重度に関するクラス間の関係に係る詳細情報を分類及び加工して前記クラス情報データベースに再登録し、クラス別詳細データとして出力する配列変換処理装置と、
前記クラス別詳細データと予め作成されたソースコード定義テンプレート・スクリプトに基づきデータベース構造定義プログラムソースコード、データ投入プログラムソースコード及びデータベースアクセスプログラムソースコードを生成し整合して出力するソースコード生成装置とを有することを特徴とするデータベース生成プログラム作成装置にある。
【００１１】
より具体的な本発明のプログラムソースコードの機械作成を行うデータベース生成プログラム作成装置は、モデル情報処理装置と、配列変換処理装置と、ソースコード生成処理装置と、各処理装置間での入出力データを保持するデータ保持装置とを備え、データベース構造のモデルとなるクラス図をモデル情報処理装置へ入力し、データベース構造定義プログラムソースコード、データベース投入プログラムソースコード、データベースアクセスプログラムソースコードをソースコード生成処理装置から整合して出力するデータベース生成プログラム作成装置であって、
前記モデル情報処理装置は、モデル入力部と、モデル記憶部と、モデル-リスト化処理部とを備え、モデル入力部から描画入力されたデータベース構造モデル(クラス図)をモデル記憶部が記憶し、クラス図の入力の完了後に、モデル-リスト化処理部がクラスの属性、クラスの関連等の情報を項目別に分類して抽出し、データ保持装置に項目別クラス図情報リストとして保存すること、
前記配列変換処理装置は、クラス情報入力処理部と、クラスデータ整形処理部と、クラス別詳細データ出力処理部とを備え、クラス情報入力処理部は、項目別クラス図情報リストをクラス情報データベースへ登録し、クラスデータ整形処理部は、クラスの関連、集約、継承、多重度といったクラス間の関係の詳細情報を分類、加工し、かつこれをクラス情報データベースに再登録し、クラス別詳細データ出力処理部は、クラス情報やクラス間の関連詳細情報をクラス別に出力すること、
前記ソースコード生成装置は、ソースコード生成処理部を備え、クラス別詳細データとソースコード定義テンプレート・スクリプトに基づきソースコード生成処理部からデータベース構造定義プログラムソースコード、データ投入プログラムソースコード、データベースアクセスプログラムソースコードを生成するものであることが好ましい。
【００１２】
又、本発明のデータベース生成プログラム作成装置は、描画入力された図形情報からなるデータベース構造モデルとなるクラス図を文字情報として項目別クラス図情報リストに出力するモデル情報処理装置と、
前記項目別クラス図情報リストをクラス情報データベースに記憶し、クラス情報の加工を行い、クラス毎にソース生成に必要なクラス別詳細データを出力する配列変換処理装置と、
前記クラス別詳細データを読み込み、予め作成されたソースコード定義テンプレート・スクリプトに基づいてデータベース構造定義プログラムソースコード、データ投入プログラムソースコード及びデータベースアクセスプログラムソースコードの各ソースコードを生成し整合して出力するソースコード生成処理装置と、
各処理装置間での入出力データを保持するデータ保持装置とを有することが好ましい。
【００１３】
即ち、本発明に係るオブジェクト指向による開発においては、反復型の開発方法が用いられ、分析・設計・開発を繰り返し行うことで、その時点で分かっている仕様を採用し進められる。しかし、オブジェクト指向データベースの反復開発では、反復のたびにデータベースの構造が変化することが多く、その構造の変化に伴ってデータベース関連プログラム(データベース構造定義プログラム、データ投入プログラム、データベースアクセスプログラム)も変更する必要がある。このデータベース関連プログラムは、リレーショナルデータベースにおけるＳＱＬようなデータベース言語に代わるプログラムで、オブジェクト指向データベースを開発する場合はC++などの言語を使って独自に開発しなければならないが、前述のように、オブジェクト指向データベース関連プログラムの生成において、データ構造モデルとなるクラス図の描画を行い、クラス図からデータベース関連プログラムの機械生成を行うことによりデータベース関連プログラムソースコードの構築、修正の工数を低減し、各プログラム間の整合性も確保できるものである。
【発明の効果】
【００１４】
本発明によれば、スキーマが変更されても、データベース関連プログラムソースコード間の整合性を確保しながらプログラムソースコードを生成すると共に、入力情報を図形情報からなるクラス図として視覚的に分かり易くすることにより、開発やテストの工数・期間を低減できるオブジェクト指向データベースを生成することのできるデータベース生成プログラム作成装置を提供することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施するための最良の形態を具体的な実施例によって詳細に説明するが、本発明はこの実施例に限定されるものではない。
【００１６】
図１は、本発明に係るデータベース生成プログラム作成装置の基本構成を示すブロック図である。データベース生成プログラム作成装置2への入力情報は、データベース構造モデル(クラス図)１である。文字ではなく絵記号を介してコンピュータと人がやりとりするインターフェースであるGUI(Graphical User Interface)を使ってデータベース構造モデル(クラス図)１を描画入力し、入力したクラスの図形情報を、文字情報として項目別クラス図情報リスト231に出力するモデル情報処理装置20と、項目別クラス図情報リスト231をクラス情報データベース232に記憶し、クラス情報の加工を行い、クラス毎にソース生成に必要なクラス別詳細データ233を出力する配列変換処理装置21と、ソース生成に必要なクラス別詳細データ233を読み込み、ソースコード定義テンプレート・スクリプト234を使って、データベース構造定義プログラムソースコード3と、データ投入プログラムソースコード4と、データベースアクセスプログラムソースコード5の各ソースコードを生成するソースコード生成処理装置22と、各処理装置間での入出力データを保持するデータ保持装置23を備える。
【００１７】
図２は、本発明に係るデータベース生成プログラム作成装置2を使用したオブジェクト指向データベースの概要図である。一般に、データベースを設計・作成する場合、リレーショナルデータベースにおいても、オブジェクト指向データベースにおいても、最初にデータベースの構造を定義しなければならない。リレーショナルデータベースの設計・作成においてデータベースの構造を定義するということは、テーブルを定義することに相当する。これに対し、オブジェクト指向データベースの設計・作成においてデータベースの構造を定義するということは、クラスを決めることに相当する。即ち、クラスの定義を行い、クラス図を作成することである。ここでのクラス図の意味は、オブジェクト指向データベース9を設計・作成するための図形情報からなる設計図といえる。本実施例のデータベース生成プログラム作成装置2では、このクラス図を入力情報として、データベース構造モデル(クラス図)１情報を処理し、データベース構造定義プログラムソースコード3と、データ投入プログラムソースコード4と、データベースアクセスプログラムソースコード5の３つのプログラムソースコードを生成する。
【００１８】
本発明の出力情報である各ソースコードの役割について図２を用いて説明する。初めに、データベース構造定義プログラムソースコード3は、オブジェクト指向データベース9の物理的構造を記述したプログラムソースコードである。このプログラムソースコードに基づいて、データベースジェネレータ6は、オブジェクト指向データベース９の構造を定める。次に、データ投入プログラムソースコード４は、データ投入装置OAのプログラムソースコードである。
【００１９】
データ投入装置生成ジェネレータ７は、データ投入プログラムソースコード４に基づいて、データ投入装置０Ａを生成する。データ投入装置OAは、データベースジェネレータ6が定めたオブジェクト指向データベース9の構造に合わせて、業務アプリケーションで使用する業務アプリケーション初期データOCを投入する。
【００２０】
最後に、データベースアクセスプログラムソースコード5は、データベースアクセス装置０Ｂのプログラムソースコードである。データベースアクセス装置生成ジェネレータ8は、データベースアクセスプログラムソースコード5に基づいて、データベースアクセス装置OBを生成する。データベースアクセス装置OBは、データ投入装置OAで投入した業務アプリケーション初期データOCを、業務アプリケーション処理装置ODから操作（検索、生成、更新、削除）できるように、データベース操作を補助するものである。つまり、データベースアクセス装置OBは、業務アプリケーション処理装置ODからオブジェクト指向データベース9に対する操作要求を受け取ると、オブジェクト指向データベース9にアクセスし、要求に対する結果を業務アプリケーション処理装置ODに返す。
【００２１】
本発明に係る入力情報であるデータベース構造モデル(クラス図)１について図３〜図５により詳細に説明する。図３(a)は３つの四角形の箱によって表されるクラス10及び図３(b)が３つの四角形の箱によって表される社員クラス11を表すものである。図４はデータベース構造モデル(クラス図)１を図形と文字で表したものである。図５は現実の会社の一部をモデル化したクラス図の具体例である。
【００２２】
図３(a)に示すように、１番上の箱はクラス名101を表し、クラス名101には一般名詞を使い、例えば、図３(b)の社員111などが挙げられる。２番目の箱は属性102を表し、クラス10が持つ固有情報であり、例えば、社員クラス11の属性は、社員番号112、氏名113、生年月日114などが挙げられる。属性はクラス内にいくつあってもよい。３番目の箱は操作103を表し、クラス10が別クラスに対して提供するサービスのことであり、例えば社員クラス11の操作は、給与計算115などが挙げられる。その操作もクラス内にいくつあってもよい。以上からクラス10は、クラス名101と属性102、操作103から構成される。図３(b)では、クラス11は、社員番号112、氏名113、生年月日114という３つの属性と、給与計算115という１つの操作から成ることを表している。
【００２３】
図４に示すようにクラスA12は別のクラスB13やクラスC14と関係を持つことができる。別のクラスとの関係はいくつあってもよい。クラス間を結ぶ線分は、クラス間に何らかの関係があることを意味する。クラス間の関係には、関連16、集約17、汎化18の３つが挙げられる。最初に、関連16は、一本の線分でクラス間を結び、クラス間における何らかの意味的つながりを示す。例えば、図５の「社員」クラスと「給与明細」クラスの「関連」では、「社員は月々給与明細をもらう」のような関係があることを示す。
【００２４】
次に、集約17は、ひし型の記号と線分でクラス間を結び、クラス間に全体と部分の関係があることを示す。集約17は特別な関連16であり、クラス間に全体と部分の関係があることを強調する場合に使う。例えば、「社員」クラスと「連絡先」クラスの間には、「社員は自分の連絡先の情報を含んでいる」ことを示している。この場合、社員クラスが全体クラスで、連絡先クラスが部分クラスを示す。
【００２５】
最後に、汎化18は、白抜きの三角形と線分でクラス間を結び、クラス間に一般的なクラスと、より特化されたクラスの関係があることを示す。例えば、「社員」クラスと「正社員」「契約社員」クラスの間では、「正社員」「契約社員」は「社員」の一種であることを示す。この場合、「社員」が一般的なクラスで、「正社員」「契約社員」が特化されたクラスを示す。継承関係にある２つのクラスに注目した場合、「社員」クラスをスーパークラスと呼び、「正社員」「契約社員」クラスをそれぞれサブクラスと呼ぶ。
【００２６】
関連16や集約17には、ロール名162をつけることができる。ロール名162は必ずしも付けなくてもよい。ロール名162とは、クラスに割り当てられた役割を明確にするために記述するものであり、例えば、後述する図５の「口座」では、「振込先」というロール名が記されている。これは、口座の役割を表しており、「社員」のもっている口座は給与の「振込先」用の口座であることを意味する。もしこの「振込先」を「引き落とし」に変えれば、「社員」の持っている口座は、なんらかの請求に対する「引き落とし」口座であることを意味するようになる。
【００２７】
また、関連16は、その関係に関与しているインスタンスの数に応じて、多重度１対１の関連、多重度１対Nの関連及び多重度N対Nの３パターンに分かれる。「１」や「N」のことを多重度161という。「N」は０〜Nまでのインスタンスの個数を意味する。インスタンスとは、クラスを具象化したもので、例えば、社員クラスを例にとると、「社員番号、氏名、生年月日社を具体的に持つ社員Ａさん」がインスタンスに相当する。多重度関連について以下それぞれ説明する。
【００２８】
初めに、多重度１対１の関連は、１つのインスタンスのある関連において関連付けられるインスタンスが１つであるという関連である。例えば、図５の「社員」と「ユーザ」の関連である。これは「ある社員は社内システムを使用する１ユーザである」と定義し、つまり、多重度１対１の関連の場合、社員はユーザとして一つのユーザIDしか持てないことを意味する。逆に「社内システムのあるユーザはある特定の社員を表す」と定義することもできる。次に、多重度１対Nの関連は、ある１つの関連において関連づけられるインスタンスとして片方のインスタンスが１つ、もう片方のインスタンスが多数となるような関連である。例えば、図５の「社員」と「給与明細」の関連である。これは「ある社員は複数の給与明細をもらう」と定義している。最後に多重度N対Nの関連は、１つの関連において関連づけられるインスタンスが複数ずつあるような関連である。例えば、図５の「組織」で「上位組織」と「下位組織」の関連である。これは、「ある組織の上に別の大きな組織が複数ある」と定義している。また、「ある組織の下に別の小さな組織が複数ある」とも定義している。現実世界をモデル化しクラス図を作成した場合、クラス間の関係は上記の関連(関連、集約、継承)があれば表現できる。
【００２９】
以下、図５のクラス図を入力情報とするデータベース生成プログラム作成装置2について詳細に説明する。図１に示すデータベース生成プログラム作成装置2は、モデル図情報処理装置20と、配列変換処理装置21と、ソースコード生成処理装置22と有し、それぞれがデータ保持装置２３を共有して構成されている。
【００３０】
モデル情報処理装置2は、モデル入力部201と、モデル記憶部202と、モデル-リスト化処理部203から構成される。モデル入力部201は、ＧＵＩを用いて構成された入力部である。このＧＵＩを使用して、図形情報からなるデータベース構造のモデル(クラス図)１、即ち図５のクラス図の描画入力を行う。ＧＵＩには、「クラス」、「関連」、「集約」、「汎化」を表す部品が備わっており、マウスを使ってそれらの部品をクラス図描画領域にドラックアンドドロップする。これにより、クラス図面が描画できる。さらに、キーボードを使って、描画したクラスにクラス名、属性、操作等を入力する。このようなＧＵＩによって、図５に示すようなクラス図面を描画することができる。
【００３１】
具体的な入力情報を説明する。初めに、クラスに入力する情報は、クラス名(和文表記)、クラス名(英文表記)、パッケージ名称、属性名、操作名、コメント、バージョン、作成日、作成者、クラス区分である。クラスに対する入力情報は、データベースを作成するためのソースコード上で必要な情報となる。クラス名は、クラスを識別するために使用する。クラスの分類を表すパッケージ名称は、クラス数が多くなってもパッケージ単位でクラスを分類することにより、クラスやソースコードの管理・保守・修正を行い易くするために使用する。クラスの種類を示すクラス区分は、業務アプリケーションがデータベースにアクセスする際のデータベースのエントリポイントとなるクラスとそれ以外のクラスを識別するために使用する。クラスを説明するコメント、クラスのバージョン、クラスの作成日、クラスの作成者は、誰がいつどのように作成したかをソースコードに残すために使用する。
【００３２】
次に、属性に入力する情報は、属性名、可視性、属性の型、属性を説明するコメント、配列である場合は配列要素数、プライマリキー属性である。プライマリキー属性は、クラスのインスタンスを識別するために使用する。この属性に対する入力情報も、データベースを作成する上で必要な情報となる。また、操作に入力する情報は、引数、可視性、Static属性、Virtual属性、返戻値の型である。最後に、１つの関連に入力する情報は、クラスの多重度、ロール名である。全て、データベースを作成するためのソースコード上で必要な情報である。
【００３３】
このように描画入力されたデータベース構造モデル(クラス図)１は、モデル記憶部202に記憶される。モデル記憶部202は、描画入力されたクラス図情報を保存する。モデル記憶部202は、外部に設けた磁気ディスク、光ディスク等のディスク記憶装置に記憶されてもよい。
【００３４】
図６は、モデル-リスト化処理部203の処理フローを示すブロック図である。初めにクラス図の読込み処理2030を行う。全てのクラスと全ての関連について読込みを行い、図形情報のチェック2031を行う。チェック方法として必須入力項目の記述チェック、名称重複チェック、スペルチェックを行う。チェックが正常に終了した場合、変換処理2032において、図７の項目別クラス図情報リスト231に示すように、クラス情報リスト(a)、属性情報リスト(b)、操作情報リスト(c)、関連情報リスト(d)、継承情報リスト(e)、キー情報リスト(f)をそれぞれのクラス図から文字情報として取り出し、項目別クラス情報リスト231として出力する。出力する項目は、予め決められており、各項目はそれぞれのフォーマットに従って出力される。以下、上記の６つの出力情報リストと項目についてそれぞれ説明する。
【００３５】
初めに、図８にクラス情報リスト2310の出力フォーマット(a)と図５の社員クラスの出力例(b)を示す。クラス情報リスト2310は、クラス図に記述した全クラスのリストである。クラス記号名称は、クラス名を英訳した名称である。クラス名は、クラスの名称、ヘッダファイル名称は、データベースアクセスプログラム５のヘッダファイルを出力する際のファイル名称で、クラス記号名称から機械的に作成する。パッケージは、クラスの分類を表す記号名称である。コメントは、クラスの機能を説明したコメント文である。クラス区分は、クラスの種類を表す。
【００３６】
２番目に、図９に属性情報リスト2311の出力フォーマット(a)と図５の社員クラスの属性の出力例(b)(c)(d)を示す。属性情報リストは、クラス図の各クラスに記述した全属性を、全てのクラスの属性について出力したリストである。クラス記号名称は、属性の属するクラス名を英訳した名称である。属性記号名称は、属性名を英訳した名称である。型は、属性の型、即ちプログラムソースコード上で用いるデータ型を表す。可視性は、プログラムソースコード上の属性スコープを表す。配列要素数は、属性が配列である場合にその配列の要素数を表す。配列でない属性の場合は、何も記述しない。
【００３７】
３番目に、図１０に操作情報リスト２３１２の出力フォーマット(a)と図５の社員クラスの操作の出力例(b)を示す。操作情報リスト2312は、クラス図の各クラスに記述した全操作を、全てのクラスの操作について出力したリストである。クラス記号名称は、操作の属するクラス名を英訳した名称である。操作記号名称は、操作名を英訳した名称である。引数は、操作の引数を表す。但し引数が複数ある場合は、全ての引数を別々に記述する。引数がない場合は、何も記述しない。可視性は、プログラムソースコード上の操作スコープを表す。返戻値の型は、プログラムソースコード上での操作が返すデータの型を表す。Static属性は、プログラムソースコード上での操作がStaticか否かを表す。Staticでない場合は、何も記述しない。Virtual属性は、プログラムソースコード上での操作がVirtualか否かを表す。Virtualでない場合は、何も記述しない。
【００３８】
４番目に、図１１に関連情報リスト2313の出力フォーマット(a)と図５の社員クラスと口座クラス間の関連の出力例(b)(c)を示す。関連情報リスト2313は、クラス図の各クラス間の関連について出力したリストである。関連記号名称は関連につける名称を英訳した名称である。関連記号名称が記述されていない場合は、両端のクラス記号名称から機械的に生成し記述する。関連ロール名は、関連の両端のロール名を表す。関連クラス記号名称は、関連の両端クラスのクラス記号名称を表す。多重度は、関連の両端の多重度を表す。関連のタイプは、関連の種類(関連・集約)を表す。
【００３９】
５番目に、図１２に継承情報リスト2314の出力フォーマット(a)と図５の社員クラスと正社員クラス間の継承関係の出力例(b)を示す。継承情報リスト2314は、クラス図においてクラスの継承関係について出力したクラス間継承関係リストである。上位記号名称は、スーパークラスのクラス名称を英訳した名称を表す。クラス記号名称は、サブクラスのクラス名称を英訳した名称を表す。
【００４０】
最後に、図１３にキー情報リスト2315の出力フォーマット(a)と図５の社員クラスのキー情報の出力例(b)、口座クラスのキー情報の出力例(c)を示す。キー情報リスト２３１５は、クラスのインスタンスを識別するプライマリキーのリストである。クラス記号名称は、クラス名称を英訳した名称を表す。プライマリキーは、そのクラスの属性の中でどの属性がプライマリキーなのかを表す。
【００４１】
以上のモデル-リスト化処理部203から出力されるこれらの項目別クラス図情報リスト231を、データ保持装置23に保存する。
【００４２】
次に配列変換処理装置21は、クラス情報入力処理部211、クラスデータ整形処理部212及びクラス別詳細データ出力処理部213を有する。また、配列変換処理装置21には、データ保持装置23内のクラス情報データベース232が接続している。配列変換処理装置21への入力情報は、項目別クラス図情報リスト231である。
【００４３】
図１４は、配列変換処理装置21内の詳細処理フローを示すブロック図である。クラス情報入力処理部211は、クラス情報データベース作成処理2110と、項目別クラス図情報リスト読込み処理2111と、データベース投入用データ形式変換処理2112と、クラス情報データベース投入処理2113を実行する。また、クラスデータ整形処理部212は、クラス別詳細データ出力用テーブル更新処理2120を実行する。また、クラス別詳細データ出力処理部213は、クラス別詳細データ出力処理2130を実行する。
【００４４】
初めに、クラス情報データベース作成処理2110が行われる。この処理は、データ保持装置23内のクラス情報データベース232のスキーマ作成処理である。一度スキーマを作成すれば、毎回作成する必要はない。ここでクラス情報データベース232は、リレーショナルデータベースであり、モデル情報処理装置20から出力されたクラス情報を格納・保存・加工するために使用される。クラス情報データベース232は、項目別クラス図情報リスト231を保存できるように、前述の図８〜図１３に示す項目別クラス図情報リストのフォーマットと同様のフォーマットを持つテーブル５つと、クラス別詳細データ233を出力するために必要なテーブル５つの合計１０テーブルで構成されている。図１５は、クラス別詳細データ２３３を出力するために必要なテーブルの一覧を表す図であり、そのフォーマットを図１６〜２０の各図(a)に示す。
【００４５】
次に、項目別クラス図情報リスト読込み処理2111は、モデル情報処理装置20より出力された項目別クラス図情報リスト231をそれぞれ読込む。データベース投入用データ形式変換処理2112は、読み込んだ項目別クラス図情報リスト内のデータを、クラス情報データベース232に投入できるようにリストデータから実行形式文に変換する。即ち、リストデータをデータベース投入用SQLのinsert文に変換する。図２０に、クラス情報リストのデータをデータベース投入用実行形式に変換した状態の例を示す。この変換処理は、項目別クラス図情報リスト231毎の１行毎に行われる。次に、クラス情報データベース投入処理2113は、データベース投入用形式変換処理2112で作成された実行形式文を実行し、項目別クラス図情報リストデータをクラス情報データベース232に投入する。図７の項目別クラス図情報リスト231のクラス情報リスト(a)データは、CLASSテーブルに保存される。属性情報リスト(b)データは、ATTRIBUTEテーブルに保存される。操作情報リスト(c)データは、METHODテーブルに保存される。関連情報リスト(d)データは、ASSOCIATIONテーブルに保存される。継承情報リスト(e)データは、INHERITANCEテーブルに保存される。キー情報リスト(f)データは、PRIMARYKEYテーブルに保存される。
【００４６】
次に、クラス情報データベース232へのデータ投入確認が行われ、正常であれば、クラス別詳細データ出力用テーブル更新処理2120は、クラス別詳細データ233を出力するために必要なテーブルにデータの投入と更新処理を開始する。
【００４７】
図１５にクラス別詳細データ233を出力するために必要なテーブルのテーブル名一覧を示す。各テーブルのデータは、各プログラムソースコードを機械生成するときに使用する。
【００４８】
図１６に、FHテーブルのフォーマット(a)を示す。FHテーブルのデータ(b)は、データベース生成プログラム作成装置２より作成されるプログラムソースコードファイルの先頭情報(コメント文)の記述のために使用される。FHテーブルのデータ(b)は、上記CLASSテーブルのデータから作成する。
【００４９】
図１7に、MSテーブルのフォーマット(a)を示す。MSテーブルのデータ(b)は、データベース生成プログラム作成装置２より作成されるプログラムソースコード上で、属性と操作と他クラスとの関連を記述するために使用される。MSテーブルのデータ(b)は、上記CLASSテーブルと、上記ATTRIBUTEテーブルと、上記METHODテーブルと、上記ASSOCIATIONテーブルのデータを結合して作成する。
【００５０】
図１８に、CLテーブルのフォーマット(a)を示す。CLテーブルのデータ(b)は、データベース生成プログラム作成装置２より作成されるプログラムソースコード上で関連クラスにアクセスするためのソースコードを記述するために使用される。CLテーブルのデータ(b)は、上記CLASSテーブルと上記ASSOCIATIONテーブルのデータを結合して作成する。
【００５１】
図１９に、MS_KEYテーブルのフォーマット(a)を示す。MS_KEYテーブルのデータ(b)は、データベース生成プログラム作成装置より作成されるソースコード上で、関連クラスにアクセスするときのプライマリキーを指定するときに使用される。MS_KEYテーブルのデータ(b)は、上記CLASSテーブルと上記PRIMARYKEYテーブルのデータを結合して作成する。
【００５２】
図２０に、CH_INHERITテーブルのフォーマット(a)を示す。CH_INHERITテーブルのデータ(b)は、クラス関係が継承関係の場合のプログラムソースコードを記述するために使用される。CH_INHERITテーブルのデータ(b)は、INHERITANCEテーブルのデータから作成する。
【００５３】
最後にクラス別詳細データ出力処理2130は、クラス情報データベース232内のFH、MS、CL、MS_KEY、CH_INHERITから、クラス毎に情報を抽出し、クラス別詳細データ233を出力する。
【００５４】
図２１にクラス別詳細データの具体例として社員クラスの出力例の一部を示す。各項目の区切り文字に「＠」が使われているが、これは項目の区切りが識別できれば何でもよい。
【００５５】
ソースコード生成処理装置22は、ソースコード生成処理部221を備え、図２２に示すようなクラス別詳細データ233と、後述する図２４と図２５に示すようなソースコード作成スクリプトファイル2340とソースコード定義テンプレートファイル2341を入力情報とする。
【００５６】
図２３はソースコード生成処理部221の処理フローの概要を示すブロック図である。初めに、クラス一覧ファイル読み込み処理2210を行う。クラス一覧ファイルは、クラス図１に記した全クラスのクラス名が記述された一覧ファイルのことである。図８に示したクラス情報リストからクラス記号名称を取得することにより、処理すべきクラス名とループ回数(全クラス数)が分かる。次に、クラス一覧から取得したクラス名に基づいて、クラス別詳細データ233の中から該当クラス情報データ読み込み処理2211を行う。このクラス詳細データは、配列変換処理装置２１が出力したクラス毎のクラス情報詳細データである。
【００５７】
次に、データベース構造定義プログラムソースコード生成用のプログラムのテンプレートファイルとデータベース構造定義プログラムテンプレート・スクリプト読込み処理2212を行う。このテンプレートファイルとスクリプトファイルは、データベース構造定義プログラムソースコード3の生成のために事前に作られたテンプレートファイルとスクリプトファイルである。データベース構造定義プログラムソースコード出力処理2213は、データベース構造定義プログラムテンプレートファイルとスクリプトファイルに沿って、クラス情報データから必要な情報を取り出し、データベース構造定義プログラムソースコード３を生成する。以下同様に、データベース投入プログラムソースコードの生成、データベースアクセスプログラムソースコードの生成を行う。
【００５８】
図２４は、ソースコード作成スクリプトファイル2340の例である。このスクリプトファイル2340は、データベースアクセスプログラムソースコード作成用スクリプトファイルの一部である。
【００５９】
図２５は、ソースコード定義テンプレートファイル2341の例である。このソースコード定義テンプレートファイル2341は、データベースアクセスプログラムソースコード定義用テンプレートファイルの一部である。以下、スクリプトファイルとテンプレートファイルについて説明する。初めに、ソースコード定義テンプレートファイル2341は、「テンプレート関数名(){…}」の形式で記述されている。図２５に示すように具体的には、「Fun_Include01(){…}」や「Fun_OutputName(){…}」などの形式で記述されている。テンプレート関数とは、作成すべきソースコードのある一部分の雛型である。即ち、テンプレート関数を順番に並べると、ソースコード全体の雛型ができる。雛型には、テンプレート変数が記述されている。テンプレート変数とは、ソースコード毎に動的に変わるデータである。図２５では、＄{_Class}や＄{_description}などがテンプレート変数である。
【００６０】
次に、ソースコード作成スクリプトファイル2340は、一行ごとに「識別子  テンプレート関数名」の形式で構成されている。識別子は、図２２に示したクラス詳細データ内から読み出すデータの位置(行)を示している。例えば、スクリプトファイルで、識別子にFHが指定されたとした場合、図２２のクラス詳細データからは、一行目のFHの情報が取得できる。
【００６１】
図２６は、ソースコード生成処理装置内のソースコード出力処理のデータベースアクセスプログラムソースコード出力処理2217の詳細フローを示すブロック図である。図２２のクラス詳細データの例と、図２４のスクリプトファイルの例と、図２５のテンプレートファイルの例を用いて、この詳細フローを説明する。
【００６２】
初めに、データベースアクセスプログラムソースコード出力処理2217は、図２２に示したクラス詳細データを読み込み22170を行う。次に、データベースアクセスプログラムソースコード出力処理2217は、図２４に示したソースコード作成スクリプトファイルを読み込み22171を行う。データベースアクセスプログラムソースコード出力処理2217は、スクリプトファイル内を１行毎に確認し、ＦＨ識別子があるか確認する。ＦＨ識別子がある場合、ＦＨ識別子右側のテンプレート関数をテンプレート定義関数読み込み22172を行う。データベースアクセスプログラムソースコード出力処理2217は、図２２に示したクラス詳細データのFH行の取り出し22173を行う。データベースアクセスプログラムソースコード出力処理2217は、テンプレート関数内に定義されているテンプレート変数に２２１７３で取り出したデータの該当部分を代入２２１７４する。ここで、データベースアクセスプログラム出力処理２２１７は、図２２で示すFH行の情報に対して、テンプレート変数がどのカラムのデータに該当するかを知っている。例えば、FH行を参照している場合、テンプレート変数が＄{_Class}ならば、３カラム目の「Employee」を取り出すようにデータベースアクセスプログラムソースコード出力処理2217は構成されている。そして、データベースアクセスプログラムソースコード出力処理2217は、テンプレート変数にデータを代入したテンプレート関数をソースコードファイルへ出力22175する。これをスクリプトファイルの全行について行い、CL、MS、CH_INHERITについても同様の処理を行う。これにより、スクリプトファイルに記述したテンプレート関数の順番で、１つのソースコードファイルが作成される。
【００６３】
図２７は、クラス情報データのFHの各カラムとテンプレート変数名の対応表である。CH、MS、MS_KEY、CH_INHERITについても各カラムとテンプレート変数名が対応づけされている。図２６に示す詳細フローを全てのクラス情報データについて行うと、データベースアクセスプログラムソースコード５がクラス毎に生成される。データ投入プログラムソースコード４もデータベース構造定義プログラムソースコード３も、スクリプトファイルとテンプレートファイルを変更すれば同様の処理で生成することができる。
【００６４】
以上、本実施例によれば、反復型開発手法におけるオブジェクト指向のデータベース開発時にデータベースの構造(スキーマ)が変更されても、データベース関連プログラムソースコード間の整合性を確保しながらプログラムソースコードを生成すると共に、入力情報をデータベース構造モデル(クラス図)とし視覚的に分かり易くし、且つ、反復ごとに変わるソースコードの管理の手間を省き、データベース構造モデルからデータベース関連プログラムソースコードを機械生成することで、開発やテストの工数・期間を低減できるオブジェクト指向データベースを生成することができる。
【００６５】
更に、クラス情報をGUIにて描画入力することにより情報入力漏れ、クラス間関連記述の欠落を防ぐことができ、又、ソースコード生成処理装置にて、データベース関連プログラムのソースコード(データベース構造定義プログラムソースコード、データ投入プログラムソースコード、データベースアクセスプログラムソースコード)を同じデータを用いて出力することで各プログラムソースコード間の整合性を確保しつつ、オブジェクト指向のデータベースを構築するための各プログラムソースコード生成や修正の工数と修正にかかるコストを低減し、保守を容易にすることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明に係るデータベース生成プログラム生成装置のブロック図である。
【図２】本発明のデータベース生成プログラム作成装置を使用し、オブジェクト指向データベースのブロック図である。
【図３】本発明に係るクラスの具体例を表す図である。
【図４】本発明の入力するデータベース構造モデル(クラス図)を示すブロック図である。
【図５】本発明の入力するデータベース構造モデル(クラス図)の具体例を示すブロック図である。
【図６】本発明に係るモデル情報処理装置内の処理フローを示すブロック図である。
【図７】本発明に係る項目別クラス情報リストのリスト名称を表す図である。
【図８】本発明に係るクラス情報出力フォーマットを表す図である。
【図９】本発明に係る属性情報出力フォーマットを表す図である。
【図１０】本発明に係る操作情報出力フォーマットを表す図である
【図１１】本発明に係る関連情報出力フォーマットを表す図(a)と具体例を表す図(b)である
【図１２】本発明に係る継承情報出力フォーマットを表す図(a)と具体例を表す図(b)である
【図１３】本発明に係るキー情報出力フォーマットを表す図(a)と具体例を表す図(b)である
【図１４】本発明に係る配列変換処理装置内の処理フローを表すブロック図である。
【図１５】本発明に係るクラス情報データベース内のテーブル名の一覧を表す図である。
【図１６】本発明に係るクラス情報データベース内のFHテーブルのフォーマットを表す図(a)とその具体例を表す図(b)である。
【図１７】本発明に係るクラス情報データベース内のMSテーブルのフォーマットを表す図(a)とその具体例を表す図(b)である。
【図１８】本発明に係るクラス情報データベース内のCLテーブルのフォーマットを表す図(a)とその具体例を表す図(b)である。
【図１９】本発明に係るクラス情報データベース内のMS_KEYテーブルのフォーマットを表す図(a)とその具体例を表す図(b)である。
【図２０】本発明に係るクラス情報データベース内のCH_INHERITテーブルのフォーマットを表す図(a)とその具体例を表す図(b)である。
【図２１】本発明に係るクラス情報リストとデータベース投入用実行形式文の変換を表す図である。
【図２２】本発明に係るクラス別詳細データの具体例を表す図である。
【図２３】本発明に係るソースコード生成処理装置内の概略フローを表す図である。
【図２４】本発明に係るソースコード生成スクリプトの具体例を表す図である。
【図２５】本発明に係るソースコード定義テンプレートの具体例を表す図である。
【図２６】本発明に係るソースコード生成処理装置内のソースコード出力処理の詳細フローを表す図である。
【図２７】本発明に係るテンプレート変数と具体例の対応を表す図である。
【符号の説明】
【００６７】
1…データベース構造モデル(クラス図)、2…データベース生成プログラム作成装置、3…データベース構造定義プログラムソースコード、4…データ投入プログラムソースコード、5…データベースアクセスプログラムソースコード、6…データベースジェネレータ、7…データ投入装置生成ジェネレータ、8…データベースアクセス装置生成ジェネレータ、9…オブジェクト指向データベース、0A…データ投入装置、0B…データベースアクセス装置、0C…業務アプリケーション初期データ、0D…業務アプリケーション処理装置、10…クラス、101…クラス名、102…属性、103…操作、11…社員クラス、111…社員、112…社員番号、113…氏名、114…生年月日、115…給与計算、12…クラスA、121…属性A１、13…クラスB、131…操作B2、14…クラスC、141…属性C1、142…操作C2、15…クラスD、151…操作D2、16…関連、161…多重度、162…ロール名、17…集約、18…汎化、20…モデル情報処理装置、201…モデル入力部、202…モデル記憶部、203…モデル-リスト化処理部、21…配列変換処理装置、211…クラス情報入力処理部、212…クラスデータ整形処理部、213…クラス別詳細データ出力処理部、22…ソースコード生成処理装置、221…ソースコード生成処理部、23…データ保持装置、231…項目別クラス図情報リスト、232…クラス情報データベース、233…クラス別詳細データ、234…ソースコード定義テンプレート・スクリプト、2030…クラス図形読込処理、2031…入力図形情報のチェック、2032…変換処理、2033…クラス情報一覧出力、2110…クラス情報データベース作成処理、2111…項目別クラス図情報リスト読込み処理、2112…データベース投入用データ形式変換処理、2113…クラス情報データベース投入処理、2120…クラス別詳細データ出力用テーブル変更処理、2130…クラス別詳細データ出力処理、2210…クラス一覧ファイル読込み処理、2211…クラス情報データ読込み処理、2212…データベース構造定義プログラムテンプレート・スクリプト読込み処理、2213…データベース構造定義プログラムソースコード出力処理、2214…データベース投入プログラムテンプレート・スクリプト読込み処理、2215…データ投入プログラムソースコード出力処理、2216…データベースアクセスプログラムテンプレート・スクリプト読込み処理、2217…データベースアクセスプログラムソースコード出力処理、22170…クラス詳細データ読込み、22171…ソースコード作成スクリプト読込み、22172…テンプレート定義関数読込み、22173…クラス情報ファイルのＦＨからデータ取り出し、22174…テンプレート定義関数に従ってデータ代入、22175…ソースコードファイルへ出力2310…クラス情報出力フォーマットとクラス情報リストデータ、2311…属性情報出力フォーマットと属性情報リストデータ、2312…操作情報出力フォーマットと操作情報リストデータ、2313…関連情報出力フォーマットと関連情報リストデータ、2314…継承情報出力フォーマットと継承情報リストデータ、2315…キー情報出力フォーマットとキー情報リストデータ。
【図１】
2005202612.tif 000003
【図２】
2005202612.tif 000004
【図３】
2005202612.tif 000005
【図４】
2005202612.tif 000006
【図５】
2005202612.tif 000007
【図６】
2005202612.tif 000008
【図７】
2005202612.tif 000009
【図８】
2005202612.tif 000010
【図９】
2005202612.tif 000011
【図１０】
2005202612.tif 000012
【図１１】
2005202612.tif 000013
【図１２】
2005202612.tif 000014
【図１３】
2005202612.tif 000015
【図１４】
2005202612.tif 000016
【図１５】
2005202612.tif 000017
【図１６】
2005202612.tif 000018
【図１７】
2005202612.tif 000019
【図１８】
2005202612.tif 000020
【図１９】
2005202612.tif 000021
【図２０】
2005202612.tif 000022
【図２１】
2005202612.tif 000023
【図２２】
2005202612.tif 000024
【図２３】
2005202612.tif 000025
【図２４】
2005202612.tif 000026
【図２５】
2005202612.tif 000027
【図２６】
2005202612.tif 000028
【図２７】
2005202612.tif 000029