JP6301803B2 - Data flow diagram generator - Google Patents

Data flow diagram generator Download PDF

Info

Publication number
JP6301803B2
JP6301803B2 JP2014208413A JP2014208413A JP6301803B2 JP 6301803 B2 JP6301803 B2 JP 6301803B2 JP 2014208413 A JP2014208413 A JP 2014208413A JP 2014208413 A JP2014208413 A JP 2014208413A JP 6301803 B2 JP6301803 B2 JP 6301803B2
Authority
JP
Japan
Prior art keywords
data flow
list
data
flow list
record
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014208413A
Other languages
Japanese (ja)
Other versions
JP2016081089A (en
Inventor
俊邦 齋藤
俊邦 齋藤
由紀子 阿部
由紀子 阿部
裕二 玉木
裕二 玉木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014208413A priority Critical patent/JP6301803B2/en
Publication of JP2016081089A publication Critical patent/JP2016081089A/en
Application granted granted Critical
Publication of JP6301803B2 publication Critical patent/JP6301803B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本明細書に記載の実施の形態は、データフロー図生成装置に関する。   Embodiments described herein relate to a data flow diagram generation apparatus.

既存のソフトウェアを活用して新たにソフトウェア開発を行う際には、その既存のソフトウェアの全体像の理解が重要で、そのためにはデータフロー図を用いると効果的である。なぜならば、データフロー図は、どのデータからどのデータが導かれるかその関係を直感的に表現した図であり、データの関係がわかると、ソフトにどんな機能が含まれているか予測でき、そして、どんな機能が含まれているかの予測がつけば、おおよそどんな動きをするソフトなのかも自ずとわかってくるためである。   When developing new software using existing software, it is important to understand the overall image of the existing software. For this purpose, it is effective to use a data flow diagram. This is because the data flow diagram is an intuitive representation of which data is derived from which data. When the data relationship is known, the software can predict what functions are included, and This is because if you predict what functions will be included, you will naturally know what kind of movement the software will perform.

但し、データフロー図は、その図が書かれてあったとしても、ソースコードの修正に追随できずに古い情報になってしまっていることが多い。結局、ソースコードを読解して手作業で新たなデータフロー図を生成せざるを得ないが、その生成には莫大な時間がかかる。そこで、ソフトウェアの全体像の理解が容易なデータフロー図を短時間で生成する技術が提案されている。   However, even if the data flow diagram is written, the data flow diagram is often out of date without being able to follow the correction of the source code. In the end, you have to read the source code and manually generate a new data flow diagram, but that generation takes a lot of time. Therefore, a technique for generating a data flow diagram that allows easy understanding of the entire image of software in a short time has been proposed.

特開2012−164024号公報JP 2012-164024 A

しかし、従来のデータフロー図生成技術は、その抽出したデータフロー図が理解しにくいという問題点があった。   However, the conventional data flow diagram generation technique has a problem that the extracted data flow diagram is difficult to understand.

その理由の一つとして、単純に可視化しただけでは規模が大きく複雑で読めない点がある。ソースコード上の変数、演算の関係を忠実に可視化すると、規模が膨大で複雑になり、人が見て理解できる範囲を超えてしまうのである。   One of the reasons is that simply visualizing is large and complex and cannot be read. If the relationship between the variables and operations in the source code is visualized faithfully, the scale becomes enormous and complicated, exceeding the range that humans can see and understand.

理解し難い二つ目の理由は、データフロー図の規模を小さくするために、設計で決めた括りを利用するからである。可視化する際に、表示する最小単位を丸めて、データフロー図の規模を押さえる技術がある。その丸める単位に関数やモジュールといった設計で決める単位を利用している。   The second reason that is difficult to understand is that the design-determined binding is used to reduce the scale of the data flow diagram. There is a technique for reducing the scale of the data flow diagram by rounding the minimum unit to be displayed at the time of visualization. A unit determined by design such as a function or a module is used as the rounding unit.

しかし、設計で決める括りと、本来的な機能の括りは一致しないことが多い。設計では、保守性や拡張性なども考慮して機能を括るため、本来的な機能のくくりとは異なる。
本発明の目的は、ソースコードを入力として、理解が容易なデータフロー図を短時間で抽出する技術を提供することにある。
However, it is often the case that the binding determined by the design does not match the intrinsic function. In design, the functions are integrated in consideration of maintainability, extensibility, and the like, which is different from the original function.
An object of the present invention is to provide a technique for extracting a data flow diagram that is easy to understand in a short time by using source code as input.

本発明の実施の形態はデータフロー図生成装置として提案される。このデータフロー図生成装置は、第1の手段と、第2の手段とを有する。   The embodiment of the present invention is proposed as a data flow diagram generation apparatus. This data flow diagram generating device has first means and second means.

第1の手段は、ソースコードに含まれる命令文であって、代入、分岐、繰り返しのいずれかに該当する命令文に相当する機能を特定する第1情報と、当該機能への入力となる変数を示す第2情報と、当該機能において、分岐又は繰り返しが存在する場合、当該分岐又は繰り返しの条件になっている変数を示す第3情報と、当該機能の出力となる変数を示す第4情報を一つのレコード中に有するデータである第1のデータフローリストを生成し、その第1のデータフローリストにおける構造同値の変数同士及び機能同士を統合するように当該第1のデータフローリストを書き換えて第2のデータフローリストを出力する。   The first means is a command statement included in the source code, and includes first information for specifying a function corresponding to a command statement corresponding to any of assignment, branching, and repetition, and a variable serving as an input to the function If there is a branch or repetition in the function, third information indicating a variable that is a condition for the branch or repetition, and fourth information indicating a variable that is an output of the function A first data flow list, which is data included in one record, is generated, and the first data flow list is rewritten so that the structurally equivalent variables and functions in the first data flow list are integrated. A second data flow list is output.

第2の手段は、前記第2のデータフローリストを受け取り、当該第2のデータフローリストから、データのみの関係を取り出したリストであるデータ関係リストを生成し、当該データ関係リストを元に、当該データ関係リストにおける関係が密なデータ同士をまとめる処理であるクラスタリングを実行し、当該クラスタリングの結果を元に当該第2のデータフローリストを書き換えて第3のデータフローリストを出力する。   The second means receives the second data flow list, generates a data relation list that is a list obtained by extracting a data-only relation from the second data flow list, and based on the data relation list, Clustering, which is a process of collecting data having a close relationship in the data relation list, is executed, and the second data flow list is rewritten based on the result of the clustering to output a third data flow list.

本実施の形態にかかるデータフロー図生成装置の構成例を示す機能ブロック図Functional block diagram showing a configuration example of a data flow diagram generation device according to the present embodiment データフロー図生成装置が実行する処理であるデータフロー図生成処理の一例を示すフローチャートThe flowchart which shows an example of the data flow figure production | generation process which is a process which a data flow figure production | generation apparatus performs データフローリスト生成処理の例を示したフローチャートFlow chart showing an example of data flow list generation processing データフロー図生成装置に入力されるソースコードの例を示す図The figure which shows the example of the source code input into the data flow figure generation device 図4に示すソースコードから生成される演算ブロックのデータ構成例を示す図The figure which shows the data structural example of the calculation block produced | generated from the source code shown in FIG. 図4に示したソースコード100から生成される変数リストのデータ構成例を示す図The figure which shows the data structural example of the variable list produced | generated from the source code 100 shown in FIG. 図5に示した演算ブロックから生成された展開後のエントリ関数の演算ブロックのデータ構成例を示す図The figure which shows the data structural example of the operation block of the entry function after the expansion | deployment produced | generated from the operation block shown in FIG. データフローリストのデータ構成例を示す図Diagram showing an example of the data structure of the data flow list 図8のデータフローリストに対応するデータフロー図Data flow diagram corresponding to the data flow list of FIG. 分岐又は繰り返しのデータフローリスト生成規則に従って生成されたデータフローリストと、その元とである演算ブロックの例を示す図The figure which shows the example of the operation block which is the data flow list produced | generated according to the data flow list production | generation rule of a branch or repetition, and its origin 図7に示した演算ブロックから生成されたデータフローリストのデータ構成例を示す図The figure which shows the data structural example of the data flow list produced | generated from the calculation block shown in FIG. 図11に示したデータフローリストをデータフロー図の形式で表示した図A diagram showing the data flow list shown in FIG. 11 in the form of a data flow diagram ステップS105の処理内容の例を示したフローチャートThe flowchart which showed the example of the processing content of step S105 探索開始点を検出する例を説明するためのデータフローリストを示す図The figure which shows the data flow list for demonstrating the example which detects a search start point 図14に示したデータフローリストに対応するデータブロー図Data blow diagram corresponding to the data flow list shown in FIG. ステップS1303の処理内容を示すフローチャートFlowchart showing the processing content of step S1303 第1の部分データフローリスト、第2の部分データフローリスト、第3の部分データフローリストのデータ構成例を示す図The figure which shows the data structural example of a 1st partial data flow list, a 2nd partial data flow list, and a 3rd partial data flow list 第1の部分データフローリスト、第2の部分データフローリスト、第3の部分データフローリストと、図14に示した元のデータフローリストとの関係を、データフロー図として示した図The figure which showed the relationship between the 1st partial data flow list | wrist, the 2nd partial data flow list | wrist, the 3rd partial data flow list | wrist, and the original data flow list | wrist shown in FIG. 14 as a data flow figure. 図17に示した各部分データフローリストにおける入出力数を記述した入出力数リストを示す図The figure which shows the input / output number list which described the input / output number in each partial data flow list shown in FIG. ステップS1307の処理内容を示すフローチャートFlowchart showing the processing content of step S1307 ステップS1308の処理内容を示すフローチャートFlowchart showing the processing content of step S1308 部分データフローリストの同一レコードを結合した結合部分データフローリストのデータ構成例を示す図The figure which shows the example of a data structure of the combination partial data flow list which combined the same record of a partial data flow list 削除後データフローリストのデータ構成例を示す図Diagram showing an example of the data structure of the data flow list after deletion まとめ削除後データフローリストのデータ構成例を示す図Diagram showing an example of the data structure of the data flow list after summary deletion 統合後データフローリストのデータ構成例を示す図Diagram showing an example of the data structure of the post-integration data flow list 統合後データフローリストをデータフロー図の形式で表示した図Figure showing the data flow list after integration in the form of a data flow diagram データフローリスト抽象化処理の例を示したフローチャートFlow chart showing an example of data flow list abstraction processing 統合後データフローリストの例と、その統合後データフローリストから生成されるデータ関係リストのデータ構成例を示す図The figure which shows the example of a data structure of the data relation list | wrist produced | generated from the example of a data flow list after integration, and the data flow list after integration 図28に示した統合後データフローリストに対応するデータフロー図Data flow diagram corresponding to the post-integration data flow list shown in FIG. データ関係リストに対応するデータの関係を模式的に示す図The figure which shows the relation of the data which corresponds to the data relation list typically ステップS2702の処理内容の一例を示したフローチャートThe flowchart which showed an example of the processing content of step S2702 図28に示したデータ関係リストから生成されたクラスタ化データ関係リストのデータ構成例を示す図The figure which shows the data structural example of the clustered data relation list produced | generated from the data relation list shown in FIG. モジュラリティ算出リストのデータ構成例を示す図The figure which shows the data structural example of a modularity calculation list 6つの展開クラスタ化データ関係リストに対応するモジュラリティ算出リスト を示す図Diagram showing the modularity calculation list corresponding to the six expanded clustered data relation lists クラスタ化データ関係リストのデータ構成例を示す図Diagram showing an example of the data structure of a clustered data relationship list モジュラリティ算出リストのデータ構成例を示す図The figure which shows the data structural example of a modularity calculation list クラスタ化データ関係リストを更新した結果得られる新たなクラスタ化データ関係リストのデータ構成例を示す図The figure which shows the data structural example of the new clustered data relation list obtained as a result of updating a clustered data relation list 展開クラスタ化データ関係リストのモジュラリティを算出するモジュラリティ算出リストのデータ構成例を示す図The figure which shows the data structural example of the modularity calculation list | wrist which calculates the modularity of an expansion | deployment clustering data relation list | wrist ステップS2701の段階で得られたデータ関係リストに対応する、データ(変数)の関係を示す図と、図37に示すクラスタ化データ関係リストに対応する、データの関係を示す図を対比して示す図A diagram showing the relationship of data (variables) corresponding to the data relationship list obtained in step S2701 is compared with a diagram showing the relationship of data corresponding to the clustered data relationship list shown in FIG. Figure 図27に示すステップS2703の処理内容の一例を示したフローチャートA flowchart showing an example of the processing content of step S2703 shown in FIG. 出力付きクラスタ化データ関係リストのデータ構成例を示す図Diagram showing an example of the data structure of a clustered data relation list with output ステップS4002においてレコードを削除する処理の結果得られたデータフローリストを示す図The figure which shows the data flow list obtained as a result of the process which deletes a record in step S4002 抽象化データフローリストのデータ構成例を示す図Diagram showing an example of the data structure of an abstract data flow list 図28のデータフローリスト2500に相当するデータフロー図Data flow diagram corresponding to the data flow list 2500 of FIG. 抽象化データフローリスト4300に相当するデータフロー図Data flow diagram corresponding to the abstract data flow list 4300 データフローリスト図式化処理によって生成されるデータフロー図の例を示す図The figure which shows the example of the data flow figure produced | generated by the data flow list schematic process 図46のデータフロー図の元となるデータフローリストを示す図The figure which shows the data flow list which becomes the origin of the data flow figure of FIG. データフロー図の例を示す図Diagram showing an example data flow diagram

以下、図面を参照して本発明の実施の形態にかかるデータフロー図生成装置を説明する。
[0.用語の定義]
本明細書中で使用する用語の定義を述べる。
[0.1.データフロー図]
「データフロー図」とは、どのデータから、どんな演算(=機能)を経て、どのデータが生成されるかの関係を有向グラフで示したものをいう。データフロー図において、矢印の元から先の方向にデータが流れることを意味する。また、データフロー図において、データとデータの間には、必ず機能が介在する。データ同士が直接接続される関係はありえない。
A data flow diagram generating apparatus according to an embodiment of the present invention will be described below with reference to the drawings.
[0. Definition of terms]
Definitions of terms used in this specification will be described.
[0.1. Data flow diagram]
The “data flow diagram” refers to a directed graph showing the relationship of which data is generated from what data and what operation (= function) is generated. In the data flow diagram, this means that data flows in the direction from the origin of the arrow. In the data flow diagram, functions always exist between data. There can be no direct connection between data.

データフロー図の例を図48に示す。この図48に示すデータフロー図では、データAとデータBを入力として機能Aによる演算を経てデータCが出力されるという関係を示している。   An example of a data flow diagram is shown in FIG. The data flow diagram shown in FIG. 48 shows a relationship in which data A and data B are input and data C is output through calculation by function A.

[0.2.演算ブロック]
「演算ブロック」とは、ソースコードに含まれる以下の固まりをいう。
(1)分岐
「分岐」とは、分岐の条件式と、その条件成立/不成立時に実行される代入文のセットをいう。
例:if(varA > varB){ varA = varC;} else{ varC = varA; }
[0.2. Calculation block]
The “arithmetic block” means the following block included in the source code.
(1) Branch A “branch” is a set of conditional expressions for a branch and an assignment statement that is executed when the condition is met.
Example: if (varA> varB) {varA = varC;} else {varC = varA;}

(2)繰り返し
「繰り返し」とは、繰り返しの条件式と、繰り返し実行される代入文のセットをいう。
例:for(int i=0;i<10;i++){ varA = varA+1;}
(2) Repetition “Repetition” refers to a set of conditional expressions and assignment statements that are repeatedly executed.
Example: for (int i = 0; i <10; i ++) {varA = varA + 1;}

(3)関数呼び出し
「関数呼び出し」とは、関数の呼び出しと、(もし関数の戻り値を格納するのであれば)その代入文のセットをいう。
例:varA = funcA();
(3) Function call “Function call” refers to a function call and a set of assignment statements (if the return value of the function is stored).
Example: varA = funcA ();

(4)単純代入
「単純代入」とは、上記(1)から(4)のいずれにも含まれない代入文のことをいう。
例:varA = varB;
(4) Simple assignment “Simple assignment” refers to an assignment statement that is not included in any of (1) to (4) above.
Example: varA = varB;

[0.3.エントリ関数]
「エントリ関数」とは、プログラムの実行開始時に最初に呼び出しされる関数をいう。例えばC言語ではmainという名前の関数がエントリ関数に相当する。
[0.3. Entry function]
The “entry function” is a function that is called first when the execution of the program is started. For example, in C language, the function named main corresponds to the entry function.

[0.4.スコープ]
「スコープ」とは、変数の名前の有効範囲をいい、ローカル又はグローバルのいずれかである。本明細書では、ローカルとは、当該変数を含む関数の中でのみ有効なものを指し、グローバルとは、当該変数を含む関数の外でも有効なものとする。例えば、スコープがローカルな変数varAがあり、それが関数func1とfunc2の中に登場したとしても、func1でのvarAとfunc2でのvarAは別の変数を指すということを意味する。一方で、スコープがグローバルな変数varBがあり、それが関数func1とfunc2の中に登場したとすると、func1でのvarBとfunc2でのvarBは同じ変数を指すということを意味する。
[0.4. scope]
“Scope” refers to the scope of the name of a variable, either local or global. In this specification, “local” refers to a function that is valid only in a function including the variable, and global refers to a function that is valid outside the function including the variable. For example, even if there is a variable varA whose scope is local and it appears in the functions func1 and func2, it means that varA in func1 and varA in func2 point to different variables. On the other hand, if there is a variable varB whose scope is global and it appears in the functions func1 and func2, it means that varB in func1 and varB in func2 point to the same variable.

[0.5.クラスタリング]
「クラスタリング」とは、データの集まりをデータ間の類似度(あるい. は非類似度)に従って、いつかのグループに. 分けることをいう。クラスタリング手法には、最短距離法などの階層的手法 (hierarchical) と,k-means法などの分割最適化手法 (partitioning-optimization)がある。本実施の形態で用いるクラスタリング手法は、Louvain法であるが、本実施の形態で使用可能なクラスタリング手法がこれに限定される趣旨ではない。
[0.5. Clustering]
“Clustering” refers to dividing a collection of data into groups according to the degree of similarity (or dissimilarity) between the data. Clustering methods include a hierarchical method such as the shortest distance method and a partitioning-optimization method such as the k-means method. The clustering method used in the present embodiment is the Louvain method, but the clustering method that can be used in the present embodiment is not limited to this.

[1.実施の形態]
[1.1.構成例]
本発明の実施の形態の一つは、データフロー図生成装置として提案される。このデータフロー図生成装置は、ソースコードからデータフロー図を生成する装置である。
[1. Embodiment]
[1.1. Configuration example]
One embodiment of the present invention is proposed as a data flow diagram generation device. This data flow diagram generation device is a device that generates a data flow diagram from source code.

データフロー図生成装置1は、コンピュータ、ワークステーション、サーバなどの情報処理装置であって、この情報処理装置は、演算処理装置(CPU)、主メモリ(RAM)、読み出し専用メモリ(ROM)、入出力装置(I/O)、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。   The data flow diagram generation device 1 is an information processing device such as a computer, a workstation, or a server. The information processing device includes an arithmetic processing unit (CPU), a main memory (RAM), a read-only memory (ROM), an input device. An output device (I / O) and, if necessary, a device provided with an external storage device such as a hard disk device.

本発明の実施の形態にかかるデータフロー図生成装置1の構成例について説明する。図1は、本実施の形態にかかるデータフロー図生成装置1の構成例を示す機能ブロック図である。なお、機能ブロック図中に示す構成要素は、構成要素の機能を機能ごとにまとめてブロックとして捉えたものであり、データフロー図生成装置1が各構成要素に対応する基板、装置、回路、部品などの物理的構成要素を備えていなければならないことを意味するわけではない。また、「接続」とは、データ、情報、命令などの送信及び/又は受信、受け取り、受け渡しなどが可能な状態になっていることをいい、互いに配線で連結されているような物理的な接続に限られる意味ではない。本明細書中の他の構成要素の機能ブロック図の説明についても同様である。   A configuration example of the data flow diagram generation device 1 according to the embodiment of the present invention will be described. FIG. 1 is a functional block diagram illustrating a configuration example of the data flow diagram generation device 1 according to the present embodiment. Note that the constituent elements shown in the functional block diagram are the functions of the constituent elements that are grouped into functions and regarded as blocks, and the data flow diagram generating device 1 corresponds to each constituent element. Does not mean that it must have physical components such as In addition, “connection” means that data, information, instructions, etc. can be transmitted and / or received, received, delivered, etc., and is physically connected such that they are connected to each other by wiring. The meaning is not limited to. The same applies to the description of the functional block diagrams of the other components in this specification.

本実施の形態にかかるデータフロー図生成装置1は、データフローリスト生成部10と、データフローリスト抽象化部20と、データフローリスト図式化部30を有する。なお、データフローリスト生成部10は本実施の形態の第1の手段に相当し、データフローリスト抽象化部20は本実施の形態の第2の手段に相当する。   The data flow diagram generation device 1 according to the present exemplary embodiment includes a data flow list generation unit 10, a data flow list abstraction unit 20, and a data flow list schematization unit 30. The data flow list generation unit 10 corresponds to the first unit of the present embodiment, and the data flow list abstraction unit 20 corresponds to the second unit of the present embodiment.

データフローリスト生成部10はデータフローリスト抽象化部20に接続されている。データフローリスト抽象化部20は、データフローリスト図式化部30に接続されている。   The data flow list generation unit 10 is connected to the data flow list abstraction unit 20. The data flow list abstraction unit 20 is connected to the data flow list schematization unit 30.

[1.1.1.データフローリスト生成部]
データフローリスト生成部10は、ソースコード100及びパラメータ200を読み取り、ソースコード100から関数を機能とみなし、当該機能を特定する情報と、当該機能への入力となる変数を示す情報と、当該機能において、分岐/繰り返しが存在する場合、当該分岐/繰り返しの条件になっている変数を示す情報とを一つのレコード中に有するデータであるデータフローリストを生成し、そのデータフローリストにおける構造同値の範囲の有無を判定し、構造同値の範囲同士を統合するように当該データフローリストを書き換える機能を有する。パラメータ200は、全体のデータフローから構造同値な部分フローを見つけるのは一般にNP困難な問題なので、構造同値の探索範囲をパラメータで限定することで演算量を減らすために用いられるデータである。なお、「変数」は、単一の変数のみの場合だけでなく複数の変数からなる集合を含み、以下の記述においても同様である。
[1.1.1. Data flow list generator]
The data flow list generation unit 10 reads the source code 100 and the parameter 200, regards the function as a function from the source code 100, identifies the function, information indicating a variable to be input to the function, and the function If a branch / repeat exists, a data flow list that is data having information indicating a variable that is the condition of the branch / repeat is generated in one record, and the structure equivalence in the data flow list is It has a function of determining the presence or absence of a range and rewriting the data flow list so as to integrate ranges of structural equivalence. The parameter 200 is data that is used to reduce the amount of computation by limiting the search range of structural equivalence with parameters because it is generally difficult to find a partial flow with structural equivalence from the entire data flow. The “variable” includes not only a single variable but also a set of a plurality of variables, and the same applies to the following description.

[1.1.2.データフローリスト抽象化部]
データフローリスト抽象化部20は、データフローリスト生成部10からデータフローリストを受信し、当該データフローリストから、データのみの関係を取り出したリストであるデータ関係リストを生成し、当該データ関係リストを元に、当該データ関係リストにおける関係が密なデータ同士をまとめる処理であるクラスタリングを実行し、当該クラスタリングの結果を元に当該データフローリストを書き換える機能を有する。
[1.1.2. Data flow list abstraction section]
The data flow list abstraction unit 20 receives the data flow list from the data flow list generation unit 10, generates a data relationship list that is a list in which only the data is extracted from the data flow list, and generates the data relationship list Based on the above, clustering, which is a process of collecting data having a close relationship in the data relation list, is executed, and the data flow list is rewritten based on the result of the clustering.

[1.1.3.データフローリスト図式化部]
データフローリスト図式化部30は、データフローリスト抽象化部20から出力された、クラスタリングの結果を元に書き換えられたデータフローリストを受信し、当該データフローリストから、所定の図式化規則に従って、データフロー図を生成する機能を有する。
[1.2.データフロー図生成装置の動作例]
[1.1.3. Data flow list schematization section]
The data flow list schematization unit 30 receives the data flow list rewritten based on the clustering result output from the data flow list abstraction unit 20, and from the data flow list, according to a predetermined schematization rule, It has a function to generate a data flow diagram.
[1.2. Operation example of data flow diagram generation device]

本実施の形態にかかるデータフロー図生成装置1の動作を説明する。図2は、データフロー図生成装置1が実行する処理であるデータフロー図生成処理の一例を示すフローチャートである。   The operation of the data flow diagram generation device 1 according to the present embodiment will be described. FIG. 2 is a flowchart illustrating an example of a data flow diagram generation process that is a process executed by the data flow diagram generation apparatus 1.

データフロー図生成処理において、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、データフローリスト生成処理を実行する(S10)。データフローリスト生成処理は、入力データであるソースコード100を取得し、当該ソースコード100に含まれる関数それぞれの演算ブロックを生成し、各演算ブロックから、関数に含まれる命令文を機能とみなし、当該機能を特定する情報(機能のIDと呼ぶ)と、当該機能への入力となる変数を示す情報(値入力と呼ぶ)と、当該機能において、分岐/繰り返しが存在する場合、当該分岐/繰り返しの条件になっている変数を示す情報(条件入力と呼ぶ)とを一つのレコード中に有するデータであるデータフローリストを生成し、そのデータフローリストにおける構造同値の範囲の有無を判定し、当該構造同値の範囲同士を統合するように当該データフローリストを書き換える処理であるデータフローリスト生成処理を実行する。   In the data flow diagram generation process, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 executes the data flow list generation process (S10). The data flow list generation process acquires the source code 100 that is input data, generates an operation block for each function included in the source code 100, and regards an instruction sentence included in the function as a function from each operation block. Information for identifying the function (referred to as function ID), information indicating a variable to be input to the function (referred to as value input), and branch / repetition when there is branch / repetition in the function Generate a data flow list that is data that has information (referred to as condition input) that indicates the variable that is the condition in one record, determine whether there is a range of structural equivalence in the data flow list, and A data flow list generation process, which is a process of rewriting the data flow list so as to integrate the structural equivalence ranges, is executed.

上記ステップS10に続いて、データフロー図生成装置1、より詳しくはデータフローリスト抽象化部20は、データフローリスト生成部10からデータフローリストを受信し、当該データフローリストから、データのみの関係を取り出したリストであるデータ関係リストを生成し、当該データ関係リストを元に、当該データ関係リストにおける関係が密なデータ同士をまとめる処理であるクラスタリングを実行し、当該クラスタリングの結果を元に当該データフローリストを書き換える処理であるデータフローリスト抽象化処理を実行する(S20)。   Subsequent to step S10, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, receives the data flow list from the data flow list generation unit 10, and from the data flow list, the relationship of only data. A data relation list that is a list obtained by extracting data is generated, and based on the data relation list, clustering that is a process of collecting data having a close relationship in the data relation list is performed, and based on the clustering result, Data flow list abstraction processing, which is processing for rewriting the data flow list, is executed (S20).

上記ステップS20に続いて、データフロー図生成装置1、より詳しくはデータフローリスト図式化部30は、データフローリスト抽象化処理実行後のデータフローリストを受信し、当該データフローリストから、所定の図式化規則に従って、データフロー図を生成する処理であるデータフローリスト図式化処理を実行する(S30)。
以上でデータフロー図生成処理が終了する。
Subsequent to step S20, the data flow diagram generation device 1, more specifically, the data flow list schematization unit 30, receives the data flow list after execution of the data flow list abstraction process, and receives a predetermined flow from the data flow list. In accordance with the charting rules, a data flow list charting process, which is a process for generating a data flow chart, is executed (S30).
This completes the data flow diagram generation process.

[1.2.1.データフローリスト生成処理の例]
上記データフローリスト生成処理(S10参照)を詳述する。図3はデータフローリスト生成処理の例を示したフローチャートである。以下、図3を参照しながらデータフローリスト生成処理を説明する。
[1.2.1. Example of data flow list generation process]
The data flow list generation process (see S10) will be described in detail. FIG. 3 is a flowchart showing an example of data flow list generation processing. The data flow list generation process will be described below with reference to FIG.

データフローリスト生成処理において、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、入力されたソースコード100を読み込み、このソースコードを構文解析し、当該ソースコードに含まれる各関数について、演算ブロックと変数リストを生成し、これらを記憶する(S101)。   In the data flow list generation process, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 reads the input source code 100, parses the source code, and includes each of the source codes included in the source code. For the function, an operation block and a variable list are generated and stored (S101).

図4に、データフロー図生成装置1に入力されるソースコード100の例を示す。ここの例のソースコード100は、3つの関数、main、func1、func2を含んでいる。   FIG. 4 shows an example of the source code 100 input to the data flow diagram generation apparatus 1. The source code 100 in this example includes three functions, main, func1, and func2.

図5に、図4に示すソースコード100から生成される演算ブロックのデータ構成例を示す。データフローリスト生成部10は、3つの関数、main、func1、func2を含むソースコード100から3つの演算ブロック、関数mainに対応する演算ブロック501_1,関数func1に対応する演算ブロック501_2、関数func2に対応する演算ブロック501_3を生成する。なお、演算ブロックを他の演算ブロックと区別しない場合には、単に「演算ブロック501」と呼ぶ。   FIG. 5 shows a data configuration example of an operation block generated from the source code 100 shown in FIG. The data flow list generation unit 10 corresponds to three operation blocks from the source code 100 including three functions, main, func1, and func2, an operation block 501_1 corresponding to the function main, an operation block 501_2 corresponding to the function func1, and a function func2. The operation block 501_3 to be generated is generated. Note that the operation block is simply referred to as “operation block 501” when it is not distinguished from other operation blocks.

演算ブロック501は、対応する関数の命令文ごとに1のレコードを有するデータであって、各レコードは、当該演算ブロックに対応する関数を示す情報を格納するフィールド502と、当該レコードに対応する命令文の演算ブロック種別を示す情報を格納するフィールド503と、当該レコードに対応する命令文の内容を示す情報を格納するフィールド504とを有する。なお、本実施の形態では、演算ブロック種別は、分岐、繰り返し、関数呼び出し、単純代入のいずれかである。   The calculation block 501 is data having one record for each statement of the corresponding function, and each record has a field 502 for storing information indicating a function corresponding to the calculation block and an instruction corresponding to the record. It has a field 503 for storing information indicating the operation block type of a statement, and a field 504 for storing information indicating the content of a command statement corresponding to the record. In the present embodiment, the calculation block type is any one of branch, repetition, function call, and simple substitution.

なお、本明細書中、特に断りのない限り、図面に示すデータ中のレコードを特定する場合に、図中の最上行のレコードから順番に、第1のレコード、第2のレコード、第3のレコードのように呼ぶ。   In the present specification, unless otherwise specified, when a record in the data shown in the drawing is specified, the first record, the second record, the third record, in order from the record in the top row in the drawing. Call like a record.

変数リストは、対応する関数に含まれるごとに一つのレコードを有し、各レコードは、該当する変数の変数名を示す情報を格納するフィールド602と、当該変数のスコープを示す情報を格納するフィールド603を有するデータである。図6に、図4に示したソースコード100から生成される変数リストのデータ構成例を示す。変数リスト601_1は、関数mainに対応する変数リストである。変数リスト601_2は、関数func1に対応する変数リストである。変数リスト601_3は、関数func2に対応する変数リストである。   The variable list has one record for each included in the corresponding function, and each record has a field 602 for storing information indicating the variable name of the corresponding variable, and a field for storing information indicating the scope of the variable. 603 is data. FIG. 6 shows a data configuration example of a variable list generated from the source code 100 shown in FIG. The variable list 601_1 is a variable list corresponding to the function main. The variable list 601_2 is a variable list corresponding to the function func1. The variable list 601_3 is a variable list corresponding to the function func2.

図3に戻りデータフローリスト生成処理の説明を続ける。ソースコード100を読み込んだデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ソースコード100中のエントリ関数に対応する演算ブロック501_1の中に、演算ブロック種別を示す情報が「関数呼び出し」であるレコードであるか否かを判定する(S102)。ステップS102において当該レコードにおける演算ブロック種別を示す情報が「関数呼び出し」であると判定した場合(S102、Yes)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、当該レコードを展開する(S103)。レコードを展開するとは、関数の引数と戻り値を呼び出し元と先でつなげ、変数の名前の重複を回避した上で、呼び出し元に、呼び出し先の内容を展開する。言い換えると、当該レコードを当該レコードの内容を示すフィールド504に記述されている、呼び出しされる関数(呼び出し先関数という)の演算ブロック501_1に含まれる各レコードに置き換え、且つ、置き換えたレコードのフィールド504以下の手法で書き換える。   Returning to FIG. 3, the description of the data flow list generation process will be continued. The data flow diagram generating device 1 that has read the source code 100, more specifically, the data flow list generating unit 10 includes information indicating the type of operation block in the operation block 501_1 corresponding to the entry function in the source code 100. It is determined whether the record is a “function call” (S102). If it is determined in step S102 that the information indicating the calculation block type in the record is “function call” (S102, Yes), the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 Is expanded (S103). To expand a record, connect the argument and return value of the function at the caller and the destination, avoid duplication of variable names, and expand the contents of the callee to the caller. In other words, the record is replaced with each record included in the calculation block 501_1 of the function to be called (called a callee function) described in the field 504 indicating the contents of the record, and the field 504 of the replaced record is replaced. Rewrite with the following method.

(1)引数のつなげかた:引数の単純代入文の右辺を、呼び出し元が渡している引数の変数名で置き換える。
(2)戻り値のつなげかた:戻り値の単純代入文の左辺を、呼び出し元が格納している引数の変数名で置き換える。
(3)スコープがローカルである変数と同じ変数が呼び出し元に既に存在していた場合は、変数名の末尾に任意の識別子を付加して名前の重複を回避する。
なお、上記は一般にインライン展開と呼ばれる手法であるが、当該手法に本実施の形態が限定される趣旨ではない。
(1) How to connect arguments: Replace the right side of the simple assignment statement of the argument with the variable name of the argument passed by the caller.
(2) Connecting return values: Replace the left side of the simple assignment statement of the return value with the variable name of the argument stored by the caller.
(3) If the same variable as the variable whose scope is local already exists in the caller, an arbitrary identifier is added to the end of the variable name to avoid duplication of the name.
The above is a technique generally called inline expansion, but the present embodiment is not limited to this technique.

ステップS103の実行後、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS102に戻り、エントリ関数に対応する演算ブロックの次のレコードについて同様の判定を行う。   After execution of step S103, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 returns to step S102, and performs the same determination for the next record of the operation block corresponding to the entry function.

図7に、図5に示した演算ブロック501_1、501_2、501_3から生成された展開後のエントリ関数の演算ブロックのデータ構成例を示す。展開後のエントリ関数の演算ブロック501_1_Aにおいて、エントリ関数である関数mainに対応する演算ブロック501_1の第1のレコードを、当該レコードのフィールド504に記述された呼び出し先関数func1に対応する演算ブロック501_2の3つのレコードに置き換え(但し、関数名を示すフィールド502は元の演算ブロック501_1の内容のまま)、同じく第2のレコードを、当該レコードのフィールド503に記述された呼び出し先関数func2に対応する演算ブロック501_2の3つのレコードに置き換わる(但し、関数名を示すフィールド502は元の演算ブロック501_1の内容のまま)。   FIG. 7 illustrates a data configuration example of the expanded entry function calculation block generated from the calculation blocks 501_1, 501_2, and 501_3 illustrated in FIG. In the operation block 501_1_A of the expanded entry function, the first record of the operation block 501_1 corresponding to the function main that is the entry function is stored in the operation block 501_2 corresponding to the callee function func1 described in the field 504 of the record. An operation corresponding to the callee function func2 described in the field 503 of the record is replaced with three records (however, the field 502 indicating the function name remains the contents of the original operation block 501_1). The three records in block 501_2 are replaced (however, the field 502 indicating the function name remains the contents of the original operation block 501_1).

また演算ブロック501_1_Aのフィールド504は、演算ブロック501_2における引数の単純代入の右辺が、演算ブロック501_1の第1レコードのフィールド504に記述されている当該引数の変数名に置き換えられ、同様に、演算ブロック501_2における戻り値の単純代入の左辺が、演算ブロック501_1の第1レコードのフィールド504に記述されている当該引数の変数名に置き換える。   In the field 504 of the calculation block 501_1_A, the right side of the simple assignment of the argument in the calculation block 501_2 is replaced with the variable name of the argument described in the field 504 of the first record of the calculation block 501_1. The left side of the simple substitution of the return value in 501_2 is replaced with the variable name of the argument described in the field 504 of the first record of the operation block 501_1.

演算ブロック501_3に記述された引数、戻り値も、同様に演算ブロック501_1_Aにおいて、演算ブロック501_1の第2レコード、フィールド504に記述された変数名に書き換えられる。   Similarly, the argument and return value described in the calculation block 501_3 are also rewritten to the variable name described in the second record and field 504 of the calculation block 501_1 in the calculation block 501_1_A.

ステップS102に戻り、データフローリスト生成処理の説明を続ける。ステップS102において、判定の対象となるレコードの演算ブロック種別を示す情報が「関数呼び出し」でないと判定した場合(S102、No)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、エントリ関数の演算ブロック501_1_Aからデータフローリストを生成する(S104)。   Returning to step S102, the description of the data flow list generation process will be continued. In step S102, when it is determined that the information indicating the calculation block type of the record to be determined is not “function call” (No in S102), the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 Generates a data flow list from the operation block 501_1_A of the entry function (S104).

データフローリストは、エントリ関数の演算ブロック501の各レコードに対応するレコードを有するデータである。データフローリストのレコードは、エントリ関数の演算ブロック501のレコードそれぞれをデータフロー図における「機能」とみなし、各機能への入力となる変数、出力となる変数を記述する。   The data flow list is data having a record corresponding to each record of the operation block 501 of the entry function. In the record of the data flow list, each record of the operation block 501 of the entry function is regarded as a “function” in the data flow diagram, and a variable that becomes an input to each function and a variable that becomes an output are described.

図8にデータフローリストのデータ構成例を示す。データフローリスト800は、レコード801を有し、レコード801のそれぞれは、当該レコードに相当する「機能」を特定する情報を格納するフィールド802、当該機能への入力となる変数を示す情報を格納するフィールド803、当該機能における条件入力を示す情報を格納するフィールド804、当該機能が出力する変数を示す情報を格納するフィールド805を有する。図8に示す演算ブロック501_10は、同じく図8に示したデータフローリスト800の生成の元となるレコードを有する演算ブロックである。なお、データフローリスト800は本実施の形態の第1のデータフローリストに相当する。   FIG. 8 shows a data configuration example of the data flow list. The data flow list 800 includes a record 801, and each record 801 stores a field 802 for storing information for specifying a “function” corresponding to the record, and information indicating a variable serving as an input to the function. The field 803 includes a field 804 for storing information indicating a condition input in the function, and a field 805 for storing information indicating a variable output by the function. An arithmetic block 501_10 shown in FIG. 8 is an arithmetic block having a record that is the basis for generating the data flow list 800 shown in FIG. The data flow list 800 corresponds to the first data flow list of the present embodiment.

また、図8に示したデータフローリスト800のレコードは、データフロー図として示すことが可能である。図8のデータフローリストに対応するデータフロー図を図9に示す。   Further, the records of the data flow list 800 shown in FIG. 8 can be shown as a data flow diagram. FIG. 9 shows a data flow diagram corresponding to the data flow list of FIG.

[単純代入のデータフローリスト生成規則]
演算ブロックのレコードであって、その演算ブロック種別が単純代入である場合、データフローリスト生成部10は、データフローリストのレコードを以下の規則に従って生成する。
第1のフィールド802(「機能のID」列)には、他と重複しない任意の数値を格納する。
[Simple assignment data flow list generation rules]
If the calculation block record is a simple substitution, the data flow list generation unit 10 generates a data flow list record according to the following rules.
The first field 802 (“function ID” column) stores an arbitrary numerical value that does not overlap with the others.

第2のフィールド803(「値入力」列)には、元の演算ブロック501のレコードのフィールド504に記述されている命令文の代入の右辺に現れる変数名を格納する。
第3のフィールド804(「条件入力」列)には、何も格納しない(空欄とする)
In the second field 803 (“value input” column), variable names appearing on the right side of the assignment of the statement described in the field 504 of the record of the original operation block 501 are stored.
Nothing is stored in the third field 804 (“condition input” column) (blank)

第4のフィールド805(「出力」列)には、元の演算ブロック501のレコードのフィールド504に記述されている命令文の代入の左辺に現れる変数名を格納する。
なお、図8に示すデータフローリスト800は、上記単純代入データフローリスト生成規則に従って生成されたものである。
The fourth field 805 (“output” column) stores the variable name that appears on the left side of the assignment of the statement described in the field 504 of the record of the original operation block 501.
Note that the data flow list 800 shown in FIG. 8 is generated according to the simple substitution data flow list generation rule.

[分岐又は繰り返しのデータフローリスト生成規則]
演算ブロックのレコードであって、その演算ブロック種別が分岐又は繰り返しである場合、データフローリスト生成部10は、データフローリストのレコードを以下の規則に従って生成する。
第1のフィールド802(「機能のID」列)には、他と重複しない任意の数値
[Branch or repeated data flow list generation rules]
If the calculation block type is a branch or repetition, the data flow list generation unit 10 generates a data flow list record according to the following rules.
In the first field 802 ("Function ID" column), any numeric value that does not overlap with the others

第2のフィールド803(「値入力」列)には、元の演算ブロック501のレコードのフィールド504に記述されている命令文の代入の右辺に現れる変数名を格納する。   In the second field 803 (“value input” column), variable names appearing on the right side of the assignment of the statement described in the field 504 of the record of the original operation block 501 are stored.

第3のフィールド804(「条件入力」列)には、元の演算ブロック501のレコードのフィールド504に記述されている命令文の分岐或いは繰り返しの条件になっている変数名を格納する。   The third field 804 (“condition input” column) stores the variable names that are the conditions for branching or repeating the statement described in the field 504 of the record of the original operation block 501.

第4のフィールド805(「出力」列)には、元の演算ブロック501のレコードのフィールド504に記述されている命令文の代入の左辺に現れる変数名を格納する。
上記分岐又は繰り返しのデータフローリスト生成規則に従って生成されたデータフローリストと、その元である演算ブロックの例を図10に示す。
The fourth field 805 (“output” column) stores the variable name that appears on the left side of the assignment of the statement described in the field 504 of the record of the original operation block 501.
FIG. 10 shows an example of a data flow list generated according to the branch or repeated data flow list generation rule and an operation block that is a source of the data flow list.

[データフローリストの例]
上記単純代入、分岐又は繰り返しのデータフローリスト生成規則に従って、元となる演算ブロックから生成されたデータフローリストの例を示す。図11は、図7に示した演算ブロック501_1_Aから生成されたデータフローリスト800_11のデータ構成例を示す図である。また、図12に、図11に示したデータフローリストをデータフロー図の形式で表示した図を示す。
[Example of data flow list]
An example of the data flow list generated from the original operation block in accordance with the above simple assignment, branching or repeated data flow list generation rule will be shown. FIG. 11 is a diagram illustrating a data configuration example of the data flow list 800_11 generated from the calculation block 501_1_A illustrated in FIG. FIG. 12 shows a diagram in which the data flow list shown in FIG. 11 is displayed in the form of a data flow diagram.

図3に戻り、データフローリスト生成処理の説明を続ける。データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS104において生成されたデータフローリストを、構造同値となる部分同士を統合するように更新する(S105)。「構造同値」とは、1つの範囲に含まれる任意のデータ(変数)を、別の範囲に含まれる任意のデータ(変数)に置き換えたときに、データ(変数)の名称以外に一切変化がないような置き換えが可能であることをいい、本実施の形態では、ソースコード中の一つの範囲に含まれる各機能の入力の数及び出力の数が、別の範囲の各機能の入力の数及び出力の数と一致する場合には、構造同値であるものとする。   Returning to FIG. 3, the description of the data flow list generation process will be continued. The data flow diagram generation device 1, more specifically, the data flow list generation unit 10 updates the data flow list generated in step S104 so as to integrate the parts having the structural equivalence (S105). “Structural equivalence” means that when any data (variable) included in one range is replaced with any data (variable) included in another range, there is no change other than the name of the data (variable). In this embodiment, the number of inputs and outputs of each function included in one range in the source code are the number of inputs of each function in another range. If the number matches the number of outputs, the structure is equivalent.

上記ステップS105の処理内容を詳述する。図13は、ステップS105の処理内容の例を示したフローチャートである。この処理において、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、探索開始点を見つける(S1301)。   The processing content of step S105 will be described in detail. FIG. 13 is a flowchart showing an example of the processing content of step S105. In this process, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 finds a search start point (S1301).

次に、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、探索開始点から所定の回数で辿れる範囲(レコード)を取り出す(S1303)。なお、取り出された範囲(レコード)を部分データフローリストと呼ぶ。   Next, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 extracts a range (record) that can be traced a predetermined number of times from the search start point (S1303). The extracted range (record) is called a partial data flow list.

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、上記部分データフローリストに含まれる機能の出力数を数える(S1305)。データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1305の処理を各部分データフローリストについて実行する(S1304、S1306)。   Next, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 counts the number of outputs of the functions included in the partial data flow list (S1305). The data flow diagram generation device 1, more specifically, the data flow list generation unit 10 executes the process of step S1305 for each partial data flow list (S1304, S1306).

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、それぞれの部分データフローリストに含まれる機能の入出力数が、他の部分データフローリストに含まれる機能の入出力数と全て一致するか否かを判定する(S1307)。機能の入出力数が全て一致すると判定した場合(S1307、Yes)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、一致する部分フローデータをまとめる(S1309)。一方、機能の入出力数が一致しないと判定した場合(S1307、No)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、当該部分フローデータをそのままとする。   Next, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10, inputs / outputs of the functions included in the other partial data flow lists is the number of inputs / outputs of the functions included in the respective partial data flow lists. It is determined whether all the numbers match (S1307). When it is determined that all the input / output numbers of the functions match (S1307, Yes), the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 collects the matching partial flow data (S1309). On the other hand, if it is determined that the input / output numbers of the functions do not match (S1307, No), the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 leaves the partial flow data as it is.

ステップS1308終了後、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、未処理の探索開始点があればその探索開始点についてステップS1303からステップS1308を実行する(S1302,S1309)。全ての探索開始点について処理が終了すると、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS105の処理を終了する。   After step S1308, if there is an unprocessed search start point, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10, executes steps S1303 to S1308 for the search start point (S1302, S1309). ). When the processing is completed for all the search start points, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 ends the processing in step S105.

