JP2008052356A - ソースコード自動生成装置 - Google Patents

ソースコード自動生成装置 Download PDF

Info

Publication number
JP2008052356A
JP2008052356A JP2006225576A JP2006225576A JP2008052356A JP 2008052356 A JP2008052356 A JP 2008052356A JP 2006225576 A JP2006225576 A JP 2006225576A JP 2006225576 A JP2006225576 A JP 2006225576A JP 2008052356 A JP2008052356 A JP 2008052356A
Authority
JP
Japan
Prior art keywords
source code
design information
generating
definition information
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006225576A
Other languages
English (en)
Inventor
Hiroshi Nagasawa
博志 長澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Software Engineering Co Ltd
Original Assignee
Hitachi Software Engineering Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Software Engineering Co Ltd filed Critical Hitachi Software Engineering Co Ltd
Priority to JP2006225576A priority Critical patent/JP2008052356A/ja
Publication of JP2008052356A publication Critical patent/JP2008052356A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】仕様書のフォーマットやソースコードを生成する方法が異なった場合や、変更になった場合にも、ソースコードを自動生成するプログラムを変更することなく容易に対応することができるソースコード自動生成装置を提供する。
【解決手段】仕様書107から設計情報を抽出する方法を定義した仕様定義情報101に基づき、仕様書107から設計情報を解析抽出する仕様書解析部104と、仕様定義情報101に基づき動的にクラスを生成し、生成したクラスに設計情報を設定して設計情報オブジェクトを生成する設計情報オブジェクト生成部105と、ソースコード生成定義情報102に基づき、設計情報オブジェクトとソースコードテンプレート103とからソースコード108を生成するソースコード生成部106等を備えるソースコード自動生成装置100を提供する。
【選択図】図1

Description

