JP2009230606A - ソースコードテンプレート生成装置 - Google Patents

ソースコードテンプレート生成装置 Download PDF

Info

Publication number
JP2009230606A
JP2009230606A JP2008077104A JP2008077104A JP2009230606A JP 2009230606 A JP2009230606 A JP 2009230606A JP 2008077104 A JP2008077104 A JP 2008077104A JP 2008077104 A JP2008077104 A JP 2008077104A JP 2009230606 A JP2009230606 A JP 2009230606A
Authority
JP
Japan
Prior art keywords
source code
template
prototype
character string
tag
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
JP2008077104A
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 JP2008077104A priority Critical patent/JP2009230606A/ja
Publication of JP2009230606A publication Critical patent/JP2009230606A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】ソースコードのテンプレートの作成にかかる工数と、テンプレートの変更にともなう工数を削減することができるソースコードテンプレート生成装置を提供する。
【解決手段】プロトタイプソースコード101を読み込む手段と、テンプレート変換ルールを定義したテンプレート変換定義情報102を読み込む手段と、テンプレート変換ルールに定義されている正規表現でプロトタイプソースコード101の文字列を検索する手段と、検索された文字列をテンプレート変換ルールに定義されているパラメータに置換するパラメータ変換部104と、検索と置換とを繰り返し、テンプレート変換ルールをすべて適用させる手段と、置換されたプロトタイプソースコード101をソースコードテンプレート106として生成する手段とを備えたソースコードテンプレート生成装置である。
【選択図】図1

Description

