JP2018173699A - テンプレート生成装置、テンプレート生成方法およびプログラム - Google Patents

テンプレート生成装置、テンプレート生成方法およびプログラム Download PDF

Info

Publication number
JP2018173699A
JP2018173699A JP2017069731A JP2017069731A JP2018173699A JP 2018173699 A JP2018173699 A JP 2018173699A JP 2017069731 A JP2017069731 A JP 2017069731A JP 2017069731 A JP2017069731 A JP 2017069731A JP 2018173699 A JP2018173699 A JP 2018173699A
Authority
JP
Japan
Prior art keywords
template
new
code
program
common code
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.)
Granted
Application number
JP2017069731A
Other languages
English (en)
Other versions
JP6842971B2 (ja
Inventor
拓郎 松澤
Takuro Matsuzawa
拓郎 松澤
悟 舟田
Satoru Funada
悟 舟田
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 Social Information Services Ltd
Original Assignee
Hitachi Social Information Services 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 Social Information Services Ltd filed Critical Hitachi Social Information Services Ltd
Priority to JP2017069731A priority Critical patent/JP6842971B2/ja
Publication of JP2018173699A publication Critical patent/JP2018173699A/ja
Application granted granted Critical
Publication of JP6842971B2 publication Critical patent/JP6842971B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】新テンプレートを生成して再度、ソースコードを自動生成できるテンプレート生成装置、テンプレート生成方法およびプログラムを提供する。【解決手段】テンプレート生成装置100は、プログラムソースからテンプレート部のロジックを抜出すテンプレート部抽出部110と、前記ロジックをもとに、旧テンプレートIDごとに共通コードを抽出する共通コード抽出部120と、前記ロジックをもとに、共通コード以外の情報を差分情報として抽出する差分情報抽出部130と、旧テンプレートに含まれない共通コードを、新テンプレートに追加するコードとして抽出する新テンプレートコード抽出部140と、旧テンプレートに、新テンプレートコードを追加し、新テンプレートを生成する新テンプレート生成部150と、生成した新テンプレートと差分情報とを登録する新テンプレート登録部160と、を備える。【選択図】図4

Description

本発明は、テンプレート生成装置、テンプレート生成方法およびプログラムに関する。
近年、これまで現行コンピュータで稼働してきた業務システム(レガシーシステム)を新規コンピュータに移行させるためのマイグレーションサービスを望む企業、自治体などが多い。マイグレーションの形態としては、例えば、汎用系のホストコンピュータ(または、オフコン)から、WINDOWS(登録商標)、UNIX(登録商標)、LINUX(登録商標)などのOS(Operating System)が稼働するオープン系のサーバコンピュータへのマイグレーション、という形態がある。
また、テンプレートと設計書からコードを自動生成するコード自動生成ツールがある。開発時には、仕様変更が度々発生するため、設計書を変更する。その度にコードの再生成を行うことになる。また、テンプレート以外は汎用的に作成されているため、自動生成されたコードに対して、開発者が修正を行うことになる。
特許文献1には、ファイル定義体に格納された項目名に、所定の文字と区切り文字とを付加した項目名を作成し、作成した項目名と項目属性とを用いてデータファイルを定義するコピー句を生成するコピー句生成部と、複写したコピー句から所定の文字を置換する命令とを用いてデータファイルを定義するように変換するプログラム変換部とを備えるレガシーシステムのプログラムを効率的に変換する装置が記載されている。
特許文献2には、構造的なまとまりを判定する基準として関数及び構文を定義することで、検出したコードクローンから、前記構造的なまとまりを持つコードクローンのみを抽出するコードクローン構造解析手段と、抽出されたコードクローンをユーザインタフェース手段で設定された情報に基づき自動で共通関数化する共通関数生成手段と、を備えるソフトウェアリファクタリング支援装置が記載されている。
特許文献3には、設計情報に基づいてプログラムを自動生成し、設計情報の変更内容に基づいてプログラムの変更箇所を検索し、自動生成されたプログラムに修正が加えられた修正プログラムに前記検索された変更箇所を追加または削除して前記修正プログラムの修正内容を継承したプログラムを自動生成することを特徴とする修正プログラムを継承したプログラムの自動生成方法が記載されている。
特開2010−134487号公報 特開2009−176064号公報 特開2000−222195号公報
しかしながら、テンプレートを用いてソースコードを自動生成することにより開発したシステムにあっては、保守開発を繰り返す中で、テンプレートに手を加える改修が多く入ってしまい再度自動生成ができなくなってしまうという課題がある。
そこで、本発明は、前記した問題を解決するために、テンプレートを用いてソースコードを自動生成するシステムにおいて、改修が入ったとしても、新テンプレートを生成して再度、ソースコードを自動生成できるテンプレート生成装置、テンプレート生成方法およびプログラムを提供することを目的とする。
前記課題を解決するため、本発明によるテンプレート生成装置は、テンプレートと、プログラム設計情報とを組み合わせてプログラムソースを生成するシステムに用いられるテンプレート生成装置であって、プログラムソースからテンプレート部のロジックを抜出すテンプレート部抽出手段と、抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出する共通コード抽出手段と、抜き出したテンプレート部のロジックをもとに、前記共通コード以外の情報を差分情報として抽出する差分情報抽出手段と、前記旧テンプレートに含まれない前記共通コードを、新テンプレートに追加する新テンプレートコードとして抽出する新テンプレートコード抽出手段と、前記旧テンプレートに、前記新テンプレートコードを追加し、新テンプレートを生成する新テンプレート生成手段と、生成した前記新テンプレートと前記差分情報とを登録する新テンプレート登録手段と、を備える特徴とする。
その他の手段については、発明を実施するための形態のなかで説明する。
本発明によれば、新テンプレートを生成して再度、ソースコードを自動生成できるテンプレート生成装置、テンプレート生成方法およびプログラムを提供することができる。
本発明の実施形態に係るテンプレート生成装置の概念図である。 上記実施形態に係るテンプレート生成装置により抽出された新テンプレートの一例を示す図である。 上記実施形態に係るテンプレート生成装置の差分情報の一例を示す図である。 上記実施形態に係るテンプレート生成装置の構成を示す図である。 上記実施形態に係るテンプレート生成装置のテンプレート生成処理を示すフローチャートである。 上記実施形態に係るテンプレート生成装置のプログラムソースを示す図であり、(a)は、テンプレート部分を抽出する前のプログラムソースを示し、(b)は、プログラムソース31−1からテンプレート部分を抽出したプログラムソースを示す。 上記実施形態に係るテンプレート生成装置により生成された3本のプログラムソースが改修された改修後のプログラムソースを示す図であり、(a)は、1本目改修後のプログラムソースを示し、(b)は、2本目改修後のプログラムソースを示し、(c)は、3本目改修後のプログラムソースを示す。 上記実施形態に係るテンプレート生成装置の共通コード抽出後のプログラムソースを示す図である。 上記実施形態に係るテンプレート生成装置の差分情報の一例を示す図である。 上記実施形態に係るテンプレート生成装置のプログラムソースを示す図であり、(a)は、旧テンプレートを有するプログラムソースを示し、(b)は、旧テンプレートに含まれないコードを有するプログラムソースを示す。 上記実施形態に係るテンプレート生成装置の旧テンプレートに含まれない共通コード情報以外の差分情報の一例を示す図である。 上記実施形態に係るテンプレート生成装置の旧テンプレートを反映して生成された新テンプレートを有するプログラムソースを示す図である。 上記実施形態に係るテンプレート生成装置の差分情報の一例を示す図である。 上記実施形態に係るテンプレート生成装置の新テンプレートと差分情報を反映して生成されたプログラムソースを示す図である。 従来技術のテンプレートを用いてソースコードを自動生成するシステムを示す図である。 従来技術のテンプレートを示す図である。 図16のテンプレートをもとにプログラム自動生成ツールを用いて自動生成されたプログラムソース14の一例を示す図である。 背景技術に係るシステムにより生成された3本のプログラムソースが改修された改修後のプログラムソースを示す図であり、(a)は、1本目改修後のプログラムソースを示し、(b)は、2本目改修後のプログラムソースを示し、(c)は、3本目改修後のプログラムソースを示す。
以下、図面を参照して本発明を実施するための形態(以下、「本実施形態」という)における負荷分散装置等について説明する。
(背景説明)
まず、図15を参照して背景技術を説明する。
図15は、従来のテンプレートを用いてソースコードを自動生成するシステムを示す図である。
図15に示すように、プログラムの開発支援のための開発リポジトリ(repository)1は、テンプレート(雛型)群11と、プログラム設計情報の設計書12とを組み合わせて、プログラム自動生成ツール13を用いてプログリポジトリラムソース16を自動生成する。開発リポジトリ1は、情報システムの設計・開発・保守に関するあらゆる情報を統合的に蓄積・管理する機構をいう。開発リポジトリ1は、ソフトウェアやデータ項目について、関連するメタデータ(仕様書や設計書、モデルやダイアグラム、情報操作ルールなど)と結び付けて格納する。
図16は、テンプレート11を示す図、図17は、図16のテンプレート11をもとにプログラム自動生成ツール13を用いて自動生成されたプログラムソース14の一例を示す図である。
図17に示すように、プログラムソース14は、図16のテンプレート11の記述が転記され、テンプレート11以外の箇所にユーザコーディング(図17の実線囲み参照)が入る。なお、図16のテンプレート11は、命令語の並びからなる部分を示している。図17のユーザコーディングは、ユーザが記述するソースコード(コンピュータが処理可能な形式のプログラム)であり、ここではあるコード(Aコード)の入出力を記述している。
上記テンプレート11を用いてソースコードの自動生成により開発したシステムでは、保守開発を繰り返す中で、テンプレート11に手を加える改修等15(図15参照)が入る。プログラムソース16は、改修後のプログラムソースである。
図18は、改修前のプログラムソース14が改修等15により3本のプログラムソースが改修された改修後のプログラムソース16−1〜16−3を示す図である。図18(a)は、1本目改修後のプログラムソース16−1を、図18(b)は、2本目改修後のプログラムソース16−2を、図18(c)は、3本目改修後のプログラムソース16−3をそれぞれ示す。図18(a)−(c)を横断して示す実線囲みは、プログラムソース16−1〜16−3のテンプレート部分である。
図18(a)に示す改修後のプログラムソース16−1は、図17の改修前のプログラムソース14と比較して分かるように、図18(a)に示す命令ブロック
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
と、
IF TRAN-CD = SPACE
と、に改修が入っている。
図18(b)に示す改修後のプログラムソース16−2は、プログラムソース16−1の改修に加え、図18(a)に示す改修後のプログラムソース16−1にさらに、命令ブロック
MOVE IN-001 TO OUT-001
MOVE IN-002 TO OUT-002
MOVE IN-003 TO OUT-003
という追加の改修が入っている。
図18(c)に示す改修後のプログラムソース16−3は、プログラムソース16−1の改修に加え、命令ブロック
COMPUTE OUT-001 = IN-001 + IN-011
COMPUTE OUT-002 = IN-002 + IN-022
COMPUTE OUT-003 = IN-003 + IN-033
という追加の改修が入っている。
このように、長年の改修により、当初のプログラムソース14(図17参照)のテンプレート部分に改修が入る。保守開発を繰り返す中で、テンプレートに手を加える改修が多く入ってしまうと、再度自動生成ができなくなる課題がある。
(実施形態)
図1は、本発明の実施形態に係るテンプレート生成装置の概念図である。本テンプレート生成装置は、テンプレートを用いてソースコードを自動生成するシステムに適用される。図1の説明に当たり、図15と同一構成部には、同一番号を付している。また、図18と同様な改修が行われるものとする。
図1示す破線囲みが、図15のシステムに対し新規な部分である。
テンプレート生成装置100(後記図4参照)は、類似分析による新テンプレートを抽出する。具体的には、テンプレート生成装置100は、改修後のプログラムソース21と開発リポジトリ1のテンプレート群11とを入力し、プログラムソース21の共通性を分析し、改修後のプログラムソース21に共通であり、かつ既存テンプレート11に類似しない新テンプレート22を抽出する。なお、改修後のプログラムソース21は、改修後のプログラムソース16と同一であってもよい。ここでは、改修後のプログラムソース21は、改修後のプログラムソース16と同一であり、図18(a)−(c)に示されている。
テンプレート生成装置100は、テンプレート11と、プログラム設計情報とを組み合わせてプログラムソースを生成するシステムに用いられる。
図2は、テンプレート生成装置100により抽出された新テンプレート22の一例を示す図である。
テンプレート生成装置100は、改修後のプログラムソース21から、類似部分を新テンプレート化する(図2の実線囲み参照)。
図2に示す新テンプレート22は、図16のテンプレート11と比較して分かるように、図2に示す新テンプレート22の命令ブロック
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
が、改修後のプログラムソース21に共通であり、かつ既存テンプレート11に類似しない類似部分として新テンプレート化される。
図1に戻って、テンプレート生成装置100は、テンプレート登録23により新テンプレート22(図2参照)を、開発リポジトリ1の既存のテンプレート11に登録し、テンプレート11を新テンプレート22で更新する。既存のテンプレート11は、新テンプレート22によって更新されるので、保守開発を繰り返しても、開発リポジトリ1のテンプレート11は最新となる。このため、開発リポジトリ1は、テンプレート群11と、プログラム設計情報の設計書12とを組み合わせて、プログラム自動生成ツール14を用いてプログラムソース16を自動生成することができる。
また、テンプレート生成装置100は、新テンプレート22をもとに、改修後のプログラムソース21を置き換え(図1の番号24参照)、更新された改修後のプログラムソース25とする。改修後のプログラムソース25には、新テンプレート22(図2参照)と、新テンプレート22との差分情報26(後記図3参照)と、を記述する。テンプレート生成装置100は、各ソースコードから、テンプレート部分のロジックを抜出し、旧テンプレートIDごとに共通コードと差分情報26を生成する。差分情報26を必要とするのは、新テンプレートからプログラムソースを作成する場合のみである。また、新テンプレートのみでプログラムソースを作成するケースもある。
なお、図1では、説明の便宜上、テンプレート生成装置100の機能のうち、新テンプレート22と差分情報26の生成と、新テンプレート22の登録(図1の番号23参照)とを、図1のテンプレート生成装置100の外ブロックとして記載したが、実際にはテンプレート生成装置100の内部に各機能部として備える。また、新テンプレート22を用いた改修後のプログラムソース21を置き換える処理(図1の番号24参照)は、図1のプログラム自動生成ツール13を用いて自動的に実行される。
図3は、差分情報26の一例を示す図である。
図3に示す差分情報26は、プログラムID、テンプレートID、差分情報を含み、
PGM002,TEMP001,00010,MOVE IN-001 TO OUT-001
PGM002,TEMP001,00011,MOVE IN-002 TO OUT-002
PGM002,TEMP001,00012,MOVE IN-003 TO OUT-003
PGM003,TEMP001,00010,COMPUTE OUT-001 = IN-001 + IN-011
PGM003,TEMP001,00011,COMPUTE OUT-002 = IN-002 + IN-022
PGM003,TEMP001,00012,COMPUTE OUT-003 = IN-003 + IN-033
で記述される。
図4は、本発明の実施形態に係るテンプレート生成装置100の構成を示す図である。
テンプレート生成装置100は、テンプレートとプログラム設計情報とを組み合わせてプログラムソースを生成するシステムに適用される。
図4に示すように、テンプレート生成装置100は、テンプレート部抽出部110(テンプレート部抽出手段)と、共通コード抽出部120(共通コード抽出手段)と、差分情報抽出部130(差分情報抽出手段)と、新テンプレートコード抽出部140(新テンプレートコード抽出手段)と、新テンプレート生成部150(新テンプレート生成手段)と、新テンプレート登録部160(新テンプレート登録手段)と、を備える。
テンプレート部抽出部110は、プログラムソースからテンプレート部のロジックを抜出す。
共通コード抽出部120は、抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出する。前記共通コードを抽出する単位として、予め定めた粒度であること、プログラムの文法上同等とみなされる構文であること、および/または、同じ旧テンプレートIDであること、を条件に前記共通コードを抽出する。なお、比較対象は、テンプレートであるので、共通コードの抽出は、完全一致であることを前提とする。
差分情報抽出部130は、抜き出したテンプレート部のロジックをもとに、共通コード以外の情報を差分情報として抽出する。具体的には、差分情報抽出部130は、共通コード情報以外の情報を差分情報として、ソースコード上に占める位置情報を取得する。
新テンプレートコード抽出部140は、旧テンプレートに含まれない共通コードを、新テンプレートに追加するコードとして抽出する。
新テンプレート生成部150は、旧テンプレートに、新テンプレートコードを追加し、新テンプレートを生成する。具体的には、新テンプレート生成部150は、生成された共通コードと、旧テンプレートとを比較し、旧テンプレートに含まれない共通コードを、旧テンプレートに追加して新テンプレートを生成する(図1の新テンプレート22参照)。新テンプレート生成部150は、旧テンプレートに含まれないコードであることを条件に、旧テンプレートに含まれない共通コードを抽出する。
新テンプレート登録部160は、生成した新テンプレート(図4の新テンプレート150A参照)とテンプレート部の共通部との差分情報130Aとを登録する(図1のテンプレート登録23参照)。例えば、新テンプレート登録部160は、新テンプレートとテンプレート部の共通部との差分情報とを、開発リポジトリ1(図4参照)に登録する。
テンプレート生成装置100は、例えばサーバから構成される。テンプレート生成装置100をサーバにより構成した場合、当該サーバの制御部は、ROM(Read Only Memory)に記憶された制御プログラムを読み出してRAM(Random Access Memory)に展開し、CPU(Central Processing Unit)がテンプレート生成処理を実行する。本実施形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。また、「〜部」として説明するものは、ROMに記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみ、または、ソフトウェアとハードウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。
以下、上述のように構成されたテンプレート生成装置100の動作を説明する。
図5は、テンプレート生成装置100のテンプレート生成処理を示すフローチャートである。図6〜図14は、図5のフローの各ステップで説明されるテンプレート、プログラムソース、差分情報を示し、図5のフローの説明において適宜参照する。
図5において、まず、ステップS11でテンプレート部抽出部110(図4参照)は、プログラムソース21(図4参照)からテンプレート部のロジックを抜出し、ロジックを抜き出したテンプレート部のみのプログラムソース(改修後)110A(図4参照)を保存する。保存されたプログラムソース(改修後)110Aは、後記するテンプレート部のみのプログラムソース(改修後)120Aと共に、差分情報抽出部130に入力される。
図6は、図5のプログラムソース(改修後)110Aに対応する具体的なプログラムソース31を示す図である。図6(a)は、プログラムソース31−1を、図6(b)は、テンプレート部分を抽出する前のプログラムソース31−1からテンプレート部分を抽出したプログラムソース31−2をそれぞれ示す。
図6(b)には、図6(a)に示すプログラムソース31−1から、コメント行*USER-S〜*USER-Eの間を除いて、テンプレート部分のロジックを抜出したプログラムソース32−2が示されている。
図5のフローに戻って、ステップS12で共通コード抽出部120(図4参照)は、共通コードを以下の条件で抽出する。
(1)共通コードを抽出する単位として、共通コードが予め定めた粒度(granularity)(後記)であること。
(2) 共通コードがプログラムの文法上同等とみなされる構文であること。
(3) 共通コードの旧テンプレートが同じ(同じ旧テンプレートID)であること。
ここで、上記粒度は、共通コードとして取り上げる対象の、範囲の広さや規模をいう。例えば、共通コードを抽出する単位として、命令ブロック、命令文、制御文、データ定義(変数)などを揃えて抽出する。
共通コード抽出部120は、抽出したテンプレート部のみのプログラムソース(改修後)120A(図4参照)を保存する。
図7は、図4のプログラムソース(改修後)120Aに対応する具体的な改修前のプログラムソース14(図17参照)が改修(3本のプログラムソースが改修)された改修後のプログラムソース32−1〜32−3を示す図である。図7(a)−(c)は、それぞれ別プログラムである。図7(a)は、1本目改修後のプログラムソース32−1を、図7(b)は、2本目改修後のプログラムソース32−2を、図7(c)は、3本目改修後のプログラムソース32−3をそれぞれ示す。なお、図7(a)−(c)は、前記図18(a)−(c)に対応している。
図7(a)に示す改修後のプログラムソース32−1は、図6(b)の改修前のプログラムソース31−2と比較して分かるように、図7(a)の命令ブロック
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
に改修が入り、かつ、
IF TRAN-CD = SPACE
に改修が入っている。なお、図7(a)に示す改修後のプログラムソース32−1は、差分情報なしでもよい。
図7(b)に示す改修後のプログラムソース32−2は、プログラムソース32−1の改修に加え、命令ブロック
MOVE IN-001 TO OUT-001
MOVE IN-002 TO OUT-002
MOVE IN-003 TO OUT-003
という追加の改修が入っている。
図7(c)に示す改修後のプログラムソース32−3は、プログラムソース32−1の改修に加え、命令ブロック
COMPUTE OUT-001 = IN-001 + IN-011
COMPUTE OUT-002 = IN-002 + IN-022
COMPUTE OUT-003 = IN-003 + IN-033
という追加の改修が入っている。
図5のフローに戻って、ステップS12で共通コード・差分情報生成部120は、共通コードを、上記(1)〜(3)の条件で抽出する。
図8は、共通コード抽出後のプログラムソース33を示す図である。
図8に示すように、プログラムソース33には、共通コードの命令ブロック
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
が抽出されている。
図5のフローに戻って、ステップS13で差分情報抽出部130(図4参照)は、共通コード情報以外の情報を差分情報として、ソースコード上に占める位置情報を取得する。差分情報抽出部130(図4参照)は、テンプレート部の共通部との差分情報130A(図4参照)を保存する。
図9は、図4のテンプレート部の共通部との差分情報130Aに対応する具体的な差分情報34の一例を示す図である。
図9に示す差分情報34は、プログラムID、テンプレートID、行番号、差分情報を含み、
PGM002,TEMP001,00020,MOVE IN-001 TO OUT-001
PGM002,TEMP001,00021,MOVE IN-002 TO OUT-002
PGM002,TEMP001,00022,MOVE IN-003 TO OUT-003
PGM003,TEMP001,00020,COMPUTE OUT-001 = IN-001 + IN-011
PGM003,TEMP001,00021,COMPUTE OUT-002 = IN-002 + IN-022
PGM003,TEMP001,00022,COMPUTE OUT-003 = IN-003 + IN-033
で記述される。
以上で、共通コードと差分情報の生成処理を終え、下記の新テンプレート生成処理に移行する。
まず、ステップS14で新テンプレートコード抽出部140(図4参照)は、旧テンプレートに含まれない共通コードを、新テンプレートに追加するコード(図4の新テンプレートコード140A参照)として抽出する。
図10は、旧テンプレートを有するプログラムソース35−1〜35−2を示す図である。図10(a)は、旧テンプレートを有するプログラムソース35−1を、図10(b)は、旧テンプレートに含まれないコードを有するプログラムソース35−2をそれぞれ示す。
図10(a)に示す旧テンプレートを有するプログラムソース35−1は、図10(b)の旧テンプレートに含まれないコードを有するプログラムソース35−2と比較して分かるように、図10(b)の旧テンプレートに含まれない共通コード
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
を有している。
図11は、図4の新テンプレートコード140Aに対応する具体的な旧テンプレートに含まれない共通コード情報以外の差分情報36の一例を示す図である。
図11に示す差分情報36は、テンプレートID、行番号、種別、差分情報を含み、
TEMP001,00014, 追加, IF TRAN-CD = SPACE
TEMP001,00015, 追加, THEN
TEMP001,00016, 追加, MOVE 'TRN' TO ERR-CD
TEMP001,00017, 追加, ELSE
TEMP001,00018, 追加, CONTINUE
TEMP001,00019, 追加, END-IF.
TEMP001,00021, 削除,* IF ERR-CD = SPACE
TEMP001,00022, 削除,* THEN
TEMP001,00023, 削除,* PERFORM KANREN-CHECK-SEC
TEMP001,00024, 削除,* ELSE
TEMP001,00025, 削除,* END-IF.
TEMP001,00026, 変更,* IF TRAN-CD = SPACE
で記述される。
図5のフローに戻って、ステップS15で新テンプレート生成部150(図4参照)は、旧テンプレートに、新テンプレートに追加するコードを追加し、新テンプレートを生成する。すなわち、抽出した共通コードを、旧テンプレートに反映し、新テンプレートを生成する。このときテンプレートIDを振り直す。新テンプレート生成部150は、生成した新テンプレート150A(図4参照)を保存する。
図12は、図4の新テンプレート150Aに対応する具体的な旧テンプレートを反映して生成された新テンプレートを有するプログラムソース37を示す図である。図12は、旧テンプレートとの違いを取り込んだ新テンプレートを示す。
図12に示す新テンプレートを有するプログラムソース37は、図10(b)の旧テンプレートに含まれないコードを有するプログラムソース35−2と比較して分かるように、図10(b)の旧テンプレートに含まれない共通コードの命令ブロック
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
が反映されている一方、
図10(b)の旧テンプレートに含まれない共通コードの命令ブロック
IF ERR-CD = SPACE
THEN
PERFORM HENKAN-SEC
ELSE
CONTINUE
END-IF.
が削除された記述となる。
なお、上記削除した命令ブロックは、標識領域にアスタリスク(*)を記述してコメント行として残している。
図5のフローに戻って、ステップS15で新テンプレート生成部150は、新たな差分情報38(図13参照)がある場合、この差分情報38を用いて同様な方法で、新テンプレートを生成する。このときテンプレートIDを振り直す。
図13は、図4の新テンプレート150Aに対応する具体的な差分情報38の一例を示す図である。なお、図11に示す差分情報36のような「種別」はない。
図13に示す差分情報38は、プログラムID、テンプレートID、行番号、差分情報を含み、
PGM002,TEMP001,00020,MOVE IN-001 TO OUT-001
PGM002,TEMP001,00021,MOVE IN-002 TO OUT-002
PGM002,TEMP001,00022,MOVE IN-003 TO OUT-003
PGM003,TEMP001,00020,COMPUTE OUT-001 = IN-001 + IN-011
PGM003,TEMP001,00021,COMPUTE OUT-002 = IN-002 + IN-022
PGM003,TEMP001,00022,COMPUTE OUT-003 = IN-003 + IN-033
で記述される。
図5のフローに戻って、ステップS16で新テンプレート登録部160は、生成した新テンプレート(図4の新テンプレート150A参照)とテンプレート部の共通部との差分情報130Aとを、元のテンプレートが組み合わされていたプログラム設計情報と組み合わせて登録する(図1のテンプレート登録23参照)。例えば、図4の例では、生成した新テンプレート150Aとテンプレート部の共通部との差分情報130Aとを開発リポジトリ1(図4参照)に登録する。
なお、図1では、説明の便宜上、テンプレート生成装置100の機能のうち、新テンプレート22と差分情報26の生成と、新テンプレート22の登録(図1の番号23参照)とを、図1のテンプレート生成装置100の外ブロックとして記載したが、実際にはテンプレート生成装置100の内部に各機能部として備える。また、新テンプレート22を用いた改修後のプログラムソース21を置き換え(図1の番号24参照)る処理は、図1のプログラム自動生成ツール13を用いて自動的に実行される。これにより、図1に示す開発リポジトリ1は、新テンプレートと、差分情報と、プログラム設計情報の設計書12とを組み合わせて、プログラム自動生成ツール13を用いてプログラムソース16を、再度自動生成する。
図14は、新テンプレート150Aとテンプレート部の共通部との差分情報130Aに対応する具体的な新テンプレートと差分情報37を反映して生成されたプログラムソース38を示す図である。図14は、図12のプログラムソースと図13の差分情報を使って作成したプログラムソースを示す。
図14に示す新テンプレートを有するプログラムソース38は、図12のプログラムソース37と比較して分かるように、命令ブロック
MOVE IN-001 TO OUT-001
MOVE IN-002 TO OUT-002
MOVE IN-003 TO OUT-003
が追加された記述となる。
[テンプレート生成装置100の活用例]
テンプレート生成装置100の活用例について述べる。
テンプレート生成装置100は、現行開発環境にインストールし、日次で実行することができる。
現行開発環境にインストールし、日次で実行した結果、テンプレート登録を行う契機は以下の通りである。
(1)開発リポジトリ1(図4参照)の管理者より要求があった場合
(2)年次にて定期的に登録する場合
(3)日次実行している中で、新テンプレートが所定(例えば10個)以上生成された場合
上記(2)(3)の場合、開発リポジトリ1は、本テンプレート生成装置100に対して新テンプレート発行の要求を行うことなく、新テンプレートおよびその差分情報を受け取ることができる。開発リポジトリ1側の負担を軽減することができる。また、上記(3)の場合、開発リポジトリ側では、気付かなかったテンプレートの改修が多く発生している状況である。本テンプレート生成装置100は、自律的に、開発リポジトリ1に対して新テンプレートおよびその差分情報を登録することで、開発リポジトリ1側における、ソースコード自動生成効率をより一層高めることができる。
以上説明したように、本実施形態に係るテンプレート生成装置100は、プログラムソースからテンプレート部のロジックを抜出すテンプレート部抽出部110と、抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出する共通コード抽出部120と、抜き出したテンプレート部のロジックをもとに、共通コード以外の情報を差分情報として抽出する差分情報抽出部130と、を備える。また、旧テンプレートに含まれない共通コードを、新テンプレートに追加するコードとして抽出する新テンプレートコード抽出部140と、旧テンプレートに、新テンプレートコードを追加し、新テンプレートを生成する新テンプレート生成部150と、生成した新テンプレートとテンプレート部の共通部との差分情報(共通コード以外の情報)とを登録する新テンプレート登録部160と、を備える。
これにより、テンプレートを用いてソースコードを自動生成するシステムにおいて、改修が入ったとしても、新テンプレートを生成して再度ソースコードを自動生成することができる。新テンプレートが生成されるので、プログラムソースを、再度自動生成することができる。
本発明は上記実施形態例に限定されるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りにおいて、他の変形例、応用例を含む。
また、上記した実施形態例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態例の構成の一部を他の実施形態例の構成に置き換えることが可能であり、また、ある実施形態例の構成に他の実施形態例の構成を加えることも可能である。また、各実施形態例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記実施形態は、COBOLのプログラムについて説明しているが、対象となるプログラムは、VisualBasicなどどのようなものでもよい。これに伴い、差分情報は、変更された情報が何であるか、また追加、削除される箇所とその内容が分かるものであればどのような形態のものでもよい。
また、上記実施の形態では、テンプレート生成装置という名称を用いたが、これは説明の便宜上であり、装置の名称はプログラムソース生成装置、方法の名称はコード生成方法等であってもよい。
以上説明したテンプレート生成処理は、このテンプレート生成処理を機能させるためのプログラムでも実現される。このプログラムはコンピュータで読み取り可能な記録媒体に格納されている。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)カード、光ディスク等の記録媒体に保持することができる。また、本明細書において、時系列的な処理を記述する処理ステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)をも含むものである。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
100 テンプレート生成装置
110 テンプレート部抽出部(テンプレート部抽出手段)
120 共通コード抽出部(共通コード抽出手段)
130 差分情報抽出部(差分情報抽出手段)
140 新テンプレートコード抽出部(新テンプレートコード抽出手段)
150 新テンプレート生成部(新テンプレート生成手段)
160 新テンプレート登録部(新テンプレート登録手段)