本発明は、仕様書から設計情報を抽出し、抽出した設計情報とソースコードテンプレートからソースコードを自動生成するソースコード自動生成装置に関するものである。
ソフトウェア開発では、低コスト化、納期の短縮化、高品質化の要求により、生産性向上を強く求められている。そして、ソフトウェア開発の生産性を向上する技術としてソースコードの自動生成技術が注目されている。
従来、ソースコードを自動生成する技術として、テンプレートエンジンを使用し、設計情報とソースコードテンプレートからソースコードを自動生成する技術(例えば、特許文献1参照)などが知られている。
テンプレートエンジンを使用してソースコードを自動生成する場合、まず、ソースコードの雛形であるテンプレートを用意し、用意したソースコードテンプレートに定義したパラメータを設計情報に変換することにより、ソースコードを自動生成する。テンプレートエンジンには、例えば、Apache Jakartaプロジェクトが開発しているVelocityやFreeMarkerプロジェクトが開発しているFreeMarkerがある。
特開2006−107025号公報
然しながら、上記の従来技術には、次のような問題点がある。
プロジェクトごとに仕様書のフォーマットや、設計情報とソースコードテンプレートからソースコードを生成する方法は異なるため、ソースコードを自動生成するプログラムを毎回最初から開発する必要があるという問題があった。
又、仕様書の変更などで仕様書のフォーマットが変更になった場合や、ソースコードを生成する方法が変更になった場合、ソースコードを自動生成するプログラムの変更が必要になるという問題があった。
以上の現状に鑑み、本発明は、仕様書のフォーマットやソースコードを生成する方法が異なる場合や、変更になった場合にも、ソースコードを自動生成するプログラムを変更することなく容易に対応することができるソースコード自動生成装置を提供することを目的とする。
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項1に係る発明は、仕様書から設計情報を抽出する方法を定義した仕様定義情報と、ソースコードを生成する方法を定義したソースコード生成定義情報と、ソースコードの雛型であるソースコードテンプレートとを予め記憶する記憶手段と、
前記記憶手段から、前記仕様定義情報を読み込み、前記仕様定義情報に基づき仕様書から設計情報を解析抽出する仕様書解析抽出手段と、
前記仕様定義情報に基づき動的にクラスを生成し、生成した前記クラスに解析抽出した前記設計情報を設定することにより設計情報オブジェクトを生成するオブジェクト生成手段と、
前記記憶手段から、前記ソースコード生成定義情報と前記ソースコードテンプレートとを読み込み、前記ソースコード生成定義情報に基づき、前記設計情報オブジェクトと前記ソースコードテンプレートとからソースコードを生成するソースコード生成手段とを備えることを特徴とするソースコード自動生成装置を提供するものである。
本発明の請求項1記載によれば、仕様書から設計情報を抽出する方法と、設計情報、ソースコードテンプレートからソースコードを生成する方法を定義することによりソースコードを自動生成するようにしたため、仕様書のフォーマットやソースコードを生成する方法が異なった場合や、仕様書のフォーマットが変更になった場合やソースコードを生成する方法が変更になった場合に、前記設計情報を抽出する方法と、ソースコードを生成する方法の定義を変更することにより、ソースコードを自動生成するプログラムを変更することなく容易に対応することが可能なソースコード自動生成装置を提供できる。
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
図1は、本発明の一実施形態を示すソースコード自動生成装置100の構成を概略的に示すブロック図である。
本実施形態のソースコード自動生成装置100は、仕様書107から設計情報を抽出する方法を定義した仕様定義情報101と、ソースコード108を生成する方法を定義したソースコード生成定義情報102と、ソースコード108の雛型であるソースコードテンプレート103とを予め記憶する記憶手段Mを備えている。尚、前記記憶手段Mは、仕様定義情報101と、ソースコード生成定義情報102と、ソースコードテンプレート103とが夫々記憶される個別の記憶手段であっても良い。
又、ソースコード自動生成装置100は、前記記憶手段Mから、仕様定義情報101を読み込み、仕様定義情報101に基づき仕様書107から設計情報を解析抽出する仕様書解析抽出手段である仕様書解析部104と、仕様定義情報101に基づき動的にクラスを生成し、生成したクラスに解析抽出した設計情報を設定することにより設計情報オブジェクトを生成するオブジェクト生成手段である設計情報オブジェクト生成部105と、記憶手段Mから、ソースコード生成定義情報102とソースコードテンプレート103とを読み込み、ソースコード生成定義情報102に基づき、前記設計情報オブジェクトとソースコードテンプレート103とからソースコード108を生成するソースコード生成手段であるソースコード生成部106とを備えている。
図2は、本発明によるソースコードを生成する処理手順の概要を示すフローチャートである。図1を参照しながら、図2に従ってソースコードを生成する処理手順を説明する。
まず、仕様書解析部104が記憶手段Mから仕様定義情報101を読み込み、仕様定義情報101に基づき仕様書107を解析し、設計情報を抽出する(ステップ201)。
次に、設計情報オブジェクト生成部105が仕様定義情報101に基づき動的にクラスを生成し、生成したクラスにステップ201で抽出した設計情報を設定することにより設計情報オブジェクトを生成する(ステップ202)。
そして、ソースコード生成部106が、記憶手段Mからソースコード生成定義情報102とソースコードテンプレート103を読み込み、ステップ202で生成した設計情報オブジェクトに基づき、ソースコード生成定義情報102とソースコードテンプレート103とからソースコード108を生成する(ステップ203)。
図3および図4は、仕様書解析部104が解析抽出する仕様書107の例を示す図である。この例では、Excelなどの表計算ソフトを使用して仕様書を作成した場合を表している。
図3は、システム共通の仕様書を表している。図3に示す共通仕様書は、仕様書のタイトル301、仕様書の作成者302、仕様書の更新日303、ソースコードに表示するコピーライト304、ソースコードのパッケージ名305を定義している。
図4は、クラスの仕様書を表している。図4に示すクラス仕様書は、仕様書のタイトル401、仕様書の作成者402、仕様書の更新日403、クラスの名前404、クラスの説明405、属性の項番406、属性の変数名407、属性の変数型408、属性の初期値409、属性の説明410を定義している。属性の定義は複数定義されている。
図5は、仕様書107から設計情報を抽出する方法をXML(Extensible
Markup Language)形式で定義した仕様定義情報101の例を示す図である。この例では、図3の共通仕様書および図4のクラス仕様書から設計情報を抽出する方法を定義した仕様定義情報101を表している。501および502の<spec>タグは、仕様書107の種類ごとに設計情報を抽出する方法を定義している。501の部分は、図3の共通仕様書の仕様定義情報を表し、502の部分は、図4のクラス仕様書の仕様定義情報を表している。
<spec>タグのname属性503は仕様定義の名前、file属性504は対応する仕様書を定義している。file属性には、仕様書が格納されているフォルダを指定することも可能である。この例では仕様書のファイルを指定している。505の<property>タグは、仕様書107から抽出する設計情報の項目を定義している。<property>タグのname属性506は設計情報の項目名、read-type属性507は設計情報を抽出する場合の抽出方法を定義している。<property>タグの値508は、設計情報の項目に対応するセルの文字列を定義している。図4の属性定義のように、設計情報が表として定義されている場合は、<property>タグの子要素として列ごとに<property>タグを定義する。509の部分は、図4の属性の仕様定義情報を表している。
図6は、仕様書107を解析する処理の詳細を示すフローチャートである。図6を参照し、仕様書解析部104が図5の仕様定義情報101に基づき、図3と図4に示す仕様書107を解析する方法を説明する。
まず、図5の仕様定義情報101を読み込み(ステップ601)、<spec>タグについて以降の処理を繰り返す(ステップ602)。<spec>タグのfile属性に設定されている仕様書107を読み込む(ステップ603)。仕様書107の利用しているセルについて、以降の処理を繰り返す(ステップ604)。<property>タグの値に一致するセルがあった場合、<property>タグのread-type属性に従い、設計情報を抽出する(ステップ605)。例えば、read-type属性には、”right”、”bottom”、”list”の種別があり、read-type属性が”right”の場合は、<property>タグの値に一致するセルの右のセルの情報を抽出し、read-type属性が”bottom”の場合は、<property>タグの値に一致するセルの下のセルの情報を抽出し、read-type属性が“list”の場合は、<property>タグの値に一致するセルの下の行に対して、どのセルにも値が設定されていない行まで情報を抽出する。
図7は、設計情報オブジェクトを生成する処理の詳細を示すフローチャートである。図7を参照し、設計情報オブジェクト生成部105が図5の仕様定義情報101をもとに、動的にクラスを生成し、仕様書解析部104が抽出した設計情報を設定することにより設計情報オブジェクトを生成する方法を説明する。
まず、図5の仕様定義情報101を読み込む(ステップ701)。<spec>タグについて以降の処理を繰り返す(ステップ702)。<spec>タグの情報に基づいて動的にクラスを生成する(ステップ703)。動的にクラスを生成する方法として、例えば、Jakarta Commonsプロジェクトで開発されているBeanUtilsを使用する方法がある。BeanUtilsを使用することで、プログラムの実行中に動的にクラスを生成し、生成したクラスに対して属性を追加することができる。<property>タグについて以降の処理を繰り返す(ステップ704)。<property>タグのread-type属性が“list”以外の場合は、ステップ703で生成したクラスに対して、<property>タグのname属性の名前を変数名として属性を追加する(ステップ705)。<property>タグのread-type属性が“list”の場合は、<property>タグのname属性の名前を変数名として新たに動的にクラスを生成する(ステップ706)。<property>タグの子要素の<property>タグについてステップ706を繰り返す(ステップ707)。ステップ706で生成したクラスに対して、<property>タグのname属性の名前を変数名として属性を追加する(ステップ708)。動的に生成したクラスに対して、仕様書解析部104が抽出した設計情報を設定し、設計情報オブジェクトを生成する(ステップ709)。
図8は、設計情報オブジェクト105が生成する設計情報オブジェクトの例を示す図である。この例では、図3および図4の仕様書107から抽出した設計情報オブジェクトを表している。図8の801の部分は、図3の共通仕様書から抽出した設計情報オブジェクトを表し、802の部分は、図4のクラス仕様書から抽出した設計情報オブジェクトを表している。803部分は、図4のクラス仕様書の属性定義から抽出した設計情報オブジェクトである。
図9は、ソースコードテンプレート103の例を示す図である。この例では、テンプレートエンジンのFreeMarkerの文法に従っている。ソースコードテンプレート103には、設計情報オブジェクトの情報と変換するためのパラメータが定義してある。図9では、$で始まる文字列901がパラメータを表している。902は繰り返し構造を表しており、903は分岐を表している。
図10は、設計情報オブジェクトとソースコードテンプレートからソースコードを生成する方法をXML(Extensible Markup Language)形式で定義したソースコード生成定義情報102の例を示す図である。この例では、図9のソースコードテンプレートと図3および図4の仕様書107から抽出した図8の設計情報オブジェクトからソースコードを生成する方法を定義したソースコード生成定義情報102を表している。図10の1001の<generator>タグの部分は、生成するソースコード108の種類ごとに設計情報オブジェクトとソースコードテンプレートからソースコードを生成する方法を定義している。<generator>タグのname属性1002はソースコード生成定義情報の名前、template属性1003は使用するソースコードテンプレートを定義している。<generator>タグの子要素である<data>タグ1004は、ソースコード生成に必要な設計情報オブジェクトを定義している。<data>タグのname属性1005は、仕様定義情報101の<spec>タグのname属性に対応している。
図11は、ソースコードを生成する処理の詳細を示すフローチャートである。図11を参照し、ソースコード生成部106が図8の設計情報オブジェクトと図9のソースコードテンプレート、図10のソースコード生成定義情報102からソースコードを生成する方法を説明する。
まず、図10のソースコード生成定義情報102を読み込む(ステップ1101)。<generator>タグについて以降の処理を繰り返す(ステップ1102)。<generator>タグのtemplate属性に設定されているソースコードテンプレート103を読み込む(ステップ1103)。<generator>タグの子要素である<data>タグについて以降の処理を繰り返す(ステップ1104)。ステップ1103で読み込んだソースコードテンプレート103に対して、<data>タグのname属性に対応する設計情報オブジェクトを設定する(1105)。テンプレートエンジンを使用して、ソースコードテンプレート103のパラメータに対して設計情報オブジェクトの情報に変換することによりソースコードを生成する(ステップ1106)。
図12は、ソースコード生成部106が生成したソースコード108の例を示す図である。この例では、ソースコード生成部106が図8の設計情報オブジェクトと図9のソースコードテンプレート、図10のソースコード生成定義情報102から生成したソースコードを表している。
以上のように、本発明によれば、仕様書から設計情報を抽出する方法と設計情報、ソースコードテンプレートからソースコードを生成する方法を定義することによりソースコードを自動生成するようにしたため、仕様書のフォーマットやソースコードを生成する方法が異なった場合や、仕様書のフォーマットが変更になった場合やソースコードを生成する方法が変更になった場合に、前記設計情報を抽出する方法と、前記ソースコードを生成する方法の定義を変更することにより、ソースコードを自動生成するプログラムを変更することなく容易に対応することが可能なソースコード自動生成装置を提供することができる。
本発明の一実施形態のソースコード自動生成装置の概略構成を示すブロック図である。 本発明のソースコードを生成する処理手順のフローチャートである。 共通仕様書の一例である。 クラス仕様書の一例である。 本発明の仕様定義情報である。 本発明の仕様書を解析する処理の詳細を示すフローチャートである。 本発明の設計情報オブジェクトを生成する処理の詳細を示すフローチャートである。 本発明の設計情報オブジェクトである。 本発明のソースコードテンプレートである。 本発明のソースコード生成定義情報である。 本発明のソースコードを生成する処理の詳細を示すフローチャートである。 本発明によって生成された生成ソースコードである。
符号の説明
100 ソースコード自動生成装置
101 仕様定義情報
102 ソースコード生成定義情報
103 ソースコードテンプレート
107 仕様書
108 ソースコード
M 記憶手段