本発明は、プロトタイプのソースコードから、ソースコードのテンプレートを生成する装置に関するものである。
ソフトウェア開発では、低コスト化・短納期化・高品質化の要求により、生産性向上を強く求められており、生産性を向上させる技術の1つとしてソースコードの自動生成技術が注目されている。
従来からソースコードを自動生成する技術としては、種々の技術が提案されている。例えば、テンプレートエンジンを使用し、ソースコードのテンプレートと設計情報からソースコードを自動生成する技術(例えば、特許文献1参照)等が知られている。
テンプレートエンジンを使用してソースコードを自動生成する場合、まず、ソースコードの雛形であるテンプレートを用意し、用意したソースコードのテンプレートに定義したパラメータを設計情報に変換することにより、ソースコードを自動生成する。テンプレートエンジンには、Apache Jakartaプロジェクトで開発されているVelocityやEclipseプロジェクトで開発されているJETなどが知られている。
特開2006−107025号公報
しかしながら、上記の従来技術には次のような問題点がある。
ソースコードを自動生成するには、ソースコードの雛形であるテンプレートを作成する必要がある。単純なソースコードを自動生成する場合は、最初からソースコードテンプレートを作成することが可能かもしれないが、複雑なソースコードを自動生成する場合は、最初からソースコードテンプレートを作成するのは難しく非常に工数がかかるという問題点がある。
また、作成したソースコードテンプレートから生成されたソースコードが意図通りの動作をするかは、生成されたソースコードをコンパイルし、動作させるまでは分からないという問題がある。同様にソースコードテンプレートを変更する場合も、変更のたびに意図通りの動作をするかコンパイルし、動作を確認する作業を行う必要があるため非常に工数がかかる。
以上の現状に鑑み、本発明は、ソースコードのテンプレートの作成にかかる工数とソースコードのテンプレートの変更にともなう工数を削減することができるソースコードテンプレート生成装置を提供することを目的とする。
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項1に係る発明は、プロトタイプのソースコードを読み込む手段と、
前記プロトタイプのソースコードをソースコードのテンプレートに変換するためのテンプレート変換ルールを定義したテンプレート変換定義情報を読み込む手段と、
前記テンプレート変換ルールに定義されている正規表現で前記プロトタイプのソースコードの文字列を検索する手段と、
検索された文字列を前記テンプレート変換ルールに定義されているパラメータに置換する手段と、
前記検索と置換とを繰り返し、前記テンプレート変換ルールをすべて適用させる手段と、
置換されたプロトタイプソースコードをソースコードテンプレートとして生成する手段とを備えたことを特徴とするソースコードテンプレート生成装置を提供するものである。
本発明によるソースコードテンプレート生成装置によれば、プロトタイプのソースコードからソースコードのテンプレートを生成することができるため、プロトタイプのソースコードについてコンパイル及び動作の確認を行い、確認後プロトタイプのソースコードからソースコードのテンプレートを生成することで、ソースコードのテンプレートの作成にかかる工数とソースコードのテンプレートの変更にともなう工数を削減することができる。
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
図1は、本発明の一実施形態を示すソースコードテンプレート生成装置について、その内部構成を概略的に示すブロック図である。
本実施形態のソースコードテンプレート生成装置は、図1に示すように、プロトタイプソースコード101をテンプレート変換定義情報102に定義されている正規表現を基に文字列の検索を行う正規表現解析部103と、正規表現解析部103によって検索された文字列をテンプレート変換定義情報102に定義されているパラメータに置換を行うパラメータ変換部104と、パラメータ変換部104によって置換されたプロトタイプソースコードをソースコードテンプレート106として生成するソースコードテンプレート生成部105とで構成されている。
正規表現とは、文字列の検索や置換を行なうときに利用する文字列のパターンを表現する表記法である。通常の文字と、メタキャラクタと呼ばれる特別な意味を持った記号を組み合わせて表記する。例えば「.」は任意の1文字、「\w」は英数字、「*」は直前の要素の0回以上の繰り返しを意味する。
図2は、本発明によるソースコードテンプレートを生成する処理手順の概要を示すフローチャートである。図2を参照し、ソースコードテンプレートを生成する処理手順を説明する。
まず、プロトタイプのソースコードを作成し、コンパイル及び動作の確認済みのプロトタイプのソースコードを読み込む(ステップ201)。プロトタイプのソースコードをソースコードのテンプレートに変換するためのルールを定義したテンプレート変換定義情報を読み込む(ステップ202)。テンプレート変換定義情報のテンプレート変換ルールについて以下のステップを繰り返す(ステップ203)。テンプレート変換ルールに定義されている正規表現で文字列を検索する(ステップ204)。検索された文字列をテンプレート変換ルールに定義されているパラメータに置換する(ステップ205)。テンプレート変換ルールすべて適用後プロトタイプのソースコードをソースコードのテンプレートとして生成する(ステップ206)。
図3は、プロトタイプソースコードの例として単純なJava(登録商標)Beansのソースコードである。Java(登録商標)Beansとは、属性とその属性のsetter/getterメソッドを持つJava(登録商標)のクラスである。図3は、ログイン情報のIDとパスワードを格納するJava(登録商標)Beansである。301はパッケージ名を定義しており、302はクラス名を定義している。
String型のid属性とString型のpassword属性303を持ち、id属性とpassword属性のgetterメソッド304と、id属性とpassword属性のsetterメソッド305を持つ。
Java(登録商標)Beans程度の単純なソースコードであれば、最初からソースコードテンプレートを作成しても問題ないが、ここでは説明を分かりやすくするためにJava(登録商標)BeansのプロトタイプソースコードをJava(登録商標)Beansのソースコードテンプレートに変換する手順を例に説明する。
図4は、プロトタイプソースコードをソースコードテンプレートに変換するための正規表現およびパラメータを定義したテンプレート変換定義情報をXML(Extensible Markup Language)形式で定義したテンプレート変換ルールの例を示す図である。この例では、図3のJava(登録商標)Beansのプロトタイプソースコードをソースコードテンプレートに変換するためのテンプレート変換ルールを表している。
ここでは、テンプレートエンジンにEclipseプロジェクトで開発されているJETを使用する場合の例を表している。
<rule>タグに、テンプレート変換ルールが定義される。<rule>タグのmatch属性には正規表現が定義され、<rule>タグのiterate属性には、パラメータが複数回現れるか現れないかを表している。<rule>タグのiterate属性が”true”の場合、パラメータが0回以上現れ、<rule>タグのiterate属性が”false”の場合、パラメータが0または1回現れることを表している。<rule>タグのiterate属性が”true”の場合は、パラメータが0回以上現れるため、<parameter>タグの中に<parameter>タグを定義する必要がある。
<parameter>タグには、正規表現で検索された文字列を置換する文字列が定義されている。正規表現の「.*」(任意の1文字の0回以上の繰り返し)、または、「\w*」(は英数字の0回以上の繰り返し)の箇所を<parameter>タグの値で置換する。正規表現の「.*」、または、「\w*」の文字列と同じ数<parameter>タグを定義する必要がある。
<parameter>タグの値の<c:get>タグは設計情報を出力するためタグである。<iterate>タグはパラメータを繰り返し生成するためのタグである。
また、<parameter>タグにあるpackageName、className、uppercaseFirstは、JETで用意されている関数でそれぞれ、packageNameは完全修飾名からパッケージ名を取得する関数で、classNameは完全修飾名からクラス名を取得する関数で、uppercaseFirstは最初の1文字目を大文字にする関数である。
401、402、403、404、405の5つのテンプレート変換ルールを定義している。401は図3の301のテンプレート変換ルールで、402は図3の302のテンプレート変換ルールで、403は図3の303のテンプレート変換ルールで、404は図3の304のテンプレート変換ルールで、405は図3の305のテンプレート変換ルールを表している。
図5は、正規表現解析部がプロトタイプソースコードを解析し、パラメータ変換部が検索した文字列をパラメータに置換する処理の詳細を示すフローチャートである。
図5を参照し、正規表現解析部が図4のテンプレート変換定義情報の正規表現をもとに、図3のJava(登録商標)Beansのソースコードを解析し、パラメータ変換部が図4のテンプレート変換定義情報のパラメータに置換する方法を説明する。
まず、図3のJava(登録商標)Beansのプロトタイプソースコードを読み込む(ステップ501)。図3のJava(登録商標)Beansのプロトタイプソースコードをソースコードテンプレートに変換するためのルールを定義した図4のテンプレート変換定義情報を読み込む(ステップ502)。図4のテンプレート変換定義情報の<rule>タグについて繰り返す(ステップ503)。図4では5つの<rule>タグが定義されているため、それぞれの処理を<rule>タグごとに5回繰り返す。
図4の401の<rule>タグのmatch属性の正規表現から一致する文字列を検索する(ステップ504)。iterate属性が“false”のため<iterate>タグは追加しない(ステップ505)。図6の601が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
図4の402の<rule>タグのmatch属性の正規表現から一致する文字列を検索する(ステップ504)。iterate属性が“false”のため<iterate>タグは追加しない(ステップ505)。図7の701が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
図4の403の<rule>タグのmatch属性の正規表現から一致する文字列を検索する(ステップ504)。iterate属性が“true”のため<iterate>タグを追加する(ステップ505)。図8の801、802が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
図4の404の<rule>タグのmatch属性の正規表現から一致する文字列を検索する(ステップ504)。iterate属性が“true”のため<iterate>タグを追加する(ステップ505)。図9の901、902が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
図4の405の<rule>タグのmatch属性の正規表現から一致する文字列を検索する(ステップ504)。iterate属性が“true”のため<iterate>タグを追加する(ステップ505)。図10の1001、1002が一致し、正規表現の「.*」、または、「\w*」の文字列の箇所を<parameter>タグの値で置換する。
図11は、ソースコードテンプレート生成部によって生成されたJava(登録商標)Beansのソースコードテンプレートである。図11のJava(登録商標)Beansのソースコードテンプレートと設計情報とから、図3のJava(登録商標)Beansのソースコードを生成することができる。
以上のように、本発明によるソースコードテンプレート生成装置によれば、プロトタイプのソースコードからソースコードのテンプレートを生成することができるため、プロトタイプのソースコードについてコンパイル及び動作の確認を行い、確認後プロトタイプのソースコードからソースコードのテンプレートを生成することで、ソースコードのテンプレートの作成にかかる工数とソースコードのテンプレートの変更にともなう工数を削減することができる。
本発明によるソースコードテンプレート生成装置の概略構成を示すブロック図である。 本発明によるソースコードテンプレートを生成する処理の概要を示すフローチャートである。 本発明に用いるJava(登録商標)Beansのプロトタイプソースコードである。 本発明によるJava(登録商標)Beansのテンプレート変換定義情報である。 本発明によるプロトタイプソースコードを解析し、パラメータに置換する処理の詳細を示すフローチャートである。 本発明によるテンプレート変換ルール401の適用範囲の説明図である。 本発明によるテンプレート変換ルール402の適用範囲の説明図である。 本発明によるテンプレート変換ルール403の適用範囲の説明図である。 本発明によるテンプレート変換ルール404の適用範囲の説明図である。 本発明によるテンプレート変換ルール405の適用範囲の説明図である。 本発明によるJava(登録商標)Beansのソースコードテンプレートである。
符号の説明
102 テンプレート変換定義情報
106 ソースコードテンプレート