[探索開始点の検出(ステップS1301)]
上述のステップS1301の処理を詳述する。探索開始点を検出するため、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、データフローリストの値入力と条件入力の列に登録されている各変数の登場回数を集計し、登場回数がm回以上だった変数を探索開始点とする。なお、mはパラメータ200に含まれる情報で、m=2をデフォルト値とし、2以上の任意の整数にユーザが変更してもよい。
[Detection of Search Start Point (Step S1301)]
The process of step S1301 described above will be described in detail. In order to detect the search start point, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 counts the number of appearances of each variable registered in the value input and condition input columns of the data flow list. The search start point is a variable that has appeared m times or more. Note that m is information included in the parameter 200, and m = 2 is a default value, and the user may change it to an arbitrary integer of 2 or more.

図14に、探索開始点を検出する例を説明するためのデータフローリストを示す。このデータフローリスト800_14の全レコードの値入力を格納するフィールド803及び条件入力を格納するフィールド804に現れる変数名はAからLまでの12個である。この12個の変数のうち、登場回数がパラメータ値m(=2)以上であるものはB(登場回数3回)のみである。よって、このデータフローリスト800_14の探索開始点はBと決定される。   FIG. 14 shows a data flow list for explaining an example of detecting a search start point. There are twelve variable names A to L that appear in the field 803 for storing the value input of all records of the data flow list 800_14 and the field 804 for storing the condition input. Among the 12 variables, only B (appearance count 3 times) has an appearance count equal to or greater than the parameter value m (= 2). Therefore, the search start point of the data flow list 800_14 is determined as B.

