(57)【要約】【課題】  変更後の設計情報とテンプレートとに基づいて複数のソースコードを生成するソースコード自動生成装置において、生成したソースコードの書き出し処理に要する時間を短くすると共に、実行オブジェクトの再ビルドを効率的に行えるようにする。【解決手段】  ソースコード記憶部２０には、設計情報Ｂの更新前の設計情報である更新前設計情報と、テンプレートＡとに基づいて生成した複数の再生成前ソースコードＦ１〜Ｆｎが登録されている。ソースコード自動生成装置１０は、テンプレートＡと設計情報Ｂとに基づいて各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片とソースコード記憶部２０に登録されている対応する再生成前ソースコードの該当部位とを比較する。そして、差分があった場合のみ、上記対応する再生成前ソースコードを今回生成したソースコードで置換する。【選択図】      図１
2006107025.tif 000002
【特許請求の範囲】
【請求項１】
設計情報とテンプレートとに基づいて複数のソースコードを生成するソースコード自動生成装置において、
前記設計情報の更新前の設計情報である更新前設計情報と前記テンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部を備え、且つ、
各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換する構成を有することを特徴とするソースコード自動生成装置。
【請求項２】
請求項１記載のソースコード自動生成装置において、
前記置換したソースコードを特定するソースコード特定情報を保存する構成を有することを特徴とするソースコード自動生成装置。
【請求項３】
請求項２記載のソースコード自動生成装置において、
あるソースコードを生成する過程において、ソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わない構成を有することを特徴とするソースコード自動生成装置。
【請求項４】
設計情報とテンプレートとに基づいて複数のソースコードを生成するソースコード自動生成装置において、
前記設計情報の更新前の設計情報である更新前設計情報と前記テンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部と、
前記テンプレートを解析し、テンプレート構文木を生成するテンプレート解析手段と、
該テンプレート解析手段で生成されたテンプレート構文木と前記設計情報とに基づいて各ソースコードのソースコード断片およびそれらをつなぎ合わせた自動生成ソースコードを生成する設計情報合成手段と、
該設計情報合成手段があるソースコードのソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較し、差分を検出した場合には、差分を検出したソースコードを特定するソースコード特定情報を保存するソースコード比較手段と、
該ソースコード比較手段で差分が検出された自動生成ソースコードと、前記ソースコード記憶部に登録されている対応する再生成前ソースコードのユーザコーディング部とを合成することによりソースコードを生成し、前記対応する再生成前ソースコードを今回生成したソースコードで置換するユーザコーディング合成手段とを備えたことを特徴とするソースコード自動生成装置。
【請求項５】
請求項４記載のソースコード自動生成装置において、
前記ソースコード比較手段は、あるソースコードのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わない構成を有することを特徴とするソースコード自動生成装置。
【請求項６】
設計情報とテンプレートとに基づいて複数のソースコードを生成するソースコード自動生成方法において、
各ソースコードを生成する過程において、ソースコード断片を生成する毎に、前記設計情報の更新前の設計情報である更新前設計情報と前記テンプレートとに基づいて生成した複数の再生成前ソースコードが登録されているソースコード記憶部から、前記生成したソースコード断片に対応する再生成前ソースコードの該当部位を読み込んで両者を比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換することを特徴とするソースコード自動生成方法。
【請求項７】
請求項６記載のソースコード自動生成方法において、
置換したソースコードを特定するソースコード特定情報を保存することを特徴とするソースコード自動生成方法。
【請求項８】
請求項７記載のソースコード自動生成方法において、
あるソースコードを生成する過程において、ソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わないことを特徴とするソースコード自動生成方法。
【請求項９】
設計情報の更新前の設計情報である更新前設計情報とテンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部を備えたコンピュータを、
前記設計情報と前記テンプレートとに基づいて各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位と比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換する比較手段として機能させるためのプログラム。
【請求項１０】
請求項９記載のプログラムにおいて、
前記比較手段が、置換したソースコードを特定するソースコード特定情報を保存する構成を有することを特徴とするプログラム。
【請求項１１】
請求項１０記載のプログラムにおいて、
前記比較手段が、
あるソースコードを生成する過程において、ソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わない構成を有することを特徴とするプログラム。
【請求項１２】
設計情報の更新前の設計情報である更新前設計情報とテンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部を備えたコンピュータをソースコード自動生成装置として機能させるためのプログラムを記録した記録媒体であって、
前記設計情報と前記テンプレートとに基づいて各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位と比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換する比較手段として機能させるためのプログラムを記録した記録媒体。
【請求項１３】
請求項１２記載の記録媒体において、
前記比較手段が、置換したソースコードを特定するソースコード特定情報を保存する構成を有することを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計情報とテンプレートとを利用して複数のソースコードを自動的に生成するソースコード自動生成技術に関し、特に、設計情報を更新した後、再度、更新後の設計情報を利用してソースコードを自動生成する際の処理を効率的に行うことができるソースコード自動生成技術に関する。
【背景技術】
【０００２】
従来からソースコードを自動生成する技術としては、種々の技術が提案されている。例えば、設計情報とテンプレートとからソースコードを自動生成する技術（例えば、特許文献１参照）や、バージョンの異なるソースコードの差分を抽出し、抽出した差分と元のソースコードとに基づいて新たなソースコードを自動生成する技術（例えば、特許文献２参照）等が知られている。
【０００３】
一方、近年、ＪａｋａｒｔａプロジェクトのテンプレートエンジンであるＶｅｌｏｃｉｔｙが注目されるようになってきており、このＶｅｌｏｃｉｔｙを利用してソースコードを自動生成するということが考えられる。Ｖｅｌｏｃｉｔｙを利用してソースコード自動生成装置を構成しようとした場合、その構成は、例えば、図３に示すものとなる。
【０００４】
図３を参照すると、ソースコード自動生成装置１００は、テンプレート解析手段１１と、設計情報合成手段１２と、ユーザコーディング抽出手段１３と、ユーザコーディング合成手段１４とを含んでいる。また、ソースコード自動生成装置１００には、磁気ディスク装置などによって実現されるソースコード記憶部２０が接続されている。
【０００５】
ソースコード記憶部２０には、複数のソースコードＦ１〜Ｆｎが登録されている。このソースコードＦ１〜Ｆｎは、設計情報Ｂの更新前の設計情報である更新前設計情報Ｂｂ（図示せず）と、テンプレートＡとに基づいてソースコード自動生成装置１００が自動生成したものである。
【０００６】
テンプレート解析手段１１は、テンプレートＡを入力し、設計情報Ｂによって置換される識別子を基準にして字句解析，構文解析を行い、テンプレート構造木を生成する機能を有する。なお、字句解析，構文解析のルールは、ＪａｋａｒｔａプロジェクトにおけるテンプレートエンジンＶｅｌｏｃｉｔｙ（バージョン１．３．１）の文法に従う。
【０００７】
図４はテンプレートＡの一例を示す図である。テンプレートＡは、ソースコードＤ１〜Ｄｍを生成するためのスケルトンコードであり、以下の要素から成り立っている。
【０００８】
・業務ロジック固有の設計情報Ｂに依存せずにソースコードＤ１〜Ｄｍに展開されるソースコードひな型部
・設計情報Ｂによって置換されることを想定して特定の識別子を付与したマクロ置換部 
・設計情報合成手段１２により繰り返し処理が行われることを想定して特定の識別子を付与したループ制御部 
・設計情報合成手段１２により分岐処理が行われることを想定して特定の識別子を付与した分岐制御部 
・自動生成後に開発者によってコーディングが行われることを想定して特定の識別子を付与されたユーザコーディング部 
【０００９】
なお、図４に示したテンプレートＡはあくまで一例であり、図５に示すようなテンプレートＡも存在する。また、図６は、図５に示したテンプレートＡから生成されるテンプレート構文木の一例を示す。
【００１０】
ユーザコーディング抽出手段１３は、ソースコード記憶部２０に登録されている各ソースコードＦ１〜Ｆｎを再生成前ソースコードＣ１〜Ｃｎとして入力し、各再生成前ソースコードＣ１〜Ｃｎからユーザコーディング部を抽出する。
【００１１】
設計情報合成手段１２は、テンプレート解析手段１１が生成したテンプレート構文木と、ＸＭＬ形式の設計情報Ｂとに基づいて、自動生成ソースコードＥ１〜Ｅｍを生成する。この処理を詳しく説明すると、設計情報合成手段１２は、テンプレート構文木の各ノードの内の、ソースコードひな型部に対応するノードの内容はそのままとし、他のノードの内容を設計情報Ｂの対応するタグの情報で置き換えることにより、ソースコード断片を生成する。その後、ソースコード断片を生成順につなぎ合わせることにより、自動生成ソースコードＥ１〜ｍを生成する。図７に、テンプレート構文木と設計情報Ｂとから、ソースコード断片および自動生成ソースコードＥ１，Ｅ２が生成される様子を示す。
【００１２】
図７の例では、テンプレート構文木の第１番目のノード“public class”は、ソースコードひな型部に対応するノードであるので、その内容がそのままソースコード断片中に配置される。テンプレート構文木の第２番目のノード“${system.class name}”は、マクロ置換部に対応するノードであるので、その内容が設計情報Ｂ中の対応するタグ<class name=“Utility1”>の情報“Utility1”で置き換えられ、ソースコード断片中に配置される。他のノードについても同様の処理が行われる。また、図７に示した例は、設計情報Ｂ中にタグ<class name=“Utility1”>とタグ<class name=“Utility2”>とが含まれているので、２つの自動生成コードＥ１，Ｅ２が生成される。
【００１３】
ユーザコーディング合成手段１４は、自動生成ソースコードＥ１，Ｅ２とユーザコーディング抽出手段１３が抽出したユーザコーディング部とを合成することによりソースコードＤｋ（１＜ｋ＜ｍ）を生成し、生成したソースコードＤｋをソースコード記憶部２０に格納する。その際、生成したソースコードＤｋと同一のファイル名（設計情報からテンプレート毎に決まった規則に基づいて決定される）やclass nameを持つソースコードがソースコード記憶部２０に格納されている場合は、今回生成したソースコードＤｋで置換し、そのようなソースコードが存在しない場合は、今回生成したソースコードＤｋをソースコード記憶部２０に新規登録する。図８に、テンプレートＡ，設計情報Ｂおよび再生成前ソースコードＣ１，Ｃ２の一例を示すと共に、それらに基づいて生成されるソースコードＤ１，Ｄ２の一例を示す。
【特許文献１】特開２００３−１４０８９３号公報
【特許文献２】特開平５−２７４１２６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
図３に示したソースコード自動生成装置１００によれば、テンプレートＡと設計情報Ｂとを入力することにより、複数のソースコードＤ１〜Ｄｍを自動生成することができる。しかし、ソースコード自動生成装置１００は、生成した各ソースコードについて、そのソースコードとファイル名やclass nameが同一の再生成前ソースコードがソースコード記憶部２０に登録されているか否かを調べ、登録されていない場合には、今回生成したソースコードを新規登録し、登録されている場合には、今回生成したソースコードで置き換えるという処理を行っているだけであるので、次のような問題があった。
【００１５】
即ち、更新前設計情報Ｂｂに基づいてソースコードＦ１〜Ｆｎを自動生成した後、設計情報Ｂに基づいてソースコードを生成した場合、ソースコードＦ１〜Ｆｎの中に今回生成したソースコードと差分がないソースコードが存在しても、全てのソースコードＦ１〜Ｆｎが今回生成されたソースコードで置換されるため、ソースコードの書き出し処理に多くの時間が費やされてしまうという問題があった。
【００１６】
更に、実行オブジェクトを再ビルドする際には、ソースコード記憶部２０に登録されている全てのソースコードを対象にしてリコンパイルを行うことが必要になる。よって、大規模プロジェクトにおいて膨大な数のソースコードを利用して再ビルドを行う場合に膨大な時間がかかってしまい現実的でないという問題があった。
【００１７】
このような問題点を解決するには、例えば、次のようにすることが考えられる。変更後の設計情報Ｂに基づいて生成したソースコードをソースコード記憶部２０とは別の一時記憶領域（例えば、磁気ディスク上の領域）に書き出し、その後、ソースコード記憶部２０に登録されている再生成前ソースコードと一時記憶領域に登録されているソースコードとを比較し、差分がある再生成前ソースコードのみを今回生成したソースコードで置換する。また、今回新たに生成されたソースコードは、ソースコード記憶部２０に新規登録する。その際、置換，新規登録したソースコードを特定するソースコード特定情報（例えば、ファイル名やclass name）を記録しておく。そして、実行オブジェクトの再ビルド時には、ソースコード記憶部２０に登録されているソースコードの内、上記記録しておいたソースコード特定情報によって特定されるソースコードのみをリコンパイルする。このようにすれば、リコンパイルするソースコードの数を減らすことが可能になる。しかし、この方法でも、生成したソースコードを全て一時記憶領域に書き出さなければならず、効率が悪いという問題がある。以上のような問題点については、特許文献１，２でも全く言及されていない。
【００１８】
そこで、本発明の第１の目的は、生成したソースコードの書き出し処理に要する時間を短縮することにある。
【００１９】
更に、本発明の第２の目的は、実行オブジェクトの再ビルドを効率的に行えるようにすることにある。
【課題を解決するための手段】
【００２０】
本発明にかかる第１のソースコード自動生成装置は、
設計情報とテンプレートとに基づいて複数のソースコードを生成するソースコード自動生成装置において、
前記設計情報の更新前の設計情報である更新前設計情報と前記テンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部を備え、且つ、
各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換する構成を有することを特徴とする。
【００２１】
本発明にかかる第２のソースコード自動生成装置は、第１のソースコード自動生成装置において、
前記置換したソースコードを特定するソースコード特定情報を保存する構成を有することを特徴とする。
【００２２】
本発明にかかる第３のソースコード自動生成装置は、第２のソースコード自動生成装置において、
あるソースコードを生成する過程において、ソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わない構成を有することを特徴とする。
【００２３】
本発明にかかる第４のソースコード自動生成装置は、
設計情報とテンプレートとに基づいて複数のソースコードを生成するソースコード自動生成装置において、
前記設計情報の更新前の設計情報である更新前設計情報と前記テンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部と、
前記テンプレートを解析し、テンプレート構文木を生成するテンプレート解析手段と、
該テンプレート解析手段で生成されたテンプレート構文木と前記設計情報とに基づいて各ソースコードのソースコード断片およびそれらをつなぎ合わせた自動生成ソースコードを生成する設計情報合成手段と、
該設計情報合成手段があるソースコードのソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較し、差分を検出した場合には、差分を検出したソースコードを特定するソースコード特定情報を保存するソースコード比較手段と、
該ソースコード比較手段で差分が検出された自動生成ソースコードと、前記ソースコード記憶部に登録されている対応する再生成前ソースコードのユーザコーディング部とを合成することによりソースコードを生成し、前記対応する再生成前ソースコードを今回生成したソースコードで置換するユーザコーディング合成手段とを備えたことを特徴とする。
【００２４】
本発明にかかる第５のソースコード自動生成装置は、第４のソースコード自動生成装置において、
前記ソースコード比較手段は、あるソースコードのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わない構成を有することを特徴とするソースコード自動生成装置。
【００２５】
本発明にかかる第１のソースコード自動生成方法は、
設計情報とテンプレートとに基づいて複数のソースコードを生成するソースコード自動生成方法において、
各ソースコードを生成する過程において、ソースコード断片を生成する毎に、前記設計情報の更新前の設計情報である更新前設計情報と前記テンプレートとに基づいて生成した複数の再生成前ソースコードが登録されているソースコード記憶部から、前記生成したソースコード断片に対応する再生成前ソースコードの該当部位を読み込んで両者を比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換することを特徴とする。
【００２６】
本発明にかかる第２のソースコード自動生成方法は、第１のソースコード自動生成方法において、
置換したソースコードを特定するソースコード特定情報を保存することを特徴とするソースコード自動生成方法。
【００２７】
本発明にかかる第３のソースコード自動生成方法は、第２のソースコード自動生成方法において、
あるソースコードを生成する過程において、ソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わないことを特徴とする。
【００２８】
本発明にかかる第１のプログラムは、
設計情報の更新前の設計情報である更新前設計情報とテンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部を備えたコンピュータを、
前記設計情報と前記テンプレートとに基づいて各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換する比較手段として機能させる。
【００２９】
本発明にかかる第２のプログラムは、第１のプログラムにおいて、
前記比較手段が、置換したソースコードを特定するソースコード特定情報を保存する構成を有することを特徴とする。
【００３０】
本発明にかかる第３のプログラムは、第２のプログラムにおいて、
前記比較手段が、
あるソースコードを生成する過程において、ソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後は、そのソースコードについては比較処理を行わない構成を有することを特徴とする。
【００３１】
本発明にかかる第１の記録媒体は、
設計情報の更新前の設計情報である更新前設計情報とテンプレートとに基づいて生成した複数の再生成前ソースコードが登録されたソースコード記憶部を備えたコンピュータをソースコード自動生成装置として機能させるためのプログラムを記録した記録媒体であって、
前記設計情報と前記テンプレートとに基づいて各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片と前記ソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位と比較し、差分があった場合のみ、前記対応する再生成前ソースコードを今回生成したソースコードで置換する比較手段として機能させるためのプログラムを記録したことを特徴とする。
【００３２】
本発明にかかる第２の記録媒体は、第１の記録媒体において、
前記比較手段が、置換したソースコードを特定するソースコード特定情報を保存する構成を有することを特徴とする。
【００３３】
〔作用〕
本発明のソースコード自動生成装置は、設計情報とテンプレートとに基づいて複数のソースコードを生成する。その際、各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片とソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較する。そして、差分があった場合のみ、上記対応する再生成前ソースコードを今回生成したソースコードで置換する。このように、生成したソースコードの内、再生成前ソースコードと差分があるものだけを書き出すので、ソースコードの書き出し処理に要する時間を短くすることができる。
【００３４】
また、本発明のソースコード自動生成装置では、置換したソースコードを特定するソースコード特定情報を保存するようにしている。このようにしておくことにより、実行オブジェクトの再ビルド時には、保存されているソースコード特定情報によって示されるソースコードについてのみリコンパイルを行えば良くなるので、再ビルドを効率的に行うことが可能になる。
【発明の効果】
【００３５】
本発明にかかるソースコード自動生成装置，ソースコード自動生成方法、プログラム及び記録媒体によれば、ソースコードの書き出し処理に要する時間を短くすることができる。その理由は、各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片とソースコード記憶部に登録されている対応する再生成前ソースコードの該当部位とを比較し、差分があった場合のみ、上記対応する再生成前ソースコードを今回生成したソースコードで置換するようにしているからである。
【００３６】
更に、本発明にかかるソースコード自動生成装置，ソースコード自動生成方法、プログラム及び記録媒体よれば、実行オブジェクトの再ビルドを効率的に行うことが可能になる。その理由は、再生成前ソースコードと置換したソースコードを特定するソースコード特定情報を保存するようにしているからである。
【発明を実施するための最良の形態】
【００３７】
次に本発明の実施の形態について図面を参照して詳細に説明する。
【００３８】
〔実施の形態の構成の説明〕
図１は本発明にかかるソースコード自動生成装置の実施の形態の構成例を示すブロック図である。同図を参照すると、ソースコード自動生成装置１０は、テンプレート解析手段１と、設計情報合成手段２と、ユーザコーディング抽出手段３と、ユーザコーディング合成手段４と、ソースコード比較手段５と、作業領域６と、ソースコード特定情報管理部７と、差分検出済みフラグ８とを備えている。また、ソースコード自動生成装置１０には磁気ディスク装置などによって実現されるソースコード記憶部２０が接続されている。
【００３９】
ソースコード記憶部２０には、複数のソースコード（再生成前ソースコード）Ｆ１〜Ｆｎが登録されている。このソースコードＦ１〜Ｆｎは、設計情報Ｂの更新前の設計情報である更新前設計情報Ｂｂ（図示せず）と、テンプレートＡとに基づいてソースコード自動生成装置１０が自動生成したものである。
【００４０】
テンプレート解析手段１は、図３に示したテンプレート解析手段１１と同様の機能を有するものであり、テンプレートＡに対して、設計情報Ｂによって置換されることを目的とした識別子を基準にして字句解析，構文解析を行い、テンプレート構文木を生成する機能を有する。字句解析、構文解析のルールは、ＪａｋａｒｔａプロジェクトにおけるテンプレートエンジンＶｅｌｏｃｉｔｙ（バージョン１．３．１）の文法に従う。
【００４１】
設計情報合成手段２は、図３に示した設計情報合成手段１２と同様の機能を有するものであり、テンプレート解析手段１が生成したテンプレート構文木中の識別子と、ＸＭＬ形式で記述された設計情報Ｂとに基づいてソースコード断片を合成する機能や、合成したソースコード断片をつなぎ合わせて自動生成ソースコードを生成する機能を有する。なお、設計情報合成手段２は、メインメモリ上に設けられた作業領域６を利用してソースコード断片の合成処理および自動生成ソースコードの生成処理を行う。
【００４２】
ユーザコーディング抽出手段３は、図３に示したユーザコーディング抽出手段１３と同様の機能を有するものであり、ソースコード記憶部２０からソースコードＦ１〜Ｆｎを再生成前ソースコードＣ１〜Ｃｎとして読み込み、ユーザコーディング部を抽出する機能を有する。
【００４３】
ソースコード比較手段５は、作業領域６上に生成されたソースコード断片と再生成前ソースコードＣｋの対応する部位の比較を行い、文字列として差分があるかどうかを判定する機能を有する。更に、差分があると判定したソースコード断片を含む自動生成ソースコードに対応するソースコード（上記自動生成ソースコードとユーザコーディング部とを合成することにより生成されるソースコード）を特定するソースコード特定情報（例えば、上記自動生成ソースコード中のclass name）をソースコード特定情報管理部７に登録する機能を有する。
【００４４】
ユーザコーディング合成手段４は、作業領域６上に生成された自動生成ソースコードと、ユーザコーディング抽出手段３で抽出された該当するユーザコーディング部とを合成することによりソースコードＤｋを生成する機能を有する。更に、ユーザコーディング合成手段４は、生成したソースコードＤｋと対応する再生成前ソースコード（例えば、class nameが同じソースコード）がソースコード記憶部２０に登録されている場合は、今回生成したソースコードＤｋで置換し、登録されていなければ、今回生成したソースコードＤｋを新規登録する機能を有する。
【００４５】
なお、ソースコード自動生成装置１０はコンピュータによって実現可能であり、コンピュータによって実現する場合には、例えば、次のようにする。コンピュータをソースコード自動生成装置として機能させるためのプログラムを記録したディスク，半導体メモリ，その他の記録媒体を用意し、上記プログラムをコンピュータに読み取らせる。コンピュータは読み取ったプログラムに従って自身の動作を制御することにより、自コンピュータ上にテンプレート解析手段１，設計情報合成手段２，ユーザコーディング抽出手段３，ユーザコーディング合成手段４，ソースコード比較手段５を実現する。
【００４６】
〔実施の形態の動作の説明〕
次に、図２のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。図２には、テンプレートＡと設計情報Ｂから、生成前ソースコードＣ１〜Ｃｎを参照してソースコードＤ１〜Ｄｍを自動生成する一連の流れが記述されている。 
【００４７】
ソースコード自動生成装置１０上のテンプレート解析手段１は、図４や図５に示すテンプレートＡを入力し、それに含まれている識別子を基準として字句解析，構文解析を行い、図６に示すようなテンプレート構文木を生成する（ステップＳ１）。
【００４８】
その後、ユーザコーディング抽出手段３が、ソースコード記憶部２０に登録されている各ソースコードＦ１〜Ｆｎを再生成前ソースコードＣ１〜Ｃｎとして入力し、入力した再生成前ソースコードＣ１〜Ｃｎからユーザコーディング部を抽出し、再生成前ソースコードＣ１〜Ｃｎのclass nameと対応付けて保持しておく（ステップＳ２）。
【００４９】
その後、テンプレート解析手段１によって生成されたテンプレート構文木の各ノードに対して次のような処理を行う。
【００５０】
先ず、設計情報合成手段２が未処理のノードの内の最も先頭に近いノードに注目し、それがソースコードひな型部に対応するノードであるか否かを判断する（ステップＳ３）。
【００５１】
そして、ソースコードひな型部に対応するノードである場合（ステップＳ３がＹＥＳ）は、そのノードの内容を作業領域６に配置することにより、ソースコード断片を生成し、更に、生成したソースコード断片を自動生成ソースコードの末尾につなげる（ステップＳ５）。これに対して、ソースコードひな型部に対応するノードでない場合は（ステップＳ３がＮＯ）、設計情報Ｂ中の対応するタグの情報を読み込み（ステップＳ４）、読み込んだ情報を作業領域６に配置することによりソースコード断片を生成し、更に、生成したソースコード断片を自動生成ソースコードの末尾につなげる（ステップＳ５）。例えば、図７に示したテンプレート構文木の第１番目のノードに注目した場合は、ソースコードひな型部に対応するノードであるので（ステップＳ３がＹＥＳ）、そのノードの内容“public class”を作業領域６に配置することにより、ソースコード断片を生成し、更に、public classを自動生成ソースコードの先頭に配置する（ステップＳ５）。また、例えば、図７に示したテンプレート構文木の第２番目のノードに注目した場合は、ソースコードひな型部に対応するノードではないので（ステップＳ３がＮＯ）、設計情報Ｂ中の対応するタグの情報“Utilty1”を読み込み（ステップＳ４）、それを作業領域６上に配置することにより、ソースコード断片を生成し、更に、Utilty1をpublic classにつなげる（ステップＳ５）。
【００５２】
その後、設計情報合成手段２は、差分検出済みフラグ８が“１”になっているか否かを調べる（ステップＳ６）。なお、差分検出済みフラグ８は、初期状態においては、“０”になっている。そして、差分検出済みフラグ８が“１”であれば（ステップＳ６がＹＥＳ）、次のノードの処理に移行する。これに対して、差分検出済みフラグ８が“０”であれば（ステップＳ６がＮＯ）、既に、class nameを含むソースコード断片を生成しているか否かを調べることにより、比較対象再生成前ソースコードを特定できるか否かを判断する（ステップＳ７）。
【００５３】
そして、比較対象再生成前ソースコードを特定できないと判断した場合（ステップＳ７がＮＯ）は、次のノードの処理に移行する。これに対して、比較対象再生成前ソースコードを特定できると判断した場合（ステップＳ７がＹＥＳ）は、ソースコード比較手段５に対して比較指示を与える。
【００５４】
ソースコード比較手段５は、比較指示が入力されると、比較処理を行っていない新たに生成されたソースコード断片と、再生前ソースコードＣ１〜Ｃｎの内の、class nameによって特定される比較対象再生成前ソースコードＣｋの対応部位とを比較し、差分があるか否かを調べる（ステップＳ８，Ｓ９）。そして、比較不一致の場合（ステップＳ９がＮＯ）は、差分検出済みフラグ８を“１”に変更する処理およびソースコード特定情報管理部７に今回生成するソースコードのclass nameを登録する処理を行った後（ステップＳ１０）、制御を設計情報合成手段２に戻す。これにより、設計情報合成手段２は、次のノードの処理に移行する。これに対して、比較一致の場合（ステップＳ９がＹＥＳ）は、ソースコード比較手段５は、差分検出済みフラグ８を“１”に変更することなく、次のノードの処理に移行する。なお、ステップＳ８において、比較対象再生成前ソースコードを特定できなかった場合、即ち、再生成前ソースコードＣ１〜Ｃｎの中に、今回生成するソースコードとclass nameが同一の再生成前ソースコードが存在しない場合には、ステップＳ９の判断結果をＮＯとする。
【００５５】
ここで、ステップＳ８で行う処理の一具体例を説明する。設計情報合成手段２から比較指示が入力されると、ソースコード比較手段５は、比較処理を行っていないソースコード断片と同じバイト数分の情報を比較対象再生成前ソースコードＣｋから読み込む。なお、読み込み開始位置は、比較対象再生成前ソースコードＣｋのユーザコーディング部の次の文字から比較済みバイト数（初期値は「０」）だけ進んだ位置とする。その後、比較処理を行っていないソース断片中の文字と、比較対象再生成前ソースコードＣｋから読み込んだ文字との対応するもの同士を比較する。その後、比較済みバイト数を比較を行ったバイト数だけインクリメントする。
【００５６】
以上の処理を全てのノードについて行うと、設計情報合成手段２は、差分検出済みフラグ８が“１”であるか否かを調べる（ステップＳ１１）。
【００５７】
差分検出済みフラグ８が“０”の場合、即ち、今回生成するソースコードと再生成前ソースコードが同一である場合（ステップＳ１１がＮＯ）は、設計情報の最後まで処理を行ったか否かを調べる（ステップＳ１３）。最後まで処理を行っている場合（ステップＳ１３がＹＥＳ）は、処理を終了し、そうでない場合（ステップＳ１３がＮＯ）は、差分検出済みフラグ８を“０”にすると共に、比較済みバイト数を「０」とした後（ステップＳ１４）、再び、ステップＳ３の処理を行う。
【００５８】
これに対して、差分検出済みフラグ８が“１”の場合、即ち、今回生成するソースコードと再生成前ソースコードとが異なる場合（ステップＳ１１がＹＥＳ）は、ユーザコーディング合成手段４に対して合成指示を出力する（ステップＳ１２）。これにより、ユーザコーディング合成手段４は、作業領域６上に生成されている自動生成ソースコードと、ユーザコーディング抽出手段３が抽出しているユーザコーディング部の内の該当するもの（class nameが同一のもの）とを合成することにより、ソースコードを生成し、生成したソースコードをソースコード記憶部２０に書き出す。その際、class nameが同一の再生成前ソースコードがソースコード記憶部２０に登録されている場合は、その再生成前ソースコードを今回生成したソースコードで置換し、class nameが同一の再生成前ソースコードが存在しない場合は、今回生成したソースコードをソースコード記憶部２０に新規登録する。
【００５９】
なお、ソースコードの生成後に実行オブジェクトを再ビルドする場合には、ソースコード記憶部２０に登録されているソースコードの内、ソースコード特定情報管理部７に登録されているソースコード特定情報によって特定されるソースコードのみリコンパイルする。従って、全てのソースコードをリコンパイルする場合に比較して実行オブジェクトの再ビルドを効率的に行うことが可能になる。また、上述した実施の形態では、比較対象再生成前ソースコードをclass nameにより特定するようにしたが、ファイル名（設計情報からテンプレート毎に決まった規則に基づいて決定される）により特定するようにしても良い。また、上述した実施の形態では、class nameをソースコード特定情報としたが、ファイル名をソースコード特定情報としても良い。
【００６０】
〔実施の形態の効果〕
本実施の形態では、テンプレートＡと設計情報Ｂとに基づいて各ソースコードを生成する過程において、ソースコード断片を生成する毎に、そのソースコード断片とソースコード記憶部２０に登録されている対応する再生成前ソースコードＣ１〜Ｃｎ（Ｆ１〜Ｆｎ）の該当部位とを比較し、差分があった場合のみ、上記対応する再生成前ソースコードを今回生成したソースコードで置換するようにしているので、ソースコードの書き出し処理に要する時間を短縮することができる。
【００６１】
更に、本実施の形態では、ソースコード記憶部２０に登録されている再生成前ソースコードと置換したソースコードを特定するソースコード特定情報をソースコード特定情報管理部７に保存しておくので、実行オブジェクトの再ビルドを効率的に行うことが可能になる。
【００６２】
更に、本実施の形態では、ソースコード断片とソースコード記憶部２０に登録されている対応する再生成前ソースコードの該当部位とに差分があることを検出した後（差分検出済みフラグ８が“１”となった後）は、比較処理を行わないようにしているので、差分比較にかかる時間の節約を図ることができる。
【産業上の利用可能性】
【００６３】
本発明によれば、大規模システムにおけるソフトウェアのリビジョンアップに対応した実行オブジェクトを生成する際のソースコードの自動生成および再生成したソースコードを用いた再ビルドといった用途に適用することができる。また、大規模システムでない場合でも、実行オブジェクトのリビジョン管理を行い、更新の必要がないオブジェクトの生成を再度行いたくない場合のソースコードの自動生成および再生成したソースコードを用いた再ビルドといった用途にも適用可能である。 
【図面の簡単な説明】
【００６４】
【図１】本発明にかかるソースコード自動生成装置の実施の形態の構成例を示すブロック図である。
【図２】ソースコード自動生成装置１０の処理例を示すフローチャートである。
【図３】Ｖｅｌｏｃｉｔｙを利用して構成されるソースコード自動生成装置１００の構成例を示すブロック図である。
【図４】テンプレートＡの一例を示す図である。
【図５】テンプレートＡの他の例を示す図である。
【図６】テンプレートＡからテンプレート構文木の一例を示す図である。
【図７】テンプレート構文木および設計情報Ｂから生成されるソースコード断片および自動生成ソースコードの一例を示す図である。
【図８】テンプレートＡ，設計情報Ｂおよび再生成前ソースコードＣ１，Ｃ２から生成されるソースコードＤ１，Ｄ２の一例を示す図である。
【符号の説明】
【００６５】
１０，１００…ソースコード自動生成装置
１，１１…テンプレート解析手段
２，１２…設計情報合成手段
３，１３…ユーザコーディング抽出手段
４，１４…ユーザコーディング合成手段
５…ソースコード比較手段
６…作業領域
７…ソースコード特定情報管理部
８…差分検出済みフラグ
２０…ソースコード記憶部
Ａ…テンプレート
Ｂ…設計情報
Ｃ１〜Ｃｎ…再生成前ソースコード
Ｄ１〜Ｄｍ…ソースコード
Ｅ１〜Ｅｍ…自動生成ソースコード
Ｆ１〜Ｆｎ…ソースコード
【図１】
2006107025.tif 000003
【図２】
2006107025.tif 000004
【図３】
2006107025.tif 000005
【図４】
2006107025.tif 000006
【図５】
2006107025.tif 000007
【図６】
2006107025.tif 000008
【図７】
2006107025.tif 000009
【図８】
2006107025.tif 000010