Claims (1)

  1. 仕様書から設計情報を抽出する方法を定義した仕様定義情報と、ソースコードを生成する方法を定義したソースコード生成定義情報と、ソースコードの雛型であるソースコードテンプレートとを予め記憶する記憶手段と、
    前記記憶手段から、前記仕様定義情報を読み込み、前記仕様定義情報に基づき仕様書から設計情報を解析抽出する仕様書解析抽出手段と、
    前記仕様定義情報に基づき動的にクラスを生成し、生成した前記クラスに解析抽出した前記設計情報を設定することにより設計情報オブジェクトを生成するオブジェクト生成手段と、
    前記記憶手段から、前記ソースコード生成定義情報と前記ソースコードテンプレートとを読み込み、前記ソースコード生成定義情報に基づき、前記設計情報オブジェクトと前記ソースコードテンプレートとからソースコードを生成するソースコード生成手段とを備えることを特徴とするソースコード自動生成装置。
JP2006225576A 2006-08-22 2006-08-22 ソースコード自動生成装置 Pending JP2008052356A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006225576A JP2008052356A (ja) 2006-08-22 2006-08-22 ソースコード自動生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006225576A JP2008052356A (ja) 2006-08-22 2006-08-22 ソースコード自動生成装置

Publications (1)

Publication Number Publication Date
JP2008052356A true JP2008052356A (ja) 2008-03-06