図15に、図14に示したデータフローリストに対応するデータブロー図を示す。図15において、2以上の機能(丸枠内に数字で図示されている要素)の入力となっている変数(四角枠内に英文字で図示されている要素)は、Bのみであることがわかる。言い換えると、ステップS1301の処理は、データフロー図からm個以上の機能の入力となっているデータを見つけることに相当する。   FIG. 15 shows a data blow diagram corresponding to the data flow list shown in FIG. In FIG. 15, the variable (the element shown in English within the square frame) that is the input of two or more functions (elements shown as numbers inside the round frame) is only B. Recognize. In other words, the processing in step S1301 corresponds to finding data that is input to m or more functions from the data flow diagram.

[部分データフローリストの取り出し(S1303)]
上述のステップS1303の処理内容を詳述する。図16に、ステップS1303の処理内容を示すフローチャートを掲げる。
ステップS1303の処理において、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、データフローリスト中の、値入力(フィールド803)及び条件入力(フィールド804)に、ステップS1301で求めた探索開始点である変数名が記述されているレコードを見つける(S1602)。データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1602で見つけたレコードの機能のID(フィールド802)を記憶する(S1603)。
[Retrieve Partial Data Flow List (S1303)]
The processing content of step S1303 will be described in detail. FIG. 16 is a flowchart showing the processing content of step S1303.
In the processing of step S1303, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 obtains the value input (field 803) and condition input (field 804) in the data flow list in step S1301. The record in which the variable name which is the search start point is described is found (S1602). The data flow diagram generation device 1, more specifically, the data flow list generation unit 10 stores the function ID (field 802) of the record found in step S1602 (S1603).

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1603で記憶した機能のIDに対応するレコードの出力(フィールド805)に記述された値が、値入力(フィールド803)又は条件入力(フィールド804)に現れるレコードを見つける(S1606)。   Next, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 receives the value described in the output (field 805) of the record corresponding to the function ID stored in step S 1603 as the value input (field 803) or a record appearing in the condition input (field 804) is found (S1606).

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1603の実行により、該当するレコードが一以上見つかったか否かを判定する(S1607)。   Next, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 determines whether or not one or more corresponding records are found by executing step S1603 (S1607).

該当するレコードが一以上見つかったと判定した場合(S1607、Yes)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、当該レコードを記憶する(S1608)。該当するレコードが一以上見つからなかったと判定した場合(S1607、No)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、そのままステップS1604に戻り、記憶している他のレコードについてステップS1605以降の処理を実行する。   If it is determined that one or more corresponding records have been found (S1607, Yes), the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 stores the records (S1608). When it is determined that one or more corresponding records are not found (S1607, No), the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 returns to step S1604 as it is and stores other records. The process after step S1605 is executed.

データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、上記ステップS1606からステップS1608をn−1回繰り返す(S1605、S1609)。これは、探索開始点から所定回数nで辿れる範囲で部分データフローリストを取り出すことを意味する。なお、nはパラメータ200に含まれる情報でn=2をデフォルト値とし、1以上の任意の整数にユーザが変更してもよい。   The data flow diagram generating device 1, more specifically, the data flow list generating unit 10 repeats the above steps S1606 to S1608 n-1 times (S1605, S1609). This means that the partial data flow list is extracted within a range that can be traced n times from the search start point. Note that n is information included in the parameter 200, and n = 2 is a default value, and the user may change it to an arbitrary integer of 1 or more.

データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、上記ステップS1605からステップS1609までの処理を、ステップS1603及びステップS1608で記憶したレコードのそれぞれについて実行する(S1604、1610)。   The data flow diagram generation device 1, more specifically, the data flow list generation unit 10 executes the processing from step S1605 to step S1609 for each of the records stored in step S1603 and step S1608 (S1604, 1610).

ステップS1610の後、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、データフローリストから、ステップS1603及びステップS1608で記憶したレコードを取り出し、部分データフローリストを生成する(S1611)。
以上で、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1303の処理を終了する。
上記処理の具体例を示す。図14に示したデータフローリストから部分データフローリストを生成する場合を以下に述べる。
After step S1610, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 extracts the records stored in step S1603 and step S1608 from the data flow list and generates a partial data flow list (S1611). ).
As described above, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 ends the process of step S <b> 1303.
The specific example of the said process is shown. A case where a partial data flow list is generated from the data flow list shown in FIG. 14 will be described below.