Claims (1)

  1. プロトタイプのソースコードを読み込む手段と、
    前記プロトタイプのソースコードをソースコードのテンプレートに変換するためのテンプレート変換ルールを定義したテンプレート変換定義情報を読み込む手段と、
    前記テンプレート変換ルールに定義されている正規表現で前記プロトタイプのソースコードの文字列を検索する手段と、
    検索された文字列を前記テンプレート変換ルールに定義されているパラメータに置換する手段と、
    前記検索と置換とを繰り返し、前記テンプレート変換ルールをすべて適用させる手段と、
    置換されたプロトタイプソースコードをソースコードテンプレートとして生成する手段とを備えたことを特徴とするソースコードテンプレート生成装置。
JP2008077104A 2008-03-25 2008-03-25 ソースコードテンプレート生成装置 Pending JP2009230606A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008077104A JP2009230606A (ja) 2008-03-25 2008-03-25 ソースコードテンプレート生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008077104A JP2009230606A (ja) 2008-03-25 2008-03-25 ソースコードテンプレート生成装置

Publications (1)

Publication Number Publication Date
JP2009230606A true JP2009230606A (ja) 2009-10-08

Family

ID=41245883

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008077104A Pending JP2009230606A (ja) 2008-03-25 2008-03-25 ソースコードテンプレート生成装置