Claims (7)

  1. テンプレートと、プログラム設計情報とを組み合わせてプログラムソースを生成するシステムに用いられるテンプレート生成装置であって、
    プログラムソースからテンプレート部のロジックを抜出すテンプレート部抽出手段と、
    抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出する共通コード抽出手段と、
    抜き出したテンプレート部のロジックをもとに、前記共通コード以外の情報を差分情報として抽出する差分情報抽出手段と、
    前記旧テンプレートに含まれない前記共通コードを、新テンプレートに追加する新テンプレートコードとして抽出する新テンプレートコード抽出手段と、
    前記旧テンプレートに、前記新テンプレートコードを追加し、新テンプレートを生成する新テンプレート生成手段と、
    生成した前記新テンプレートと前記差分情報とを登録する新テンプレート登録手段と、を備える
    ことを特徴とするテンプレート生成装置。
  2. 前記共通コード抽出手段は、
    前記共通コードを抽出する単位として、当該共通コードが予め定めた粒度であること、当該共通コードがプログラムの文法上同等とみなされる構文であること、および/または、当該共通コードの旧テンプレートが同じであること、を条件に前記共通コードを抽出する
    ことを特徴とする請求項1に記載のテンプレート生成装置。
  3. 前記新テンプレート生成手段は、
    前記旧テンプレートに含まれないコードであることを条件に、当該旧テンプレートに含まれない共通コードを抽出する
    ことを特徴とする請求項1に記載のテンプレート生成装置。
  4. 前記新テンプレート登録手段は、
    生成した前記新テンプレートを、元のテンプレートが組み合わされていたプログラム設計情報と組み合わせて登録する
    ことを特徴とする請求項1に記載のテンプレート生成装置。
  5. 前記新テンプレート登録手段は、
    前記プログラムソースを生成する前記システム側から要求があった場合、所定期間ごとに定期的に登録する場合、または、前記新テンプレートが所定個以上生成された場合のうち、少なくともいずれか1つでテンプレート登録を行う
    ことを特徴とする請求項1に記載のテンプレート生成装置。
  6. テンプレートと、プログラム設計情報とを組み合わせてプログラムソースを生成するシステムに用いられるテンプレート生成装置のテンプレート生成方法であって、
    テンプレート生成装置は、
    抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出するステップと、
    抜き出したテンプレート部のロジックをもとに、前記共通コード以外の情報を差分情報として抽出するステップと、
    前記旧テンプレートに含まれない前記共通コードを、新テンプレートに追加する新テンプレートコードとして抽出するステップと、
    前記旧テンプレートに、前記新テンプレートコードを追加し、新テンプレートを生成するステップと、
    生成した前記新テンプレートと前記差分情報とを登録するステップと、実行する
    ことを特徴とするテンプレート生成方法。
  7. 制御部を備えるコンピュータを、
    テンプレート生成装置のサーバとして機能させるプログラムであって、
    プログラムソースからテンプレート部のロジックを抜出すテンプレート部抽出手段、
    抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出する共通コード抽出手段、
    抜き出したテンプレート部のロジックをもとに、前記共通コード以外の情報を差分情報として抽出する差分情報抽出手段、
    前記旧テンプレートに含まれない前記共通コードを、新テンプレートに追加する新テンプレートコードとして抽出する新テンプレートコード抽出手段、
    前記旧テンプレートに、前記新テンプレートコードを追加し、新テンプレートを生成する新テンプレート生成手段、
    生成した前記新テンプレートと前記差分情報とを登録する新テンプレート登録手段、を前記コンピュータに実行させる
    ことを特徴とするプログラム。