図14のデータフローリスト800_14において、登場回数が2以上の変数はBであり、変数Bを値入力(フィールド803)、若しくは条件入力(フィールド804)に有するレコードは、第2のレコード、第3のレコード、第4のレコードの3つのレコードである。   In the data flow list 800_14 of FIG. 14, the variable having the appearance count of 2 or more is B, and the record having the variable B in the value input (field 803) or the condition input (field 804) is the second record, the third record And the fourth record.

データフロー図生成装置1、より詳しくは、データフローリスト生成部10はデータフローリスト800_14の第2のレコードについて部分データフローリストを生成する。第2のレコードの出力(フィールド805)に記述されている変数はFであり、Fを値入力(フィールド803)、若しくは条件入力(フィールド804)に有するレコードは第5のレコードのみである。繰り返し回数nー1(但し、n=2)なので、第5のレコードからさらに辿らない。データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、第2のレコード及び第5のレコードからなる第1の部分データフローリストを生成する。   The data flow diagram generating device 1, more specifically, the data flow list generating unit 10 generates a partial data flow list for the second record of the data flow list 800_14. The variable described in the output (field 805) of the second record is F, and the record having F in the value input (field 803) or the condition input (field 804) is only the fifth record. Since the number of repetitions is n-1 (where n = 2), no further tracing is performed from the fifth record. The data flow diagram generating device 1, more specifically, the data flow list generating unit 10 generates a first partial data flow list including a second record and a fifth record.

また、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は第3のレコードについて部分データフローリストを生成する。第3のレコードの出力(フィールド805)に記述されている変数はGであり、Gを値入力(フィールド803)、若しくは条件入力(フィールド804)に有するレコードは第6のレコードのみである。繰り返し回数nー1(但し、n=2)なので、第6のレコードからさらに辿らない。データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、第3のレコード及び第6のレコードからなる第2の部分データフローリストを生成する。   In addition, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 generates a partial data flow list for the third record. The variable described in the output of the third record (field 805) is G, and the record having G as the value input (field 803) or the condition input (field 804) is only the sixth record. Since the number of repetitions is n-1 (where n = 2), no further tracing is performed from the sixth record. The data flow diagram generation device 1, more specifically, the data flow list generation unit 10 generates a second partial data flow list including a third record and a sixth record.

さらにまた、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は第4のレコードについて部分データフローリストを生成する。第4のレコードの出力(フィールド805)に記述されている変数名はHであり、Hを値入力(フィールド803)、若しくは条件入力(フィールド804)に有するレコードは第7のレコードのみである。繰り返し回数nー1(但し、n=2)なので、第7のレコードからさらに辿らない。データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、第4のレコード及び第7のレコードからなる第3の部分データフローリストを生成する。   Furthermore, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 generates a partial data flow list for the fourth record. The variable name described in the output of the fourth record (field 805) is H, and the record having H as the value input (field 803) or the condition input (field 804) is only the seventh record. Since the number of repetitions is n-1 (where n = 2), no further tracing is performed from the seventh record. The data flow diagram generating device 1, more specifically, the data flow list generating unit 10 generates a third partial data flow list including a fourth record and a seventh record.

図17に、上記第1の部分データフローリスト1700_1、第2の部分データフローリスト1700_2、第3の部分データフローリスト1700_3のデータ構成例を示す。   FIG. 17 shows a data configuration example of the first partial data flow list 1700_1, the second partial data flow list 1700_2, and the third partial data flow list 1700_3.

図18に、上記第1の部分データフローリスト1700_1、第2の部分データフローリスト1700_2、第3の部分データフローリスト1700_3と、図14に示した元のデータフローリスト800_14との関係を、データフロー図として示した図を掲げる。図18に示す通り、この処理は、データフロー図上で探索開始点からn個の機能を経由して辿れる範囲を部分フローデータリストとして抽出することに相当する。   FIG. 18 shows the relationship between the first partial data flow list 1700_1, the second partial data flow list 1700_2, the third partial data flow list 1700_3, and the original data flow list 800_14 shown in FIG. The figure shown as a flow chart is listed. As shown in FIG. 18, this process corresponds to extracting a range that can be traced from the search start point via n functions on the data flow diagram as a partial flow data list.

[部分データフローリストの入出力数の計数(S1305)]
上述のステップS1305の処理内容の具体例を説明する。図19は、図17に示した各部分データフローリストにおける入出力数を記述したデータ(入出力数リストと呼ぶ)を示す図である。入出力数リスト1900_1は、部分データフローリスト1700_1から生成されたデータであり、入出力数リスト1900_2は、部分データフローリスト1700_2から生成されたデータであり、入出力数リスト1900_3は、部分データフローリスト1700_3から生成されたデータである。
[Counting the number of input / output of partial data flow list (S1305)]
A specific example of the processing content in step S1305 will be described. FIG. 19 is a diagram showing data describing the number of inputs and outputs in each partial data flow list shown in FIG. 17 (referred to as an input / output number list). The input / output number list 1900_1 is data generated from the partial data flow list 1700_1, the input / output number list 1900_2 is data generated from the partial data flow list 1700_2, and the input / output number list 1900_3 is partial data flow. Data generated from the list 1700_3.

[入出力数の一致の判定(S1307)]
上述のステップS1307の処理内容を詳述する。図20に、ステップS1307の処理内容を示すフローチャートを掲げる。
[Determination of coincidence of input / output count (S1307)]
The processing content of step S1307 will be described in detail. FIG. 20 is a flowchart showing the processing content of step S1307.

ステップS1307の処理において、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1303で生成された部分データフローリストから、任意の部分データフローリストを一つ選択する(S2001)。説明の便宜上、選択された部分フローリストをaと呼ぶ。   In the process of step S1307, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 selects one arbitrary partial data flow list from the partial data flow list generated in step S1303 (S2001). ). For convenience of explanation, the selected partial flow list is called a.

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、上記部分データフローリストaのレコードから一つ選択して、選択したレコードにおける値入力の数、条件入力の数、出力の数が全て同じとなるレコードを上記部分データフローリストa以外の部分データフローリストそれぞれから探索する(S2003)。但し、後述するステップS2005で記憶したレコードはこの探索から除外する。   Next, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 selects one of the records of the partial data flow list a, and the number of value inputs, the number of condition inputs in the selected record, Records with the same number of outputs are searched from each of the partial data flow lists other than the partial data flow list a (S2003). However, the record stored in step S2005 described later is excluded from this search.

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS2003で選択したレコードと値入力の数、条件入力の数、出力の数が全て同じとなるレコードが、上記部分データフローリストa以外の部分データフローリストの全てで見つかったか否かを判定する(S2004)。   Next, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 determines that the records selected in step S2003 have the same number of value inputs, the number of condition inputs, and the number of outputs as described above. It is determined whether or not all the partial data flow lists other than the partial data flow list a are found (S2004).

上記ステップS2004で該当するレコードが見つかったと判定した場合(S2004,Yes)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、該当するレコードを記憶する(S2005)。   If it is determined in step S2004 that the corresponding record has been found (S2004, Yes), the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 stores the corresponding record (S2005).

データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、部分データフローリストaの他のレコードのそれぞれについて、ステップS2003からステップS2005の処理を実行する(S2002、S2006)。ステップS2006の完了後、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1307の判定の結果を「Yes」と出力する(S2008)。その後データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1307の処理を終了する。   The data flow diagram generation device 1, more specifically, the data flow list generation unit 10 executes the processing from step S2003 to step S2005 for each of the other records of the partial data flow list a (S2002, S2006). After completion of step S2006, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 outputs “Yes” as a result of the determination in step S1307 (S2008). Thereafter, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 ends the process of step S1307.

一方、ステップS2004において該当するレコードが見つからなかったと判定した場合(S2004,No)、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1307の判定の結果を「No」と出力する(S2007)。その後データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1307の処理を終了する。   On the other hand, if it is determined in step S2004 that the corresponding record was not found (S2004, No), the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 sets the determination result in step S1307 to “No”. Is output (S2007). Thereafter, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 ends the process of step S1307.

ステップS1307の処理の具体例を図19に示した入出力数リスト1900_1、1900_2、1900_3を用いて説明する。
入出力数リスト1900_1の第1のレコードの値入力の数、条件入力の数、出力の数は、「2,0,1」である。他の入出力数リスト1900_2、1900_3に値入力の数、条件入力の数、出力の数が「2,0,1」であるレコードがあるか否かを調べると、入出力数リスト1900_2の第1のレコード、入出力数リスト1900_3の第1のレコードが該当する。よって、入出力数リスト1900_1の第1のレコードの値入力の数、条件入力の数、出力の数の全てが一致するレコードが全ての他の入出力数リストに存在するとわかる。
A specific example of the processing in step S1307 will be described using the input / output number lists 1900_1, 1900_2, and 1900_3 illustrated in FIG.
The number of value inputs, the number of condition inputs, and the number of outputs of the first record in the input / output number list 1900_1 are “2, 0, 1”. When it is checked whether or not the other input / output number lists 1900_2 and 1900_3 have records with the number of value inputs, the number of condition inputs, and the number of outputs being “2, 0, 1”, the first list in the input / output number list 1900_2. 1 record corresponds to the first record in the input / output number list 1900_3. Therefore, it can be understood that a record in which the number of value inputs, the number of condition inputs, and the number of outputs of the first record in the input / output number list 1900_1 all match is present in all other input / output number lists.

同様に入出力数リスト1900_1の第2のレコードについて、他の入出力数リストに該当するレコードが存在するか調べる。入出力数リスト1900_1の第2のレコードの値入力の数、条件入力の数、出力の数は、「1,0,1」である。他の入出力数リスト1900_2、1900_3に値入力の数、条件入力の数、出力の数が「1,0,1」であるレコードがあるか否かを調べると、入出力数リスト1900_2の第2のレコード、入出力数リスト1900_3の第2のレコードが該当する。よって、入出力数リスト1900_1の第2のレコードの値入力の数、条件入力の数、出力の数の全てが一致するレコードが全ての他の入出力数リストに存在するとわかる。   Similarly, for the second record in the input / output number list 1900_1, it is checked whether there is a record corresponding to another input / output number list. The number of value inputs, the number of condition inputs, and the number of outputs of the second record in the input / output number list 1900_1 are “1, 0, 1”. When the other input / output number lists 1900_2 and 1900_3 check whether or not there is a record whose number of value inputs, number of condition inputs, and number of outputs is “1, 0, 1”, the list of the input / output number list 1900_2. 2 records and the second record in the input / output number list 1900_3. Therefore, it can be seen that a record in which the number of value inputs, the number of condition inputs, and the number of outputs of the second record in the input / output number list 1900_1 all match is present in all other input / output number lists.

よって、選択された部分データフローリストに相当する入出力数リスト1900_1の全てのレコードについて、他の部分フローデータリストに該当するレコードが存在すると判定される。この結果、ステップS1307の判定結果として、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は「Yes」を出力する。これは、3つの部分データフローリスト1700_1、1700_2、1700_3が構造同値であることを意味する。   Therefore, for all records in the input / output number list 1900_1 corresponding to the selected partial data flow list, it is determined that there is a record corresponding to another partial flow data list. As a result, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 outputs “Yes” as the determination result of step S 1307. This means that the three partial data flow lists 1700_1, 1700_2, and 1700_3 are structurally equivalent.

なお、構造同値か否かの厳密な判定はNP(Non-deterministic Polynomial time)困難な問題になるので、本実施の形態では機能の入出力数の比較によって近似的に判定して、高速に判定できるようにしている。   In addition, since it is difficult to determine NP (Non-deterministic Polynomial time), it is difficult to determine strictly whether structural equivalence exists. I can do it.

[部分データフローリストをまとめる(S1308)]
上述のステップS1308の処理内容を詳述する。図21に、ステップS1308の処理内容を示すフローチャートを掲げる。
ステップS1308において、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、全ての部分フローリストの同一レコードを結合した結合部分データフローリストを生成する(S2101)。
[Collect partial data flow list (S1308)]
The processing content of the above-described step S1308 will be described in detail. FIG. 21 is a flowchart showing the processing content of step S1308.
In step S1308, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 generates a combined partial data flow list in which the same records of all the partial flow lists are combined (S2101).

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、データフローリスト800から部分データフローリストが有する各レコードの機能のID(フィールド802)と同じ機能のID(フィールド802)のレコードを削除する(S2102)。   Next, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10, has the same function ID (field 802) as the function ID (field 802) of each record included in the partial data flow list from the data flow list 800. ) Is deleted (S2102).

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、データフローリスト800の各レコードにおいて、値入力、条件入力、出力の中の要素αに、結合部分データフローリストを作成する際にまとめた要素βに含まれるものがあるならば、要素αを要素βで置き換える(S2103)。なお、ここにいう「要素」とは、一の変数又は複数の変数をいう。   Next, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 sets the combined partial data flow list to the element α in the value input, condition input, and output in each record of the data flow list 800. If there is something included in the element β collected at the time of creation, the element α is replaced with the element β (S2103). The “element” here refers to one variable or a plurality of variables.

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、上記データフローリストに結合部分データフローリストを追加したものを新たなデータフローリスト800とする(S2104)。
以上でデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、ステップS1308の処理を終了する。
[ステップS2101からステップS2104の具体例]
Next, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 sets a data flow list 800 obtained by adding a combined partial data flow list to the data flow list as a new data flow list 800 (S2104).
As described above, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10, ends the process of step S1308.
[Specific Example of Steps S2101 to S2104]

上記ステップS2101からステップS2104の具体例を示す。上述の図17に示した3つの部分データフローリスト1700_1、1700_2、1700_3を用いてステップS2101からステップS2104を行うものとする。   A specific example of steps S2101 to S2104 will be described. Steps S2101 to S2104 are performed using the three partial data flow lists 1700_1, 1700_2, and 1700_3 shown in FIG.

図22に、上記部分データフローリスト1700_1、1700_2、1700_3の同一レコードを結合した結合部分データフローリストのデータ構成例を示す。結合部分データフローリスト2200は、データフローリスト800と同一のデータ構成を有する。すなわち、結合部分データフローリスト2200は、一の機能ごとに一つのレコードを有し、各レコードは第1のフィールド802、第2のフィールド803、第3のフィールド804、第4のフィールド805を有する。
第1のフィールド802は、当該レコードに対応する機能を一意に特定する情報(例えば、機能のID)を格納する。
第2のフィールド803には、当該機能に相当する関数への入力となる変数名が格納される。
第3のフィールド804には、当該機能に相当する関数が分岐若しくは繰り返しの条件文を有する場合に、当該条件文に含まれる変数名が格納される。
第4のフィールド805には、当該機能に相当する関数の出力となる変数名が格納される。
FIG. 22 shows a data configuration example of a combined partial data flow list in which the same records of the partial data flow lists 1700_1, 1700_2, and 1700_3 are combined. The combined partial data flow list 2200 has the same data configuration as the data flow list 800. That is, the combined partial data flow list 2200 has one record for each function, and each record has a first field 802, a second field 803, a third field 804, and a fourth field 805. .
The first field 802 stores information (for example, function ID) that uniquely identifies the function corresponding to the record.
The second field 803 stores a variable name that becomes an input to the function corresponding to the function.
The third field 804 stores a variable name included in the conditional statement when the function corresponding to the function has a branching or repeating conditional statement.
A fourth field 805 stores a variable name that is an output of a function corresponding to the function.

データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、結合部分データフローリスト2200の第1のフィールド802に、データフローリスト800及び部分データフローリスト1700に登録されている機能のIDいずれとも重複しない任意の数値を書き込む。また、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、結合部分データフローリスト2200の第2のフィールド803、第3のフィールド804、第4のフィールド805に、部分データフローリスト1700_1、1700_2、1700_3の同一レコード・同一フィールドの要素をひとまとめにした内容を格納する。図22では、ひとまとめにしたことを記号「+」でつないで表現している。   The data flow diagram generation device 1, more specifically, the data flow list generation unit 10, has functions registered in the data flow list 800 and the partial data flow list 1700 in the first field 802 of the combined partial data flow list 2200. Write an arbitrary number that does not overlap with any ID. In addition, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10, displays the partial data flow in the second field 803, the third field 804, and the fourth field 805 of the combined partial data flow list 2200. The contents of the elements of the same record and the same field in the lists 1700_1, 1700_2, and 1700_3 are stored together. In FIG. 22, the grouping is expressed by connecting with a symbol “+”.

例えば、結合部分データフローリスト2200、第1のレコードの第2のフィールド803には、第1の部分データフローリスト1700_1、第1のレコードの第2のフィールド803に格納されている「B,C」と、第2の部分データフローリスト1700_2、第1のレコードの第2のフィールド803に格納されている「B,D」と、第3の部分データフローリスト1700_3、第1のレコードの第2のフィールド803に格納されている「B,E」を一つにまとめた内容である「B,C+D+E」を格納する。なお、同一フィールドに複数の変数名(例えば、第1の変数名、と第2の変数名)が格納されている場合には、第1の変数名同士でまとめ、第2の変数名同士でまとめるものとする。   For example, “B, C” stored in the first partial data flow list 1700_1 and the second field 803 of the first record is stored in the combined partial data flow list 2200 and the second field 803 of the first record. ”, The second partial data flow list 1700_2,“ B, D ”stored in the second field 803 of the first record, the third partial data flow list 1700_3, the second of the first record “B, C + D + E”, which is the contents of “B, E” stored in the field 803 of FIG. When a plurality of variable names (for example, the first variable name and the second variable name) are stored in the same field, the first variable names are grouped together and the second variable names are grouped together. It shall be summarized.

