(57)【要約】【課題】自動化システムのプログラム上で同一または類似のロジックを検出し、ユーザに報告するプログラミング言語の誤り検出装置及びその方法を提供する。【解決手段】本発明に係るプログラミング言語の誤り検出装置は、プログラミング言語を用いてプログラムを作成するプログラム作成部と、前記作成されたプログラムを文字列に変換するロジック変換部と、前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して文字列に対する同一ロジックを検出するハッシュコード計算部と、前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列（ＬＣＳ）を計算し、計算されたＬＣＳをＬＣＳアルゴリズムに適用して文字列に対する類似ロジックを検出するＬＣＳ計算部と、を有する。【選択図】図２
2014041617.tif 000002
【特許請求の範囲】
【請求項１】
ＰＬＣ自動化システムのプログラミング言語誤り検出装置であって、
プログラミング言語を用いてプログラムを作成するプログラム作成部と、
前記作成されたプログラムを文字列に変換するロジック変換部と、
前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して文字列に対する同一ロジックを検出するハッシュコード計算部と、
前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列（ＬＣＳ）を計算し、計算されたＬＣＳをＬＣＳアルゴリズムに適用して文字列に対する類似ロジックを検出するＬＣＳ計算部と、を有することを特徴とするプログラミング言語誤り検出装置。
【請求項２】
前記ハッシュコード計算部で計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記ＬＣＳ計算部で計算された前記ＬＣＳと設定された文字列の類似度閾値とを比較して、前記ＬＣＳが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックであると判断する判断部をさらに有することを特徴とする請求項１に記載のプログラミング言語誤り検出装置。
【請求項３】
前記文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果を報告する報告部をさらに有することを特徴とする請求項２に記載のプログラミング言語誤り検出装置。
【請求項４】
前記類似ロジックが検出されなかった、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する閾値入力部をさらに有することを特徴とする、請求項２に記載のプログラミング言語誤り検出装置。
【請求項５】
前記同一ロジックの正確な検出及び判断のために、前記プログラミング言語の変数に関する情報を除去する変数フィルタリング部をさらに有することを特徴とする、請求項１に記載のプログラミング言語誤り検出装置。
【請求項６】
ＰＬＣ自動化システムのプログラミング言語誤り検出方法であって、
プログラミング言語を用いてプログラムを作成し、前記作成されたプログラムを文字列に変換する段階と、
前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して文字列に対する同一ロジックを検出する段階と、
前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列（ＬＣＳ）を計算し、計算されたＬＣＳをＬＣＳアルゴリズムに適用して文字列に対する類似ロジックを検出する段階と、を有することを特徴とするプログラミング言語誤り検出方法。
【請求項７】
前記計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記計算された前記ＬＣＳと設定された文字列の類似度閾値とを比較して、前記ＬＣＳが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックであると判断する段階をさらに有することを特徴とする請求項６に記載のプログラミング言語誤り検出方法。
【請求項８】
前記文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果をユーザに報告する段階をさらに有することを特徴とする請求項７に記載のプログラミング言語誤り検出方法。
【請求項９】
前記類似ロジックが検出されなかった、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する段階をさらに有することを特徴とする請求項７に記載のプログラミング言語誤り検出方法。
【請求項１０】
前記同一ロジックの正確な検出及び判断のために、前記プログラミング言語の変数に関する情報を除去する段階をさらに有することを特徴とする請求項６に記載のプログラミング言語誤り検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラミング言語の誤り検出装置及び誤り検出方法に関し、より詳細にはＩＥＣ６１１３１−３プログラミング言語の誤りを検出する装置及びその方法に関するものである。
【背景技術】
【０００２】
一般に、多様で分散化されたプログラマブルロジックコントローラ（Programmable Logic Controller；ＰＬＣ）プログラミング言語に起因して、ユーザがＰＬＣを制御するのに誤りを犯しやすく、各々のＰＬＣプログラミング言語の使用に係る物的、人的資源の無駄の問題があった。これを解決するために、国際電気標準会議（International Electrotechnical Commission；ＩＥＣ）は、国際規格のプログラミング言語であるＩＥＣ６１１３１−３標準を規定して、従来のＰＬＣプログラミング言語を統合して標準化した。
【０００３】
図１は、一般的なＰＬＣ自動化システムのプログラム環境の構成図である。
【０００４】
図１を参照すると、プログラマブルロジックコントローラ（Programmable Logic Controller；ＰＬＣ）自動化システムのプログラムは、国際電気標準会議（International Electrotechnical Commission；ＩＥＣ）６１１３１−３プログラミング環境を提供してプログラムを作成するプログラム作成部１１と、前記作成されたプログラムを制御部にダウンロードするプログラムダウンロード部１２と、ダウンロードしたプログラムを検証するプログラム検証部１３と、を有する。
【０００５】
自動化システムのプログラム制御部は、一つまたは複数の同じロジックや類似のロジックを繰り返し用いてＰＬＣ自動化システムを制御する場合が多い。しかし、ＰＬＣ自動化システムに用いられるＩＥＣ６１１３１−３プログラミング言語と上位レベルプログラミング言語であるＣ／Ｃ＋＋言語とを比較すると、プログラム作成時にロジックを繰り返し使用するためのテンプレート（Template）などの要素の不足に起因して、同一または類似のロジックが繰り返し用いられる場合、ロジック変更時同一または類似のロジックを一つずつ探し出して変更しなければならないという問題点がある。
【０００６】
特に、同一コンポーネント（Component）が一つまたは複数用いられる場合のロジック変更は、同一コンポーネントを用いるすべての場合に同一に適用されなければならない。万一、一つのコンポーネントでもロジック変更が抜けた場合には、自動化システム全体に対する信頼性が低下するという問題が発生する。
【０００７】
同一または類似のロジックは、自動化システムの開発段階だけでなく、試運転及びメンテナンス／修理段階に至るまで厳重に管理されなければならないが、従来の自動化システムのプログラム環境では、同一または類似のロジックを探し出す機能は提供されない。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従って、本発明は、前記従来技術に係る問題点を解決するためのものであって、本発明の目的は、自動化システムのプログラム上で同一または類似のロジックを検出して、ユーザに報告するプログラミング言語誤り検出装置及びその方法を提供することである。
【０００９】
また、本発明の他の目的は、プログラムを検証するとき、誤りが発生したロジックと同一または類似のロジックを速くかつ簡単に検出でき、誤りが発生しやすいロジックをユーザが予め認知できるようにしたプログラミング言語誤り検出装置及びその方法を提供することである。
【課題を解決するための手段】
【００１０】
前記目的を達成するための本発明に係るＰＬＣ自動化システムのプログラミング言語誤り検出装置の一側面によると、プログラミング言語を用いてプログラムを作成するプログラム作成部と、前記作成されたプログラムを文字列に変換するロジック変換部と、前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して文字列に対する同一ロジックを検出するハッシュコード計算部と、前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列（ＬＣＳ）を計算し、計算されたＬＣＳをＬＣＳアルゴリズムに適用して文字列に対する類似ロジックを検出するＬＣＳ計算部と、を有する。
【００１１】
前記プログラミング言語誤り装置は、前記ハッシュコード計算部で計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記ＬＣＳ計算部で計算された前記ＬＣＳと設定された文字列の類似度閾値とを比較して、前記ＬＣＳが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックであると判断する判断部をさらに有してもよい。
【００１２】
前記ハッシュコード計算部、前記ＬＣＳ計算部、または判断部での文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果を報告する報告部をさらに有してもよい。
【００１３】
前記類似ロジックが検出されなかったか、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する閾値入力部をさらに有してもよい。
【００１４】
前記同一ロジックの正確な検出及び判断のために、前記プログラミング言語の変数に関する情報を除去する変数フィルタリング部をさらに有してもよい。
【００１５】
一方、本発明に係るＰＬＣ自動化システムのプログラミング言語誤り検出方法の一側面によると、プログラミング言語を用いてプログラムを作成し、前記作成されたプログラムを文字列に変換する段階と、前記変換された文字列を複数のプログラミング言語の最小単位に分割し、前記分割された複数のプログラミング言語の最小単位ごとにハッシュコードを各々計算し、計算された各ハッシュコードを比較して、文字列に対する同一ロジックを検出する段階と、前記複数のプログラミング言語の最小単位ごとに分割された前記文字列に対する最長共通部分列（ＬＣＳ）を計算し、計算されたＬＣＳをＬＣＳアルゴリズムに適用して文字列に対する類似ロジックを検出する段階と、を有する。
【００１６】
前記プログラミング言語誤り検出方法は、前記計算された複数のプログラミング言語の最小単位ごとのハッシュコードを比較して、ハッシュコードが互いに同じである場合、該当文字列を同一ロジックであると判断し、前記計算された前記ＬＣＳと設定された文字列の類似度閾値とを比較して、前記ＬＣＳが前記設定された文字列の類似度閾値より大きい場合は、該当文字列を類似ロジックと判断する段階をさらに有してもよい。
【００１７】
前記プログラミング言語誤り検出方法は、前記文字列に対する同一ロジックまたは類似ロジックの検出及び判断結果をユーザに報告する段階をさらに有してもよい。
【００１８】
尚、前記類似ロジックが検出されなかったか、または、前記類似ロジックの数が設定された閾値を越えた場合、ユーザによって前記文字列の類似度閾値を変更設定する段階をさらに有してもよい。
【００１９】
一方、前記同一ロジックの正確な検出及び判断のために、プログラミング言語の変数に関する情報を除去する段階をさらに有してもよい。
【発明の効果】
【００２０】
本発明に係るプログラミング言語誤り検出装置及びその方法は、ユーザが、自動化システムプログラムが用いる同一または類似のロジックを予め認知して、自動化システムの試運転及びメンテナンス段階で発生しやすい潜在的なロジックの誤りを防止することができるようにすることによって、自動化システムの信頼性を向上させることができる効果を持つことになる。
【図面の簡単な説明】
【００２１】
【図１】一般的なＰＬＣ自動化システムのプログラム環境の構成図である。
【図２】本発明の第１実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
【図３】本発明の第２実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
【図４】図３に図示された変数フィルタリング部でプログラミング言語の変数をフィルタリングする動作に関する一例を示した図である。
【図５】本発明に係るプログラミング言語誤り検出装置でユーザが文字列の類似度閾値を設定する一例を示した図である。
【図６】本発明の第３実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
【図７】本発明の第４実施形態に係るプログラミング言語誤り検出装置のブロック構成図である。
【発明を実施するための形態】
【００２２】
本発明は、多様な変更を加えることができ、種々の実施形態を持つことができるが、特定の実施形態を図面に例示し、詳細に説明する。しかし、これは本発明を特定の実施形態に限定しようとするものではなく、本発明の思想及び技術範囲に含まれるすべての変更、均等物または代替物を含むものと理解されなければならない。
【００２３】
以下、プログラミング言語の例として、ＩＥＣ６１１３１−３言語を挙げて説明するが、ＩＥＣ６１１３１−３以外のプログラミング言語でも、本発明が適用できることは本発明が属する技術分野で通常の知識を持った者には自明であろう。
【００２４】
以下、添付図面を参照して本発明に係る好ましい実施形態を詳細に説明する。図面上で同一符号は同じ要素を指し示す。
【００２５】
図２は、本発明の第１実施形態に係るプログラム言語誤り検出装置のブロック構成を示した図である。
【００２６】
図２を参照すると、本発明のプログラミング言語誤り検出装置は、プログラム作成部２１、ロジック変換部２２、ハッシュコード（Hash Code）計算部２４、最長共通部分列（Longest Common Subsequence；ＬＣＳ）計算部２５及びロジック報告部２７を有してもよい。
【００２７】
先に、ユーザは、前記プログラム作成部２１を介してＩＥＣ６１１３１−３プログラミング言語を用いたプログラムをプログラミングする。
【００２８】
ＩＥＣ６１１３１−３プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部２２は、前記プログラム作成部２１を介してユーザがプログラミングしたＩＥＣ６１１３１−３プログラミング言語を文字列形態に変換する。
【００２９】
ハッシュコード計算部２４は、前記ロジック変換部２２で文字列形態に変換したＩＥＣ６１１３１−３プログラミング言語をＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング（rung））ごとに区分する。ハッシュコード計算部２４は、区分した各々のラングのハッシュコード（Hash Code）を計算した後、各々のハッシュコードを比較して同一ロジックを検出する。
【００３０】
ＬＣＳ計算部２５は、ＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに、最長共通部分列（Longest Common Subsequence；ＬＣＳ）を計算した後、各々のラング間の類似度を判断するために、ＬＣＳアルゴリズムを用いて類似ロジックを検出する。ここで、ＬＣＳアルゴリズムは、共通の部分文字列中、長さが最も長いものを出力し、これについては、本発明が属する技術分野で通常の知識を有する者には自明であるため、詳細な説明は省略する。
【００３１】
ロジック報告部２７は、ハッシュコードとＬＣＳを用いて、探し出した同一または類似のロジックに関する結果をユーザに報告する。即ち、ロジック報告部２７は、同じハッシュコードを持つロジックは同一ロジックと報告し、ＬＣＳが、ユーザが予め設定した文字列の類似度閾値より大きい場合、類似ロジックと報告する。
【００３２】
ユーザが予め設定した文字列に関する類似度閾値については、図５を参照して詳細に説明する。
【００３３】
図３は、本発明の第２実施形態に係るプログラミング言語誤り検出装置のブロック構成を示した図であり、図３は図２とは異なって、変数フィルタリング部２３をさらに有する。
【００３４】
図３を参照すると、本発明に係るプログラミング言語誤り検出装置は、プログラム作成部２１、ロジック変換部２２、変数フィルタリング部２３、ハッシュコード計算部２４、ＬＣＳ計算部２５及びロジック報告部２７を有してもよい。
【００３５】
先に、ユーザは、プログラム作成部２１を介して、ＩＥＣ６１１３１−３プログラミング言語を用いたプログラムをプログラミングする。
【００３６】
ＩＥＣ６１１３１−３プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部２２は、ユーザが前記プログラム作成部２１を利用してプログラミングしたＩＥＣ６１１３１−３プログラミング言語を文字列形態に変換する。
【００３７】
変数フィルタリング部２３は、ユーザの選択によりプログラムで用いている変数情報を除去するもので、ユーザが入力した変数の違いによって、ラング間の類似度が低くなることを防止するために、変数フィルタリング部２３で変数に関する影響を最小化するようにユーザが選択できる。
【００３８】
即ち、変数フィルタリング部２３を利用する場合、ユーザが入力した変数情報とは無関係に類似のユーザプログラムを検出することができ、変数フィルタリング部２３が変数に関する影響を最小化する過程については図４を参照して詳細に説明する。
【００３９】
ハッシュコード計算部２４は、前記ロジック変換部２２で文字列形態に変換されたＩＥＣ６１１３１−３プログラミング言語をＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに区分し、区分された各々のラングのハッシュコード（Hash Code）を計算した後、各々のハッシュコードを比較して同一ロジックを検出する。
【００４０】
ＬＣＳ計算部２５は、ＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに、ＬＣＳを計算した後、各々のラング間の類似度を判断するために、ＬＣＳアルゴリズムを用いて類似ロジックを検出する。
【００４１】
ロジック報告部２７は、ハッシュコードとＬＣＳを用いて、探し出した同一または類似のロジックに関する結果をユーザに報告する。即ち、ロジック報告部２７は、同じハッシュコードを持つロジックは、同一ロジックと報告し、前記ＬＣＳが、ユーザが予め設定した文字列の類似度閾値より大きい場合、類似ロジックと報告する。
【００４２】
図４は、図３に図示された変数フィルタリング部２３でプログラミング言語の変数をフィルタリングする過程を説明するための一例示図である。
【００４３】
図４を参照すると、同じキャパシタ（コンデンサ）をグラフィック形態で図示しており、同じキャパシタを各々変数Ａ、Ａ１、ａ及びａ１で表現している。即ち、同じキャパシタを四種類の変数で表現している。
【００４４】
従って、四つの同じキャパシタ及び各々の変数を文字（列）に変換すると、キャパシタは同じ文字（列）に変換されるが、変数は各々他の文字（列）に変換されて、同一ロジックで検出されることができるロジックが類似ロジックとして検出される問題が発生する。
【００４５】
従って、変数フィルタリング部２３が変数情報を除去することによって、同一ロジックを正確に探し出すことができる。
【００４６】
図５は、本発明に係るプログラミング言語誤り検出装置でユーザが文字列の類似度閾値を設定する一例を示した図である。
【００４７】
図５を参照すると、例えば、類似度を比較する文字列が各々ａｂｃｄｅ及びａｂｃｆｇだとすると、各々の文字列を構成するａｂが同一で、残りの文字が異なる場合（Ｌ１）を類似していると設定するか、または、ａｂｃが同一で、残りの文字が異なる場合（Ｌ２）を類似していると設定することができる。即ち、ユーザは、文字列の類似度閾値を、前記のように比較する文字列のうち２つの文字が同じ場合か、または、３つの文字が同じ場合を閾値として設定することができる。
【００４８】
仮に、ユーザが設定した文字列の類似度閾値によって、ユーザの望む類似ロジックが検出されなかったり、あまりにも多くのロジックが検出されたりする場合には、ユーザは、文字列の類似度の閾値を変更して、ユーザの望む類似ロジックを探し出すことができる。
【００４９】
文字列の類似度閾値の設定は、これに限定されることなく、閾値が他の方式で設定できることは自明である。
【００５０】
図６は、本発明の第３実施形態に係るプログラミング言語誤り検出装置のブロック構成を示した図である。
【００５１】
図６を参照すると、本発明に係るプログラミング言語誤り検出装置は、プログラム作成部２１、ロジック変換部２２、ハッシュコード計算部２４、ＬＣＳ計算部２５、結果判断部２６、ロジック報告部２７及び閾値入力部２８を有してもよい。
【００５２】
先に、ユーザは、プログラム作成部２１を介してＩＥＣ６１１３１−３プログラミング言語を用いたプログラムを作成する。
【００５３】
ＩＥＣ６１１３１−３プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部２２は、ユーザが前記プログラム作成部２１を介してプログラミングしたＩＥＣ６１１３１−３プログラミング言語を文字列形態に変換する。
【００５４】
ハッシュコード計算部２４は、前記ロジック変換部２２を介して文字列形態に変換されたＩＥＣ６１１３１−３プログラミング言語をＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに区分し、区分された各々のラングのハッシュコード（Hash Code）を計算する。
【００５５】
ＬＣＳ計算部２５は、前記ロジック変換部２２で文字列形態に変換されたＩＥＣ６１１３１−３プログラミング言語をＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに区分した後、区分された単位ごとにＬＣＳを計算する。
【００５６】
結果判断部２６は、各々のラングのハッシュコードを比較して同一ロジックか否かを判断し、各々のラングのＬＣＳと閾値入力部２８を介して設定された文字列の類似度閾値とを比較して類似ロジックか否かを判断する。即ち、同じハッシュコードを持つロジックは、同一ロジックと判断し、ＬＣＳが、ユーザが閾値入力部２８を介して予め設定した類似度閾値より大きい場合は、類似ロジックと判断する。
【００５７】
ロジック報告部２７は、前記結果判断部２６で探し出した同一または類似のロジックに関する判断結果をユーザに報告する。
【００５８】
しかし、類似ロジックが検出されない場合、または、あまりにも多くの類似ロジックが検出された場合、ユーザは、閾値入力部２８を介して、文字列の類似度閾値を変更することが可能で、結果判断部２６は、変更された文字列の類似度閾値及びＬＣＳアルゴリズムを用いて、ＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに類似ロジックを検出する。類似ロジックが検出された場合には、ロジック報告部２７が、検出された類似ロジックをユーザに報告する。
【００５９】
類似ロジックが検出されなかったり、あまりにも多くの類似ロジックが検出されたりした場合、ユーザは、再度閾値入力部２８を介して、文字列の類似度閾値を変更することができる。即ち、ユーザが文字列の類似度閾値を変更することを繰り返すことによって、自身が望む類似ロジックを検出することができる。
【００６０】
図７は、本発明の第４実施形態に係るプログラミング言語誤り検出装置のブロック構成を示した図であり、図７は、図６とは異なって、変数フィルタリング部２３をさらに有する。
【００６１】
図７を参照すると、本発明に係るプログラミング言語誤り検出装置は、プログラム作成部２１、ロジック変換部２２、変数フィルタリング部２３、ハッシュコード計算部２４、ＬＣＳ計算部２５、結果判断部２６、ロジック報告部２７及び閾値入力部２８を有してもよい。
【００６２】
先に、ユーザは、プログラム作成部２１を介してＩＥＣ６１１３１−３プログラミング言語を用いたプログラムをプログラミングする。
【００６３】
ＩＥＣ６１１３１−３プログラミング言語は、グラフィック形態の言語を用いており、ロジック変換部２２は、ユーザがプログラミングしたＩＥＣ６１１３１−３プログラミング言語を文字列形態に変換する。
【００６４】
変数フィルタリング部２３は、ユーザの選択によりプログラムで用いている変数情報を除去し、ユーザが入力した変数の違いによって、ラング間の類似度が低くなることを防止する。そして、変数フィルタリング部２３は、変数に対する影響を最小化するようにユーザが選択できるため、ユーザが入力した変数情報に影響を受けることなく、類似のユーザプログラムを検出することができる。
【００６５】
ハッシュコード計算部２４は、前記ロジック変換部２２で文字列形態に変換されたＩＥＣ６１１３１−３プログラミング言語をＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに区分した後、区分された各々のラングのハッシュコード（Hash Code）を計算する。
【００６６】
ＬＣＳ計算部２５は、前記ロジック変換部２２で文字列形態に変換されたＩＥＣ６１１３１−３プログラミング言語をＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに区分して単位ごとにＬＣＳを計算する。
【００６７】
結果判断部２６は、各々のラングのハッシュコードを比較して同一ロジックか否かを判断し、各々のラングのＬＣＳと閾値入力部２８を介してユーザが入力した文字列の類似度閾値とを比較して、類似ロジックか否かを判断する。即ち、同じハッシュコードを持つロジックは、同一ロジックと判断し、ＬＣＳが、ユーザが予め設定した類似度の閾値より大きい場合は、類似ロジックと判断する。
【００６８】
ロジック報告部２７は、前記結果判断部２６で探し出した同一または類似のロジックの判断結果をユーザに報告する。
【００６９】
しかし、類似ロジックが検出されない場合、または、あまりにも多くの類似ロジックが検出された場合、ユーザは、閾値入力部２８を介して、文字列の類似度閾値を変更することが可能で、結果判断部２６は、変更された文字列の類似度閾値及びＬＣＳアルゴリズムを用いて、ＩＥＣ６１１３１−３プログラミング言語の最小単位（ラング）ごとに類似ロジックを検出する。類似ロジックが検出された場合には、ロジック報告部２７が、検出された類似ロジックをユーザに報告する。
【００７０】
類似ロジックが検出されなかったり、あまりにも多くの類似ロジックが検出されたりした場合、ユーザは、再度閾値入力部２８を介して、文字列の類似度閾値を変更することができる。即ち、ユーザが文字列の類似度閾値を変更することを繰り返すことによって、自身が望む類似ロジックを検出することができる。
【００７１】
以上、本発明に係る実施形態が説明されたが、これらは例示的なものに過ぎず、当該分野で通常の知識を有する者ならば、これらから多様な変形及び均等な範囲の実施形態が可能である点を理解するであろう。従って、本発明の真の技術的保護範囲は、特許請求範囲によって定めるべきである。
【符号の説明】
【００７２】
２１    プログラム作成部
２２    ロジック変換部
２３    変数フィルタリング部
２４    ハッシュコード計算部
２５    ＬＣＳ計算部
２６    結果判断部
２７    ロジック報告部
２８    閾値入力部
【図１】
2014041617.tif 000003
【図２】
2014041617.tif 000004
【図３】
2014041617.tif 000005
【図４】
2014041617.tif 000006
【図５】
2014041617.tif 000007
【図６】
2014041617.tif 000008
【図７】
2014041617.tif 000009