JP2017069731A 2017-03-31 2017-03-31 テンプレート生成装置、テンプレート生成方法およびプログラム Active JP6842971B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017069731A JP6842971B2 (ja) 2017-03-31 2017-03-31 テンプレート生成装置、テンプレート生成方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017069731A JP6842971B2 (ja) 2017-03-31 2017-03-31 テンプレート生成装置、テンプレート生成方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2018173699A true JP2018173699A (ja) 2018-11-08
JP6842971B2 JP6842971B2 (ja) 2021-03-17

Family

ID=64107723

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017069731A Active JP6842971B2 (ja) 2017-03-31 2017-03-31 テンプレート生成装置、テンプレート生成方法およびプログラム

Country Status (1)

Country Link
JP (1) JP6842971B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021077189A (ja) * 2019-11-12 2021-05-20 三菱電機株式会社 Plcプログラム開発支援装置
CN113424510A (zh) * 2019-02-01 2021-09-21 Arm IP有限公司 基于模板的注册

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108322A (ja) * 1991-10-14 1993-04-30 Hitachi Software Eng Co Ltd プログラム作成支援システム
JP2006107025A (ja) * 2004-10-04 2006-04-20 Nec Corp ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
JP2007115155A (ja) * 2005-10-24 2007-05-10 Hitachi Software Eng Co Ltd プログラム構造管理装置及びプログラム構造管理プログラム
US20090228866A1 (en) * 2008-03-07 2009-09-10 Sap Ag Systems and Methods for Template Reverse Engineering
JP2012159922A (ja) * 2011-01-31 2012-08-23 Toshiba Corp テンプレート情報生成プログラム及び装置
CN103488738A (zh) * 2013-09-18 2014-01-01 北京思特奇信息技术股份有限公司 一种自动实现java对象及数据表sql文件的方法及系统
CN106528165A (zh) * 2016-11-11 2017-03-22 深圳中兴网信科技有限公司 代码生成方法及代码生成系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108322A (ja) * 1991-10-14 1993-04-30 Hitachi Software Eng Co Ltd プログラム作成支援システム
JP2006107025A (ja) * 2004-10-04 2006-04-20 Nec Corp ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
JP2007115155A (ja) * 2005-10-24 2007-05-10 Hitachi Software Eng Co Ltd プログラム構造管理装置及びプログラム構造管理プログラム
US20090228866A1 (en) * 2008-03-07 2009-09-10 Sap Ag Systems and Methods for Template Reverse Engineering
JP2012159922A (ja) * 2011-01-31 2012-08-23 Toshiba Corp テンプレート情報生成プログラム及び装置
CN103488738A (zh) * 2013-09-18 2014-01-01 北京思特奇信息技术股份有限公司 一种自动实现java对象及数据表sql文件的方法及系统
CN106528165A (zh) * 2016-11-11 2017-03-22 深圳中兴网信科技有限公司 代码生成方法及代码生成系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113424510A (zh) * 2019-02-01 2021-09-21 Arm IP有限公司 基于模板的注册
JP2021077189A (ja) * 2019-11-12 2021-05-20 三菱電機株式会社 Plcプログラム開発支援装置
JP7186689B2 (ja) 2019-11-12 2022-12-09 三菱電機株式会社 Plcプログラム開発支援装置