Family

ID=39236387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006225576A Pending JP2008052356A (ja) 2006-08-22 2006-08-22 ソースコード自動生成装置

Country Status (1)

Country Link
JP (1) JP2008052356A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152667A (ja) * 2008-12-25 2010-07-08 Exa Corp ソースコード自動生成プログラム
JP2011192143A (ja) * 2010-03-16 2011-09-29 Hitachi Solutions Ltd 自動ソースコード生成システム
JP2018514878A (ja) * 2015-05-13 2018-06-07 ナディア アナリア ウェブラ, 設計仕様書に基づきソフトウェアタイプアプリケーションを表示するコンピュータに実装された方法
KR20200078793A (ko) * 2018-12-21 2020-07-02 세메스 주식회사 제품 명세서 코드 추출 장치 및 제품 명세서 코드 추출 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010152667A (ja) * 2008-12-25 2010-07-08 Exa Corp ソースコード自動生成プログラム
JP2011192143A (ja) * 2010-03-16 2011-09-29 Hitachi Solutions Ltd 自動ソースコード生成システム
JP2018514878A (ja) * 2015-05-13 2018-06-07 ナディア アナリア ウェブラ, 設計仕様書に基づきソフトウェアタイプアプリケーションを表示するコンピュータに実装された方法
KR20200078793A (ko) * 2018-12-21 2020-07-02 세메스 주식회사 제품 명세서 코드 추출 장치 및 제품 명세서 코드 추출 방법
KR102210966B1 (ko) 2018-12-21 2021-02-03 세메스 주식회사 제품 명세서 코드 추출 장치 및 제품 명세서 코드 추출 방법

