JP6842971B2 - テンプレート生成装置、テンプレート生成方法およびプログラム - Google Patents
テンプレート生成装置、テンプレート生成方法およびプログラム Download PDFInfo
- Publication number
- JP6842971B2 JP6842971B2 JP2017069731A JP2017069731A JP6842971B2 JP 6842971 B2 JP6842971 B2 JP 6842971B2 JP 2017069731 A JP2017069731 A JP 2017069731A JP 2017069731 A JP2017069731 A JP 2017069731A JP 6842971 B2 JP6842971 B2 JP 6842971B2
- Authority
- JP
- Japan
- Prior art keywords
- template
- new
- code
- common code
- program
- 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.)
- Active
Links
- 238000000605 extraction Methods 0.000 claims description 48
- 239000000284 extract Substances 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 11
- 239000002245 particle Substances 0.000 claims description 3
- 230000008439 repair process Effects 0.000 description 25
- 238000011161 development Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 18
- 230000004048 modification Effects 0.000 description 18
- 238000012986 modification Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 238000012423 maintenance Methods 0.000 description 5
- 238000009418 renovation Methods 0.000 description 4
- 230000005012 migration Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Description
その他の手段については、発明を実施するための形態のなかで説明する。
(背景説明)
まず、図15を参照して背景技術を説明する。
図15は、従来のテンプレートを用いてソースコードを自動生成するシステムを示す図である。
図15に示すように、プログラムの開発支援のための開発リポジトリ(repository)1は、テンプレート(雛型)群11と、プログラム設計情報の設計書12とを組み合わせて、プログラム自動生成ツール13を用いてプログリポジトリラムソース16を自動生成する。開発リポジトリ1は、情報システムの設計・開発・保守に関するあらゆる情報を統合的に蓄積・管理する機構をいう。開発リポジトリ1は、ソフトウェアやデータ項目について、関連するメタデータ(仕様書や設計書、モデルやダイアグラム、情報操作ルールなど)と結び付けて格納する。
図17に示すように、プログラムソース14は、図16のテンプレート11の記述が転記され、テンプレート11以外の箇所にユーザコーディング(図17の実線囲み参照)が入る。なお、図16のテンプレート11は、命令語の並びからなる部分を示している。図17のユーザコーディングは、ユーザが記述するソースコード(コンピュータが処理可能な形式のプログラム)であり、ここではあるコード(Aコード)の入出力を記述している。
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
と、
IF TRAN-CD = SPACE
と、に改修が入っている。
MOVE IN-001 TO OUT-001
MOVE IN-002 TO OUT-002
MOVE IN-003 TO OUT-003
という追加の改修が入っている。
COMPUTE OUT-001 = IN-001 + IN-011
COMPUTE OUT-002 = IN-002 + IN-022
COMPUTE OUT-003 = IN-003 + IN-033
という追加の改修が入っている。
図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と、プログラム設計情報とを組み合わせてプログラムソースを生成するシステムに用いられる。
テンプレート生成装置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に類似しない類似部分として新テンプレート化される。
図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
で記述される。
テンプレート生成装置100は、テンプレートとプログラム設計情報とを組み合わせてプログラムソースを生成するシステムに適用される。
図4に示すように、テンプレート生成装置100は、テンプレート部抽出部110(テンプレート部抽出手段)と、共通コード抽出部120(共通コード抽出手段)と、差分情報抽出部130(差分情報抽出手段)と、新テンプレートコード抽出部140(新テンプレートコード抽出手段)と、新テンプレート生成部150(新テンプレート生成手段)と、新テンプレート登録部160(新テンプレート登録手段)と、を備える。
図5は、テンプレート生成装置100のテンプレート生成処理を示すフローチャートである。図6〜図14は、図5のフローの各ステップで説明されるテンプレート、プログラムソース、差分情報を示し、図5のフローの説明において適宜参照する。
図5において、まず、ステップS11でテンプレート部抽出部110(図4参照)は、プログラムソース21(図4参照)からテンプレート部のロジックを抜出し、ロジックを抜き出したテンプレート部のみのプログラムソース(改修後)110A(図4参照)を保存する。保存されたプログラムソース(改修後)110Aは、後記するテンプレート部のみのプログラムソース(改修後)120Aと共に、差分情報抽出部130に入力される。
図6(b)には、図6(a)に示すプログラムソース31−1から、コメント行*USER-S〜*USER-Eの間を除いて、テンプレート部分のロジックを抜出したプログラムソース32−2が示されている。
(1)共通コードを抽出する単位として、共通コードが予め定めた粒度(granularity)(後記)であること。
(2) 共通コードがプログラムの文法上同等とみなされる構文であること。
(3) 共通コードの旧テンプレートが同じ(同じ旧テンプレートID)であること。
ここで、上記粒度は、共通コードとして取り上げる対象の、範囲の広さや規模をいう。例えば、共通コードを抽出する単位として、命令ブロック、命令文、制御文、データ定義(変数)などを揃えて抽出する。
共通コード抽出部120は、抽出したテンプレート部のみのプログラムソース(改修後)120A(図4参照)を保存する。
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
に改修が入り、かつ、
IF TRAN-CD = SPACE
に改修が入っている。なお、図7(a)に示す改修後のプログラムソース32−1は、差分情報なしでもよい。
MOVE IN-001 TO OUT-001
MOVE IN-002 TO OUT-002
MOVE IN-003 TO OUT-003
という追加の改修が入っている。
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には、共通コードの命令ブロック
IF TRAN-CD = SPACE
THEN
MOVE 'TRN' TO ERR-CD
ELSE
CONTINUE
END-IF.
が抽出されている。
図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
で記述される。
以上で、共通コードと差分情報の生成処理を終え、下記の新テンプレート生成処理に移行する。
図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に示す差分情報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
で記述される。
図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.
が削除された記述となる。
なお、上記削除した命令ブロックは、標識領域にアスタリスク(*)を記述してコメント行として残している。
図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
で記述される。
図14に示す新テンプレートを有するプログラムソース38は、図12のプログラムソース37と比較して分かるように、命令ブロック
MOVE IN-001 TO OUT-001
MOVE IN-002 TO OUT-002
MOVE IN-003 TO OUT-003
が追加された記述となる。
テンプレート生成装置100の活用例について述べる。
テンプレート生成装置100は、現行開発環境にインストールし、日次で実行することができる。
現行開発環境にインストールし、日次で実行した結果、テンプレート登録を行う契機は以下の通りである。
(1)開発リポジトリ1(図4参照)の管理者より要求があった場合
(2)年次にて定期的に登録する場合
(3)日次実行している中で、新テンプレートが所定(例えば10個)以上生成された場合
上記(2)(3)の場合、開発リポジトリ1は、本テンプレート生成装置100に対して新テンプレート発行の要求を行うことなく、新テンプレートおよびその差分情報を受け取ることができる。開発リポジトリ1側の負担を軽減することができる。また、上記(3)の場合、開発リポジトリ側では、気付かなかったテンプレートの改修が多く発生している状況である。本テンプレート生成装置100は、自律的に、開発リポジトリ1に対して新テンプレートおよびその差分情報を登録することで、開発リポジトリ1側における、ソースコード自動生成効率をより一層高めることができる。
また、上記した実施形態例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態例の構成の一部を他の実施形態例の構成に置き換えることが可能であり、また、ある実施形態例の構成に他の実施形態例の構成を加えることも可能である。また、各実施形態例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
110 テンプレート部抽出部(テンプレート部抽出手段)
120 共通コード抽出部(共通コード抽出手段)
130 差分情報抽出部(差分情報抽出手段)
140 新テンプレートコード抽出部(新テンプレートコード抽出手段)
150 新テンプレート生成部(新テンプレート生成手段)
160 新テンプレート登録部(新テンプレート登録手段)
Claims (7)
- テンプレートと、プログラム設計情報とを組み合わせてプログラムソースを生成するシステムに用いられるテンプレート生成装置であって、
プログラムソースからテンプレート部のロジックを抜出すテンプレート部抽出手段と、
抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出する共通コード抽出手段と、
抜き出したテンプレート部のロジックをもとに、前記共通コード以外の情報を差分情報として抽出する差分情報抽出手段と、
前記旧テンプレートに含まれない前記共通コードを、新テンプレートに追加する新テンプレートコードとして抽出する新テンプレートコード抽出手段と、
前記旧テンプレートに、前記新テンプレートコードを追加し、新テンプレートを生成する新テンプレート生成手段と、
生成した前記新テンプレートと前記差分情報とを登録する新テンプレート登録手段と、を備える
ことを特徴とするテンプレート生成装置。 - 前記共通コード抽出手段は、
前記共通コードを抽出する単位として、当該共通コードが予め定めた粒度であること、当該共通コードがプログラムの文法上同等とみなされる構文であること、および/または、当該共通コードの旧テンプレートが同じであること、を条件に前記共通コードを抽出する
ことを特徴とする請求項1に記載のテンプレート生成装置。 - 前記新テンプレート生成手段は、
前記旧テンプレートに含まれないコードであることを条件に、当該旧テンプレートに含まれない共通コードを抽出する
ことを特徴とする請求項1に記載のテンプレート生成装置。 - 前記新テンプレート登録手段は、
生成した前記新テンプレートを、元のテンプレートが組み合わされていたプログラム設計情報と組み合わせて登録する
ことを特徴とする請求項1に記載のテンプレート生成装置。 - 前記新テンプレート登録手段は、
前記プログラムソースを生成する前記システム側から要求があった場合、所定期間ごとに定期的に登録する場合、または、前記新テンプレートが所定個以上生成された場合のうち、少なくともいずれか1つでテンプレート登録を行う
ことを特徴とする請求項1に記載のテンプレート生成装置。 - テンプレートと、プログラム設計情報とを組み合わせてプログラムソースを生成するシステムに用いられるテンプレート生成装置のテンプレート生成方法であって、
テンプレート生成装置は、
抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出するステップと、
抜き出したテンプレート部のロジックをもとに、前記共通コード以外の情報を差分情報として抽出するステップと、
前記旧テンプレートに含まれない前記共通コードを、新テンプレートに追加する新テンプレートコードとして抽出するステップと、
前記旧テンプレートに、前記新テンプレートコードを追加し、新テンプレートを生成するステップと、
生成した前記新テンプレートと前記差分情報とを登録するステップと、実行する
ことを特徴とするテンプレート生成方法。 - 制御部を備えるコンピュータを、
テンプレート生成装置のサーバとして機能させるプログラムであって、
プログラムソースからテンプレート部のロジックを抜出すテンプレート部抽出手段、
抜き出したテンプレート部のロジックをもとに、旧テンプレートIDごとに共通コードを抽出する共通コード抽出手段、
抜き出したテンプレート部のロジックをもとに、前記共通コード以外の情報を差分情報として抽出する差分情報抽出手段、
前記旧テンプレートに含まれない前記共通コードを、新テンプレートに追加する新テンプレートコードとして抽出する新テンプレートコード抽出手段、
前記旧テンプレートに、前記新テンプレートコードを追加し、新テンプレートを生成する新テンプレート生成手段、
生成した前記新テンプレートと前記差分情報とを登録する新テンプレート登録手段、を前記コンピュータに実行させる
ことを特徴とするプログラム。
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 JP2018173699A (ja) | 2018-11-08 |
JP6842971B2 true 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) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2582736B (en) * | 2019-02-01 | 2022-02-16 | Arm Ip Ltd | Template-based registration |
JP7186689B2 (ja) * | 2019-11-12 | 2022-12-09 | 三菱電機株式会社 | Plcプログラム開発支援装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2722358B2 (ja) * | 1991-10-14 | 1998-03-04 | 日立ソフトウエアエンジニアリング株式会社 | プログラム作成支援システム |
JP4311327B2 (ja) * | 2004-10-04 | 2009-08-12 | 日本電気株式会社 | ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体 |
JP2007115155A (ja) * | 2005-10-24 | 2007-05-10 | Hitachi Software Eng Co Ltd | プログラム構造管理装置及びプログラム構造管理プログラム |
US8656349B2 (en) * | 2008-03-07 | 2014-02-18 | 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文件的方法及系统 |
CN106528165B (zh) * | 2016-11-11 | 2019-10-08 | 深圳中兴网信科技有限公司 | 代码生成方法及代码生成系统 |
-
2017
- 2017-03-31 JP JP2017069731A patent/JP6842971B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018173699A (ja) | 2018-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20090049438A1 (en) | Method for Optimizing Migration of Software Applications to Address Needs | |
US20190188049A1 (en) | Apparatus and method to select services for executing a user program based on a code pattern included therein | |
US20130007709A1 (en) | Software configuration management | |
JP6673359B2 (ja) | システム構築支援システム、方法およびプログラム | |
US9405518B2 (en) | Leveraging legacy applications for use with modern applications | |
CN110059456B (zh) | 代码保护方法、代码保护装置、存储介质与电子设备 | |
JP6842971B2 (ja) | テンプレート生成装置、テンプレート生成方法およびプログラム | |
KR101379855B1 (ko) | 메인프레임 시스템의 계층형 데이터베이스를 개방형 시스템의 리호스팅 솔루션에 구축된 데이터베이스로 적재하는 데이터 마이그레이션 방법과 장치 | |
Rumpe et al. | A domain specific transformation language | |
CN115756451A (zh) | 一种多项目代码文件重用的方法、装置、设备、存储介质 | |
US20210389977A1 (en) | System migration support apparatus, system migration support method and program | |
CN106165369A (zh) | 用于在异构计算环境中支持数据类型转换的系统和方法 | |
JP7172986B2 (ja) | 構成管理装置、構成管理方法および構成管理プログラム | |
US20200293309A1 (en) | Diagram model for a program | |
JP6705482B2 (ja) | システム構築パラメータ管理装置、システム構築パラメータ管理システム、システム構築パラメータ管理方法、及び、システム構築パラメータ管理プログラム | |
KR20190123146A (ko) | 애플리케이션의 보안성 향상을 위한 애플리케이션 변환 장치 및 방법 | |
KR20190059701A (ko) | Devs 기반 시뮬레이션 모델 및 코드 생성 방법 및 장치 | |
CN102681830B (zh) | 一种比较程序文本的方法和设备 | |
US11789727B2 (en) | Conversion apparatus, conversion method and program | |
US9792197B2 (en) | Apparatus and program | |
US11934366B2 (en) | Version processing apparatus, method, and program | |
JP2014211729A (ja) | 計算機、プログラム及びデータ生成方法 | |
JP4311327B2 (ja) | ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体 | |
US11200078B1 (en) | Facilitating use of an unfamiliar command line tool via a familiar command line tool | |
CN112613256B (zh) | 验证平台的电路参考文件的生成方法、装置和计算机设备 |
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 |