(57)【要約】【課題】  ソースコードを再生成する場合に、編集部分を残しつつ入力仕様からソースコードを生成することができ、更に、ソースコードの変更を入力仕様に反映することができるソースコード生成装置を提供する。【解決手段】  入力仕様を解析することにより、入力データ４を生成する入力仕様解析部２１と、ソースコードテンプレート６のパラメータを、入力データ４の情報に変換することにより、ソースコード８を生成するソースコード生成部２２と、ソースコード８を読み込み編集するソースコード編集部２３と、ソースコード８を構文解析し、新入力データ４Ａを生成するソースコード解析部２４と、入力仕様テンプレート１０に新入力データ４Ａの情報を設定することにより新入力仕様２Ａを生成する入力仕様生成部２５とを備えるソースコード生成装置１を提供する。【選択図】  図１
2007079906.tif 000002
【特許請求の範囲】
【請求項１】
入力仕様を解析することにより、ソースコードテンプレートのパラメータとなる入力データを生成し、該入力データを記憶手段に格納する入力仕様解析手段と、
記憶手段から読み込んだ前記ソースコードテンプレートのパラメータを、記憶手段から読み込んだ前記入力データの情報に変換することにより、ソースコードを生成し、該ソースコードを記憶手段に格納するソースコード生成手段と、
記憶手段内のソースコードを読み込み編集するソースコード編集手段と、
該ソースコードを記憶手段から読み込んで構文解析し、新入力データを生成し、記憶手段に格納するソースコード解析手段と、
記憶手段から入力仕様テンプレートと該新入力データとを読み込み、該入力仕様テンプレートに該新入力データの情報を設定することにより新入力仕様を生成する入力仕様生成手段とを備えることを特徴とするソースコード生成装置。
【請求項２】
上記ソースコード編集手段は、記憶手段内の予め生成された生成ソースコードの存在の有無を判定する機能を備え、
上記ソースコード解析手段は、該ソースコード編集手段によって、記憶手段内に生成ソースコードが存在すると判断された時、該生成ソースコードを読み込み解析して構文解析情報を生成し、該構文解析情報を記憶手段に格納する機能を備え、
上記ソースコード生成手段は、該構文解析情報と、上記入力データとを読み込み、ソースコードを再生成する機能を備えていることを特徴とする請求項１記載のソースコード生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力仕様からソースコードを生成するソースコード生成装置に関するものである。
【背景技術】
【０００２】
従来、入力仕様からソースコードを生成する装置として、例えば特許文献１に開示されたものが知られている。
特許文献１を例に挙げて説明すると、ソースコードのテンプレートのパラメータを入力仕様の情報に変換することによって、ソースコードを生成するというものである。
【特許文献１】特開２００２−１５７１１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の従来技術には次の問題点がある。
（１）入力仕様を変更し、ソースコードを再生成する場合、再度ソースコードのテンプレートと入力仕様の情報からソースコードを生成するので、ソースコードの編集部分が元に戻ってしまう。そのため、入力仕様を変更する場合、変更部分に対して手動でソースコードを実装するか、または、ソースコードを再生成する時に編集したソースコードを保存しておき、生成したソースコードと編集したソースコードとを比較し、編集部分を生成したソースコードに追加するといった煩雑な作業が必要になる。
【０００４】
（２）ソースコードを変更した場合、入力仕様と整合性が取れなくなる可能性があるため、ソースコードを変更する場合は、入力仕様も変更し整合性を取る必要がある。
【０００５】
以上の現状に鑑み、本発明は、ソースコードを再生成する場合に、編集部分を残しつつ入力仕様からソースコードを生成することができ、更に、ソースコードの変更を入力仕様に反映することができるソースコード生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項１に係る発明は、入力仕様を解析することにより、ソースコードテンプレートのパラメータとなる入力データを生成し、該入力データを記憶手段に格納する入力仕様解析手段と、
記憶手段から読み込んだ前記ソースコードテンプレートのパラメータを、記憶手段から読み込んだ前記入力データの情報に変換することにより、ソースコードを生成し、該ソースコードを記憶手段に格納するソースコード生成手段と、
記憶手段内のソースコードを読み込み編集するソースコード編集手段と、
該ソースコードを記憶手段から読み込んで構文解析し、新入力データを生成し、記憶手段に格納するソースコード解析手段と、
記憶手段から入力仕様テンプレートと該新入力データとを読み込み、該入力仕様テンプレートに該新入力データの情報を設定することにより新入力仕様を生成する入力仕様生成手段とを備えることを特徴とするソースコード生成装置を提供するものである。
【０００７】
請求項２に係る発明は、上記ソースコード編集手段は、記憶手段内の予め生成された生成ソースコードの存在の有無を判定する機能を備え、
上記ソースコード解析手段は、該ソースコード編集手段によって、記憶手段内に生成ソースコードが存在すると判断された時、該生成ソースコードを読み込み解析して構文解析情報を生成し、該構文解析情報を記憶手段に格納する機能を備え、
上記ソースコード生成手段は、該構文解析情報と、上記入力データとを読み込み、ソースコードを再生成する機能を備えていることを特徴とする請求項１記載のソースコード生成装置を提供するものである。
【発明の効果】
【０００８】
本発明の請求項１記載の発明によれば、入力仕様を解析することにより、ソースコードテンプレートのパラメータとなる入力データを生成し、該入力データを記憶手段に格納する入力仕様解析手段と、
記憶手段から読み込んだ前記ソースコードテンプレートのパラメータを、記憶手段から読み込んだ前記入力データの情報に変換することにより、ソースコードを生成し、該ソースコードを記憶手段に格納するソースコード生成手段と、
記憶手段内のソースコードを読み込み編集するソースコード編集手段と、
該ソースコードを記憶手段から読み込んで構文解析し、新入力データを生成し、記憶手段に格納するソースコード解析手段と、
記憶手段から入力仕様テンプレートと該新入力データとを読み込み、該入力仕様テンプレートに該新入力データの情報を設定することにより新入力仕様を生成する入力仕様生成手段とを備えるソースコード生成装置を提供するので、ソースコードを再生成する場合に、編集部分を残しつつ入力仕様からソースコードを生成することができる。
【０００９】
更に、生成したソースコードを構文解析し新入力データを生成することで、ソースコードの変更を新入力仕様に反映することができる。
【００１０】
請求項２記載の発明によれば、上記ソースコード編集手段は、記憶手段内の予め生成された生成ソースコードの存在の有無を判定する機能を備え、
上記ソースコード解析手段は、該ソースコード編集手段によって、記憶手段内に生成ソースコードが存在すると判断された時、該生成ソースコードを読み込み解析して構文解析情報を生成し、該構文解析情報を記憶手段に格納する機能を備え、
上記ソースコード生成手段は、該構文解析情報と、上記入力データとを読み込み、ソースコードを再生成する機能を備えているので、請求項１記載の発明の効果に加え、予め生成された生成ソースコードが存在する場合に、生成ソースコードを構文解析することで生成対象のみソースコードを生成することができる。
【発明を実施するための最良の形態】
【００１１】
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
図1は、本発明の一実施形態を示すソースコード生成装置１の内部構成を概略的に示すブロック図であり、ソースコード生成装置１は、記憶手段として、入力仕様２を格納する第１記憶部３と、入力データ４を格納する第２記憶部５と、ソースコードテンプレート６を格納する第３記憶部７と、ソースコード８を格納する第４記憶部９と、入力仕様テンプレート１０を格納する第５記憶部１１とを備え、更に、入力仕様２を解析し、ソースコードテンプレート６のパラメータとなる入力データ４を生成し、第２記憶部５に格納する入力仕様解析手段である入力仕様解析部２１と、ソースコードテンプレート６と入力データ４を読み込み、ソースコードテンプレート６のパラメータを入力データ４の情報に変換することでソースコード８を生成し、第４記憶部９に格納するソースコード生成手段であるソースコード生成部２２と、第４記憶部９内のソースコード８を読み込み編集するソースコード編集手段であるソースコード編集部２３と、第４記憶部９内のソースコード８を読み込み構文解析し、新入力データ４Ａを生成し、第２記憶部５に格納するソースコード解析手段であるソースコード解析部２４と、入力仕様テンプレート１０と新入力データ４Ａを読み込み、入力仕様テンプレート１０に新入力データ４Ａの情報を設定することで新入力仕様２Ａを生成する入力仕様生成手段である入力仕様生成部２５とを備えている。
【００１２】
又、前記ソースコード編集部２３は、第４記憶部９内に予め生成された生成ソースコード８Ａが存在するかどうかの存在の有無を判定する機能を備え、前記ソースコード解析部２４は、ソースコード編集部２３によって、生成ソースコード８Ａが存在すると判断された時、生成ソースコード８Ａを読み込み解析して構文解析情報２６を生成し、構文解析情報２６を第２記憶部部５に格納する機能を備え、前記ソースコード生成部２２は構文解析情報２６と、前記入力データ４とを読み込み、再生成ソースコード８Ｂを生成する機能を備えている。
【００１３】
尚、前記入力仕様２を格納する第１記憶部３と、入力データ４を格納する第２記憶部５と、ソースコードテンプレート６を格納する第３記憶部７と、ソースコード８を格納する第４記憶部９と、入力仕様テンプレート１０を格納する第５記憶部１１とは、同一の記憶装置、例えば、ハードディスクで構成しても良い。
【００１４】
図２は、前記ソースコード生成装置１によってソースコード８を生成する方法を示すフローチャートである。同図及び図１を参照して、ソースコード８を生成する方法を説明する。まず、入力仕様解析部２１が、第１記憶部３からソースコードテンプレート６のパラメータとなる情報を持つ入力仕様２を読み込み、解析し（ステップＳ１１）、入力データ４を生成して第２記憶部５に格納する（ステップＳ１２）。
【００１５】
次に、ソースコード生成部２２が、ステップＳ１２で生成した入力データ４を第２記憶部５から読み込み（ステップＳ１３）、更に、第３記憶部７からソースコードテンプレート６を読み込む（ステップＳ１４）。
【００１６】
更に、ソースコード編集部２３が、第４記憶部９内の予め生成した生成ソースコード８Ａの存在の有無を判定する（ステップＳ１５）。判定の結果は、矢印Ａ及びＢの如く、ソースコード生成部２２及びソースコード解析部２４に伝達される。
【００１７】
生成ソースコード８Ａが存在しない場合、ソースコード生成部２２が、
ソースコードテンプレート６のパラメータを入力データ４の情報に変換することでソースコード８を生成し、第４記憶部９に格納する（ステップＳ１６）。もし、生成ソースコード８Ａが第４記憶部９に既に存在している場合は、ソースコード解析部２４が生成ソースコード８Ａを構文解析し、構文解析した構文解析情報２６を第２記憶部５に格納する（ステップＳ１７）。
【００１８】
そして、ソースコード生成部２２は、第２記憶部５から読み込んだ構文解析情報２６及び入力データ４によって生成対象のみ再生成ソースコード８Ｂを生成し、第４記憶部９に格納する（ステップＳ１８）。
【００１９】
次に、ソースコード編集部２３によって第４記憶部９から生成したソースコード８又は再生成ソースコード８Ｂを読み取り編集し、編集した編集ソースコード８Ｃを第４記憶部９に格納する（ステップＳ１９）。
【００２０】
編集後、入力仕様２に変更がある場合は、前述したステップＳ１１からステップＳ１９までの処理を繰り返す。
【００２１】
図３に、入力仕様２の例を示す。同図は、業務処理を実行する業務クラスの仕様書を表している。この例では、Excelなどの表計算ソフトを使用して仕様書を作成した場合を表している。同図に示す入力仕様２には、業務クラスのパッケージ名１０１、クラス名１０２、メソッドのインタフェースの定義がある。メソッドのインタフェースの定義には、業務クラスのメソッド名１０３、メソッドの引数１０４、メソッドの戻り値１０５、メソッドの説明１０６がある。メソッドのインタフェースの定義は複数定義できるようになっている。
【００２２】
図４に、入力仕様解析部２１が入力仕様２を読み込み、生成する入力データ４の例を示す。この例では、入力データ４は、XML（Extensible Markup Language）ファイルとして生成している。同図は、図３の入力仕様２から生成した入力データ４を表している。図４の入力データ４は、ソースコードテンプレート６のパラメータとなる業務クラスのパッケージ名「sample」２０１、クラス名「CustomerLogic」２０２、メソッド名「findAll」２０３、メソッドのパラメータ「void」２０４、メソッド戻り値「List」２０５、メソッドの説明「顧客の一覧を取得する」２０６、メソッド名「findByPrimaryKey」２０７、メソッドのパラメータ「Strin id」２０８、メソッドの戻り値「Customer」２０９、メソッドの説明「顧客IDで検索し顧客を取得する」２１０の情報を持っている。
【００２３】
図５に、ソースコードテンプレート６の例を示す。ソースコードテンプレート６には、入力データ４の情報と変換するパラメータが定義してある。同図では、「＄」で始まる文字列がパラメータを表している。同図は、パッケージ名３０１、クラス名３０２、メソッドの説明３０４、メソッドの戻り値３０５、メソッド名３０６、メソッドの引数３０７のパラメータを持っている。図中、符号３０３は、メソッドのインタフェースの定義を繰り返し変換することを表している。
【００２４】
図６に、ソースコード生成部２２が図５のソースコードテンプレート６のパラメータを図４の入力データ４の情報に変換し、生成したソースコード８を示す。
【００２５】
図７は、ソースコード生成部２２が生成したソースコード８を編集した編集ソースコード８Ｃを示している。同図では、行クラスのパッケージ名を「sample.logic」４０１に変更し、顧客を登録するメソッドのインタフェース「insert」４０２を追加し、顧客の一覧を取得するメソッド「findAll」４０３と顧客IDで検索し顧客を取得する「findByPrimaryKey」４０４を実装したものである。
【００２６】
次に、再度、図２及び図１を参照して、前述したステップＳ１９の編集後に、編集ソースコード８Ｃを再生成する方法について説明する。図７の編集ソースコード８Ｃのように編集した後に再生成ソースコード８Ｂを再生成する場合は、ソースコード解析部２４によって、編集ソースコード８Ｃを第４記憶部９から読み込み構文解析し、パッケージ名、クラス名、メソッドの一覧を取得し、第２記憶部５に構文解析情報２６として格納し（ステップＳ２０）、ソースコード生成部２２によって、第２記憶部５から読み込んだ構文解析情報２６を、同様に、第２記憶部５から読み込んだ入力データ４のパッケージ名、クラス名に変換する。その場合、メソッドのインタフェースの場合は、メソッドの一覧に存在しない場合のみ生成し、既に存在している場合は生成しない。以上のように、生成対象のみソースコードを生成し、再生成ソースコード８Ｂとして再生成する（ステップＳ２１）。
【００２７】
図８は、ソースコード８の変更を入力仕様２に反映するために新入力仕様２Ａを生成する方法を示すフローチャートである。同図及び図１を参照して、新入力仕様２Ａを生成する方法を説明する。
【００２８】
まず、ソースコード解析部２４が、第４記憶部９から再生成ソースコード８Ｂを読み込んで再生成ソースコード８Ｂを構文解析し（ステップＳ３１）、新入力データ４Ａを生成し、第２記憶部５に格納する（ステップＳ３２）。
【００２９】
そして、入力仕様生成部２５がステップＳ３２で生成した新入力データ４Ａを第２記憶部５から読み込み（ステップＳ３３）、入力仕様テンプレート１０を第５記憶部１１から読み込み（ステップＳ３４）、入力仕様テンプレート１０に、新入力データ４Ａの情報を設定することで新入力仕様２Ａを生成する（ステップＳ３５）。
【００３０】
図９に、ソースコード解析部２４が図７の編集ソースコード８Ｃを解析し生成した新入力データ４Ａを示す。新入力データ４Ａは、変更された業務クラスのパッケージ名「sample.logic」５０１及び業務クラスのクラス名「CustomerLogic」５０２に更新され、メソッドのインタフェースの定義（メソッド名「insert」５０３、メソッドの引数「Customer customer」５０４、メソッドの戻り値「void」５０５、メソッドの説明「顧客を登録する」５０６）が追加されている。
【００３１】
図１０に、入力仕様テンプレート１０の例を示す。図３の入力仕様２と同様に、業務クラスのパッケージ名６０１、クラス名６０２、メソッド名６０３、メソッドの引数６０４、メソッドの戻り値６０５、メソッドの説明６０６がある。
【００３２】
図１１に、図１０の入力仕様テンプレート１０に、図９の新入力データ４Ａの情報を設定することで生成した新入力仕様２Ａを示す。図１０の業務クラスのパッケージ名６０１に図９の「sample.logic」５０１を設定し、図１０の業務クラスのクラス名６０２に図９の「CustomerLogic」５０２を設定し、図１０のメソッドのインタフェースの定義６０３、６０４、６０５、６０６に図９の「insert」５０３、「Customer customer」５０４、「void」５０５、「顧客を登録する」５０６を設定し、メソッドのインタフェースの定義について繰り返し設定する。
【００３３】
以上のように、本発明によれば、ソースコード８を再生成する場合に、編集部分を残しつつ入力仕様からソースコード８を生成することができる。
【００３４】
更に、生成したソースコード８を構文解析し新入力データ４Ａを生成することで、ソースコード８の変更を新入力仕様に反映することができる。
【００３５】
又、予め生成された生成ソースコード８Ａが存在する場合に、生成ソースコード８Ａを構文解析することで生成対象のみソースコード８を生成することができる。
【図面の簡単な説明】
【００３６】
【図１】本発明によるソースコード生成装置の概略構成を示すブロック図である。
【図２】本発明のソースコード生成装置によるソースコードを生成する処理手順の概要を示すフローチャートである。
【図３】本発明の入力仕様を示す図である。
【図４】本発明の入力データを示す図である。
【図５】本発明のソースコードテンプレートを示す図である。
【図６】本発明のソースコードを示す図である。
【図７】本発明の編集ソースコードを示す図である。
【図８】本発明のソースコード生成装置による新入力仕様を生成する処理手順の概要を示すフローチャートである。
【図９】本発明の新入力データを示す図である。
【図１０】本発明の入力仕様テンプレートを示す図である。
【図１１】本発明の新入力仕様を示す図である。
【符号の説明】
【００３７】
１  ソースコード生成装置
２  入力仕様
２Ａ  新入力仕様
４  入力データ
４Ａ  新入力データ
６  ソースコードテンプレート
８  ソースコード
８Ａ  生成ソースコード
１０  入力仕様テンプレート
２６  構文解析情報
【図１】
2007079906.tif 000003
【図２】
2007079906.tif 000004
【図３】
2007079906.tif 000005
【図４】
2007079906.tif 000006
【図５】
2007079906.tif 000007
【図６】
2007079906.tif 000008
【図７】
2007079906.tif 000009
【図８】
2007079906.tif 000010
【図９】
2007079906.tif 000011
【図１０】
2007079906.tif 000012
【図１１】
2007079906.tif 000013