Similar Documents

Publication Publication Date Title
CN104461484B (zh) 前端模板的实现方法和装置
CN101968817B (zh) 网页模板配置方法
CN101777004B (zh) 面向服务环境中基于模板实现bpel子流程复用的方法及系统
US8589877B2 (en) Modeling and linking documents for packaged software application configuration
CN106339363B (zh) 一种ppt报告的制作方法和装置
CN104699714B (zh) 将书版格式文件转换为epub格式文件的方法及装置
JP2007304998A (ja) ソースコード生成方法及び装置並びにプログラム
JP2011060277A (ja) 統合環境生成器
JP2005196291A (ja) ユーザインタフェースアプリケーション開発プログラム、および開発装置
JP2007122135A (ja) 開発支援装置、開発支援方法、および、開発支援プログラム
CN107102877A (zh) 一种跨浏览器插件的自适应方法
CN113609820A (zh) 基于可扩展标记语言文件生成word文件的方法、装置及设备
JP2008052356A (ja) ソースコード自動生成装置
US9038004B2 (en) Automated integrated circuit design documentation
CN110554860B (zh) 一种软件项目自然语言编程接口nli的构造方法及代码生成方法
CN113553055A (zh) 一种基于机器学习的可视化图表代码自动生成方法
CN103365640A (zh) 层叠样式表样式转换方法及装置
WO2006103760A1 (ja) 文書変換活用システム
JP4889338B2 (ja) 画面プログラムレイアウト変更方法および情報処理装置およびプログラムおよび記録媒体
CN102033861A (zh) 标签模板的编辑方法
JP2007079906A (ja) ソースコード生成装置
JP2009230606A (ja) ソースコードテンプレート生成装置
JP2009080681A (ja) プログラム構造解析方法及び装置
JP2005038050A (ja) 文書変換装置及び文書変換方法
JP2010165205A (ja) モデルのテンプレート自動生成システム、方法及びプログラム