(57)【特許請求の範囲】
【請求項１】
アプリケーションプログラムを構成する複数のプログラムと、前記各プログラムの設計書とをそれぞれ生成するためのプログラムと設計書の生成装置であって、
アプリケーションプログラムのパターン毎に、プログラムテンプレートファイル及び設計書テンプレートファイルを記憶する第１記憶部と、
アプリケーションプログラムを構成するプログラムを生成するために使用される前記プログラムテンプレートファイルが定義された第１情報と、前記第１情報と対となり、前記プログラムテンプレートファイルに基づいて生成されるプログラムの生成先が定義された第２情報とを含んでおり、各プログラム生成に使用されるプログラムテンプレートファイル群が前記パターン別に予め定義されたテンプレートファイル定義情報を記憶する第２記憶部と、
前記パターン毎にアプリケーション生成制御情報を記憶する第３記憶部と、
任意の前記パターンを含み、利用者から入力されるアプリケーションプログラムの設計情報を記憶する第４記憶部と、
前記設計情報と、前記設計情報の任意の前記パターンに対応する前記アプリケーション生成制御情報と、前記テンプレートファイル定義情報とに基づいて、前記テンプレートファイル定義情報の中から任意の前記パターンに関連するプログラムテンプレートファイル群を特定するとともに、特定されたプログラムテンプレートファイル群の各プログラムテンプレートファイルで生成されるプログラムそれぞれの生成情報であって、生成されるプログラム毎の前記第１情報及び前記第２情報を含むプログラム生成情報を生成する生成処理解析実行部と、
前記プログラム生成情報に基づいて、前記第１情報で指定されるプログラムテンプレートファイルを用いてプログラムを生成し、前記第２情報で指定される生成先に、生成されたプログラムを記憶するプログラム生成部と、
前記設計情報の任意の前記パターンに対応する前記設計書テンプレートファイルと、前記設計情報と、前記プログラム生成情報とを用いて、前記プログラム生成情報に基づいて生成されるプログラム毎に前記プログラム生成情報の前記第２情報それぞれが記述された設計書を生成する設計書生成部と、
を有することを特徴とするプログラムと設計書の生成装置。
【請求項２】
前記設計情報は、前記第２情報と対応付けられ、前記アプリケーションプログラムの識別情報であるアプリケーションＩＤを含み、
前記生成処理解析実行部は、前記プログラム生成情報を前記アプリケーションＩＤ別に生成するとともに、
前記プログラム生成部は、前記プログラム生成情報に基づいて、前記アプリケーションＩＤ別に前記第１情報で指定されるプログラムテンプレートファイルを用いてプログラムを生成し、前記第２情報で指定される生成先に、生成されたプログラムを記憶し、
前記設計書生成部は、前記アプリケーションＩＤ別に、生成される各プログラムの前記プログラム生成情報の前記第２情報それぞれが記述された設計書を生成することを特徴とする請求項１に記載のプログラムと設計書の生成装置。
【請求項３】
前記テンプレートファイル定義情報は、複数の前記パターン毎に、各プログラム生成に使用されるプログラムテンプレートファイル群を複数含んで構成されており、
前記生成処理解析実行部は、アプリケーション生成制御情報に基づいて、前記テンプレートファイル定義情報の中から任意の前記パターンに関連するプログラムテンプレートファイル群を特定し、前記プログラム生成情報を生成することを特徴とする請求項１又は２に記載のプログラムと設計書の生成装置。
【請求項４】
前記設計情報が所定の検証ルールに適合していることを検証する検証処理を遂行する検証部と、
前記検証ルール毎に、前記検証部で実行される複数の検証モジュールをクラス名で定義したプログラムファイルを記憶する第５記憶部と、
前記検証モジュールを指定するためのパターン定義ファイルを記憶する第６記憶部と、
前記パターン定義ファイルを参照して、前記プログラムファイルの中から指定された検証モジュールを前記検証部に対して設定するモジュール設定部と、
をさらに有することを特徴とする請求項１から３のいずれか１つに記載のプログラムと設計書の生成装置。
【請求項５】
前記モジュール設定部は、前記パターン定義ファイルに前記検証モジュールが指定されていない場合、前記検証部に対する前記検証モジュールの設定を行わないとともに、
前記検証部は、前記検証モジュールが設定されている場合に前記検証処理を行い、前記検証モジュールが設定されていない場合は、前記検証処理を行わないことを特徴とする請求項４に記載のプログラムと設計書の生成装置。
【請求項６】
前記パターン定義ファイルは、前記検証モジュールがクラス名で定義された各プログラムファイルを指定する情報を含み、
前記モジュール設定部は、前記パターン定義ファイルを参照して、前記プログラムファイル毎に前記検証モジュールを識別して前記検証部に対する前記検証モジュールの設定を行うことを特徴とする請求項４又は５に記載のプログラムと設計書の生成装置。
【請求項７】
前記設計書生成部によって生成される設計書を所定の出力形式で出力するための設計書生成モジュールであって、前記設計書生成部で実行される各出力形式に対応する複数の設計書生成モジュールをクラス名で定義したプログラムファイルを記憶する第７記憶部と、
前記設計書生成モジュールを指定するためのパターン定義ファイルを記憶する第８記憶部と、
前記パターン定義ファイルを参照して、前記プログラムファイルの中から指定された設計書生成モジュールを前記設計書生成部に対して設定するモジュール設定部と、
をさらに有することを特徴とする請求項１から３のいずれか１つに記載のプログラムと設計書の生成装置。
【請求項８】
前記モジュール設定部は、前記パターン定義ファイルに前記設計書生成モジュールが指定されていない場合、前記設計書生成部に対する前記設計書生成モジュールの設定を行わないとともに、
前記設計書生成部は、前記設計書生成モジュールが設定されている場合に設計書生成を行い、前記設計書生成モジュールが設定されていない場合は、設計書生成を行わないことを特徴とする請求項７に記載のプログラムと設計書の生成装置。
【請求項９】
前記パターン定義ファイルは、前記設計書生成モジュールがクラス名で定義された各プログラムファイルを指定する情報を含み、
前記モジュール設定部は、前記パターン定義ファイルを参照して、前記プログラムファイル毎に前記設計書生成モジュールを識別して前記設計書生成部に対する前記設計書生成モジュールの設定を行うことを特徴とする請求項７又は８に記載のプログラムと設計書の生成装置。
【請求項１０】
アプリケーションプログラムのパターン毎のプログラムテンプレートファイル及び設計書テンプレートファイル、アプリケーションプログラムを構成するプログラムを生成するために使用される前記プログラムテンプレートファイルが定義された第１情報及び前記第１情報と対となり、前記プログラムテンプレートファイルに基づいて生成されるプログラムの生成先が定義された第２情報を含んでおり、各プログラム生成に使用されるプログラムテンプレートファイル群が前記パターン別に予め定義されたテンプレートファイル定義情報、前記パターン毎のアプリケーション生成制御情報、及び任意の前記パターンを含み、利用者から入力されるアプリケーションプログラムの設計情報に基づいて、アプリケーションプログラムを構成する複数のプログラムと、前記各プログラムの設計書とをそれぞれ生成するためのプログラムと設計書の生成プログラムであって、
前記設計情報と、前記設計情報の任意の前記パターンに対応する前記アプリケーション生成制御情報と、前記テンプレートファイル定義情報とに基づいて、前記テンプレートファイル定義情報の中から任意の前記パターンに関連するプログラムテンプレートファイル群を特定するとともに、特定されたプログラムテンプレートファイル群の各プログラムテンプレートファイルで生成されるプログラムそれぞれの生成情報であって、生成されるプログラム毎の前記第１情報及び前記第２情報を含むプログラム生成情報を生成する機能と、
前記プログラム生成情報に基づいて、前記第１情報で指定されるプログラムテンプレートファイルを用いてプログラムを生成し、前記第２情報で指定される生成先に、生成されたプログラムを記憶する機能と、
前記設計情報の任意の前記パターンに対応する前記設計書テンプレートファイルと、前記設計情報と、前記プログラム生成情報とを用いて、前記プログラム生成情報に基づいて生成されるプログラム毎に前記プログラム生成情報の前記第２情報それぞれが記述された設計書を生成する機能と、
をコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、プログラムとその設計書を生成するためのプログラム・設計書（プログラムと設計書）の生成装置及びプログラムに関する。
【背景技術】
【０００２】
開発作業の負担軽減や開発コスト低減の観点から、プログラムやその設計書を生成する技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２２８２３５号公報
【特許文献２】特開２００４−３１８２６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラム生成処理を可変にし、アプリケーションパターン別のプログラム及び設計書の生成するプログラムと設計書の生成装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態のプログラムと設計書の生成装置は、アプリケーションプログラムを構成する複数のプログラムと、前記各プログラムの設計書とをそれぞれ生成するためのプログラムと設計書の生成装置であり、アプリケーションプログラムのパターン毎に、プログラムテンプレートファイル及び設計書テンプレートファイルを記憶する第１記憶部と、アプリケーションプログラムを構成するプログラムを生成するために使用される前記プログラムテンプレートファイルが定義された第１情報と、前記第１情報と対となり、前記プログラムテンプレートファイルに基づいて生成されるプログラムの生成先が定義された第２情報とを含んでおり、各プログラム生成に使用されるプログラムテンプレートファイル群が前記パターン別に予め定義されたテンプレートファイル定義情報を記憶する第２記憶部と、前記パターン毎にアプリケーション生成制御情報を記憶する第３記憶部と、任意の前記パターンを含み、利用者から入力されるアプリケーションプログラムの設計情報を記憶する第４記憶部と、前記設計情報と、前記設計情報の任意の前記パターンに対応する前記アプリケーション生成制御情報と、前記テンプレートファイル定義情報とに基づいて、前記テンプレートファイル定義情報の中から任意の前記パターンに関連するプログラムテンプレートファイル群を特定するとともに、特定されたプログラムテンプレートファイル群の各プログラムテンプレートファイルで生成されるプログラムそれぞれの生成情報であって、生成されるプログラム毎の前記第１情報及び前記第２情報を含むプログラム生成情報を生成する生成処理解析実行部と、前記プログラム生成情報に基づいて、前記第１情報で指定されるプログラムテンプレートファイルを用いてプログラムを生成し、前記第２情報で指定される生成先に、生成されたプログラムを記憶するプログラム生成部と、前記設計情報の任意の前記パターンに対応する前記設計書テンプレートファイルと、前記設計情報と、前記プログラム生成情報とを用いて、前記プログラム生成情報に基づいて生成されるプログラム毎に、前記プログラム生成情報の前記第２情報それぞれが記述された設計書を生成する設計書生成部と、を有する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係るプログラム・設計書の生成装置の構成及びシステム構成を示す図である。
【図２】第１実施形態におけるアプリケーションパターンＡのテンプレート定義情報（メタモデル情報Ａ）の一例を示す図である。
【図３】第１実施形態におけるモデル情報の一例を示す図である。
【図４】図３に続くモデル情報の一例を示す模式図である。
【図５】第１実施形態におけるアプリケーション生成制御ファイルの一例を示す図である。
【図６】第１実施形態におけるプログラム一覧の一例を示す図である。
【図７】第１実施形態におけるテーブル設計情報の仕様を入力する画面例を示す図であり、ツール情報入力画面の一例を示す図である。
【図８】第１実施形態におけるテーブル設計情報の仕様を入力する画面例を示す図であり、アプリケーション情報入力画面の一例を示す模式図である。
【図９】第１実施形態におけるテーブル設計情報の仕様を入力する画面例を示す図であり、アプリケーションパターン情報入力画面の一例を示す模式図である。
【図１０】第１実施形態におけるテーブル設計情報の仕様を入力する画面例を示す図であり、テーブル情報入力画面の一例を示す模式図である。
【図１１】第１実施形態におけるアプリケーションパターンＢのテンプレート定義情報（メタモデル情報Ｂ）の一例を示す図である。
【図１２】第１実施形態におけるモデル情報の一例を示す図である。
【図１３】第１実施形態におけるアプリケーション生成制御ファイルの一例を示す図である。
【図１４】第１実施形態におけるプログラム一覧の一例を示す図である。
【図１５】第１実施形態における画面設計情報の仕様を入力する画面例を示す図であり、アプリケーション情報入力画面の一例を示す模式図である。
【図１６】第１実施形態における画面設計情報の仕様を入力する画面例を示す図であり、画面情報入力画面の一例を示す模式図である。
【図１７】第１実施形態におけるアプリケーションパターンＣのテンプレート定義情報（メタモデル情報Ｃ）の一例を示す図である。
【図１８】第１実施形態におけるアプリケーション生成制御ファイルの一例を示す図である。
【図１９】第１実施形態におけるプログラム一覧の一例を示す図である。
【図２０】第１実施形態におけるパターン定義ファイルの一例を示す図である。
【図２１】第１実施形態におけるパターン定義ファイル１の構成例を示す図である。
【図２２】第１実施形態におけるパターン定義ファイル２の構成例を示す図である。
【図２３】第１実施形態におけるパターン定義ファイル３の構成例を示す図である。
【図２４】第１実施形態におけるパターン定義ファイル４の構成例を示す図である。
【図２５】第１実施形態におけるプログラム・設計書の生成装置のシーケンス図である。
【図２６】第１実施形態におけるプログラム・設計書の生成装置のシーケンス図である。
【図２７】第１実施形態におけるプログラム・設計書の生成装置の処理フローを示すフローチャートである。
【図２８】図２７に続くプログラム・設計書の生成装置の処理フローを示すフローチャートである。
【図２９】第１実施形態におけるルートディレクトリ情報の一例を示す図である。
【図３０】第１実施形態におけるテンプレートファイル設定情報の一例を示す図である。
【図３１】第１実施形態におけるテンプレートファイル情報の一例を示す図である。
【図３２】第１実施形態における相対パス情報の一例を示す模式図である。
【図３３】第１実施形態におけるコピー対象ファイル情報の一例を示す図である。
【図３４】第１実施形態におけるコピー元ファイル情報の一例を示す図である。
【図３５】第１実施形態におけるコピー先ファイル情報の一例を示す図である。
【発明を実施するための最良の形態】
【０００７】
以下、実施形態につき、図面を参照して説明する。
【０００８】
実施形態のプログラム・設計書の生成装置は、利用者が入力する設計情報に対し、プログラムテンプレートを適用してアプリケーションプログラムを構成する各プログラムを生成すると共に、その設計書を設計書テンプレートを適用することで生成する。
【０００９】
特に、ひな型となるテンプレートの追加や変更による柔軟性向上に加えて、プログラムの種類に対応したアプリケーションパターン毎にプログラム生成処理を可変に制御することで、様々なアプリケーションパターンに対応したプログラム生成を可能にし、生産性向上及び開発コストの低減を図ることができるアプリケーション開発を実現する。
【００１０】
（第１実施形態）
図１から図３５は、第１実施形態に係るプログラム・設計書の生成装置及びシステム構成を示す図である。なお、以下の説明では、Ｊａｖａ（登録商標）プログラムを例に挙げて述べるが、これに限らず、他の任意のプログラムについても適用可能である。
【００１１】
本実施形態のプログラム・設計書の生成装置（以下、生成装置と称する）１００は、利用者端末２００及びデータベース装置３００とネットワーク４００を介して接続されている。
【００１２】
生成装置１００は、メタモデル記憶部１０１、テンプレート記憶部１０２、ライブラリ記憶部１０３、モデル情報記憶部１０４、設計書記憶部１０５及びプログラム記憶部１０６の各記憶部と、全体制御部１０７、設計情報入力部１０８、検証部１０９、モデル情報出力部１１０、設計書生成部１１１、プログラム生成部１１２、生成処理解析実行部１１３及びモジュール設定部１１４の各部と、を含んで構成されている。
【００１３】
本実施形態のプログラム生成及び設計書生成は、利用者が入力する設計情報と予め用意されたテンプレートを用い、設計情報とプログラムテンプレート１０２２からプログラム１０６ａを生成するとともに、設計情報と設計書テンプレート１０２３から設計書１０５ａを生成する。
【００１４】
そして、本実施形態の生成装置１００は、プログラムの種類に対応したアプリケーションパターン毎にプログラム生成処理を可変に制御して、アプリケーションパターン別にプログラム１０６ａ及び設計書１０５ａを生成する。
【００１５】
アプリケーションパターンとは、生成するプログラムの種類（例えば、テーブル、画面等のアプリケーションプログラムの種類）を表すものであり、アプリケーションパターン毎に、プログラムテンプレート１０２２及び設計書テンプレート１０２３それぞれが、テンプレート記憶部１０２に記憶されている。
【００１６】
なお、本実施形態のアプリケーションパターンは、生成装置１００により生成可能な複数種類のプログラム仕様を表しているが、これ以外にも例えば、アプリケーションの動作を変更するための必要もしくは任意のパラメータを含む概念とすることができる。
【００１７】
本実施形態のプログラム生成は、アプリケーションパターン毎に生成されるプログラム１０６ａのひな型（プログラムテンプレート１０２２）を定義した情報及びこのひな型で作成されるプログラム１０６ａの生成先を定義した情報を含むメタモデル情報１０１１を用い、このメタモデル情報１０１１に、利用者が入力する設計情報から出力されるモデル情報１０４１を作用させてアプリケーションパターン毎に、生成すべきプログラム一覧を生成する。
【００１８】
アプリケーションパターン別に生成されるプログラム一覧を利用し、プログラム一覧で特定される各プログラムテンプレート１０２２にモデル情報１０４１を作用させてプログラム１０６ａを生成し、当該プログラム一覧で各プログラムテンプレートに関連付けられたプログラム生成先（プログラムの生成先を示す相対パスと、生成されるプログラムのファイル名とを含む相対パス情報）それぞれに基づいて、生成された各プログラム１０６ａをプログラム書き込む（記憶させる）。
【００１９】
また、本実施形態の設計書生成は、生成されるプログラム１０６ａのアプリケーションパターン、すなわち、設計情報に対応するアプリケーションパターンに応じた設計書テンプレート１０２３を用いて、当該プログラム一覧で各プログラムテンプレート１０２２に関連付けられたプログラム生成先である相対パス情報それぞれを含む設計書１０５ａを生成し、設計書記憶部１０５に記憶する。
【００２０】
メタモデル情報１０１１は、上述したように、プログラム１０６ａのひな型を定義した情報及びこのひな型で作成されるプログラム１０６ａの生成先を定義した情報を含むテンプレートファイル定義情報であり、１つ又は複数のアプリケーションパターンと関連付けられる。
【００２１】
つまり、メタモデル情報１０１１は、アプリケーションパターン毎にプログラム生成に使用される必要なプログラムテンプレート群を予め規定した情報であり、アプリケーションパターンそれぞれに対応する各テンプレートファイル定義情報がメタモデル情報１０１１として記憶される。
【００２２】
このとき、メタモデル情報１０１１には、後述するように複数のアプリケーションパターンそれぞれのテンプレートファイル定義情報を含むことができ、例えば、モデル情報１０４１に応じて、メタモデル情報内の対応するアプリケーションパターンに紐付くプログラムテンプレート群のみを識別して、該当するアプリケーションパターンを対象にしたプログラム生成及び設計書生成を行うこともできる。
【００２３】
メタモデル記憶部１０１には、複数のアプリケーションパターン毎に複数のメタモデル情報１０１１を記憶したり、生成するプログラムの種類に応じて特定のアプリケーションパターンに応じたメタモデル情報のみを記憶したり、複数のアプリケーションパターンそれぞれの各テンプレートファイル定義情報が１つにまとめられたメタモデル情報を記憶することができる。
【００２４】
例えば、アプリケーションパターンＡ（AppPattern1）は、テーブル設計用のアプリケーションパターンとして定義することができる。この場合、図２に示すテーブル用のメタモデル情報１０１１Ａがメタモデル情報１０１に記憶されるとともに、テンプレート記憶部１０２には、アプリケーションパターンＡに対応した複数のプログラムテンプレート１０２２Ａ及び設計書テンプレート１０２３Ａが記憶される。
【００２５】
図２は、アプリケーションパターンＡに対応したメタモデル情報１０１１Ａの一例を示す図である。図２に示すように、メタモデル情報１０１１Ａは、テーブル用のアプリケーションプログラムを生成するための複数のプログラムテンプレート、すなわち、アプリケーションパターンＡのプログラム生成に使用されるプログラムテンプレートＡ群が予め定義（記述）されている。
【００２６】
「input」には、プログラム生成部１１２へ入力されるプログラムテンプレートファイルの情報が記述される。具体的には、ひな形となるプログラムテンプレートファイル名である。「output」には、プログラム生成部１１２が出力するプログラムの生成先が記述され、ルートディレクトリ情報と相対パス情報を含んでいる。「input」及び「output」は、プログラム生成部１１２に対する制御コマンドであり、プログラム生成に使用するテンプレートに対して「input」と「output」とがペアとなるように構成されている。
【００２７】
また、例えば、アプリケーションパターンＢ（AppPattern2）は、画面設計用のアプリケーションパターンとして定義することができる。この場合、画面用のメタモデル情報１０１１Ｂがメタモデル情報１０１に記憶されるとともに、テンプレート記憶部１０２には、アプリケーションパターンＢに対応した複数のプログラムテンプレート１０２２Ｂ及び設計書テンプレート１０２３Ｂが記憶される。
【００２８】
また、例えば、アプリケーションパターンＣ（AppPattern3）は、テーブル設計及び画面設計用のアプリケーションパターンとして定義することができる。この場合、テーブル及び画面用のメタモデル情報１０１１Ｃがメタモデル情報１０１に記憶されるとともに、テンプレート記憶部１０２には、アプリケーションパターンＣに対応した複数のプログラムテンプレート１０２２Ｃ及び設計書テンプレート１０２３Ｃが記憶される。
【００２９】
なお、プログラムテンプレート１０２２Ｃ及び設計書テンプレート１０２３Ｃは、アプリケーションパターンＡ、Ｂそれぞれを組み合わせて利用することもできる。例えば、メタモデル情報１０１１Ｃに対応した複数のプログラムテンプレート１０２２及び設計書テンプレート１０２３として、これらアプリケーションパターンＡ、Ｂの各プログラムテンプレート１０２２Ａ，１０２２Ｂ及び設計書テンプレート１０２３Ａ，１０２３Ｂを組み合わせてそのまま利用することができる。
【００３０】
また、上述したアプリケーションパターンは一例であり、他のプログラムの種類に対応したアプリケーションパターンを定義し、定義したアプリケーションパターンに対応するメタモデル情報１０１１、複数のプログラムテンプレート１０２２及び設計書テンプレート１０２３を適用することもできる。
【００３１】
また、例えば、１つのアプリケーションパターンをプログラム仕様に応じてさらに細分化したアプリケーションパターンを定義することもできる。具体的には、同じテーブル設計又は／及び画面設計のアプリケーションパターンであっても、パーソナルコンピュータ向けの異なる仕様（java、.NET）毎に、アプリケーションパターンそれぞれを定義することができ、各アプリケーションパターンに対応するメタモデル情報１０１１、複数のプログラムテンプレート１０２２及び設計書テンプレート１０２３を用いたプログラム生成及び設計書生成を行うことができる。他の例として、同じテーブル設計又は／及び画面設計のアプリケーションパターンにおいてパーソナルコンピュータ向け及び移動端末向け毎に、アプリケーションパターンそれぞれを定義することもできる。
【００３２】
次に、メタモデル情報１０１１の構成について詳細に説明する。メタモデル情報１０１１は、アプリケーションパターン毎に使用する具体的なテンプレートファイル及び生成されるプログラムの生成先（ファイル名を含む）を規定した定義情報である。図２９から図３５に示す各種情報を用いて作成することができる。
【００３３】
図２９に示すルートディレクトリ情報１０１Ａは、生成されるプログラムがその種類（アプリケーションパターン）毎に、どのディレクトリを基点として生成されるかを表した情報である。例えば、テーブル毎に生成されるＪａｖａ言語によるプログラムソースファイルは、[system_id]/WEB-INF/src/[class_name_prefix]/[table_id]と規定することができる。[system_id]は、モデル情報１０４１内のアプリケーションプログラムを示すプログラムＩＤと、[class_name_prefix]は、アプリケーションプログラムのパッケージ名と、[table_id]は、テーブルＩＤと、それぞれ対応付けられる変数である（第１ルートディレクトリ）。例えば、モデル情報１０４１ＡのプログラムＩＤ（仮にuserlistとする）、パッケージ名（仮にfoo.barとする)、テーブルＩＤ（仮にempとする）を適用すると、当該プログラムソースファイルが生成される基点ディレクトリは、userlist/WEB-INF/src/foo/bar/emp/となる。
【００３４】
また、画面毎に生成されるＪａｖａ言語によるプログラムソースファイルは、[system_id]/WEB-INF/src/[class_name_prefix]と規定することができる。[system_id]は、モデル情報１０４１内のアプリケーションプログラムを示すプログラムＩＤと、[class_name_prefix]は、アプリケーションプログラムのパッケージ名と、それぞれ対応付けられる変数である（第２ルートディレクトリ）。また、図２９に示す例において、ルートディレクトリ情報は、コピー対象ファイルの種類毎に、コピー先を示す第３ルートディレクトリを含むことができる。
【００３５】
図３１に示すテンプレートファイル情報１０１Ｃは、プログラム１０６ａを生成する際に使用する具体的なテンプレートファイルを示す情報である。例えば、「lib/template/srcTemplate/controlTemplate/control_action.vm」は、「Action」というプログラムを生成するために使用するテンプレートファイルである。すなわち、テンプレートファイル「control_action.vm」を用いて「Action」というプログラムを生成する。「Action」のプログラムを生成するためのテンプレートファイル「control_action.vm」には、テンプレート特定キー「control_action」が関連付けられており、各テンプレートファイルそれぞれにテンプレート特定キーを関連付けることができる。
【００３６】
図３０は、テンプレートファイル設定情報１０１Ｂの一例である。テンプレートファイル設定情報１０１Ｂとは、具体的にどのテンプレートファイルを使用してプログラムを生成するかをテンプレート特定キーで定義した情報である。
【００３７】
図３０に示すように、例えば、テンプレートファイル設定情報１０１Ｂには、テーブル毎に生成するjavaファイルのテンプレートファイルを指定する情報としてプロパティ名「java_table」があり、プロパティ名「java_table」に対してテンプレート特定キー「control_action」、「control_service」、「control_dao」、「control_ds」それぞれが関連付けられている。
【００３８】
プロパティ名は、各アプリケーションパンターン又はモデル情報１０４１に含まれる情報に対し、使用するプログラムテンプレートをグループ分けした情報である。例えば、プロパティ名「java_table」は、上述したうようにテーブル毎に生成するjavaファイルのテンプレートファイル群のグループを規定しており、プロパティ名「java_application」は、画面毎に生成するjavaファイルのテンプレートファイル群のグループを規定している。
【００３９】
これらプロパティ名「java_table」や「java_application」は、直接的にアプリケーションパターンに関連付けられていないが、例えば、プロパティ名「java_table」は、アプリケーションパターンＡに、プロパティ名「java_application」は、アプリケーションパターンＢにそれぞれ対応するものとして予め定義することができる。
【００４０】
また、アプリケーションパターン名が直接記述されたプロパディ名を規定することもできる。例えば、「java_application.pattern.AppPattern1」というプロパティ名を規定し、テンプレート特定キーによってテンプレートファイルと関連付けることができる。この場合、同じテーブルのプログラムを作成する場合であっても上述したようにプログラム仕様が異なる場合やオプションにより使用するテンプレートが異なる場合、プロパティ名「java_table」が共通して使用されつつ、アプリケーションパターン毎に異なる「java_application.pattern.AppPattern_n」(nはアプリケーションパターン)やオプション毎のプロパティ名で規定されるテンプレートファイルが使用されるように規定することができる。
【００４１】
したがって、例えば、アプリケーションパターンＡのプログラムを生成する場合、「java_table」や「java_application.pattern.AppPattern1」等のプロパティ名で使用するテンプレートファイルを特定することができ、アプリケーションパターン毎に使用するテンプレートファイル群をメタモデル情報１０１１として作成することができる。
【００４２】
このように、図３０に示したテンプレートファイル設定情報１０１Ｂには、アプリケーションパターン毎にテンプレートファイルがそれぞれ書かれており、１つ又は複数のテンプレート特定キーが関連付けられるプロパティ名とアプリケーションパターンとが関連付けられているので、アプリケーションパターン毎に使用するテンプレートファイルを抽出し、各アプリケーションパターンに応じたテンプレート定義情報（メタモデル情報）を作成することができる。
【００４３】
なお、図３０に示したテンプレートファイル設定情報１０１Ｂは、別の説明としては、例えば、テーブル毎に生成されるプログラム１０６ａとして、Action、Service、DAO、DSなどのステレオタイプのプログラムがあり、これらを「java_table」というプロパティ名で定義したものである。
【００４４】
図３２は、相対パス情報１０１Ｄの一例を示す図である。相対パス情報１０１Ｄは、生成されるプログラムの種類ごとのルートディレクトリを基点としたプログラムの生成先を示した情報である。例えば「Action」プログラムの生成先は、requestHandler/[table_id_caps]Action.javaである。[table_id_caps]は、「テーブルＩＤの頭文字を大文字にした文字列」を意味する変数である。例えば、モデル情報１０４１内のemp、deptといった２つのテーブルＩＤを適用し、各テーブルＩＤ毎に「Action」プログラムは、requestHandler/EmpAction.javaとrequestHandler/DeptAction.javaである。同様に、画面設計用のプログラムの生成先は、[screen_id_caps](画面ＩＤの頭文字を大文字にした文字列」を意味する変数)を含むように構成される。
【００４５】
そして、生成されたプログラム１０６ａは、上述したルートディレクトリ情報１０１Ａとプログラム生成先の相対パス情報１０１Ｄに基づいて、プログラム生成先に指定されたディレクトリに生成される。
【００４６】
次に、図３３から図３５は、ライブラリ記憶部１０３に記憶されているコピー対象ファイルの種類毎のコピー元ファイル名を示すコピー対象ファイル情報１０１Ｅ、コピー元ファイル名毎にコピー元ファイルの格納位置を示すコピー元ファイル情報１０１Ｆ、コピー元ファイル名毎にコピー先ファイル名を示すコピー先ファイル情報１０１Ｇそれぞれの一例を示す図である。
【００４７】
ライブラリ記憶部１０３には、利用ライブラリ１０３ａが予め書き込まれている。利用ライブラリ１０３ａは、生成されたプログラムが、コンパイル時と実行時に参照する既存のライブラリである。アプリケーションの構造を所定のステレオタイプに規定するためのフレームワークのライブラリや、ログなどの汎用的な処理のコンポーネントのライブラリである。総じて、生成されるプログラムのソースコードの冗長性を少なくするものである。
【００４８】
コピー対象ファイル情報１０１Ｅは、コピーするファイルを示した情報である。例えば、jarというキーにより、そのキーに対応するコピーすべきファイルの種類を、commons-beanutils、commons-digester、jakarta-orostruts、procomposer、log4j、commons-collectionsという６種類と決定している。それぞれのファイルのコピー元とコピー先は、コピー元ファイル情報１０１Ｆ及びコピー先ファイル情報１０１Ｇにより定義されている。例えば、procomposerというコピーすべきファイルの種類のコピー元は、コピー元ファイル定義情報１０１Ｆによりlib/reference/procomposer_rt.jarである。また、このファイルのコピー先は、コピー先ファイル定義情報１０１Ｇによりprocomposer_rt.jarであるが、コピー先の基点となるルートディレクトリは、図２９の例と同様に、ルートディレクトリ定義情報１０１Ａにjarというプロパティ名で規定することができ、モデル情報１０４１内のアプリケーションプログラムを示すプログラムＩＤと対応付けられる変数[system_id]を含んで、[system_id]/WEB-INF/libである。
【００４９】
以上により、生成するプログラムのアプリケーションパターン毎に、使用するテンプレート、プログラムを生成するディレクトリ及び基点、コピーすべきファイル、コピー先を特定したメタモデル情報１０１１を作成することができる。
【００５０】
全体制御部１０７は、プログラム生成及び設計書生成を実行するように、各部１０８〜１１４を制御する。全体制御部１０７は、生成処理解析実行部１１３に指示して利用者が所望するアプリケーションのパターンに対応するプログラム一覧を、メタモデル情報１０１１、モデル情報１０４１及びアプリケーション生成制御ファイル１０２１を用いて生成させ、かつプログラム生成部１１２にプログラムテンプレートを適用してプログラム一覧に則した各プログラムの生成を指示する。さらに、設計書生成部１１１に設計書テンプレートを適用して生成処理解析実行部１１３によって生成されたプログラム一覧に基づく設計書の生成を指示する。
【００５１】
また、全体制御部１０７は、利用者が入力する設計情報の検証と、設計情報をモデル情報として出力する指示を設計情報入力部１０８に指示し、設計情報を検証するための検証モジュール及び生成される設計書を所定形式で出力するための設計書生成モジュールの設定をモジュール設定部１１４に指示する。
【００５２】
図３及び図４は、モデル情報１０４１の一例である。図３及び図４の例は、テーブル用のアプリケーションパターンＡのモデル情報１０４１Ａを示している。モデル情報記憶部１０４は、モデル情報出力部１１０から出力されたモデル情報１０４１を記憶する。
【００５３】
モデル情報１０４１は、生成する各プログラムの具体的な仕様に依らない抽象的な形式で設計情報を表現したデータである。モデル情報１０４１の形式としては、例えば、ＸＭＬ（Extensible Markup Language）形式を用いることができるが、他の形式であってもよい。このモデル情報１０４１は、中間形態として、プログラム生成と設計書生成に利用される。
【００５４】
設計書記憶部１０５は、設計書生成部１１１により生成された設計書１０５ａが記憶される。設計書１０５ａは、設計書生成部１１１によって生成される設計書であり、プログラム１０６ａの設計書である。設計書（設計書テンプレート）には、例えば、（ａ）画面一覧表、（ｂ）画面項目定義表、（ｃ）テーブル一覧表、（ｄ）テーブル項目定義表、（ｅ）クラス（またはプログラム）の静的情報を表す一覧表、もしくはダイアグラム、（ｆ）クラスの相互作用を表す一覧表、もしくはダイアグラムなどの種類がある。
【００５５】
プログラム記憶部１０６は、プログラム生成部１１２により生成された各プログラム１０６ａが記憶される。プログラム１０６ａは、プログラム生成部１１２によって生成されるプログラムである。生成されたプログラム１０６ａは、適切なテスト動作環境下に保存するだけで、利用者が一切追加の実装を行わなくても動作可能となっている。
【００５６】
設計情報入力部１０８は、利用者端末２００から設計情報を入力するためのユーザインタフェースを利用端末２００に提供し、利用者端末２００から入力された設計情報を一時的に記憶する機能と、設計情報及び検証指示を検証部１０９に送出する機能と、検証部１０９から受けた検証結果がエラー無し（検証成功）のとき、設計情報をモデル情報出力部１１０に送出する機能とをもっている。
【００５７】
設計情報は、例えば、テーブル設計情報、画面設計情報、テーブル設計＋画面設計の設計情報がある。テーブル設計情報は、例えば、プログラムの生成先ディレクトリ、ログファイル用ディレクトリ、プログラムＩＤ、プログラム名称、パッケージ名、データベース接続情報、アプリケーションプログラムのパターン特定情報、オプションのキーと値、テーブルＩＤ、テーブル名、カラムＩＤ、カラム名称、カラムの型、カラムの桁数・位取り数、ＦＫ属性、NotNull属性、画面表示属性といった項目が入力される。
【００５８】
テーブル設計情報を入力するためのユーザインタフェースとしては、例えば、図７〜図１０に示すように、ツール情報入力画面Ｇ１０、アプリケーション情報入力画面Ｇ２０、アプリケーションパターン情報入力画面Ｇ３０、テーブル情報入力画面Ｇ４０があり、これらの画面を利用者端末２００に表示させるための画面データを不図示の記憶部に予め用意しておくことができる。但し、各画面による設計情報の入力（ユーザインタフェースの提供）は、必須ではなく省略してもよい。設計情報入力部１０８は、利用者端末２００から設計情報が入力されればよいので、例えば、設計情報が記述されたＥｘｃｅｌ（登録商標）などのファイルを利用者端末２００から受信する構成であってもよい。画面設計情報についても同様である。
【００５９】
まず、設計情報入力部１０８は、設計情報を入力するための各画面データを順次、利用者端末２００に提供する。利用者端末２００は、利用者の操作により、ツール情報入力画面Ｇ１０、アプリケーション情報入力画面Ｇ２０、アプリケーションパターン情報入力画面Ｇ３０及びテーブル情報入力画面Ｇ４０を順次介して設計情報入力部１０８に設計情報を入力する。
【００６０】
ツール情報入力画面Ｇ１０は、図７に示すように、ツール情報を入力するための入力フィールド及びボタンを備えている。ここで「ツール情報」とはプログラム・設計書の生成装置１００が動作するための基本情報を意味する。プログラム生成先ディレクトリ、ログファイル用ディレクトリの各入力フィールドを含んでいる。なお、入力フィールドへの直接入力に代えて、ディレクトリを指定（選択）するようにしてもよい。
【００６１】
利用者端末２００は、利用者による「次の画面へ」ボタンの押下操作により、次のアプリケーション情報入力画面Ｇ２０に遷移できる。
【００６２】
アプリケーション情報入力画面Ｇ２０は、図８に示すように、アプリケーション情報を入力するための複数の入力フィールドを備えている。ここで「アプリケーション情報」とはプログラム・設計書の生成装置１００によって生成されるアプリケーションの基本情報である。
【００６３】
アプリケーション情報入力画面Ｇ２０は、プログラムＩＤ、プログラム名称、プログラムのパッケージ名を入力するための各入力フィールドと共に、データベース接続情報が入力される入力フィールドを備えている。データベース接続情報は、データベース装置３００のＵＲＬと、接続するためのユーザ名及びパスワードとを含むことができる。利用者端末２００は、利用者による「次の画面へ」ボタンの押下操作により、次のアプリケーションパターン情報入力画面Ｇ３０に遷移できる。
【００６４】
アプリケーションパターン情報入力画面Ｇ３０は、図９に示すように、アプリケーションパターン情報を入力するためのプルダウンリスト及び入力フィールドを備えている。
【００６５】
プルダウンリストにはアプリケーションのパターン特定情報（アプリケーションパターン）が入力される。利用者端末２００は、利用者による選択操作により、予め決められたアプリケーションパターンからいずれかを選択したり、直接アプリケーションパターンを入力することができる。
【００６６】
なお、アプリケーションパターンは追加可能である。オプションのキーとその値が入力される入力フィールドを含むことができ、この例では、オプションとして、テーブルの特定カラムに格納された数値を更新の度に１ずつ加算することで同一データの更新の矛盾を防ぐ排他制御方式を採用し、オプションキーに特定カラムのカラムＩＤを表すキーを、オプション値に特定カラムの実際のカラムＩＤを指定している。このオプションキーと値は任意個数指定可能である。利用者端末２００は、利用者による「次の画面へ」ボタンの押下操作により、次のテーブル情報入力画面Ｇ４０に遷移できる。
【００６７】
テーブル情報入力画面Ｇ４０は、図１０に示すように、テーブルＩＤ、テーブルの名称、カラムＩＤ、カラムの名称、カラムの型、カラムの桁数・位取り数、ＰＫ属性（ＰＫであれば「○」が選択され、ＰＫでなければ「−」が選択される）、Not Null属性（NotNullであれば「○」が選択され、Nullが許容されれば「−」が選択される）、画面表示属性（当該カラムを閲覧時に画面表示するならば「○」が選択され、画面表示しないならば「−」が選択される）の各入力フィールドを含んで構成されている。
【００６８】
利用者端末２００は、利用者による「次のテーブルへ」ボタンの押下操作により、アプリケーション生成に用いるテーブルを追加するために新しいテーブル情報入力画面Ｇ４０に遷移するか、もしくは、情報入力済みの次のテーブル情報入力画面Ｇ４０に遷移することができる。
【００６９】
検証部１０９は、設計情報入力部１０８を介して設計情報を受信し、設計情報に対して入力の不足や矛盾（各入力項目に設定された必須／任意の有無や入力情報のエラー等）がないかを検証する機能と、検証結果を設計情報入力部１０８に送出する機能と遂行する。このとき、検証部１０９は、後述するパターン定義ファイルに基づいてモジュール設定部１１３が設定した検証モジュールを用いて検証することができる。
【００７０】
モデル情報出力部１１０は、検証部１０９による検証結果がＯＫである場合、設計情報入力部１０８を介して設計情報を受信し、当該設計情報を、各プログラムの具体的な仕様に依らない抽象的な形式のモデル情報１０４１に変換して出力し、モデル情報１０４１をモデル情報記憶部１０４に書き込む。モデル情報１０４１は、例えば、テーブル設計情報に対応するモデル情報１０４１Ａや画面設計情報に対応するモデル情報１０４１Ｂなどを記憶することができる。
【００７１】
図３及び図４に示すように、モデル情報１０４１Ａ内には、設計情報の各入力項目に対応した各種情報が含まれている。図３及び図４の例では、図７から図１０に示したユーザインタフェースの各入力フィールドとの対応関係を同じ名称で示している。
【００７２】
設計書生成部１１１は、モデル情報記憶部１０４内のモデル情報１０４１と、生成処理解析実行部１１３により生成されるプログラム一覧と、テンプレート記憶部１０２内の設計書テンプレート１０２３とに基づいて、プログラムファイル名を一覧して示す一覧表を含む設計書１０５ａを生成する機能と、この設計書１０５ａを設計書記憶部１０５に書き込む機能とを遂行する。
【００７３】
設計書生成部１１１は、設計書テンプレート１０２３を用いて生成された設計書１０５ａを、後述する設計書生成モジュールを利用して、利用者が所望する出力形式（Ｅｘｃｅｌ（登録商標）、Ｗｏｒｄ形式、ＰＤＦ形式、ＰｏｗｅｒＰｏｉｎｔ形式等）で出力する機能を遂行することができる。
【００７４】
プログラム生成部１１２は、モデル情報記憶部１０４内のモデル情報１０４１と、生成処理解析実行部１１３により生成されるプログラム一覧と、テンプレート記憶部１０２内のプログラムテンプレートファイルとを用い、テーブルＩＤ（画面ＩＤ）と相対パス情報に基づく各プログラムのファイル名を生成し、当該ファイル名をプログラムテンプレートファイルのファイル名とすることにより各プログラム１０６ａを生成する機能と、当該各プログラム１０６ａを、プログラム記憶部１０６のプログラム生成先に書き込む機能と、ライブラリ記憶部１０３ａにコピー対象ファイルをコピーする機能と、を遂行する。
【００７５】
生成処理解析実行部１１３は、アプリケーション生成制御ファイル１０２１に基づいて、メタモデル情報１０１１を解析し、メタモデル情報１０１１で定義されているテンプレートファイルと、そのプログラムテンプレートを用いて生成されるプログラムの生成先とをペアにした複数のプログラム生成情報を含むプログラム一覧を生成する。生成処理解析実行部１１３は、プログラム一覧を一時的に所定の記憶領域に記憶するとともに、プログラム生成部１１２や設計書生成部１１１に出力する。
【００７６】
アプリケーション生成制御ファイル１０２１Ａは、モデル情報１０４１をメタモデル情報１０１１に作用させて、メタモデル情報１０１１に定義された各テンプレートファイル毎に生成されるプログラム一覧を生成するための制御情報である。アプリケーション生成制御ファイル１０２１Ａは、アプリケーションパターン毎にテンプレート記憶部１０２に記憶される。
【００７７】
例えば、図５に示すように、２行目は、読み込む対象となるメタモデル情報１０１１のファイル名を指定し、５行目は、コピー対象ファイルである利用ライブラリの一覧を記載したファイルを指定する。６〜８行目は、一度だけ生成処理をするテンプレートを指定する。また、１０〜１４行目は、テーブルＩＤの数だけ生成処理をするテンプレートを指定するものである。ここで、１０行目は、モデル情報１０４１内の「テーブル設計」に関する情報を抽出するための処理であり、例えば、図３及び図４に示したモデル情報１０４１Ａ内のtableタグと対応付けておき、モデル情報１０４１内のテーブルＩＤ毎にメタモデル情報１０１１を作用させる（例えば、テーブルＩＤを、メタモデル情報１０１１内の変数「teble_id」に組み込む）ように処理させることができる。
【００７８】
本実施形態では、アプリケーションパターン別に、テーブルＩＤ又は画面ＩＤ毎のアプリケーションプログラムを生成するので、これらテーブルＩＤや画面ＩＤは、アプリケーションプログラムを識別するアプリケーションＩＤとして捉えることができる。つまり、設計情報は、テーブルＩＤ又は画面ＩＤ毎に入力され、アプリケーションパターン別にテーブルＩＤの数又は画面ＩＤの数だけ、複数のアプリケーションプログラムが生成されることになる。
【００７９】
１６〜１８行目は、一度だけコピーする利用ライブラリを指定する。なお、５行目において、コピー対象ファイルである利用ライブラリの一覧を記載したファイルを指定するように生成処理解析実行部１１３を動作させているが、図２に示したようにメタモデル情報１０１１に、予めコピー対象ファイルである利用ライブラリの一覧が含まれている場合は、５行目の処理を省略することができる。例えば、コピー対象ファイルである利用ライブラリを定義した情報と、テンプレートファイル定義情報とを別途のメタモデル情報それぞれで定義した場合は、各メタモデル情報を２行目及び５行目でそれぞれ個別に読み込むことができる。
【００８０】
なお、図５の例において、先頭行が##であるものは、コメントである。また、$specsは、入力対象となるモデル情報１０４１を表しており、$generatorは、生成処理解析実行部１１３自体を表す。#foreach〜#endは、繰り返し処理を表している。
【００８１】
図６は、生成処理解析実行部１１３が生成するプログラム一覧ＰＧＬ_Ａの一例を示す図である。生成処理解析実行部１１３は、メタモデル情報１０１１Ａとモデル情報１０４１Ａとアプリケーション生成制御ファイル１０２１Ａとからプログラム一覧ＰＧＬ_Ａを生成する。
【００８２】
図６に示すように、プログラム一覧ＰＧＬ_Ａの基本的な構成は、メタモデル情報１０１１Ａと同じであり、１つのテンプレートを用いたプログラム生成に対して「input」と「output」とがペアとなったプログラム生成情報ぞれぞれが一覧形式で記述されている。「input」に記述されるプログラムテンプレートファイル名は、メタモデル情報１０１１Ａと同じであるが、「output」に記述されるプログラムファイル名を構成する相対パス情報の変数「classNamePrefixPath」には、モデル情報１０４１Ａ内のパッケージ名、変数「table_id」には、モデル情報１０４１Ａ内のテーブルＩＤが対応付けられるように組み込まれている。変数「table_id_headLarge」は、「テーブルＩＤの頭文字を大文字にした文字列」を意味するものである。なお、図６（図２）の例において、ルートディレクトリ情報を「src」として詳細な記述を省略しているが、実際には上述したように図２９に示したような各ルートディレクトリである。
【００８３】
図１１は、画面設計用のメタモデル情報１０１１Ｂの一例を示す図であり、図１２は、モデル情報１０４１Ｂの一例を示す図である。また、図１３は、アプリケーション生成制御ファイル１０２１Ｂの一例を示す図であり、図１４は、メタモデル情報１０１１Ｂとモデル情報１０４１Ｂとアプリケーション生成制御ファイル１０２１Ｂとから生成されるプログラム一覧ＰＧＬ_Ｂを示す図である。
【００８４】
図１５は、画面設計用の設計情報を入力するためのアプリケーション情報入力画面Ｇ２１の一例を示す図であり、図８に示したテーブル設計用のアプリケーション情報入力画面Ｇ２０に対して、データベース接続情報を入力するための入力フィールドを含んでいない。また、図１６は、画面情報入力画面Ｇ５０の一例を示す図である。設計情報入力部１０８は、利用者からの画面設計情報の入力要求に対し、図７、図１５、図９及び図１６の各画面データを提供して、テーブル設計用の設計情報の入力制御と同様の制御を行う。
【００８５】
図１６の例において画面情報入力画面Ｇ５０は、画面ＩＤ、画面名、画面分類、画面項目名、画面項目ＩＤ、入力可能桁数、ラベル、オブジェクトタイプ、説明の各入力フィールドを含んで構成されている。図１２に示すように、モデル情報１０４１Ｂ内には、設計情報の各入力項目に対応した各種情報が含まれている。図１２の例では、図７、図１５、図９及び図１６に示したユーザインタフェースの各入力フィールドとの対応関係を同じ名称で示している。
【００８６】
画面設計用のアプリケーション生成制御ファイル１０２１Ｂは、図５に示したアプリケーション生成制御ファイル１０２１Ａに対して１０〜１４行目が異なっており、画面ＩＤの数だけ生成処理をするテンプレートを指定する制御情報が、１０〜１４行目に記述されている。また、１０行目は、モデル情報１０４１内の「画面設計」に関する情報を抽出するための処理であり、例えば、図１２に示したモデル情報１０４１Ｂ内のentryタグと対応付けておき、モデル情報１０４１Ｂ内の画面ＩＤ毎にメタモデル情報１０１１Ｂを作用させる（例えば、画面ＩＤを、メタモデル情報１０１１Ｂ内の変数「画面ＩＤ」に組み込む）ように処理させることができる。
【００８７】
図１４は、生成処理解析実行部１１３が生成するプログラム一覧ＰＧＬ_Ｂの一例を示す図である。生成処理解析実行部１１３は、メタモデル情報１０１１Ｂとモデル情報１０４１Ｂとアプリケーション生成制御ファイル１０２１Ｂとからプログラム一覧ＰＧＬ_Ｂを生成する。
【００８８】
図１４に示すように、プログラム一覧ＰＧＬ_Ｂの基本的な構成は、メタモデル情報１０１１Ｂと同じであり、１つのテンプレートを用いたプログラム生成に対して「input」と「output」とがペアとなったプログラム生成情報ぞれぞれが一覧形式で記述されている。「input」に記述されるプログラムテンプレートファイル名は、メタモデル情報１０１１Ｂと同じであるが、「output」に記述されるプログラムファイル名を構成する相対パス情報の変数「classNamePrefixPath」には、モデル情報１０４１Ｂ内のパッケージ名、変数「画面ＩＤ」には、モデル情報１０４１Ｂ内の画面ＩＤが対応付けられるように組み込まれている。なお、図１４（図１１）の例においても、ルートディレクトリ情報を「src」として詳細な記述を省略している。
【００８９】
また、図１７は、テーブル設計及び画面設計用のメタモデル情報１０１１Ｃの一例を示す図であり、図１８は、アプリケーション生成制御ファイル１０２１Ｃの一例を示す図である。また、図１９は、メタモデル情報１０１１Ｃとモデル情報１０４１Ｃとアプリケーション生成制御ファイル１０２１Ｃとから生成されるプログラム一覧ＰＧＬ_Ｃを示す図である。
【００９０】
図１７から図１９の例は、既に個別に説明したテーブル設計と画面設計とを組み合わせたものであり、メタモデル情報１０１１Ｃは、図７〜図１０の各ユーザインタフェースから入力されたテーブル設計情報と、及び図７、図１５、図９及び図１６の各ユーザインタフェースから入力された画面設計情報とを含むテンプレートファイル定義情報である。言い換えれば、メタモデル情報１０１１Ｃには、アプリケーションパターンＡに対応するテンプレートファイル定義情報と、アプリケーションパターンＢに対応するテンプレートファイル定義情報とが、それぞれ含まれて構成されている。同様に、モデル情報１０４１Ｃ、アプリケーション生成制御ファイル１０２１Ｃ及びプログラム一覧ＰＧＬ_Ｃも、各図で説明したアプリケーションパターンＡ、Ｂ毎の各情報それぞれが含まれて構成される。
【００９１】
なお、図１７から図１９の例から分かるように、アプリケーションパターンが複数ある場合、これらアプリケーションパターンそれぞれに対応するメタモデル情報１０１１を、１つにまとめたメタモデル情報１０１１Ｃを用いることができる。つまり、本実施形態では、アプリケーション生成制御ファイル１０２１によって、メタモデル情報１０１１からプログラム生成に必要なテンプレートをアプリケーションパターン別に抽出できる。このため、複数のアプリケーションパターン毎に複数のメタモデル情報をメタモデル記憶部１０１に記憶させたり、複数のメタモデル情報を１つにまとめたメタモデル情報をメタモデル記憶部１０１に記憶させておくことができる。
【００９２】
このように本実施形態では、アプリケーション生成制御ファイルを、アプリケーションパターン毎にテンプレート記憶部１０２に記憶しておき、生成処理解析実行部１１３が、アプリケーションパターン毎に記憶されるアプリケーション生成制御ファイルを読み出すことで、特定のアプリケーションパターン（特定のプログラムの種類）のみを対象にしたプログラム生成や、複数の特定のアプリケーションパターンを対象にしたプログラム生成を行うことができる。つまり、生成処理解析実行部１１３は、アプリケーション生成制御ファイルに従ってアプリケーションパターン毎のテンプレートファイル定義情報であるメタモデル情報１０１１から、プログラムの種類に対応したアプリケーションパターン毎にプログラム一覧を生成し、プログラム一覧に基づいてプログラム生成が行われるので、プログラム生成処理を可変に制御でき、様々なアプリケーションパターン（組み合わせを含む）に対応したプログラム生成が可能となる。このため、生産性向上及び開発コストの低減を図ることができるアプリケーション開発を実現することができる。
【００９３】
モジュール設定部１１４は、パターン定義ファイル１０２５に基づいて、検証モジュールを検証部１０９に設定し、設計書生成モジュールを設計書生成部１１１に設定する機能を遂行する。パターン定義ファイル１０２５とは、使用するテンプレートを特定する情報ではなく、検証部１０９及び設計書生成部１１１が使用するモジュールを定義した情報である。
【００９４】
図２０は、パターン定義ファイル１０２５を示す図である。本実施形態のパターン定義ファイル１０２５は、「キー=バリュー」の書式で記載することができる。必要が無い項目については、行そのものを記載しないことで、モジュール設定部１１４のモジュール設定処理を制御することができる。
【００９５】
図２０において、１行目(PATTERN_ID)は、アプリケーションパターンの識別子を表す。２行目(PATTERN_NAME)は、アプリケーションパターンの名称を表す。３行目(JAR_FILE)は、検証部１０９や設計書生成部１１１で利用するモジュールを含むモジュールのファイル名を表す。例えばＪａｖａ言語により作成されたモジュールは、jarファイル名を記述する。
【００９６】
４行目(VALIDATION_CLASS)は、検証部１０９で利用するモジュール名を表し、例えばＪａｖａ言語により作成されるモジュールである場合、クラス名が記述される。５行目(DOCUMENT_CLASS)は、設計書生成部１１１で利用するモジュール名を表し、例えばJava言語により作成されるモジュールである場合、クラス名が記述される。
【００９７】
本実施形態のパターン定義ファイル１０２５は、上述したように、検証部１０９及び設計書生成部１１１が使用するモジュールを定義した情報であるので、アプリケーションパターンと直接的に関連付ける必要はない。すなわち、利用者は、生成するプログラムのアプリケーションパターンに応じて、図２０に示したパターン定義ファイル１０２５内の情報を書き換えて使用することができ、例えば、１つのパターン定義ファイル１０２５をテンプレート記憶部１０２に記憶しておき、モジュール設定部１１４は、常にこの１つのパターン定義ファイル１０２５を読み出すようにすることができる。ルールモジュール１０２４も同様であり、パターン定義ファイルで指定される各モジュールをアプリケーションパターンと対応付けない構成とすることができる。
【００９８】
したがって、図１の例は、説明の便宜のため、アプリケーションパターン毎にルールモジュール１０２４及びパターン定義ファイル１０２５が関連付けられるように図視しているものの、使用されるテンプレートに対応するアプリケーションパターンとは関係がなく、あるアプリケーションパターンで使用されるルールモジュール１０２４とパターン定義ファイル１０２５とを同じアプリケーションパターンとして一まとめにした態様を示している。
【００９９】
なお、パターン定義ファイル１０２５内のアプリケーションパターンの識別子に、プログラムの種類毎に関連付けられるアプリケーションパターンを適用し、モジュール設定部１１４が、プログラム生成及び設計書生成に使用するテンプレートを特定するアプリケーションパターンを識別し、アプリケーションパターン毎の複数のパターン定義ファイル１０２５の中から、該当のパターン定義ファイル１０２５を特定して内容を読み出すようにしてもよい。
【０１００】
図２１から図２４は、パターン制御ファイル１０２５と検証モジュール及び設計書生成モジュールの具体例を示した図である。検証モジュール及び設計書生成モジュールは、１つのjarファイルで構成することができ、jarファイル内のクラスとして検証モジュール及び設計書生成モジュールが含まれている。jarファイルは、ルールモジュール１０２４としてテンプレート記憶部１０２に記憶されている。
【０１０１】
図２１に示すように、pattern_a.jarファイルには、例えば、設計情報に対する検証方式別に複数の検証モジュールが含まれている。図２１の例では、必須検証のみを行う検証モジュール（CRUDValidator1）と必須検証と書式検証を行う検証モジュール（CRUDValidator2）がクラスとして含まれている。
【０１０２】
なお、必須検証とは、設計情報の予め設定された必須項目に対する入力有無を検証するものであり、例えば、設計情報入力部１０８を介して受信した設計情報の各項目に対し、予め設定した各項目に割り当てられた必須入力属性を参照して、必須項目への入力有無を検証することができる。書式検証とは、例えば、入力された項目の書式が予め設定された書式であるかを検証するものである。このような設計情報の各項目に対する必須／任意、書式や値なので属性は、適宜設定することができ、予め所定の記憶領域に記憶しておくことができる。
【０１０３】
また、pattern_a.jarファイルには、例えば、設計書テンプレート１０２３を用いて設計書生成部１１１が生成した設計書１０５ａの出力形式毎に、複数の設計書生成モジュールを用意することができる。図２１の例では、Ｅｘｃｅｌ（登録商標）、Ｗｏｒｄ形式、ＰＤＦ形式、ＰｏｗｅｒＰｏｉｎｔ形式の各ファイル形式で、設計書１０５ａを出力（記憶）するSPECGeneratorByXLS、SPECGeneratorByDOC、SPECGeneratorByPPTの各モジュールがクラスとして含まれている。
【０１０４】
そして、図２１に示すパターン定義ファイル１は、pattern_a.jarが指定され、pattern_a.jar内のクラス指定としてVALIDATION_CLASS=CRUDValidator1、DOCUMET_CLASS=SPECGeneratorByXLSが含まれている。つまり、検証モジュールとしてCRUDValidator1を使用し、設計書生成モジュールとしてSPECGeneratorByXLSを使用することが指定されている。モジュール設定部１１４は、パターン定義ファイル１を参照して、検証部１０９及び設計書生成部１１１に、指定された検証モジュール及び設計書生成モジュールを設定する。
【０１０５】
図２２に示すパターン定義ファイル２は、pattern_a.jarとpattern_b.jarの２つのルールモジュールが指定され、pattern_a.jar内のクラス指定としてVALIDATION_CLASS=CRUDValidator2が、pattern_b.jar内のクラス指定としてDOCUMET_CLASS=SPECGeneratorByPDFが含まれている。つまり、検証モジュールとしてCRUDValidator2を使用し、設計書生成モジュールとしてpattern_a.jar内のクラスにはないpattern_b.jar内のSPECGeneratorByPDFを使用することが指定されている。図２２の例では、pattern_a.jar内にSPECGeneratorByPDFを追加するのではなく、予めSPECGeneratorByPDFを含むpattern_b.jarを指定しつつ、当該SPECGeneratorByPDFを指定しているので、pattern_a.jarをSPECGeneratorByPDFを含むように作り直したり、SPECGeneratorByXLS等の他のクラスとの関係で追加するSPECGeneratorByPDFのクラス継承を再構築する必要がない。検証モジュールについても同様であり、pattern_a.jar内にないpattern_b.jar内の検証モジュールを指定して使用することもできる。
【０１０６】
図２３に示すパターン定義ファイル３は、pattern_a.jarが指定され、pattern_a.jar内のクラス指定としてVALIDATION_CLASS=CRUDValidator1、DOCUMET_CLASSが指定されていない。つまり、検証モジュールとしてCRUDValidator1を使用するが、設計書生成モジュールを使用しない指定がなされている。この場合、モジュール設定部１１４は、パターン定義ファイル３を参照して、検証部１０９に指定された検証モジュールを設定するが、設計書生成部１１１に対しては設計書生成モジュールを設定しない。
【０１０７】
図２３の例において、例えば、設計書生成部１１１は、モジュール設定部１１４によって設計書生成モジュールが設定されていない場合、すなわち、パターン定義ファイル内で設計書生成モジュールが指定されていない場合、設計書１０５ａを生成しないように制御することもできる。言い換えれば、パターン定義ファイル内での設計書生成モジュールの指定有無に応じて、設計書生成の有無を制御することができ、プログラム生成のみを行い、設計書生成を行わないように、生成装置１００を制御することができる。
【０１０８】
図２４に示すパターン定義ファイル４は、図２３に示したパターン定義ファイル３とは逆に、pattern_a.jar内のクラス指定としてVALIDATION_CLASSが指定されていない。つまり、検証モジュールを使用しないで、設計書生成モジュールとしてSPECGeneratorByXLSを使用する指定がなされている。この場合、モジュール設定部１１４は、パターン定義ファイル４を参照して、検証部１０９には検証モジュールを設定せずに、設計書生成部１１１に対しては設計書生成モジュールを設定する。
【０１０９】
図２４の例においても、例えば、検証部１０９は、モジュール設定部１１４によって検証モジュールが設定されていない場合、すなわち、パターン定義ファイル内で検証モジュールが指定されていない場合、設計情報の検証を行わないように制御することができる。言い換えれば、パターン定義ファイル内での検証モジュールの指定有無に応じて、検証の実行有無を制御することができ、必要に応じて設計情報の検証を行わないように、生成装置１００を制御することができる。
【０１１０】
なお、図２１から図２４の例では、１つのルールモジュールに検証モジュール及び設計書生成モジュールが含まれているが、これに限らず、例えば、検証モジュール及び設計書生成モジュール毎にルールモジュール（jarファイル）を分け、pattern_a1.jarに検証モジュールのみを、pattern_a2.jarに設計書生成モジュールのみを含むように、個別のルールモジュールで構成することもできる。この場合、パターン定義ファイル１０２５は、個別に各ルールモジュールを指定したり、これら２つのルールモジュールを指定し、検証モジュール又は／及び設計書生成モジュールをそれぞれ指定することができる。
【０１１１】
利用者端末２００は、通常のコンピュータ端末であり、例えば、利用者の操作により、生成装置１００の全体制御部１０７を起動する機能と、設計情報入力部１０８から受けた各画面データに基づく各画面Ｇ１０〜Ｇ４０、Ｇ５０を表示する機能と、利用者の操作により、各画面Ｇ１０〜Ｇ４０、Ｇ５０に設計情報を入力し、生成実行を指示する機能とをもっている。
【０１１２】
データベース装置３００は、生成装置１００により生成されたプログラム１０６ａの実行時に接続されるデータベースサーバであり、例えば、設計情報又はモデル情報１０４１内のデータベース接続情報に基づいて接続することができる。具体的には、例えば、図３及び図４に示すモデル情報１０４１Ａ内の従業員テーブル及び部署テーブルの生成時に参照される従業員データベース及び部署データベースを含むデータベースサーバである。
【０１１３】
次に、プログラム・設計書の生成装置１００の処理動作を、図２５から図２８を参照して説明する。図２５及び図２６は、本実施形態におけるプログラム・設計書の生成装置１００のシーケンス図である。
【０１１４】
図２５に示すように、利用者端末２００は、利用者の操作により、全体制御部１０７にプログラム・設計書の生成装置１００の起動を指示する。全体制御部１０７は、設計情報入力部１０８及びモジュール設定部１１４を起動する。
【０１１５】
モジュール設定部１１４は、パターン定義ファイル１０２５を読み込み、パターン定義ファイル１０２５で検証モジュールが指定されている場合、指定された検証モジュールを検証部１０９に設定する（例えば、検証処理において指定された検証モジュールを実行するように指示する）。また、パターン定義ファイル１０２５で設計書生成モジュールが指定されている場合、指定された設計書生成モジュールを設計書生成部１１１に設定する（例えば、設計書生成において指定された設計書生成モジュールを使用して設計書１０５ａを生成するように指示する）。
【０１１６】
設計書入力部１０８は、画面Ｇ１０〜Ｇ４０、Ｇ５０を利用者端末２００に提供し、各画面を介した設計情報の入力・表示制御を行う。利用者端末２００は、利用者による入力操作に基づいて、設計情報入力を完了し、全体制御部１０７に対しプログラムの生成を指示する。
【０１１７】
全体制御部１０７は、利用者端末２００から受信するプログラム生成指示に基づいて、プログラム生成の指示を設計情報入力部１０８へ伝達する。設計情報入力部１０８は、プログラム生成の指示を受け、検証モジュールを実行して入力情報（入力された設定情報）の検証を行うための指示を検証部１０９に出す。
【０１１８】
検証の一例として、例えば、不正な入力がないかを検証し、必須の入力情報が入力されていない場合にエラーとすることができる。検証部１０９は、検証モジュールを実行して設計情報に対する検証処理を行い、検証結果を設計情報入力部１０８へ出力する。検証結果は、エラーの有無、及びエラーがあった場合はそのエラー内容を含むことができる。
【０１１９】
設計情報入力部１０８は、検証部１０９からの戻り値にエラーが含まれていた場合、全体制御部１０７へエラー情報を出力する。全体制御部１０７は、そのエラー情報を利用者端末２００に送信する。
【０１２０】
設計情報入力部１０８は、検証部１０９からの戻り値にエラーが含まれていない場合、全体制御部１０７へエラーが無かった旨を出力する。全体制御部１０７は、モデル情報出力部１１０にモデル情報出力の指示を出す。モデル情報出力部１１０は、モデル情報１０４１を出力してモデル情報記憶部１０４に書き込む。
【０１２１】
続いて、図２６に示すように、モデル情報１０４１の出力が完了すると、全体制御部１０７は、生成処理解析実行部１１３に、プログラム一覧ＰＧＬの生成指示を出す。生成処理解析実行部１１３は、モデル情報１０４１、メタモデル情報１０１１、及びアプリケーション生成制御ファイルを各記憶部から読み出し、プログラム一覧ＰＧＬを生成する。このとき、生成処理解析実行部１１３は、モデル情報１０４１内のパターン特定情報（アプリケーションパターン）に基づいて、該当のアプリケーション生成制御ファイルを読み出す。また、メタモデル情報１０１１がアプリケーションパターン毎に記憶されている場合には、パターン特定情報に対応するメタモデル情報１０１１を読み出す。
【０１２２】
全体制御部１０７は、生成処理解析実行部１１３ｂによってプログラム一覧ＰＧＬが生成されると、プログラム生成部１１２にプログラム生成指示を出し、設計書生成部１１１に設計書生成指示を出す。このとき、上述したように、モジュール設定部１１４によって検証モジュールが設定されていない場合は、設計書生成部１１１に設計書生成指示を出さずに、設計書生成を行わないように制御する。
【０１２３】
なお、プログラム一覧ＰＧＬの生成後のプログラム生成と設計書生成は、どちらが先であっても構わない。また、プログラム生成と設計書生成とを同じタイミングで又はタイミングをズラして並行して遂行させるようにしてもよい。
【０１２４】
まず、設計書生成について説明する。設計書生成部１１１は、テンプレート記憶部１０２に保存された設計書テンプレートを使用し、設計書１０５ａを生成する。このとき、設計書生成部１１１は、モデル情報１０４１内のパターン特定情報（アプリケーションパターン）に基づいて、アプリケーションパターン毎に記憶されている設計書テンプレートの中から該当の設計書テンプレートを読み出し、プログラム一覧ＰＧＬ及びモデル情報１０４１を適用して、設計書１０５ａを生成する。なお、設計書生成部１１１は、設計書生成モジュールが設定されている場合、設計書生成モジュールを使用し、設計書テンプレートの適用により生成される設計書１０５ａを、設計書生成モジュールを用いて所定の出力形式で出力（記憶）する。
【０１２５】
設計書生成部１１１は、モデル情報１０４１、プログラム一覧ＰＧＬ及び設計書テンプレート１０２３に基づいて生成した設計書１０５ａを、設計書記憶部１０５に書き込む。
【０１２６】
次に、プログラム生成について説明する。全体制御部１０７は、例えば、設計書生成が完了した後、プログラム生成部１１２に対し、プログラム生成の指示を出す。
【０１２７】
プログラム生成部１１２は、モデル情報記憶部１０４内のモデル情報１０４１、プログラム一覧ＰＧＬ及びテンプレート記憶部１０２内のプログラムテンプレートをそれぞれ読み出す。このとき、プログラム生成部１１２は、プログラム一覧ＰＧＬ内で指定されているプログラムテンプレートをテンプレート記憶部１０２から読み出す。
【０１２８】
プログラム生成部１１２は、読み込んだ各情報を用いてプログラム１０６ａを生成し、プログラム一覧ＰＧＬにおいて指定されたプログラム生成先に基づいて、生成されたプログラム１０６ａをプログラム記憶部１０６に書き込む。また、プログラム生成部１１２は、コピー対象ファイルである利用ライブラリ１０３ａを、所定の場所にコピーする。
【０１２９】
プログラム一覧ＰＧＬにおいて、複数のテーブル（テーブルＩＤ）又は複数の画面（画面ＩＤ）毎に、プログラム生成情報が含まれている場合には、生成対象の全てのプログラムの生成が終了するまで繰り返し実行して各テーブル、各画面のプログラムそれぞれを生成して記憶する。
【０１３０】
図２７及び図２８は、パターン定義ファイルを用いた検証部１０９及び設計書生成部１１１の制御を説明するめのフローチャートである。
【０１３１】
全体制御部１０７が起動されると、全体制御部１０７からの指示に基づいて、モジュール設定部１１４は、テンプレート記憶部１０２に記憶されたパターン定義ファイル１０２５を読み込む（Ｓ１０１）。
【０１３２】
モジュール設定部１１４は、検証モジュールの指定があるか否か（検証モジュールを設定するキーが含まれているか、又は検証モジュールを設定するキーにクラスが指定されているか）を判別し（Ｓ１０２）、指定されている場合には検証部１０９に指定された検証モジュールを設定する（Ｓ１０３）。指定されていない場合は、検証部１０９に検証モジュールを設定しない（検証モジュール無指定を設計書入力部１０８に出力する）。
【０１３３】
次に、モジュール設定部１１４は、設計書生成モジュールの指定があるか否か（設計書モジュールを設定するキーが含まれているか、又は設計書モジュールを設定するキーにクラスが指定されているか）を判別し（Ｓ１０４）、指定されている場合には設計書生成部１１１に指定された設計書生成モジュールを設定する（Ｓ１０５）。指定されていない場合は、設計書生成部１１１に検証モジュールを設定しない（検証モジュール無指定を設計書生成部１１１に出力する）。
【０１３４】
設計情報入力後、設計情報入力部１０８は、検証部１０９に対して検証処理を指示する前に、検証モジュール設定の有無を確認し（Ｓ１０６）、検証モジュールが設定されている場合には、検証部１０９に対して設定された検証モジュールを用いた検証処理を指示する（Ｓ１０７）。検証モジュールが設定されていない場合には、検証部１０９に対して検証処理の指示自体を行わずに、検証処理を実行しないように制御する。
【０１３５】
そして、ステップＳ１０６における検証処理において検証エラーがない場合（Ｓ１０８）、又は検証処理を行わない場合には、ステップＳ１０９に進み、モデル情報１０４１を出力する指示をモデル情報出力部１１０に出す。そして、生成処理解析実行部１１３によるプログラム一覧ＰＧＬの生成処理（Ｓ１１０）を経た後の設計書生成において、設計書生成部１１１は、設計書テンプレートを適用した設計書生成を実行する前に、設計書生成モジュール設定の有無を確認し（Ｓ１１２）、設計書生成モジュールが設定されている場合には、設定された設計書生成モジュールを用いた設計書生成を行う（Ｓ１１３）。設計書生成モジュールが設定されていない場合には、設計書生成を行わないように制御する。なお、図２８の例では、設計書生成前にプログラム生成を行っているが（Ｓ１１１）、上述したように、プログラム一覧ＰＧＬ生成後は、プログラム生成と設計書生成は、前後してもよい。
【０１３６】
なお、テーブル設計又は／及び画面設計の設計情報において、アプリケーションパターン（パターン特定情報）を入力情報とし、モデル情報１０４１にアプリケーションパターンが含まれるようにしているが、アプリケーションパターン自体は、設計情報の必須項目とでなくてもよい。つまり、本実施形態では、アプリケーションパターン毎のアプリケーション生成制御ファイル１０２１を用いているので、例えば、モデル情報１０４１にアプリケーションパターンが含まれていなくても、任意の設計情報に対して特定されたアプリケーション生成制御ファイル１０２１を使用するように設定している場合、自動的に設計情報に応じたアプリケーションパターンのプログラムを生成することができる。
【０１３７】
本実施形態によれば、生成処理解析実行部１１３が、アプリケーションパターン毎のアプリケーション生成制御ファイル１０２１に従い、テンプレートファイル定義情報であるメタモデル情報１０１１から、プログラムの種類に対応したアプリケーションパターン毎のプログラム一覧を生成し、プログラム一覧に基づいてプログラム生成が行われるので、アプリケーションパターン毎にプログラム生成処理を可変に制御でき、様々なアプリケーションパターン（組み合わせを含む）に対応したプログラム生成が可能となる。このため、生産性向上及び開発コストの低減を図ることができるアプリケーション開発を実現することができる。
【０１３８】
さらに、モジュール設定部１１４が、パターン定義ファイル１０２５に従い、検証モジュール及び設計書生成モジュールを設定するので、検証形式や設計書１０５ａの出力形式を可変に制御することができる。例えば、アプリケーションパターン毎に設計情報が異なる場合、検証部１０９で実行する検証モジュール（検証形式）を切り替えて、設計情報に適合する検証形式での検証を可変に制御することができる。また、設計書生成モジュールを切り換えることで、設計書１０５ａの出力形式を任意に設定でき、利便性が向上する。
【０１３９】
また、異なるルールモジュール１０２４に跨って検証モジュール及び設計書生成モジュールを指定してこれらを使用することができるので、あるルールモジュールにクラスを追加する必要がない。このため、クラスの編集（追加、削除、変更等）によるルールモジュール内のクラス継承の再構築を行う必要がなく、多様な検証モジュール及び設計書生成モジュールの適用を容易に行うことができる。
【０１４０】
また、設計書生成モジュールの指定有無に応じて設計書生成を行わないように制御でき、例えば、プログラム生成のみを行えるように、プログラム生成と設計書生成とを可変に制御することができる。また、検証モジュールの指定有無に応じて、検証を行わないように制御でき、この場合においても検証処理の実行有無を可変に制御することができる。
【０１４１】
なお、本実施形態の生成装置１００は、詳細な物理仕様を入力せずにプログラム及び設計書を生成できるので、アプリケーション開発の生産性を向上でき、また、利用者がわずかな設計情報を入力することだけで、複数のアプリケーションパターンの即時実行可能なアプリケーションプログラムと、該アプリケーションプログラムの設計書とを自動生成することができ、プログラムと設計書の作成時間を短縮及びアプリケーション開発の生産性の向上を図ることができる。
【０１４２】
以上、上記実施形態において、プログラム・設計書の生成装置１００は、１つ装置単体のシステム構成や複数の装置がネットワーク接続されたシステム構成とすることもできる。
【０１４３】
また、利用者端末装置２００は、携帯電話機やＰＤＡ(Personal Digital Assistant)等の移動通信端末装置、パーソナルコンピュータなどの通信機能及び演算機能を備えた情報処理端末装置等が含まれる。また、ネットワークＮは、無線通信網、有線通信網又は専用回線網であってもよい。
【０１４４】
また、プログラム・設計書の生成装置１００、利用者端末２００は、ハードウェア構成として上述以外にも、装置全体（各部）の制御を司るＣＰＵ、メモリ（主記憶装置）、マウス、キーボード、タッチパネル、スキャナー等の操作入力手段、プリンタ、スピーカなどの出力手段、補助記憶装置（ハードディスク等）等を備えることができる。
【０１４５】
また、本発明のプログラム・設計書の生成装置１００の各機能は、プログラム・設計書の生成プログラムとして構成することができる。例えば、コンピュータの不図示の補助記憶装置に格納され、ＣＰＵ等の制御部が補助記憶装置に格納されたプログラム・設計書の生成プログラムを主記憶装置に読み出し、主記憶装置に読み出された該プログラムを制御部が実行し、コンピュータに本発明の各部の機能を動作させることができる。すなわち、本発明のプログラム・設計書の生成プログラムがインストールされたコンピュータは、本発明のプログラム・設計書を生成するコンピュータ装置として動作することが可能である。
【０１４６】
また、上記プログラムは、コンピュータ読取可能な記録媒体に記録された状態で、コンピュータに提供することも可能である。コンピュータ読取可能な記録媒体としては、ＣＤ−ＲＯＭ等の光ディスク、ＤＶＤ−ＲＯＭ等の相変化型光ディスク、ＭＯ（Magnet Optical）やＭＤ(Mini Disk)などの光磁気ディスク、フロッピー（登録商標）ディスクやリムーバブルハードディスクなどの磁気ディスク、コンパクトフラッシュ（登録商標）、スマートメディア、SDメモリカード、メモリスティック等のメモリカードが挙げられる。また、本発明の目的のために特別に設計されて構成された集積回路（ICチップ等）等のハードウェア装置も記録媒体として含まれる。
【０１４７】
なお、本発明の実施形態を説明したが、当該実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１４８】
１００    プログラム・設計書の生成装置
１０１    メタモデル記憶部
１０２    テンプレート記憶部
１０３    ライブラリ記憶部
１０４    モデル情報記憶部
１０５    設計書記憶部
１０６    プログラム記憶部
１０７    全体制御部
１０８    設計情報入力部
１０９    検証部
１１０    モデル情報出力部
１１１    設計書生成部
１１２    プログラム生成部
１１３    生成処理解析実行部
１１４    モジュール設定部
２００    利用者端末
３００    データベース装置
４００    ネットワーク
【要約】
【課題】プログラム生成処理を可変にし、アプリケーションパターン別のプログラム及び設計書を生成するプログラム・設計書の生成装置およびプログラムを提供する。
【解決手段】プログラム・設計書の生成装置は、アプリケーション生成制御ファイルに従ってアプリケーションパターン毎のテンプレートファイル定義情報であるメタモデル情報から、プログラムの種類に対応したアプリケーションパターン毎にプログラム一覧を生成し、プログラム一覧に基づいてプログラム生成及び設計書生成を行う。このため、プログラム生成処理を可変に制御でき、様々なアプリケーションパターンに対応したプログラム生成が可能になる。
【選択図】図１【図１】
0005450752.tif 000002
【図２】
0005450752.tif 000003
【図３】
0005450752.tif 000004
【図４】
0005450752.tif 000005
【図５】
0005450752.tif 000006
【図６】
0005450752.tif 000007
【図７】
0005450752.tif 000008
【図８】
0005450752.tif 000009
【図９】
0005450752.tif 000010
【図１０】
0005450752.tif 000011
【図１１】
0005450752.tif 000012
【図１２】
0005450752.tif 000013
【図１３】
0005450752.tif 000014
【図１４】
0005450752.tif 000015
【図１５】
0005450752.tif 000016
【図１６】
0005450752.tif 000017
【図１７】
0005450752.tif 000018
【図１８】
0005450752.tif 000019
【図１９】
0005450752.tif 000020
【図２０】
0005450752.tif 000021
【図２１】
0005450752.tif 000022
【図２２】
0005450752.tif 000023
【図２３】
0005450752.tif 000024
【図２４】
0005450752.tif 000025
【図２５】
0005450752.tif 000026
【図２６】
0005450752.tif 000027
【図２７】
0005450752.tif 000028
【図２８】
0005450752.tif 000029
【図２９】
0005450752.tif 000030
【図３０】
0005450752.tif 000031
【図３１】
0005450752.tif 000032
【図３２】
0005450752.tif 000033
【図３３】
0005450752.tif 000034
【図３４】
0005450752.tif 000035
【図３５】
0005450752.tif 000036