同様に、結合部分データフローリスト2200、第1のレコードの第4のフィールド805には、第1の部分データフローリスト1700_1、第1のレコードの第4のフィールド805に格納されている「F」と、第2の部分データフローリスト1700_2、第1のレコードの第4のフィールド805に格納されている「G」と、第3の部分データフローリスト1700_3、第1のレコードの第4のフィールド805に格納されている「H」を一つにまとめた内容である「F+G+H」を格納する。   Similarly, “F” stored in the first partial data flow list 1700_1 and the fourth field 805 of the first record in the combined partial data flow list 2200 and the fourth field 805 of the first record. "G" stored in the second partial data flow list 1700_2, the fourth field 805 of the first record, the third partial data flow list 1700_3, the fourth field 805 of the first record. “F + G + H”, which is the contents of the “H” stored in the.

また、結合部分データフローリスト2200、第2のレコードの第2のフィールド803には、第1の部分データフローリスト1700_1、第2のレコードの第2のフィールド803に格納されている「F」と、第2の部分データフローリスト1700_2、第2のレコードの第2のフィールド803に格納されている「G」と、第3の部分データフローリスト1700_3、第2のレコードの第2のフィールド803に格納されている「H」を一つにまとめた内容である「F+G+H」を格納する。   In addition, the combined partial data flow list 2200 and the second field 803 of the second record include “F” stored in the first partial data flow list 1700_1 and the second field 803 of the second record. "G" stored in the second field 803 of the second partial data flow list 1700_2 and the second record, and in the second field 803 of the third partial data flow list 1700_3 and the second record Stores “F + G + H”, which is the contents of the stored “H”.

同様に、結合部分データフローリスト2200、第2のレコードの第4のフィールド805には、第1の部分データフローリスト1700_1、第2のレコードの第4のフィールド805に格納されている「I」と、第2の部分データフローリスト1700_2、第2のレコードの第4のフィールド805に格納されている「J」と、第3の部分データフローリスト1700_3、第2のレコードの第4のフィールド805に格納されている「K」を一つにまとめた内容である「I+J+K」を格納する。   Similarly, in the combined partial data flow list 2200 and the fourth field 805 of the second record, “I” stored in the first partial data flow list 1700_1 and the fourth field 805 of the second record. "J" stored in the second partial data flow list 1700_2, the fourth field 805 of the second record, the third partial data flow list 1700_3, the fourth field 805 of the second record “I + J + K”, which is a content that is a collection of “K” stored in.

また、部分データフローリスト1700_1、1700_2、1700_3の第1及び第2レコードの第3のフィールド804はいずれも空欄(データ無し)なので、結合部分データフローリスト第1及び第2レコードの第3のフィールド804は、いずれも空欄(データ無し)となる。   Also, since the third field 804 of the first and second records of the partial data flow lists 1700_1, 1700_2, and 1700_3 are both blank (no data), the third field of the combined partial data flow list first and second records. 804 is blank (no data).

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、データフローリスト800_14から、部分データフローリスト1700_1、1700_2、1700_3の各レコードの第1のフィールド802に格納されている情報(本例では機能のID番号)と、同一の情報を第1のフィールド802に格納しているレコードを削除する。   Next, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 is stored in the first field 802 of each record of the partial data flow lists 1700_1, 1700_2, and 1700_3 from the data flow list 800_14. The record that stores the same information as the information (in this example, the function ID number) in the first field 802 is deleted.

図23に、データフローリスト800_14から、部分データフローリストのレコードに対応するレコードを削除した状態のデータフローリスト(削除後データフローリストと呼ぶ)のデータ構成例を示す。   FIG. 23 shows a data configuration example of a data flow list (referred to as a post-deletion data flow list) in a state in which a record corresponding to a record in the partial data flow list is deleted from the data flow list 800_14.

データフローリスト800_14の第1から第8のレコードの第1のフィールド802には、それぞれ「1」、「2」、「3」、「4」、「5」、「6」、「7」、「8」が格納されている。
一方、第1の部分データフローリスト1700_1の第1及び第2のレコードの第1のフィールド802には、「2」と「5」が格納されており、第2の部分データフローリスト1700_2の第1及び第2のレコードの第1のフィールド802には、「3」と「6」が格納されており、第3の部分データフローリスト1700_3の第1及び第2のレコードの第1のフィールド802には、「4」と「7」が格納されている。
In the first field 802 of the first to eighth records of the data flow list 800_14, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8” is stored.
On the other hand, “2” and “5” are stored in the first field 802 of the first and second records of the first partial data flow list 1700_1, and the first field 802 of the second partial data flow list 1700_2. In the first field 802 of the first and second records, “3” and “6” are stored, and the first field 802 of the first and second records of the third partial data flow list 1700_3. Stores “4” and “7”.

よって、データフローリスト800_14から「2」と「5」、「3」と「6」、「4」と「7」に対応するレコードを削除し、削除後データフローリスト2300が生成される。   Therefore, records corresponding to “2” and “5”, “3” and “6”, “4” and “7” are deleted from the data flow list 800_14, and the post-deletion data flow list 2300 is generated.

次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、削除後データフローリスト2300の各レコードの第2のフィールド803(値入力)、第3のフィールド804(条件入力)、第4のフィールド805(出力)の中の要素(要素αと呼ぶ)に、結合部分データフローリスト2200を作成する際にまとめた要素(要素βと呼ぶ)に含まれるものがあるならば、その要素αを要素βで置き換える(ステップS2103)。   Next, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10, uses the second field 803 (value input) and the third field 804 (condition input) of each record in the deleted data flow list 2300. If the element (referred to as element α) in the fourth field 805 (output) is included in the elements (referred to as element β) collected when the combined partial data flow list 2200 is created, The element α is replaced with the element β (step S2103).

前述した結合部分データフローリスト2200を作成する際にまとめた要素は、結合部分データフローリスト2200の第1のレコードの第2のフィールド803の「C,D,E」と、第1のレコードの第4のフィールド805の「F,G,H」と、第2のレコードの第2のフィールド803の「F,G,H」と、第2のレコードの第4のフィールド805の「I,J,K」である。削除後データフローリスト2300の各レコードの第2のフィールド803(値入力)、第3のフィールド804(条件入力)、第4のフィールド805(出力)の中に、上記に該当するものは、削除後データフローリスト2300の第2のレコードの第2のフィールド803の「I,J,K」である。よって、データフロー図生成装置1、より詳しくは、データフローリスト生成部10は、削除後データフローリスト2300の第2のレコードの第2のフィールド803の内容を「I,J,K」から「I+J+K」へ書き換える。図24に書き換えられた削除後データフローリスト(まとめ削除後データフローリスト2400と呼ぶ)のデータ構成例を示す。   The elements collected when the combined partial data flow list 2200 is created include “C, D, E” in the second field 803 of the first record of the combined partial data flow list 2200 and the first record. "F, G, H" in the fourth field 805, "F, G, H" in the second field 803 of the second record, and "I, J" in the fourth field 805 of the second record , K ". The second field 803 (value input), the third field 804 (condition input), and the fourth field 805 (output) of each record in the post-deletion data flow list 2300 are deleted. This is “I, J, K” in the second field 803 of the second record in the subsequent data flow list 2300. Therefore, the data flow diagram generation device 1, more specifically, the data flow list generation unit 10 changes the contents of the second field 803 of the second record of the data flow list 2300 after deletion from “I, J, K” to “ Rewrite to “I + J + K”. FIG. 24 shows a data configuration example of the rewritten post-delete data flow list (referred to as a post-delete data flow list 2400).

[ステップS2104の具体例]
次にデータフロー図生成装置1、より詳しくは、データフローリスト生成部10は、まとめ削除後データフローリスト2400に結合部分データフローリスト2200の全レコードを追加して、新たなデータフローリスト(統合後データフローリスト2500と呼ぶ)を生成し、出力する(S2104)。
[Specific Example of Step S2104]
Next, the data flow diagram generating device 1, more specifically, the data flow list generating unit 10 adds all the records of the combined partial data flow list 2200 to the post-summary deletion data flow list 2400 to create a new data flow list (integrated A subsequent data flow list 2500 is generated and output (S2104).

図25に、まとめ削除後データフローリスト2400に結合部分データフローリスト2200の全レコードを追加することによって生成されたデータフローリストのデータ構成例を示す。統合後データフローリスト2500は、構造同値の複数の部分を一つに統合した結果のデータフローリストである。図26に、統合後データフローリスト2500をデータフロー図の形式で表示した図を示す。図15に示したデータフロー図が、図26に示す内容に統合されていることがわかる。なお、統合後データフローリスト2500は、本実施の形態の第2のデータフローリストに相当する。   FIG. 25 shows a data configuration example of the data flow list generated by adding all the records of the combined partial data flow list 2200 to the post-summary deletion data flow list 2400. The post-integration data flow list 2500 is a data flow list obtained as a result of integrating a plurality of structurally equivalent parts. FIG. 26 shows a diagram in which the post-integration data flow list 2500 is displayed in the form of a data flow diagram. It can be seen that the data flow diagram shown in FIG. 15 is integrated with the contents shown in FIG. The post-integration data flow list 2500 corresponds to the second data flow list of the present embodiment.

[1.2.2.データフローリスト抽象化処理の例]
図2に戻り、上記データフローリスト抽象化処理(S20参照)を詳述する。図27はデータフローリスト抽象化処理の例を示したフローチャートである。以下、図27を参照しながらデータフローリスト抽象化処理を説明する。なお、本実施の形態では、Louvain法を用いたクラスタリングを行うものとして説明するが、本実施の形態がLouvain法に限定される趣旨ではなく、その他のクラスタリング手法を用いても本実施の形態は成立する。
[1.2.2. Example of data flow list abstraction processing]
Returning to FIG. 2, the data flow list abstraction process (see S20) will be described in detail. FIG. 27 is a flowchart showing an example of data flow list abstraction processing. The data flow list abstraction process will be described below with reference to FIG. Although this embodiment is described as performing clustering using the Louvain method, the present embodiment is not intended to be limited to the Louvain method, and the present embodiment is not limited to using other clustering methods. To establish.

データフローリスト抽象化処理において、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、データフローリスト生成部10から統合後データフローリスト2500を受信し、この統合後データフローリスト2500からデータ(変数)のみの関係を取り出したデータ関係リストを生成する(S2701)。図28に、統合後データフローリスト2500の例と、その統合後データフローリスト2500から生成されるデータ関係リストのデータ構成例を示す。   In the data flow list abstraction processing, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 receives the integrated data flow list 2500 from the data flow list generation unit 10, and this integrated data flow A data relation list in which only the data (variable) relation is extracted from the list 2500 is generated (S2701). FIG. 28 shows an example of the post-integration data flow list 2500 and a data configuration example of a data relation list generated from the post-integration data flow list 2500.

統合後データフローリスト2500は、図25に示したものと同様のデータ構成を有する。データ関係リスト2800は、統合後データフローリスト2500の値入力(フィールド802)、条件入力(フィールド802)、出力(フィールド802)に格納されている変数を全て列挙して、変数の重複除去した後に残った変数ごとに一つのレコードを有するデータである。各レコードは、変数を特定する情報を格納するフィールド2801と、同一レコードの「データ」列(フィールド2801)の変数が、元となる統合後データフローリスト2500の値入力(フィールド803)又は条件入力(フィールド804)に格納されている変数として現れる機能(レコード)の出力に登録されている変数を格納する「関係するデータ」列(フィールド2802)を有する。なお、フィールド2802については重複除去はしない。なお、上記「データ」列(フィールド2801)の変数は、本実施の形態の「残った変数を示す情報」に相当する。   The post-integration data flow list 2500 has a data configuration similar to that shown in FIG. The data relation list 2800 lists all variables stored in the value input (field 802), condition input (field 802), and output (field 802) of the post-integration data flow list 2500, and after deduplicating the variables. Data with one record for each remaining variable. Each record has a field 2801 for storing information for specifying a variable, and a variable in the “data” column (field 2801) of the same record is a value input (field 803) or a condition input of the original post-integration data flow list 2500 It has a “relevant data” column (field 2802) that stores variables registered in the output of the function (record) that appears as variables stored in (field 804). Note that the field 2802 is not deduplicated. The variables in the “data” column (field 2801) correspond to “information indicating remaining variables” in the present embodiment.

図28に示すデータ関係リスト2800を例として説明する。統合後データフローリストの全レコードの各フィールドに含まれるデータ(変数)は、A,B,C,Dの4種類のみであり、よってデータ関係リスト2800は、A,B,C,Dに対応する4つのレコードを有し、この4つのレコードのフィールド2801には、それぞれA,B,C,Dが格納される。   The data relation list 2800 shown in FIG. 28 will be described as an example. The data (variables) included in each field of all the records in the post-integration data flow list are only four types A, B, C, and D, and therefore the data relation list 2800 corresponds to A, B, C, and D. A, B, C, and D are stored in fields 2801 of the four records, respectively.

データ関係リスト2800のデータ(変数)Aに対応するレコードである第1のレコードのフィールド2802は、統合後データフローリストにおいてAが値入力(フィールド803)又は条件入力(フィールド804)に登場する機能(レコード)は第1のレコードであり、当該1のレコードの出力(フィールド805)はBであるので、データ関係リスト2800のデータ(変数)Aに対応するレコードのフィールド2802には、Bが格納される。   A field 2802 of the first record which is a record corresponding to data (variable) A in the data relation list 2800 is a function in which A appears in the value input (field 803) or the condition input (field 804) in the post-integration data flow list. Since (record) is the first record and the output (field 805) of the one record is B, B is stored in the field 2802 of the record corresponding to the data (variable) A in the data relation list 2800. Is done.

データ関係リスト2800のデータ(変数)Bに対応するレコードである第2のレコードのフィールド2802は、統合後データフローリストにおいてBが値入力(フィールド803)又は条件入力(フィールド804)に登場する機能(レコード)は第2のレコードと第3のレコードであり、当該2、第3のレコードの出力(フィールド805)はAとCであるので、データ関係リスト2800のBに対応するレコードである第2のレコードのフィールド2802には、AとCが格納される。   A field 2802 of the second record which is a record corresponding to the data (variable) B in the data relation list 2800 is a function in which B appears in the value input (field 803) or the condition input (field 804) in the post-integration data flow list. (Record) is the second record and the third record, and the outputs (field 805) of the second and third records are A and C. Therefore, the record corresponding to B in the data relation list 2800 is the first record. A and C are stored in the field 2802 of the second record.

データ関係リスト2800のCに対応するレコードである第3のレコードのフィールド2802は、統合後データフローリストにおいてCが値入力(フィールド803)又は条件入力(フィールド804)に登場する機能(レコード)は第4のレコードであり、当該4のレコードの出力(フィールド805)はDであるので、データ関係リスト2800のデータCに対応するレコードのフィールド2802には、Dが格納される。   In the field 2802 of the third record which is a record corresponding to C in the data relation list 2800, the function (record) in which C appears in the value input (field 803) or the condition input (field 804) in the post-integration data flow list is Since the output of the fourth record (field 805) is D, D is stored in the field 2802 of the record corresponding to the data C in the data relation list 2800.

データ関係リスト2800のデータDに対応するレコードである第4のレコードのフィールド2802は、統合後データフローリストにおいてCが値入力(フィールド803)又は条件入力(フィールド804)に登場する機能(レコード)は第5のレコードのみであり、当該5のレコードの出力(フィールド805)はCであるので、データ関係リスト2800のデータDに対応するレコードである第4のレコードのフィールド2802には、Cが格納される。   A field 2802 of the fourth record which is a record corresponding to the data D of the data relation list 2800 is a function (record) in which C appears in the value input (field 803) or the condition input (field 804) in the post-integration data flow list. Is only the fifth record, and the output (field 805) of the fifth record is C. Therefore, in the field 2802 of the fourth record, which is a record corresponding to the data D of the data relation list 2800, C is Stored.

図29は、図28に示した統合後データフローリスト2500に対応するデータフロー図であり、図30は、データ関係リスト2800に対応する、データの関係を模式的に示す図である。図29、図30からわかるように、データ関係リストは、統合後データフローリストから機能を抜いて、データ間のみを
つないであげたものに相当する。
29 is a data flow diagram corresponding to the post-integration data flow list 2500 shown in FIG. 28, and FIG. 30 is a diagram schematically showing a data relationship corresponding to the data relationship list 2800. As can be seen from FIGS. 29 and 30, the data relation list corresponds to a list obtained by connecting only data by removing functions from the post-integration data flow list.

図27に戻り、データフローリスト抽象化処理の説明を続ける。データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、ステップS2701で生成されたデータ関係リスト2800を元に、クラスタリングによって、関係が密なデータ同士をまとめる(S2702)。   Returning to FIG. 27, the description of the data flow list abstraction process will be continued. The data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 collects closely related data by clustering based on the data relationship list 2800 generated in step S2701 (S2702).

上記ステップS2702の処理内容を詳述する。図31は、ステップS2702の処理内容の一例を示したフローチャートである。まず、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、データ関係リスト2800の各レコード(より詳しくは当該レコードに対応するデータ)を一つのクラスタとするように、データ関係リスト2800にクラスタを示す情報を格納するフィールドを付加し、各レコードの当該フィールドに、クラスタを示す情報(この例では、クラスタ番号1,2,3,4)を格納する。このクラスタを示す情報を付加されたデータ関係リストをクラスタ化データ関係リストと呼ぶ。図32に、図28に示したデータ関係リスト2800から生成されたクラスタ化データ関係リスト3200のデータ構成例を示す。   The processing content of step S2702 will be described in detail. FIG. 31 is a flowchart showing an example of the processing content of step S2702. First, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, sets each record of the data relationship list 2800 (more specifically, data corresponding to the record) as one cluster. A field for storing information indicating the cluster is added to the relation list 2800, and information indicating the cluster (cluster numbers 1, 2, 3, and 4 in this example) is stored in the corresponding field of each record. The data relation list to which information indicating the cluster is added is called a clustered data relation list. FIG. 32 shows a data configuration example of the clustered data relationship list 3200 generated from the data relationship list 2800 shown in FIG.

クラスタ化データ関係リスト3200は、クラスタごとに一つ又は複数のレコードを有するデータであって、各レコードはクラスタを示す情報を格納するフィールド3201と、データ(変数)名を格納するフィールド3202と、フィールド3202に格納されたデータに関係するデータを示す情報を格納するフィールド3203を有する。   The clustered data relation list 3200 is data having one or more records for each cluster, and each record has a field 3201 for storing information indicating a cluster, a field 3202 for storing a data (variable) name, It has a field 3203 for storing information indicating data related to the data stored in the field 3202.

図31に戻り、ステップS2702の処理内容の説明を続ける。データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20はクラスタ化データ関係リスト3200のモジュラリティを算出する(S3102)。
モジュラリティの算出式の例を以下に示す。
モジュラリティ = Σm
m = y/x - (z/(2*x))^2
x =クラスタ化データ関係リスト3200の全レコードの「関係するデータ」列(フィールド3202)の変数の数の合計値
y =当該クラスタの、「データ」列(フィールド3202)の変数と「関係するデータ」列(フィールド3203)の変数とで、重複している変数の数
Returning to FIG. 31, the description of the processing content of step S2702 will be continued. The data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 calculates the modularity of the clustered data relationship list 3200 (S3102).
An example of the modularity calculation formula is shown below.
Modularity = Σm
m = y / x-(z / (2 * x)) ^ 2
x = total value of the number of variables in the “related data” column (field 3202) of all records in the clustered data relationship list 3200
y = the number of overlapping variables in the “data” column (field 3202) and the “related data” column (field 3203) of the cluster

z = (当該クラスタの「データ」列(フィールド3202)の変数が、全レコードの「関係するデータ」列(フィールド3203)で登場する回数)+(当該クラスタの「関係するデータ」列(フィールド3203)の変数数) z = (Number of times the variable in the “data” column (field 3202) of the cluster appears in the “related data” column (field 3203) of all records) + (“related data” column (field 3203) of the cluster ) Number of variables)

