JP2006059044A - プログラムの差分抽出方法およびその装置 - Google Patents
プログラムの差分抽出方法およびその装置 Download PDFInfo
- Publication number
- JP2006059044A JP2006059044A JP2004239026A JP2004239026A JP2006059044A JP 2006059044 A JP2006059044 A JP 2006059044A JP 2004239026 A JP2004239026 A JP 2004239026A JP 2004239026 A JP2004239026 A JP 2004239026A JP 2006059044 A JP2006059044 A JP 2006059044A
- Authority
- JP
- Japan
- Prior art keywords
- difference
- program
- information
- circuit
- extracting
- 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.)
- Withdrawn
Links
Images
Landscapes
- Programmable Controllers (AREA)
- Stored Programmes (AREA)
Abstract
【課題】 PLCのプログラムを比較して相違点を抽出するときに、相違部分があると、それ以降のプログラム比較はこの相違部分の影響を受けた状態で比較されるために、たとえ同一であっても、相違部分以降が全て相違として検出されてしまうという課題を解決する。
【解決手段】 2つのプログラムの命令情報を比較して共通部分を共通部分リストに抽出し、この共通部分リストから最小エディット経路を算出して、この最小エディット経路に沿って2つのプログラムから回路を取り出し、これらの回路の命令部分に一致しない部分があると、その回路の情報を不一致リストに保存するようにした。相違点があってもその相違点を引きずることがないので、正しい比較を行うことができる。
【選択図】 図1
【解決手段】 2つのプログラムの命令情報を比較して共通部分を共通部分リストに抽出し、この共通部分リストから最小エディット経路を算出して、この最小エディット経路に沿って2つのプログラムから回路を取り出し、これらの回路の命令部分に一致しない部分があると、その回路の情報を不一致リストに保存するようにした。相違点があってもその相違点を引きずることがないので、正しい比較を行うことができる。
【選択図】 図1
Description
本発明は、バージョンの異なる2つのプログラムの差分を抽出する方法および装置において、特にPLC(Programmable Logic Controller)のプログラムに用いて好適なプログラムの差分抽出方法および装置に関するものである。
PLC上で動作するユーザアプリケーションプログラムは、複数の作業者によって頻繁に追加あるいは修正が行われる。このような従来のプログラム表示方式の例として、例えば、次のようなものがある。
しかしながら、追加・修正作業中にその履歴を残すことは希であり、後で変更内容を抽出することは困難である。そのためPLCのユーザアプリケーションを開発するソフトウェアでは、高精度な差分抽出機能が求められていた。
従来、差分抽出は次の(1)あるいは(2)の方法で実行されていた。当初は(1)の方法で差分を抽出していたが、技術革新によって次第に(2)の方法に移行してきた。
(1)プログラムを上から順に命令単位で比較して、相違点を抽出する。
(2)プログラムを上から順に回路単位で比較して、相違点を抽出する。
(1)プログラムを上から順に命令単位で比較して、相違点を抽出する。
(2)プログラムを上から順に回路単位で比較して、相違点を抽出する。
このような差分抽出方法は、いずれもプログラムの途中で要素の有無に関わる相違点が抽出されると、それ以降のプログラムの比較は同一の部分ではなく、抽出した相違部分の影響を受けた状態で比較される。そのため、一度相違点が検出されると、それ以降は全て相違であるとされてしまうようになっていた。
このことを、図5を用いて説明する。図5において、71、72はバージョンの異なるPLCのプログラムであり、711、721はプログラム71,72を構成している回路である。プログラム71は(A)〜(I)の9個の回路711で構成されており、プログラム72は(A)〜(I)の9個の回路721で構成されている。
このプログラム71と72の相違点を抽出するために、プログラム71、72を上から回路単位で比較していく。9は比較結果である。回路(A)〜(D)はプログラム71とプログラム72で同一なので、結果は“一致”になる。81は一致している領域を表す。
回路(E)は異なっているので、結果は“相違”になる。領域82は相違の部分である。一旦“相違”を検出すると、この相違点を引きずったまま比較を行うので、9に示すように、それ以降の回路は一致していても“相違”と判定されてしまう。矢印83は、相違点以降は正しい対象と比較されず、本来“同一”であるにも関わらず、“相違”と判定されてしまうことを表している。
しかし、このような差分抽出方法には、次のような課題があった。前述したように、命令あるいは回路単位で最初から単純に比較して差分を抽出していたが、いずれも図5で説明したように、相違点を検出するとそれ以降は全て“相違”になってしまい、正確に差分を抽出することが出来ないという課題があった。
正確に差分を抽出するためには、相違点を検出するのではなく、一致点を検出する必要があるが、PLC等複数の回路で構成されるプログラムでは、プログラムの一致点を抽出するための手法が確立されておらず、一致点検出による差分抽出の技術が検討されていなかった。
なお、UNIX(登録商標)ではdiffという、プログラムの差分を抽出するソフトウェアがよく用いられている。このプログラムは一致点を検出して差分を抽出するが、そのままではPLCのプログラムの差分抽出に用いることができないという課題もあった。
従って本発明の目的は、一致点を検出してプログラムの差分を抽出することによって、正確に差分を抽出することができるプログラムの差分抽出方法およびその装置を提供することにある。
このような課題を達成するために、本発明のうち請求項1記載の発明は、
複数の回路で構成され、命令情報および回路固有の情報を回路単位で管理するプログラムの差分抽出方法において、
差分を抽出するプログラムの命令情報を比較し、回路単位で共通部分を抽出して共通部分リストを作成する工程と、
前記共通部分リストを用いて、前記差分を抽出するプログラムの最小エディット経路を算出する工程と、
前記最小エディット経路に沿って前記差分を抽出するプログラムから1回路分の命令情報を取り出し、この命令情報が一致していなかったときに、一致しなかった回路の情報を不一致リストに保存する工程と、
を具備したものである。正確にプログラムの差分を抽出することができる。
複数の回路で構成され、命令情報および回路固有の情報を回路単位で管理するプログラムの差分抽出方法において、
差分を抽出するプログラムの命令情報を比較し、回路単位で共通部分を抽出して共通部分リストを作成する工程と、
前記共通部分リストを用いて、前記差分を抽出するプログラムの最小エディット経路を算出する工程と、
前記最小エディット経路に沿って前記差分を抽出するプログラムから1回路分の命令情報を取り出し、この命令情報が一致していなかったときに、一致しなかった回路の情報を不一致リストに保存する工程と、
を具備したものである。正確にプログラムの差分を抽出することができる。
請求項2記載の発明は、請求項1記載の発明において、
前記命令情報の比較は、バイト単位で行うようにしたものである。より正確に比較できる。
前記命令情報の比較は、バイト単位で行うようにしたものである。より正確に比較できる。
請求項3記載の発明は、請求項1若しくは請求項2記載の発明において、
前記不一致リストには、一致しなかった回路の情報が格納されている場所を示すポインタを格納するようにしたものである。不一致リストの格納領域を小さくできる。
前記不一致リストには、一致しなかった回路の情報が格納されている場所を示すポインタを格納するようにしたものである。不一致リストの格納領域を小さくできる。
請求項4記載の発明は、
複数の回路で構成され、命令情報および回路固有の情報を回路単位で管理するプログラムの差分を抽出する差分抽出装置において、
差分を抽出するプログラムが入力され、これらのプログラムの命令情報を比較し、回路単位で共通部分を抽出して共通部分リストを作成する共通部分リスト作成部と、
前記共通部分リストが入力され、前記差分を抽出するプログラムの最小エディット経路を算出する最小エディット経路算出部と、
前記最小エディット経路が入力され、この最小エディット経路に沿って前記差分を抽出するプログラムから1回路分の命令情報を取り出し、この命令情報が一致していなかったときに、一致しなかった回路の情報を不一致リストに保存する不一致リスト作成部と、
を具備したものである。正確にプログラムの差分を抽出することができる。
複数の回路で構成され、命令情報および回路固有の情報を回路単位で管理するプログラムの差分を抽出する差分抽出装置において、
差分を抽出するプログラムが入力され、これらのプログラムの命令情報を比較し、回路単位で共通部分を抽出して共通部分リストを作成する共通部分リスト作成部と、
前記共通部分リストが入力され、前記差分を抽出するプログラムの最小エディット経路を算出する最小エディット経路算出部と、
前記最小エディット経路が入力され、この最小エディット経路に沿って前記差分を抽出するプログラムから1回路分の命令情報を取り出し、この命令情報が一致していなかったときに、一致しなかった回路の情報を不一致リストに保存する不一致リスト作成部と、
を具備したものである。正確にプログラムの差分を抽出することができる。
請求項5記載の発明は、請求項4記載の発明において、
前記命令情報の比較は、バイト単位で行うようにしたものである。より正確に比較できる。
前記命令情報の比較は、バイト単位で行うようにしたものである。より正確に比較できる。
請求項6記載の発明は、請求項4若しくは請求項5記載の発明において、
前記不一致リストには、一致しなかった回路の情報が格納されている場所を示すポインタを保存するようにしたものである。不一致リストの格納領域を小さくできる。
前記不一致リストには、一致しなかった回路の情報が格納されている場所を示すポインタを保存するようにしたものである。不一致リストの格納領域を小さくできる。
以上説明したことから明らかなように、本発明によれば次のような効果がある。
請求項1、2,3、4、5および請求項6の発明によれば、命令情報を比較して回路単位で共通部分リストを作成し、この共通部分リストを用いて最小エディット経路を算出して、この最小エディット経路に沿って回路単位で命令情報を比較して、不一致があると、一致しなかった回路の情報を不一致リストに保存するようにした。
請求項1、2,3、4、5および請求項6の発明によれば、命令情報を比較して回路単位で共通部分リストを作成し、この共通部分リストを用いて最小エディット経路を算出して、この最小エディット経路に沿って回路単位で命令情報を比較して、不一致があると、一致しなかった回路の情報を不一致リストに保存するようにした。
従来のように回路が一致していても相違になるということがなくなり、正確に差分を抽出することができるという効果がある。また、これによってプログラムの比較を正確に行うことができるという効果もある。さらに、無駄な相違点情報を検出しないので、効率よく差分を抽出することができるという効果もある。
また、オンラインエディットでは送信データを最小限に抑えなければならないが、本発明によって差分を抽出し、この差分のみを送信することによって、送信データを大幅に少なくすることができるという効果もある。さらに、回路単位で差分を抽出できるので、プログラムの相違点をラダーの形で表示することができ、視認性の向上を図ることができるという効果もある。
以下本発明を図面を用いて詳細に説明する。図1は本発明に係るプログラムの差分抽出方法の一実施例を示すフローチャートである。なお、図5で説明したように、プログラムは複数の回路で構成されている。また、プログラムのデータは命令情報と回路固有の情報で構成されており、これらは回路情報として回路単位で管理されている。回路情報の中には、回路固有の情報と、その回路に含まれる複数の命令情報が格納されている場所を示すポインタが格納されている。
図1において、(A−1)で差分を抽出する2つのプログラム内を走査して一致する部分を全て抽出し、回路単位で共通部分のリストを作成する。そして(A−2)において、作成した共通部分のリストを用いて、最も無駄が少ない経路である最小エディット経路を算出する。次に(A−3)において、(A−2)で作成した最小エディット経路に沿って回路を比較し、不一致回路のリストを作成して、差分抽出を終了する。なお、このときに(A−1)で作成した共通部分リストを用いる。
図2に、(A−1)の共通部分リストの作成部分のフローチャートを示す。(B−1)で2つのプログラム内の命令情報をバイト単位で比較し、差分を抽出する。次に、(B−2)で共通部分を取り出して、回路単位で共通部分リストを生成する。すなわち、比較する回路中の全ての命令情報が一致したときに、共通部分があるとして、共通部分リストに追加する。この(B−1)と(B−2)の部分は、前述したdiffの技術を応用している。
なお、前述したように2つのプログラムの命令情報はバイト単位で比較する。通常命令は複数のバイトで構成されているので、命令単位で比較するよりもより詳細に比較することができる。
次に、最小エディット経路の算出について説明する。最小エディット経路とは、比較する2つのプログラムの共通部分が一番多く、かつ無駄の少ない経路である。この最小エディット経路は、一方のプログラムから他方のプログラムに変更する際に、変更箇所が一番少ない経路になっている。
最小エディット経路を算出するには、(B−2)で作成した共通部分リスト中の共通部分の接続を種々変化させて、一方のプログラムから他方のプログラムに変更するための一番無駄が少ない経路を選択する。なお、この最小エディット経路に沿って測定した距離を最小エディット距離と言う。
次に、不一致回路のリスト生成について説明する。比較する2つのプログラムから、(A−2)で算出した最小エディット経路に沿って回路を抽出し、これらの回路に属する命令情報を比較する。そして、不一致部分があると、その回路の情報を不一致リストに格納する。
このようにすることにより、一致部分の抽出を基にして2つのプログラムの不一致部分(差分)を取り出すことができる。また、最小エディット経路を基にして不一致部分をリストアップするので、効率的に不一致部分の抽出を行うことができる。
なお、格納領域を小さくするために、実際には回路情報そのものではなく、一致しない回路の回路情報が格納されている場所を示すポインタ情報が格納される。
図3に本実施例の効果を示す。なお、図5と同じ要素には同一符号を付し、説明を省略する。図3において、1は比較結果、2は一致している部分、3は不一致部分を表す。矢印83が示すように、不一致部分3以降もこの不一致部分を引きずることなく、正しい対象回路と比較していることがわかる。そのため、1に示すように、不一致部分3以降も正しく一致、不一致の判定を行っている。
図4に本発明の他の実施例を示す。図4において、4は共通部分リスト作成部であり、差分を抽出するプログラムが入力され、これらの共通部分をリストアップした共通部分リストを作成する。
5は最小エディット経路算出部であり、4が作成した共通部分リストが入力され、このリストから最小エディット経路を算出する。6は不一致リスト作成部であり、5が作成した最小エディット経路が入力され、この経路を基にして不一致リストすなわち差分を作成する。
なお、PLCにはオンラインエディット機能という、動作中のPLCのプログラム編集を行うことができる機能が備わっている。このオンラインエディットでは、通信バスを用いてエディットデータをPLCに送信するが、他の機器への影響を最小限にするためには、送信データをできるだけ小さくしなければならない。
そのため、本発明の差分抽出方法および装置を用いてプログラムの差分のみをPLCに送信することによって、送信データを大幅に少なくすることができ、他の機器に与える影響を最小限することができる。
1 比較結果
2 一致している部分
3 一致していない部分
4 共通部分リスト作成部
5 最小エディット経路算出部
6 不一致リスト作成部
71,72 PLCのプログラム
711,721 回路
2 一致している部分
3 一致していない部分
4 共通部分リスト作成部
5 最小エディット経路算出部
6 不一致リスト作成部
71,72 PLCのプログラム
711,721 回路
Claims (6)
- 複数の回路で構成され、命令情報および回路固有の情報を回路単位で管理するプログラムの差分抽出方法において、
差分を抽出するプログラムの命令情報を比較し、回路単位で共通部分を抽出して共通部分リストを作成する工程と、
前記共通部分リストを用いて、前記差分を抽出するプログラムの最小エディット経路を算出する工程と、
前記最小エディット経路に沿って前記差分を抽出するプログラムから1回路分の命令情報を取り出し、この命令情報が一致していなかったときに、一致しなかった回路の情報を不一致リストに保存する工程と、
を具備したことを特徴とするプログラムの差分抽出方法。 - 前記命令情報の比較は、バイト単位で行うことを特徴とする請求項1記載のプログラムの差分抽出方法。
- 前記不一致リストに保存する情報は、一致しなかった回路の情報が格納されている場所を示すポインタであることを特徴とする請求項1若しくは請求項2記載のプログラムの差分抽出方法。
- 複数の回路で構成され、命令情報および回路固有の情報を回路単位で管理するプログラムの差分を抽出する差分抽出装置において、
差分を抽出するプログラムが入力され、これらのプログラムの命令情報を比較し、回路単位で共通部分を抽出して共通部分リストを作成する共通部分リスト作成部と、
前記共通部分リストが入力され、前記差分を抽出するプログラムの最小エディット経路を算出する最小エディット経路算出部と、
前記最小エディット経路が入力され、この最小エディット経路に沿って前記差分を抽出するプログラムから1回路分の命令情報を取り出し、この命令情報が一致していなかったときに、一致しなかった回路の情報を不一致リストに保存する不一致リスト作成部と、
を具備したことを特徴とするプログラムの差分抽出装置。 - 前記命令情報の比較は、バイト単位で行うことを特徴とする請求項4記載のプログラムの差分抽出装置。
- 前記不一致リストに保存する情報は、一致しなかった回路の情報が格納されている場所を示すポインタであることを特徴とする請求項4若しくは請求項5記載のプログラムの差分抽出装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004239026A JP2006059044A (ja) | 2004-08-19 | 2004-08-19 | プログラムの差分抽出方法およびその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004239026A JP2006059044A (ja) | 2004-08-19 | 2004-08-19 | プログラムの差分抽出方法およびその装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006059044A true JP2006059044A (ja) | 2006-03-02 |
Family
ID=36106477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004239026A Withdrawn JP2006059044A (ja) | 2004-08-19 | 2004-08-19 | プログラムの差分抽出方法およびその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006059044A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011113276A (ja) * | 2009-11-26 | 2011-06-09 | Mitsubishi Electric Corp | エンジニアリングツール |
JP2012099064A (ja) * | 2010-11-05 | 2012-05-24 | Mitsubishi Electric Corp | エンジニアリングツール |
JP2013200729A (ja) * | 2012-03-26 | 2013-10-03 | Mitsubishi Electric Corp | ロジック図面処理装置及びその処理方法 |
US20150186524A1 (en) * | 2012-06-06 | 2015-07-02 | Microsoft Technology Licensing, Llc | Deep application crawling |
-
2004
- 2004-08-19 JP JP2004239026A patent/JP2006059044A/ja not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011113276A (ja) * | 2009-11-26 | 2011-06-09 | Mitsubishi Electric Corp | エンジニアリングツール |
JP2012099064A (ja) * | 2010-11-05 | 2012-05-24 | Mitsubishi Electric Corp | エンジニアリングツール |
JP2013200729A (ja) * | 2012-03-26 | 2013-10-03 | Mitsubishi Electric Corp | ロジック図面処理装置及びその処理方法 |
US20150186524A1 (en) * | 2012-06-06 | 2015-07-02 | Microsoft Technology Licensing, Llc | Deep application crawling |
US10055762B2 (en) * | 2012-06-06 | 2018-08-21 | Microsoft Technology Licensing, Llc | Deep application crawling |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9092586B1 (en) | Version management mechanism for fluid guard ring PCells | |
US20200410142A1 (en) | 3d model creation support system and 3d model creation support method | |
JP2016126693A (ja) | 制御手順方法、制御手順プログラム及び制御手順装置 | |
CN115599437A (zh) | 一种软件版本的处理方法、装置、电子设备及存储介质 | |
JP2006059044A (ja) | プログラムの差分抽出方法およびその装置 | |
JP2007226472A (ja) | ジョブ定義確認システム、その方法およびプログラム | |
JP4888790B2 (ja) | 契約定義関数検証装置、その方法及びそのプログラム | |
CN107678975A (zh) | 一种软件故障检测方法及装置 | |
JP5293521B2 (ja) | デザインルールチェック検証装置およびデザインルールチェック検証方法 | |
JP3772701B2 (ja) | 回路図接続情報出力方式及び回路図接続情報出力方法 | |
JP2006309666A (ja) | プログラム開発支援装置、プログラム動作比較方法および半導体集積回路製造方法 | |
US20140245168A1 (en) | Graphical User Interface Editor that Displays Live Data During Editing | |
CN108052335A (zh) | 数据管理方法、装置、计算设备及存储介质 | |
JP6097231B2 (ja) | プログラム生成装置および方法 | |
JP2017151594A (ja) | 支援装置、支援方法及びプログラム | |
WO2020057104A1 (zh) | 用于应用开发的方法和装置 | |
US10054996B2 (en) | Power system monitoring and control system having thread-dependent calculation monitoring function | |
US20230215747A1 (en) | Process data detection method, computer readable medium, and electronic device | |
JP2018197993A (ja) | 端末装置、サーバ装置、端末装置の制御プログラム、サーバ装置の制御方法、およびシステム | |
KR102145178B1 (ko) | 데이터베이스로 저장된 설계정보를 이용한 지능형 pid 도면의 자동 작성 방법 | |
JP6524827B2 (ja) | 情報処理装置、差分対応付け方法および差分対応付けプログラム | |
JP2006004107A (ja) | Cad変更管理システムとその方法およびプログラム | |
JP2016164020A (ja) | 進路情報自動生成装置および進路情報自動生成方法 | |
JP6156175B2 (ja) | 情報処理装置及びプログラム | |
JP2010250598A (ja) | プログラム開発支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20061106 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090213 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090219 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20090420 |