Also Published As

Publication number Publication date
JP6842971B2 (ja) 2021-03-17

Similar Documents

Publication Publication Date Title
US10901804B2 (en) Apparatus and method to select services for executing a user program based on a code pattern included therein
US20130007709A1 (en) Software configuration management
US10394756B2 (en) System and method for customizing archive of a device driver generator tool for a user
US9311077B2 (en) Identification of code changes using language syntax and changeset data
Rumpe et al. A domain specific transformation language
US20160004579A1 (en) Method of generating automatic code for remote procedure call
WO2017033441A1 (ja) システム構築支援システム、方法および記憶媒体
US11693637B1 (en) Using natural language latent representation in automated conversion of source code from base programming language to target programming language
JP2018173699A (ja) テンプレート生成装置、テンプレート生成方法およびプログラム
US10545741B2 (en) Information processing apparatus, method of compiling, and storage medium
JP6651974B2 (ja) 情報処理装置、コンパイル方法及びコンパイラプログラム
JP7172986B2 (ja) 構成管理装置、構成管理方法および構成管理プログラム
Wille et al. Identifying variability in object-oriented code using model-based code mining
JP5932707B2 (ja) 計算機、プログラム及びデータ生成方法
JP6705482B2 (ja) システム構築パラメータ管理装置、システム構築パラメータ管理システム、システム構築パラメータ管理方法、及び、システム構築パラメータ管理プログラム
US9354870B2 (en) Maintaining integrity of output of code generators
US9792197B2 (en) Apparatus and program
Sacerdoti Coen A plugin to export Coq libraries to XML
US11789727B2 (en) Conversion apparatus, conversion method and program
JP4120879B2 (ja) プログラム生成システム及び方法とそのプログラム
Fabry et al. Engineering a Converter Between Two Domain-Specific Languages for Sorting
JP2010134487A (ja) プログラム
WO2020026388A1 (ja) 推論規則生成支援装置、推論規則生成支援方法、及びコンピュータ読み取り可能な記録媒体
Mani et al. A Framework for Generating Domain-specific Rule for Process Model Customisation.
JP6142585B2 (ja) 機器管理システム、機器管理装置、機器管理装置の制御方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210222

R150 Certificate of patent or registration of utility model

Ref document number: 6842971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250