JP2005202612A - データベース生成プログラム作成装置 - Google Patents

データベース生成プログラム作成装置 Download PDF

Info

Publication number
JP2005202612A
JP2005202612A JP2004007437A JP2004007437A JP2005202612A JP 2005202612 A JP2005202612 A JP 2005202612A JP 2004007437 A JP2004007437 A JP 2004007437A JP 2004007437 A JP2004007437 A JP 2004007437A JP 2005202612 A JP2005202612 A JP 2005202612A
Authority
JP
Japan
Prior art keywords
class
database
source code
information
data
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.)
Pending
Application number
JP2004007437A
Other languages
English (en)
Inventor
Hiroyuki Nakamura
浩之 中村
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.)
Hitachi Engineering Co Ltd
Original Assignee
Hitachi Engineering Co 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 Hitachi Engineering Co Ltd filed Critical Hitachi Engineering Co Ltd
Priority to JP2004007437A priority Critical patent/JP2005202612A/ja
Publication of JP2005202612A publication Critical patent/JP2005202612A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

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

Abstract

【課題】データベースの構造(スキーマ)が変更されても、データベース関連プログラムソースコード間の整合性を確保しながらプログラムソースコードを生成するオブジェクト指向データベース生成プログラム作成装置を提供する。
【解決手段】描画入力された図形情報からなるデータベース構造モデルとなるクラス図1をクラスの属性及び関連の情報を項目別に分類して抽出し、項目別クラス図情報リスト231としてクラス情報データベース232へ登録後、クラスの関連、集約、継承及び多重度に関するクラス間の関係に係る詳細情報233を分類及び加工し、前記クラス別詳細データ233と予め作成されたソースコード定義テンプレート・スクリプト234に基づきデータベース構造定義プログラムソースコード3、データ投入プログラムソースコード4及びデータベースアクセスプログラムソースコード5を生成し整合して出力するソースコード生成装置2とを有する。
【選択図】図1

Description

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

Claims (1)

  1. 以下に示す各処理装置間での入出力データを保持するデータ保持装置と、
    描画入力された図形情報からなるデータベース構造モデルとなるクラス図をクラスの属性及び関連の情報を項目別に分類して抽出し、前記データ保持装置に項目別クラス図情報リストとして保存するモデル情報処理装置と、
    前記項目別クラス図情報リストをクラス情報データベースへ登録後、クラスの関連、集約、継承及び多重度に関するクラス間の関係に係る詳細情報を分類及び加工して前記クラス情報データベースに再登録し、クラス別詳細データとして出力する配列変換処理装置と、
    前記クラス別詳細データと予め作成されたソースコード定義テンプレート・スクリプトに基づきデータベース構造定義プログラムソースコード、データ投入プログラムソースコード及びデータベースアクセスプログラムソースコードを生成し整合して出力するソースコード生成装置とを有することを特徴とするデータベース生成プログラム作成装置。
JP2004007437A 2004-01-15 2004-01-15 データベース生成プログラム作成装置 Pending JP2005202612A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004007437A JP2005202612A (ja) 2004-01-15 2004-01-15 データベース生成プログラム作成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004007437A JP2005202612A (ja) 2004-01-15 2004-01-15 データベース生成プログラム作成装置

Publications (1)

Publication Number Publication Date
JP2005202612A true JP2005202612A (ja) 2005-07-28

Family

ID=34821062

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004007437A Pending JP2005202612A (ja) 2004-01-15 2004-01-15 データベース生成プログラム作成装置

Country Status (1)

Country Link
JP (1) JP2005202612A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084259A (ja) * 2006-09-29 2008-04-10 Japan Tobacco Inc データ収集システム
JP2013206145A (ja) * 2012-03-28 2013-10-07 Hitachi Solutions Ltd サーバ装置、データ提供システム
CN110083351A (zh) * 2019-04-22 2019-08-02 北京百度网讯科技有限公司 用于生成代码的方法和装置
CN110457064A (zh) * 2019-07-16 2019-11-15 中盈优创资讯科技有限公司 网络割接脚本的生成方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084259A (ja) * 2006-09-29 2008-04-10 Japan Tobacco Inc データ収集システム
JP4568262B2 (ja) * 2006-09-29 2010-10-27 日本たばこ産業株式会社 データ収集システム
JP2013206145A (ja) * 2012-03-28 2013-10-07 Hitachi Solutions Ltd サーバ装置、データ提供システム
CN110083351A (zh) * 2019-04-22 2019-08-02 北京百度网讯科技有限公司 用于生成代码的方法和装置
CN110083351B (zh) * 2019-04-22 2023-06-27 北京百度网讯科技有限公司 用于生成代码的方法和装置
CN110457064A (zh) * 2019-07-16 2019-11-15 中盈优创资讯科技有限公司 网络割接脚本的生成方法及装置

Similar Documents

Publication Publication Date Title
JP3842577B2 (ja) 構造化文書検索方法および構造化文書検索装置およびプログラム
Nigro et al. Data mining with ontologies: Implementations, findings, and frameworks: Implementations, findings, and frameworks
Diskin et al. Traceability mappings as a fundamental instrument in model transformations
Jones et al. Case studies in systematic software development
Atkinson et al. Harmonizing textual and graphical visualizations of domain specific models
Nistala et al. Towards digitalization of requirements: generating context-sensitive user stories from diverse specifications
Antopol’skii et al. The development of a semantic network of keywords based on definitive relationships
Talburt et al. A practical guide to entity resolution with OYSTER
CN113297251A (zh) 多源数据检索方法、装置、设备及存储介质
JP3573471B2 (ja) 全文デ−タベ−ス検索方法
Yang et al. Semantic interoperability through a novel cross-context tabular document representation approach for smart cities
Goh et al. An integrated environment for product development using STEP/EXPRESS
Wojszczyk et al. The process of verifying the implementation of design patterns—used data models
Elmasri et al. Conceptual modeling for customized XML schemas
JP2005202612A (ja) データベース生成プログラム作成装置
Molhanec Deriving relational normalisation from conceptual normalisation
JP2005056085A (ja) データ構造変換プログラム
Kalnins et al. Metamodel specialization for graphical modeling language support
Rajbhoj et al. DocToModel: automated authoring of models from diverse requirements specification documents
Fakhre Alam et al. A comparative study of RDF and topic maps development tools and APIs
Jakob et al. View creation of meta models by using modified triple graph grammars
Winder Industrial text and French neo-structuralism
Adrian et al. Ontology-driven information extraction
Jacindha et al. Program synthesis—a survey
Han A Deductive Database for Knot Colourings