Country Status (1)

Country Link
JP (1) JP2009230606A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013105286A (ja) * 2011-11-11 2013-05-30 Hitachi Ltd プログラム自動生成装置およびプログラム自動生成方法
WO2020071439A1 (ja) 2018-10-04 2020-04-09 オムロン株式会社 プログラム生成装置、プログラム生成装置の制御方法、制御プログラム、および記録媒体。

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03144730A (ja) * 1989-10-30 1991-06-20 Shimadzu Corp プログラム部品の再利用支援装置
JPH06282429A (ja) * 1993-03-26 1994-10-07 Toshiba Corp ソースコード検索システム
JP2000259401A (ja) * 1999-03-05 2000-09-22 Ntt Communicationware Corp ソースプログラム標準化装置およびソースプログラムを標準化する方法
JP2005234959A (ja) * 2004-02-20 2005-09-02 Nec Corp テンプレート作成装置、プログラム、および方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03144730A (ja) * 1989-10-30 1991-06-20 Shimadzu Corp プログラム部品の再利用支援装置
JPH06282429A (ja) * 1993-03-26 1994-10-07 Toshiba Corp ソースコード検索システム
JP2000259401A (ja) * 1999-03-05 2000-09-22 Ntt Communicationware Corp ソースプログラム標準化装置およびソースプログラムを標準化する方法
JP2005234959A (ja) * 2004-02-20 2005-09-02 Nec Corp テンプレート作成装置、プログラム、および方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013105286A (ja) * 2011-11-11 2013-05-30 Hitachi Ltd プログラム自動生成装置およびプログラム自動生成方法
WO2020071439A1 (ja) 2018-10-04 2020-04-09 オムロン株式会社 プログラム生成装置、プログラム生成装置の制御方法、制御プログラム、および記録媒体。
US12105495B2 (en) 2018-10-04 2024-10-01 Omron Corporation Program generation device, program generation device control method, and recording medium

Similar Documents

Publication Publication Date Title
CN110471666A (zh) 代码自动转换方法和装置、代码转换器及介质
Cho et al. Creating visual domain-specific modeling languages from end-user demonstration
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
JP2011060277A (ja) 統合環境生成器
JP2005196291A (ja) ユーザインタフェースアプリケーション開発プログラム、および開発装置
CN105700867B (zh) 通过编译器借助动态可缩放矢量图形生成可执行应用程序的方法和编译器
CN102426519A (zh) 基于关联数据的bpel模板和服务的复用方法及其系统
Gerasimov et al. Continuous transition from model-driven prototype to full-size real-world enterprise information systems
JP4480737B2 (ja) 論理検証支援プログラム、該プログラムを記録した記録媒体、論理検証支援装置、および論理検証支援方法
JP2009230606A (ja) ソースコードテンプレート生成装置
Couto et al. Application of ontologies in identifying requirements patterns in use cases
CN112199626A (zh) 基于dsl布局引擎的动态表单生成方法
JP2008052356A (ja) ソースコード自動生成装置
Fonseca et al. Converting ontologies into DSLs
JP2004185508A (ja) プログラム解析装置およびプログラム
CN110554860A (zh) 一种软件项目自然语言编程接口nli的构造方法及代码生成方法
US20090265682A1 (en) Method for transforming data from a model into a secondary model to optimize code generation
Vanderveen et al. A web service test generator
JP6175306B2 (ja) 制御プログラム分割装置、制御プログラム分割方法及びその記録媒体
Höver et al. A domain specific language for describing s-bpm processes
JP2009080681A (ja) プログラム構造解析方法及び装置
EP3992838B1 (en) Method and system for extracting natural language elements embedded in application source code
JP2016051367A (ja) データ解析装置、データ解析方法、および、プログラム。
JP5356851B2 (ja) マクロプログラムの構造化システム、マクロプログラムの構造化方法およびプログラム
JP2012150740A (ja) プログラム生成装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Effective date: 20100701

Free format text: JAPANESE INTERMEDIATE CODE: A621

A977 Report on retrieval

Effective date: 20120510

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Effective date: 20120522

Free format text: JAPANESE INTERMEDIATE CODE: A131

A02 Decision of refusal

Effective date: 20120925

Free format text: JAPANESE INTERMEDIATE CODE: A02