図33に、図32に示したクラスタ化データ関係リスト3200のモジュラリティの計算を示すデータ(モジュラリティ算出リスト3300と呼ぶ)を掲げる。この計算結果として、モジュラリティ=−0.26が得られる。なお、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20はこのモジュラリティの値を判定基準値iとして記憶する。   FIG. 33 shows data (referred to as a modularity calculation list 3300) indicating modularity calculation of the clustered data relation list 3200 shown in FIG. As a result of this calculation, modularity = −0.26 is obtained. Note that the data flow diagram generating device 1, more specifically, the data flow list abstracting unit 20 stores this modularity value as the determination reference value i.

図31に戻り、ステップS2702の処理内容の説明を続ける。データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、クラスタ化データ関係リスト3200の任意のクラスタの2つを選び、選んだクラスタを組み合わせたクラスタ化データ関係リスト(展開クラスタ化データ関係リストと呼ぶ)を生成する(S3103,S3105)。   Returning to FIG. 31, the description of the processing content of step S2702 will be continued. The data flow diagram generating apparatus 1, more specifically, the data flow list abstracting unit 20 selects two arbitrary clusters in the clustered data relation list 3200, and combines the selected clusters with a clustered data relation list (expanded cluster). (S3103, S3105).

一例をあげると、上記クラスタ1からクラスタ4に相当する4つのレコードを有するクラスタ化データ関係リストから、クラスタ1と2、クラスタ1と3、クラスタ1と4、クラスタ2と3、クラスタ2と4、クラスタ3と4のそれぞれが組み合わされた6つの展開クラスタ化データ関係リストが生成される。   As an example, from the clustered data relationship list having four records corresponding to cluster 1 to cluster 4, cluster 1 and 2, cluster 1 and 3, cluster 1 and 4, cluster 2 and 3, cluster 2 and 4 , Six expanded clustered data relation lists in which the clusters 3 and 4 are combined are generated.

データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、上記展開クラスタ化データ関係リストそれぞれのモジュラリティを算出する(S3404)。   The data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 calculates the modularity of each of the expanded clustered data relationship lists (S3404).

図34に上記6つの展開クラスタ化データ関係リストに対応するモジュラリティ算出リスト 3300_1、3300_2、3300_3、3300_4、3300_5、3300_6を示す。これらのモジュラリティ算出リスト 3300_1から330_6を区別の便宜上、図34の上から順番に第1のモジュラリティ算出リスト 、第2のモジュラリティ算出リスト 、第3のモジュラリティ算出リスト 、第4のモジュラリティ算出リスト 、第5のモジュラリティ算出リスト 、第6のモジュラリティ算出リスト と呼ぶ。
以下に、上記第1から第5のモジュラリティ算出リスト から得られたモジュラリティの値を示す。
第1のモジュラリティ算出リスト 3300_1から得られるモジュラリティ=k1=0.02
第2のモジュラリティ算出リスト 3300_2から得られるモジュラリティ=k2=−0.38
第3のモジュラリティ算出リスト 3300_3から得られるモジュラリティ=k3=−0.29
第4のモジュラリティ算出リスト 3300_4から得られるモジュラリティ=k4=−0.24
第5のモジュラリティ算出リスト 3300_5から得られるモジュラリティ=k5=−0.33
第6のモジュラリティ算出リスト 3300_6から得られるモジュラリティ=k6=0.02
FIG. 34 shows modularity calculation lists 3300_1, 3300_2, 3300_3, 3300_4, 3300_5, and 3300_6 corresponding to the six expanded clustered data relation lists. For the convenience of distinguishing these modularity calculation lists 3300_1 to 330_6, the first modularity calculation list, the second modularity calculation list, the third modularity calculation list, and the fourth modularity are sequentially arranged from the top of FIG. The calculation list, the fifth modularity calculation list, and the sixth modularity calculation list are called.
The modularity values obtained from the first to fifth modularity calculation lists are shown below.
Modularity obtained from first modularity calculation list 3300_1 = k1 = 0.02
Modularity obtained from the second modularity calculation list 3300_2 = k2 = −0.38
Modularity obtained from the third modularity calculation list 3300_3 = k3 = −0.29
Modularity obtained from the fourth modularity calculation list 3300_4 = k4 = −0.24
Modularity obtained from the fifth modularity calculation list 3300_5 = k5 = −0.33
Modularity obtained from sixth modularity calculation list 3300_6 = k6 = 0.02

図31に戻り、ステップS2702の処理内容の説明を続ける。データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、ステップS3104で算出したモジュラリティの値のうち最大値(max(kn)と呼ぶ)がステップS3102で算出した判定基準値iより大きいか否かを判定する(S3106)。
なお、図34に示した例の場合は、
k1=0.02
k2=-0.38
k3=-0.29
k4=-0.24
k5=-0.33
k6=0.02
Returning to FIG. 31, the description of the processing content of step S2702 will be continued. The data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, determines that the maximum value (called max (kn)) of the modularity values calculated in step S 3104 is the determination reference value calculated in step S 3102. It is determined whether it is larger than i (S3106).
In the case of the example shown in FIG.
k1 = 0.02
k2 = -0.38
k3 = -0.29
k4 = -0.24
k5 = -0.33
k6 = 0.02

上記より、max(kn) = k1 = k6 = 0.02であり、一方、判定基準値i=-0.26 なので、max(kn) > iが成立するため、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20はステップS3107に進み処理を続行することになる。 From the above, since max (kn) = k1 = k6 = 0.02 and the criterion value i = −0.26, max (kn)> i is established, so the data flow diagram generating device 1, more specifically, data The flow list abstraction unit 20 proceeds to step S3107 and continues the processing.

図31に戻り説明を続ける。上記最大値max(kn)がステップS3102で算出した判定基準値iより大きくないと判定した場合(S3106、No)、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20はステップS2702の処理を終了する。   Returning to FIG. 31, the description will be continued. When it is determined that the maximum value max (kn) is not larger than the determination reference value i calculated in step S3102 (No in S3106), the data flow diagram generating device 1, more specifically, the data flow list abstracting unit 20 performs step The process of S2702 is terminated.

一方、上記最大値max(kn)がステップS3102で算出した判定基準値iより大きいと判定した場合(S3106、Yes)、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、モジュラリティの値が最大値max(kn)となった展開クラスタ化データ関係リストにおいて結合されている2つのクラスタについて、当該展開クラスタ化データ関係リストの元となるクラスタ化データ関係リスト3200におけるレコード同士を実際に結合して一つのクラスタとする(S3107)。なお、展開クラスタ化データ関係リストにおいて結合されている2つのクラスタの組が複数ある場合には、元となるクラスタ化データ関係リスト3200における任意の一つの組のクラスタ同士を結合する。   On the other hand, if it is determined that the maximum value max (kn) is larger than the determination reference value i calculated in step S3102 (S3106, Yes), the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 , Records in the clustered data relationship list 3200 that are the origins of the expanded clustered data relationship list for two clusters that are combined in the expanded clustered data relationship list whose modularity value is the maximum value max (kn) These are actually combined to form one cluster (S3107). When there are a plurality of sets of two clusters combined in the expanded clustered data relationship list, any one set of clusters in the original clustered data relationship list 3200 is combined.

図35に、図34に示すモジュラリティの計算結果から、図32に示したクラスタ化データ関係リストのクラスタ(レコード)を結合して一つのクラスタ(レコード)としたクラスタ化データ関係リストのデータ構成例を示す。   FIG. 35 shows the data structure of the clustered data relation list obtained by combining the clusters (records) of the clustered data relation list shown in FIG. 32 from the modularity calculation results shown in FIG. An example is shown.

クラスタ化データ関係リスト3200_Aは、ステップS3101において生成されたクラスタ化データ関係リストであり、クラスタ結合データ関係リスト3200_Bは、クラスタ化データ関係リスト3200_AからステップS3104を経て、ステップS3107で生成されたクラスタ化データ関係リストである。   The clustered data relationship list 3200_A is the clustered data relationship list generated in step S3101, and the cluster combined data relationship list 3200_B is passed from the clustered data relationship list 3200_A through step S3104 to the clustered data generated in step S3107. It is a data relation list.

図34に示した例では、複数の展開クラスタ化データ関係リストのうち、最大のモジュラリティの値max(kn)となるのはk1及びk6の展開クラスタ化データ関係リストである。k1である展開クラスタ化データ関係リスト(モジュラリティ算出リスト 3300_1参照)では、クラスタ1とクラスタ2が組み合わされており、k6である展開クラスタ化データ関係リスト(モジュラリティ算出リスト 3300_6参照)ではクラスタ3とクラスタ4が組み合わされている。よって、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、元となるデータ関係リスト3200_Aにおいて、上記クラスタの組のいずれかを実際に結合して新たなクラスタとする。ここではクラスタ化データ関係リスト3200_Bは、クラスタ1とクラスタ2を結合して新たにクラスタ1としたデータとなる。なお、いずれの組を用いるかは任意である。   In the example shown in FIG. 34, the maximum modularity value max (kn) among the plurality of expanded clustered data relationship lists is the expanded clustered data relationship list of k1 and k6. In the expanded clustered data relationship list (refer to modularity calculation list 3300_1) that is k1, cluster 1 and cluster 2 are combined, and in the expanded clustered data relationship list (refer to modularity calculation list 3300_6) that is k6, cluster 3 is combined. And cluster 4 are combined. Therefore, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, in the original data relationship list 3200 </ b> _A, actually combines any of the above cluster sets into a new cluster. Here, the clustered data relation list 3200_B becomes data that is newly formed by combining cluster 1 and cluster 2 into cluster 1. Note that which set is used is arbitrary.

上記クラスタ化データ関係リスト3200_Bの生成後、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、前記判定基準値iの値を直近のmax(kn)の値に置き換える(S3108)。なお、この場合の判定基準値iは直近のmax(kn)=0.02に置き換えられる。
その後、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、前述のステップS3103に戻り、処理を続行する。
After the generation of the clustered data relation list 3200_B, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 replaces the value of the determination reference value i with the latest max (kn) value ( S3108). In this case, the determination reference value i is replaced with the latest max (kn) = 0.02.
Thereafter, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, returns to the above-described step S3103 and continues the processing.

[上記処理の具体例]
上記図35に示したクラスタ化データ関係リスト3200_Bの生成後に、ステップS3103に戻った場合の処理内容を述べる。
[Specific example of the above process]
Processing contents when returning to step S3103 after generating the clustered data relation list 3200_B shown in FIG. 35 will be described.

クラスタ化データ関係リスト3200_Bのクラスタ(レコード)はクラスタ1に該当する第1及び第2のレコードと、クラスタ3に該当する第3のレコードと、クラスタ4に該当する第4のレコードである。これらのクラスタの2つの組み合わせはクラスタ1とクラスタ3の組み合わせ、クラスタ1とクラスタ4の組み合わせ、クラスタ3とクラスタ4の組み合わせの三通りである。   The clusters (records) in the clustered data relation list 3200_B are the first and second records corresponding to the cluster 1, the third record corresponding to the cluster 3, and the fourth record corresponding to the cluster 4. There are three combinations of these clusters: a combination of cluster 1 and cluster 3, a combination of cluster 1 and cluster 4, and a combination of cluster 3 and cluster 4.

データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、クラスタ化データ関係リスト3200_Bのクラスタ1とクラスタ3に相当するレコードを結合した第1の展開クラスタ化データ関係リストと、クラスタ1とクラスタ4に相当するレコードを結合した第2の展開クラスタ化データ関係リストと、クラスタ3とクラスタ4に相当するレコードを結合した第3の展開クラスタ化データ関係リストを生成し、当該クラスタ化データ関係リストのモジュラリティを算出する(S3104)。   The data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 includes a first expanded clustered data relationship list obtained by combining records corresponding to the cluster 1 and the cluster 3 in the clustered data relationship list 3200_B; Generating a second expanded clustered data relation list combining records corresponding to cluster 1 and cluster 4 and a third expanded clustered data relation list combining records corresponding to cluster 3 and cluster 4; The modularity of the structured data relation list is calculated (S3104).

図36に、上記第1から第3の展開クラスタ化データ関係リストのモジュラリティを算出するモジュラリティ算出リスト3300のデータ構成例を示す。モジュラリティ算出リスト3300_11は、上記第1の展開クラスタ化データ関係リストのモジュラリティを計算したデータであり、モジュラリティ算出リスト3300_12は、上記第2の展開クラスタ化データ関係リストのモジュラリティを計算したデータであり、モジュラリティ算出リスト3300_13は、上記第3の展開クラスタ化データ関係リストのモジュラリティを計算したデータである。   FIG. 36 shows a data configuration example of the modularity calculation list 3300 for calculating the modularity of the first to third expanded clustered data relation lists. The modularity calculation list 3300_11 is data obtained by calculating the modularity of the first expanded clustered data relationship list, and the modularity calculation list 3300_12 is calculated by the modularity of the second expanded clustered data relationship list. The modularity calculation list 3300_13 is data obtained by calculating the modularity of the third expanded clustered data relation list.

上記モジュラリティ算出リスト3300_11に示すように、第1の展開クラスタ化データ関係リストのモジュラリティ=k1=−0.08と計算されている。同様に、モジュラリティ算出リスト 3300_12に示すように、第2の展開クラスタ化データ関係リストのモジュラリティ=k2=−0.18と計算され、モジュラリティ算出リスト 3300_13に示すように、第3の展開クラスタ化データ関係リストのモジュラリティ=k3=0.3と計算されている。   As shown in the modularity calculation list 3300_11, the modularity of the first expanded clustering data relation list is calculated as k1 = −0.08. Similarly, as shown in the modularity calculation list 3300_12, the modularity in the second expanded clustered data relation list is calculated as k2 = −0.18, and as shown in the modularity calculation list 3300_13, the third expansion is performed. The modularity of the clustered data relation list is calculated as k3 = 0.3.

次にデータフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、モジュラリティの最大値max(kn)が判定基準値iより大きいか否かを判定する(S3106)。図36に示す通り、k1=−0.08、k2=−0.18、k3=0.3、より、モジュラリティの最大値max(kn) = k3= 0.3である。一方、判定基準値i=0.02なので、max(kn) > iが成立のため、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、その後ステップS3107に進み、データフローリスト抽象化処理を続行する。   Next, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, determines whether or not the maximum value max (kn) of modularity is greater than the determination reference value i (S3106). As shown in FIG. 36, k1 = −0.08, k2 = −0.18, k3 = 0.3, and the maximum value of modularity max (kn) = k3 = 0.3. On the other hand, since the determination criterion value i = 0.02, max (kn)> i is established, so that the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 proceeds to step S3107 and then proceeds to the data flow list. Continue the abstraction process.

ステップS3107において、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、図35に示すクラスタ化データ関係リスト3200_Bにおいて、max(kn)となるのは、n=3である、クラスタ3とクラスタ4に相当するレコードを結合した第3の展開クラスタ化データ関係リストだったので、ここで結合されている2つのクラスタ(クラスタ3とクラスタ4)を実際に結合して新たなクラスタ2とするようにクラスタ化データ関係リスト3200_Bを更新する。図37に、クラスタ化データ関係リスト3200_Bを上記のように更新した結果得られる新たなクラスタ化データ関係リスト3200_Cのデータ構成例を示す。   In step S3107, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, sets n (3) to max (kn) in the clustered data relationship list 3200_B shown in FIG. Since the third expanded clustered data relation list is a combination of records corresponding to cluster 3 and cluster 4, the two clusters (cluster 3 and cluster 4) combined here are actually combined to form a new list. The clustered data relationship list 3200_B is updated so as to be cluster 2. FIG. 37 shows a data configuration example of a new clustered data relationship list 3200_C obtained as a result of updating the clustered data relationship list 3200_B as described above.

