JP2015099564A - Visual programming device and control method therefor - Google Patents
Visual programming device and control method therefor Download PDFInfo
- Publication number
- JP2015099564A JP2015099564A JP2013240253A JP2013240253A JP2015099564A JP 2015099564 A JP2015099564 A JP 2015099564A JP 2013240253 A JP2013240253 A JP 2013240253A JP 2013240253 A JP2013240253 A JP 2013240253A JP 2015099564 A JP2015099564 A JP 2015099564A
- Authority
- JP
- Japan
- Prior art keywords
- program
- parts
- class
- link
- partial
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明は、視覚プログラミングを支援する視覚プログラミング装置およびその制御方法に関するものである。 The present invention relates to a visual programming device that supports visual programming and a control method thereof.
種々のアルゴリズム(システム)を実現するプログラムの作成方法として、文字ベースのプログラミング方法に対し、グラフィカルな操作で部品を配置し、部品同士を接続することによってプログラミングを行う視覚プログラミング(ビジュアルプログラミング)が知られている。 As a method of creating a program that implements various algorithms (systems), visual programming (visual programming) is known, in which parts are arranged by graphical operations and connected by connecting them to a character-based programming method. It has been.
視覚プログラミングでは、表示画面上で”部品”をひとつひとつ配置し、部品同士を接続することによりプログラムを作成していく。そして、多くの視覚プログラミング方法がデータフローの考え方に基づいている。ここで、データフローとはデータの流れを意味しており、データがなんらかの処理により変異を行うことを基本とし、これを組み合わせることにより、アルゴリズムを実現する。 In visual programming, "parts" are arranged one by one on the display screen, and a program is created by connecting the parts together. And many visual programming methods are based on the idea of data flow. Here, the data flow means the flow of data, and the data is mutated by some processing, and the algorithm is realized by combining these.
ところで、作成する多くのプログラムで共通して使われる特定の部品の組合せが存在する。そこで、よく使われる部品あるいは部品の組合せ(これもプログラムである)を、プログラム作成時に、ユーザ(プログラム作成者)に提示し、選択させ、それを作成中のプログラムと統合することにより、プログラム開発効率を高めようとする試みがある。 By the way, there are combinations of specific parts that are commonly used in many programs to be created. Therefore, program development by presenting frequently used parts or combinations of parts (this is also a program) to the user (program creator) at the time of program creation, selecting it, and integrating it with the program being created. There are attempts to increase efficiency.
例えば、特許文献1では、2つの部品の未接続ポートと該ポート間の接続を通じたデータの流れを、ひとつまたは複数指定し、これらを満たすプログラムをデータベースより検索し、作成中のプログラムに統合する方法が開示されている。また、特許文献2では、1つの部品の未接続ポートを指定し、このポートに接続可能な部品を使用頻度順にデータベースより検索・提示し、ユーザに選択させ、選択部品を指定部品の指定ポートにリンクで接続する方法が開示されている。
For example, in
しかしながら、例えば、特許文献1の方法では、少なくとも2つの部品を配置・指定しなければならないという問題がある。また、データベースから検索されたプログラムの一部分を流用・統合したい場合には、別途、不要な部分を削除する手間がかかることになる。また、特許文献2の方法では、指定ポートに対し1つの部品を接続することしか行わないため、検索されたプログラムに複数の部品およびリンクが含まれていても、当該複数の部品およびリンク全体を利用できない。
However, for example, the method of
またいずれの方法においても、作成中のプログラムにおいて既に配置・接続を行った複数の部品・ポートおよびリンクを用いた、プログラムの検索・提示ができない。さらに、部品間の関係を明示的に指定しなければならない。 In any of the methods, it is not possible to search for and present a program using a plurality of parts / ports and links that have already been arranged / connected in the program being created. In addition, the relationship between parts must be explicitly specified.
本発明は上述の問題点に鑑みなされたものであり、視覚プログラミングにおいて、作成中プログラムに追加する流用プログラムをより効率的にデータベースから検索可能とする技術を提供することを目的とする。 The present invention has been made in view of the above-described problems, and an object of the present invention is to provide a technique capable of more efficiently searching a diversion program to be added to a program being created from a database in visual programming.
上述の問題点を解決するため、本発明に係る視覚プログラミング装置は以下の構成を備える。すなわち、複数の部品を視覚的に操作することによりプログラムを作成する視覚プログラミング装置であって、該視覚プログラミング装置は、それぞれが複数のクラス部品を接続することにより構成された複数のプログラム部品を記憶するデータベースと通信可能に構成されており、前記視覚プログラミング装置は、1以上のクラス部品から構成される作成中プログラムに対して、該作成中プログラムに含まれる1つのクラス部品における1つの入出力ポートの指定を受け付ける受付手段と、前記受付手段で指定された入出力ポートを有するクラス部品を含み、かつ、前記作業中プログラムのフルセット又はサブセットとなる1以上の部分プログラムを前記作成中プログラムから抽出する第1の抽出手段と、前記受付手段で指定された入出力ポートを有するクラス部品を含み、かつ、クラス部品の接続状態に関して前記第1の抽出手段により抽出された1以上の部分プログラムとの間で矛盾が存在しない1以上のプログラム部品を前記データベースから抽出する第2の抽出手段と、前記第2の抽出手段により抽出された1以上のプログラム部品を、前記作成中プログラムに流用するプログラム部品の候補として提示する提示手段と、を有する。 In order to solve the above-described problems, a visual programming device according to the present invention has the following configuration. That is, a visual programming device that creates a program by visually operating a plurality of components, the visual programming device storing a plurality of program components each configured by connecting a plurality of class components The visual programming device is configured to be communicable with a database to be created, and the visual programming device has one input / output port for one class component included in the program being created, with respect to the program being created composed of one or more class components. And receiving one or more partial programs that include a class part having an input / output port designated by the accepting means and that are a full set or a subset of the working program. First extracting means for performing input / output specified by the accepting means One or more program parts that include class parts having a class number and that have no contradiction with one or more partial programs extracted by the first extracting means regarding the connection state of the class parts are extracted from the database. And a presenting means for presenting one or more program parts extracted by the second extracting means as candidate program parts to be used for the program being created.
本発明によれば、視覚プログラミングにおいて、作成中プログラムに追加する流用プログラムをより効率的にデータベースから検索可能とする技術を提供することができる。 ADVANTAGE OF THE INVENTION According to this invention, the technique which makes it possible to search the diversion program added to the program under creation more efficiently from a database in visual programming can be provided.
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。 Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the drawings. The following embodiments are merely examples, and are not intended to limit the scope of the present invention.
(第1実施形態)
本発明に係る視覚プログラミングの第1実施形態として、情報処理装置100を例に挙げて以下に説明する。
(First embodiment)
As a first embodiment of visual programming according to the present invention, an
<1.前提技術>
まず、視覚プログラミングで用いられる用語である「部品」「ポート」「リンク」について簡単に説明する。
<1. Prerequisite technology>
First, the terms “component”, “port”, and “link” used in visual programming will be briefly described.
図1は、「部品」および「プログラム」を説明する図である。図1(a)は、視覚プログラミングで用いられる”部品(クラス部品)”の例を示している。また、図1(b)は、複数の部品を接続して構成された”プログラム(プログラム部品)”の例を示している。 FIG. 1 is a diagram for explaining “parts” and “programs”. FIG. 1A shows an example of “component (class component)” used in visual programming. FIG. 1B shows an example of a “program (program component)” configured by connecting a plurality of components.
図1(a)は部品の一例を示しており、”A1”は処理を表すクラスが”A”であり、それをインスタンス化したものが”A1”であることを表している。ここで”処理”とは数値の加減算や、ヒストグラム生成、画像の二値化、画像エッジ抽出、画像特徴抽出等、任意の処理であり得る。たとえば「Sobelフィルタ」処理であれば、入力画像から、水平方向勾配画像と垂直方向勾配画像を算出する処理である。 FIG. 1A shows an example of a component, and “A1” indicates that the class representing the process is “A”, and the instantiation of the class is “A1”. Here, “processing” may be any processing such as addition / subtraction of numerical values, histogram generation, image binarization, image edge extraction, image feature extraction, and the like. For example, the “Sobel filter” process is a process of calculating a horizontal gradient image and a vertical gradient image from an input image.
部品1に対するデータの入出力は、両側に付されたポート11、12、13を経由して行われる。入出力の数やデータ型はクラス(この場合は”A”)によって予め定められている。部品1の左側にあるポート11が入力ポートで、ここからデータが入力される。部品1によって処理されたデータは、右側にある出力ポート12、13から出力される。入力ポートあるいは出力ポートが複数ある場合、以下の説明においては、図において上側に記載されたポートから順に番号を付して呼ぶこととする。例えば、図1(a)の場合、出力ポート12は「出力ポート1」、出力ポート13は「出力ポート2」と呼ぶ。
Data input / output with respect to the
なお、クラスによって、各ポートの型(入出力データの型)が予め定められている。たとえば、前述の「Sobelフィルタ」処理の特定の実装においては、入力ポートの型(データ型)は「符号なし整数画像」であり、出力ポートの型はふたつとも「符号あり整数画像」となる。 Note that the type of each port (type of input / output data) is determined in advance by class. For example, in the specific implementation of the “Sobel filter” process described above, the input port type (data type) is “unsigned integer image”, and the output port types are both “signed integer image”.
すなわち、図1(a)の部品1は、処理(クラス)が”A”であり、入力ポートが1つ、出力ポートが2つあり、インスタンス化されたものが”A1”である部品を表している。なお、ポートの型は明示されていないが、クラス”A”によって予め定まっている。
That is, the
視覚プログラミングにおいては、視覚的に、このような部品の入出力ポート間を「リンク」によって接続することで”処理”と”データの流れ”を定義し、プログラムを作成していく。 In visual programming, a program is created by visually defining “processing” and “data flow” by connecting the input / output ports of such components by “links”.
図1(b)は3つの部品を接続して構成されたプログラムの一例を示している。部品B1の出力ポート1からの出力が部品A1の入力ポート1に入り、部品A1の出力ポート1の出力が部品C1の入力ポート2に入ることを表している。これらの接続関係はリンクを用いて表されており、データの流れる向き(出力ポートから入力ポートへ)に矢印が付されている。
FIG. 1B shows an example of a program configured by connecting three components. The output from the
上記の例に倣い、以下ではインスタンス名(たとえば”A1”)の最初の1文字(この場合は”A”)はクラスを表すものとして説明を行うが、表記規則はこれに限定されるものでは無い。たとえば、インスタンスからクラスを取得する方法(たとえばC++言語ではRTTI(Runtime Type Information)という機能グループが定義されている)を用いる等、クラスとインスタンスを独立して管理を行えばよい。 Following the above example, the following description will be made assuming that the first character (in this case, “A”) of the instance name (eg “A1”) represents a class, but the notation convention is not limited to this. No. For example, the class and the instance may be managed independently by using a method of acquiring the class from the instance (for example, a function group called RTTI (Runtime Type Information) is defined in the C ++ language).
また、部品に対するポートの左右位置による入出力ポートの別、リンクに付された矢印等の表記法は、本発明を説明するための一例に過ぎない。また「Sobelフィルタ」の入出力ポートの構成についてもあくまで例であり、「Sobelフィルタ」の実装によっては他の入出力ポートや、他のデータ型を用いる場合もある。 In addition, notation of input / output ports according to the left and right positions of the ports with respect to parts, arrows attached to links, and the like are merely examples for explaining the present invention. The configuration of the input / output port of the “Sobel filter” is merely an example, and other input / output ports and other data types may be used depending on the implementation of the “Sobel filter”.
<2.装置構成>
図28は、情報処理装置のハードウェア構成を示す図である。情報処理装置100は、バス101、CPU105、ROM102、RAM106、データベース(DB)104、入力インタフェース103、ディスプレイインタフェース107を含む。
<2. Device configuration>
FIG. 28 is a diagram illustrating a hardware configuration of the information processing apparatus. The
CPU105は、情報処理装置100の起動プログラム、オペレーティングシステム(OS)、各種の処理プログラムを実行する機能部である。バス101は、CPU105が他の機能部との間でデータを読み書きするための通信機能を提供する。ROM102は、情報処理装置100を起動するためのプログラムが記憶されている。例えば、情報処理装置100に電源が投入されるとROM102に保持されたプログラムがCPU105により読み出されて実行され、各機能部の初期化やOSの起動等を行う。RAM106は、CPU105が処理プログラムを実行する際のワークエリア、あるいは、データの一時保存を行う記憶部として機能する。ディスプレイインタフェース107は、情報処理装置100からの映像出力、例えば、各種グラフィカルユーザインタフェース(GUI)の表示に係る画像信号をディスプレイ120が処理可能な信号に変換し出力する。入力インタフェース103は、キーボード・マウス110からの電気信号をCPU105が処理可能な情報に変換する。
The
また、情報処理装置100には、入力インタフェース103を介してキーボード・マウス110等のユーザ入力を受け付ける入力装置が接続されている。なお、入力装置として、ペンあるいはタッチパネルを利用するよう構成しても良い。さらに、情報処理装置100には、ディスプレイインタフェース107を介して、操作画面を表示するディスプレイ120が接続されている。ディスプレイとしては、液晶ディスプレイ、プラズマディスプレイ、CRTディスプレイ等が利用可能である。なお、データベース(DB)104については、情報処理装置100と例えばネットワークを介して通信可能に接続された外部データベースであってもよい。
The
<3.装置の動作>
図2は、第1実施形態に係る情報処理装置の動作を説明するフローチャートである。具体的には、視覚プログラミング方法を実践する処理の流れの例を示している。特に、図2(a)は、データベース104にプログラムを登録する処理、図2(b)は、作成中のプログラムに流用プログラムを統合する処理である。
<3. Operation of the device>
FIG. 2 is a flowchart for explaining the operation of the information processing apparatus according to the first embodiment. Specifically, an example of the flow of processing for practicing the visual programming method is shown. In particular, FIG. 2A shows processing for registering a program in the
ユーザ(プログラム開発者)は、予めデータベース104に登録されたプログラムを、作成中のプログラムの一部として流用することにより、プログラム作成効率を上げる。そのため、データベースにはプログラムを予め登録しておく(ステップS101)必要がある。
A user (program developer) increases program creation efficiency by diverting a program registered in the
データベースへは、部品のクラスとポートの組合せを検索キーとして、プログラムそのものと当該プログラムが流用された回数(頻度情報)とを関連付けて登録する。なお検索キーとして指定したクラスに対応する部品を特定する情報は、検索結果のプログラムに含まれる。 In the database, a combination of a part class and a port is used as a search key, and the program itself and the number of times the program is used (frequency information) are associated and registered. Information for identifying a component corresponding to the class designated as the search key is included in the search result program.
検索キーとして指定する部品のクラスとポートの組合せに関しては、後述の部品選択ステップ(ステップS111)において説明する。なお、データベースは、既存の様々なタイプのものが利用可能である。 The combination of a component class and a port designated as a search key will be described in a component selection step (step S111) described later. Various existing types of databases can be used.
図3は、データベースに登録されたプログラムを例示的に示す図である。ここでは、例として、3つの検索キーに対応するプログラムのリストを詳細に表している。 FIG. 3 is a diagram exemplarily showing programs registered in the database. Here, as an example, a list of programs corresponding to three search keys is shown in detail.
最も左の列は「クラス”A”の出力ポート1」を検索キーとして検索される4つのプログラム(Program2_A11、Program3_A11、Program4_A21、Program1_A11)を表している。Program2_A11に注目すると、流用回数が4回(”used=”の右に示す数値)であり、検索キーのクラスに対応する部品はA1(部品の背景に網をかけている)、検索キーのポートは出力ポート1(黒塗りにしてある)である。
The leftmost column represents four programs (Program2_A11, Program3_A11, Program4_A21, Program1_A11) searched using “
次に、データベースに登録されたプログラムを、ユーザが作成中のプログラムに統合する手順を図2(b)を参照して説明する。 Next, a procedure for integrating the program registered in the database with the program being created by the user will be described with reference to FIG.
<部品選択ステップ(S111)>
ステップS111では、情報処理装置100は、作成中プログラム内における部品とポートの指定をユーザから受け付ける(受付手段)。図4は、ユーザが部品とポートを指定する動作を説明する図である。図4(a−1)はユーザが作成中のプログラムであり、クラス”A”の部品Axがひとつ配置してある(1以上のクラス部品から構成される作成中プログラム)。図では、白抜き矢印で表示されているマウスポインタを部品Axの出力ポート2に重ねる(マウスオーバーする)ことによって指定している。なお、部品とポートの指定方法は、指定ポートのマウスオーバーに限定されるものでは無い。例えば、指定ポートのマウスクリックやコンテクストメニューからの選択、キーボードによる入力など他の方法で指定してもよい。図4(b−1)、(c−1)、(d−1)、(e−1)はユーザ作成中プログラムの他の例を示している。いずれも図4(a−1)と同様、「部品Axの出力ポート2」を選択している。
<Part selection step (S111)>
In step S111, the
以降のステップでは、ステップS111で指定したポートに繋がる、あるいは指定したポートを核として流用プログラムを検索し作成中のプログラムに統合する。なお、ここでは部品およびポートを指定したが、部品のみを指定するようにしてもよい。この場合はステップS101では、部品のクラスを検索キーとしてプログラムと流用回数をデータベースへ登録する。 In the subsequent steps, the diversion program is searched with the designated port connected to the port designated in step S111 or the designated port as a core, and integrated into the program being created. Although the parts and ports are specified here, only the parts may be specified. In this case, in step S101, the program and the number of diversions are registered in the database using the part class as a search key.
<部分プログラム抽出ステップ(S112)>
ステップS112では、情報処理装置100は、ステップS111で受け付けた部品とポートを含むプログラム(以下、部分プログラムと呼ぶ)を抽出する(第1の抽出手段)。具体的には、作業中プログラムのフルセット又はサブセットとなる1以上の部分プログラムを抽出する。
<Partial program extraction step (S112)>
In step S112, the
図4(a−2)は、図4(a−1)から抽出した部分プログラムを、図4(b−2)は、図4(b−1)から抽出した部分プログラムを示している。また、図4(c−2)は、図4(c−1)から抽出した部分プログラムを、図4(d−2)は、図4(d−1)から抽出した部分プログラムを、図4(e−2)は、図4(e−1)から抽出した部分プログラムを、それぞれ示している。 4 (a-2) shows the partial program extracted from FIG. 4 (a-1), and FIG. 4 (b-2) shows the partial program extracted from FIG. 4 (b-1). 4 (c-2) shows the partial program extracted from FIG. 4 (c-1), FIG. 4 (d-2) shows the partial program extracted from FIG. 4 (d-1), and FIG. (E-2) shows partial programs extracted from FIG. 4 (e-1), respectively.
図4(a−1)の場合、作成中プログラムには部品Axのみが含まれており、かつ部品Axが指定されている。そのため部品Axのみを含むプログラム401が部分プログラムとして抽出される。また、図4(b−1)の場合は、指定部品Axと部品Cxがリンクによって繋がっているため、Axのみのプログラム411と、Cxとリンクを含むプログラム412の2つが部分プログラムとして抽出される。
In the case of FIG. 4A-1, the program being created includes only the part Ax, and the part Ax is designated. Therefore, the
リンクで繋がった先の部品から、さらにリンクが出ている場合の例が図4(c−1)である。この場合はプログラム421、422、423の3つが部分プログラムとして抽出される。図4(d−1)は複数のリンクが同一部品から出ている場合の例である。この場合は一方のリンク、他方のリンクと辿ったあとに、それらを組合せることにより、プログラム431、432、433、434の4つが部分プログラムとして抽出される。
FIG. 4C-1 shows an example of a case where a link is further provided from the parts connected by the link. In this case, three
図4(e−1)は図4(c−1)に部品Exを追加配置したものであるが、部品Exは部品Axとリンクを辿った接続関係を持たないため、部品Exを含むプログラムは抽出されず、図4(c−2)と同様な処理を経て、プログラム441、442、443の3つが部分プログラムとして抽出される。
FIG. 4 (e-1) is obtained by additionally arranging the part Ex in FIG. 4 (c-1). However, since the part Ex does not have a connection relationship that follows the link with the part Ax, the program including the part Ex is Three
このようにリンクを辿っていくことにより、すべての部分プログラムを抽出できる。なお、他の方法、例えば、すべての部分プログラム候補を総当たりで調べることにより、部分プログラムを抽出するよう構成しても良い。総当たりによる抽出は、計算量は増えるが、アルゴリズムはシンプルになるという点で有利である。 By tracing the links in this way, all partial programs can be extracted. In addition, you may comprise so that a partial program may be extracted by investigating all the partial program candidates by other methods, for example, brute force. Round-robin extraction is advantageous in that it increases the amount of computation but simplifies the algorithm.
図5は、部分プログラム抽出ステップ(S112)の動作を説明するフローチャートである。以下では、例として、図4(c−1)のプログラムの部分プログラムを抽出する場合について説明する。 FIG. 5 is a flowchart for explaining the operation of the partial program extraction step (S112). Below, the case where the partial program of the program of FIG.4 (c-1) is extracted is demonstrated as an example.
ステップS1121では、情報処理装置100は、リンク対応表を作成する。リンク対応表とは、あるリンクを追加して部分プログラムを拡張した場合に、そのリンクを追加することにより新たに部分プログラムの拡張に用いることができるようになるリンクを表形式にとして生成したものである。
In step S1121, the
図6は、リンク対応表を説明する図である。図6(a)は図4(c−1)に対応したリンク対応表を示す。最小の部分プログラムはユーザが指示を行った部品Axである。この状況で、部分プログラムを拡張するのに使えるリンクは、部品Axに接続しているリンクであるLinkCA4202であり、これが1行目に示されている。また、LinkBC4201を追加して、部分プログラムを拡張した場合に、新たに部分プログラムを拡張するのに使えるリンクは、LinkBC4201の両端の部品に接続しているリンクであり、この場合は、LinkCA4202となり、これが2行目に示されている。同様に、LinkCA4202を追加して、部分プログラムを拡張した場合に、新たに部分プログラムを拡張するのに使えるリンクは、LinkCA4202の両端の部品に接続しているリンクである、LinkBC4201となり、これが2行目に示されている。このように、リンク対応表は、対象とするプログラムに含まれるリンクの数+1の行(表題行を除く)から構成される。 FIG. 6 is a diagram for explaining the link correspondence table. FIG. 6A shows a link correspondence table corresponding to FIG. The minimum partial program is a part Ax that is instructed by the user. In this situation, the link that can be used to extend the partial program is LinkCA4202, which is a link connected to the part Ax, and is shown in the first line. In addition, when LinkBC4201 is added and the partial program is expanded, the link that can be used to newly expand the partial program is a link that is connected to the components at both ends of LinkBC4201, and in this case, LinkCA4202 This is shown on the second line. Similarly, when LinkCA4202 is added and the partial program is expanded, the link that can be used to newly expand the partial program is LinkBC4201, which is a link connected to the components at both ends of LinkCA4202, and this is two lines. Shown in the eyes. As described above, the link correspondence table is composed of the number of links included in the target program plus one line (excluding the title line).
ステップS1122では、情報処理装置100は、すべての部分プログラムをリンクの組合せとして列挙する。部分プログラムは、ユーザが指示した部品からリンクを辿って拡張したものであるから、リンクの数が”0”のものも含めて、リンクの組合せをすべて列挙する。これにより、すべての候補(以下、部分プログラム候補と呼ぶ)を列挙することができる。なお、リンクの数が”0”の部分プログラムとは、ユーザが指定した部品のみからなるものである。
In step S1122, the
図6(b)は、図4(c−1)のプログラムから抽出される4つの部分プログラム候補を示している。次に抽出された4つの部分プログラム候補の各々に対して、部分プログラムであるかどうかのチェックを行う。 FIG. 6B shows four partial program candidates extracted from the program of FIG. Next, it is checked whether each of the four extracted partial program candidates is a partial program.
ステップS1123では、情報処理装置100は、リンク集合の初期化を行う。リンク集合とは部分プログラム候補を構成するリンクの集合のうち、未検証のリンクの集合である。すなわち、リンク集合が空集合となった時点で、チェック中のプログラムは、部分プログラムであると確認できたことになる。
In step S1123, the
まず、プログラム421についてチェックを行う。リンク集合の初期値として、ステップS1122で列挙したリンクの組合せの集合を用いる。図6(b)を参照すると、プログラム421に対するリンク集合の初期値は空集合φとなる。
First, the
ステップS1124では、情報処理装置100は、許容リンク集合の初期化を行う。許容リンク集合とは、部分プログラム候補を構成するリンクが、許容リンク集合に含まれるものであれば、部分プログラムであると認められるリンクの集合である。許容リンク集合の初期値として、リンク対応表の「リンク」がない行の許容リンクを用いる。これは図6(a)を参照して、{LinkCA}となる。
In step S1124, the
ステップS1125では、情報処理装置100は、リンク集合に含まれるリンクのうち、許容リンクに含まれるものを抽出する。これには、リンク集合と許容リンク集合の積集合をとればよい。この結果を、検証済リンク集合とする。
In step S1125, the
検証済リンク集合 = リンク集合 ∩ 許容リンク集合
その結果、検証済リンク集合は空集合φとなる。
Verified link set = link set 許 容 allowable link set As a result, the verified link set becomes an empty set φ.
ステップS1126では、情報処理装置100は、リンク集合の更新を行う。リンク集合から検証済リンク集合を引いた差集合が、未検証なリンクの集合となる。
In step S1126, the
リンク集合 = リンク集合 \ 検証済リンク集合
その後、リンク集合が空集合か否かがチェックされ、空集合である場合、ステップS1127で部分プログラムであるとの決定がなされる。つまり、前述したとおり、リンク集合が空集合であるとは、部分プログラム候補を構成するすべてのリンクが検証済ということであるので、チェック中のプログラムは部分プログラムということになる。上述のようにプログラム421に対するリンク集合の初期値は空集合φであるためステップS1127に進む。
Link set = link set \ verified link set Thereafter, whether or not the link set is an empty set is checked, and if it is an empty set, it is determined in step S1127 that it is a partial program. That is, as described above, the fact that the link set is an empty set means that all the links constituting the partial program candidate have been verified, so the program being checked is a partial program. As described above, since the initial value of the link set for the
ステップS1127では、情報処理装置100は、プログラム421を部分プログラムとして決定する。ここで決定された部分プログラムは後述のステップS1129で出力されることになる。以上の処理により、プログラム421についてのチェックが終了する。
In step S1127, the
図6(b)の順に従って、次に、プログラム424についてチェックを行う。ステップS1123では、リンク集合が、ステップS1124で許容リンク集合が次のように初期化される。
Next, the
リンク集合 ={LinkBC}
許容リンク集合 ={LinkCA}
ステップS1125では、検証済リンク集合が次のように算出される。
Link set = {LinkBC}
Allowable link set = {LinkCA}
In step S1125, the verified link set is calculated as follows.
検証済リンク集合 ={LinkBC}∩{LinkCA}
= φ
ステップS1126では、リンク集合が次のように更新される。
Verified link set = {LinkBC} ∩ {LinkCA}
= Φ
In step S1126, the link set is updated as follows.
リンク集合 ={LinkBC}\φ
={LinkBC}
ここでリンク集合は空集合ではないため、ステップS1126によってリンク集合に変化があったか否かをチェックする。リンク集合が変化しないということは、リンク集合には部分プログラムとして条件を満たすリンクが一本もないということを示しており、これは注目しているプログラムが部分プログラムではないことを意味する。プログラム424については、ステップS1126の前後で、リンク集合は{LinkBC}のまま変化していない。以上の処理により、プログラム424についてのチェックが終了する。つまり、プログラム424は部分プログラムではないとして処理される。
Link set = {LinkBC} \ φ
= {LinkBC}
Here, since the link set is not an empty set, it is checked in step S1126 whether or not the link set has changed. The fact that the link set does not change indicates that there is no link that satisfies the condition as a partial program in the link set, which means that the program being noticed is not a partial program. For the
図6(b)の順に従って、次に、プログラム422についてチェックを行う。ステップS1123でリンク集合が、ステップS1124で許容リンク集合が次のように初期化される。
Next, the
リンク集合 ={LinkCA}
許容リンク集合 ={LinkCA}
ステップS1125で検証済リンク集合が次のように算出される。
Link set = {LinkCA}
Allowable link set = {LinkCA}
In step S1125, the verified link set is calculated as follows.
検証済リンク集合 ={LinkCA}∩{LinkCA}
={LinkCA}
ステップS1126でリンク集合が次のように更新される。
Verified link set = {LinkCA} ∩ {LinkCA}
= {LinkCA}
In step S1126, the link set is updated as follows.
リンク集合 ={LinkCA}\{LinkCA}
= φ
ここでリンク集合が空集合であるので、ステップS1127で、プログラム422を部分プログラムとして決定する。
Link set = {LinkCA} \ {LinkCA}
= Φ
Since the link set is an empty set, the
同様に、図6(b)の順に従って、次に、プログラム423についてチェックを行う。ステップS1123でリンク集合が、ステップS1124で許容リンク集合が次のように初期化される。
Similarly, the
リンク集合 ={LinkBC,LinkCA}
許容リンク集合 ={LinkCA}
ステップS1125で検証済リンク集合が次のように算出される。
Link set = {LinkBC, LinkCA}
Allowable link set = {LinkCA}
In step S1125, the verified link set is calculated as follows.
検証済リンク集合 ={LinkBC,LinkCA}∩{LinkCA}
={LinkCA}
ステップS1126でリンク集合が次のように更新される。
Verified link set = {LinkBC, LinkCA} ∩ {LinkCA}
= {LinkCA}
In step S1126, the link set is updated as follows.
リンク集合 ={LinkBC,LinkCA}\{LinkCA}
={LinkBC}
リンク集合は空集合ではなく、かつ、ステップS1126の前後でリンク集合は変化しているため、ステップS1128で許容リンク集合を更新する。検証済リンク集合は新たに拡張された部分プログラムと考えられるため、このリンクによってさらに部分プログラムの拡張ができるようになったリンクを追加する。これには、検証済リンクの各要素リンクについてリンク対応表の対応する許容リンクを求め、それらの和集合と、許容リンク集合の和集合を求めればよい。
Link set = {LinkBC, LinkCA} \ {LinkCA}
= {LinkBC}
Since the link set is not an empty set, and the link set has changed before and after step S1126, the allowable link set is updated in step S1128. Since the verified link set is considered to be a newly expanded partial program, a link that can further expand the partial program is added by this link. For this purpose, a corresponding allowable link in the link correspondence table may be obtained for each element link of the verified link, and a union thereof and a union of the allowable link set may be obtained.
検証済リンク集合の要素リンクLinkCAに対応する許容リンクを図6(a)のリンク対応表から引くと、LinkBCが得られる。検証済リンク集合の他の要素リンクはないため、許容リンク集合は以下のように更新される。もし検証済リンク集合の他の要素リンクがあった場合は、各々についてリンク対応表から許容リンクを求め、それらの和集合をとればよい。 When the allowable link corresponding to the element link LinkCA of the verified link set is subtracted from the link correspondence table of FIG. 6A, LinkBC is obtained. Since there are no other element links in the verified link set, the allowed link set is updated as follows. If there are other element links in the verified link set, an allowable link is obtained from the link correspondence table for each, and the union thereof is taken.
許容リンク集合 ={LinkCA}∪{LinkBC}
={LinkBC,LinkCA}
許容リンク集合を更新したら、再びステップS1125からの処理を行う。
Allowed link set = {LinkCA} ∪ {LinkBC}
= {LinkBC, LinkCA}
When the allowable link set is updated, the processing from step S1125 is performed again.
ステップS1125で検証済リンク集合が次のように算出される。 In step S1125, the verified link set is calculated as follows.
検証済リンク集合 ={LinkBC}∩{LinkBC,LinkCA}
={LinkBC}
ステップS1126でリンク集合が次のように更新される。
Verified link set = {LinkBC} ∩ {LinkBC, LinkCA}
= {LinkBC}
In step S1126, the link set is updated as follows.
リンク集合 ={LinkBC}\{LinkBC}
= φ
ここでリンク集合が空集合となったので、ステップS1127でプログラム423を部分プログラムとして決定する。
Link set = {LinkBC} \ {LinkBC}
= Φ
Here, since the link set becomes an empty set, the
以上で、4つの部分プログラム候補のチェックが終了する。そのため、ステップS1129に進み、ステップS1127で決定された全ての部分プログラムを出力する。ここでは、プログラム421、422、423の3つが部分プログラムとして抽出される。このようにして、ステップS112の処理が終了する。
This completes the check of the four partial program candidates. Therefore, the process proceeds to step S1129, and all partial programs determined in step S1127 are output. Here, three
<流用プログラム候補抽出ステップ(S113)>
ステップS113では、情報処理装置100は、作成中プログラムに流用・統合する流用プログラムの候補を抽出する(第2の抽出手段)。図7は、流用プログラム候補抽出ステップ(S113)の動作を説明するフローチャートである。
<Diversion program candidate extraction step (S113)>
In step S113, the
ステップS1131では、情報処理装置100は、データベースから候補プログラムを検索する。ここでは、ユーザの作成中プログラムが図4(b−1)の場合を例にとり、詳細に説明する。図4(b−1)の場合、「クラス”A”の部品の出力ポート2」で検索を行うと、6つの候補プログラムが検索される。
In step S1131, the
図8は、流用プログラム候補抽出ステップにおける動作を説明する図である。図8(a)は、ステップS1131で検索される6つの候補プログラムを示している。後のステップでは、このうちのひとつを選択し、作成中プログラムに流用する。なお、図8(a)では、説明をわかりやすくするため、後に説明する優先度(この段階では流用回数と同じ)の高い順に候補プログラムを整列しているが、整列していなくてもよい。 FIG. 8 is a diagram for explaining the operation in the diversion program candidate extraction step. FIG. 8A shows six candidate programs searched in step S1131. In a later step, one of these is selected and used for the program being created. In FIG. 8A, for easy understanding, the candidate programs are arranged in descending order of priority (which is the same as the number of diversions at this stage) which will be described later, but they may not be arranged.
次に検索された全ての候補プログラムの各々について、流用可能か否かをチェックする。プログラムの流用の可否は、作成中のプログラムの一部が候補プログラムの一部と同じ構造(同型)を含んでいるか否かで判断する。同じ構造を含んでいる場合、候補プログラムの残りの構造を作成中プログラムに反映することで、流用・統合がなされる。 Next, it is checked whether each of all retrieved candidate programs can be used. Whether or not the program can be used is determined by whether or not a part of the program being created includes the same structure (the same type) as a part of the candidate program. When the same structure is included, the remaining structure of the candidate program is reflected in the program being created, thereby diverting and integrating.
そのため、候補プログラムごとに、部分プログラム抽出ステップS112で抽出された各々の部分プログラムとの組合せをチェックする。つまり、候補プログラムと部分プログラムの1対1の組合せごとに、流用の可否をチェックしていく。ここでは、候補プログラムとして、「クラス”A”の部品の出力ポート2」を核とする6つの候補プログラムのうち、まず、Program5_A12を選択した場合について説明する。
Therefore, the combination with each partial program extracted in the partial program extraction step S112 is checked for each candidate program. That is, the applicability of the diversion is checked for each one-to-one combination of the candidate program and the partial program. Here, a case will be described in which Program5_A12 is first selected from among six candidate programs having “class“ A ”
ステップS1132では、情報処理装置100は、個々の部分プログラムとの組合せをチェックするのに先立ち、一時レコードをクリアする。一時レコードとは、処理中の情報を一時的に保持しておくもので、優先度、部分プログラム、部品間対応のフィールドを持つ。なお、”優先度”はステップS1134および流用プログラム選択ステップS114で、”部品間対応”はステップS1133の説明の際に、併せて説明する。
In step S1132, the
なお、詳しくは後述するが、流用プログラム候補抽出ステップS113の最後で上記フィールドに加えて流用プログラム候補を加えた流用プログラムレコードを用いる。そのため、ここでは一時レコードに流用プログラムフィールドを更に有するものとして説明を行う。 Although details will be described later, a diversion program record in which a diversion program candidate is added to the above field at the end of the diversion program candidate extraction step S113 is used. For this reason, the following description will be made assuming that the temporary record further has a diversion program field.
一時レコードのクリアは、各フィールドをクリアすることによって行う。ここでは、流用プログラムフィールドをProgram5_A12、優先度フィールドを”0”(またはそれ以下の値)とし、部分プログラムフィールドを「なし」、部品間対応フィールドを「なし」としておく。 The temporary record is cleared by clearing each field. Here, the diverted program field is Program5_A12, the priority field is “0” (or a value less than that), the partial program field is “none”, and the inter-part correspondence field is “none”.
ここでは、図4(b−2)を参照して、まず、部分プログラム411を選択する。
Here, referring to FIG. 4B-2, first, the
ステップS1133では、情報処理装置100は、候補プログラムが部分プログラムと同型のプログラムを包含するか否かをチェックする。ここで”同型”とは、部品のクラスや部品間のリンクによる接続状態が同一のことを表すものとする。
In step S1133, the
ただし、部分プログラムと候補プログラムは、別個のプログラムであるため、部品のクラスが同じであってもインスタンスが異なる。そのため、候補プログラムの流用可否は、部品のインスタンスそのものの比較ではなく、部品のクラスの比較、および部品のインスタンス間の接続状態の比較で判断する。そのため、候補プログラムと部分プログラム間の、部品インスタンスの対応関係を用いるとよい。 However, since the partial program and the candidate program are separate programs, the instances are different even if the parts class is the same. Therefore, the applicability of the candidate program is determined not by comparing the component instances themselves but by comparing the component classes and comparing the connection states between the component instances. For this reason, it is preferable to use the correspondence relationship between the component instances between the candidate program and the partial program.
候補プログラムProgram5_A12と部分プログラム411においては、AxとA1が対応する。これは、前述のとおり、検索キーとなるクラス”A”に対応する部品がA1であることが、データベースの検索結果(部品の背景に網をかけている)から得られるためである。
In the candidate program Program5_A12 and the
図8(b)は、候補プログラムと部分プログラムの部品間対応示している。部分プログラム411はAxのみから構成されるため、以上で部分プログラム411内のすべての部品と、候補プログラムProgram5_A12内の部品との対応が取れたことになる。これは、部分プログラム411と同型のプログラムが候補プログラムに包含されることを表している。
FIG. 8B shows the correspondence between the parts of the candidate program and the partial program. Since the
ステップS1134では、情報処理装置100は、候補プログラムに対する優先度を算出する(優先度算出手段)。優先度とは後に説明するように、流用プログラム選択ステップS114にて、候補プログラムをユーザに提示する際に用いる指標である。ここでは、優先度は、流用プログラムが過去に流用された流用回数(頻度情報)と、部分プログラムに含まれるリンクの数を用いて算出する。
In step S1134, the
つまり、流用回数が多いプログラムほど再度流用される可能性が高いと考えられるためである。なお、流用回数は、プログラム候補をデータベースから検索する際に得られる。また、複雑な接続状態の構造を持ったプログラムが、異なるプログラムの一部となる可能性は低いと考えられるため、複雑度の指標として部分プログラムに含まれるリンクの数を用いているのである。 In other words, it is considered that a program with a larger number of diversions is likely to be diverted again. The number of times of diversion is obtained when searching for program candidates from the database. In addition, since it is considered unlikely that a program having a complicated connection state structure is a part of a different program, the number of links included in the partial program is used as an index of complexity.
流用回数とリンクの数とに基づく優先度の算出方法は様々な方法が考えられるが、ここでは、次のような式を用いることにする。 Various methods of calculating the priority based on the number of times of diversion and the number of links can be considered. Here, the following formula is used.
優先度 = 流用回数×第1重み + 部分プログラムに含まれるリンクの数×第2重み
ここでは、第1重みを”1”、第2重みを”10000”とするが、これらの値に限定されるものではない。
Priority = Number of diversions x first weight + number of links included in partial program x second weight Here, the first weight is "1" and the second weight is "10000", but these values are limited. It is not something.
部分プログラム411の場合、リンクの数が”0”なので、優先度の値は候補プログラムProgram5_A12の流用回数である”4”となる。
In the case of the
なお、優先度の他の計算式の例としては、流用プログラムとどれだけ一致しているかを考慮した次のようなものでもよい。いずれにせよ、流用回数と部分プログラムに含まれるリンクの数を用いて優先度を算出する。 In addition, as an example of another calculation formula of priority, the following may be used in consideration of how much the program matches the diversion program. In any case, the priority is calculated using the number of diversions and the number of links included in the partial program.
優先度 = 流用回数×第1重み + (部分プログラムに含まれるリンクの数/流用プログラム候補に含まれるリンクの数)×第2重み
ステップS1135では、情報処理装置100は、算出した優先度の値が一時レコードの優先度フィールドの値よりも大きいかどうかをチェックする。ここでは一時レコードの優先度フィールドの値は”0”であるため、ステップS1136に進む。もし優先度の値が一時レコードの優先度フィールドの値より大きくなければ、ステップS1136の実行をスキップする。
Priority = number of diversions × first weight + (number of links included in partial program / number of links included in diversion program candidate) × second weight In step S1135, the
ステップS1136では、情報処理装置100は、一時レコードの、優先度フィールドを”4”、部分プログラムフィールドを”プログラム411”、部品間対応フィールドを”Ax⇔A1”に更新する。
In step S1136, the
ここで、部分プログラム411に関する処理は終了し、次の部分プログラム412について、ステップS1133からの処理を繰り返す。
Here, the processing related to the
ステップS1133では、情報処理装置100は、候候補プログラムProgram5_A12が、部分プログラム412と同型のプログラムを包含するか否かをチェックする。これにはさきほどと同様に候補プログラムと部分プログラム間の、部品インスタンスの対応関係を用いる。
In step S1133, the
まずAxとA1が対応する。図8(c−1)は、この時点で部品間対応を示している。次に、図4(b−2)のプログラム412を参照して、Axからリンクを辿ると、Axの入力ポート1とCxの出力ポート1が接続されている。そこで、対応する部品A1の入力ポート1からリンクを辿ると、C1の出力ポート1と接続されている。図8(c−1)の部品間対応を参照すると、CxとC1との間にはまだ部品間対応はない。しかしともにクラス”C”であり、該リンクはどちらの部品にも出力ポート1で接続している。そこで、これらの部品間に対応を作る。図8(c−2)は、この時点での部品間対応を示している。
First, Ax and A1 correspond. FIG. 8C-1 shows the correspondence between components at this time. Next, referring to the
以上で、部分プログラム412内すべての部品の対応がとれ、なおかつすべてのリンクを辿った。これを以て、候補プログラムProgram5_A12は、部分プログラム412と同型のプログラムを包含していると、判断できる。なお、ステップS1133における包含関係をチェックする際にリンクを辿る方法に関しては、任意の手法が利用可能であるが、例えば、Axをルートノードとするツリー探索アルゴリズムを用いることができる。ツリー探索アルゴリズムは、一般によく知られた技術であるので、詳細については割愛する。
As described above, all the parts in the
ステップS1134では、情報処理装置100は、優先度を算出する。候補プログラムProgram5_A12の流用回数は”4”、部分プログラム412に含まれるリンクの数は”1”であるので、前述の式を用いると、優先度は”10004”と算出される。
In step S1134, the
ステップS1135では、情報処理装置100は、算出した優先度と一時レコードの優先度とを比較する。ここでは、一時レコードの優先度フィールドである”4”と比べると、優先度の”10004”の方が大きい。そのため、ステップS1136で、一時レコードの、優先度フィールドを”10004”、部分プログラムフィールドを”プログラム412”、部品間対応フィールドを”Ax⇔A1”および”Cx⇔C1”に更新する。
In step S1135, the
ここで、部分プログラム412に関する処理は終了し、図4(b−2)の全ての部分プログラムの処理が終了したため、ステップS1138に進む。
Here, the processing related to the
ステップS1138では、情報処理装置100は、一時レコードを複製して出力レコード(流用プログラムレコード)を生成する。生成した出力レコードは後にステップS1139にて、流用プログラム候補抽出ステップS113の出力に含める処理を行う。図8(d)は、生成した出力レコードを示している。
In step S1138, the
以上により、候補プログラムProgram5_A12に関する処理が終わったので、次の候補プログラムProgram3_A12について、ステップS1132からの処理を繰り返す。処理の内容の多くは候補プログラムProgram5_A12に関する処理と同様であるため、以下では新たに説明が必要な箇所を中心に説明する。 As described above, since the processing related to the candidate program Program5_A12 is completed, the processing from step S1132 is repeated for the next candidate program Program3_A12. Since most of the contents of the processing are the same as the processing related to the candidate program Program5_A12, the following description will focus on points that require new explanation.
まず、部分プログラム411に対して処理を行うが、これは候補プログラムProgram5_A12に関する処理と同様であるので省略する。次に部分プログラム412について、ステップS1133の処理を行う。すなわち、候補プログラムProgram3_A12が部分プログラム412と同型のプログラムを包含するか否かをチェックする。
First, the process is performed on the
プログラム412において、Axの入力ポート1にリンクが接続しているが、候補プログラムProgram3_A12の対応する部品A1にはリンクがない。そこで、「包含しない」という結果を得る。
In the
次にステップS1137で矛盾するリンクがあるか否かを調べる。矛盾するリンクとは、部分プログラム内のある部品(注目部品)に注目した際に、以下の3つの条件を満たすリンクを意味する。 Next, it is checked in step S1137 if there is a conflicting link. The contradictory link means a link that satisfies the following three conditions when attention is paid to a certain part (target part) in the partial program.
(1)対応する部品(対応部品)が候補プログラム内に存在する。 (1) Corresponding parts (corresponding parts) exist in the candidate program.
(2)注目部品のあるポート(注目ポート)に接続しているリンク(注目リンク)に対応する、対応部品の対応ポート(対応ポート)に接続しているリンク(対応リンク)が存在する。 (2) There is a link (corresponding link) connected to the corresponding port (corresponding port) of the corresponding component corresponding to the link (focusing link) connected to the port (focusing port) with the target component.
(3)注目リンクの注目ポート側ではない部品・ポートと、対応リンクの対応ポート側ではない部品・ポート同士が対応しない。 (3) Parts / ports that are not the target port side of the target link do not correspond to parts / ports that are not the corresponding port side of the corresponding link.
図9は、「矛盾するリンク」を説明する図である。図9(a)は、矛盾するリンクが無い場合の例を、図9(b)は、後述する矛盾するリンクが有る場合の例を、それぞれ示している。 FIG. 9 is a diagram for explaining “inconsistent links”. FIG. 9A shows an example when there are no conflicting links, and FIG. 9B shows an example when there are conflicting links described later.
ここでは、まず部分プログラム412の部品Ax(注目部品)と、対応する候補プログラムProgram3_A12の部品A1(対応部品)を見つける。次に、Axとつながるリンクを探すと、Axの入力ポート1と、Cxの出力ポート1との間を接続しているリンク(注目リンク)が見つかる。対応部品A1の入力ポート1を調べると、接続しているリンク(対応リンク)がない。つまり、ここでは矛盾するリンクはない。ここで部分プログラム412に関する処理は終了した。以上ですべての部分プログラムの処理が終了したため、ステップS1138に進む。
Here, the part Ax (part of interest) of the
このようにして、候補プログラムProgram4_A12、Program4_A22、Program6_A22に関する処理を同様に進めていく。候補プログラムProgram6_A22と部分プログラム412に関する処理においては、ステップS1133でのチェックの結果、候補プログラムは部分プログラムを包含しないため、ステップS1137にて矛盾するリンクのチェックを行う。
In this way, the processes related to the candidate programs Program4_A12, Program4_A22, and Program6_A22 are similarly advanced. In the processing related to the candidate program Program6_A22 and the
まず部分プログラム412の部品Ax(注目部品)と、対応する候補プログラムProgram6_A22の部品A2(対応部品)を見つける。この対応は前述したようにデータベースからの検索結果に含まれており、図8(a)のProgram6_A22で網をかけてある(部品A2)。次にAxとつながるリンクを探すと、Axの入力ポート1(注目ポート)と、Cxの出力ポート1との間を接続しているリンク(注目リンク)が見つかる。さらに、対応部品A2の入力ポート1(対応ポート)を調べると、リンク(対応リンク)が見つかる。
First, a part Ax (part of interest) of the
ここで注目リンクの注目ポート側ではないポートを見ると、「Cxの出力ポート1」であるが、対応リンクの対応ポート側ではないポートは「E1の出力ポート1」である。
Here, looking at the port that is not the target port side of the target link, it is “
CxとE1間には対応関係はなく、部品のクラスもクラス”C”とクラス”E”であるため、対応関係を新たに持たせることもできない。これをもって、注目リンクが矛盾するリンクであると判断できる。 Since there is no correspondence between Cx and E1, and the component classes are also class “C” and class “E”, it is not possible to provide a new correspondence. With this, it can be determined that the target link is a conflicting link.
矛盾するリンクがあった場合、ステップS1138を実行せずに、次の候補プログラムに関する処理を行う。そのため、ステップS113における出力には、候補プログラムProgram6_A22に関するレコードは含まれないことになる。 If there is a conflicting link, the process regarding the next candidate program is performed without executing step S1138. Therefore, the output in step S113 does not include a record related to the candidate program Program6_A22.
なお、ステップS1137で矛盾するリンクであると判断した場合、候補プログラム自体を候補から外すのではなく、該部分プログラムの処理を中断した上で、該候補プログラムの優先度を落として、処理を続行してもよい。 If it is determined in step S1137 that the link is inconsistent, the candidate program itself is not removed from the candidate, but the processing of the partial program is interrupted and the priority of the candidate program is lowered to continue the processing. May be.
上記のように処理を進めていき、すべての候補プログラムに関する処理が完了すると、ステップS1138では、生成された出力レコード(流用プログラムレコード)を全て出力し(ステップS1139)、ステップS113を完了する。 The process proceeds as described above, and when the processes related to all candidate programs are completed, in step S1138, all generated output records (diversion program records) are output (step S1139), and step S113 is completed.
図10は、流用プログラム候補抽出ステップによって出力される流用プログラムレコードの例を示す図である。なお、図10では流用プログラムレコードを優先度順に整列しているが、整列していなくてもよい。 FIG. 10 is a diagram illustrating an example of a diversion program record output by the diversion program candidate extraction step. In FIG. 10, the diverted program records are arranged in order of priority, but they may not be arranged.
<流用プログラム選択ステップ(S114)>
ステップS114では、情報処理装置100は、ステップ113で抽出した流用プログラム候補を、優先度の高い順にユーザに提示し(提示手段)、ユーザからの選択を受け付ける(選択受付手段)。優先度の高い順にユーザに提示することにより、ユーザはより効率的に流用するプログラムを選択することが可能となる。
<Diversion program selection step (S114)>
In step S114, the
図11は、流用プログラム候補のユーザへの提示及びユーザによる選択の動作を説明する図である。ここでは、選択ポートから吹き出し状に広がるウィンドウ1101が表示され、流用プログラム候補11031,11032,11033,11034,11035はこのウィンドウ内に表示される。
FIG. 11 is a diagram for explaining operations of presenting a diversion program candidate to a user and selection by the user. Here, a
流用プログラム候補内の部品のうち、対応部品は背景を網に、部品間対応がとれた部品は枠を太くして、作成中プログラム内の部品との対応をわかりやすく表示している。たとえば、流用プログラム候補11032は部品A2の背景を網に、部品A2およびC1の枠を太く表示している。また、流用プログラム候補は優先度の高いものから順に並べられており、マウスポインタ1102によってマウスオーバーされた流用プログラム候補11032は、大きさを大きく、境界線を太くして、他の候補よりも目立つように表示する。なお、プログラムの選択は、マウスオーバーしている流用プログラム候補の上で、マウスボタンのクリックを行うことによってなされ得る。
Of the parts in the diversion program candidate, the corresponding parts are displayed with a background in the net, and the parts that can be dealt with between parts are thickened to show the correspondence with the parts in the program being created in an easy-to-understand manner. For example, the
なお、整列された流用プログラム候補のユーザへの具体的な提示方法および選択方法は様々な形態が利用可能である。図12は、流用プログラム候補のユーザへの提示及びユーザによる選択の他の動作を説明する図である。 Various forms can be used as a specific presentation method and selection method of the arranged diversion program candidates to the user. FIG. 12 is a diagram for explaining another operation of presenting a diversion program candidate to a user and selection by the user.
図12において、部品AxおよびCxと、Ax・Cx間のリンクはユーザが作成したプログラムに含まれるものである。部品間対応がとれた部品を太枠で表示している。破線で示した部品およびリンクは、流用プログラム候補を適用した場合に新規に作成されることを示している。 In FIG. 12, parts Ax and Cx and the link between Ax and Cx are included in the program created by the user. The parts for which correspondence between parts is taken are displayed with a thick frame. Parts and links indicated by broken lines indicate that they are newly created when a diversion program candidate is applied.
流用プログラム候補のその他の情報は、バナー1201に表示される。たとえば図12(a)では、流用プログラム候補の名前が”Program4_A22”であり、全5候補中の2番目の候補であり、優先度が10002であることを示している。図12(b)では、それぞれ”Program3_A12”、3番目の候補、優先度”3”であることを示している。流用プログラム候補の切り替えは、例えばユーザによるマウスのホイール操作によってなされ得、選択はクリックでなされ得る。ステップS114で、流用プログラム候補からひとつ、流用プログラムを選択すると、ステップS115の部品間対応の編集に進む。
Other information of the diversion program candidate is displayed on the
<部品間対応編集ステップ(S115)>
ステップS115では、情報処理装置100は、ステップ114で選択した流用プログラムに対して、ユーザからの部品間対応の編集を受け付ける。図13は、部品間対応編集ステップにおける編集操作の例を説明する図である。また、図14は、部品間対応編集ステップにおける動作を説明する図である。なお、ステップS115を実現するユーザインターフェースは図13で示したものに限定されるものではない。
<Parts Correspondence Editing Step (S115)>
In step S <b> 115, the
たとえばユーザの作成中プログラムが図13(a)のようであった場合に、流用プログラム選択ステップS114で、流用プログラムとしてProgram4_A22(図13(b))を選択すると、図14(a)の流用プログラムレコードが出力される。図13(c)は、図14(a)の流用プログラムレコードをユーザの作成中プログラム画面に反映したものに相当する。 For example, if the program being created by the user is as shown in FIG. 13 (a), if Program4_A22 (FIG. 13 (b)) is selected as the diversion program in the diversion program selection step S114, the diversion program shown in FIG. 14 (a). A record is output. FIG. 13C corresponds to the diverted program record of FIG. 14A reflected on the program screen being created by the user.
図13(c)において、部品Cxの入力ポート2とリンクで繋がる部品として、新規に作成する部品B1が提案されている。しかし、ユーザは、新たに部品を作成するのではなく、ユーザの作成中プログラム内にある既存部品Bxを使用したいとする。こうした場合は、図13(d)に示すように、新規作成部品B1をマウスでドラッグし、部品Bxの上でドロップする。このように新たに部品との対応が指示された場合には、図14(b)に示すように部品間対応を更新する。
In FIG. 13C, a newly created part B1 is proposed as a part connected to the
図13(e)は、部品間対応の更新に伴って、ユーザの作成中プログラム画面を更新した例を示している。ここでは、流用プログラム4_A22内の部品B1の対応がとれたため、新規部品として提案した部品B1は、ユーザの画面上から削除されている。提案された新規作成部品から既存部品に対応を変更するのではなく、既存部品から既存部品、あるいは既存部品から新規作成部品に対応を変更する場合も同様である。 FIG. 13E shows an example in which the program screen being created by the user is updated in accordance with the update of correspondence between components. Here, since the correspondence of the part B1 in the diversion program 4_A22 has been taken, the part B1 proposed as a new part has been deleted from the user's screen. The same applies to the case where the correspondence is not changed from the proposed newly created part to the existing part, but is changed from the existing part to the existing part or from the existing part to the newly created part.
たとえば、図13(e)のように、既存部品(Bx)に対応付けられている部品を、他の既存部品、あるいは新規作成部品に対応付けることを考える。この場合は、対応済み既存部品(Bx)をドラッグすると新規作成部品(B1)が現れるので(図13(d))、これを所望の既存部品上、または部品のないところにドロップする。もし部品のない場所にドロップした場合は、新規作成部品(B1)が現れる(図13(c))。 For example, as shown in FIG. 13E, it is assumed that a part associated with an existing part (Bx) is associated with another existing part or a newly created part. In this case, when the corresponding existing part (Bx) is dragged, a newly created part (B1) appears (FIG. 13 (d)), and is dropped on the desired existing part or where there is no part. If it is dropped in a place where there is no part, a newly created part (B1) appears (FIG. 13 (c)).
なお、部品間対応の編集の終了は、たとえば、ユーザによるマウスボタンのダブルクリックにより指示されうる。もちろん、他の指示方法を用いてもよい。 Note that the end of the editing corresponding to the part can be instructed, for example, by double clicking the mouse button by the user. Of course, other instruction methods may be used.
<流用プログラム更新ステップ(S116)>
ステップS116では、情報処理装置100は、流用プログラムの流用回数を1増やしてデータベースを更新する。流用プログラムとしてProgram4_A22を選択した場合は、流用回数の”2”を1増やし”3”としてデータベースを更新する。
<Diversion Program Update Step (S116)>
In step S116, the
<独立部品生成・対応ステップ(S117)>
ステップS117では、情報処理装置100は、ユーザの作成プログラム内に部品を生成(インスタンス化)し、流用プログラム内の部品と対応をとる。たとえば図14(b)のような部品間対応が与えられた場合を考える。この場合、図13(e)のように、部品A1,C2,F1の対応が取れていない。
<Independent parts generation / corresponding step (S117)>
In step S117, the
そこで部品A1(クラス=”A”),C2(クラス=”C”),F1(クラス=”F”)に対応する部品Ay,Cy,Fxをユーザ作成プログラム内にインスタンス化する。さらに生成した部品と流用プログラム内の部品との対応をとる。これにより、流用プログラム内のすべての部品が、ユーザの作成プログラム内の部品と対応がとれることになる。 Therefore, the parts Ay, Cy, and Fx corresponding to the parts A1 (class = “A”), C2 (class = “C”), and F1 (class = “F”) are instantiated in the user-created program. Furthermore, the correspondence between the generated part and the part in the diversion program is taken. As a result, all the parts in the diversion program can correspond to the parts in the user's creation program.
図14(c)に更新された部品間対応を示す。この部品間対応を前述のユーザインターフェース方法を用いて提示した状態を図13(f)に示す。流用プログラムProgram4_A22(図13(b))のすべての部品が、ユーザの作成中プログラム内の部品と対応がとれていることがわかる。 FIG. 14C shows the updated correspondence between parts. FIG. 13F shows a state in which this correspondence between parts is presented using the above-described user interface method. It can be seen that all the parts of the diversion program Program4_A22 (FIG. 13B) correspond to the parts in the program being created by the user.
<統合ステップ(S118)>
ステップS118では、情報処理装置100は、流用プログラム内のすべてのリンクを、ユーザの作成中プログラム内の部品間に反映させる。流用プログラム内のリンクは、対応するリンクがユーザの作成中プログラム内にあるかないかの2つの場合に分けて考えることができる。
<Integration step (S118)>
In step S118, the
対応するリンクがあるもの(図13(f)の太実線のリンク)は、特に何もしなくてよい。一方、対応するリンクがないもの(図13(f)の破線リンク)は、対応する部品の対応ポート間に新たなリンクを生成する。 There is no particular need to do anything that has a corresponding link (thick solid line link in FIG. 13F). On the other hand, a link having no corresponding link (broken line link in FIG. 13 (f)) generates a new link between corresponding ports of corresponding components.
以上により流用プログラムが、ユーザの作成中プログラムに統合(反映)されることになる。図13(g)は、統合後のユーザの作成中プログラムを示している。 Thus, the diverted program is integrated (reflected) into the program being created by the user. FIG. 13G shows a program being created by the user after integration.
以上説明したとおり第1実施形態によれば、視覚プログラミングにおいて、より適切な流用プログラムをユーザに提示することが可能となる。特に、2つ以上の部品を配置・指定する必要なく、流用プログラムをユーザに提示することが可能となる。 As described above, according to the first embodiment, a more appropriate diversion program can be presented to the user in visual programming. In particular, it is possible to present a diversion program to the user without having to place and specify two or more parts.
なお、各ステップで用いるデータに依存関係がない場合は、図2(b)に示した実行順序に限定されることは無い。たとえば、流用プログラム更新(ステップS116)の前に独立部品生成・対応(ステップS117)を実行するよう構成しても良い。 In addition, when there is no dependence relationship in the data used at each step, it is not limited to the execution order shown in FIG. For example, the configuration may be such that independent component generation / response (step S117) is executed before the diversion program update (step S116).
(第2実施形態)
第2実施形態では、「部品は置いたが、まだリンクを生成していない」という状況に対処可能とする形態について説明する。すなわち、第1実施形態の部分プログラム抽出(ステップS112)においては、ユーザが指定した部品からリンクを辿り、部分プログラムを抽出する。そのため、ユーザがプログラムの作成中に遭遇する「部品は置いたが、まだリンクを生成していない」という状況には対処できない。
(Second Embodiment)
In the second embodiment, a description will be given of a mode in which it is possible to cope with a situation where “parts have been placed but links have not yet been generated”. That is, in the partial program extraction (step S112) of the first embodiment, the partial program is extracted by following the link from the part specified by the user. For this reason, the situation that the user encounters during the creation of the program “the part has been placed but the link has not yet been generated” cannot be dealt with.
図15は、第2実施形態に係る情報処理装置の動作を説明するフローチャートである。当該フローチャートは、上述の状況に対処すべく、図2(b)の手順に対して後述する部分プログラム拡張ステップ(S121)を追加したものである。また、図16は、部分プログラム拡張ステップ(S121)の動作を説明するフローチャートである。更に、図17は、部分プログラム拡張ステップにおける動作を説明する図である。ここで、図17(a)は、ユーザの作成中プログラムを示し、図17(b)は、部品間対応候補を例示的に示している。 FIG. 15 is a flowchart for explaining the operation of the information processing apparatus according to the second embodiment. In the flowchart, a partial program extension step (S121) described later is added to the procedure of FIG. FIG. 16 is a flowchart for explaining the operation of the partial program extension step (S121). Further, FIG. 17 is a diagram for explaining the operation in the partial program extension step. Here, FIG. 17A shows a program being created by the user, and FIG. 17B exemplarily shows an inter-part correspondence candidate.
<部分プログラム拡張ステップ(S121)>
以下の説明では、ステップS113において図10に示す5つの流用プログラムレコード1001、1002、1003、1004、1005が出力される場合について説明する。ステップS121では、ここで得られた各流用プログラムレコードに対して順番に処理をしていく。
<Partial program extension step (S121)>
In the following description, a case where the five
まず流用プログラムレコード1001に対して処理を行う。ステップS1211では、情報処理装置100は、各流用プログラムレコードに対して最初に対応候補部品を抽出する。流用プログラムレコード1001には部品間対応がとれた部品が記載されているが、追加で部品間対応をとる候補の部品を抽出する。ここでは、流用プログラム候補は、流用プログラムレコード1001の流用プログラムフィールドを参照して、Program5_A12である。また、流用プログラム候補内で部品間対応がとれていない部品は、Program5_A12内の部品A1、C1、F1のうち、流用プログラムレコード1001の部品間対応に現れない、F1(クラス”F”)である。
First, the diverted
そのため、作成中プログラム(図17(a))内で部品間対応がとれていない部品(Bx,Ay,Cy)のうち、クラス”F”の部品を探すことになる。しかしそのような部品は存在しないため、流用プログラムレコード1001に対する処理は終了し、次の流用プログラムレコード1002に対する処理を行う。
For this reason, a part of class “F” is searched for from parts (Bx, Ay, Cy) that do not correspond to each other in the program being created (FIG. 17A). However, since such a part does not exist, the process for the diverted
流用プログラム候補はProgram4_A22であり、流用プログラム候補内で部品間対応がとれていない部品はA1,B1,C2,F1の4つある。そこで作成中プログラム内で部品間対応がとれていない部品のうち、クラス”A”、クラス”B”、クラス”C”、クラス”F”に該当する部品を探し、部品間対応候補とする(図17(b))。 The diversion program candidate is Program4_A22, and there are four parts A1, B1, C2, and F1 in the diversion program candidate that do not correspond to each other. Therefore, from among the parts that are not compatible with each other in the program being created, search for parts corresponding to class “A”, class “B”, class “C”, and class “F” and make them inter-part correspondence candidates ( FIG. 17B).
ステップS1212では、情報処理装置100は、部分プログラム412内の部品の、リンクが接続されていないポート(未接続ポート)に対する部分プログラム候補を抽出する。具体的には、当該未接続ポートから、部品間対応候補の部品の未接続ポートに対して、仮にリンク(仮リンク)で接続したものを部分プログラム候補とする。ただし、仮リンクは矛盾しないものとする。
In step S <b> 1212, the
図18は、抽出された部分プログラム候補の例を示す図である。なお、破線のリンクが仮リンクである(仮接続設定手段)。さらに他の部分プログラム候補についても同様に、仮リンクを用いて部分プログラム候補を抽出していく。こうしてすべての部分プログラム候補を抽出する。もし、部分プログラム候補がひとつも抽出できなかった場合には、流用プログラムレコード1002に対する処理は終了し、次の流用プログラムレコード1003に対する処理を行う。
FIG. 18 is a diagram illustrating an example of the extracted partial program candidates. The broken link is a temporary link (temporary connection setting means). Further, for other partial program candidates, partial program candidates are similarly extracted using temporary links. In this way, all partial program candidates are extracted. If no partial program candidate can be extracted, the process for the diverted program record 1002 ends, and the process for the next diverted
以下のステップS1213以降では、得られた部分プログラム候補の各々と流用プログラム候補Program4_A22との組合せから優先度を算出し、最も優先度の高い部分プログラム候補で流用プログラムレコード1002を更新する。これらの一連の処理はステップS113(図7)とほぼ同様であるため、ここでは異なる部分を中心に説明する。 In step S1213 and subsequent steps, the priority is calculated from the combination of each obtained partial program candidate and the diverted program candidate Program4_A22, and the diverted program record 1002 is updated with the partial program candidate having the highest priority. Since a series of these processes is almost the same as that in step S113 (FIG. 7), different portions will be mainly described here.
ステップS1213では、情報処理装置100は、一時レコードを流用プログラムレコード1002で初期化する。ステップS1132では基準となる部分プログラムが「無い」状態であったため、一時レコードをクリアしたが、ステップS1213では、流用プログラムレコード1002の部分プログラムを基準とする。以下では個々の部分プログラム候補について、流用プログラム候補Program4_A22との組合せにおける優先度が次々とチェックされる。
In step S1213, the
まず、一つ目の部分プログラム候補1801が選択される。ステップS1214では、情報処理装置100は、ステップS1133と同様に部分プログラム候補が流用プログラム候補に包含されるかどうかをチェックする。この際、仮リンクは通常のリンクと同様なものとして、包含関係をチェックする。包含関係のチェックの具体的手順は、前述のステップS1133と同様であるので省略する。包含関係チェックの結果、「包含する」と判断された場合、ステップS1215で優先度を算出する。もし「包含しない」と判断した場合は、次のプログラム候補を選択し、ステップS1214に進む。
First, the first
ステップS1215では、情報処理装置100は、ステップS1134と同様に優先度を算出する。ただし、優先度の算出には、たとえば次のような、仮リンクも考慮したものを用いる。
In step S1215, the
優先度 = 流用回数×第1重み + 部分プログラム候補に含まれるリンクの数×第2重み + 部分プログラム候補に含まれる仮リンクの数×第3重み
流用プログラム候補抽出ステップS113で算出する優先度との一貫性を保つため、ここでは第1重み=”1”、第2重み=”10000”、第3重み=”100”とする。ただし、ここで示した式および重みの値に限定されるものでは無い。ここでは、優先度を求める式により、優先度=”10102”と算出される。
Priority = number of diversions × first weight + number of links included in partial program candidates × second weight + number of temporary links included in partial program candidates × third weight Priority calculated in diversion program candidate extraction step S113 In order to maintain consistency, the first weight = “1”, the second weight = “10000”, and the third weight = “100”. However, it is not limited to the formulas and weight values shown here. Here, the priority = “10102” is calculated by the formula for obtaining the priority.
ステップS1216では、情報処理装置100は、算出した優先度と一時レコードの優先度フィールドを比較する。これはステップS1135と同様である。その結果、優先度の値”10102”は一時レコードの優先度フィールドの値”10002”よりも大きい。そのため、ステップS1217では、情報処理装置100は、一時レコードの優先度フィールドを”10102”に更新する。同様に、部分プログラムフィールドを部分プログラム候補1801、部品間対応フィールドを「Ax⇔A2」と「Cx⇔C1」と「Cy⇔C2」に更新する。なおステップS1217の処理はステップS1136と同様である。もしステップS1135で優先度が一時レコードの優先度フィールドよりも大きくない、と判断された場合には、ステップS1217の更新処理は行わない。
In step S1216, the
以上の処理により部分プログラム候補1801に対する処理が終了する。そのため、次の部分プログラム候補1802の処理(ステップS1214〜S1217)を行う。部分プログラム候補の処理は既に説明したとおりであるので省略する。全ての部分プログラム候補(1801〜1813)に対して、ステップS1214〜S1217の処理を行う。
With the above processing, the processing for the
図19は、部分プログラム拡張ステップの詳細動作を説明する図である。図19(a)において「部分プログラム候補」列はどの部分プログラム候補に対する処理を行っているかを示している。また、包含判断(S1214)、優先度(S1215)、優先度判断(S1216)の各列は各ステップでの結果を表す。また「一時レコード更新(S1217)」の各列は、各処理を終えた時点での一時レコードのフィールドの値である。なお、図19(a)において”↑”はステップS1217が実行されなかったことを示す。 FIG. 19 is a diagram for explaining the detailed operation of the partial program extension step. In FIG. 19A, the “partial program candidate” column indicates which partial program candidate is being processed. In addition, each column of inclusion determination (S1214), priority (S1215), and priority determination (S1216) represents a result at each step. Each column of “temporary record update (S1217)” is a field value of the temporary record at the time when each processing is completed. In FIG. 19A, “↑” indicates that step S1217 has not been executed.
以上、すべての部分プログラム候補の処理を終えた時点で、一時レコードの優先度フィールドは10302、部分プログラムフィールドは1812となっていることがわかる。 As described above, when all the partial program candidates have been processed, the priority field of the temporary record is 10302, and the partial program field is 1812.
ステップS1218では、情報処理装置100は、処理対象の流用プログラムレコード1002を一時レコードで更新する。更新された流用プログラムレコード1002を図19(b)に示す。流用プログラムレコード1002の処理を終了し、次の流用プログラムレコード1003の処理も同様に行う。こうしてすべての流用プログラムレコードに対して処理を終えたら、ステップS121の処理を終了する。なお、ステップS1218において、一時レコードを複製して部分プログラム拡張ステップ119の出力に追加するよう構成しても良い。
In step S1218, the
以上説明したとおり第2実施形態によれば、誤った部分プログラムの拡張により本来必要な部分プログラムが候補から外れることを防ぐことができる。そのため「部品は置いたが、まだリンクを生成していない」という状況に対処することが可能となる。 As described above, according to the second embodiment, it is possible to prevent an originally required partial program from being excluded from candidates due to an erroneous extension of a partial program. Therefore, it is possible to cope with a situation where “parts have been placed but no link has been generated yet”.
(第3実施形態)
第3実施形態では、部品間のデータの流れが「原則的な流れ」に逆行するか否かを併せて考慮する形態について説明する。
(Third embodiment)
In the third embodiment, a mode will be described in which whether or not the data flow between the components is reverse to the “principal flow” is also considered.
すなわち、第2実施形態では流用プログラム候補内の未対応の部品に対応する部品をユーザの作成中のプログラム中から探し、部分プログラムを拡張した。しかし、たとえば先に部品を多数並べたあとで、プログラムの流用を行おうとした場合には、目的とする流用プログラム候補とは無関係な部品を用いて部分プログラムを拡張してしまう。その結果、目的とする流用プログラム候補の優先順位が低くなってしまい、流用作業自体が億劫になってしまうという問題が発生しうる。また、不要に流用プログラム候補の数が多くなり、処理負荷が非常に高くなった結果、流用プログラム候補の提示に時間がかかったり、過負荷によって処理続行が不可能になったりして、プログラム作成作業そのものに支障が出てしまう、という問題がある。 That is, in the second embodiment, a part program corresponding to an unsupported part in the diversion program candidate is searched from the program being created by the user, and the partial program is expanded. However, for example, when trying to divert a program after arranging a number of parts first, the partial program is extended using parts unrelated to the intended diversion program candidate. As a result, the priority of the target diversion program candidate is lowered, and there is a problem that the diversion work itself becomes expensive. In addition, the number of diverted program candidates increases unnecessarily, resulting in a very high processing load. As a result, it may take time to present diverted program candidates or it may become impossible to continue processing due to overload, creating a program. There is a problem that the work itself is disturbed.
そこで、第3実施形態では、具体的には、部品間のデータの流れが「原則的な流れ」に逆行する部分プログラムは候補から外すか、流用プログラム候補との間で算出される優先度を下げる。 Therefore, in the third embodiment, specifically, a partial program in which the data flow between components goes against the “principal flow” is excluded from the candidates, or the priority calculated with the diversion program candidates is set. Lower.
図20は、動作の説明において、「データの原則的な流れ」を説明する図である。たとえば、図20(a)のようなプログラムを作成する際に、図20(b−1)のように部品Ax,Cxを平面上に配置することはあっても、図20(b−2)のように配置することは稀である。そこで図20(b−2)のように、仮リンクのデータの流れがデータの原則的な流れに逆行するような場合、その仮リンクを含む部分プログラム候補をステップS1212の出力から除く。 FIG. 20 is a diagram for explaining “the principle flow of data” in the description of the operation. For example, when creating a program as shown in FIG. 20 (a), parts Ax and Cx may be arranged on a plane as shown in FIG. 20 (b-1). It is rare to arrange like this. Therefore, as shown in FIG. 20B-2, when the data flow of the temporary link goes against the principle flow of data, the partial program candidates including the temporary link are excluded from the output of step S1212.
すなわち、図1(a)で説明したように、ここで説明に用いている部品は、左側に入力ポート、右側に出力ポートが配置される。入力ポートのデータが、処理によって何らかの変換が施されて出力ポートに現れると考えると、部品内ではデータは左から右に流れている。このような部品を用いてプログラムを作成する場合、多くのケースで左から右にデータが流れるように部品を配置する。この左から右への「原則的」なデータの流れに逆らうような部品配置はプログラムの見通しを悪くすると考えられる。 That is, as described with reference to FIG. 1A, the components used in the description are arranged with an input port on the left side and an output port on the right side. If the data of the input port is considered to appear at the output port after undergoing some conversion by processing, the data flows from the left to the right in the part. When creating a program using such components, the components are arranged so that data flows from left to right in many cases. Component placement that goes against this "principal" data flow from left to right is thought to worsen the outlook for the program.
データの流れの方向は、ステップS1212で部分プログラム候補を出力する際に、仮リンクの終点の水平座標から、始点の水平座標を減じた値(d_port)の符号を調べることにより決定可能である。そして、座標差d_portが負の場合には部分プログラム候補としないようにすればよい。 The direction of data flow can be determined by examining the sign of a value (d_port) obtained by subtracting the horizontal coordinate of the start point from the horizontal coordinate of the end point of the temporary link when the partial program candidate is output in step S1212. If the coordinate difference d_port is negative, the partial program candidate may not be used.
ただし、「データの原則的な流れに逆行する」とは、必ずしも「(図において)データが左方向に流れる」こととは一致しない。図20(d)は、「データの原則的な流れ」を示す他の例を示す図である。ここでは、部品A1,A2,A3に対応するユーザの作成中のプログラム内の部品はプログラム作成画面内で垂直方向に並べても「データの原則的な流れに逆行する」わけではない。リンク211、212に限ってはデータが左に流れても構わないのである。
However, “reversing the principle flow of data” does not necessarily mean that “data flows in the left direction (in the figure)”. FIG. 20D is a diagram showing another example of “the principle flow of data”. Here, even if the parts in the program being created by the user corresponding to the parts A1, A2, and A3 are arranged in the vertical direction on the program creation screen, they do not “reverse the principle flow of data”. For the
こうした場合に対処するには、上述のステップS1212への追加処理に変えて、たとえばステップS1214の処理を変更する。ステップS1214では、部分プログラム候補が流用プログラム候補に包含されるかどうかをチェックするが、その際、右方向に流れている流用プログラム候補内のリンクに対応する仮リンクが左方向に流れている場合に、「包含しない」とすればよい。すなわち流用プログラム候補内で左方向に流れているリンクに関しては、仮リンクの方向をチェックしないよう制御する。 In order to deal with such a case, for example, the process of step S1214 is changed instead of the process of addition to step S1212 described above. In step S1214, it is checked whether or not the partial program candidate is included in the diversion program candidate. At this time, if a temporary link corresponding to the link in the diversion program candidate flowing in the right direction flows in the left direction. And “do not include”. That is, for the link flowing in the left direction in the diversion program candidate, control is performed so that the direction of the temporary link is not checked.
なお「右方向に流れているリンク」とは、終点の水平方向座標から始点の水平方向座標を減じた値(座標位置の差)が正の値となるリンクのことである。また「左方向に流れているリンク」とは、座標差が負の値となるリンクのことである。 The “link flowing in the right direction” is a link in which a value obtained by subtracting the horizontal coordinate of the start point from the horizontal coordinate of the end point (difference in coordinate position) becomes a positive value. The “link flowing in the left direction” is a link having a negative coordinate difference.
たとえば、図20(d)の流用プログラムに部分プログラムが包含されるかどうかをチェックする場合、リンク211、212の2つのリンクに関しては、対応する仮リンクの方向によって「包含しない」と判断することはしない。しかし他のリンクに対応する仮リンクの場合、左向きに流れる仮リンクが一つでもあった場合には、「包含しない」と判断する。
For example, when checking whether or not the partial program is included in the diverted program in FIG. 20D, it is determined that the two
なお、ステップS1215で優先度を調整するよう構成してもよい。たとえば、図20(c)のd_portの値が負であった場合、その値に重み(所定の正の値)を乗じたものを優先度に加える。こうすることで、レイアウトの都合で仮リンクが少し左側に流れてしまった場合であっても、部分プログラム候補が除外または優先度を大きく下げることはない。一方で大きく左側に流れている仮リンクは優先度を大きく下げるため、流用プログラム候補と無関係な部品が部分プログラム候補に含まれてしまう可能性を低く抑えられる。 Note that the priority may be adjusted in step S1215. For example, when the value of d_port in FIG. 20C is negative, a value obtained by multiplying the value by a weight (predetermined positive value) is added to the priority. In this way, even if the temporary link flows slightly to the left due to layout reasons, the partial program candidates are not excluded or the priority is not greatly lowered. On the other hand, since the priority of the temporary link flowing largely to the left is greatly lowered, the possibility that a part unrelated to the diverted program candidate is included in the partial program candidate can be suppressed to a low level.
なお、たとえば「逆行仮リンクの数が2あるいは所定の値以上の場合に、部分プログラム候補から除外する」よう構成しても良い。 For example, the configuration may be such that “excluded from the partial program candidates when the number of retrograde temporary links is two or more than a predetermined value”.
なお、上述の説明では図1(a)で示したような、部品を流れるデータが左から右のものを想定して説明したが、部品の上側に入力ポートを、下側に出力ポートを配置する表記法もよく用いられる。この場合は上記説明において「左」を「上」に、「右」を「下」に読み替えればよい。 In the above description, as shown in FIG. 1A, it is assumed that the data flowing through the component is from left to right. However, the input port is arranged above the component, and the output port is arranged below. The notation is also often used. In this case, in the above description, “left” may be read as “up” and “right” as “down”.
以上説明したとおり第3実施形態によれば、部品間のデータの流れが「原則的な流れ」に逆行する部分プログラムを候補から外すか、流用プログラム候補との間で算出される優先度を下げる。これにより、より適切な流用プログラムを提示することが可能となる。 As described above, according to the third embodiment, a partial program whose data flow between components goes against the “principal flow” is excluded from the candidates, or the priority calculated with the diversion program candidates is lowered. . This makes it possible to present a more appropriate diversion program.
(第4実施形態)
第4実施形態では、予めデータベースに登録されているプログラムの一部分のみを流用する実施形態について説明する。第1実施形態に従ってProgram4_A22を流用プログラムとして流用・統合したあとに、部品A1および部品B1に対応する部品を削除することも出来る。ただし、不要な部品を削除しなければならない、という問題に加え、本来の流用目的プログラム2201ではないプログラム(Program4_A22)の優先度を上げてしまう、という問題がある。
(Fourth embodiment)
In the fourth embodiment, an embodiment in which only a part of a program registered in the database in advance is used will be described. After diverting and integrating Program4_A22 as a diversion program according to the first embodiment, the parts corresponding to the parts A1 and B1 can be deleted. However, in addition to the problem that unnecessary parts must be deleted, there is a problem that the priority of a program (Program4_A22) that is not the original
図21は、流用プログラムの部分プログラムを説明する図である。たとえば、Program4_A22は何度か流用したために、データベースに登録されている。しかし、ユーザが流用したいのはProgram4_A22の一部分を構成する部分プログラム2201であるとする。
FIG. 21 is a diagram for explaining a partial program of the diversion program. For example, Program4_A22 is registered in the database because it has been used several times. However, it is assumed that the user wants to use the
そこで、第4実施形態では、流用プログラムProgram4_A22の部分プログラム2201を新たに流用プログラムとし、さらに次回以降にプログラム2201を流用プログラム候補として選択可能になるよう、プログラム2201をデータベースに登録する。
Therefore, in the fourth embodiment, the
図22は、第4実施形態に係る情報処理装置の動作を説明するフローチャートである。当該フローチャートは、図2(b)の処理の流れにこれらのステップを加えた処理の流れをに示す図である。なお、図27に示すように、第2実施形態(図2(b))に対して上述のS131及びS132を追加するよう構成しても良い。 FIG. 22 is a flowchart for explaining the operation of the information processing apparatus according to the fourth embodiment. The flowchart is a diagram showing a process flow obtained by adding these steps to the process flow of FIG. In addition, as shown in FIG. 27, you may comprise so that above-mentioned S131 and S132 may be added with respect to 2nd Embodiment (FIG.2 (b)).
<流用プログラム編集ステップ(S131)>
ステップS131では、情報処理装置100は、流用プログラム選択ステップS114で選択された流用プログラムの部分プログラムを新たな流用プログラムとする。ステップS114で、流用プログラムProgram4_A22を選択した状態が図13(c)であることは既に述べた。この状態でユーザは部分プログラム2201に相当する部分を指定する。たとえば、マウスを用いて前記部分プログラムに相当する部分に含まれる部品をクリックする。
<Diverted program editing step (S131)>
In step S131, the
図23は、流用プログラム編集ステップにおける編集操作の例を説明する図である。図23(a)は、部品の周辺の色を変えることで指定した部品がわかるように、ユーザに提示した例である。図23(b)は、他の指定方法として、流用プログラムProgram4_A22を表示し、その上で部分プログラムの範囲を、マウスを用いて閉領域で指定する例をに示す。これらいずれの方法、または他の方法によって流用プログラムProgram4_A22内の部分プログラム2201を指定する。
FIG. 23 is a diagram for explaining an example of the editing operation in the diversion program editing step. FIG. 23A is an example presented to the user so that the specified part can be understood by changing the color around the part. FIG. 23B shows an example in which the diversion program Program4_A22 is displayed as another designation method, and the range of the partial program is designated in the closed region using the mouse. The
図24は、流用プログラム編集ステップの動作を説明する図である。ここで、図24(a)は、流用プログラム編集による修正前の一時プログラムを例示的に示している。また、図24(b)は、流用プログラムレコードを例示的に示している。 FIG. 24 is a diagram for explaining the operation of the diversion program editing step. Here, FIG. 24A exemplarily shows a temporary program before correction by diversion program editing. FIG. 24B shows an example of the diverted program record.
流用プログラムの部分プログラム251(Program_Tmp)を一時的に生成し、入力レコード(流用プログラムレコード)の流用プログラムフィールドを当該プログラムで更新したものを出力する。なお、部品間対応がとれている部品が、流用プログラムの部分プログラムに含まれなかった場合には、後の参照時に無視されるため更新する必要はない。 A partial program 251 (Program_Tmp) of the diversion program is temporarily generated, and the diversion program field of the input record (diversion program record) updated by the program is output. Note that if a part that is compatible between parts is not included in the partial program of the diversion program, it is not necessary to update because it is ignored at a later reference.
ステップS115では、情報処理装置100は、ステップS131によって更新された流用プログラムレコードに対して前述した処理を行う。なお、ステップS115の後、再度、ステップS131によって流用プログラムの再編集を行ってもよい。ステップS115を経て、編集が終了すると、流用プログラム追加登録ステップS116によって更新された流用プログラムをデータベースに登録する。
In step S115, the
<流用プログラム追加登録ステップ(S132)>
図25は、流用プログラム追加登録ステップ(S132)の動作を説明するフローチャートである。
<Diversion program addition registration step (S132)>
FIG. 25 is a flowchart for explaining the operation of the diversion program addition registration step (S132).
ステップS1321では、情報処理装置100は、入力レコードの流用プログラムフィールドのプログラムが、流用プログラム編集ステップS131で更新された一時プログラムかどうかをチェックする。一時プログラムではなかった場合は、処理を終了する。一時プログラムであった場合は、ステップS1322に進む。
In step S1321, the
ステップS1322では、情報処理装置100は、一時プログラムおよび流用プログラムレコードの部品間対応を修正する。たとえば一時プログラム251(図24(a))は、クラス”A”のインスタンスとしてA2があるがA1はない。その場合、続くステップS1323で一時プログラム251がデータベースにあるか否かをチェックするが、その際にインスタンス名が異なると容易に検索ができないことがある。このようなデータベースを用いている場合は、登録する流用プログラム内の同じクラスのインスタンスは、一定の規則によって名前付けされているとよい。
In step S1322, the
ここでは左側にあるインスタンスから順にX1,X2,...(クラス”X”のインスタンスの場合)と名前付けすることにする。一時プログラム251の場合、部品インスタンス”A2”の名前を”A1” と変更する。また名前が修正されたインスタンスA2に対応する、流用プログラムレコード内の部品間対応フィールドも修正する。
Here, X1, X2,. . . Name it (in the case of an instance of class “X”). In the case of the
図26は、流用プログラム追加登録ステップの動作を説明する図である。図26(a)は、修正後の一時プログラムを示し、図26(b)は、流用プログラムレコードを示している。 FIG. 26 is a diagram for explaining the operation of the diversion program additional registration step. FIG. 26A shows the corrected temporary program, and FIG. 26B shows the diverted program record.
なお、ステップS1322で説明した処理は、データベースからのプログラム検索を可能にするための一例であり、たとえばデータベースからのプログラム検索にクラスを用いるように工夫する等、他の方法でも構わない。 Note that the processing described in step S1322 is an example for enabling a program search from the database, and other methods such as, for example, devising to use a class for the program search from the database may be used.
ステップ1323では、情報処理装置100は、一時プログラムがデータベースに登録されているかどうかをチェックする。データベースに一時プログラムが登録されていた場合には、データベース内のプログラムで流用プログラムレコードの流用プログラムフィールドを更新する。一方、登録されていなければステップS1324で、新しい名前で一時プログラムをデータベースに新規登録する。なお新規登録の際には流用回数は”0”と設定するとよい。そして流用プログラムレコードの流用プログラムフィールドをデータベースに登録したプログラム(新しい名前)で更新する。
In
以上説明したとおり第4実施形態によれば、予めデータベースに登録されているプログラムの一部分のみを流用プログラムとして登録する。これにより、プログラムの一部分を流用・統合したい場合に、プログラムの全部を統合した後に不要な部分を削除するというような煩雑な操作を低減することが可能となる。 As described above, according to the fourth embodiment, only a part of a program registered in advance in the database is registered as a diversion program. As a result, when it is desired to divert and integrate a part of the program, it is possible to reduce a complicated operation such as deleting an unnecessary part after integrating the whole program.
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
(Other examples)
The present invention can also be realized by executing the following processing. That is, software (program) that realizes the functions of the above-described embodiments is supplied to a system or apparatus via a network or various storage media, and a computer (or CPU, MPU, or the like) of the system or apparatus reads the program. It is a process to be executed.
Claims (9)
1以上のクラス部品から構成される作成中プログラムに対して、該作成中プログラムに含まれる1つのクラス部品における1つの入出力ポートの指定を受け付ける受付手段と、
前記受付手段で指定された入出力ポートを有するクラス部品を含み、かつ、前記作業中プログラムのフルセット又はサブセットとなる1以上の部分プログラムを前記作成中プログラムから抽出する第1の抽出手段と、
前記受付手段で指定された入出力ポートを有するクラス部品を含み、かつ、クラス部品の接続状態に関して前記第1の抽出手段により抽出された1以上の部分プログラムとの間で矛盾が存在しない1以上のプログラム部品を前記データベースから抽出する第2の抽出手段と、
前記第2の抽出手段により抽出された1以上のプログラム部品を、前記作成中プログラムに流用するプログラム部品の候補として提示する提示手段と、
を有することを特徴とする視覚プログラミング装置。 A visual programming device for creating a program by visually operating a plurality of parts, the visual programming device storing a plurality of program parts each configured by connecting a plurality of class parts The visual programming device is configured to be communicable with the visual programming device.
Accepting means for accepting designation of one input / output port in one class part included in the creating program for a creating program composed of one or more class parts;
First extracting means for extracting one or more partial programs that include a class part having an input / output port designated by the accepting means and that are a full set or a subset of the working program from the creating program;
1 or more including a class part having an input / output port designated by the accepting means, and having no contradiction with one or more partial programs extracted by the first extracting means regarding the connection state of the class parts Second extraction means for extracting the program parts from the database;
Presenting means for presenting one or more program parts extracted by the second extracting means as candidate program parts to be used for the program under creation;
A visual programming device comprising:
前記頻度情報に基づいてプログラム部品に対する優先度を算出する優先度算出手段を更に有し、
前記提示手段は、前記優先度に従って、前記第2の抽出手段により抽出された1以上のプログラム部品を提示する
ことを特徴とする請求項1に記載の視覚プログラミング装置。 The database is configured to store a program part in association with frequency information indicating a frequency at which the program part has been diverted in the past,
A priority calculating means for calculating a priority for the program component based on the frequency information;
The visual programming device according to claim 1, wherein the presenting means presents one or more program parts extracted by the second extracting means according to the priority.
前記選択受付手段により選択を受け付けた1つのプログラム部品における複数のクラス部品の接続状態の構造を前記作成中プログラムに統合する統合手段と、
を更に有することを特徴とする請求項1又は2に記載の視覚プログラミング装置。 Selection accepting means for accepting selection of one program part from one or more program parts presented by the presenting means;
Integration means for integrating a structure of connection states of a plurality of class parts in one program part that has been selected by the selection receiving means into the program being created;
The visual programming device according to claim 1, further comprising:
前記第1の抽出手段は、前記仮接続設定手段によって設定された仮の接続により接続されたプログラムを前記作業中プログラムとして1以上の部分プログラムを抽出する
ことを特徴とする請求項1乃至5の何れか一項に記載の視覚プログラミング装置。 Temporary connection setting for setting a temporary connection between an unconnected input / output port in a class part having the input / output port specified by the accepting unit and an unconnected input / output port in another class part in the program being created Further comprising means,
6. The first extraction unit according to claim 1, wherein the first extraction unit extracts one or more partial programs using the program connected by the temporary connection set by the temporary connection setting unit as the working program. The visual programming device according to any one of claims.
前記作業中プログラムに含まれる1以上のクラス部品の座標位置に基づいて前記優先度算出手段により算出された優先度を修正する修正手段を更に有する
ことを特徴とする請求項2に記載の視覚プログラミング装置。 One or more class parts constituting the program during operation are arranged on a plane in which predetermined coordinates are set,
3. The visual programming according to claim 2, further comprising a correcting unit that corrects the priority calculated by the priority calculating unit based on a coordinate position of one or more class parts included in the working program. apparatus.
ことを特徴とする請求項1乃至7の何れか一項に記載の視覚プログラミング装置。 The visual programming device according to claim 1, further comprising a registration unit that registers, in the database, a program component that is a subset of the program component presented by the presenting unit.
1以上のクラス部品から構成される作成中プログラムに対して、該作成中プログラムに含まれる1つのクラス部品における1つの入出力ポートの指定を受け付ける受付工程と、
前記受付工程で指定された入出力ポートを有するクラス部品を含み、かつ、前記作業中プログラムのフルセット又はサブセットとなる1以上の部分プログラムを前記作成中プログラムから抽出する第1の抽出工程と、
前記受付工程で指定された入出力ポートを有するクラス部品を含み、かつ、クラス部品の接続状態に関して前記第1の抽出工程により抽出された1以上の部分プログラムとの間で矛盾が存在しない1以上のプログラム部品を前記データベースから抽出する第2の抽出工程と、
前記第2の抽出工程により抽出された1以上のプログラム部品を、前記作成中プログラムに流用するプログラム部品の候補として提示する提示工程と、
を有することを特徴とする視覚プログラミング装置の制御方法。 A visual programming device control method for creating a program by visually operating a plurality of components, the visual programming device comprising: a plurality of program components each configured by connecting a plurality of class components; It is configured to be able to communicate with a database to be stored, and the control method includes:
An accepting step of accepting designation of one input / output port in one class part included in the program under creation for the program under creation composed of one or more class parts;
A first extraction step that includes one or more partial programs that include a class part having an input / output port designated in the reception step and that are a full set or a subset of the working program;
1 or more including a class part having an input / output port designated in the receiving process and having no contradiction with one or more partial programs extracted by the first extracting process regarding the connection state of the class part A second extraction step of extracting the program parts from the database;
A presenting step of presenting one or more program parts extracted by the second extraction process as candidate program parts to be used for the program under creation;
A control method for a visual programming device, comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013240253A JP2015099564A (en) | 2013-11-20 | 2013-11-20 | Visual programming device and control method therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013240253A JP2015099564A (en) | 2013-11-20 | 2013-11-20 | Visual programming device and control method therefor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015099564A true JP2015099564A (en) | 2015-05-28 |
Family
ID=53376113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013240253A Pending JP2015099564A (en) | 2013-11-20 | 2013-11-20 | Visual programming device and control method therefor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015099564A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019032679A (en) * | 2017-08-08 | 2019-02-28 | 日本電信電話株式会社 | File generation device, file generation method, and file generation program |
WO2021024791A1 (en) * | 2019-08-05 | 2021-02-11 | 日立オートモティブシステムズ株式会社 | Design assistance system and design assistance method |
JP2021033858A (en) * | 2019-08-28 | 2021-03-01 | エヌ・ティ・ティ・アドバンステクノロジ株式会社 | Scenario analysis system, scenario management apparatus, scenario information extraction method, and program |
JP7501092B2 (en) | 2020-05-19 | 2024-06-18 | オムロン株式会社 | Auxiliary method, control program and device |
-
2013
- 2013-11-20 JP JP2013240253A patent/JP2015099564A/en active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019032679A (en) * | 2017-08-08 | 2019-02-28 | 日本電信電話株式会社 | File generation device, file generation method, and file generation program |
WO2021024791A1 (en) * | 2019-08-05 | 2021-02-11 | 日立オートモティブシステムズ株式会社 | Design assistance system and design assistance method |
JPWO2021024791A1 (en) * | 2019-08-05 | 2021-02-11 | ||
JP7248801B2 (en) | 2019-08-05 | 2023-03-29 | 日立Astemo株式会社 | Design support system and design support method |
JP2021033858A (en) * | 2019-08-28 | 2021-03-01 | エヌ・ティ・ティ・アドバンステクノロジ株式会社 | Scenario analysis system, scenario management apparatus, scenario information extraction method, and program |
JP7501092B2 (en) | 2020-05-19 | 2024-06-18 | オムロン株式会社 | Auxiliary method, control program and device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6437799B1 (en) | Method and apparatus for logical zooming of a directed graph | |
US7644370B2 (en) | Method of componentisation of a graphically defined formula | |
US9448705B2 (en) | Configuring graphical displays | |
KR101494826B1 (en) | Error Checking System for Digital Map | |
JP4872529B2 (en) | Reverse engineering support method | |
WO2008105611A1 (en) | Database auto-building method for link of search data in gis system using cad drawings | |
JP2015099564A (en) | Visual programming device and control method therefor | |
US10885237B2 (en) | Network simulation device, network simulation method, and network simulation program | |
US20140052433A1 (en) | Automatically extracting a model for the behavior of a mobile application | |
US9286361B2 (en) | Extract-transform-load processor controller | |
US20150355904A1 (en) | Program visualization device, program visualization method, and program visualization program | |
KR20190030490A (en) | Apparatus and method for detecting security weakness of program source code | |
CN106469116A (en) | Test scene generates auxiliary device and test scene generates householder methods | |
JP4921103B2 (en) | Apparatus, method and program for visualizing Boolean expressions | |
JP6257254B2 (en) | Design support apparatus, design support method, and program | |
US9483852B2 (en) | Method for displaying and manipulating genealogical data using a full family graph | |
US8856730B2 (en) | Diagram layout patterns | |
JP6336922B2 (en) | Business impact location extraction method and business impact location extraction device based on business variations | |
CN104243201B (en) | Network equipment detection use-case corresponds to the storage method and system of topological diagram | |
JP2018032113A (en) | Information management device and file management method | |
JP4663526B2 (en) | Form creation support device, form creation support method, and form creation support program | |
JP6087472B2 (en) | Program diagram creating apparatus, program diagram creating method, and program diagram creating program | |
US11586791B1 (en) | Visualization of data buses in circuit designs | |
JP6664201B2 (en) | Abutting processing device, abutting processing method and abutting processing program | |
JP4989560B2 (en) | Drawing creation support apparatus and control method thereof |