(57)【要約】【課題】仕様書のフォーマットやソースコードを生成する方法が異なった場合や、変更になった場合にも、ソースコードを自動生成するプログラムを変更することなく容易に対応することができるソースコード自動生成装置を提供する。【解決手段】仕様書１０７から設計情報を抽出する方法を定義した仕様定義情報１０１に基づき、仕様書１０７から設計情報を解析抽出する仕様書解析部１０４と、仕様定義情報１０１に基づき動的にクラスを生成し、生成したクラスに設計情報を設定して設計情報オブジェクトを生成する設計情報オブジェクト生成部１０５と、ソースコード生成定義情報１０２に基づき、設計情報オブジェクトとソースコードテンプレート１０３とからソースコード１０８を生成するソースコード生成部１０６等を備えるソースコード自動生成装置１００を提供する。【選択図】図１
2008052356.tif 000002
【特許請求の範囲】
【請求項１】
仕様書から設計情報を抽出する方法を定義した仕様定義情報と、ソースコードを生成する方法を定義したソースコード生成定義情報と、ソースコードの雛型であるソースコードテンプレートとを予め記憶する記憶手段と、
前記記憶手段から、前記仕様定義情報を読み込み、前記仕様定義情報に基づき仕様書から設計情報を解析抽出する仕様書解析抽出手段と、
前記仕様定義情報に基づき動的にクラスを生成し、生成した前記クラスに解析抽出した前記設計情報を設定することにより設計情報オブジェクトを生成するオブジェクト生成手段と、
前記記憶手段から、前記ソースコード生成定義情報と前記ソースコードテンプレートとを読み込み、前記ソースコード生成定義情報に基づき、前記設計情報オブジェクトと前記ソースコードテンプレートとからソースコードを生成するソースコード生成手段とを備えることを特徴とするソースコード自動生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仕様書から設計情報を抽出し、抽出した設計情報とソースコードテンプレートからソースコードを自動生成するソースコード自動生成装置に関するものである。
【背景技術】
【０００２】
ソフトウェア開発では、低コスト化、納期の短縮化、高品質化の要求により、生産性向上を強く求められている。そして、ソフトウェア開発の生産性を向上する技術としてソースコードの自動生成技術が注目されている。
従来、ソースコードを自動生成する技術として、テンプレートエンジンを使用し、設計情報とソースコードテンプレートからソースコードを自動生成する技術（例えば、特許文献１参照）などが知られている。
テンプレートエンジンを使用してソースコードを自動生成する場合、まず、ソースコードの雛形であるテンプレートを用意し、用意したソースコードテンプレートに定義したパラメータを設計情報に変換することにより、ソースコードを自動生成する。テンプレートエンジンには、例えば、Apache Jakartaプロジェクトが開発しているVelocityやFreeMarkerプロジェクトが開発しているFreeMarkerがある。
【特許文献１】特開２００６−１０７０２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
然しながら、上記の従来技術には、次のような問題点がある。
プロジェクトごとに仕様書のフォーマットや、設計情報とソースコードテンプレートからソースコードを生成する方法は異なるため、ソースコードを自動生成するプログラムを毎回最初から開発する必要があるという問題があった。
又、仕様書の変更などで仕様書のフォーマットが変更になった場合や、ソースコードを生成する方法が変更になった場合、ソースコードを自動生成するプログラムの変更が必要になるという問題があった。
【０００４】
以上の現状に鑑み、本発明は、仕様書のフォーマットやソースコードを生成する方法が異なる場合や、変更になった場合にも、ソースコードを自動生成するプログラムを変更することなく容易に対応することができるソースコード自動生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項１に係る発明は、仕様書から設計情報を抽出する方法を定義した仕様定義情報と、ソースコードを生成する方法を定義したソースコード生成定義情報と、ソースコードの雛型であるソースコードテンプレートとを予め記憶する記憶手段と、
前記記憶手段から、前記仕様定義情報を読み込み、前記仕様定義情報に基づき仕様書から設計情報を解析抽出する仕様書解析抽出手段と、
前記仕様定義情報に基づき動的にクラスを生成し、生成した前記クラスに解析抽出した前記設計情報を設定することにより設計情報オブジェクトを生成するオブジェクト生成手段と、
前記記憶手段から、前記ソースコード生成定義情報と前記ソースコードテンプレートとを読み込み、前記ソースコード生成定義情報に基づき、前記設計情報オブジェクトと前記ソースコードテンプレートとからソースコードを生成するソースコード生成手段とを備えることを特徴とするソースコード自動生成装置を提供するものである。
【発明の効果】
【０００６】
本発明の請求項１記載によれば、仕様書から設計情報を抽出する方法と、設計情報、ソースコードテンプレートからソースコードを生成する方法を定義することによりソースコードを自動生成するようにしたため、仕様書のフォーマットやソースコードを生成する方法が異なった場合や、仕様書のフォーマットが変更になった場合やソースコードを生成する方法が変更になった場合に、前記設計情報を抽出する方法と、ソースコードを生成する方法の定義を変更することにより、ソースコードを自動生成するプログラムを変更することなく容易に対応することが可能なソースコード自動生成装置を提供できる。
【発明を実施するための最良の形態】
【０００７】
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
図１は、本発明の一実施形態を示すソースコード自動生成装置１００の構成を概略的に示すブロック図である。
本実施形態のソースコード自動生成装置１００は、仕様書１０７から設計情報を抽出する方法を定義した仕様定義情報１０１と、ソースコード１０８を生成する方法を定義したソースコード生成定義情報１０２と、ソースコード１０８の雛型であるソースコードテンプレート１０３とを予め記憶する記憶手段Ｍを備えている。尚、前記記憶手段Ｍは、仕様定義情報１０１と、ソースコード生成定義情報１０２と、ソースコードテンプレート１０３とが夫々記憶される個別の記憶手段であっても良い。
【０００８】
又、ソースコード自動生成装置１００は、前記記憶手段Ｍから、仕様定義情報１０１を読み込み、仕様定義情報１０１に基づき仕様書１０７から設計情報を解析抽出する仕様書解析抽出手段である仕様書解析部１０４と、仕様定義情報１０１に基づき動的にクラスを生成し、生成したクラスに解析抽出した設計情報を設定することにより設計情報オブジェクトを生成するオブジェクト生成手段である設計情報オブジェクト生成部１０５と、記憶手段Ｍから、ソースコード生成定義情報１０２とソースコードテンプレート１０３とを読み込み、ソースコード生成定義情報１０２に基づき、前記設計情報オブジェクトとソースコードテンプレート１０３とからソースコード１０８を生成するソースコード生成手段であるソースコード生成部１０６とを備えている。
【０００９】
図２は、本発明によるソースコードを生成する処理手順の概要を示すフローチャートである。図１を参照しながら、図２に従ってソースコードを生成する処理手順を説明する。
まず、仕様書解析部１０４が記憶手段Ｍから仕様定義情報１０１を読み込み、仕様定義情報１０１に基づき仕様書１０７を解析し、設計情報を抽出する（ステップ２０１）。
次に、設計情報オブジェクト生成部１０５が仕様定義情報１０１に基づき動的にクラスを生成し、生成したクラスにステップ２０１で抽出した設計情報を設定することにより設計情報オブジェクトを生成する（ステップ２０２）。
そして、ソースコード生成部１０６が、記憶手段Ｍからソースコード生成定義情報１０２とソースコードテンプレート１０３を読み込み、ステップ２０２で生成した設計情報オブジェクトに基づき、ソースコード生成定義情報１０２とソースコードテンプレート１０３とからソースコード１０８を生成する（ステップ２０３）。
【００１０】
図３および図４は、仕様書解析部１０４が解析抽出する仕様書１０７の例を示す図である。この例では、Excelなどの表計算ソフトを使用して仕様書を作成した場合を表している。
図３は、システム共通の仕様書を表している。図３に示す共通仕様書は、仕様書のタイトル３０１、仕様書の作成者３０２、仕様書の更新日３０３、ソースコードに表示するコピーライト３０４、ソースコードのパッケージ名３０５を定義している。
図４は、クラスの仕様書を表している。図４に示すクラス仕様書は、仕様書のタイトル４０１、仕様書の作成者４０２、仕様書の更新日４０３、クラスの名前４０４、クラスの説明４０５、属性の項番４０６、属性の変数名４０７、属性の変数型４０８、属性の初期値４０９、属性の説明４１０を定義している。属性の定義は複数定義されている。
【００１１】
図５は、仕様書１０７から設計情報を抽出する方法をＸＭＬ（Extensible
Markup Language）形式で定義した仕様定義情報１０１の例を示す図である。この例では、図３の共通仕様書および図４のクラス仕様書から設計情報を抽出する方法を定義した仕様定義情報１０１を表している。５０１および５０２の<spec>タグは、仕様書１０７の種類ごとに設計情報を抽出する方法を定義している。５０１の部分は、図３の共通仕様書の仕様定義情報を表し、５０２の部分は、図４のクラス仕様書の仕様定義情報を表している。
【００１２】
<spec>タグのname属性５０３は仕様定義の名前、file属性５０４は対応する仕様書を定義している。file属性には、仕様書が格納されているフォルダを指定することも可能である。この例では仕様書のファイルを指定している。５０５の<property>タグは、仕様書１０７から抽出する設計情報の項目を定義している。<property>タグのname属性５０６は設計情報の項目名、read-type属性５０７は設計情報を抽出する場合の抽出方法を定義している。<property>タグの値５０８は、設計情報の項目に対応するセルの文字列を定義している。図４の属性定義のように、設計情報が表として定義されている場合は、<property>タグの子要素として列ごとに<property>タグを定義する。５０９の部分は、図４の属性の仕様定義情報を表している。
【００１３】
図６は、仕様書１０７を解析する処理の詳細を示すフローチャートである。図６を参照し、仕様書解析部１０４が図５の仕様定義情報１０１に基づき、図３と図４に示す仕様書１０７を解析する方法を説明する。
まず、図５の仕様定義情報１０１を読み込み（ステップ６０１）、<spec>タグについて以降の処理を繰り返す（ステップ６０２）。<spec>タグのfile属性に設定されている仕様書１０７を読み込む（ステップ６０３）。仕様書１０７の利用しているセルについて、以降の処理を繰り返す（ステップ６０４）。<property>タグの値に一致するセルがあった場合、<property>タグのread-type属性に従い、設計情報を抽出する（ステップ６０５）。例えば、read-type属性には、”right”、”bottom”、”list”の種別があり、read-type属性が”right”の場合は、<property>タグの値に一致するセルの右のセルの情報を抽出し、read-type属性が”bottom”の場合は、<property>タグの値に一致するセルの下のセルの情報を抽出し、read-type属性が“list”の場合は、<property>タグの値に一致するセルの下の行に対して、どのセルにも値が設定されていない行まで情報を抽出する。
【００１４】
図７は、設計情報オブジェクトを生成する処理の詳細を示すフローチャートである。図７を参照し、設計情報オブジェクト生成部１０５が図５の仕様定義情報１０１をもとに、動的にクラスを生成し、仕様書解析部１０４が抽出した設計情報を設定することにより設計情報オブジェクトを生成する方法を説明する。
【００１５】
まず、図５の仕様定義情報１０１を読み込む（ステップ７０１）。<spec>タグについて以降の処理を繰り返す（ステップ７０２）。<spec>タグの情報に基づいて動的にクラスを生成する（ステップ７０３）。動的にクラスを生成する方法として、例えば、Jakarta Commonsプロジェクトで開発されているBeanUtilsを使用する方法がある。BeanUtilsを使用することで、プログラムの実行中に動的にクラスを生成し、生成したクラスに対して属性を追加することができる。<property>タグについて以降の処理を繰り返す（ステップ７０４）。<property>タグのread-type属性が“list”以外の場合は、ステップ７０３で生成したクラスに対して、<property>タグのname属性の名前を変数名として属性を追加する（ステップ７０５）。<property>タグのread-type属性が“list”の場合は、<property>タグのname属性の名前を変数名として新たに動的にクラスを生成する（ステップ７０６）。<property>タグの子要素の<property>タグについてステップ７０６を繰り返す（ステップ７０７）。ステップ７０６で生成したクラスに対して、<property>タグのname属性の名前を変数名として属性を追加する（ステップ７０８）。動的に生成したクラスに対して、仕様書解析部１０４が抽出した設計情報を設定し、設計情報オブジェクトを生成する（ステップ７０９）。
【００１６】
図８は、設計情報オブジェクト１０５が生成する設計情報オブジェクトの例を示す図である。この例では、図３および図４の仕様書１０７から抽出した設計情報オブジェクトを表している。図８の８０１の部分は、図３の共通仕様書から抽出した設計情報オブジェクトを表し、８０２の部分は、図４のクラス仕様書から抽出した設計情報オブジェクトを表している。８０３部分は、図４のクラス仕様書の属性定義から抽出した設計情報オブジェクトである。
【００１７】
図９は、ソースコードテンプレート１０３の例を示す図である。この例では、テンプレートエンジンのFreeMarkerの文法に従っている。ソースコードテンプレート１０３には、設計情報オブジェクトの情報と変換するためのパラメータが定義してある。図９では、＄で始まる文字列９０１がパラメータを表している。９０２は繰り返し構造を表しており、９０３は分岐を表している。
【００１８】
図１０は、設計情報オブジェクトとソースコードテンプレートからソースコードを生成する方法をＸＭＬ（Extensible Markup Language）形式で定義したソースコード生成定義情報１０２の例を示す図である。この例では、図９のソースコードテンプレートと図３および図４の仕様書１０７から抽出した図８の設計情報オブジェクトからソースコードを生成する方法を定義したソースコード生成定義情報１０２を表している。図１０の１００１の<generator>タグの部分は、生成するソースコード１０８の種類ごとに設計情報オブジェクトとソースコードテンプレートからソースコードを生成する方法を定義している。<generator>タグのname属性１００２はソースコード生成定義情報の名前、template属性１００３は使用するソースコードテンプレートを定義している。<generator>タグの子要素である<data>タグ１００４は、ソースコード生成に必要な設計情報オブジェクトを定義している。<data>タグのname属性１００５は、仕様定義情報１０１の<spec>タグのname属性に対応している。
【００１９】
図１１は、ソースコードを生成する処理の詳細を示すフローチャートである。図１１を参照し、ソースコード生成部１０６が図８の設計情報オブジェクトと図９のソースコードテンプレート、図１０のソースコード生成定義情報１０２からソースコードを生成する方法を説明する。
まず、図１０のソースコード生成定義情報１０２を読み込む（ステップ１１０１）。<generator>タグについて以降の処理を繰り返す（ステップ１１０２）。<generator>タグのtemplate属性に設定されているソースコードテンプレート１０３を読み込む（ステップ１１０３）。<generator>タグの子要素である<data>タグについて以降の処理を繰り返す（ステップ１１０４）。ステップ１１０３で読み込んだソースコードテンプレート１０３に対して、<data>タグのname属性に対応する設計情報オブジェクトを設定する（１１０５）。テンプレートエンジンを使用して、ソースコードテンプレート１０３のパラメータに対して設計情報オブジェクトの情報に変換することによりソースコードを生成する（ステップ１１０６）。
【００２０】
図１２は、ソースコード生成部１０６が生成したソースコード１０８の例を示す図である。この例では、ソースコード生成部１０６が図８の設計情報オブジェクトと図９のソースコードテンプレート、図１０のソースコード生成定義情報１０２から生成したソースコードを表している。
【００２１】
以上のように、本発明によれば、仕様書から設計情報を抽出する方法と設計情報、ソースコードテンプレートからソースコードを生成する方法を定義することによりソースコードを自動生成するようにしたため、仕様書のフォーマットやソースコードを生成する方法が異なった場合や、仕様書のフォーマットが変更になった場合やソースコードを生成する方法が変更になった場合に、前記設計情報を抽出する方法と、前記ソースコードを生成する方法の定義を変更することにより、ソースコードを自動生成するプログラムを変更することなく容易に対応することが可能なソースコード自動生成装置を提供することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態のソースコード自動生成装置の概略構成を示すブロック図である。
【図２】本発明のソースコードを生成する処理手順のフローチャートである。
【図３】共通仕様書の一例である。
【図４】クラス仕様書の一例である。
【図５】本発明の仕様定義情報である。
【図６】本発明の仕様書を解析する処理の詳細を示すフローチャートである。
【図７】本発明の設計情報オブジェクトを生成する処理の詳細を示すフローチャートである。
【図８】本発明の設計情報オブジェクトである。
【図９】本発明のソースコードテンプレートである。
【図１０】本発明のソースコード生成定義情報である。
【図１１】本発明のソースコードを生成する処理の詳細を示すフローチャートである。
【図１２】本発明によって生成された生成ソースコードである。
【符号の説明】
【００２３】
１００  ソースコード自動生成装置
１０１  仕様定義情報
１０２  ソースコード生成定義情報
１０３  ソースコードテンプレート
１０７  仕様書
１０８  ソースコード
Ｍ  記憶手段
【図１】
2008052356.tif 000003
【図２】
2008052356.tif 000004
【図３】
2008052356.tif 000005
【図４】
2008052356.tif 000006
【図５】
2008052356.tif 000007
【図６】
2008052356.tif 000008
【図７】
2008052356.tif 000009
【図８】
2008052356.tif 000010
【図９】
2008052356.tif 000011
【図１０】
2008052356.tif 000012
【図１１】
2008052356.tif 000013
【図１２】
2008052356.tif 000014