ステップS3107の後、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、判定基準値iをモジュラリティの最大値max(kn) = k3 = 0.3に更新し(S3108)、ステップS3104に進む。   After step S3107, the data flow diagram generating device 1, more specifically, the data flow list abstracting unit 20 updates the determination reference value i to the maximum modularity value max (kn) = k3 = 0.3 (S3108). ), The process proceeds to step S3104.

データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、クラスタ化データ関係リスト3200_Cのクラスタ1とクラスタ2を結合した展開クラスタ化データ関係リストを生成し、当該展開クラスタ化データ関係リストのモジュラリティを算出する(S3104)。図38に、上記展開クラスタ化データ関係リストのモジュラリティを算出するモジュラリティ算出リスト 3300_38のデータ構成例を示す。このモジュラリティ算出リスト 3300_38からモジュラリティ=k1=0と計算されている。   The data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 generates an expanded clustered data relationship list in which the clusters 1 and 2 of the clustered data relationship list 3200_C are combined, and the expanded clustered data The modularity of the relation list is calculated (S3104). FIG. 38 shows a data configuration example of the modularity calculation list 3300_38 for calculating the modularity of the expanded clustered data relation list. Modularity = k1 = 0 is calculated from this modularity calculation list 3300_38.

次にデータフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、モジュラリティの最大値max(kn)が判定基準値iより大きいか否かを判定する(S3106)。図38に示す通り、k1=0より、max(kn) = k1 = 0である。一方、判定基準値i=0.3なので、max(kn) > iが不成立のため、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、データフローリスト抽象化処理を終了する。なお、実際にクラスタ1とクラスタ2は結合しないで処理を終了し、最終的なクラスタ化データ関係リストとして図37に示すクラスタ化データ関係リスト3200_Cを得る。   Next, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20, determines whether or not the maximum value max (kn) of modularity is greater than the determination reference value i (S3106). As shown in FIG. 38, since k1 = 0, max (kn) = k1 = 0. On the other hand, since the determination reference value i = 0.3, max (kn)> i is not satisfied, so the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 ends the data flow list abstraction processing. . Note that the processing is terminated without actually combining the cluster 1 and the cluster 2, and the final clustered data relationship list 3200_C shown in FIG. 37 is obtained as the final clustered data relationship list.

図39に、ステップS2701で得られたデータ関係リストに対応する、データ(変数)の関係を示す図と、図37に示すクラスタ化データ関係リスト3200_Cに対応する、データ(変数)の関係を示す図を対比して示す。データ(変数)Aとデータ(変数)Bが一つのクラスタに、データ(変数)Cとデータ(変数)Dが別のクラスタにクラスタリングされたことがわかる。
以上で図27に示すステップS2702の説明を終了する。
FIG. 39 shows a data (variable) relationship corresponding to the data relationship list obtained in step S2701 and a data (variable) relationship corresponding to the clustered data relationship list 3200_C shown in FIG. The figures are shown in contrast. It can be seen that data (variable) A and data (variable) B are clustered in one cluster, and data (variable) C and data (variable) D are clustered in another cluster.
Above, description of step S2702 shown in FIG. 27 is complete | finished.

図27に戻り、データフローリスト抽象化処理の説明を続ける。データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、クラスタリング結果である、ステップS2702の結果得られるクラスタ化データ関係リストを元に、データフローリストを更新する(S2703)。   Returning to FIG. 27, the description of the data flow list abstraction process will be continued. The data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 updates the data flow list based on the clustered data relation list obtained as a result of step S2702 as the clustering result (S2703).

上記ステップS2703の処理内容を詳述する。図40は、図27に示すステップS2703の処理内容の一例を示したフローチャートである。まず、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、ステップS2702の実行結果として得られたクラスタ化データ関係リストに基づいて、各クラスタの出力データを特定する(S4001)。   The processing contents of step S2703 will be described in detail. FIG. 40 is a flowchart showing an example of the processing content of step S2703 shown in FIG. First, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 specifies the output data of each cluster based on the clustered data relationship list obtained as the execution result of step S2702 (S4001). ).

具体的には、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、クラスタ化データ関係リストにおける各クラスタについて、当該クラスタの「関係するデータ」列であるフィールド3203に格納されているデータ(変数)の中で、当該クラスタの「データ列」であるフィールド3202に格納されているデータ(変数)に含まれないデータ(変数)があるレコードを全て探す。   Specifically, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 stores, for each cluster in the clustered data relation list, a field 3203 that is a “related data” column of the cluster. In the data (variables) that have been recorded, all records having data (variables) not included in the data (variables) stored in the field 3202 that is the “data string” of the cluster are searched.

上記条件に該当するレコードが見つかった場合、それらのレコードの「データ」列であるフィールド3202に格納されているデータ(変数)を全てまとめたものを当該クラスタの出力データとする。   When records satisfying the above conditions are found, a collection of all the data (variables) stored in the field 3202 which is the “data” column of those records is set as the output data of the cluster.

上記条件に該当するレコードが見つからなかった場合、当該クラスタに含まれるレコードの「データ」列の変数を全てまとめたものを当該クラスタの出力データとする。   If no record corresponding to the above condition is found, the output data of the cluster is the sum of all the variables in the “data” column of the records included in the cluster.

本実施の形態では、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、クラスタの出力データをクラスタ化データ関係リストに付加したデータである、出力付きクラスタ化データ関係リストを生成する。図41に、出力付きクラスタ化データ関係リストのデータ構成例を示す。図41に示す出力付きクラスタ化データ関係リスト4100は、図37に示すクラスタ化データ関係リスト3200_Cから生成された出力付きクラスタ化データ関係リストである。出力付きクラスタ化データ関係リスト4100は、クラスタごとに一つ又は複数のレコードを有するデータであって、各レコードはクラスタを示す情報を格納するフィールド3201と、データ(変数)名を格納するフィールド3202と、フィールド3202に格納されたデータに関係するデータを示す情報を格納するフィールド3203と、該当するクラスタの出力データを示す情報を格納するフィールド3204を有する。
図41に示す出力付きクラスタ化データ関係リスト4100におけるフィールド3204に格納される情報は以下のように決定される。
In the present embodiment, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 is a clustered data relation list with output, which is data obtained by adding cluster output data to the clustered data relation list. Is generated. FIG. 41 shows a data configuration example of the clustered data relation list with output. A clustered data relation list with output 4100 shown in FIG. 41 is a clustered data relation list with output generated from the clustered data relation list 3200_C shown in FIG. The clustered data relation list with output 4100 is data having one or a plurality of records for each cluster, and each record has a field 3201 for storing information indicating a cluster and a field 3202 for storing a data (variable) name. And a field 3203 for storing information indicating data related to the data stored in the field 3202, and a field 3204 for storing information indicating output data of the corresponding cluster.
The information stored in the field 3204 in the clustered data relation list with output 4100 shown in FIG. 41 is determined as follows.

クラスタ化データ関係リスト3200_Cにおけるクラスタ1に相当する第1のレコード及び第2のレコードでは、Cのみがクラスタ1に該当する第1及び第2のレコードのデータ列(フィールド3202)に含まれない変数なので、そのCを格納する第2のレコードのデータ列(フィールド3202)に格納されているBが、出力付きクラスタ化データ関係リスト4100のクラスタ1の出力データ(フィールド3204)に格納される。   In the first record and the second record corresponding to cluster 1 in the clustered data relation list 3200_C, only C is a variable that is not included in the data string (field 3202) of the first and second records corresponding to cluster 1. Therefore, B stored in the data string (field 3202) of the second record storing C is stored in the output data (field 3204) of cluster 1 in the clustered data relation list with output 4100.

クラスタ化データ関係リスト3200_Cにおけるクラスタ2に該当する第3及び第4のレコードにおいては、関係するデータ列(フィールド3203)の変数がいずれもデータ列(フィールド3202)に含まれるので、上記条件に該当するレコードは存在しない。よって、クラスタ2に含まれるデータ列の変数全て(C、D)をまとめたもの(「C+D」と表記)が、出力付きクラスタ化データ関係リスト4100のクラスタ2の出力データ(フィールド3204)に格納される。   In the third and fourth records corresponding to cluster 2 in the clustered data relation list 3200_C, the variables of the related data string (field 3203) are both included in the data string (field 3202). No record exists. Therefore, all the variables (C, D) in the data string included in cluster 2 (indicated as “C + D”) are stored in the output data (field 3204) of cluster 2 in the clustered data relation list with output 4100. Is done.

図40に戻り、図27に示すステップS2703の処理内容の一例の説明を続ける。
出力付きクラスタ化データ関係リストを生成した後、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、データフローリストにおいて同一クラスタに含まれるデータと機能をまとめて、出力付きクラスタ化データ関係リストにおける当該クラスタの出力データに置き換えるようにデータフローリストを更新する(S4002)。
Returning to FIG. 40, description of an example of the processing content of step S2703 shown in FIG. 27 is continued.
After generating the clustered data relation list with output, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 collects data and functions included in the same cluster in the data flow list and outputs them. The data flow list is updated to replace the output data of the cluster in the clustered data relation list (S4002).

ステップS4002の処理内容の具体例を詳述する。まず、データフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、統合後データフローリスト2500の各レコードについて、値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数全てが、出力付きクラスタ化データ関係リスト4100における同一クラスタに該当するレコードに含まれる変数であった場合は、そのレコードを削除する。よって、統合後データフローリスト2500のレコードであって、当該レコードに格納されている変数が異なるクラスタであったレコードのみ残る。   A specific example of the processing content in step S4002 will be described in detail. First, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 inputs a value (field 803), a condition input (field 804), and an output (field) for each record of the integrated data flow list 2500. If all the variables included in 805) are variables included in the record corresponding to the same cluster in the clustered data relation list with output 4100, the record is deleted. Accordingly, only the records in the post-integration data flow list 2500 that have different clusters stored in the records remain.

次にデータフロー図生成装置1、より詳しくは、データフローリスト抽象化部20は、統合後データフローリスト2500のレコードのうち、残されたレコードの各変数について、値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数を、出力付きクラスタ化データ関係リスト4100において、その変数を「データ」列(フィールド3202)に含むクラスタの出力データ(フィールド3204)で置き換える。この置き換えを行った結果得られるデータフローリストを抽象化データフローリストと呼ぶ。   Next, the data flow diagram generation device 1, more specifically, the data flow list abstraction unit 20 inputs a value (field 803), a condition for each variable of the remaining records among the records of the integrated data flow list 2500. The variable included in the input (field 804) and output (field 805) is replaced with the output data (field 3204) of the cluster included in the “data” column (field 3202) in the clustered data relation list with output 4100. . A data flow list obtained as a result of this replacement is called an abstract data flow list.

上記の具体例を示す。図25に示した統合後データフローリスト2500と、図41に示した出力付きクラスタ化データ関係リスト4100に基づいて、ステップS4002を実行した場合の例を述べる。   Specific examples of the above will be shown. An example in which step S4002 is executed based on the post-integration data flow list 2500 shown in FIG. 25 and the clustered data relation list with output 4100 shown in FIG. 41 will be described.

図42は、図28に示した統合後データフローリスト2500と、図41に示した出力付きクラスタ化データ関係リスト4100に基づいて、統合後データフローリスト2500の各レコードについて、値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数全てが、出力付きクラスタ化データ関係リスト4100における同一クラスタに該当するレコードに含まれる変数であった場合、そのレコードを削除する処理の結果得られたデータフローリストを示す。図42に示すデータフローリスト4200は、以下のように生成される。   42 shows a value input (field 803) for each record of the post-integration data flow list 2500 based on the post-integration data flow list 2500 shown in FIG. 28 and the clustered data relation list with output 4100 shown in FIG. ), If all the variables included in the condition input (field 804) and output (field 805) are variables included in the record corresponding to the same cluster in the clustered data relation list with output 4100, the record is deleted. The data flow list obtained as a result of the processing is shown. The data flow list 4200 shown in FIG. 42 is generated as follows.

統合後データフローリスト2500における機能のID=1(フィールド802)に該当する第1のレコードの値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数はAとBである。図41に示す出力付きクラスタ化データ関係リスト4100において、Aはクラスタ1に該当する第1のレコード及び第2のレコードに格納されており、Bはクラスタ1に該当する第1のレコード及び第2のレコードに格納されている。よって、AとBは同一クラスタのデータであるため、統合後データフローリスト2500の第1のレコードは削除される。   Variables included in the value input (field 803), condition input (field 804), and output (field 805) of the first record corresponding to the function ID = 1 (field 802) in the post-integration data flow list 2500 are A and B. In the clustered data relation list with output 4100 shown in FIG. 41, A is stored in the first record and second record corresponding to cluster 1, and B is the first record and second record corresponding to cluster 1. Stored in the record. Therefore, since A and B are data of the same cluster, the first record of the post-integration data flow list 2500 is deleted.

統合後データフローリスト2500における機能のID=2(フィールド802)に該当する第2のレコードの値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数はBとAである。図41に示す出力付きクラスタ化データ関係リスト4100において、Bはクラスタ1に該当する第1のレコード及び第2のレコードに格納されており、Aはクラスタ1に該当する第1のレコード及び第2のレコードに格納されている。よって、BとAは同一クラスタのデータであるため、統合後データフローリスト2500の第2のレコードは削除される。   Variables included in the value input (field 803), condition input (field 804), and output (field 805) of the second record corresponding to the function ID = 2 (field 802) in the post-integration data flow list 2500 are B and A. In the clustered data relation list with output 4100 shown in FIG. 41, B is stored in the first record and second record corresponding to cluster 1, and A is the first record and second record corresponding to cluster 1. Stored in the record. Therefore, since B and A are data of the same cluster, the second record of the post-integration data flow list 2500 is deleted.

統合後データフローリスト2500における機能のID=3(フィールド802)に該当する第3のレコードの値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数はBとCである。図41に示す出力付きクラスタ化データ関係リスト4100において、Bはクラスタ1に該当する第2のレコードの値入力(フィールド3202)に格納されており、Cはクラスタ2に該当する第3のレコード及び第4のレコードに格納されている。よって、BとCは異なるクラスタのデータであるため、統合後データフローリスト2500の第3のレコードは削除されない。   Variables included in the value input (field 803), condition input (field 804), and output (field 805) of the third record corresponding to the function ID = 3 (field 802) in the post-integration data flow list 2500 are B and C. In the clustered data relation list with output 4100 shown in FIG. 41, B is stored in the value input (field 3202) of the second record corresponding to cluster 1, C is the third record corresponding to cluster 2, and Stored in the fourth record. Therefore, since B and C are data of different clusters, the third record of the post-integration data flow list 2500 is not deleted.

統合後データフローリスト2500における機能のID=4フィールド802)に該当する第4レコードの値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数はCとDである。図41に示す出力付きクラスタ化データ関係リスト4100において、Cはクラスタ2に該当する第3のレコード及び第4のレコード格納されており、Dはクラスタ2に該当する第3のレコード及び第4のレコードに格納されている。よって、CとDは同一クラスタのデータであるため、統合後データフローリスト2500の第4のレコードは削除される。   Variables included in the value input (field 803), condition input (field 804), and output (field 805) of the fourth record corresponding to the function ID = 4 field 802) in the post-integration data flow list 2500 are C and D. is there. In the clustered data relation list with output 4100 shown in FIG. 41, C is stored in the third record and the fourth record corresponding to the cluster 2, and D is the third record corresponding to the cluster 2 and the fourth record. Stored in a record. Accordingly, since C and D are data of the same cluster, the fourth record in the post-integration data flow list 2500 is deleted.

統合後データフローリスト2500における機能のID=5(フィールド802)に該当する第4レコードの値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数はDとCである。図41に示す出力付きクラスタ化データ関係リスト4100において、Dはクラスタ2に該当する第3のレコード及び第4のレコード格納されており、Cはクラスタ2に該当する第3のレコード及び第4のレコードに格納されている。よって、DとCは同一クラスタのデータであるため、統合後データフローリスト2500の第5のレコードは削除される。   Variables included in the value input (field 803), condition input (field 804), and output (field 805) of the fourth record corresponding to the function ID = 5 (field 802) in the integrated data flow list 2500 are D and C. It is. In the clustered data relation list with output 4100 shown in FIG. 41, D stores the third record and fourth record corresponding to cluster 2, and C indicates the third record and fourth record corresponding to cluster 2. Stored in a record. Therefore, since D and C are data of the same cluster, the fifth record in the post-integration data flow list 2500 is deleted.

よって、統合後データフローリスト2500の第1、第2、第4、第5のレコードが削除され、第3のレコードのみが残り、その結果図42に示すデータフローリスト4200が生成される。   Therefore, the first, second, fourth, and fifth records in the post-integration data flow list 2500 are deleted, and only the third record remains, and as a result, the data flow list 4200 shown in FIG. 42 is generated.

図43に、データフローリスト4200のレコードの各変数について、値入力(フィールド803)、条件入力(フィールド804)、出力(フィールド805)に含まれる変数を、出力付きクラスタ化データ関係リスト4100において、その変数を「データ」列(フィールド3202)に含むクラスタの出力データ(フィールド3204)で置き換えることによって得られた抽象化データフローリストのデータ構成例を示す。   FIG. 43 shows the variables included in the value input (field 803), condition input (field 804), and output (field 805) for each variable in the record of the data flow list 4200 in the clustered data relation list with output 4100. A data configuration example of the abstract data flow list obtained by replacing the variable with the output data (field 3204) of the cluster including the “data” column (field 3202) is shown.

