JP2023071664A - Format-specific data processing operation - Google Patents
Format-specific data processing operation Download PDFInfo
- Publication number
- JP2023071664A JP2023071664A JP2023015892A JP2023015892A JP2023071664A JP 2023071664 A JP2023071664 A JP 2023071664A JP 2023015892 A JP2023015892 A JP 2023015892A JP 2023015892 A JP2023015892 A JP 2023015892A JP 2023071664 A JP2023071664 A JP 2023071664A
- Authority
- JP
- Japan
- Prior art keywords
- data
- graph
- format
- version
- computer program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 189
- 230000008569 process Effects 0.000 claims abstract description 151
- 238000004590 computer program Methods 0.000 claims abstract description 61
- 238000011144 upstream manufacturing Methods 0.000 claims description 38
- 230000009471 action Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 7
- 238000012360 testing method Methods 0.000 description 82
- 239000000523 sample Substances 0.000 description 62
- 238000003780 insertion Methods 0.000 description 61
- 230000037431 insertion Effects 0.000 description 61
- 230000008859 change Effects 0.000 description 8
- 238000011161 development Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
Abstract
Description
優先権の主張
本出願は、2016年6月3日出願の米国特許仮出願第62/345,217号、及び2017年2月15日出願の米国特許出願第15/433,467号の優先権を主張し、その両方の内容全体を参考としてここに組み込む。
PRIORITY CLAIM This application claims priority from U.S. Provisional Application No. 62/345,217, filed June 3, 2016, and U.S. Patent Application No. 15/433,467, filed February 15, 2017. and the entire contents of both are incorporated herein by reference.
背景
複雑な計算は、有向グラフ(「データフロー・グラフ」と呼ばれる)を用いたデータ・フローとして表すことのできる場合が多く、この計算の構成要素は、このグラフの頂点に関連付けられ、データは、グラフのリンク(弧、縁部)に対応する各構成要素間を流れる。各構成要素は、1つ又は複数の入力ポートでデータを受信し、このデータを処理し、1つ又は複数の出力ポートからデータを提供するデータ処理構成要素、及びデータ・フローの送信側又は受信側の役割を果たすデータセット構成要素を含むことができる。
Background Complex computations can often be represented as data flows using a directed graph (called a "dataflow graph"), the components of this computation being associated with the vertices of this graph, and the data being Flow between each component corresponding to a link (arc, edge) of the graph. Each component is a data processing component that receives data at one or more input ports, processes this data, provides data from one or more output ports, and a sender or receiver of data flows. It can contain data set components that play a supporting role.
概要
一態様では、方法は、コンピュータ・プログラムの第1のバージョンをプロセッサによって解析することであって、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットのデータに第1の動作を実行するように構成されることと、コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成することであって、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含むことを含み、この第2の動作が第1の動作に基づく。
Overview In one aspect, a method includes analyzing, by a processor, a first version of a computer program to identify a first process included in the first version of the computer program; A process configured to perform a first operation on data in a first format; and generating, by a processor, a second version of at least a portion of a computer program, comprising: one or more second processes configured to perform a second operation on data in a second format different from the first format, including omitting the process of Including in a second version of at least a portion, the second action being based on the first action.
各実施形態は、以下の特徴のうちの1つ又は複数を含むことができる。 Implementations can include one or more of the following features.
第1のプロセスを識別することは、第1の動作がデータのフォーマットに依存している第1のプロセスを識別することを含む。 Identifying the first process includes identifying the first process whose first operation depends on the format of the data.
第1のプロセスを識別することは、第2のフォーマットのデータに第1の動作を実行することができない第1のプロセスを識別することを含む。 Identifying the first process includes identifying the first process incapable of performing the first operation on data in the second format.
この方法は、第1のプロセスによって処理されるデータのフォーマットを決定することを含む。第1のプロセスを識別することは、この第1のプロセスによって処理されるデータのフォーマットを有するデータに、第1の動作を実行することができない第1のプロセスを識別することを含む。 The method includes determining the format of data to be processed by the first process. Identifying the first process includes identifying the first process incapable of performing the first operation on data having a format of data processed by the first process.
第1のプロセスを識別することは、コンピュータ・プログラムの第1のデータ処理要素を識別することを含み、この第1のデータ処理要素は、第1のプロセスを実行するように構成される。コンピュータ・プログラムの少なくとも一部分の第2のバージョンでの1つ又は複数の第2のプロセスを含むことは、コンピュータ・プログラムの少なくとも一部分の第2のバージョンでの1つ又は複数の第2のデータ処理要素を含むことを含み、この第2のデータ処理要素は、1つ又は複数の第2のプロセスを実行するように構成される。 Identifying the first process includes identifying a first data processing element of the computer program, the first data processing element configured to execute the first process. Including one or more second processes in a second version of at least a portion of the computer program includes one or more second data processing in the second version of at least a portion of the computer program. The second data processing element is configured to execute one or more second processes.
第1のフォーマットは、データ・タイプを含む。 A first format includes a data type.
第1のフォーマットは、データ要素のサイズを含む。 The first format contains the size of the data elements.
第1のプロセスは、第1のレコード・フォーマットのデータ・レコードに第1の動作を実行するように構成され、1つ又は複数の第2のプロセスは、第2のレコード・フォーマットのデータ・レコードに第2の動作を実行するように構成される。第1のレコード・フォーマットは、各レコードでのフィールドの名前を含む。 A first process is configured to perform a first operation on data records in a first record format, and one or more second processes are configured to perform data records in a second record format. is configured to perform the second operation on the A first record format contains the names of the fields in each record.
この方法は、ユーザ・インターフェースにおいて、1つ又は複数の動作の第1のセットの識別子を提示することを含む。 The method includes presenting an identifier of a first set of one or more actions in a user interface.
コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成することは、このコンピュータ・プログラムのこの部分のコピーを生成することを含む。 Generating a second version of at least a portion of a computer program includes generating a copy of this portion of the computer program.
この方法は、コンピュータ・プログラムのこの部分のコピーを修正して、第1のプロセスを省き、1つ又は複数の第2のプロセスを含むことを含む。 The method includes modifying the copy of this portion of the computer program to omit the first process and include one or more second processes.
この方法は、コンピュータ・プログラムの第2のバージョンを実行することを含む。 The method includes executing a second version of the computer program.
1つ又は複数の第2のプロセスは、オーバレイ指定によって定義される。コンピュータ・プログラムの第2のバージョンを生成することは、コンピュータ・プログラムの第1のバージョン及びオーバレイ指定に基づいて第2のバージョンを生成することを含む。このオーバレイ指定は、第1のプロセスの上流のプロセス及び第1のプロセスの下流のプロセスのうちの1つ又は複数を識別する。この方法は、第1のプロセスを定義する実行可能コードの解析に基づいて、第1のプロセスを識別することを含む。 One or more secondary processes are defined by overlay specifications. Generating the second version of the computer program includes generating a second version based on the first version of the computer program and the overlay specification. The overlay designation identifies one or more of a process upstream of the first process and a process downstream of the first process. The method includes identifying a first process based on analysis of executable code defining the first process.
コンピュータ・プログラムはグラフを含む。第1のプロセスは、このグラフの第1の構成要素によって表される実行可能なプロセスであり、1つ又は複数の第2のプロセスは、グラフの1つ又は複数の第2の構成要素によって表される実行可能なプロセスである。1つ又は複数の第2の構成要素は、グラフの上流構成要素からデータ・レコードを受信するように構成される。1つ又は複数の第2の構成要素は、グラフの下流構成要素にデータ・レコードを提供するように構成される。 A computer program includes a graph. A first process is an executable process represented by a first component of the graph and one or more second processes are represented by one or more second components of the graph. It is an executable process that One or more second components are configured to receive data records from upstream components of the graph. One or more second components are configured to provide data records to downstream components of the graph.
一態様では、システムは、コンピュータ・プログラムの第1のバージョンをプロセッサによって解析するための手段であって、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成される手段と、コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成するための手段であって、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含む手段とを備え、この第2の動作が第1の動作に基づく。 In one aspect, a system is means for analyzing a first version of a computer program by a processor, the analyzing identifying a first process included in the first version of the computer program. means configured to perform a first operation on data having a first format; and generating a second version of at least a portion of a computer program by a processor. comprising omitting the first process and configured to perform a second operation on data having a second format different from the first format; in a second version of at least a portion of the computer program, the second operation being based on the first operation.
一態様では、システムは、メモリに結合されたプロセッサを備え、このプロセッサ及びメモリは、コンピュータ・プログラムの第1のバージョンを解析するように構成され、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するように構成され、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含み、この第2の動作が第1の動作に基づく。 In one aspect, a system comprises a processor coupled to a memory, the processor and memory configured to analyze a first version of a computer program, the analyzing comprising the first version of the computer program. wherein the first process is configured to perform a first operation on data having a first format, the version of at least a portion of the computer program configured to generate a second version, including omitting the first process, and configured to perform a second operation on data having a second format different from the first format One or more second processes are included in a second version of at least a portion of the computer program, the second operations being based on the first operations.
一態様では、持続的なコンピュータ読取り可能な媒体は、コンピューティング・システムが、コンピュータ・プログラムの第1のバージョンを解析するようにし、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するようにし、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含むようにするための命令を記憶し、この第2の動作が第1の動作に基づく。 In one aspect, a persistent computer-readable medium causes a computing system to analyze a first version of a computer program, the analyzing included in the first version of the computer program. a second version of at least a portion of a computer program, the first process configured to perform a first operation on data having a first format; and omitting the first process, and configured to perform a second operation on data having a second format different from the first format. storing instructions for including the process of No. 2 in a second version of at least a portion of the computer program, the second action being based on the first action;
他の特徴及び利点は、以下の説明及び特許請求の範囲から明白になろう。 Other features and advantages will be apparent from the following description and claims.
図面の説明
説明
グラフなどの実行可能なアプリケーションは、この実行可能なアプリケーションによって処理されるデータ・レコードの1つ又は複数の特定のフォーマットに特有の、1つ又は複数のプロセスを含むことができる。このようなプロセスは、1つ又は複数の特定のフォーマットのみのデータに動作を実行することができ、互いに異なるフォーマットのデータにこれらのプロセスを実行しようとすると、エラー又は不正確な処理につながる場合がある。ここで、データの1つ又は複数の特定のフォーマットに特有の、実行可能なアプリケーションのプロセスを識別するための手法について述べる。実行可能なアプリケーションが、互いに異なるフォーマットのデータに動作を実行できるようにするために、これらのフォーマット特有のプロセスが省略され、1つ又は複数の他のプロセスが含まれる実行可能なアプリケーションの第2のバージョンを生成することができる。置換プロセスと呼ばれることもある、これら他のプロセスは、省略されたフォーマット特有のプロセスによって実行される動作に基づいているが、互いに異なる1つ又は複数のフォーマットのデータに特有であり、又は任意のフォーマットのデータに動作を実行できる動作を実行することができる。実行可能なアプリケーションの第2のバージョンに置換プロセスを含めることにより、実行可能なアプリケーションは、この実行可能なアプリケーションの元のバージョンが構成されたフォーマットとは異なるフォーマットのデータを処理できるようになる。
Description An executable application, such as a graph, may include one or more processes that are specific to one or more particular formats of data records processed by the executable application. Such processes may perform operations on data of only one or more specific formats, and attempting to perform these processes on data of different formats may lead to errors or incorrect processing. There is Techniques for identifying executable application processes specific to one or more particular formats of data are now described. In order to allow executable applications to perform operations on data of different formats, a second form of executable application in which these format-specific processes are omitted and one or more other processes are included. version can be generated. These other processes, sometimes referred to as replacement processes, are based on operations performed by the omitted format-specific processes, but are specific to one or more formats of data that differ from each other, or any An operation can be performed that can perform an operation on the data in the format. Including the replacement process in the second version of the executable application enables the executable application to process data in a format different from the format in which the original version of the executable application was constructed.
置換プロセスは、オーバレイ指定で定義することができ、このオーバレイ指定は、元の実行可能なアプリケーション(第1のアプリケーションとも呼ばれることがある)とは別のファイルである。オーバレイ指定で定義された置換プロセスは、元のアプリケーションの一部分になることなく、アプリケーションの第2のバージョン(第2のアプリケーションとも呼ばれることもある)に追加することができる。たとえば、アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、1つ又は複数のプロセスが省略され、1つ又は複数の対応する置換プロセスが含まれる第2のアプリケーションを生成する。省略されると、第1のアプリケーションに含まれるプロセスが、第2のアプリケーションには含まれないことを意味する。対応する置換構成要素は、第2のアプリケーション、たとえば省略されたプロセスが第1のアプリケーションに配置されていた位置に挿入される。 A replacement process can be defined in an overlay specification, which is a separate file from the original executable application (sometimes referred to as the first application). A replacement process defined in an overlay specification can be added to a second version of an application (sometimes called a second application) without becoming part of the original application. For example, when an application is compiled, the compiler takes into account the overlay file and produces a second application in which one or more processes are omitted and one or more corresponding replacement processes are included. If omitted, it means that the processes contained in the first application are not contained in the second application. A corresponding replacement component is inserted at the location where the second application, eg, the omitted process, was located in the first application.
置換プロセスは、挿入の例である。挿入の他の例には、テスト・ソース及びプローブが含まれ、これらは又オーバレイ指定によって定義することができる。テスト・ソースは、実行可能なアプリケーションによる処理向けの、テスト・データなどのデータを提供できる置換データ・ソースである。プローブは、実行可能なアプリケーションがデータを書き込む際の、代替の書込み先である。挿入は、たとえば、グラフなどの実行可能なアプリケーションをテスト又はデバッグするのに有用になる場合がある。たとえば、試験者又は開発者は、アプリケーションに加える変更の効果を観察するために、入力データの特定のセットを使用してテストを実行したいと思うことがある。この変更の前後ともに、入力データの一貫したセットを使用してアプリケーションを実行することにより、アプリケーションが出力するデータに加えるこの変更の効果を監視することができる。例によっては、アプリケーションの機能の全てを少なくとも一度は実行することになる、テスト・データのセットなど、試験者は、アプリケーションをテストするときに使用されることになるテスト・データの特定のセットを有する場合がある。同様にして、試験者は、アプリケーションが出力データを書き込む際の標準の書込み先とは異なる特定の書込み先に、アプリケーションが出力するこのデータを書き込みたいと考えることがある。 The replacement process is an example of insertion. Other examples of inserts include test sources and probes, which can also be defined by overlay specifications. A test source is a replacement data source that can provide data, such as test data, for processing by an executable application. Probes are alternative destinations for executable applications to write data. Insertion may be useful, for example, for testing or debugging executable applications such as graphs. For example, a tester or developer may wish to run tests using a particular set of input data to observe the effects of changes to an application. By running the application with a consistent set of input data both before and after this change, the effect of this change on the data output by the application can be monitored. In some instances, the tester has a particular set of test data that will be used when testing the application, such as a set of test data that will exercise all of the application's functionality at least once. may have. Similarly, the tester may wish to write this data output by the application to a specific destination that is different from the standard destination to which the application writes output data.
例によっては、挿入は、アプリケーションの自動解析に基づいて自動的に定義することができる。たとえば、アプリケーションでのフォーマット特有のプロセスの自動識別に基づいて、置換構成要素を自動的に定義することができる。テスト・ソース及びプローブは、アプリケーションのデータ・ソース及び出力データ受信側の自動識別に基づいて自動的に定義することができる。 In some examples, the insertion can be automatically defined based on automatic analysis of the application. For example, replacement components can be automatically defined based on automatic identification of format-specific processes in the application. Test sources and probes can be automatically defined based on the automatic identification of the application's data sources and output data receivers.
例によっては、実行可能なアプリケーションはグラフベースのプロセスである。グラフベースのプロセスは、ある1つの構成要素から別の構成要素へのデータの流れを示すフローによって接続された、それぞれ実行可能なプロセスを表す1つ又は複数の構成要素を含む。置換プロセスは、グラフベースのプロセスでの構成要素に関連付けられたオブジェクトである。置換プロセス(置換え構成要素とも呼ばれることがある)は、既存の構成要素によって処理されたはずのデータが置換構成要素によって代わりに処理されるように、グラフ内の既存の構成要素を置換することができる。テスト・ソース及びプローブの挿入は、グラフベースのプロセスでのフローに関連付けられたオブジェクトである。テスト・ソースは、フローを通過するデータ(たとえば、アップストリーム・データ)を新規データで置換することができ、その結果、グラフのそれぞれの実行において上流側の計算を再実行する必要はない。たとえば、テスト・ソースは、データ・ソースからではなくテスト・ソースからグラフにテスト・データが提供されるよう、このデータ・ソースを置換することができる。プローブは、グラフが実行されるとき、フローを通過するデータを監視することができ、後に検査又は再使用するために、このデータを保存することができる。たとえば、プローブは、データベースなどの出力データ受信側に他の方法で保存されていたはずのデータを受信することができる。 In some examples, the executable application is a graph-based process. A graph-based process includes one or more components, each representing an executable process, connected by flows that show the flow of data from one component to another. A replacement process is an object associated with a component in a graph-based process. A replacement process (sometimes called a replacement component) can replace an existing component in a graph such that data that would have been processed by the existing component is instead processed by the replacement component. can. Insertion of test sources and probes are objects associated with flows in graph-based processes. A test source can replace data passing through the flow (eg, upstream data) with new data so that upstream computations do not have to be re-run on each execution of the graph. For example, a test source can replace this data source such that the graph is provided with test data from the test source rather than from the data source. The probe can monitor the data passing through the flow as the graph is executed, and can save this data for later inspection or reuse. For example, the probe may receive data that would otherwise have been stored in an output data receiver such as a database.
オーバレイ指定で定義される挿入は、元のアプリケーションの一部分になることなく、実行中にアプリケーションに追加することができる。アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、挿入を含む実行可能なアプリケーションを生成する。アプリケーションの第1のバージョンとしての元のアプリケーション、及びアプリケーションの第2のバージョンとしての挿入を含むアプリケーションを参照する場合がある。たとえば、グラフベースのプロセスの例では、オーバレイ指定において定義された挿入オブジェクトと結合された、グラフの第1のバージョンの構成要素を含むグラフの第2のバージョンとして、実行可能なグラフを視覚的に表すことができる。例によっては、実行可能なグラフはシェル・スクリプトであり、ファイル内には記憶されない。例によっては、実行可能なグラフ及びこのグラフは、別々のファイルに記憶される。 Inserts defined by overlay specifications can be added to an application while it is running without becoming part of the original application. When the application is compiled, the compiler takes into account the overlay files and produces an executable application containing the inserts. We may refer to the original application as the first version of the application and the application containing the insert as the second version of the application. For example, in the graph-based process example, the executable graph can be visualized as a second version of the graph containing the elements of the first version of the graph combined with the insert objects defined in the overlay specification. can be represented. In some examples, the executable graph is a shell script and not stored in a file. In some examples, the executable graph and this graph are stored in separate files.
グラフの第2のバージョンへの挿入の取込みは、グラフの第1のバージョンを修正しない。その代わりに、挿入定義は、別々のファイル(たとえば、別々のオーバレイ指定)にとどまり、コード生成の開始時点において、修正済みグラフに含めるために通常のグラフ構成要素へと変換することができる。したがって、元のグラフを意図せずに破壊するリスクがない。 Incorporating inserts into the second version of the graph does not modify the first version of the graph. Instead, the insert definitions can remain in separate files (e.g., separate overlay specifications) and converted to regular graph constructs for inclusion in the modified graph at the start of code generation. Therefore, there is no risk of unintentionally destroying the original graph.
図1には、グラフ100の一例が示してある。グラフ100は、フローによって接続されたデータ処理構成要素を含む、コンピュータ・プログラムの視覚表現である。2つの構成要素を接続するフローは、第1の構成要素から出力されたレコードが、第2の構成要素に渡されることを示す。フローによって第1の構成要素が第2の構成要素に接続されているとき、第1の構成要素は第2の構成要素を参照する。
An example of a
(図に示すような)データベースなどのデータ・ソース102、ファイル、キュー、実行可能文(たとえば、SQL文)、又はグラフ100の外部にある別のタイプのデータ・ソースは、グラフ100によって処理される1つ又は複数のデータ・レコードを含む。外部という言葉によって、データ・ソース102のデータが、グラフ100内に記憶されないことを意味する。データ・ソース102は、フローによってフィルタ構成要素103に接続されている。一般に、フィルタ構成要素は、所定の判定基準を満たさないレコードを選別又は削除する。この例では、フィルタ構成要素103は、オハイオ州在住の顧客のデータ・レコードを通過させ、その他のレコードを拒否する。フィルタ構成要素103は、選別済みのデータ・レコードを郵便番号でソートする、ソート構成要素104に接続されている。ソート構成要素104は、2つの異なる方式でデータ・レコードを処理できるように、このデータ・レコードのコピーを作成する、複製構成要素106に接続されている。複製構成要素は、フォーマット変更構成要素108、及び表現式による選別の構成要素110に接続されている。たとえば、オハイオ州在住の顧客のデータ・レコードの1つの実現値は、郵便番号でソートされ、フォーマット変更構成要素108に送られ、又データ・レコードの別の実現値が、表現式による選別の構成要素110に送られる。フォーマット変更構成要素108は、データ・レコードのフォーマットをそれとは異なるデータ・フォーマットに変更し、表現式による選別の構成要素110は、データ・レコードに関連付けられた表現式に基づいて、このデータ・レコードを削除する。フォーマット変更構成要素108、及び表現式による選別の構成要素110は、受信済みのデータ・レコードを結合する集約構成要素112に接続されており、この集約構成要素は、(図に示すような)データベース、ファイル、キュー、又は下流処理構成要素など、グラフの外部に存在する出力データ受信側構成要素114に接続されている。外部という言葉によって、出力データ受信側114のデータが、グラフ100内に記憶されないことを意味する。グラフ100は、各構成要素間に多くのフローを含むが、データ・ソース102とフィルタ構成要素103との間のフロー116(ソース/フィルタ・フロー116と呼ぶことがある)、及び集約構成要素112と出力データ受信側114との間のフロー118(集約/出力フロー118と呼ぶことがある)が、この例では特に対象となる。
グラフの各構成要素のうちの1つ又は複数は、フォーマット特有の構成要素とすることができる。フォーマット特有の構成要素は、1つ又は複数の特定のフォーマットのデータのみを処理できる構成要素である。データ・フォーマットは、個々のデータ項目の特性(たとえば、レコードのフィールド内の値の特性)、又はレコードの特性(レコード・フォーマットと呼ばれることもある)である。個々のデータ項目の特性の例は、データ項目のサイズ(たとえば、1バイトASCIIデータ項目、若しくはマルチバイト・データ項目)、データ項目のタイプ(たとえば、ストリング・タイプ、整数タイプ、ブール・タイプ、若しくは他のデータ・タイプ)、又は個々のデータ項目の別の特性など、データ項目について数多くのバイトを含む。レコード・フォーマットの例には、レコード内のフィールドの名前、レコード内のフィールドの位置、レコード内のフィールドの数、階層型レコード、フィールドの配列又は繰返しグループ、入れ子状の配列、サブレコード、又はレコードの別の特性が含まれる。 One or more of each component of the graph may be format-specific components. Format-specific components are components that can only process data in one or more specific formats. A data format is a characteristic of an individual data item (eg, a characteristic of a value within a field of a record) or a characteristic of a record (sometimes called a record format). Examples of characteristics of individual data items are the size of the data item (e.g., single-byte ASCII data item, or multibyte data item), the type of data item (e.g., string type, integer type, Boolean type, or other data types), or other characteristics of individual data items. Examples of record formats include the name of a field within a record, the position of a field within a record, the number of fields within a record, a hierarchical record, an array or repeating group of fields, a nested array, a subrecord, or a record includes another characteristic of
グラフは、特定のデータ・フォーマットに特有の構成要素を含むとき、特定のフォーマットのデータのみを処理できてもよい。グラフが、互いに異なるフォーマットを有するデータを処理するのに使用される場合、エラーが発生する場合があり、又はデータが不正確に処理される場合がある。フォーマットが異なるデータをグラフが処理できるようにするには、フォーマット特有の構成要素のうちの1つ又は複数を、異なるフォーマットのデータを処理することのできる構成要素で置換することができる。置換構成要素は、様々な構成要素に特有であるフォーマット特有の構成要素とすることができ、又は任意のフォーマットのデータを処理できる構成要素(これを、フォーマットに依存しない構成要素と呼ぶことがある)とすることができる。 A graph may only be able to process data of a particular format when it contains components specific to that particular data format. When graphs are used to process data having formats that differ from each other, errors may occur or data may be processed incorrectly. To enable a graph to process data in different formats, one or more of the format-specific components can be replaced with components that can process data in different formats. A replacement component can be a format-specific component that is specific to the various components, or a component that can process data in any format (sometimes called a format-independent component). ).
たとえば、図1の例では、ソート構成要素104は、郵便番号フィールド内の値によってレコードをソートする。この例でのソート構成要素104は、整数だけを処理できるフォーマット特有の構成要素である。グラフ100のオペレータは、グラフ100を使用して、郵便番号フィールドが文字数字の列を含んでもよいデータの新規セットを処理したいと思うことがある。
For example, in the example of FIG. 1,
図2を参照すると、ソート構成要素104が省略され、置換ソート構成要素204が含まれる、グラフ100の第2のバージョン200が生成される。置換ソート構成要素204は、グラフの第2のバージョン200内での、ソート構成要素104と同じ位置に配置され、文字数字の列をソートすることができる。グラフの他の構成要素は変化しない。グラフの第2のバージョン200は、データの新規セットをこのように処理することができる。
Referring to FIG. 2, a
構成要素によっては、任意のフォーマットのデータを受信し、このデータに動作を実行することができてもよいが、特定のフォーマットのデータを出力してもよい。互いに異なるフォーマットのデータが出力として望まれる場合(たとえば、特定のフォーマットを指定する別のアプリケーションへの入力として提供されるように)、グラフは、このデータを提供することができない場合がある。グラフが所望のフォーマットのデータを出力できるようにするために、フォーマット特有の構成要素のうちの1つ又は複数を、所望のフォーマットのデータを出力できる構成要素で置換することができる。 Some components may be able to receive and perform operations on data in any format, but may output data in a particular format. If data in different formats are desired as output (eg, to be provided as input to another application that specifies a particular format), the graph may not be able to provide this data. To enable the graph to output data in the desired format, one or more of the format-specific components can be replaced with components capable of outputting data in the desired format.
やはり図1を参照すると、フォーマット変更構成要素108は、特定のフォーマットのデータを出力するフォーマット特有の構成要素である。たとえば、フォーマット変更構成要素108は、4つのフィールド、Name、Account_num、Balance、及びTrans_dateを有するデータ・レコードを出力してもよい。グラフ100のオペレータは、たとえば、入力データのレコード・フォーマットについて特定の要求条件を有する別のアプリケーションによって出力データを処理できるように、互いに異なるフォーマットの出力データをグラフ100が生成するようにしたいと思うことがある。この例では、出力データの所望のフォーマットは、4つのフィールド、Cust_name、Balance、Account_num、及びTrans_dateを含む。すなわち、出力データの第1のフィールドの名前を変更し、第2のフィールド及び第3のフィールドを切り替える必要がある。
Still referring to FIG. 1,
図3を参照すると、フォーマット変更構成要素108が省略され、置換フォーマット変更構成要素308が含まれる、グラフ100の第2のバージョン300が生成される。置換フォーマット変更構成要素308は、グラフの第2のバージョン300内での、フォーマット変更構成要素108と同じ位置に配置され、所望のフォーマットの出力データを生成することができる。グラフの他の構成要素は変化しない。
Referring to FIG. 3, a
例によっては、フォーマット特有の構成要素の上流又は下流の1つ又は複数の構成要素など、グラフの他の構成要素を省略することもできる。場合によっては、省略されたその他の構成要素のうちの1つ又は複数の代わりに、置換構成要素を含めることができる。 In some examples, other components of the graph may be omitted, such as one or more components upstream or downstream of the format-specific component. In some cases, replacement components may be included in place of one or more of the omitted other components.
例によっては、グラフ100の試験者は、グラフ100をデバッグして、その機能を検証したいと考えることがある。場合によっては、試験者は、データが、ある構成要素から別の構成要素に流れるとき、このデータを検証したいと思うことがある。場合によっては、試験者は、グラフ100での上流構成要素を迂回し、その代わりに、迂回された構成要素の位置にデータを挿入したいと思うことがある。場合によっては、試験者は、グラフを変更することの、グラフが出力するデータへの影響を監視するために、入力データの一貫したセットを使用してグラフ100の動作をテストしたいと思うことがある。場合によっては、試験者は、グラフの機能の全てを少なくとも1回だけは実行できるようにすることを知っている入力データのセットを使用して、グラフ100の動作をテストし、したがってグラフの完全なテストを可能にしたいと思うことがある。
In some examples, a tester of
グラフ100をデバッグする際、グラフの修正をやめることが望ましい場合がある。たとえば、試験者は、グラフの機能を損なうリスクを負いたくない思うことがある。例によっては、試験者は、グラフへのアクセスを制限されているか、又はアクセスできない場合がある(たとえば、試験者には、グラフを編集するのに必要な許可がない場合がある)。グラフ100を修正することなく、このグラフ100をデバッグするために、オーバレイを使用してグラフをデバッグすることができる。例によっては、たとえばグラフの自動解析に基づいて、このオーバレイを自動的に指定することができる。元のグラフ100(グラフの第1のバージョンと呼ばれることがある)、及びオーバレイ指定に基づいて、グラフ100の少なくとも一部分の第2のバージョンを生成することができる。
When debugging
グラフ100の各構成要素間のフローをデータが通過するとき、たとえば、第1の構成要素から第2の構成要素までのフローに沿って、又は出力データ受信側までのフローに沿って、プローブが、このデータを収集又は監視する。たとえば、グラフ100が実行される際にデータがフローを通過するとき、このデータを監視し、後で検査するために保存し、又は再使用するために保存することができる。オーバレイ指定は、収集又は監視すべきデータを運ぶフローを参照するプローブを定義することができる。プローブは、データを収集又は監視すべきフローを指定する。プローブは、特定の値を報告し、又は特定の値が、所定範囲内又は所定範囲外にあるときに、そのことを報告するように構成することができる。プローブを通過するデータは、後で解析又は使用するために保存してもよく、たとえば、このデータは、単層ファイル又はリレーショナル・データベースに記憶することができる。
As data traverses the flow between each component of
例によっては、プローブは、グラフ100のある構成要素から、ファイル又はデータベースなど出力データ受信側までのフローを参照することができる。グラフ100のデバッギング中に、データ受信側までのフローに沿ってプローブを配置することによって、このプローブは、グラフ100から出力されるデータを受信する。たとえば、グラフ100がデバッギング・モードで実行されるたびに、出力データをプローブによって受信し、ファイルに書き込むことができ、その結果、様々なグラフ実行からの出力データを比較することができ、又は他の方法で評価することができる。例によっては、出力データ受信側が自動的に識別され、オーバレイが自動的に指定されて、識別された出力データ受信側の前に挿入するためのプローブを定義する。
In some examples, a probe can refer to a flow from some component of
例によっては、プローブは、グラフ100の上流構成要素から下流構成要素までのフローを参照することができる。グラフ100のデバッギング中に、下流構成要素までのフローに沿ってプローブを配置することによって、このプローブは、下流構成要素によって他の方法で受信されていたはずのデータを受信し、したがって下流構成要素が実行しないようにする。たとえば、試験者は、下流構成要素の前にグラフが処理する結果を監視したいと考えることがある。たとえば、この下流構成要素は、グラフの外部に影響を及ぼす機能を有してもよく、たとえば、下流構成要素は、この下流構成要素によって自身のクレジット・カードのレコードが処理されるそれぞれの人に向けて、テキスト・メッセージを送信してもよい。グラフのデバッギング中、試験者は、グラフの外部に影響を及ぼすような構成要素を使用不可にしたいと考えることがある。
In some examples, a probe may refer to a flow from an upstream component to a downstream component of
グラフ100の2つの構成要素間の特定のフローにおいて、テスト・ソースがグラフ100にデータを挿入する。オーバレイ指定は、テスト・ソースからのデータで置換すべきデータを運ぶフローを参照する、テスト・ソースを定義することができる。例によっては、テスト・ソースは、通常、フローを通過するはずのデータを、新規のデータで置換する。状況によっては、テスト・ソースは、これまでに保存されたデータを読み取り、このデータを下流構成要素に渡すように構成することができる。例によっては、テスト・ソースは、データベース又はファイルなど、データ・ソースからのフローにおいて、データをグラフ100に挿入する。テスト・ソースは、データ・ソースによって他の方法で提供されたはずのデータと同じフォーマットを有するデータを挿入することができる。例によっては、データ・ソースが自動的に識別され、オーバレイが自動的に指定されて、識別されたデータ・ソースを置換するためのテスト・ソースを定義する。
A test source inserts data into
例によっては、あるポイントまで(たとえば、ある構成要素まで)グラフ100を実行した結果が、これまでに検証されていた場合がある。すなわち、上流プロセス機能が、あるポイントまで検証されていた場合がある。こうした場合、グラフ100が実行されるたびに上流構成要素が各機能を再処理することは、非効率になる場合がある。テスト・ソースは、そのあるポイントにおいて、データ(たとえば、これまでに検証されたデータ)をグラフに挿入することができる。このようにして、これまでに実行されたグラフ100のセクション全体を迂回してもよい。
In some examples, the results of running
図4には、1つ又は複数の挿入を定義するオーバレイ指定200の一例が示してある。挿入は、グラフ(たとえば、グラフ100)のフローに関連付けられたオブジェクトとすることができ、プローブ、テスト・ソース、又は置換構成要素の形をとることができる。図4の例では、オーバレイ指定200は、1つのテスト・ソース定義201、及び1つのプローブ定義213を含む。オーバレイ指定200は、グラフ100についての仕様を含むファイルとは別のファイルなど、ファイルに記憶することができる。
An example of an
オーバレイ指定200は、挿入定義が対応できる先のグラフを指定する、3行のヘッダで開始する。ヘッダの後には、テスト・ソース定義201、プローブ定義213、及び置換構成要素定義(図示せず)が続く。
The
テスト・ソース定義201は、名前202、上流ポート204、下流ポート206、挿入タイプ208、プロトタイプ・パス210、及びレイアウト・パラメータ212を含む。
Test
テスト・ソース定義201の上流ポート204は、テスト・ソースをグラフ100に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。フローの上流にある構成要素は、その出力ポートからフロー上にデータが出力される元の構成要素である。図4の例では、テスト・ソース定義201の上流ポート204が、データベース102の出力を指す。テスト・ソース定義201の下流ポート206は、テスト・ソースをグラフ100に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。フローの下流にある構成要素は、その入力ポートにおいてフローからデータが受信される構成要素である。図4の例では、テスト・ソース定義の下流ポート206が、フィルタ構成要素103の入力を指す。したがって、この例でのテスト・ソース定義201は、データベース102の出力と、フィルタ構成要素103の入力との間のフローにテスト・ソースが配置されることになり、その結果、このテスト・ソースが提供するデータが、データベース102からの入力データを置換できることを示す。
The
挿入タイプ208は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。図4の例では、値「0」がテスト・ソースを定義し、値「1」がプローブを定義し、値「2」が置換構成要素を定義する。他の値を使用して、挿入のタイプを定義することもできる。この挿入はテスト・ソースなので、挿入タイプ208の値は「0」である。
プロトタイプ・パス210は、挿入のタイプを示す。この例では、この挿入はテスト・ソースなので、プロトタイプ・パス210は、入力ファイル構成要素を指定する。プロトタイプ・パス210は、特定のタイプの挿入を定義するコードを含むファイルを指す。レイアウト・パラメータ212は、テスト・ソースが含むことになるデータを含むソース・ファイルの位置を定義する。例によっては、この位置はファイル・パスである。ソース・ファイル内のデータは、通常、上流ポート204及び下流ポート206によって定義されるフローを通過するはずのデータを置換することになる。すなわち、テスト・ソースがグラフ100に適用されると、フィルタ構成要素103が、データベース102からのデータを受信するのではなく、ソース・ファイル内のデータを受信する。
A
このソース・ファイルは、テスト・ソースの下流の構成要素によって他の方法で受信されるはずのデータと同じフォーマットを有するデータを含む。例によっては、ソース・ファイル内のデータは、テスト・ソースの上流にあるデータ・ソース(たとえば、データベース)内のデータと同じでもよい。たとえば、データベース102からのデータ・レコードを、ソース・ファイルにコピーすることができる。例によっては、データ・ソースは、SQLクエリなどの実行可能文を示す。これらの例では、SQLクエリを実行することができ、このクエリ実行の結果をソース・ファイルに記憶することができる。例によっては、ソース・ファイル内のデータは、データ・ソース以外のどこかから取得することができる。たとえば、ソース・ファイル内のデータを生成して、グラフ100を完全にデバッグするために、あるデータ(たとえば、ある範囲の値)を確実に処理することができる。例によっては、データ・ソース内のデータが変更されても、ソース・ファイル内のデータは同じままであり、したがって、入力データの一貫したセットでデバッギングを継続できるようになる。
This source file contains data that has the same format as data that would otherwise be received by components downstream of the test source. In some examples, the data in the source files may be the same as the data in the data source (eg, database) upstream of the test source. For example, data records from
例によっては、ソース・ファイル内のデータは、グラフ100の通常の実行中にフローを通過するはずのデータと同じでもよいが、テスト・ソースを使用してこのデータを挿入することによって、上流構成要素は処理を控えることができる。たとえば、複製構成要素106などの上流構成要素は、データを処理するのに大量のシステム・リソースを必要とすることがあり、又は、データ・フロー・グラフ100内の他の構成要素と比較して、データを処理するのに要する時間が相対的に長くなることがある。したがって、既知のデータ(たとえば、通常の実行中にフローを通過するはずの同じデータ)をフローに挿入して、時間を節約し、又はシステム・リソースを保護することができる。
In some examples, the data in the source file may be the same data that would have passed through the flow during normal execution of the
プローブ定義213は、名前214、上流ポート216、下流ポート218、挿入タイプ220、及びプロトタイプ・パス222を含む。
プローブ定義213の上流ポート216は、プローブをグラフ100に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。図4の例では、プローブ定義213の上流ポート216が、集約構成要素112の出力を指す。プローブ定義213の下流ポート218は、プローブをグラフ100に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。図4の例では、プローブ定義213の下流ポート218が、出力データ受信側構成要素114を指す。したがって、この例でのプローブ定義213は、集約構成要素112の出力と、出力データ受信側構成要素114との間のフローにプローブが配置されることになり、その結果、出力データ受信側構成要素に他の方法で書き込まれたはずのデータをプローブが受信することを示す。
The
プローブ定義213の挿入タイプ220は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。この挿入はプローブなので、挿入タイプ220の値は「1」である。
プロトタイプ・パス222は、挿入のタイプを示す。この例では、この挿入はプローブなので、プロトタイプ・パス222は出力ファイル構成要素を指定する。プロトタイプ・パス222は、特定のタイプの挿入を定義するコードを含むファイルを指す。
Prototype
例によっては、プローブによって監視すべきデータは、システムによって自動的に作成されるファイルに記憶される。このファイルは、システムによって決定される位置に記憶することができる。プローブは、上流ポート216及び下流ポート218によって定義されたフローを通過するデータを監視する。すなわち、プローブがグラフ100に適用されると、集約構成要素112の出力から、出力データ受信側構成要素114の入力まで通過するデータが監視され、システムによって自動的に作成されるファイルに記憶される。例によっては、このデータを、記憶する前に監視することができる。ファイルは、プローブ定義によって参照される構成要素(この例では、外部のデータ受信側構成要素114)によって受信されたはずの同じフォーマットのデータを受信することができる。
In some examples, data to be monitored by probes is stored in files that are automatically created by the system. This file can be stored at a location determined by the system. The probe monitors data passing through the flow defined by
例によっては、グラフ100の自動解析の結果として、オーバレイ指定によって、1つ又は複数のプローブ又はテスト・ソースの挿入を定義することができる。たとえば、グラフ100の自動解析を実行して、データベース、ファイル、又は他のタイプのデータ・ソースなど、任意のデータ・ソースを識別することができる。識別されたデータ・ソースのうちの1つ又は複数を、テスト・ソースで自動的に置換することができる。置換されたデータ・ソースにより、データ・ソースのすぐ下流のフローにテスト・ソースが挿入され、その結果、データ・ソースからのデータではなく、このテスト・ソースからのデータが下流構成要素に提供されることを意味する。同様に、グラフ100の自動解析は、データベース、ファイル、又は他のタイプの出力データ受信側など、任意の出力データ受信側を識別することができる。識別された出力データ受信側のうちの1つ又は複数を、プローブで自動的に置換することができる。置換された出力データ受信側により、出力データ受信側のすぐ上流のフローにプローブが挿入され、その結果、上流構成要素からのデータが、出力データ受信側ではなくプローブによって受信されることを意味する。グラフ100の自動解析を使用して、特定のタイプの構成要素(たとえば、実行するとグラフ100の外部に影響を及ぼす特定のタイプの構成要素)など、他の構成要素を識別することもできる。
In some examples, the overlay specification may define the insertion of one or more probes or test sources as a result of the automatic analysis of
テスト・ソース及びプローブの挿入のさらなる説明が、米国特許出願第14/715,807号に提示されており、その内容全体を参考としてここに組み込む。 Further discussion of test source and probe insertion is presented in US patent application Ser. No. 14/715,807, the entire contents of which are incorporated herein by reference.
置換構成要素定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ・パス、及びレイアウト・パラメータを含む。置換構成要素定義の上流ポートは、この置換構成要素がグラフ100内に挿入される位置のすぐ上流にある構成要素の出力ポートを参照する。置換構成要素定義の下流ポートは、この置換構成要素がグラフ内に挿入される位置のすぐ下流にある構成要素の入力ポートを参照する。上流ポート及び下流ポートに基づいて、置換構成要素によって置換すべきグラフ100内の既存の構成要素を識別することができる。挿入タイプは、この挿入が置換構成要素であると定義する。
A replacement component definition includes a name, upstream port, downstream port, insertion type, prototype path, and layout parameters. The upstream port of a replacement component definition refers to the output port of the component immediately upstream from where this replacement component is inserted into
プロトタイプ・パスは、挿入のタイプを示す。この例では、この挿入が置換構成要素なので、プロトタイプ・パスは、置換構成要素を定義するコードを含むファイルを指す。置換構成要素を定義するコードは、置換すべき既存の構成要素を定義するコードに基づいているが、所望のフォーマットのデータを処理することができる。 The prototype path indicates the type of insert. In this example, this insertion is a replacement component, so the prototype path points to the file containing the code defining the replacement component. The code defining the replacement component is based on the code defining the existing component to be replaced, but can handle data in any desired format.
例によっては、グラフの自動解析の結果として、オーバレイ指定によって、グラフ用の1つ又は複数の置換構成要素を定義することができる。たとえば、グラフ内の各構成要素の仕様を解析することができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードを解析すると、構成要素によって表されるデータ処理動作がデータのフォーマットに依存しているかどうかを明らかにすることができる。 In some examples, overlay specifications may define one or more replacement components for a graph as a result of automatic analysis of the graph. For example, the specifications of each component in the graph can be analyzed. A component specification includes or refers to code that defines this component, eg, code that defines the data processing operations represented by this component. Analysis of the code can reveal whether the data processing operations represented by the components depend on the format of the data.
置換構成要素は、識別されたフォーマット特有の構成要素のうちの1つ又は複数について定義される。例によっては、置換すべきフォーマット特有の構成要素は、ユーザ入力に基づいて識別される。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを置換するか判定してもよい。例によっては、グラフによってこれまでに処理されたデータのフォーマットに対して入力データのフォーマットの自動解析を実行して、フォーマット特有の構成要素のいずれかを置換するかを識別することができる。 Replacement components are defined for one or more of the identified format-specific components. In some examples, the format-specific component to replace is identified based on user input. For example, a user may use their knowledge of the format of the input data, the process represented by each format-specific component, or both, to determine whether to replace any of the components. . In some examples, an automatic analysis of the format of the input data can be performed against the format of the data previously processed by the graph to identify replacements for any of the format-specific components.
例によっては、グラフベースではないコンピュータ・プログラムでは、コンピュータ・プログラム内の1つ又は複数のフォーマット特有のプロセスを識別し、1つ又は複数の他のプロセス、たとえば、特定のフォーマットのデータに対して作用できるプロセス、又は任意のフォーマットのデータ対して作用できるプロセスでこれを置換することができる。 In some examples, a non-graph-based computer program identifies one or more format-specific processes within the computer program and performs one or more other processes, e.g., on data in a particular format. It can be replaced by a process that can operate on or can operate on data in any format.
図5を参照すると、テスト・ソース、プローブ、又はその両方を挿入するため、解析エンジン300が、グラフ100を自動的に解析して、データ・ソース302及び出力データ受信側304を識別する。たとえば、解析エンジン300は、グラフ100のそれぞれのノードについて、パラメータ及び接続にアクセスすることができる(用語「ノード」及び「構成要素」は、これを区別なく使用することがある)。所与のノードが入力接続をもたない場合、解析エンジン300は、このノードをデータ・ソースと識別する。同様に、所与のノードが出力接続をもたない場合、解析エンジン300は、このノードを出力データ受信側と識別する。グラフのそれぞれのノードにアクセスし、これを解析するため、解析エンジンは、グラフの各接続(用語「接続」及び「フロー」は、これを区別なく使用することがある)の全てを「探索」して回る。例によっては、実行時(たとえば、デバッギング目的で処理が開始するとき)まで、グラフ100はインスタンス化又はパラメータ化されない。解析エンジン300は、実行時に自動解析を実行して、グラフ100内のデータ・ソース及び出力データ受信側を識別することができる。
Referring to FIG. 5,
解析エンジン300は、データ・ソース302及び出力データ受信側304の識別子を挿入エンジン306に送信し、この挿入エンジンは、データ・ソースと出力データ受信側のいずれが、それぞれテスト・ソース及びプローブで置換されることになるのか判定する。例によっては、試験者308は、テスト・ソース及びプローブで置換すべき、データ・ソース及び出力データ受信側のリスト310を提供する。このリスト310は、ファイル、データベースとして、又は別のフォーマットで提供することができる。たとえば、試験者308は、頻繁に変更されると予想される任意のデータ・ソースを、リスト310上にもっていてもよい。このようなデータ・ソースをテスト・ソースで置換することにより、試験者308は、一貫した入力データを使用してグラフを確実にテストできるようにすることができる。
挿入エンジン306は、識別されたそれぞれのデータ・ソース302及び出力データ受信側304と、リスト310上のデータ・ソース及び出力データ受信側とを比較する。挿入エンジンは、リスト310上に表示される任意のデータ・ソース302又は出力データ受信側304について、オーバレイ指定312を作成する。例によっては、上流ポートや下流ポートなど、オーバレイ指定312についてのパラメータが、解析エンジン300によって挿入エンジン306に提供される。例によっては、挿入エンジン306は、グラフ100にアクセスして、関連するパラメータを取得する。
Insertion engine 306 compares each identified
テスト・ソースについてオーバレイ指定312を作成するため、挿入エンジン306は、ソース・ファイルにデータを読み込む。例によっては、挿入エンジン306は、特定のデータ・ソース302に取って代わることになるテスト・ソース用のソース・ファイルに、データ・ソース302からコピーされたデータを読み込む。例によっては、データ・ソース302は、SQL文などの実行可能な表現式を含み、挿入エンジン306は、この実行可能な表現式を実行し、ソース・ファイルに実行した結果を読み込む。例によっては、挿入エンジン306は、ユーザ・インターフェース314を介して、ソース・ファイル用のデータを試験者308に要求することができる。たとえば、挿入エンジン306は、識別されたデータ・ソース302のリストを試験者308に提供することができ、その結果、試験者308は、識別されたデータ・ソース302のうちのいずれがテスト・ソースで置換されることになるのか選択することができる。試験者308は、テスト・ソース用のソース・ファイルに含むべきデータを指定することもできる。場合によっては、試験者308は、テスト・ソース用のデータを含むファイルの位置(たとえば、パス)を識別することができる。場合によっては、試験者308は、元のデータ・ソース302内のデータのコピーであるソース・ファイルを生成するよう、挿入エンジン308に指示することができる。場合によっては、試験者308は、元のデータ・ソース302に含まれるか、又はそれに関連付けられた、SQL文などの実行可能な表現式を実行するよう、挿入エンジン308に指示することができる。場合によっては、試験者308は、テスト・ソースのソース・ファイル用に、データを生成できるようにすることができる。たとえば、試験者308は、グラフ内のあらゆる機能が少なくとも1回実行されるようにする、実データ又は生成済みデータなどのデータのセットを提供してもよい。
To create
プローブ用のオーバレイ指定312を作成するため、挿入エンジン308は、出力データを記憶すべきファイルの位置を決定する。例によっては、この位置は、たとえばシステム技術者によって、デフォルトに設定される。例によっては、挿入エンジン306は、ユーザ・インターフェース314を介して、出力データ・ファイルについての位置を指定するよう試験者308に要求することができる。
To create the
置換構成要素を挿入するため、解析エンジン300は、グラフ100を解析して、グラフ内の1つ又は複数のフォーマット特有の構成要素305を識別する。グラフの各構成要素を解析するため、解析エンジン300は、グラフの接続の全てを「探索」して回る。例によっては、解析エンジン300は、グラフの最も遠い上流構成要素から開始し、この上流構成要素からの各出力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。逆に言えば、解析エンジン300は、グラフの最も遠い下流構成要素から開始し、この下流構成要素への各入力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。
To insert replacement components, parsing
解析エンジン300は、グラフ100内の各構成要素の仕様にアクセスすることができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードの解析に基づいて、解析エンジン300は、データ処理動作がデータのフォーマットに依存しているかどうかを判定することができる。解析エンジン300は、フォーマット特有の構成要素の識別子を挿入エンジン306に送信し、この挿入エンジン306は、置換構成要素のためにフォーマット特有の構成要素のうちのいずれかを省略するか決定する。
例によっては、解析エンジン300は、ユーザの要求に応じてグラフ100を解析する。たとえば、ユーザは、グラフ100を使用して、通常このグラフによって処理されるデータとは異なるフォーマットのデータを処理したいと思うことがある。ユーザは、グラフ100の解析を要求して、異なるフォーマットのデータをグラフ100が確実に処理できるようにすることができる。
In some examples,
例によっては、たとえば、グラフが最初に定義されるとき、又はグラフが最初にインスタンス化若しくはパラメータ化されるとき(たとえば、グラフの第1の実行時に)、解析エンジン300がグラフ100を一度解析して、グラフ内のフォーマット特有の構成要素全てのリストを生成する。グラフ内のフォーマット特有の構成要素のリストは、先々参照するために記憶して、たとえば、互いに異なるフォーマットのデータを処理するためにグラフ100を使用するというユーザの要求に応答して使用することができる。
In some examples,
例によっては、解析エンジン300は、グラフをいつ解析するかを自動的に決定する。たとえば、グラフの仕様は、このグラフによってこれまでに処理されたデータのフォーマットの記述を含んでもよい。入力データのフォーマットが、これまでに処理されたデータのフォーマットと異なる場合、解析エンジンは、グラフを解析して、異なるフォーマットの入力データを処理するために何らかの構成要素を置換する必要があるかどうかを判定してもよい。
In some examples,
挿入エンジン306は、解析エンジン300によって識別されるフォーマット特有の構成要素のいずれかを省略するか判定する。挿入エンジン306は、省略される構成要素のそれぞれについて置換構成要素を定義するオーバレイ指定を作成する。
The insertion engine 306 determines whether to omit any of the format-specific components identified by the parsing
例によっては、省略すべきフォーマット特有の構成要素は、ユーザによって識別される。たとえば、挿入エンジン306は、識別済みのフォーマット特有の構成要素のリストをユーザ・インターフェース314に表示することができ、ユーザは、置換すべき構成要素を選択する。ユーザは、置換すべき構成要素のそれぞれについて置換構成要素として使用される構成要素を指示することができる。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか判定してもよい。省略すべき構成要素、置換構成要素、又はその両方を識別するユーザ入力に基づいて、挿入エンジン306はオーバレイ指定を作成する。 In some examples, the format-specific components to omit are identified by the user. For example, the insertion engine 306 can display a list of identified format-specific components on the user interface 314, and the user selects the component to replace. The user can indicate the component to be used as the replacement component for each component to be replaced. For example, users may use their knowledge of the format of the input data, the process represented by each format-specific component, or both, to determine whether any of the components should be omitted and which components should be included as a replacement component. Based on user input identifying components to be omitted, replacement components, or both, the insertion engine 306 creates an overlay specification.
例によっては、挿入エンジン306は、フォーマット特有の構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか自動的に決定することができる。たとえば、挿入エンジンは、フォーマット特有の構成要素のそれぞれの仕様を解析して、どの構成要素が入力データを処理できるか、又は処理できないか判定することができる。挿入エンジン306は、置換構成要素、たとえば、置換すべき対応する構成要素によって表されるのと同じデータ処理動作を表すが、入力データのフォーマットのデータを処理できる置換構成要素を自動的に識別することができる。挿入エンジン306は、自動的に識別された置換構成要素についてのオーバレイ指定を作成する。例によっては、ユーザ入力は、自動化判定に組み込まれる。たとえば、挿入エンジン306によって識別される置換構成要素を承認するよう、ユーザに求めてもよい。 In some examples, the insertion engine 306 can automatically determine whether any format-specific components should be omitted and which components should be included as replacement components. For example, the insertion engine can parse the specifications of each of the format-specific components to determine which components can or cannot process the input data. The insertion engine 306 automatically identifies replacement components, e.g., replacement components that represent the same data processing operations represented by the corresponding components to be replaced, but that can process data in the format of the input data. be able to. The insertion engine 306 creates overlay specifications for automatically identified replacement components. In some examples, user input is incorporated into automated decisions. For example, the user may be asked to approve the replacement component identified by the insertion engine 306 .
図6には、グラフ用の置換構成要素を定義するための一般的な手法が示してある。グラフによる処理のために、特定のフォーマットを有するデータのセットが受信される(400)。受信データの特定のフォーマットを処理する能力について、グラフを解析すべきかどうかに関して判定がなされる(402)。例によっては、ユーザは、たとえばユーザ・インターフェースを介して、グラフを解析すべきであると示すことができる。たとえば、ユーザは、このデータのセットが、グラフによって処理されたこれまでのデータとは異なるフォーマットを有することを知っている場合がある。例によっては、この判定を自動的におこなうことができる。たとえば、受信データのフォーマットを決定し、たとえば、グラフが構成されるデータのフォーマットを示すグラフの仕様に記憶された情報と比較することができる。グラフが構成されるデータのフォーマットと受信データのフォーマットが一致しない場合、グラフが解析される。 FIG. 6 shows a general approach for defining replacement components for graphs. A set of data having a particular format is received (400) for processing by the graph. A determination is made as to whether the graph should be analyzed for its ability to process a particular format of received data (402). In some examples, a user can indicate, for example via a user interface, that the graph should be analyzed. For example, the user may know that this set of data has a different format than previous data processed by the graph. In some examples, this determination can be made automatically. For example, the format of the received data can be determined and compared, for example, with information stored in the specification of the graph indicating the format of the data from which the graph is constructed. If the format of the data from which the graph is constructed and the format of the received data do not match, the graph is parsed.
グラフは、たとえばプロセッサによって解析されて、構成要素によって処理されるデータのフォーマットに依存する、グラフの1つ又は複数の構成要素を識別する(404)。具体的には、グラフの構成要素のうちの1つ又は複数のそれぞれについての仕様が解析されて、グラフ内のフォーマット特有の構成要素を識別する。例によっては、グラフは、このグラフの各構成要素を介する段階的進行によって解析される。たとえば、各構成要素を解析して、この構成要素がフォーマット特有の構成要素かどうかを判定するとともに、この入力フローと出力フローを識別する。各フローは隣接する構成要素へと続き、これら構成要素のそれぞれが解析されて、この構成要素がフォーマット特有であるかどうかを判定し、入力フロー及び出力フローを識別する。このようにして、グラフの構成要素の全てを解析することができる。例によっては、この解析は、実行時に、たとえばグラフがパラメータ化された後に、自動的に実行することができる。例によっては、この解析は、自動的かつ動的に、たとえばグラフが実行されている間に実行することができる。たとえば、グラフの実行中に、あるパラメータが解決されると、動的な解析を実行することができる。例によっては、グラフは短期記憶内に受信され、そこからプロセッサによってグラフが解析されて、フォーマット特有の構成要素を識別する。 The graph is parsed 404, for example by a processor, to identify one or more components of the graph that depend on the format of the data processed by the component. Specifically, specifications for each of one or more of the graph's components are parsed to identify format-specific components within the graph. In some examples, the graph is analyzed by stepwise progression through each component of the graph. For example, each component is parsed to determine if it is format-specific and to identify its input and output flows. Each flow continues to adjacent components, each of which is parsed to determine whether this component is format-specific and to identify input and output flows. In this way, all of the components of the graph can be analyzed. In some examples, this analysis can be performed automatically at runtime, eg, after the graph has been parameterized. In some examples, this analysis can be performed automatically and dynamically, eg, while the graph is running. For example, dynamic analysis can be performed as certain parameters are resolved during graph execution. In some examples, the graph is received in short-term memory, from which the graph is parsed by a processor to identify format-specific components.
フォーマット特有と識別された構成要素のうちの1つ又は複数を評価して、構成要素を省略すべきかどうか、及び置換構成要素が含まれているかどうかを判定する(406)。たとえば、構成要素が、受信済みのデータのセットのフォーマットを有するデータを処理することができない場合、フォーマット特有の構成要素を省略してもよい。例によっては、フォーマット特有の構成要素のリストがユーザ・インターフェースに表示され、ユーザが、構成要素のいずれかを省略すべきか指定する。例によっては、フォーマット特有の構成要素のそれぞれの仕様を評価して、受信済みのデータのセットのフォーマットを有するデータを、この構成要素が処理できるかどうかを自動的に判定する。例によっては、フォーマット特有と識別された構成要素の全てが省略される。 One or more of the components identified as format-specific are evaluated to determine if the component should be omitted and if a replacement component is included (406). For example, a format-specific component may be omitted if the component cannot process data having the format of the received data set. In some examples, a list of format-specific components is displayed in the user interface and the user specifies whether any of the components should be omitted. In some examples, the specification of each of the format-specific components is evaluated to automatically determine whether the component can process data having the format of the received data set. In some examples, all components identified as format-specific are omitted.
省略すべきフォーマット特有の構成要素のうちの1つ又は複数のそれぞれでの置換構成要素について、オーバレイ指定が定義される(408)。所与の置換構成要素の仕様は、対応する省略済みのフォーマット特有の構成要素の仕様に基づいているが、受信済みのデータのセットのフォーマットを有するデータに実行できる、1つ又は複数のデータ処理動作を定義する。例によっては、置換構成要素は、受信済みのデータのセットのフォーマットに対して、フォーマット特有のものとすることができる。例によっては、置換構成要素は、一般的なもの、たとえば任意のフォーマットのデータを処理できるものとすることができる。 Overlay specifications are defined 408 for replacement components with each one or more of the format-specific components to be omitted. The specification of a given replacement component is based on the specification of the corresponding abbreviated format-specific component, but one or more data operations that can be performed on data having the format of the set of data received. Define behavior. In some examples, the replacement component may be format-specific to the format of the received data set. In some examples, the replacement component may be generic, eg, capable of processing data in any format.
グラフの実行に先立って、コンパイラが、グラフを実行可能なグラフにコンパイルしてもよい(410)。コンパイルの一環として、コンパイラは、置換構成要素を定義するオーバレイ指定200を考慮に入れる。たとえば、コンパイラは、入力としてオーバレイ指定200を受け付けてもよい。グラフの第2のバージョンが生成され、置換用に識別されたフォーマット特有の構成要素が除去され、除去済みの構成要素の代わりのオブジェクトとして、1つ又は複数の置換構成要素がグラフの第2のバージョンに挿入される。置換構成要素は、(除去済みの構成要素以外の)グラフ100の第1のバージョンに含まれるデータ処理構成要素とともに、グラフの第2のバージョンで表してもよい。オーバレイ指定200、又はこのオーバレイ指定を記憶するファイルは、グラフを含むファイルから分離されたままである。すなわち、置換構成要素は、グラフの第1のバージョンに含まれるデータ処理構成要素とともに、グラフの第2のバージョンに表示してもよいが、グラフの第1のバージョンを含むファイルは、置換構成要素の定義を含まない。
Prior to executing the graph, a compiler may compile 410 the graph into an executable graph. As part of compilation, the compiler takes into
オーバレイ指定において定義されるテスト・ソース、プローブ、又は置換構成要素などの挿入は、少なくとも2つのモード、すなわち単一実行モード(Single-Execution Mode)及び保存状態モード(Saved-State Mode)のうちの1つを使用して実行できる。 Insertion of test sources, probes, or replacement components defined in an overlay specification can be performed in at least two modes: Single-Execution Mode and Saved-State Mode. can be done using one.
図7には、単一実行モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント602が、グラフ604の第1のバージョン、及び挿入を定義するオーバレイ・ファイル606(たとえば、オーバレイ指定)を生成又は参照する。たとえば、オーバレイ・ファイル606は、図4のオーバレイ指定200でもよい。次いで、グラフ604が、コンパイラ608によってコンパイルされる。コンパイラ608は、オーバレイ・ファイル606を考慮に入れ、グラフの第2のバージョンを作成する。グラフの第2のバージョンは実行可能であり、オーバレイ・ファイル606によって定義される挿入を含む。次いで、グラフの第2のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。グラフの第2のバージョンが再び実行されることになる場合、グラフ604の再指定、再コンパイル、及びグラフの第2のバージョンの再実行を含む、このプロセスが繰り返される。実行可能なグラフの、ある実行から次の実行までの情報は保存されない。
FIG. 7 shows an exemplary system for executing an insert definition in single execution mode. In this example,
図8には、保存状態マネージャ708を用いて、保存状態モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント702が、グラフ704、及び挿入を定義するオーバレイ・ファイル706(たとえば、オーバレイ指定)を生成又は参照する。たとえば、オーバレイ・ファイル706は、図4のオーバレイ指定200でもよい。保存状態リポジトリ710が、保存状態マネージャ708及びコンパイラ712によって管理される。保存状態マネージャ708は、この保存状態データが保存状態リポジトリ710内のどこに配置されているか識別することもできる。グラフ704が、コンパイラ712によってコンパイルされる。コンパイラ712は、オーバレイ・ファイル706を考慮に入れ、オーバレイ・ファイル706によって定義される挿入を含むグラフの第2のバージョンを作成する。次いで、グラフの第2のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。保存状態モードによって、実行可能なグラフが、各実行間で情報を保存している間に何回も実行できるようになるという点で、保存状態モードは単一実行モードと異なる。
FIG. 8 shows an exemplary system for executing an insert definition in save state mode using save
保存状態マネージャ708は、保存状態マネージャ・ディレクトリに存在することができ、保存状態を管理する。保存状態リポジトリ710に保存できる情報の例には、情報のうちでもとりわけ、プローブ挿入に関連する情報、テスト・ソース挿入に関連する情報、置換構成要素挿入に関連する情報、オーバレイ・ファイル706に関連する情報、及びグラフ構成要素に関連付けられたパラメータ(たとえば属性)が含まれる。
A
例によっては、実行可能なグラフが実行されるとき、グラフの特定の部分のみが実行される。すなわち、グラフの特定の構成要素のみが実行される。例によっては、グラフの構成要素の全てよりも少ない構成要素が実行される。実行可能なグラフは、挿入に影響を及ぼすことになる構成要素を実行するだけでよい。例によっては、グラフの第2のバージョンは、元のグラフ全体の第2のバージョンである。例によっては、グラフの第2のバージョンは、元のグラフ全体のほんの一部分の第2のバージョン、たとえば、定義された挿入に関連したグラフの部分のみの第2のバージョンである。たとえば、最も上流の置換構成要素の上流にある構成要素は、グラフの第1のバージョンによって実行してもよく、最も上流の置換構成要素で開始する構成要素は、グラフの第2のバージョンによって実行してもよい。 In some examples, when an executable graph is executed, only certain portions of the graph are executed. That is, only certain components of the graph are executed. In some examples, less than all of the graph's components are executed. Executable graphs only need to execute the components that will affect the insertion. In some examples, the second version of the graph is a second version of the entire original graph. In some examples, the second version of the graph is a second version of only a fraction of the entire original graph, eg, only the portion of the graph associated with the defined insertion. For example, components upstream of the most upstream replacement component may be executed by the first version of the graph, and components starting with the most upstream replacement component may be executed by the second version of the graph. You may
図9には、ここで説明する置換構成要素技法を使用できる、例示的なデータ処理システム800が示してある。このシステム800は、記憶装置又はオンライン・データ・ストリームへの接続など、1つ又は複数のデータのソースを含んでもよいデータ・ソース802を含み、そのそれぞれが、様々なフォーマット(たとえば、データベース・テーブル、スプレッドシート・ファイル、フラット・テキスト・ファイル、又はメインフレームが使用するネイティブ・フォーマット)のうちの任意のフォーマットで、データを記憶又は提供してもよい。実行環境804及び開発環境818は、たとえば、あるバージョンのUNIXオペレーティング・システムなど、適切なオペレーティング・システムの制御下で、1つ又は複数の汎用コンピュータ上にホスティングしてもよい。たとえば、実行環境804は、複数ノードの並列コンピューティング環境を含むことができ、これは、複数の中央処理装置(CPU)若しくはプロセッサ・コア、ローカル・システム(たとえば、対称型マルチプロセッシング(SMP)コンピュータなどのマルチプロセッサ・システム)若しくはローカル分散システム(たとえば、クラスタ若しくは超並列処理(MPP)として結合された複数のプロセッサ)、又は、遠隔プロセッサ若しくは遠隔分散プロセッサ(たとえば、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合されたマルチプロセッサ)、又はその任意の組合せを使用するコンピュータ・システムの構成を含む。
FIG. 9 illustrates an exemplary
実行環境804は、データ・ソース802からデータを読み取り、出力データを生成する。データ・ソース802を設ける記憶装置は、実行環境804に対してローカルでもよく、たとえばこれは、実行環境804をホスティングするコンピュータに接続された記憶媒体(たとえばハード・ドライブ808)に記憶され、又は実行環境804に対して遠隔でもよく、たとえばこれは、(たとえばクラウド・コンピューティング・インフラストラクチャによって提供される)遠隔接続を介して、実行環境804をホスティングするコンピュータと通信する遠隔システム(たとえばメインフレーム810)上にホスティングされる。データ・ソース802は、テスト・ソース定義(たとえば、図4のテスト・ソース定義201)で定義されるデータを含んでもよい。すなわち、テスト・ソース定義201のレイアウト・パラメータ212が、データ・ソース802内のソース・ファイルの位置を指してもよい。
出力データは、実行環境804からアクセス可能なデータ・ソース802又はデータ記憶システム816に記憶して戻してもよく、又は他の方法で使用してもよい。データ記憶システム816は、開発者820がグラフを、開発、デバッグ、及びテストすることのできる開発環境818からもアクセス可能である。実装形態によっては、開発環境818は、各接点間の(作業要素すなわちデータのフローを表す)有向フローによって接続される(データ処理構成要素又はデータセットを表す)節点を含むグラフとして、アプリケーションを開発するためのシステムである。たとえば、「グラフベースのアプリケーション用のパラメータの管理(Managing Parameters for Graph-Based Applications)」と題する、米国特許第2007/0011668号に、このような環境がより詳細に記載してあり、これを参考として本明細書に援用する。「グラフとして表現された計算の実行(EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS)」と題する、米国特許第5,966,072号に、このようなグラフベースの計算を実行するためのシステムが記載してあり、これを参考として本明細書に援用する。このシステムに従って作成されるグラフは、グラフ構成要素によって表される個々のプロセスとの間で情報を取得し、各プロセス間で情報を転送し、各プロセスについて実行順序を定義するための方法を提供する。このシステムは、利用可能な任意の方法からプロセス間通信の方法を選択するアルゴリズムを含む(たとえば、グラフのフローによる通信経路は、TCP/IP若しくはUNIXのドメイン・ソケットを使用することができ、又は共有メモリを使用して、各プロセス間でデータを渡すことができる)。
The output data may be stored back into
開発環境818は、ソース・コードを記憶するためのコード・リポジトリ822を含む。例によっては、ソース・コード及びオーバレイ指定(たとえば、図4のオーバレイ指定220)は、たとえばユーザ・インターフェースを介して開発環境にアクセスする開発者820によって開発してもよい。例によっては、ソース・コード及びオーバレイ指定は、たとえば、前述の解析エンジン300及び挿入エンジン306によって自動的に決定される。例によっては、グラフ及びオーバレイ指定は、コード・リポジトリ822に記憶することができる。例によっては、コード・リポジトリ822にグラフが記憶され、別のオーバレイ・リポジトリ824にオーバレイ指定が記憶される。
コード・リポジトリ822及びオーバレイ・リポジトリ824のうちの1つ又は両方が、コンパイラ826と通信してもよい。コンパイラ826は、グラフの第1のバージョン及びオーバレイ指定(たとえば、図4のオーバレイ指定200)を、グラフの実行可能な第2のバージョン828にコンパイルすることができる。たとえば、コンパイラは、入力としてオーバレイ指定を受け付けてもよい。1つ又は複数の挿入が処理され、オーバレイ指定に含まれる挿入定義にそれぞれが対応するオブジェクトの形で、グラフに挿入される。グラフの第2のバージョン828は、修正されたグラフによって視覚的に表すことができる。挿入オブジェクトは、グラフ500の第2のバージョンに示してもよい。
One or both of
開発環境818は、グラフの第2のバージョン828を実行するための実行環境830を含むことができる。たとえば、グラフがコンパイラ826によってコンパイルされると、グラフの第2のバージョン828を実行することができる。グラフの第2のバージョン828を実行することは、データ(たとえば、作業要素又はデータ・レコード)が各構成要素間を流れるときに、各構成要素、挿入(たとえば、テスト・ソース、プローブ、置換構成要素、又はこれらのうちの任意の2つ以上の組合せ)、及びグラフの第2のバージョン828の有向フローに関連する計算を実行することを含むことができる。例によっては、実行環境830は、コード・リポジトリ822に記憶された第1のバージョンのグラフのソース・コード、又はオーバレイ・リポジトリ824に記憶されたソース・コードを修正することなく、グラフの第2のバージョン828を実行する。実行環境830は、開発環境818のインターフェースを介してアクセス可能でもよく、又はそれ自体のインターフェースをもっていてもよい。このインターフェースは、実行に関連する情報を表示するように構成することができる。このインターフェースは、挿入に関連する情報(たとえば、プローブによって監視及び保存されているデータ、テスト・ソースによって挿入されているデータ、置換構成要素についての情報、又は他の情報)を表示するように構成することもできる。実行環境830により、開発者820は、各実行間で、グラフの第2のバージョン828を複数回実行できるようになり、グラフの第2のバージョン828の各態様を修正できるようになってもよい。
例によっては、開発者は、グラフの挿入及びコンパイルを管理する。たとえば、開発者820は、コード・リポジトリ822から、図1のグラフ100の第1のバージョンを選択する。開発者820は又、オーバレイ・リポジトリ824から、図4のオーバレイ指定200を選択する。例によっては、オーバレイ指定200を選択する代わりに、開発者820は、オーバレイ・リポジトリ824内の様々なオーバレイ指定から挿入定義を選択してもよい。開発者820は、グラフ100の第1のバージョン及びオーバレイ指定200に基づいて、グラフの第2のバージョン828をコンパイルするようコンパイラ826に命令する。
In some examples, the developer controls the insertion and compilation of graphs. For example,
例によっては、挿入は自動的に挿入される。たとえば、前述の通り、グラフ100内の1つ又は複数のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素は、たとえば、入力接続又は出力接続がない構成要素を識別することによって、又はグラフ100内の構成要素の仕様を解析することによって自動的に識別される。識別されたデータ・ソース及び出力データ受信側は、グラフ100のデバッギング中に挿入によって置換されることになる、データ・ソース及び出力データ受信側のリストと自動的に比較することができる。たとえば、このリストは、開発者820が提供することができる。フォーマット特有の構成要素を解析して、入力されるデータのセットのフォーマットなど、特定のフォーマットのデータをこの構成要素が処理できるかどうかを判定することができる。データを処理できないフォーマット特有の構成要素のリストが生成される。例によっては、このリストは、開発者820が提供することができる。このリストに従って、グラフ100のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素用のオーバレイ指定が自動的に作成される。次いで、グラフの第2のバージョンが自動的にコンパイルされる。
In some cases, inserts are inserted automatically. For example, as noted above, one or more data sources, output data receivers, or format-specific components in
例によっては、オーバレイ指定は、コード・リポジトリ822又はオーバレイ・リポジトリ824内のファイルとして永続的に記憶されることはない。むしろ、通常オーバレイ・ファイルに含まれるはずの情報(たとえば、挿入定義)は、(たとえば、ユーザ・インターフェースを介して)開発者820によって作成され、又は解析エンジン300及び挿入エンジン306によって自動的に判定され、メモリに一時的に記憶される。次いで、オーバレイ情報は、コンパイラ(たとえば、図8の608)又は保存状態マネージャ(たとえば、図9の708)に渡される。
In some examples, overlay specifications are not persistently stored as files in
図10を参照すると、例示的なプロセスでは、グラフの第1のバージョン(たとえば、図1のグラフ100)が受信される(902)。たとえば、グラフの第1のバージョンは、プロセッサがアクセス可能な短期記憶に受信することができる。グラフ100の第1のバージョンは、構成要素及びフローを含む。この構成要素は、データ・レコードに実行される動作を表し、このフローは、各構成要素間のデータ・レコードのフローを表す。
Referring to FIG. 10, in an exemplary process, a first version of a graph (eg,
1つ又は複数の挿入を定義するオーバレイ指定が受信される(904)。例によっては、オーバレイ指定は、開発者又は試験者から受信される。例によっては、たとえば前述の通り、オーバレイ指定は自動的に定義される。オーバレイ指定は、図4に示すオーバレイ指定200でもよい。オーバレイ指定は、1つ又は複数の挿入定義(たとえば、1つ若しくは複数のテスト・ソース定義、1つ若しくは複数のプローブ定義、又は1つ若しくは複数の置換構成要素定義)を含むことができる。挿入定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ経路、及び(テスト・ソース定義用の)レイアウト・パラメータを含むことができる。定義されたテスト・ソース及びプローブのそれぞれは、グラフ100のフローに関連付けることができる。定義された置換構成要素のそれぞれは、グラフ100の構成要素に関連付けることができる。
An overlay specification is received that defines one or more inserts (904). In some examples, overlay specifications are received from developers or testers. In some instances, overlay specifications are automatically defined, eg, as described above. The overlay specification may be the
定義された挿入のうちの1つにそれぞれが対応する、1つ又は複数のオブジェクトが生成される(906)。オブジェクトは、テスト・ソース、プローブ、又は置換構成要素など、グラフの構成要素でもよい。 One or more objects, each corresponding to one of the defined inserts, are created (906). An object may be a graph component, such as a test source, probe, or replacement component.
グラフ100の一部分の構成要素及びフローの少なくともいくつか、並びに生成された1つ又は複数のオブジェクトを含む、グラフの少なくとも一部分の第2のバージョンが生成される(908)。例によっては、グラフの第2のバージョンは、グラフ100の一部分の構成要素及びフローの少なくともいくつか、並びに生成された1つ又は複数のオブジェクトを含むように修正された、元のグラフ100のコピーである。グラフの第2のバージョンは、修正されたグラフ(たとえば、図2のグラフ200の第2のバージョン、又は図3のグラフ300の第3のバージョン)によって視覚的に表すことができる。各オブジェクトは、(テスト・ソース若しくはプローブ用の)オブジェクトに対応する定義済みの挿入に関連付けられたフローにおいて、又はこのオブジェクトに対応する定義済みの置換構成要素に関連付けられた構成要素の代わりに挿入される。生成された挿入オブジェクトは、グラフ100のデータ処理構成要素とともに、グラフの第2のバージョンに表示してもよいが、グラフ100の第1のバージョン(又は、グラフ100の第1のバージョンを含むファイル)は修正されない。
A second version of at least a portion of the graph is generated (908), including at least some of the components and flows of the portion of the
グラフ及びオーバレイ指定をコンパイルして、オーバレイ・ファイルによって定義された挿入を含むグラフの第2のバージョンを作成できるコンパイラ(たとえば、図7のコンパイラ608、及び図8のコンパイラ712)を説明したが、実施形態によっては、グラフ及びオーバレイ指定はコンパイルされない。たとえば、グラフ及びオーバレイ指定は、コンパイルされることなく直接実行することができる。インタープリタは、それぞれのステートメントを、既に機械コードにコンパイルされている一連の1つ又は複数のサブルーチンに変換することによって、グラフ及びオーバレイ指定を直接実行することができる。
Having described compilers (e.g.,
プローブ、テスト・ソース、及び置換構成要素の形で挿入を説明してきたが、実施形態によっては、挿入は他の形をとることができる。挿入を広く使用して、グラフの所与のポイントでデータを入力し、グラフの所与のポイントからデータを取り出すことができる。たとえば、グラフのフローを通過するデータの品質を監視するように、挿入を設計することができる。データ品質が閾値を下回る場合、ユーザは、自動警告を受信することができる。挿入のさらなる説明は、米国特許出願第14/715,904号に見いだすことができ、この内容全体を参考として本明細書に援用する。 Although insertions have been described in the form of probes, test sources, and replacement components, in some embodiments the insertions can take other forms. Insertion can be used extensively to enter data at a given point on the graph and retrieve data from a given point on the graph. For example, inserts can be designed to monitor the quality of data passing through the flow of the graph. Users can receive automatic alerts when the data quality is below a threshold. Further description of insertion can be found in US patent application Ser. No. 14/715,904, the entire contents of which are incorporated herein by reference.
さらに、グラフとの関連で挿入を説明してきたが、実施形態によっては、挿入は他の実行可能なアプリケーションとともに使用することができる。たとえば、包括的で実行可能なアプリケーション用のデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスは、このアプリケーションの自動解析を用いて識別することができる。識別されたデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスのうちの1つ又は複数は、それぞれ適切なテスト・ソース、プローブ、又は置換プロセスによって置換することができる。このようにして、実行可能なアプリケーションは、テスト・ソースからのデータを処理し、データをプローブに出力することができ、又は互いに異なるフォーマットのデータを処理できるようにすることができる。この構成は、実行可能なアプリケーションをテスト又はデバッグするのに役立つことがある。 Additionally, although insertion has been described in the context of graphs, in some embodiments, insertion can be used with other executable applications. For example, data sources, output data receivers, or format-specific processes for a generic executable application can be identified using automatic analysis of the application. One or more of the identified data sources, output data receivers, or format-specific processes can be replaced by appropriate test sources, probes, or replacement processes, respectively. In this way, executable applications can process data from test sources, output data to probes, or be able to process data in different formats from each other. This configuration may be useful for testing or debugging executable applications.
前述の手法は、適切なソフトウェアを実行するコンピューティング・システムを使用して実施することができる。たとえば、ソフトウェアは、(分散アーキテクチャ、クライアント/サーバ、又はグリッドなど様々なアーキテクチャでよい)1つ又は複数のプログラムされた、又はプログラム可能なコンピューティング・システム上で実行される、1つ又は複数のコンピュータ・プログラムでの手順を含んでもよく、このコンピューティング・システムのそれぞれが、少なくとも1つのプロセッサ、(揮発性メモリ及び/又は不揮発性メモリ、及び/又は記憶素子を含む)少なくとも1つのデータ記憶装置システム、(少なくとも1つの入力装置若しくは入力ポートを使用して入力を受信し、少なくとも1つの出力装置若しくは出力ポートを使用して出力を供給するための)少なくとも1つのユーザ・インターフェースを備える。ソフトウェアは、たとえば、グラフの設計、構成、及び実行に関連するサービスを提供する、比較的大きいプログラムの1つ又は複数のモジュールを含んでもよい。プログラムの各モジュール(たとえばグラフの要素)は、データ構造として、又はデータ・リポジトリに記憶されたデータ・モデルに合致する他の編成データとして実装することができる。 The techniques described above may be implemented using a computing system executing suitable software. For example, the software may be one or more computers running on one or more programmed or programmable computing systems (which may be of various architectures such as distributed architecture, client/server, or grid). may include steps in a computer program, each of the computing systems having at least one processor, at least one data storage device (including volatile and/or non-volatile memory, and/or storage elements) A system comprises at least one user interface (for receiving input using at least one input device or input port and for providing output using at least one output device or output port). Software may include, for example, one or more modules of relatively large programs that provide services related to graph design, construction, and execution. Each module of the program (eg, elements of a graph) can be implemented as a data structure or other organized data conforming to a data model stored in a data repository.
ソフトウェアは、(たとえば、汎用若しくは専用の、コンピューティング・システム若しくはコンピューティング装置によって読取り可能な)CD-ROM又は他のコンピュータ読取り可能な媒体など、有形で持続的な媒体上に実装してもよく、又はネットワークの通信媒体を介して、ソフトウェアが実行されるコンピューティング・システムの有形で持続的な媒体に送達してもよい(たとえば、伝搬信号において符号化してもよい)。処理の一部又は全ては、専用コンピュータ上で実行してもよく、又は、コプロセッサ若しくはフィールド・プログラマブル・ゲート・アレイ(FPGA)、若しくは専用の特定用途向け集積回路(ASIC)などの専用ハードウェアを使用して実行してもよい。ソフトウェアによって指定された計算の様々な部分を様々なコンピューティング要素によって実行する分散方式で、処理を実施してもよい。本明細書に記載の処理を実行するよう、記憶装置媒体がコンピュータに読み取られるときにコンピュータを構成し動作させるために、このようなコンピュータ・プログラムはそれぞれ、汎用又は専用のプログラム可能なコンピュータでアクセス可能な記憶装置のコンピュータ読取り可能な記憶媒体(たとえば、固体記憶装置若しくは固体記憶媒体、又は磁気媒体若しくは光媒体)に、記憶又はダウンロードされることが好ましい。この発明性のあるシステムは又、コンピュータ・プログラムで構成された有形の持続的な媒体として実施されるものとみなしてもよく、ここで、そのように構成された媒体により、コンピュータは、特定の事前定義された方式で動作して、本明細書に記載の処理ステップのうちの1つ又は複数を実行できるようになる。 The software may be implemented on a tangible, persistent medium such as a CD-ROM or other computer-readable medium (eg, readable by a general-purpose or special-purpose computing system or device). , or over the communications medium of a network, in a tangible and persistent medium of the computing system on which the software executes (eg, encoded in a propagated signal). Some or all of the processing may be performed on a dedicated computer, or dedicated hardware such as a coprocessor or field programmable gate array (FPGA), or dedicated application specific integrated circuit (ASIC). can be run using Processing may also be implemented in a distributed fashion, with different computing elements performing different portions of the calculations specified by the software. Each such computer program is accessed by a general purpose or special purpose programmable computer to configure and operate the computer when the storage medium is read by the computer to perform the processes described herein. It is preferably stored or downloaded to a computer readable storage medium capable of storage (eg, a solid state memory device or medium, or a magnetic or optical medium). The inventive system may also be viewed as embodied in a tangible, persistent medium configured with a computer program, wherein the medium so configured enables the computer to perform a specific It operates in a predefined manner to enable one or more of the processing steps described herein.
いくつもの実施形態を説明してきた。それにもかかわらず、前述の説明は、本発明の範囲を例示するものであり、それを限定するものではなく、本発明の範囲は、添付の特許請求の範囲に記載の範囲によって定義されることを理解されたい。したがって、他の実施形態も、添付の特許請求の範囲に記載の範囲内にある。たとえば、本発明の範囲から逸脱することなく、様々な修正を加えてもよい。さらに、前述のステップのいくつかは、順序に依存しなくてもよく、したがって、記載された順序とは異なる順序で実行することができる。 A number of embodiments have been described. Nevertheless, the foregoing description is intended to illustrate rather than limit the scope of the invention, which is defined by the scope of the appended claims. Please understand. Accordingly, other embodiments are within the scope of the following claims. For example, various modifications may be made without departing from the scope of the invention. Additionally, some of the steps described above may be order independent and, therefore, may be performed in a different order than the order described.
Claims (26)
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成することであって、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含むこととを含み、前記第2の動作が前記第1の動作に基づく、方法。 analyzing a first version of a computer program by a processor, including identifying a first process included in the first version of the computer program, the first process comprising: configured to perform a first operation on data in one format;
generating, by a processor, a second version of at least a portion of said computer program, comprising omitting said first process, wherein data in a second format different from said first format; including in said second version of said at least one portion of a computer program one or more second processes configured to perform the second act, wherein said second act is performed by said second A method based on the operation of 1.
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成するための手段であって、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含む手段とを備え、前記第2の動作が前記第1の動作に基づく、システム。 means for analyzing a first version of a computer program by a processor, said analyzing comprising identifying a first process included in said first version of said computer program; means wherein the first process is configured to perform a first operation on data having a first format;
Means for generating by a processor a second version of at least a portion of said computer program comprising omitting said first process and having a second format different from said first format. including in said second version of said at least part of said computer program one or more second processes configured to perform a second operation on data; A system, wherein an action is based on said first action.
コンピュータ・プログラムの第1のバージョンを解析するように構成され、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するように構成され、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含み、前記第2の動作が前記第1の動作に基づく、システム。 a processor coupled to a memory, the processor and memory comprising:
configured to analyze a first version of a computer program, said analyzing comprising identifying a first process included in said first version of said computer program; a process configured to perform a first operation on data having a first format;
configured to generate a second version of at least a portion of said computer program, comprising omitting said first process; in said second version of said at least a portion of said computer program, said second action being configured to perform the action of based on the system.
コンピュータ・プログラムの第1のバージョンを解析するようにし、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、
前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するようにし、前記第1のプロセスを省略することを含み、前記第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンに含むようにするための命令を記憶し、前記第2の動作が前記第1の動作に基づく、持続的なコンピュータ読取り可能な媒体。 the computing system
A first version of a computer program is analyzed, said analyzing comprising identifying a first process included in said first version of said computer program, said first process comprising: , configured to perform a first operation on data having a first format;
a second operation on data having a second format different from the first format, comprising generating a second version of at least a portion of said computer program and omitting said first process; storing instructions for including in said second version of said at least a portion of said computer program one or more second processes configured to perform said second act is based on said first act.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662345217P | 2016-06-03 | 2016-06-03 | |
US62/345,217 | 2016-06-03 | ||
US15/433,467 | 2017-02-15 | ||
US15/433,467 US10936289B2 (en) | 2016-06-03 | 2017-02-15 | Format-specific data processing operations |
JP2018563483A JP2019521430A (en) | 2016-06-03 | 2017-05-18 | Format-specific data processing operations |
PCT/US2017/033285 WO2017209969A1 (en) | 2016-06-03 | 2017-05-18 | Format-specific data processing operations |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018563483A Division JP2019521430A (en) | 2016-06-03 | 2017-05-18 | Format-specific data processing operations |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023071664A true JP2023071664A (en) | 2023-05-23 |
Family
ID=59009783
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018563483A Pending JP2019521430A (en) | 2016-06-03 | 2017-05-18 | Format-specific data processing operations |
JP2023015892A Pending JP2023071664A (en) | 2016-06-03 | 2023-02-06 | Format-specific data processing operation |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018563483A Pending JP2019521430A (en) | 2016-06-03 | 2017-05-18 | Format-specific data processing operations |
Country Status (9)
Country | Link |
---|---|
US (2) | US10936289B2 (en) |
EP (1) | EP3465422B1 (en) |
JP (2) | JP2019521430A (en) |
CN (1) | CN109564507B (en) |
AU (2) | AU2017274407B2 (en) |
CA (1) | CA3026334C (en) |
DE (1) | DE112017002779T5 (en) |
SG (1) | SG11201810383SA (en) |
WO (1) | WO2017209969A1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936289B2 (en) * | 2016-06-03 | 2021-03-02 | Ab Initio Technology Llc | Format-specific data processing operations |
US11184271B2 (en) * | 2017-04-06 | 2021-11-23 | At&T Intellectual Property I, L.P. | Network service assurance system |
US11182238B2 (en) * | 2019-07-16 | 2021-11-23 | International Buusiness Machines Corporation | Problematic characters |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS626344A (en) | 1985-07-02 | 1987-01-13 | Nec Corp | Program debug system |
JPS63125088A (en) * | 1986-11-14 | 1988-05-28 | Nec Corp | Data access system in multi-switching system |
JPH02294824A (en) * | 1989-05-10 | 1990-12-05 | Hokuriku Nippon Denki Software Kk | Table design document creation device |
JP2555920B2 (en) * | 1993-01-25 | 1996-11-20 | 日本電気株式会社 | Online real-time processor |
JPH0926897A (en) * | 1995-05-08 | 1997-01-28 | Toshiba Corp | Program analyzer and program analyzing method |
US5966072A (en) | 1996-07-02 | 1999-10-12 | Ab Initio Software Corporation | Executing computations expressed as graphs |
JPH1083328A (en) | 1996-09-05 | 1998-03-31 | Nec Corp | Pseudo input/output realizing system for single body test |
US6102968A (en) | 1998-05-21 | 2000-08-15 | Lucent Technologies Inc. | Method for automatically closing open reactive systems |
US6389429B1 (en) | 1999-07-30 | 2002-05-14 | Aprimo, Inc. | System and method for generating a target database from one or more source databases |
US6983317B1 (en) | 2000-02-28 | 2006-01-03 | Microsoft Corporation | Enterprise management system |
US6631386B1 (en) | 2000-04-22 | 2003-10-07 | Oracle Corp. | Database version control subsystem and method for use with database management system |
WO2002084879A2 (en) | 2001-04-13 | 2002-10-24 | The Code Coproration | System and method for encoding and decoding data and references to data in machine-readable graphical codes |
GB2379293B (en) * | 2001-08-31 | 2005-07-06 | Discreet Logic Inc | Processing Data in an Application comprising a plurality of Application Modules |
US7529822B2 (en) | 2002-05-31 | 2009-05-05 | Symantec Operating Corporation | Business continuation policy for server consolidation environment |
US8020148B2 (en) | 2002-09-23 | 2011-09-13 | Telefonaktiebolaget L M Ericsson (Publ) | Bi-directional probing and testing of software |
US8676720B1 (en) | 2002-09-26 | 2014-03-18 | Requisite Software, Inc. | Collaborative method for managing electronic catalogs |
US7039645B1 (en) | 2002-09-26 | 2006-05-02 | Requisite Technology, Inc. | Managing content of an electronic catalog by collaboration with another electronic catalog |
US7100172B2 (en) * | 2002-11-27 | 2006-08-29 | Microsoft Corporation | System and method for changing operation of an application without recompiling |
US7421621B1 (en) | 2003-09-19 | 2008-09-02 | Matador Technologies Corp. | Application integration testing |
JP2005228183A (en) * | 2004-02-16 | 2005-08-25 | Hitachi Ltd | Program execution method and computer system for executing the program |
JP2005301359A (en) * | 2004-04-06 | 2005-10-27 | Denso Corp | Software component management device |
US7506304B2 (en) | 2004-05-14 | 2009-03-17 | National Instruments Corporation | Graphical data flow programming environment with first model of computation that includes a structure supporting second model of computation |
US7380171B2 (en) | 2004-12-06 | 2008-05-27 | Microsoft Corporation | Controlling software failure data reporting and responses |
US7716630B2 (en) | 2005-06-27 | 2010-05-11 | Ab Initio Technology Llc | Managing parameters for graph-based computations |
US7877350B2 (en) * | 2005-06-27 | 2011-01-25 | Ab Initio Technology Llc | Managing metadata for graph-based computations |
US7587636B2 (en) | 2005-08-04 | 2009-09-08 | Microsoft Corporation | Unit test generalization |
CN100405323C (en) | 2005-09-20 | 2008-07-23 | 中国科学院计算技术研究所 | Method for realizing supporting of EJTAG detection in instruction grade random detection |
US20070074175A1 (en) | 2005-09-23 | 2007-03-29 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for dynamic probes for injection and extraction of data for test and monitoring of software |
US7660666B2 (en) | 2005-11-18 | 2010-02-09 | Navteq North America, Llc | Geographic database with detailed local data |
US7617231B2 (en) | 2005-12-07 | 2009-11-10 | Electronics And Telecommunications Research Institute | Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm |
US8079019B2 (en) | 2007-11-21 | 2011-12-13 | Replay Solutions, Inc. | Advancing and rewinding a replayed program execution |
US7644334B2 (en) | 2006-11-27 | 2010-01-05 | Honeywell International, Inc. | Requirements-based test generation |
US7860905B2 (en) | 2007-04-24 | 2010-12-28 | Microsoft Corporation | Systems and methods for modularizing data flows |
US8583613B2 (en) * | 2007-08-21 | 2013-11-12 | Oracle International Corporation | On demand data conversion |
US8400530B2 (en) | 2007-12-28 | 2013-03-19 | Panasonic Corporation | Communication device, communication system, image presentation method, and program |
US7502972B1 (en) | 2008-03-16 | 2009-03-10 | International Business Machines Corporation | Reducing log entries using hash keys |
US8949140B2 (en) | 2008-04-21 | 2015-02-03 | International Business Machines Corporation | Method and system for dynamic software reconfiguration triggered by component- or system- initiated events |
US20100153928A1 (en) * | 2008-12-16 | 2010-06-17 | Microsoft Corporation | Developing and Maintaining High Performance Network Services |
AU2010337218B2 (en) | 2009-12-14 | 2015-09-24 | Ab Initio Technology Llc | Specifying user interface elements |
US9052908B2 (en) * | 2010-01-22 | 2015-06-09 | The Regents Of The University Of California | Web application development framework |
US8397195B2 (en) | 2010-01-22 | 2013-03-12 | Synopsys, Inc. | Method and system for packet switch based logic replication |
US8370809B2 (en) | 2010-03-18 | 2013-02-05 | Salesforce.Com, Inc. | System, method and computer program product for automated test case generation and scheduling |
US8875145B2 (en) * | 2010-06-15 | 2014-10-28 | Ab Initio Technology Llc | Dynamically loading graph-based computations |
US8627296B1 (en) | 2010-09-15 | 2014-01-07 | Google Inc. | Unified unit and integration test with automatic mock creation |
US20120078731A1 (en) * | 2010-09-24 | 2012-03-29 | Richard Linevsky | System and Method of Browsing Electronic Catalogs from Multiple Merchants |
US20120131559A1 (en) | 2010-11-22 | 2012-05-24 | Microsoft Corporation | Automatic Program Partition For Targeted Replay |
US9563411B2 (en) * | 2011-01-07 | 2017-02-07 | Ab Initio Technology Llc | Flow analysis instrumentation |
US20120185767A1 (en) * | 2011-01-14 | 2012-07-19 | Apple Inc. | Modifying application behavior |
US8874622B2 (en) | 2011-03-28 | 2014-10-28 | Microsoft Corporation | Flexible order of authoring for data integration solutions |
US8386419B2 (en) | 2011-05-12 | 2013-02-26 | Narendar Yalamanchilli | Data extraction and testing method and system |
JP5906789B2 (en) | 2012-02-17 | 2016-04-20 | 株式会社ソシオネクスト | Message output control device and message output control method |
US9146750B2 (en) * | 2012-08-10 | 2015-09-29 | The Mathworks, Inc. | Mechanism for replacing an array creation routine within code |
US9002348B2 (en) | 2012-11-20 | 2015-04-07 | Aeris Communications, Inc. | Utilizing devices nearby |
US9274926B2 (en) | 2013-01-03 | 2016-03-01 | Ab Initio Technology Llc | Configurable testing of computer programs |
EP2881857B8 (en) * | 2013-12-09 | 2018-09-12 | dSPACE digital signal processing and control engineering GmbH | Method for modifying the software in the memory of an electronic control device |
US9430228B2 (en) * | 2013-12-16 | 2016-08-30 | International Business Machines Corporation | Verification of backward compatibility of software components |
JP6882892B2 (en) * | 2013-12-18 | 2021-06-02 | アビニシオ テクノロジー エルエルシー | Data generation |
US10055333B2 (en) | 2014-11-05 | 2018-08-21 | Ab Initio Technology Llc | Debugging a graph |
US9880818B2 (en) | 2014-11-05 | 2018-01-30 | Ab Initio Technology Llc | Application testing |
US9804946B2 (en) * | 2015-05-27 | 2017-10-31 | Oracle International Corporation | System and method for providing automated computer language translation and verification |
US10671669B2 (en) * | 2015-12-21 | 2020-06-02 | Ab Initio Technology Llc | Sub-graph interface generation |
US10936289B2 (en) * | 2016-06-03 | 2021-03-02 | Ab Initio Technology Llc | Format-specific data processing operations |
US10831509B2 (en) | 2017-02-23 | 2020-11-10 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
US10929122B1 (en) * | 2019-10-23 | 2021-02-23 | Microsoft Technology Licensing, Llc | Modifying program modules in running applications |
-
2017
- 2017-02-15 US US15/433,467 patent/US10936289B2/en active Active
- 2017-05-18 WO PCT/US2017/033285 patent/WO2017209969A1/en unknown
- 2017-05-18 AU AU2017274407A patent/AU2017274407B2/en active Active
- 2017-05-18 CN CN201780046555.1A patent/CN109564507B/en active Active
- 2017-05-18 JP JP2018563483A patent/JP2019521430A/en active Pending
- 2017-05-18 DE DE112017002779.9T patent/DE112017002779T5/en active Pending
- 2017-05-18 SG SG11201810383SA patent/SG11201810383SA/en unknown
- 2017-05-18 CA CA3026334A patent/CA3026334C/en active Active
- 2017-05-18 EP EP17727996.5A patent/EP3465422B1/en active Active
-
2021
- 2021-02-25 US US17/185,550 patent/US11347484B2/en active Active
- 2021-03-02 AU AU2021201363A patent/AU2021201363B2/en active Active
-
2023
- 2023-02-06 JP JP2023015892A patent/JP2023071664A/en active Pending
Also Published As
Publication number | Publication date |
---|---|
CA3026334C (en) | 2023-07-25 |
EP3465422A1 (en) | 2019-04-10 |
CN109564507B (en) | 2022-06-24 |
AU2021201363A1 (en) | 2021-03-18 |
US20210182038A1 (en) | 2021-06-17 |
DE112017002779T5 (en) | 2019-02-28 |
JP2019521430A (en) | 2019-07-25 |
EP3465422B1 (en) | 2022-09-14 |
AU2017274407A1 (en) | 2018-12-13 |
US10936289B2 (en) | 2021-03-02 |
US11347484B2 (en) | 2022-05-31 |
AU2021201363B2 (en) | 2022-11-24 |
US20170351494A1 (en) | 2017-12-07 |
CN109564507A (en) | 2019-04-02 |
WO2017209969A1 (en) | 2017-12-07 |
CA3026334A1 (en) | 2017-12-07 |
SG11201810383SA (en) | 2018-12-28 |
AU2017274407B2 (en) | 2020-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023071664A (en) | Format-specific data processing operation | |
CN107111545B (en) | Method and system for generating computer executable graph | |
US10705807B2 (en) | Application testing | |
US20230112179A1 (en) | Automated modification of computer programs | |
CN115292160B (en) | Application testing | |
CA3233392A1 (en) | Automated modification of computer programs | |
US9098624B1 (en) | Deep type parsing | |
CN118202331A (en) | Automatic modification of computer programs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230307 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230404 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240229 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240304 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20240531 |