(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムを構成する複数のプログラムと、前記各プログラムの設計書とをそれぞれ生成するためのプログラム・設計書の生成装置であって、
ルートディレクトリ定義情報、抽象テンプレートファイル定義情報、具象テンプレートファイル定義情報及び相対パス定義情報、としてのメタモデル情報が予め書き込まれたメタモデル記憶手段であって、前記ルートディレクトリ定義情報は、テーブル毎に、前記アプリケーションプログラムを示すプログラムＩＤ変数、前記アプリケーションプログラムのパッケージ名変数及び前記テーブルを示すテーブルＩＤ変数を含んでプログラム生成先を示す第１ルートディレクトリ値を関連付けており、且つ、前記アプリケーションプログラム毎に、前記プログラムＩＤ変数を含んでプログラム生成先を示す第２ルートディレクトリ値を関連付けた情報であり、前記抽象テンプレートファイル定義情報は、テーブル毎に、生成される各プログラムに対応するパターン特定情報を一部に含む第１テンプレートファイル名を関連付けており、且つ前記アプリケーションプログラムのパターン特定情報毎に、生成される各プログラムに対応する第２テンプレートファイル名を関連付けた情報であり、前記具象テンプレートファイル定義情報は、前記テンプレートファイル名毎に、ステレオタイプで規定した構造の各プログラムの具象テンプレートファイルの格納位置及び一覧形式の設計書の具象テンプレートファイルの格納位置を関連付けた情報であり、前記相対パス定義情報は、前記テンプレートファイル名毎に、生成されるプログラムのファイル名の一部にテーブルＩＤ変数を含んでプログラム生成先の相対パスを関連付けた情報である前記メタモデル記憶手段と、
前記具象テンプレートファイル定義情報により関連付けたテンプレートファイル名及び格納位置に応じて、ステレオタイプで規定した構造の各プログラムの具象テンプレートファイルと、一覧形式の設計書の具象テンプレートファイルとが記憶されたテンプレート記憶手段と、
前記生成された設計書を記憶するための設計書記憶手段と、
前記生成された各プログラムを記憶するためのプログラム記憶手段と、
前記メタモデル記憶手段内の前記プログラムＩＤ変数、前記パッケージ名変数、前記パターン特定情報、前記テーブルＩＤ変数に対応するプログラムＩＤ、パッケージ名、パターン特定情報、テーブルＩＤ、といった項目毎に、プログラムＩＤ、パッケージ名、パターン特定情報、テーブルＩＤ、を含む設計情報を入力するための設計情報入力手段と、
前記項目毎に入力された設計情報を、前記各プログラムの具体的な仕様に依らない抽象的なＸＭＬ形式で表現したモデル情報に変換して出力するモデル情報出力手段と、
前記モデル情報内のＸＭＬ形式で表現されたパターン特定情報に基づき、前記メタモデル記憶手段を参照して、当該パターン特定情報に関連付けた第２テンプレートファイル名に関連付けた具象テンプレートファイルの格納位置が示す一覧形式の設計書の具象テンプレートファイルを前記テンプレート記憶手段から読み出し、前記モデル情報内のＸＭＬ形式で表現されたテーブルＩＤと、前記相対パス定義情報と、前記読み出した一覧形式の設計書の具象テンプレートファイルとに基づいて、前記モデル情報内のテーブルＩＤを前記相対パス定義情報を参照しながら当該一覧形式の設計書の具象テンプレートファイルに適用することにより、前記相対パス定義情報に含まれる前記ファイル名の一部のテーブルＩＤ変数を当該テーブルＩＤに書き換えたファイル名を一覧して示す一覧表を当該一覧形式の設計書の具象テンプレートファイルに含む設計書を生成し、この設計書を前記設計書記憶手段に書き込む設計書生成手段と、
前記モデル情報内のテーブルＩＤ及び前記モデル情報内のパターン特定情報に基づき、前記メタモデル情報内の抽象テンプレートファイル定義情報及び具象テンプレートファイル定義情報を参照して、当該テーブルＩＤ及び当該パターン特定情報に関連付けた第１テンプレートファイル名に関連付けた各プログラムの具象テンプレートファイルの格納位置が示す各プログラムの具象テンプレートファイルを前記テンプレート記憶手段から読み出すと共に、当該パターン特定情報に関連付けた第２テンプレートファイル名に関連付けた各プログラムの具象テンプレートファイルの格納位置が示す各プログラムの具象テンプレートファイルを前記テンプレート記憶手段から読み出す手段と、
前記モデル情報内のテーブルＩＤ及び前記相対パス定義情報に基づいて、前記相対パス定義情報に含まれるファイル名の一部のテーブルＩＤ変数を当該テーブルＩＤに書き換えて各プログラムのファイル名を生成し、当該ファイル名を前記読み出した具象テンプレートファイルのファイル名とすることによりステレオタイプで規定した構造の各プログラムを生成し、当該各プログラムを、前記ルートディレクトリ定義情報及び前記相対パス定義情報に基づいて前記ルートディレクトリ定義情報に含まれるプログラムＩＤ変数、パッケージ名変数及びテーブルＩＤ変数をそれぞれ前記モデル情報内のプログラムＩＤ、前記モデル情報内のパッケージ名及び前記モデル情報内のテーブルＩＤに書き換えて各プログラムのルートディレクトリ情報を生成したときの当該ルートディレクトリ情報を基点とした相対パスであって前記書き換えたファイル名を含む相対パス定義情報が示す前記相対パスに基づいて、前記プログラム記憶手段に書き込むプログラム生成手段と、
を備えたことを特徴とするプログラム・設計書の生成装置。
【請求項２】
請求項１に記載のプログラム・設計書の生成装置において、
前記ルートディレクトリ定義情報は、コピー対象ファイルの種類毎に、コピー先を示す第３ルートディレクトリ値を更に定義しており、
前記メタモデル情報は、コピー対象ファイルの種類毎に、コピー元ファイル名を定義したコピー対象ファイル定義情報と、前記コピー元ファイル名毎に、コピー元ファイルの格納位置を定義したコピー元ファイル定義情報と、前記コピー元ファイル名毎に、コピー先ファイル名を定義したコピー先ファイル定義情報と、を更に含んでおり、
前記第３ルートディレクトリ値に対応するファイル記憶手段と、
前記コピー対象ファイル定義情報及び前記コピー元ファイル定義情報により定義されたコピー元ファイルを、前記ルートディレクトリ定義情報及び前記コピー先ファイル定義情報に基づいて、前記ファイル記憶手段にコピーするファイルコピー手段と、
を更に備えたことを特徴とするプログラム・設計書の生成装置。
【請求項３】
アプリケーションプログラムを構成する複数のプログラムと、前記各プログラムの設計書とをそれぞれ生成し、且つメタモデル記憶手段、テンプレート記憶手段、設計書記憶手段及びプログラム記憶手段を備えたプログラム・設計書の生成装置に用いられるプログラム・設計書の生成プログラムであって、
前記プログラム・設計書の生成装置を、
ルートディレクトリ定義情報、抽象テンプレートファイル定義情報、具象テンプレートファイル定義情報及び相対パス定義情報、としてのメタモデル情報であって、前記ルートディレクトリ定義情報は、テーブル毎に、前記アプリケーションプログラムを示すプログラムＩＤ変数、前記アプリケーションプログラムのパッケージ名変数及び前記テーブルを示すテーブルＩＤ変数を含んでプログラム生成先を示す第１ルートディレクトリ値を関連付けており、且つ、前記アプリケーションプログラム毎に、前記プログラムＩＤ変数を含んでプログラム生成先を示す第２ルートディレクトリ値を関連付けた情報であり、前記抽象テンプレートファイル定義情報は、テーブル毎に、生成される各プログラムに対応するパターン特定情報を一部に含む第１テンプレートファイル名を関連付けており、且つ前記アプリケーションプログラムのパターン特定情報毎に、生成される各プログラムに対応する第２テンプレートファイル名を関連付けた情報であり、前記具象テンプレートファイル定義情報は、前記テンプレートファイル名毎に、ステレオタイプで規定した構造の各プログラムの具象テンプレートファイルの格納位置及び一覧形式の設計書の具象テンプレートファイルの格納位置を関連付けた情報であり、前記相対パス定義情報は、前記テンプレートファイル名毎に、生成されるプログラムのファイル名の一部にテーブルＩＤ変数を含んでプログラム生成先の相対パスを関連付けた情報である前記メタモデル情報を前記メタモデル記憶手段に書き込む手段、
前記具象テンプレートファイル定義情報により関連付けたテンプレートファイル名及び格納位置に応じて、ステレオタイプで規定した構造の各プログラムの具象テンプレートファイルと、一覧形式の設計書の具象テンプレートファイルとを前記テンプレート記憶手段に書き込む手段、
前記メタモデル記憶手段内の前記プログラムＩＤ変数、前記パッケージ名変数、前記パターン特定情報、前記テーブルＩＤ変数に対応するプログラムＩＤ、パッケージ名、パターン特定情報、テーブルＩＤ、といった項目毎に、プログラムＩＤ、パッケージ名、パターン特定情報、テーブルＩＤ、を含む設計情報を入力するための設計情報入力手段と、
前記項目毎に入力された設計情報を、前記各プログラムの具体的な仕様に依らない抽象的なＸＭＬ形式で表現したモデル情報に変換して出力するモデル情報出力手段、
前記モデル情報内のＸＭＬ形式で表現されたパターン特定情報に基づき、前記メタモデル記憶手段を参照して、当該パターン特定情報に関連付けた第２テンプレートファイル名に関連付けた具象テンプレートファイルの格納位置が示す一覧形式の設計書の具象テンプレートファイルを前記テンプレート記憶手段から読み出し、前記モデル情報内のＸＭＬ形式で表現されたテーブルＩＤと、前記相対パス定義情報と、前記読み出した一覧形式の設計書の具象テンプレートファイルとに基づいて、前記モデル情報内のテーブルＩＤを前記相対パス定義情報を参照しながら当該一覧形式の設計書の具象テンプレートファイルに適用することにより、前記相対パス定義情報に含まれる前記ファイル名の一部のテーブルＩＤ変数を当該テーブルＩＤに書き換えたファイル名を一覧して示す一覧表を当該一覧形式の設計書の具象テンプレートファイルに含む設計書を生成し、この設計書を前記設計書記憶手段に書き込む設計書生成手段、
前記モデル情報内のテーブルＩＤ及び前記モデル情報内のパターン特定情報に基づき、前記メタモデル情報内の抽象テンプレートファイル定義情報及び具象テンプレートファイル定義情報を参照して、当該テーブルＩＤ及び当該パターン特定情報に関連付けた第１テンプレートファイル名に関連付けた各プログラムの具象テンプレートファイルの格納位置が示す各プログラムの具象テンプレートファイルを前記テンプレート記憶手段から読み出すと共に、当該パターン特定情報に関連付けた第２テンプレートファイル名に関連付けた各プログラムの具象テンプレートファイルの格納位置が示す各プログラムの具象テンプレートファイルを前記テンプレート記憶手段から読み出す手段、
前記モデル情報内のテーブルＩＤ及び前記相対パス定義情報に基づいて、前記相対パス定義情報に含まれるファイル名の一部のテーブルＩＤ変数を当該テーブルＩＤに書き換えて各プログラムのファイル名を生成し、当該ファイル名を前記読み出した具象テンプレートファイルのファイル名とすることによりステレオタイプで規定した構造の各プログラムを生成し、当該各プログラムを、前記ルートディレクトリ定義情報及び前記相対パス定義情報に基づいて前記ルートディレクトリ定義情報に含まれるプログラムＩＤ変数、パッケージ名変数及びテーブルＩＤ変数をそれぞれ前記モデル情報内のプログラムＩＤ、前記モデル情報内のパッケージ名及び前記モデル情報内のテーブルＩＤに書き換えて各プログラムのルートディレクトリ情報を生成したときの当該ルートディレクトリ情報を基点とした相対パスであって前記書き換えたファイル名を含む相対パス定義情報が示す前記相対パスに基づいて、前記プログラム記憶手段に書き込むプログラム生成手段、
として機能させるためのプログラム・設計書の生成プログラム。
【請求項４】
請求項３に記載のプログラム・設計書の生成プログラムにおいて、
前記プログラム・設計書の生成装置は、ファイル記憶手段を更に備えており、
前記ルートディレクトリ定義情報は、コピー対象ファイルの種類毎に、コピー先を示す第３ルートディレクトリ値を更に定義しており、
前記メタモデル情報は、コピー対象ファイルの種類毎に、コピー元ファイル名を定義したコピー対象ファイル定義情報と、前記コピー元ファイル名毎に、コピー元ファイルの格納位置を定義したコピー元ファイル定義情報と、前記コピー元ファイル名毎に、コピー先ファイル名を定義したコピー先ファイル定義情報と、を更に含んでおり、
前記プログラム・設計書の生成装置を、
前記コピー対象ファイル定義情報及び前記コピー元ファイル定義情報により定義されたコピー元ファイルを、前記ルートディレクトリ定義情報及び前記コピー先ファイル定義情報に基づいて、前記ファイル記憶手段にコピーするファイルコピー手段、
として更に機能させるためのプログラム・設計書の生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムやその設計書を生成するためのプログラム・設計書の生成装置及びプログラム・設計書の生成プログラムに関する。
【背景技術】
【０００２】
一般に、プログラムやその設計書を生成するアプリケーション開発の分野においては、開発者の負担を軽減させる観点から、例えば、プログラムを生成するためのプログラム生成装置が提案されている（例えば、特許文献１，２参照）。
【０００３】
特許文献１には、業務仕様記述部と物理仕様記述部により構成され、詳細な物理仕様を入力することにより、動作するプログラムを生成する技術が開示されている。また、特許文献１には、物理仕様の入力がない段階では「画面プログラム」のみを生成し、表示画面を確認した後、物理仕様を入力する技術が開示されている。
【０００４】
一方、特許文献２には、設計情報記憶手段から業務用語を取得し、業務用語記憶手段を参照して業務用語に対応する識別子を抽出し、それらをテンプレート記憶手段に保持したテンプレートに埋め込むことで特定業務のプログラムを生成する技術が開示されている。      
【特許文献１】特開２００４−３１８２６０号公報（第１０段落、図８−図１１、図４６、第２８３−２８６段落、第２９２段落）
【特許文献２】特開２００５−２２８２３５号公報（第２４段落、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１，２に開示された技術は、通常は特に問題無いが、本発明者の検討によれば、以下の点で改善の余地がある。
【０００６】
特許文献１に開示された技術は、画面確認の有無のいずれにしても最終的には、詳細な物理仕様を入力する必要があるため、アプリケーション開発の生産性低下につながり易い点で改善の余地がある。
【０００７】
特許文献２に開示された技術は、一組のテンプレートを用いて特定業務のプログラムを生成できる反面、複数組のテンプレートを使い分けることができず、生成したいプログラムの仕様を柔軟に変更・追加できない点で改善の余地がある。
【０００８】
また、特許文献１，２に開示された技術は、プログラムを生成できるものの、そのプログラムの設計書を生成できない点で改善の余地がある。
【０００９】
本発明は上記実情を考慮してなされたもので、プログラム及び設計書を生成でき、生成対象の仕様を柔軟に設定でき、アプリケーション開発の生産性を向上し得るプログラム・設計書の生成装置及びプログラム・設計書の生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一つの局面によれば、アプリケーションプログラムを構成する複数のプログラムと、前記各プログラムの設計書とをそれぞれ生成するためのプログラム・設計書の生成装置であって、テーブル毎に、前記アプリケーションプログラムを示すプログラムＩＤ、前記アプリケーションプログラムのパッケージ名及び前記テーブルを示すテーブルＩＤを含んでプログラム生成先を示す第１ルートディレクトリ値を定義し、且つ、前記アプリケーションプログラム毎に、前記プログラムＩＤを含んでプログラム生成先を示す第２ルートディレクトリ値を定義したルートディレクトリ定義情報と、テーブル毎に、生成される各プログラムに対応する第１テンプレート特定キーを定義し、且つ前記アプリケーションプログラムのパターン特定情報毎に、生成される各プログラムに対応する第２テンプレート特定キーを定義した抽象テンプレートファイル定義情報と、前記テンプレート特定キー毎に、各プログラム及び設計書の具象テンプレートファイルを定義した具象テンプレートファイル定義情報と、前記テンプレート特定キー毎に、テーブルＩＤを含んでプログラム生成先の相対パスを定義した相対パス定義情報と、を含むメタモデル情報が記憶されたメタモデル記憶手段と、前記具象テンプレートファイル定義情報により定義された具象テンプレートファイルが記憶されたテンプレート記憶手段と、プログラムＩＤ、パッケージ名、パターン特定情報、テーブルＩＤ、を含む設計情報を入力するための設計情報入力手段と、前記設計情報を、前記各プログラムの具体的な仕様に依らない抽象的な形式のモデル情報に変換して出力するモデル情報出力手段と、前記モデル情報内のテーブルＩＤと、前記相対パス定義情報と、前記設計書の具象テンプレートとに基づいて、前記相対パス定義情報に当該テーブルＩＤを組み合わせたファイル名を一覧して示す一覧表を含む設計書を生成し、この設計書を前記設計書記憶手段に書き込む設計書生成手段と、前記モデル情報内のテーブルＩＤ及びパターン特定情報と、前記メタモデル情報内の抽象テンプレートファイル定義情報及び具象テンプレートファイル定義情報とに基づいて、前記テンプレート記憶手段内の具象テンプレートファイルを決定する手段と、前記モデル情報内のテーブルＩＤ及び前記相対パス定義情報に基づいて各プログラムのファイル名を生成し、当該ファイル名を前記決定した具象テンプレートファイルのファイル名とすることにより各プログラムを生成し、当該各プログラムを、前記ルートディレクトリ定義情報及び前記相対パス定義情報に基づいて前記プログラム記憶手段に書き込むプログラム生成手段と、を備えたプログラム・設計書の生成装置である。
【００１１】
なお、本発明の一つの局面としては、装置として表現したが、これに限らず、方法、プログラム、プログラムを記憶したコンピュータ読取り可能な記憶媒体、といった他のカテゴリーで表現してもよい。
【００１２】
（作用）
本発明の一つの局面によれば、プログラムＩＤ、パッケージ名、パターン特定情報、テーブルＩＤ、を含む設計情報を入力すると、設計情報を、各プログラムの具体的な仕様に依らない抽象的な形式のモデル情報に変換して出力し、このモデル情報内のテーブルＩＤと、相対パス定義情報と、設計書の具象テンプレートとに基づいて、相対パス定義情報に当該テーブルＩＤを組み合わせたファイル名を一覧して示す一覧表を含む設計書を生成し、この設計書を設計書記憶手段に書き込むと共に、モデル情報内のテーブルＩＤ及びパターン特定情報と、メタモデル情報内の抽象テンプレートファイル定義情報及び具象テンプレートファイル定義情報とに基づいて、テンプレート記憶手段内の具象テンプレートファイルを決定する手段と、モデル情報内のテーブルＩＤ及び相対パス定義情報に基づいて各プログラムのファイル名を生成し、当該ファイル名を、決定した具象テンプレートファイルのファイル名とすることにより各プログラムを生成し、当該各プログラムを、ルートディレクトリ定義情報及び相対パス定義情報に基づいてプログラム記憶手段に書き込む。
【００１３】
従って、本発明の一つの局面においては、従来とは異なり、詳細な物理仕様を入力せずにプログラム及び設計書を生成できるので、アプリケーション開発の生産性を向上でき、また、パターン特定情報に基づいて具象テンプレートファイルを決定するので、従来とは異なり、生成対象の仕様を柔軟に設定することができる。
【発明の効果】
【００１４】
以上説明したように本発明によれば、プログラム及び設計書を生成でき、生成対象の仕様を柔軟に設定でき、アプリケーション開発の生産性を向上できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態について図面を用いて説明する。なお、以下の実施形態では、Ｊａｖａ（登録商標）プログラムを例に挙げて述べるが、これに限らず、任意のプログラムを生成可能となっている。また、以下のプログラム・設計書の生成装置は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体からインストールされ、プログラム・設計書の生成装置の機能を実現させるためのプログラムが用いられる。
【００１６】
（第１の実施形態）
図１は本発明の第１の実施形態に係るプログラム・設計書の生成装置及びその周辺構成を示す模式図である。このプログラム・設計書の生成装置１００は、利用者端末２００及びデータベース装置３００にネットワーク４００を介して通信可能となっている。
【００１７】
ここで、プログラム・設計者の生成装置１００は、メタモデル記憶部１０１、テンプレート記憶部１０２、ライブラリ記憶部１０３、モデル情報記憶部１０４、設計書記憶部１０５、プログラム記憶部１０６、全体制御部１０７、設計情報入力部１０８、検証部１０９、モデル情報出力部１１０、設計書生成部１１１及びプログラム生成部１１２を備えている。
【００１８】
ここで、メタモデル記憶部１０１は、全体制御部１０７から読出／書込可能でプログラム生成部１１２から読出可能な記憶装置であり、ルートディレクトリ定義情報１０１ａ、抽象テンプレートファイル定義情報１０１ｂ、具象テンプレートファイル定義情報１０１ｃ、相対パス定義情報１０１ｄ、コピー対象ファイル定義情報１０１ｅ、コピー元ファイル定義情報１０１ｆ及びコピー先ファイル定義情報１０１ｇ、としてのメタモデル情報が予め書き込まれている。なお、各定義情報１０１ａ〜１０１ｇを用いた生成処理は、後述するパターン特定情報ｄ７により選択されないパターンの場合を除き、基本的には図２〜図１１に示す各行毎に順次実行されるので、わずかな設計情報に対し、大量の成果物（プログラム及び設計書）を生成可能となっている。
【００１９】
ルートディレクトリ定義情報１０１ａは、図２及び図３に示すように、テーブル毎に、アプリケーションプログラムを示すプログラムＩＤ、アプリケーションプログラムのパッケージ名及びテーブルを示すテーブルＩＤを含んでプログラム生成先を示す第１ルートディレクトリ値と、アプリケーションプログラム毎に、プログラムＩＤを含んでプログラム生成先を示す第２ルートディレクトリ値と、コピー対象ファイルの種類毎に、コピー先を示す第３ルートディレクトリ値とを定義した情報である。
【００２０】
抽象テンプレートファイル定義情報１０１ｂは、図４〜図６に示すように、テーブル毎に、生成される各プログラムに対応する第１テンプレート特定キーを定義し、且つ前記アプリケーションプログラムのパターン特定情報毎に、生成される各プログラムに対応する第２テンプレート特定キーを定義した情報である。
【００２１】
具象テンプレートファイル定義情報１０１ｃは、図７に示すように、テンプレート特定キー毎に、各プログラム及び設計書の具象テンプレートファイルを定義した情報である。
【００２２】
相対パス定義情報１０１ｄは、図８に示すように、テンプレート特定キー毎に、テーブルＩＤを含んでプログラム生成先の相対パスを定義した情報である。
【００２３】
コピー対象ファイル定義情報１０１ｅは、図９に示すように、コピー対象ファイルの種類毎に、コピー元ファイル名を定義した情報である。
【００２４】
コピー元ファイル定義情報１０１ｆは、図１０に示すように、コピー元ファイル名毎に、コピー元ファイルの格納位置を定義した情報である。
【００２５】
コピー先ファイル定義情報１０１ｇは、図１１に示すように、コピー元ファイル名毎に、コピー先ファイル名を定義した情報である。
【００２６】
テンプレート記憶部１０２は、全体制御部１０７から読出／書込可能で設計書生成部１１１及びプログラム生成部１１２から読出可能な記憶装置であり、具象テンプレートファイル定義情報により定義された具象テンプレートファイルが予め書き込まれている。ここで、具象テンプレートファイルは、アプリケーションプログラムのパターン特定情報に対応した、プログラムの種類（ステレオタイプ）毎のプログラムテンプレートファイル１０２ａ，１０２ｃ及び設計書の種類毎の設計書テンプレートファイル１０２ｂ，１０２ｄと、共通のプログラムテンプレートファイル１０２ｅ及び設計書テンプレートファイル１０２ｆからなる。
【００２７】
ライブラリ記憶部１０３は、全体制御部１０７から読出／書込可能でプログラム生成部１１２から読出可能な記憶装置であり、利用ライブラリ１０３ａが予め書き込まれている。ここで、利用ライブラリ１０３ａは、生成されたプログラムが、コンパイル時と実行時に参照する既存のライブラリである。アプリケーションの構造を所定のステレオタイプに規定するためのフレームワークのライブラリや、ログなどの汎用的な処理のコンポーネントのライブラリである。総じて、生成されるプログラムのソースコードの冗長性を少なくするものである。
【００２８】
モデル情報記憶部１０４は、全体制御部１０７及びモデル情報出力部１１０から読出／書込可能で設計書生成部１１１及びプログラム生成部１１２から読出可能な記憶装置であり、モデル情報出力部１１０から出力されたモデル情報１０４ａが記憶される。モデル情報１０４ａは、図１２及び図１３に示すように、生成する各プログラムの具体的な仕様に依らない抽象的な形式で設計情報を表現したデータである。モデル情報１０４ａの形式としては、例えばＸＭＬ（Extensible Markup Language）形式が使用可能となっている。このモデル情報１０４ａは、中間形態として、設計書生成とプログラム生成に利用される。
【００２９】
設計書記憶部１０５は、全体制御部１０７及び設計書生成部１１１から読出／書込可能な記憶装置であり、設計書生成部１１１により生成された設計書１０５ａが記憶される。設計書１０５ａは、設計書生成部１１１によって生成される設計書であり、プログラム１０６ａの設計書である。設計書には、例えば、（ａ）画面一覧表、（ｂ）画面項目定義表、（ｃ）テーブル一覧表、（ｄ）テーブル項目定義表、（ｅ）クラス（またはプログラム）の静的情報を表す一覧表、もしくはダイアグラム、（ｆ）クラスの相互作用を表す一覧表、もしくはダイアグラム、の種類がある。
【００３０】
プログラム記憶部１０６は、全体制御部１０７及びプログラム生成部１１２から読出／書込可能な記憶装置であり、プログラム生成部１１２により生成された各プログラム１０６ａが記憶される。プログラム１０６ａは、プログラム生成部１１２によって生成されるプログラムである。生成されたプログラム１０６ａは適切なテスト動作環境下に保存するだけで、利用者が一切追加の実装を行わなくても動作可能となっている。
【００３１】
全体制御部１０７は、後述する図１９〜図２１に示す動作を実行するように、各部１０８〜１１２を制御する機能をもっている。例えば、全体制御部１０７は、対し、設計情報の検証とモデル情報の出力を設計情報入力部１０８に指示し、設計書の生成を設計書生成部１１１に指示し、プログラムの生成をプログラム生成部１１２に指示する機能をもっている。
【００３２】
設計情報入力部１０８は、利用者端末２００から設計情報を入力するためのユーザインタフェースを利用端末２００に提供し、利用者端末２００から入力された設計情報を一時的に記憶する機能と、設計情報及び検証指示を検証部１０９に送出する機能と、検証部１０９から受けた検証結果がエラー無し（検証成功）のとき、設計情報をモデル情報出力部１１１に送出する機能とをもっている。
【００３３】
設計情報は、図１４に仕様の一例を示すように、プログラムの生成先ディレクトリｄ１、ログファイル用ディレクトリｄ２、プログラムＩＤｄ３、プログラム名称ｄ４、パッケージ名ｄ５、データベース接続情報ｄ６、アプリケーションプログラムのパターン特定情報ｄ７、オプションのキーと値ｄ８、テーブルＩＤｄ９、テーブル名ｄ１０、カラムＩＤｄ１１、カラム名称ｄ１２、カラムの型ｄ１３、カラムの桁数・位取り数ｄ１４、ＦＫ属性ｄ１５、NotNull属性ｄ１６、画面表示属性ｄ１７といった項目毎に入力される。ここで、任意の情報ｄ１，ｄ２，ｄ４や名称に関する情報ｄ３，ｄ５を除いた実質的な設計情報は、データベース接続情報ｄ６、テーブル設計情報ｄ９〜ｄ１７、及び生成されるアプリケーションのパターンに応じた少数のパラメータ情報ｄ７，ｄ８のみである。すなわち、設計情報は、従来とは異なり、物理仕様を含んでいない。なお、設計情報は、仕様情報と読み替えてもよい。
【００３４】
設計情報を入力するためのユーザインタフェースとしては、例えば、図１５〜図１８に示すように、ツール情報入力画面Ｇ１０、アプリケーション情報入力画面Ｇ２０、アプリケーションパターン情報入力画面Ｇ３０、テーブル情報入力画面Ｇ４０、を利用者端末２００に表示させるための画面データを備えている。但し、各画面による設計情報の入力（ユーザインタフェースの提供）は、必須ではなく省略してもよい。設計情報入力部１０８は、利用者端末２００から設計情報が入力されればよいので、例えば、設計情報が記述されたＥｘｃｅｌ（登録商標）などのファイルを利用者端末２００から受信する構成に変形してもよい。
【００３５】
検証部１０９は、設計情報入力部１０８から受けた設計情報に対し、図１４に示した必須又は任意の設定に基づいて、入力の不足や矛盾がないかを検証する機能と、検証結果を設計情報入力部１０８に送出する機能とをもっている。
【００３６】
モデル情報出力部１１０は、設計情報入力部１０８から受けた設計情報を、各プログラムの具体的な仕様に依らない抽象的な形式のモデル情報１０４ａに変換して出力し、当該モデル情報１０４ａをモデル情報記憶部１０４に書き込む機能をもっている。
【００３７】
設計書生成部１１１は、モデル情報記憶部１０４ａ内のモデル情報１０４ａ内のテーブルＩＤｄ９と、メタモデル情報記憶部１０１内の相対パス定義情報１０１ｄと、テンプレート記憶部１０２内の設計書の具象テンプレートとに基づいて、相対パス定義情報１０１ｄに当該テーブルＩＤｄ９を組み合わせたファイル名を一覧して示す一覧表を含む設計書１０５ａを生成する機能と、この設計書１０５ａを設計書記憶部１０５に書き込む機能とをもっている。補足すると、設計書生成部１１１は、モデル情報１０４ａに含まれるパターン特定情報ｄ７とメタモデル記憶部１０１のデータから、テンプレート記憶部１０２内の設計書テンプレートのうち適切なテンプレートを決定し、このテンプレートにモデル情報１０４ａを作用させて設計書１０５ａを生成する。すなわち、設計書生成部１１１は、モデル情報１０４ａを、メタモデルを参照しながらテンプレートに適用することにより、わずかな設計情報から望ましい仕様のアプリケーションの設計書１０５ａを自動生成している。
【００３８】
プログラム生成部１１２は、モデル情報記憶部１０４内のモデル情報１０４ａ内のテーブルＩＤｄ９及びパターン特定情報ｄ７と、メタモデル記憶部１０１内のメタモデル情報内の抽象テンプレートファイル定義情報１０１ｂ及び具象テンプレートファイル定義情報１０１ｃとに基づいて、テンプレート記憶部１０２内の具象テンプレートファイルを決定する機能と、モデル情報１０４ａ内のテーブルＩＤｄ９及び相対パス定義情報１０１ｄに基づいて各プログラムのファイル名を生成し、当該ファイル名を上記決定した具象テンプレートファイルのファイル名とすることにより各プログラム１０６ａを生成し、当該各プログラム１０６ａを、ルートディレクトリ定義情報１０１ａ及び相対パス定義情報１０１ｄに基づいてプログラム記憶部１０６に書き込む機能と、メタモデル記憶部１０１内のコピー対象ファイル定義情報１０１ｅ及びコピー元ファイル定義情報１０１ｆにより定義されたコピー元ファイルを、ルートディレクトリ定義情報１０１ａ及びコピー先ファイル定義情報１０１ｇに基づいて、ライブラリ記憶部１０３ａにコピーする機能とをもっている。
【００３９】
補足すると、プログラム生成部１１２は、モデル情報１０４ａに含まれるパターン特定情報とメタモデル記憶部１０１のデータから、テンプレート記憶部１０２内のプログラムテンプレートのうち適切なテンプレートを決定し、このテンプレートにモデル情報１０４ａを作用させてプログラム１０６ａを生成する。モデル情報を、メタモデルを参照しながらテンプレートに適用することにより、すなわち、プログラム生成部１１２は、わずかな設計情報から望ましい仕様のアプリケーションのプログラム１０６ａを自動生成する。
【００４０】
利用者端末２００は、通常のコンピュータ端末であり、例えば、利用者の操作により、プログラム・設計書の生成装置１００の全体制御部１０７を起動する機能と、設計情報入力部１０８から受けた各画面データに基づく各画面Ｇ１０〜Ｇ４０を表示する機能と、利用者の操作により、各画面Ｇ１０〜Ｇ４０に設計情報を入力し、生成実行を指示する機能とをもっている。
【００４１】
データベース装置３００は、設計情報又はモデル情報１０４ａ内のデータベース接続情報ｄ６により接続可能なデータベースサーバであり、例えば、プログラム・設計書の生成装置１００により生成されたプログラム１０６ａの実行時に接続されるものである。例えば、図１２及び図１３に示したモデル情報１０４ａ内の従業員テーブル及び部署テーブルの生成時に参照される従業員データベース及び部署データベースを含むデータベースサーバである。
【００４２】
次に、以上のように構成されたプログラム・設計書の生成装置の動作を図１９及び図２０のシーケンス図及び図２１のフローチャートを用いて説明する。
【００４３】
利用者端末２００は、利用者の操作により、全体制御部１０７にプログラム・設計書の生成装置１００の起動を指示する（ＳＴ１）。
【００４４】
全体制御部１０７は設計情報入力部１０８を起動する（ＳＴ２）。
【００４５】
設計情報入力部１０８は、設計情報を入力するための各画面データを順次、利用者端末２００に提供する。
【００４６】
利用者端末２００は、利用者の操作により、ツール情報入力画面Ｇ１０、アプリケーション情報入力画面Ｇ２０、アプリケーションパターン情報入力画面Ｇ３０及びテーブル情報入力画面Ｇ４０を順次介して設計情報入力部１０８に設計情報を入力する（ＳＴ３）。
【００４７】
ツール情報入力画面Ｇ１０は、図１５に示したように、ツール情報（ｄ１，ｄ２）を入力するための入力フィールドｇ１１，ｇ１３及びボタンｇ１２，ｇ１４〜ｇ１６を備えている。ここで「ツール情報」とはプログラム・設計書の生成装置１００が動作するための基本情報を意味するものとする。入力フィールドｇ１１には、プログラム生成先ディレクトリｄ１が入力される。入力フィールドｇ１３には、ログファイル用ディレクトリｄ２が入力される。なお、入力フィールドｇ１１，ｇ１３への直接入力に代えて、ボタンｇ１２，ｇ１４を押下することにより表示されるディレクトリ選択画面によりディレクトリを指定してもよい。
【００４８】
利用者端末２００は、利用者によるボタンｇ１５の押下操作により、処理を中断して本プログラム・設計書の生成装置１００を終了できる。また、利用者端末２００は、利用者によるボタンｇ１６の押下操作により、次のアプリケーション情報入力画面Ｇ２０に遷移できる。
【００４９】
アプリケーション情報入力画面Ｇ２０は、図１６に示したように、アプリケーション情報（ｄ３〜ｄ６）を入力するための入力フィールドｇ２１〜ｇ２６及びボタンｇ２７，ｇ２８を備えている。ここで「アプリケーション情報」とはプログラム・設計書の生成装置１００によって生成されるアプリケーションの基本情報を意味するものとする。入力フィールドｇ２１にはプログラムＩＤｄ３が入力される。入力フィールドｇ２２にはプログラム名称ｄ４が入力される。入力フィールドｇ２３にはプログラムのパッケージ名ｄ５が入力される。入力フィールドｇ２４〜ｇ２６にはデータベース接続情報ｄ６が入力される。データベース接続情報ｄ６は、データベース装置３００のＵＲＬと、接続するためのユーザ名及びパスワードとに細分でき、それぞれ各フィールドｇ２４，ｇ２５，ｇ２６に入力される。利用者端末２００は、利用者によるボタンｇ２７の押下操作により、前の画面Ｇ１０に戻ることができる。利用者端末２００は、利用者によるボタンｇ２８の押下操作により、次のアプリケーションパターン情報入力画面Ｇ３０に遷移できる。
【００５０】
アプリケーションパターン情報入力画面Ｇ３０は、図１７に示したように、アプリケーションパターン情報（ｄ７，ｄ８）を入力するためのプルダウンリストｇ３１、入力フィールドｇ３２，Ｇ３３及びボタンｇ３４，ｇ３５を備えている。ここで「アプリケーションパターン情報」とは、プログラム・設計書の生成装置１００により生成可能な複数種類の仕様のいずれを選択するかという情報と、アプリケーションの動作を変更するための必要もしくは任意のパラメータを意味するものとする。プルダウンリストｇ３１にはアプリケーションのパターン特定情報ｄ７が入力される。利用者端末２００は、利用者による選択操作により、予め決められたパターンからいずれかを選択する。なお、このアプリケーションのパターンは追加可能である。入力フィールドｇ３２，ｇ３３にはオプションのキーと値ｄ８が入力される。この例では、オプションとして、テーブルの特定カラムに格納された数値を更新の度に１ずつ加算することで同一データの更新の矛盾を防ぐ排他制御方式を採用し、オプションキーに特定カラムのカラムＩＤを表すキーを、オプション値に特定カラムの実際のカラムＩＤを指定している。このオプションキーと値は任意個数指定可能である。利用者端末２００は、利用者によるボタンｇ３４の押下操作により、前の画面Ｇ２０に戻ることができる。利用者端末２００は、利用者によるボタンｇ３５の押下操作により、次のテーブル情報入力画面Ｇ４０に遷移できる。
【００５１】
テーブル情報入力画面Ｇ４０は、図１８に示したように、入力フィールドｇ４１〜ｇ５０及びボタンｇ５１〜ｇ５３を備えている。入力フィールドｇ４１にはテーブルＩＤｄ９が入力される。入力フィールドｇ４２にはテーブルの名称ｄ１０が入力される。入力フィールドｇ４３にはカラムＩＤｄ１１が入力される。入力フィールドｇ４４にはカラムの名称ｄ１２が入力される。入力フィールドｇ４５にはカラムの型ｄ１３が入力される。このフィールドｇ４５は予め決められた型から選択的に入力してもよい。入力フィールドｇ４６，ｇ４７にはカラムの桁数・位取り数ｄ１４が入力される。入力フィールドｇ４８にはＰＫ属性ｄ１５が入力される。この例ではＰＫであれば「○」が選択され、ＰＫでなければ「−」が選択される。入力フィールドｇ４９にはNot Null属性ｄ１６が入力される。この例ではNotNullであれば「○」が選択され、Nullが許容されれば「−」が選択される。入力フィールドｇ５０には画面表示属性ｄ１７が入力される。この例では当該カラムを閲覧時に画面表示するならば「○」が選択され、画面表示しないならば「−」が選択される。利用者端末２００は、利用者によるボタンｇ５１の押下操作により、前の画面Ｇ３０に戻ることができる。利用者端末２００は、利用者によるボタンｇ５２の押下操作により、アプリケーション生成に用いるテーブルを追加するために新しいテーブル情報入力画面Ｇ４０に遷移するか、もしくは、情報入力済みの次のテーブル情報入力画面Ｇ４０に遷移する。
【００５２】
利用者端末２００は、利用者によるボタンｇ５３の押下操作により、テーブル情報入力を完了し、全体制御部１０７に対しプログラムの生成を指示する（ＳＴ４）。
【００５３】
全体制御部１０７は利用者のボタン押下イベントを検出し、プログラム生成の指示を設計情報入力部１０８へ伝達する（ＳＴ５）。
【００５４】
設計情報入力部１０８は、プログラム生成の指示を受け、入力情報に不正な入力がないかを検証するために検証部１０９に検証の指示を出す（ＳＴ６）。ここでの検証の一例は、図１４に示した必須情報が無指定の場合にエラーとすることである。検証部１０９は、検証を実行し、検証結果を設計情報入力部１０８へ返却する（ＳＴ７）。検証結果は、エラーの有無、及び、エラーがあった場合はそのエラー内容を含んでいる。
【００５５】
設計情報入力部１０８は、検証部１０９からの戻り値にエラーが含まれていた場合、全体制御部１０７へエラー情報を返却する（ＳＴ８）。全体制御部１０７は、そのエラー情報を利用者端末２００に送信する（ＳＴ９）。
【００５６】
設計情報入力部１０８は、検証部１０９からの戻り値にエラーが含まれていない場合、全体制御部１０７へエラーが無かった旨を返却する（ＳＴ１０）。全体制御部１０７は、モデル情報出力部１１０にモデル情報出力の指示を出す（ＳＴ１１）。
【００５７】
モデル情報出力部１１０は、モデル情報１０４ａを出力してモデル情報記憶部１０４に書き込む（ＳＴ１２）。
【００５８】
モデル情報１０４ａの出力が完了すると、全体制御部１０７は設計書生成部１１１に設計書生成の指示を出す（ＳＴ１３）。なお、ステップＳＴ１３〜ＳＴ１７の設計書生成処理と、ステップＳＴ１８〜ＳＴ２３のプログラム生成処理とは、いずれを先に実行してもよい。ここでは、ステップＳＴ１３〜ＳＴ１７の設計書生成処理を先に実行する場合を例に挙げて述べる。
【００５９】
ステップＳＴ１３の後、設計書生成部１１１は、モデル情報記憶部１０４内のモデル情報１０４ａと、メタモデル記憶部１０１内のメタモデル情報と、テンプレート記憶部１０２内の設計書のテンプレート情報をそれぞれ読み出す（ＳＴ１４、ＳＴ１５、ＳＴ１６）。ここで、メタモデル情報の例として、図８に示した相対パス定義情報１０１ｄを示す。相対パス定義情報１０１ｄは、相対パスを定義すると共に、生成されるプログラムがどのようなファイル名になるかを表したメタモデル情報である。例えばActionというステレオタイプのプログラムはrequestHandler/[table_id_caps]Action.javaという定義になっている。この定義にモデル情報１０４ａ内の生成先ディレクトリ（仮にc:\tmpとする）ｄ１、パッケージ名（仮にfoo.barとする）ｄ５及びテーブルＩＤ（仮にempとする)ｄ９を加えると、生成されるプログラムの保存先はc:\tmp\foo\bar\requestHandler\EmpAction.javaとなり、クラスの完全修飾名はfoo.bar.requestHandler.EmpActionとなる。
【００６０】
設計書生成部１１１は、テンプレート記憶部１０２に保存された一覧形式の設計書テンプレートを利用して、プログラム一覧を示す設計書１０５ａを生成する。設計書生成部１１１は、同様に、画面ファイルであるＪＳＰ（Java Server Pages）の情報を用いて、画面一覧を示す設計書１０５ａを生成することも可能である。以上により、設計書生成部１１１は、モデル情報１０４ａ、メタモデル情報及び設計書テンプレートに基づいて、設計書１０５ａを生成し（ＳＴ１７）、この設計書１０５ａを設計書記憶部１０５に書き込む。
【００６１】
設計書１０５ａの生成が完了すると、全体制御部１０７はプログラム生成部１１２に対し、プログラム生成の指示を出す（ＳＴ１８）。
【００６２】
プログラム生成部１１２は、モデル情報記憶部１０４内のモデル情報１０４ａ、メタモデル記憶部１０１内のメタモデル情報及びテンプレート記憶部１０２内のプログラムのテンプレート情報をそれぞれ読み出す（ＳＴ１９、ＳＴ２０、ＳＴ２１）。
【００６３】
プログラム生成部１１２は、ステップＳＴ１９〜ＳＴ２１で読み込んだ各情報を用いてプログラム１０６ａを生成し（ＳＴ２２）、このプログラム１０６ａをプログラム記憶部１０６に書き込む。また、プログラム生成部１１２は、そのままコピーすればよい利用ライブラリ１０３ａを所定の場所にコピーする（ＳＴ２３）。
【００６４】
ここで、ステップＳＴ２２，ＳＴ２３の処理を図２１のフローチャートを参照して詳細に説明する。
【００６５】
プログラム生成部１１２は、図２及び図３に示したルートディレクトリ定義情報１０１ａに基づいて、ディレクトリを作成する（ＳＴ２２−１）。
【００６６】
ルートディレクトリ定義情報１０１ａは、生成されるプログラムが、その種類ごとにどのディレクトリを基点として生成されるかを表したメタモデル情報である。例えば、モデル情報１０４ａ内のテーブルＩＤｄ９毎に生成されるＪａｖａ言語によるプログラムソースファイルは、[system_id]/WEB-INF/src/[class_name_prefix]/[table_id]という定義になっている。この定義にモデル情報１０４ａ内のプログラムＩＤ（仮にuserlistとする）ｄ３、パッケージ名（仮にfoo.barとする)ｄ５、テーブルＩＤ（仮にempとする）ｄ９を加えると、当該プログラムソースファイルが生成される基点ディレクトリは、userlist/WEB-INF/src/foo/bar/emp/となる。
【００６７】
プログラム生成部１１２は、生成すべきアプリケーションのパターンを特定し、ソースコード生成に利用する具象テンプレートを決定するために、図４〜図６に示した抽象テンプレートファイル定義情報１０１ｂを参照する（ＳＴ２２−２）。
【００６８】
抽象テンプレートファイル定義情報１０１ｂは、プログラム１０６ａを生成する際に利用する抽象テンプレートファイルを表したメタモデル情報である。例えばActionというステレオタイプのプログラムを生成するために、Action用のテンプレートを用意しておきこれを利用するが、アプリケーションのパターンや指定するオプションにより利用するテンプレートが必ずしも唯一ではない。抽象テンプレートファイル定義情報１０１ｂとは、具体的にどのテンプレートを利用するかを決定するための情報である。抽象テンプレートファイル定義情報１０１ｂには、例えば、モデル情報１０４ａに含まれるパターン特定情報ｄ７毎に具象テンプレートが書かれている。また例えば、モデル情報１０４ａ内のテーブルＩＤｄ９毎に生成されるプログラム１０６ａには、Action、Service、DAO、DSなどのステレオタイプがあり、これらは抽象テンプレート定義情報１０１ｂにjava_tableというプロパティ名で定義されており、利用する具象テンプレートを特定するキーが、それぞれcontrol_action、control_service、control_dao、control_dsである。また例えば、パターン特定情報ｄ７が仮にAppPattern1である場合に、アプリケーション毎に生成されるプログラムは、抽象テンプレート定義情報１０１ｂにjava_application.pattern.AppPattern1というプロパティ名で定義されており、利用する具象テンプレートを特定するキーがcontrol_commonDSである。
【００６９】
プログラム生成部１１２は、抽象テンプレート定義情報１０１ｂと、図７に示した具象テンプレートファイル定義情報１０１ｃを参照することで、実際に利用する具象テンプレートを決定する（ＳＴ２２−３）。
【００７０】
具象テンプレートファイル定義情報１０１ｃは、プログラム１０６ａを生成する際に利用する具象テンプレートファイルを表したメタモデル情報である。例えばActionというステレオタイプのプログラムを生成するための具象テンプレートのキーはcontrol_actionであることの例を既に示した。このキーによって決定される具象テンプレートのファイルは、lib/template/srcTemplate/controlTemplate/control_action.vmである。即ち、このパターンにおいてActionというステレオタイプのプログラムを生成するために利用する具象テンプレートファイルは、control_action.vmである。
【００７１】
プログラム生成部１１２は、図８に示したプログラム生成先の相対パス定義情報１０１ｄを参照することで、プログラム生成先に指定されたディレクトリにプログラム１０６ａを生成する（ＳＴ２２−４）。
【００７２】
相対パス定義情報１０１ｄは、ステップＳＴ２２−１で作成したプログラムの種類ごとのルートディレクトリを基点としたプログラムの生成先を示したメタモデル情報である。例えばActionというステレオタイプのプログラムを生成するための具象テンプレートのキーはcontrol_actionであることの例を既に示した。このキーによって決定されるプログラム生成先は、requestHandler/[table_id_caps]Action.javaである。[table_id_caps]は、「テーブルIDの頭文字を大文字にした文字列」を意味する変数である。即ち、emp, deptという２つのテーブルを対象とる場合Actionというステレオタイプのプログラムは、requestHandler/EmpAction.javaとrequestHandler/DeptAction.javaとなる。
【００７３】
以上のステップＳＴ２２−２〜ＳＴ２２−４の処理は、生成対象の全てのプログラムの生成が終了するまで繰り返し実行される（ＳＴ２２−５）。
【００７４】
続いて、プログラム生成部１１２は、図９〜図１１に示したコピー対象ファイル定義情報１０１ｅ、コピー元ファイル定義情報１０１ｆ、コピー先ファイル定義情報１０１ｇといった各ファイルコピー情報を参照する（ＳＴ２３−１）。そして、プログラム生成部１１２は、そのファイルコピー情報に従い所定のファイルを所定の場所へコピーする（ＳＴ２３−２）。
【００７５】
コピー対象ファイル定義情報１０１ｅは、コピーするファイルを示した抽象モデルである。例えば、jarというキーにより、そのキーに対応するコピーすべきファイルの種類を、commons-beanutils、commons-digester、jakarta-orostruts、procomposer、log4j、commons-collectionsという６種類と決定している。それぞれのファイルのコピー元とコピー先は、コピー元ファイル定義情報１０１ｆ及びコピー先ファイル定義情報１０１ｇにより定義されている。例えば、procomposerというコピーすべきファイルの種類のコピー元は、コピー元ファイル定義情報１０１ｆによりlib/reference/procomposer_rt.jarである。また、このファイルのコピー先は、コピー先ファイル定義情報１０１ｇによりprocomposer_rt.jarであるが、コピー先の基点となるルートディレクトリは、先に示した例と同様に、ルートディレクトリ定義情報１０１ａにjarというプロパティ名で定義されており[system_id]/WEB-INF/libである。
【００７６】
このステップＳＴ２３−１〜ＳＴ２３−２の処理は、コピー対象の全てのプログラムのコピーが終了するまで繰り返し実行される（ＳＴ２３−３）。
【００７７】
以上により、選択したアプリケーションのパターンに応じて、プログラムを生成する基点、利用するテンプレート、生成するディレクトリ、コピーすべきファイル、コピー先を適宜切り替えながらプログラムを生成することができる。
【００７８】
上述したように本実施形態によれば、プログラム・設計書の生成装置１００は、入力された設計情報を、各プログラムの具体的な仕様に依らない抽象的な形式のモデル情報１０４ａに変換して出力し、このモデル情報と、メタモデル情報と、設計書の具象テンプレートとに基づいて設計書を生成して設計書記憶部１０５に書き込むと共に、モデル情報１０４ａと、メタモデル情報とに基づいて、テンプレート記憶部１０２内の具象テンプレートファイルを決定し、モデル情報１０４ａ、メタモデル情報、及び決定した具象テンプレートファイルにより各プログラム１０６ａを生成し、当該各プログラム１０６ａをメタモデル情報に基づいてプログラム記憶部１０６に書き込む。
【００７９】
従って、本実施形態においては、従来とは異なり、詳細な物理仕様を入力せずにプログラム及び設計書を生成できるので、アプリケーション開発の生産性を向上でき、パターン特定情報に基づいて具象テンプレートファイルを決定するので、従来とは異なり、生成対象の仕様を柔軟に設定することができる。
【００８０】
また、利用者がわずかな設計情報を入力することだけで、複数のパターンの即時実行可能なアプリケーションプログラムと、該アプリケーションプログラムの設計書とを自動生成することで、プログラムと設計書の作成時間を短縮でき、アプリケーション開発の生産性を向上させることができる。
【００８１】
補足すると、生成するアプリケーションのパターンに応じて利用するテンプレートを切り替えることを可能にするメタモデルを定義しこれを利用することにより、詳細な物理仕様を入力しなくとも、動作するアプリケーションを自動生成できる。また同様に、生成されるアプリケーションのパターンをメタモデルに基づいて複数のテンプレートから選択しプログラムを生成できる。同様に、メタモデルを編集することで、生成するアプリケーションのパターンを容易に追加できる。
【００８２】
従って、本実施形態によれば、アプリケーション開発効率を向上させることができる。
【００８３】
これに加え、本実施形態によれば、プログラムのみを生成した従来とは異なり、プログラムの他に設計書を生成することができる。また、本実施形態によれば、テンプレートファイルをメタモデル情報に指定済みであるので、従来とは異なり、利用者がテンプレートファイルを指定せず（又は意識せず）に、プログラム及び設計書を生成することができる。さらに、本実施形態によれば、設計情報とテンプレートファイル及びディレクトリ等との関係を予めメタモデル情報に定義しておく構成により、わずかな設計情報の入力に対し、多量のプログラム及び設計書を生成することができる。なお、従来技術では、設計情報の入力量に対し、出力されるプログラムの量が比例する関係がある。
【００８４】
また、テンプレート１０２ａ〜１０２ｇや利用ライブラリ１０３ａからプログラム１０６ａ及び設計書１０５ａを生成する構成により、利用者によるプログラミング作業を省略したので、プログラミング作業の誤りに基づくバグの混入を防ぐことができ、品質を向上させることができる。
【００８５】
さらに、全体制御部１０７が、生成されたプログラム１０６ａを実行することにより、当該プログラム１０６ａの動作を確認できるので、追加の実装が不要であり、また、追加の実装をする場合でも、当該プログラム１０６ａ及び設計書１０５ａを手本や雛形として活用することができる。ここで、手本や雛形として活用する場合、例えば、開発標準の具体例としてプロジェクトに展開することができる。
【００８６】
また、高品質なテンプレート１０２ａ〜１０２ｇや利用ライブラリ１０３ａに代えて、品質の不明なテンプレート（プログラム）やライブラリを用いた場合には、プログラム・設計書の生成装置１００を、品質の不明なテンプレートやライブラリのテストツールとして利用することができる。
【００８７】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００８８】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００８９】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００９０】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００９１】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００９２】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【００９３】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【００９４】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【図面の簡単な説明】
【００９５】
【図１】本発明の第１の実施形態に係るプログラム・設計書の生成装置及びその周辺構成を示す模式図である。
【図２】同実施形態におけるルートディレクトリ定義情報の一例を示す模式図である。
【図３】同実施形態におけるルートディレクトリ定義情報の一例を示す模式図である。
【図４】同実施形態における抽象テンプレートファイル定義情報の一例を示す模式図である。
【図５】同実施形態における抽象テンプレートファイル定義情報の一例を示す模式図である。
【図６】同実施形態における抽象テンプレートファイル定義情報の一例を示す模式図である。
【図７】同実施形態における具象テンプレートファイル定義情報の一例を示す模式図である。
【図８】同実施形態における相対パス定義情報の一例を示す模式図である。
【図９】同実施形態におけるコピー対象ファイル定義情報の一例を示す模式図である。
【図１０】同実施形態におけるコピー元ファイル定義情報の一例を示す模式図である。
【図１１】同実施形態におけるコピー先ファイル定義情報の一例を示す模式図である。
【図１２】同実施形態におけるモデル情報の一例を示す模式図である。
【図１３】同実施形態におけるモデル情報の一例を示す模式図である。
【図１４】同実施形態における設計情報の仕様の一例を示す模式図である。
【図１５】同実施形態におけるツール情報入力画面の一例を示す模式図である。
【図１６】同実施形態におけるアプリケーション情報入力画面の一例を示す模式図である。
【図１７】同実施形態におけるアプリケーションパターン情報入力画面の一例を示す模式図である。
【図１８】同実施形態におけるテーブル情報入力画面の一例を示す模式図である。
【図１９】同実施形態における動作を説明するためのシーケンス図である。
【図２０】同実施形態における動作を説明するためのシーケンス図である。
【図２１】同実施形態における動作を説明するためのフローチャートである。
【符号の説明】
【００９６】
１００…プログラム・設計書の生成装置、１０１…メタモデル記憶部、１０１ａ…ルートディレクトリ定義情報、１０１ｂ…抽象テンプレートファイル定義情報、１０１ｃ…具象テンプレートファイル定義情報、１０１ｄ…相対パス定義情報、１０１ｅ…コピー対象ファイル定義情報、１０１ｆ…コピー元ファイル定義情報、１０１ｇ…コピー先ファイル定義情報、１０２…テンプレート記憶部、１０２ａ〜１０２ｆ…テンプレートファイル、１０３…ライブラリ記憶部、１０３ａ…利用ライブラリ、１０４…モデル情報記憶部、１０４ａ…モデル情報、１０５…設計書記憶部、１０５ａ…設計書、１０６…プログラム記憶部、１０６ａ…プログラム、１０７…全体制御部、１０８…設計情報入力部、１０９…検証部、１１０…モデル情報出力部、１１１…設計書生成部、１１２…プログラム生成部、２００…利用者端末、３００…データベース装置、４００…ネットワーク、ｄ１…生成先ディレクトリ、ｄ２…ログファイル用ディレクトリ、ｄ３…プログラムＩＤ、ｄ４…プログラム名称、ｄ５…パッケージ名、ｄ６…データベース接続情報、ｄ７…パターン特定情報、ｄ８…オプションのキーと値、ｄ９…テーブルＩＤ、ｄ１０…テーブル名、ｄ１１…カラムＩＤ、ｄ１２…カラム名称、ｄ１３…カラムの型、ｄ１４…カラムの桁数・位取り数、ｄ１５…ＦＫ属性、ｄ１６…NotNull属性、ｄ７…画面表示属性。
【図１】
0004672754.tif 000002
【図２】
0004672754.tif 000003
【図３】
0004672754.tif 000004
【図４】
0004672754.tif 000005
【図５】
0004672754.tif 000006
【図６】
0004672754.tif 000007
【図７】
0004672754.tif 000008
【図８】
0004672754.tif 000009
【図９】
0004672754.tif 000010
【図１０】
0004672754.tif 000011
【図１１】
0004672754.tif 000012
【図１２】
0004672754.tif 000013
【図１３】
0004672754.tif 000014
【図１４】
0004672754.tif 000015
【図１５】
0004672754.tif 000016
【図１６】
0004672754.tif 000017
【図１７】
0004672754.tif 000018
【図１８】
0004672754.tif 000019
【図１９】
0004672754.tif 000020
【図２０】
0004672754.tif 000021
【図２１】
0004672754.tif 000022