図43に示す抽象化データフローリスト4300は、以下のように生成される。
(1)データフローリスト4200の値入力(フィールド803)のBについて
出力付きクラスタ化データ関係リスト4100においてBを「データ」列(フィールド3202)に含むレコードは、クラスタ1に該当する第1のレコードである。一方、出力付きクラスタ化データ関係リスト4100においてクラスタ1に該当するレコードの出力データ(フィールド3204)に格納されている変数はBである。よって、データフローリスト4200の値入力(フィールド803)に格納されているBをBで置き換える(実質変わらない)。
The abstract data flow list 4300 shown in FIG. 43 is generated as follows.
(1) About B of Value Input (Field 803) of Data Flow List 4200 In the clustered data relation list with output 4100, the record including B in the “data” column (field 3202) is the first record corresponding to cluster 1 It is. On the other hand, the variable stored in the output data (field 3204) of the record corresponding to cluster 1 in the clustered data relation list with output 4100 is B. Therefore, B stored in the value input (field 803) of the data flow list 4200 is replaced with B (substantially unchanged).

(2)データフローリスト4200の出力(フィールド805)のCについて
出力付きクラスタ化データ関係リスト4100においてCを「データ」列(フィールド3202)に含むレコードは、クラスタ2に該当する第3のレコードである。一方、出力付きクラスタ化データ関係リスト4100において上記クラスタ2に該当するレコードの出力データ(フィールド3204)に格納されている変数はC+Dである。よって、データフローリスト4200の出力(フィールド805に格納されているCをC+Dで置き換える。
(2) Regarding C in Output of Data Flow List 4200 (Field 805) In the clustered data relation list with output 4100, a record including C in the “data” column (field 3202) is a third record corresponding to cluster 2. is there. On the other hand, the variable stored in the output data (field 3204) of the record corresponding to the cluster 2 in the clustered data relation list with output 4100 is C + D. Therefore, the output of the data flow list 4200 (C stored in the field 805 is replaced with C + D.

上記のようにデータフローリスト4200が格納する各変数(変数名)の置き換えを行った結果として、抽象化データフローリスト4300が得られる。なお、抽象化データフローリスト4300は本実施の形態の第3のデータフローリストに相当する。   As a result of replacing each variable (variable name) stored in the data flow list 4200 as described above, an abstract data flow list 4300 is obtained. The abstract data flow list 4300 corresponds to the third data flow list of the present embodiment.

上述ステップS2703の処理の結果として、データフローリスト抽象化部20は、統合後データフローリストを、抽象化データフローリストに変換することによって、データフロー図の規模と複雑さを低減する。   As a result of the processing in step S2703, the data flow list abstraction unit 20 converts the post-integration data flow list into an abstract data flow list, thereby reducing the scale and complexity of the data flow diagram.

図44に、図28に示すデータフローリスト2500に相当するデータフロー図を示し、図45に抽象化データフローリスト4300に相当するデータフロー図を示す。図45に示すデータフロー図は、図44のデータフロー図に比べて規模と複雑さが低減されていることがわかる。   44 shows a data flow diagram corresponding to the data flow list 2500 shown in FIG. 28, and FIG. 45 shows a data flow diagram corresponding to the abstract data flow list 4300. It can be seen that the data flow diagram shown in FIG. 45 is reduced in scale and complexity compared to the data flow diagram in FIG.

[1.2.3.データフローリスト図式化処理の例]
図2に戻り、上記データフローリスト図式化処理(S30参照)を詳述する。データフローリスト図式化処理において、データフロー図生成装置1、より詳しくは、データフローリスト図式化部30は、以下の処理手順に従って、抽象化データフローリスト4300からデータフロー図(若しくはデータフロー図を描画或いは印刷させるためのデータ)を生成する。
抽象化データフローリスト4300の各レコードについて以下の処理を行う。
まず、データフローリスト図式化部30は、第1の図形(例えば、楕円枠)を一つ用意する。
[1.2.3. Example of data flow list schematization process]
Returning to FIG. 2, the data flow list schematization process (see S30) will be described in detail. In the data flow list diagramming process, the data flow diagram generating device 1, more specifically, the data flow list diagramming unit 30 performs a data flow diagram (or data flow diagram) from the abstract data flow list 4300 according to the following processing procedure. Data for drawing or printing).
The following processing is performed for each record of the abstract data flow list 4300.
First, the data flow list schematizing unit 30 prepares a first graphic (for example, an ellipse frame).

データフローリスト図式化部30は、対象とするレコードの「値入力」列(フィールド803)に格納されている各変数について、対応する変数の名前を付けた第2の図形(例えば、四角枠)を作り、その第2の図形から上記第1の図形への向きに、実線の矢印でつなぐ。
なお、既に同じ名前を有する第2の図形がある場合には、同じ名前の第2の図形を作らずに、その第2の図形と上記第1の図形とを矢印でつなぐ。
The data flow list schematizing unit 30 uses a second graphic (for example, a square frame) in which each variable stored in the “value input” column (field 803) of the target record is given the name of the corresponding variable. Are connected in the direction from the second graphic to the first graphic with a solid arrow.
If there is a second graphic having the same name, the second graphic and the first graphic are connected with an arrow without creating the second graphic with the same name.

データフローリスト図式化部30は、上記レコードの「条件入力」列(フィールド804)に格納されている各変数の名前を付けた第2の図形を作り、その第2の図形から第1の図形への向きに、点線の矢印でつなぐ。なお、既に同じ名前の第2の図形がある場合には、同じ名前の第2の図形を作らずに、その第2の図形と上記第1の図形を矢印でつなぐ。   The data flow list schematizing unit 30 creates a second graphic with the name of each variable stored in the “condition input” column (field 804) of the record, and from the second graphic to the first graphic Connect to the direction with a dotted arrow. If there is already a second graphic with the same name, the second graphic and the first graphic are connected with an arrow without creating the second graphic with the same name.

データフローリスト図式化部30は、上記レコードの「出力」列(フィールド805)の各変数の名前を付けた第2の図形を作り、上記第1の図形からその第2の図形への向きに、実線の矢印でつなぐ。なお、既に同じ名前の第2の図形がある場合には、同じ名前の第2の図形を作らずに、その第2の図形と上記第1の図形を矢印でつなぐ。   The data flow list schematizing unit 30 creates a second graphic with the name of each variable in the “output” column (field 805) of the record, in the direction from the first graphic to the second graphic. Connect with solid arrows. If there is already a second graphic with the same name, the second graphic and the first graphic are connected with an arrow without creating the second graphic with the same name.

データフローリスト図式化処理の具体例を示す。図46に、データフローリスト図式化処理によって生成されるデータフロー図の例を示し、図47に、図46のデータフロー図の元となるデータフローリスト4700を示す。
以上でデータフローリスト図式化処理の例の説明を終える。
A specific example of the data flow list schematization process is shown. FIG. 46 shows an example of a data flow diagram generated by the data flow list schematization process, and FIG. 47 shows a data flow list 4700 that is the basis of the data flow diagram of FIG.
This is the end of the description of the example of the data flow list schematization process.

[2.利点]
本実施の形態によれば、ソースコードを入力として、理解が容易なデータフロー図を短時間で抽出することが可能である。
[2. advantage]
According to this embodiment, it is possible to extract a data flow diagram that is easy to understand in a short time by using source code as input.

[3.まとめ、その他]
本実施の形態によれば、ソースコードを入力として、理解が容易なデータフロー図を短時間で抽出することができる。
[3. Summary, Others]
According to the present embodiment, a data flow diagram that is easy to understand can be extracted in a short time by using source code as input.

別の実施例として、本発明を実装した試作ツールを用いて、C言語で記述された約1万行のソフトウェアで試行したところ、約15分でA3用紙1枚に収まる規模のデータフロー図が生成できた。またそれが十分に理解できるものであることが確認できた。   As another example, when a trial tool that implements the present invention was used and trialed with about 10,000 lines of software written in C, a data flow diagram that fits on one A3 sheet in about 15 minutes was obtained. I was able to generate. It was also confirmed that it was fully understandable.

試作ツールの利用者が、得られたデータフロー図を使って、そのソフトウェアをよく知る人に見せながら、全体のデータフローの流れを説明したところ、概ね正しくデータフローが生成されており、また、理解に必要十分なフローが残っていることが確認できた。   The user of the prototype tool explained the overall data flow using the obtained data flow diagram and showing it to those who know the software well. It was confirmed that there was sufficient flow necessary for understanding.

ソフトウェアでは、変数はデータを格納する器である。1つの変数に、常に同じデータ(値は変わるかもしれないが)が格納されるとは限らないので、単に変数の読み書きの関係を線で結んだだけでは正しいデータフロー図にならない場合がある。同じデータが複数変数に格納される場合、同じ形状のデータフロー(構造同値)が複数あるならば、それらは同じデータが入っている可能性が高い。本実施の形態はそれらをまとめることができ、それによって理解が容易なデータフロー図を短時間で抽出することができる。   In software, a variable is a container that stores data. Since the same data (although the value may change) is not always stored in one variable, there may be cases where a correct data flow diagram may not be obtained simply by connecting the read / write relationship of variables with a line. When the same data is stored in a plurality of variables, if there are a plurality of data flows (structural equivalence) having the same shape, it is highly likely that the same data is included. In the present embodiment, they can be put together, whereby a data flow diagram that is easy to understand can be extracted in a short time.

以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。   As mentioned above, although embodiment of this invention was described, this invention is not limited to these, A various change, addition, a combination, etc. are possible in the range which does not deviate from the meaning of invention.

1…データフロー図生成装置; 10…データフローリスト生成部; 20…データフローリスト抽象化部; 30…データフローリスト図式化部   DESCRIPTION OF SYMBOLS 1 ... Data flow diagram production | generation apparatus; 10 ... Data flow list production | generation part; 20 ... Data flow list abstraction part; 30 ... Data flow list schematization part

Claims (3)

ソースコードに含まれる命令文であって、代入、分岐、繰り返しのいずれかに該当する命令文に相当する機能を特定する第1情報と、
当該機能への入力となる変数を示す第2情報と、
当該機能において、分岐又は繰り返しが存在する場合、当該分岐又は繰り返しの条件になっている変数を示す第3情報と、
当該機能の出力となる変数を示す第4情報を
一つのレコード中に有するデータである第1のデータフローリストを生成し、その第1のデータフローリストにおける構造同値の変数同士及び機能同士を統合するように当該第1のデータフローリストを書き換えて第2のデータフローリストを出力する第1の手段と、
前記第2のデータフローリストを受け取り、当該第2のデータフローリストから、データのみの関係を取り出したリストであるデータ関係リストを生成し、当該データ関係リストを元に、当該データ関係リストにおける関係が密なデータ同士をまとめる処理であるクラスタリングを実行し、当該クラスタリングの結果を元に当該第2のデータフローリストを書き換えて第3のデータフローリストを出力する第2の手段と
を有するデータフロー図生成装置。
First information for specifying a function corresponding to an instruction sentence included in the source code and corresponding to one of assignment, branch, and repetition;
Second information indicating a variable to be input to the function;
In the function, when there is a branch or repetition, third information indicating a variable that is a condition of the branch or repetition;
A first data flow list, which is data having fourth information indicating a variable to be output of the function in one record, is generated, and the structural equivalence variables and functions in the first data flow list are integrated. First means for rewriting the first data flow list to output a second data flow list,
Receiving the second data flow list, generating a data relationship list that is a list in which only data relationships are extracted from the second data flow list, and based on the data relationship list, relationships in the data relationship list A data flow having a second means for executing clustering, which is a process of collecting dense data, rewriting the second data flow list based on the result of the clustering, and outputting a third data flow list Figure generator.
前記第1の手段は、前記第1のデータフローリストに含まれる変数であって、前記第1のデータフローリストにおいて、機能への入力となる変数を示す第2情報、及び当該分岐又は繰り返しの条件になっている変数を示す第3情報として登場する回数が所定の回数以上である変数を探索開始点と決定し、
上記探索開始点から所定の回数で辿れる範囲である部分データフローリストを決定し、
前記部分データフローリストのそれぞれについて、当該部分データフローリストに含まれる各機能の入力の数及び出力の数を決定し、
前記部分データフローリストの各機能の入力の数及び出力の数が、他の部分データフローリストの各機能の入力の数及び出力の数と一致するか否かを判定し、
各機能の入力の数及び出力の数と一致する部分データフローリスト同士を一つにまとめるように、前記第1のデータフローリストのレコードを統合し、レコードを削除し、又はレコード中の変数を書き換えて第2のデータフローリストを生成する
請求項1に記載のデータフロー図生成装置。
The first means is a variable included in the first data flow list, and in the first data flow list, second information indicating a variable to be input to a function, and the branch or repetition The variable whose number of times of appearance as the third information indicating the variable that is the condition is a predetermined number or more is determined as the search start point,
Determine a partial data flow list that is a range that can be traced a predetermined number of times from the search start point,
For each of the partial data flow lists, determine the number of inputs and the number of outputs of each function included in the partial data flow list,
Determining whether the number of inputs and the number of outputs of each function of the partial data flow list match the number of inputs and the number of outputs of each function of another partial data flow list;
The records of the first data flow list are integrated, the records are deleted, or the variables in the records are combined so that the partial data flow lists that match the number of inputs and the number of outputs of each function are combined. The data flow diagram generation device according to claim 1, wherein the second data flow list is generated by rewriting.
前記第2の手段は、前記第2のデータフローリストを受け取り、第2のデータフローリストにおける機能への入力となるデータを示す第2情報、分岐又は繰り返しの条件になっているデータを示す第3情報、当該機能の出力となるデータを示す第4情報である変数を列挙し、列挙された変数のうち重複したものを除去した後に残った変数ごとに一つのレコードを有し、各レコードは、上記残った変数を示す第5情報と、前記第2のデータフローリストにおいて、前記残った変数が当該機能への入力となる変数として現れるレコードにおける当該機能の出力となる変数として格納されている変数を示す第6情報を有するデータであるデータ関係リストを生成し、
前記データ関係リストから、前記第2のデータフローリストに含まれる各機能の関係の密さの値を算出し、前記関係の密さの値に基づいて、関係が密なレコードまたは変数をまとめるように、前記第2のデータフローリストのレコードを統合し、レコードを削除し、又はレコード中の変数を書き換えて前記第3のデータフローリストを生成する
請求項1又は2に記載のデータフロー図生成装置。
The second means receives the second data flow list, the second information indicating the data to be input to the function in the second data flow list, the second data indicating the condition of branching or repetition. 3 variables, enumerate variables that are the fourth information indicating the data to be output of the function, and have one record for each variable that remains after removing the duplicate of the enumerated variables, In the second information indicating the remaining variable and the second data flow list, the remaining variable is stored as a variable that becomes an output of the function in a record that appears as a variable that becomes an input to the function. Generating a data relation list that is data having sixth information indicating a variable;
From the data relation list, the dense value of the relation of each function included in the second data flow list is calculated, and based on the dense relation value, records or variables having a dense relation are collected. The data flow diagram generation according to claim 1 or 2, wherein the records of the second data flow list are integrated, the records are deleted, or the variables in the records are rewritten to generate the third data flow list. apparatus.
JP2014208413A 2014-10-09 2014-10-09 Data flow diagram generator Active JP6301803B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014208413A JP6301803B2 (en) 2014-10-09 2014-10-09 Data flow diagram generator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014208413A JP6301803B2 (en) 2014-10-09 2014-10-09 Data flow diagram generator

Publications (2)

Publication Number Publication Date
JP2016081089A JP2016081089A (en) 2016-05-16
JP6301803B2 true JP6301803B2 (en) 2018-03-28

Family

ID=55958625

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014208413A Active JP6301803B2 (en) 2014-10-09 2014-10-09 Data flow diagram generator

Country Status (1)

Country Link
JP (1) JP6301803B2 (en)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170805B2 (en) * 2010-07-20 2015-10-27 Hitachi, Ltd. Software maintenance supporting device for analyzing relationships between variables
JP2013222327A (en) * 2012-04-17 2013-10-28 Toyota Motor Corp Software verification device and software verification program

Also Published As

Publication number Publication date
JP2016081089A (en) 2016-05-16

Similar Documents

Publication Publication Date Title
Martinez et al. Bottom-up technologies for reuse: automated extractive adoption of software product lines
KR101732764B1 (en) Intelligent code differencing using code clone detection
WO2021007213A1 (en) Techniques for creating, analyzing, and modifying neural networks
JP4872529B2 (en) Reverse engineering support method
CN108279885B (en) Method and device for integrating software of multiple model codes
JP6090850B2 (en) Source program analysis system, source program analysis method and program
Bernal-Cárdenas et al. Guigle: A gui search engine for android apps
KR20120040883A (en) Use case diagrams are based on test case generation programs and use them to generate test cases
EP2827240A1 (en) Method for generating control-code by a control-code-diagram
Maguire et al. Visual compression of workflow visualizations with automated detection of macro motifs
WO2021007214A1 (en) Techniques for visualizing the operation of neural networks
Sargsyan et al. Scalable and accurate detection of code clones
JP6174469B2 (en) Accident analysis utilization support apparatus and method
US20210012212A1 (en) Techniques for modifying the operation of neural networks
JP4954674B2 (en) Software development support method, software development support device, software development support program, and computer system
JP6301803B2 (en) Data flow diagram generator
Chen et al. DCTracVis: a system retrieving and visualizing traceability links between source code and documentation
JP2006277282A (en) Model evaluation analysis system and model evaluation analysis program
Unterdechler et al. Identifying repeating patterns in IEC 61499 systems using Feature-Based embeddings
Liu et al. Visual exploration of software evolution via topic modeling
JP6185148B2 (en) Dependency verification device between software specifications and dependency verification method between software specifications
JPWO2014108994A1 (en) Project data creation device
JP6157166B2 (en) Parts generation system, method and program
Rahiman et al. CopyPoppy–A Source Code Plagiarism Detector
JP6437396B2 (en) Trace information management system, method, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180116

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180301

R151 Written notification of patent or utility model registration

Ref document number: 6301803

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151