(57)【要約】  方法であって、コンピュータ・プログラムの第１のバージョンをプロセッサによって解析することであって、このコンピュータ・プログラムの第１のバージョンに含まれる第１のプロセスを識別することを含む解析することを含み、この第１のプロセスは、第１のフォーマットを有するデータに動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第２のバージョンをプロセッサによって生成し、第１のプロセスを省略することを含み、第１のフォーマットとは異なる第２のフォーマットのデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、コンピュータ・プログラムの少なくとも一部分の第２のバージョンに含むことを含む、第２の動作が第１の動作に基づく方法。
2019521430.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・プログラムの第１のバージョンをプロセッサによって解析することであって、前記コンピュータ・プログラムの前記第１のバージョンに含まれる第１のプロセスを識別することを含み、前記第１のプロセスが、第１のフォーマットのデータに第１の動作を実行するように構成されることと、
前記コンピュータ・プログラムの少なくとも一部分の第２のバージョンをプロセッサによって生成することであって、前記第１のプロセスを省略することを含み、前記第１のフォーマットとは異なる第２のフォーマットのデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、コンピュータ・プログラムの前記少なくとも一部分の前記第２のバージョンに含むこととを含み、前記第２の動作が前記第１の動作に基づく、方法。
【請求項２】
第１のプロセスを識別することは、前記第１の動作が前記データの前記フォーマットに依存している第１のプロセスを識別することを含む、請求項１に記載の方法。
【請求項３】
第１のプロセスを識別することが、前記第２のフォーマットのデータに前記第１の動作を実行することができない第１のプロセスを識別することを含む、請求項１又は２に記載の方法。
【請求項４】
処理すべきデータのフォーマットを、前記第１のプロセスによって決定することを含む、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
第１のプロセスを識別することが、前記第１のプロセスによって処理される前記データの前記フォーマットを有するデータに、前記第１の動作を実行することができない第１のプロセスを識別することを含む、請求項４に記載の方法。
【請求項６】
第１のプロセスを識別することが、前記コンピュータ・プログラムの第１のデータ処理要素を識別することを含み、前記第１のデータ処理要素が、前記第１のプロセスを実行するように構成される、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記コンピュータ・プログラムでの前記１つ又は複数の第２のプロセスを含むことが、前記コンピュータ・プログラムの前記少なくとも一部分の前記第２のバージョンでの１つ又は複数の第２のデータ処理要素を含み、前記第２のデータ処理要素が、前記１つ又は複数の第２のプロセスを実行するように構成される、請求項６に記載の方法。
【請求項８】
前記第１のフォーマットが、データ・タイプを含む、請求項１〜７のいずれか一項に記載の方法。
【請求項９】
前記第１のフォーマットが、データ要素のサイズを含む、請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
前記第１のプロセスが、第１のレコード・フォーマットのデータ・レコードに前記第１の動作を実行するように構成され、前記１つ又は複数の第２のプロセスが、第２のレコード・フォーマットのデータ・レコードに前記第２の動作を実行するように構成される、請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
前記第１のレコード・フォーマットが、前記レコードでのフィールドの名前を含む、請求項１０に記載の方法。
【請求項１２】
ユーザ・インターフェースにおいて、１つ又は複数の動作のうちの第１のセットの識別子を提示することを含む、請求項１〜１１のいずれか一項に記載の方法。
【請求項１３】
前記コンピュータ・プログラムの少なくとも一部分の前記第２のバージョンを生成することが、前記コンピュータ・プログラムの前記一部分のコピーを生成することを含む、請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
前記コンピュータ・プログラムの前記一部分の前記コピーを修正して、前記第１のプロセスを省略し、前記１つ又は複数の第２のプロセスを含むことを含む、請求項１３に記載の方法。
【請求項１５】
前記コンピュータ・プログラムの前記第２のバージョンを実行することを含む、請求項１〜１４のいずれか一項に記載の方法。
【請求項１６】
前記１つ又は複数の第２のプロセスがオーバレイ指定によって定義される、請求項１〜１５のいずれか一項に記載の方法。
【請求項１７】
前記コンピュータ・プログラムの前記第２のバージョンを生成することが、前記コンピュータ・プログラムの前記第１のバージョン及び前記オーバレイ指定に基づいて前記第２のバージョンを生成することを含む、請求項１６に記載の方法。
【請求項１８】
前記オーバレイ指定が、前記第１のプロセスの上流のプロセス及び前記第１のプロセスの下流のプロセスのうち１つ又は複数を識別する、請求項１６又は１７に記載の方法。
【請求項１９】
前記第１のプロセスを定義する実行可能コードの解析に基づいて、前記第１のプロセスを識別することを含む、請求項１６〜１８のいずれか一項に記載の方法。
【請求項２０】
前記コンピュータ・プログラムがグラフを含む、請求項１に記載の方法。
【請求項２１】
前記第１のプロセスが、前記グラフの第１の構成要素によって表される実行可能なプロセスであり、前記１つ又は複数の第２のプロセスが、前記グラフの１つ又は複数の第２の構成要素によって表される実行可能なプロセスである、請求項１〜２０のいずれか一項に記載の方法。
【請求項２２】
前記１つ又は複数の第２の構成要素が、前記グラフの上流構成要素からデータ・レコードを受信するように構成される、請求項２１に記載の方法。
【請求項２３】
前記１つ又は複数の第２の構成要素が、前記グラフの下流構成要素にデータ・レコードを提供するように構成される、請求項２１又は２２に記載の方法。
【請求項２４】
コンピュータ・プログラムの第１のバージョンをプロセッサによって解析するための手段であって、前記解析することが、前記コンピュータ・プログラムの前記第１のバージョンに含まれる第１のプロセスを識別することを含み、前記第１のプロセスが、第１のフォーマットを有するデータに第１の動作を実行するように構成される手段と、
前記コンピュータ・プログラムの少なくとも一部分の第２のバージョンをプロセッサによって生成するための手段であって、前記第１のプロセスを省略することを含み、前記第１のフォーマットとは異なる第２のフォーマットを有するデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第２のバージョンに含む手段とを備え、前記第２の動作が前記第１の動作に基づく、システム。
【請求項２５】
メモリに結合されたプロセッサを備え、前記プロセッサ及びメモリが、
コンピュータ・プログラムの第１のバージョンを解析するように構成され、前記解析することが、前記コンピュータ・プログラムの前記第１のバージョンに含まれる第１のプロセスを識別することを含み、前記第１のプロセスが、第１のフォーマットを有するデータに第１の動作を実行するように構成され、
前記コンピュータ・プログラムの少なくとも一部分の第２のバージョンを生成するように構成され、前記第１のプロセスを省略することを含み、前記第１のフォーマットとは異なる第２のフォーマットを有するデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第２のバージョンに含み、前記第２の動作が前記第１の動作に基づく、システム。
【請求項２６】
コンピューティング・システムが、
コンピュータ・プログラムの第１のバージョンを解析するようにし、前記解析することが、前記コンピュータ・プログラムの前記第１のバージョンに含まれる第１のプロセスを識別することを含み、前記第１のプロセスが、第１のフォーマットを有するデータに第１の動作を実行するように構成され、
前記コンピュータ・プログラムの少なくとも一部分の第２のバージョンを生成するようにし、前記第１のプロセスを省略することを含み、前記第１のフォーマットとは異なる第２のフォーマットを有するデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、前記コンピュータ・プログラムの前記少なくとも一部分の前記第２のバージョンに含むようにするための命令を記憶し、前記第２の動作が前記第１の動作に基づく、持続的なコンピュータ読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本出願は、２０１６年６月３日出願の米国特許仮出願第６２／３４５，２１７号、及び２０１７年２月１５日出願の米国特許出願第１５／４３３，４６７号の優先権を主張し、その両方の内容全体を参考としてここに組み込む。
【背景技術】
【０００２】
背景
複雑な計算は、有向グラフ（「データフロー・グラフ」と呼ばれる）を用いたデータ・フローとして表すことのできる場合が多く、この計算の構成要素は、このグラフの頂点に関連付けられ、データは、グラフのリンク（弧、縁部）に対応する各構成要素間を流れる。各構成要素は、１つ又は複数の入力ポートでデータを受信し、このデータを処理し、１つ又は複数の出力ポートからデータを提供するデータ処理構成要素、及びデータ・フローの送信側又は受信側の役割を果たすデータセット構成要素を含むことができる。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
一態様では、方法は、コンピュータ・プログラムの第１のバージョンをプロセッサによって解析することであって、コンピュータ・プログラムの第１のバージョンに含まれる第１のプロセスを識別することを含み、この第１のプロセスが、第１のフォーマットのデータに第１の動作を実行するように構成されることと、コンピュータ・プログラムの少なくとも一部分の第２のバージョンをプロセッサによって生成することであって、第１のプロセスを省略することを含み、第１のフォーマットとは異なる第２のフォーマットのデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、コンピュータ・プログラムの少なくとも一部分の第２のバージョンに含むことを含み、この第２の動作が第１の動作に基づく。
【０００４】
各実施形態は、以下の特徴のうちの１つ又は複数を含むことができる。
【０００５】
第１のプロセスを識別することは、第１の動作がデータのフォーマットに依存している第１のプロセスを識別することを含む。
【０００６】
第１のプロセスを識別することは、第２のフォーマットのデータに第１の動作を実行することができない第１のプロセスを識別することを含む。
【０００７】
この方法は、第１のプロセスによって処理されるデータのフォーマットを決定することを含む。第１のプロセスを識別することは、この第１のプロセスによって処理されるデータのフォーマットを有するデータに、第１の動作を実行することができない第１のプロセスを識別することを含む。
【０００８】
第１のプロセスを識別することは、コンピュータ・プログラムの第１のデータ処理要素を識別することを含み、この第１のデータ処理要素は、第１のプロセスを実行するように構成される。コンピュータ・プログラムの少なくとも一部分の第２のバージョンでの１つ又は複数の第２のプロセスを含むことは、コンピュータ・プログラムの少なくとも一部分の第２のバージョンでの１つ又は複数の第２のデータ処理要素を含むことを含み、この第２のデータ処理要素は、１つ又は複数の第２のプロセスを実行するように構成される。
【０００９】
第１のフォーマットは、データ・タイプを含む。
【００１０】
第１のフォーマットは、データ要素のサイズを含む。
【００１１】
第１のプロセスは、第１のレコード・フォーマットのデータ・レコードに第１の動作を実行するように構成され、１つ又は複数の第２のプロセスは、第２のレコード・フォーマットのデータ・レコードに第２の動作を実行するように構成される。第１のレコード・フォーマットは、各レコードでのフィールドの名前を含む。
【００１２】
この方法は、ユーザ・インターフェースにおいて、１つ又は複数の動作の第１のセットの識別子を提示することを含む。
【００１３】
コンピュータ・プログラムの少なくとも一部分の第２のバージョンを生成することは、このコンピュータ・プログラムのこの部分のコピーを生成することを含む。
【００１４】
この方法は、コンピュータ・プログラムのこの部分のコピーを修正して、第１のプロセスを省き、１つ又は複数の第２のプロセスを含むことを含む。
【００１５】
この方法は、コンピュータ・プログラムの第２のバージョンを実行することを含む。
【００１６】
１つ又は複数の第２のプロセスは、オーバレイ指定によって定義される。コンピュータ・プログラムの第２のバージョンを生成することは、コンピュータ・プログラムの第１のバージョン及びオーバレイ指定に基づいて第２のバージョンを生成することを含む。このオーバレイ指定は、第１のプロセスの上流のプロセス及び第１のプロセスの下流のプロセスのうちの１つ又は複数を識別する。この方法は、第１のプロセスを定義する実行可能コードの解析に基づいて、第１のプロセスを識別することを含む。
【００１７】
コンピュータ・プログラムはグラフを含む。第１のプロセスは、このグラフの第１の構成要素によって表される実行可能なプロセスであり、１つ又は複数の第２のプロセスは、グラフの１つ又は複数の第２の構成要素によって表される実行可能なプロセスである。１つ又は複数の第２の構成要素は、グラフの上流構成要素からデータ・レコードを受信するように構成される。１つ又は複数の第２の構成要素は、グラフの下流構成要素にデータ・レコードを提供するように構成される。
【００１８】
一態様では、システムは、コンピュータ・プログラムの第１のバージョンをプロセッサによって解析するための手段であって、この解析することが、コンピュータ・プログラムの第１のバージョンに含まれる第１のプロセスを識別することを含み、この第１のプロセスが、第１のフォーマットを有するデータに第１の動作を実行するように構成される手段と、コンピュータ・プログラムの少なくとも一部分の第２のバージョンをプロセッサによって生成するための手段であって、第１のプロセスを省略することを含み、第１のフォーマットとは異なる第２のフォーマットを有するデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、コンピュータ・プログラムの少なくとも一部分の第２のバージョンに含む手段とを備え、この第２の動作が第１の動作に基づく。
【００１９】
一態様では、システムは、メモリに結合されたプロセッサを備え、このプロセッサ及びメモリは、コンピュータ・プログラムの第１のバージョンを解析するように構成され、この解析することが、コンピュータ・プログラムの第１のバージョンに含まれる第１のプロセスを識別することを含み、この第１のプロセスが、第１のフォーマットを有するデータに第１の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第２のバージョンを生成するように構成され、第１のプロセスを省略することを含み、第１のフォーマットとは異なる第２のフォーマットを有するデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、コンピュータ・プログラムの少なくとも一部分の第２のバージョンに含み、この第２の動作が第１の動作に基づく。
【００２０】
一態様では、持続的なコンピュータ読取り可能な媒体は、コンピューティング・システムが、コンピュータ・プログラムの第１のバージョンを解析するようにし、この解析することが、コンピュータ・プログラムの第１のバージョンに含まれる第１のプロセスを識別することを含み、この第１のプロセスが、第１のフォーマットを有するデータに第１の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第２のバージョンを生成するようにし、第１のプロセスを省略することを含み、第１のフォーマットとは異なる第２のフォーマットを有するデータに第２の動作を実行するように構成された１つ又は複数の第２のプロセスを、コンピュータ・プログラムの少なくとも一部分の第２のバージョンに含むようにするための命令を記憶し、この第２の動作が第１の動作に基づく。
【００２１】
他の特徴及び利点は、以下の説明及び特許請求の範囲から明白になろう。
【図面の簡単な説明】
【００２２】
図面の説明
【図１】グラフの例である。
【図２】グラフの例である。
【図３】グラフの例である。
【図４】オーバレイ指定の一例である。
【図５】ブロック図である。
【図６】流れ図である。
【図７】ブロック図である。
【図８】ブロック図である。
【図９】ブロック図である。
【図１０】流れ図である。
【発明を実施するための形態】
【００２３】
説明
グラフなどの実行可能なアプリケーションは、この実行可能なアプリケーションによって処理されるデータ・レコードの１つ又は複数の特定のフォーマットに特有の、１つ又は複数のプロセスを含むことができる。このようなプロセスは、１つ又は複数の特定のフォーマットのみのデータに動作を実行することができ、互いに異なるフォーマットのデータにこれらのプロセスを実行しようとすると、エラー又は不正確な処理につながる場合がある。ここで、データの１つ又は複数の特定のフォーマットに特有の、実行可能なアプリケーションのプロセスを識別するための手法について述べる。実行可能なアプリケーションが、互いに異なるフォーマットのデータに動作を実行できるようにするために、これらのフォーマット特有のプロセスが省略され、１つ又は複数の他のプロセスが含まれる実行可能なアプリケーションの第２のバージョンを生成することができる。置換プロセスと呼ばれることもある、これら他のプロセスは、省略されたフォーマット特有のプロセスによって実行される動作に基づいているが、互いに異なる１つ又は複数のフォーマットのデータに特有であり、又は任意のフォーマットのデータに動作を実行できる動作を実行することができる。実行可能なアプリケーションの第２のバージョンに置換プロセスを含めることにより、実行可能なアプリケーションは、この実行可能なアプリケーションの元のバージョンが構成されたフォーマットとは異なるフォーマットのデータを処理できるようになる。
【００２４】
置換プロセスは、オーバレイ指定で定義することができ、このオーバレイ指定は、元の実行可能なアプリケーション（第１のアプリケーションとも呼ばれることがある）とは別のファイルである。オーバレイ指定で定義された置換プロセスは、元のアプリケーションの一部分になることなく、アプリケーションの第２のバージョン（第２のアプリケーションとも呼ばれることもある）に追加することができる。たとえば、アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、１つ又は複数のプロセスが省略され、１つ又は複数の対応する置換プロセスが含まれる第２のアプリケーションを生成する。省略されると、第１のアプリケーションに含まれるプロセスが、第２のアプリケーションには含まれないことを意味する。対応する置換構成要素は、第２のアプリケーション、たとえば省略されたプロセスが第１のアプリケーションに配置されていた位置に挿入される。
【００２５】
置換プロセスは、挿入の例である。挿入の他の例には、テスト・ソース及びプローブが含まれ、これらは又オーバレイ指定によって定義することができる。テスト・ソースは、実行可能なアプリケーションによる処理向けの、テスト・データなどのデータを提供できる置換データ・ソースである。プローブは、実行可能なアプリケーションがデータを書き込む際の、代替の書込み先である。挿入は、たとえば、グラフなどの実行可能なアプリケーションをテスト又はデバッグするのに有用になる場合がある。たとえば、試験者又は開発者は、アプリケーションに加える変更の効果を観察するために、入力データの特定のセットを使用してテストを実行したいと思うことがある。この変更の前後ともに、入力データの一貫したセットを使用してアプリケーションを実行することにより、アプリケーションが出力するデータに加えるこの変更の効果を監視することができる。例によっては、アプリケーションの機能の全てを少なくとも一度は実行することになる、テスト・データのセットなど、試験者は、アプリケーションをテストするときに使用されることになるテスト・データの特定のセットを有する場合がある。同様にして、試験者は、アプリケーションが出力データを書き込む際の標準の書込み先とは異なる特定の書込み先に、アプリケーションが出力するこのデータを書き込みたいと考えることがある。
【００２６】
例によっては、挿入は、アプリケーションの自動解析に基づいて自動的に定義することができる。たとえば、アプリケーションでのフォーマット特有のプロセスの自動識別に基づいて、置換構成要素を自動的に定義することができる。テスト・ソース及びプローブは、アプリケーションのデータ・ソース及び出力データ受信側の自動識別に基づいて自動的に定義することができる。
【００２７】
例によっては、実行可能なアプリケーションはグラフベースのプロセスである。グラフベースのプロセスは、ある１つの構成要素から別の構成要素へのデータの流れを示すフローによって接続された、それぞれ実行可能なプロセスを表す１つ又は複数の構成要素を含む。置換プロセスは、グラフベースのプロセスでの構成要素に関連付けられたオブジェクトである。置換プロセス（置換え構成要素とも呼ばれることがある）は、既存の構成要素によって処理されたはずのデータが置換構成要素によって代わりに処理されるように、グラフ内の既存の構成要素を置換することができる。テスト・ソース及びプローブの挿入は、グラフベースのプロセスでのフローに関連付けられたオブジェクトである。テスト・ソースは、フローを通過するデータ（たとえば、アップストリーム・データ）を新規データで置換することができ、その結果、グラフのそれぞれの実行において上流側の計算を再実行する必要はない。たとえば、テスト・ソースは、データ・ソースからではなくテスト・ソースからグラフにテスト・データが提供されるよう、このデータ・ソースを置換することができる。プローブは、グラフが実行されるとき、フローを通過するデータを監視することができ、後に検査又は再使用するために、このデータを保存することができる。たとえば、プローブは、データベースなどの出力データ受信側に他の方法で保存されていたはずのデータを受信することができる。
【００２８】
オーバレイ指定で定義される挿入は、元のアプリケーションの一部分になることなく、実行中にアプリケーションに追加することができる。アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、挿入を含む実行可能なアプリケーションを生成する。アプリケーションの第１のバージョンとしての元のアプリケーション、及びアプリケーションの第２のバージョンとしての挿入を含むアプリケーションを参照する場合がある。たとえば、グラフベースのプロセスの例では、オーバレイ指定において定義された挿入オブジェクトと結合された、グラフの第１のバージョンの構成要素を含むグラフの第２のバージョンとして、実行可能なグラフを視覚的に表すことができる。例によっては、実行可能なグラフはシェル・スクリプトであり、ファイル内には記憶されない。例によっては、実行可能なグラフ及びこのグラフは、別々のファイルに記憶される。
【００２９】
グラフの第２のバージョンへの挿入の取込みは、グラフの第１のバージョンを修正しない。その代わりに、挿入定義は、別々のファイル（たとえば、別々のオーバレイ指定）にとどまり、コード生成の開始時点において、修正済みグラフに含めるために通常のグラフ構成要素へと変換することができる。したがって、元のグラフを意図せずに破壊するリスクがない。
【００３０】
図１には、グラフ１００の一例が示してある。グラフ１００は、フローによって接続されたデータ処理構成要素を含む、コンピュータ・プログラムの視覚表現である。２つの構成要素を接続するフローは、第１の構成要素から出力されたレコードが、第２の構成要素に渡されることを示す。フローによって第１の構成要素が第２の構成要素に接続されているとき、第１の構成要素は第２の構成要素を参照する。
【００３１】
（図に示すような）データベースなどのデータ・ソース１０２、ファイル、キュー、実行可能文（たとえば、ＳＱＬ文）、又はグラフ１００の外部にある別のタイプのデータ・ソースは、グラフ１００によって処理される１つ又は複数のデータ・レコードを含む。外部という言葉によって、データ・ソース１０２のデータが、グラフ１００内に記憶されないことを意味する。データ・ソース１０２は、フローによってフィルタ構成要素１０３に接続されている。一般に、フィルタ構成要素は、所定の判定基準を満たさないレコードを選別又は削除する。この例では、フィルタ構成要素１０３は、オハイオ州在住の顧客のデータ・レコードを通過させ、その他のレコードを拒否する。フィルタ構成要素１０３は、選別済みのデータ・レコードを郵便番号でソートする、ソート構成要素１０４に接続されている。ソート構成要素１０４は、２つの異なる方式でデータ・レコードを処理できるように、このデータ・レコードのコピーを作成する、複製構成要素１０６に接続されている。複製構成要素は、フォーマット変更構成要素１０８、及び表現式による選別の構成要素１１０に接続されている。たとえば、オハイオ州在住の顧客のデータ・レコードの１つの実現値は、郵便番号でソートされ、フォーマット変更構成要素１０８に送られ、又データ・レコードの別の実現値が、表現式による選別の構成要素１１０に送られる。フォーマット変更構成要素１０８は、データ・レコードのフォーマットをそれとは異なるデータ・フォーマットに変更し、表現式による選別の構成要素１１０は、データ・レコードに関連付けられた表現式に基づいて、このデータ・レコードを削除する。フォーマット変更構成要素１０８、及び表現式による選別の構成要素１１０は、受信済みのデータ・レコードを結合する集約構成要素１１２に接続されており、この集約構成要素は、（図に示すような）データベース、ファイル、キュー、又は下流処理構成要素など、グラフの外部に存在する出力データ受信側構成要素１１４に接続されている。外部という言葉によって、出力データ受信側１１４のデータが、グラフ１００内に記憶されないことを意味する。グラフ１００は、各構成要素間に多くのフローを含むが、データ・ソース１０２とフィルタ構成要素１０３との間のフロー１１６（ソース／フィルタ・フロー１１６と呼ぶことがある）、及び集約構成要素１１２と出力データ受信側１１４との間のフロー１１８（集約／出力フロー１１８と呼ぶことがある）が、この例では特に対象となる。
【００３２】
グラフの各構成要素のうちの１つ又は複数は、フォーマット特有の構成要素とすることができる。フォーマット特有の構成要素は、１つ又は複数の特定のフォーマットのデータのみを処理できる構成要素である。データ・フォーマットは、個々のデータ項目の特性（たとえば、レコードのフィールド内の値の特性）、又はレコードの特性（レコード・フォーマットと呼ばれることもある）である。個々のデータ項目の特性の例は、データ項目のサイズ（たとえば、１バイトＡＳＣＩＩデータ項目、若しくはマルチバイト・データ項目）、データ項目のタイプ（たとえば、ストリング・タイプ、整数タイプ、ブール・タイプ、若しくは他のデータ・タイプ）、又は個々のデータ項目の別の特性など、データ項目について数多くのバイトを含む。レコード・フォーマットの例には、レコード内のフィールドの名前、レコード内のフィールドの位置、レコード内のフィールドの数、階層型レコード、フィールドの配列又は繰返しグループ、入れ子状の配列、サブレコード、又はレコードの別の特性が含まれる。
【００３３】
グラフは、特定のデータ・フォーマットに特有の構成要素を含むとき、特定のフォーマットのデータのみを処理できてもよい。グラフが、互いに異なるフォーマットを有するデータを処理するのに使用される場合、エラーが発生する場合があり、又はデータが不正確に処理される場合がある。フォーマットが異なるデータをグラフが処理できるようにするには、フォーマット特有の構成要素のうちの１つ又は複数を、異なるフォーマットのデータを処理することのできる構成要素で置換することができる。置換構成要素は、様々な構成要素に特有であるフォーマット特有の構成要素とすることができ、又は任意のフォーマットのデータを処理できる構成要素（これを、フォーマットに依存しない構成要素と呼ぶことがある）とすることができる。
【００３４】
たとえば、図１の例では、ソート構成要素１０４は、郵便番号フィールド内の値によってレコードをソートする。この例でのソート構成要素１０４は、整数だけを処理できるフォーマット特有の構成要素である。グラフ１００のオペレータは、グラフ１００を使用して、郵便番号フィールドが文字数字の列を含んでもよいデータの新規セットを処理したいと思うことがある。
【００３５】
図２を参照すると、ソート構成要素１０４が省略され、置換ソート構成要素２０４が含まれる、グラフ１００の第２のバージョン２００が生成される。置換ソート構成要素２０４は、グラフの第２のバージョン２００内での、ソート構成要素１０４と同じ位置に配置され、文字数字の列をソートすることができる。グラフの他の構成要素は変化しない。グラフの第２のバージョン２００は、データの新規セットをこのように処理することができる。
【００３６】
構成要素によっては、任意のフォーマットのデータを受信し、このデータに動作を実行することができてもよいが、特定のフォーマットのデータを出力してもよい。互いに異なるフォーマットのデータが出力として望まれる場合（たとえば、特定のフォーマットを指定する別のアプリケーションへの入力として提供されるように）、グラフは、このデータを提供することができない場合がある。グラフが所望のフォーマットのデータを出力できるようにするために、フォーマット特有の構成要素のうちの１つ又は複数を、所望のフォーマットのデータを出力できる構成要素で置換することができる。
【００３７】
やはり図１を参照すると、フォーマット変更構成要素１０８は、特定のフォーマットのデータを出力するフォーマット特有の構成要素である。たとえば、フォーマット変更構成要素１０８は、４つのフィールド、Ｎａｍｅ、Ａｃｃｏｕｎｔ＿ｎｕｍ、Ｂａｌａｎｃｅ、及びＴｒａｎｓ＿ｄａｔｅを有するデータ・レコードを出力してもよい。グラフ１００のオペレータは、たとえば、入力データのレコード・フォーマットについて特定の要求条件を有する別のアプリケーションによって出力データを処理できるように、互いに異なるフォーマットの出力データをグラフ１００が生成するようにしたいと思うことがある。この例では、出力データの所望のフォーマットは、４つのフィールド、Ｃｕｓｔ＿ｎａｍｅ、Ｂａｌａｎｃｅ、Ａｃｃｏｕｎｔ＿ｎｕｍ、及びＴｒａｎｓ＿ｄａｔｅを含む。すなわち、出力データの第１のフィールドの名前を変更し、第２のフィールド及び第３のフィールドを切り替える必要がある。
【００３８】
図３を参照すると、フォーマット変更構成要素１０８が省略され、置換フォーマット変更構成要素３０８が含まれる、グラフ１００の第２のバージョン３００が生成される。置換フォーマット変更構成要素３０８は、グラフの第２のバージョン３００内での、フォーマット変更構成要素１０８と同じ位置に配置され、所望のフォーマットの出力データを生成することができる。グラフの他の構成要素は変化しない。
【００３９】
例によっては、フォーマット特有の構成要素の上流又は下流の１つ又は複数の構成要素など、グラフの他の構成要素を省略することもできる。場合によっては、省略されたその他の構成要素のうちの１つ又は複数の代わりに、置換構成要素を含めることができる。
【００４０】
例によっては、グラフ１００の試験者は、グラフ１００をデバッグして、その機能を検証したいと考えることがある。場合によっては、試験者は、データが、ある構成要素から別の構成要素に流れるとき、このデータを検証したいと思うことがある。場合によっては、試験者は、グラフ１００での上流構成要素を迂回し、その代わりに、迂回された構成要素の位置にデータを挿入したいと思うことがある。場合によっては、試験者は、グラフを変更することの、グラフが出力するデータへの影響を監視するために、入力データの一貫したセットを使用してグラフ１００の動作をテストしたいと思うことがある。場合によっては、試験者は、グラフの機能の全てを少なくとも１回だけは実行できるようにすることを知っている入力データのセットを使用して、グラフ１００の動作をテストし、したがってグラフの完全なテストを可能にしたいと思うことがある。
【００４１】
グラフ１００をデバッグする際、グラフの修正をやめることが望ましい場合がある。たとえば、試験者は、グラフの機能を損なうリスクを負いたくない思うことがある。例によっては、試験者は、グラフへのアクセスを制限されているか、又はアクセスできない場合がある（たとえば、試験者には、グラフを編集するのに必要な許可がない場合がある）。グラフ１００を修正することなく、このグラフ１００をデバッグするために、オーバレイを使用してグラフをデバッグすることができる。例によっては、たとえばグラフの自動解析に基づいて、このオーバレイを自動的に指定することができる。元のグラフ１００（グラフの第１のバージョンと呼ばれることがある）、及びオーバレイ指定に基づいて、グラフ１００の少なくとも一部分の第２のバージョンを生成することができる。
【００４２】
グラフ１００の各構成要素間のフローをデータが通過するとき、たとえば、第１の構成要素から第２の構成要素までのフローに沿って、又は出力データ受信側までのフローに沿って、プローブが、このデータを収集又は監視する。たとえば、グラフ１００が実行される際にデータがフローを通過するとき、このデータを監視し、後で検査するために保存し、又は再使用するために保存することができる。オーバレイ指定は、収集又は監視すべきデータを運ぶフローを参照するプローブを定義することができる。プローブは、データを収集又は監視すべきフローを指定する。プローブは、特定の値を報告し、又は特定の値が、所定範囲内又は所定範囲外にあるときに、そのことを報告するように構成することができる。プローブを通過するデータは、後で解析又は使用するために保存してもよく、たとえば、このデータは、単層ファイル又はリレーショナル・データベースに記憶することができる。
【００４３】
例によっては、プローブは、グラフ１００のある構成要素から、ファイル又はデータベースなど出力データ受信側までのフローを参照することができる。グラフ１００のデバッギング中に、データ受信側までのフローに沿ってプローブを配置することによって、このプローブは、グラフ１００から出力されるデータを受信する。たとえば、グラフ１００がデバッギング・モードで実行されるたびに、出力データをプローブによって受信し、ファイルに書き込むことができ、その結果、様々なグラフ実行からの出力データを比較することができ、又は他の方法で評価することができる。例によっては、出力データ受信側が自動的に識別され、オーバレイが自動的に指定されて、識別された出力データ受信側の前に挿入するためのプローブを定義する。
【００４４】
例によっては、プローブは、グラフ１００の上流構成要素から下流構成要素までのフローを参照することができる。グラフ１００のデバッギング中に、下流構成要素までのフローに沿ってプローブを配置することによって、このプローブは、下流構成要素によって他の方法で受信されていたはずのデータを受信し、したがって下流構成要素が実行しないようにする。たとえば、試験者は、下流構成要素の前にグラフが処理する結果を監視したいと考えることがある。たとえば、この下流構成要素は、グラフの外部に影響を及ぼす機能を有してもよく、たとえば、下流構成要素は、この下流構成要素によって自身のクレジット・カードのレコードが処理されるそれぞれの人に向けて、テキスト・メッセージを送信してもよい。グラフのデバッギング中、試験者は、グラフの外部に影響を及ぼすような構成要素を使用不可にしたいと考えることがある。
【００４５】
グラフ１００の２つの構成要素間の特定のフローにおいて、テスト・ソースがグラフ１００にデータを挿入する。オーバレイ指定は、テスト・ソースからのデータで置換すべきデータを運ぶフローを参照する、テスト・ソースを定義することができる。例によっては、テスト・ソースは、通常、フローを通過するはずのデータを、新規のデータで置換する。状況によっては、テスト・ソースは、これまでに保存されたデータを読み取り、このデータを下流構成要素に渡すように構成することができる。例によっては、テスト・ソースは、データベース又はファイルなど、データ・ソースからのフローにおいて、データをグラフ１００に挿入する。テスト・ソースは、データ・ソースによって他の方法で提供されたはずのデータと同じフォーマットを有するデータを挿入することができる。例によっては、データ・ソースが自動的に識別され、オーバレイが自動的に指定されて、識別されたデータ・ソースを置換するためのテスト・ソースを定義する。
【００４６】
例によっては、あるポイントまで（たとえば、ある構成要素まで）グラフ１００を実行した結果が、これまでに検証されていた場合がある。すなわち、上流プロセス機能が、あるポイントまで検証されていた場合がある。こうした場合、グラフ１００が実行されるたびに上流構成要素が各機能を再処理することは、非効率になる場合がある。テスト・ソースは、そのあるポイントにおいて、データ（たとえば、これまでに検証されたデータ）をグラフに挿入することができる。このようにして、これまでに実行されたグラフ１００のセクション全体を迂回してもよい。
【００４７】
図４には、１つ又は複数の挿入を定義するオーバレイ指定２００の一例が示してある。挿入は、グラフ（たとえば、グラフ１００）のフローに関連付けられたオブジェクトとすることができ、プローブ、テスト・ソース、又は置換構成要素の形をとることができる。図４の例では、オーバレイ指定２００は、１つのテスト・ソース定義２０１、及び１つのプローブ定義２１３を含む。オーバレイ指定２００は、グラフ１００についての仕様を含むファイルとは別のファイルなど、ファイルに記憶することができる。
【００４８】
オーバレイ指定２００は、挿入定義が対応できる先のグラフを指定する、３行のヘッダで開始する。ヘッダの後には、テスト・ソース定義２０１、プローブ定義２１３、及び置換構成要素定義（図示せず）が続く。
【００４９】
テスト・ソース定義２０１は、名前２０２、上流ポート２０４、下流ポート２０６、挿入タイプ２０８、プロトタイプ・パス２１０、及びレイアウト・パラメータ２１２を含む。
【００５０】
テスト・ソース定義２０１の上流ポート２０４は、テスト・ソースをグラフ１００に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。フローの上流にある構成要素は、その出力ポートからフロー上にデータが出力される元の構成要素である。図４の例では、テスト・ソース定義２０１の上流ポート２０４が、データベース１０２の出力を指す。テスト・ソース定義２０１の下流ポート２０６は、テスト・ソースをグラフ１００に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。フローの下流にある構成要素は、その入力ポートにおいてフローからデータが受信される構成要素である。図４の例では、テスト・ソース定義の下流ポート２０６が、フィルタ構成要素１０３の入力を指す。したがって、この例でのテスト・ソース定義２０１は、データベース１０２の出力と、フィルタ構成要素１０３の入力との間のフローにテスト・ソースが配置されることになり、その結果、このテスト・ソースが提供するデータが、データベース１０２からの入力データを置換できることを示す。
【００５１】
挿入タイプ２０８は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。図４の例では、値「０」がテスト・ソースを定義し、値「１」がプローブを定義し、値「２」が置換構成要素を定義する。他の値を使用して、挿入のタイプを定義することもできる。この挿入はテスト・ソースなので、挿入タイプ２０８の値は「０」である。
【００５２】
プロトタイプ・パス２１０は、挿入のタイプを示す。この例では、この挿入はテスト・ソースなので、プロトタイプ・パス２１０は、入力ファイル構成要素を指定する。プロトタイプ・パス２１０は、特定のタイプの挿入を定義するコードを含むファイルを指す。レイアウト・パラメータ２１２は、テスト・ソースが含むことになるデータを含むソース・ファイルの位置を定義する。例によっては、この位置はファイル・パスである。ソース・ファイル内のデータは、通常、上流ポート２０４及び下流ポート２０６によって定義されるフローを通過するはずのデータを置換することになる。すなわち、テスト・ソースがグラフ１００に適用されると、フィルタ構成要素１０３が、データベース１０２からのデータを受信するのではなく、ソース・ファイル内のデータを受信する。
【００５３】
このソース・ファイルは、テスト・ソースの下流の構成要素によって他の方法で受信されるはずのデータと同じフォーマットを有するデータを含む。例によっては、ソース・ファイル内のデータは、テスト・ソースの上流にあるデータ・ソース（たとえば、データベース）内のデータと同じでもよい。たとえば、データベース１０２からのデータ・レコードを、ソース・ファイルにコピーすることができる。例によっては、データ・ソースは、ＳＱＬクエリなどの実行可能文を示す。これらの例では、ＳＱＬクエリを実行することができ、このクエリ実行の結果をソース・ファイルに記憶することができる。例によっては、ソース・ファイル内のデータは、データ・ソース以外のどこかから取得することができる。たとえば、ソース・ファイル内のデータを生成して、グラフ１００を完全にデバッグするために、あるデータ（たとえば、ある範囲の値）を確実に処理することができる。例によっては、データ・ソース内のデータが変更されても、ソース・ファイル内のデータは同じままであり、したがって、入力データの一貫したセットでデバッギングを継続できるようになる。
【００５４】
例によっては、ソース・ファイル内のデータは、グラフ１００の通常の実行中にフローを通過するはずのデータと同じでもよいが、テスト・ソースを使用してこのデータを挿入することによって、上流構成要素は処理を控えることができる。たとえば、複製構成要素１０６などの上流構成要素は、データを処理するのに大量のシステム・リソースを必要とすることがあり、又は、データ・フロー・グラフ１００内の他の構成要素と比較して、データを処理するのに要する時間が相対的に長くなることがある。したがって、既知のデータ（たとえば、通常の実行中にフローを通過するはずの同じデータ）をフローに挿入して、時間を節約し、又はシステム・リソースを保護することができる。
【００５５】
プローブ定義２１３は、名前２１４、上流ポート２１６、下流ポート２１８、挿入タイプ２２０、及びプロトタイプ・パス２２２を含む。
【００５６】
プローブ定義２１３の上流ポート２１６は、プローブをグラフ１００に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。図４の例では、プローブ定義２１３の上流ポート２１６が、集約構成要素１１２の出力を指す。プローブ定義２１３の下流ポート２１８は、プローブをグラフ１００に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。図４の例では、プローブ定義２１３の下流ポート２１８が、出力データ受信側構成要素１１４を指す。したがって、この例でのプローブ定義２１３は、集約構成要素１１２の出力と、出力データ受信側構成要素１１４との間のフローにプローブが配置されることになり、その結果、出力データ受信側構成要素に他の方法で書き込まれたはずのデータをプローブが受信することを示す。
【００５７】
プローブ定義２１３の挿入タイプ２２０は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。この挿入はプローブなので、挿入タイプ２２０の値は「１」である。
【００５８】
プロトタイプ・パス２２２は、挿入のタイプを示す。この例では、この挿入はプローブなので、プロトタイプ・パス２２２は出力ファイル構成要素を指定する。プロトタイプ・パス２２２は、特定のタイプの挿入を定義するコードを含むファイルを指す。
【００５９】
例によっては、プローブによって監視すべきデータは、システムによって自動的に作成されるファイルに記憶される。このファイルは、システムによって決定される位置に記憶することができる。プローブは、上流ポート２１６及び下流ポート２１８によって定義されたフローを通過するデータを監視する。すなわち、プローブがグラフ１００に適用されると、集約構成要素１１２の出力から、出力データ受信側構成要素１１４の入力まで通過するデータが監視され、システムによって自動的に作成されるファイルに記憶される。例によっては、このデータを、記憶する前に監視することができる。ファイルは、プローブ定義によって参照される構成要素（この例では、外部のデータ受信側構成要素１１４）によって受信されたはずの同じフォーマットのデータを受信することができる。
【００６０】
例によっては、グラフ１００の自動解析の結果として、オーバレイ指定によって、１つ又は複数のプローブ又はテスト・ソースの挿入を定義することができる。たとえば、グラフ１００の自動解析を実行して、データベース、ファイル、又は他のタイプのデータ・ソースなど、任意のデータ・ソースを識別することができる。識別されたデータ・ソースのうちの１つ又は複数を、テスト・ソースで自動的に置換することができる。置換されたデータ・ソースにより、データ・ソースのすぐ下流のフローにテスト・ソースが挿入され、その結果、データ・ソースからのデータではなく、このテスト・ソースからのデータが下流構成要素に提供されることを意味する。同様に、グラフ１００の自動解析は、データベース、ファイル、又は他のタイプの出力データ受信側など、任意の出力データ受信側を識別することができる。識別された出力データ受信側のうちの１つ又は複数を、プローブで自動的に置換することができる。置換された出力データ受信側により、出力データ受信側のすぐ上流のフローにプローブが挿入され、その結果、上流構成要素からのデータが、出力データ受信側ではなくプローブによって受信されることを意味する。グラフ１００の自動解析を使用して、特定のタイプの構成要素（たとえば、実行するとグラフ１００の外部に影響を及ぼす特定のタイプの構成要素）など、他の構成要素を識別することもできる。
【００６１】
テスト・ソース及びプローブの挿入のさらなる説明が、米国特許出願第１４／７１５，８０７号に提示されており、その内容全体を参考としてここに組み込む。
【００６２】
置換構成要素定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ・パス、及びレイアウト・パラメータを含む。置換構成要素定義の上流ポートは、この置換構成要素がグラフ１００内に挿入される位置のすぐ上流にある構成要素の出力ポートを参照する。置換構成要素定義の下流ポートは、この置換構成要素がグラフ内に挿入される位置のすぐ下流にある構成要素の入力ポートを参照する。上流ポート及び下流ポートに基づいて、置換構成要素によって置換すべきグラフ１００内の既存の構成要素を識別することができる。挿入タイプは、この挿入が置換構成要素であると定義する。
【００６３】
プロトタイプ・パスは、挿入のタイプを示す。この例では、この挿入が置換構成要素なので、プロトタイプ・パスは、置換構成要素を定義するコードを含むファイルを指す。置換構成要素を定義するコードは、置換すべき既存の構成要素を定義するコードに基づいているが、所望のフォーマットのデータを処理することができる。
【００６４】
例によっては、グラフの自動解析の結果として、オーバレイ指定によって、グラフ用の１つ又は複数の置換構成要素を定義することができる。たとえば、グラフ内の各構成要素の仕様を解析することができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードを解析すると、構成要素によって表されるデータ処理動作がデータのフォーマットに依存しているかどうかを明らかにすることができる。
【００６５】
置換構成要素は、識別されたフォーマット特有の構成要素のうちの１つ又は複数について定義される。例によっては、置換すべきフォーマット特有の構成要素は、ユーザ入力に基づいて識別される。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを置換するか判定してもよい。例によっては、グラフによってこれまでに処理されたデータのフォーマットに対して入力データのフォーマットの自動解析を実行して、フォーマット特有の構成要素のいずれかを置換するかを識別することができる。
【００６６】
例によっては、グラフベースではないコンピュータ・プログラムでは、コンピュータ・プログラム内の１つ又は複数のフォーマット特有のプロセスを識別し、１つ又は複数の他のプロセス、たとえば、特定のフォーマットのデータに対して作用できるプロセス、又は任意のフォーマットのデータ対して作用できるプロセスでこれを置換することができる。
【００６７】
図５を参照すると、テスト・ソース、プローブ、又はその両方を挿入するため、解析エンジン３００が、グラフ１００を自動的に解析して、データ・ソース３０２及び出力データ受信側３０４を識別する。たとえば、解析エンジン３００は、グラフ１００のそれぞれのノードについて、パラメータ及び接続にアクセスすることができる（用語「ノード」及び「構成要素」は、これを区別なく使用することがある）。所与のノードが入力接続をもたない場合、解析エンジン３００は、このノードをデータ・ソースと識別する。同様に、所与のノードが出力接続をもたない場合、解析エンジン３００は、このノードを出力データ受信側と識別する。グラフのそれぞれのノードにアクセスし、これを解析するため、解析エンジンは、グラフの各接続（用語「接続」及び「フロー」は、これを区別なく使用することがある）の全てを「探索」して回る。例によっては、実行時（たとえば、デバッギング目的で処理が開始するとき）まで、グラフ１００はインスタンス化又はパラメータ化されない。解析エンジン３００は、実行時に自動解析を実行して、グラフ１００内のデータ・ソース及び出力データ受信側を識別することができる。
【００６８】
解析エンジン３００は、データ・ソース３０２及び出力データ受信側３０４の識別子を挿入エンジン３０６に送信し、この挿入エンジンは、データ・ソースと出力データ受信側のいずれが、それぞれテスト・ソース及びプローブで置換されることになるのか判定する。例によっては、試験者３０８は、テスト・ソース及びプローブで置換すべき、データ・ソース及び出力データ受信側のリスト３１０を提供する。このリスト３１０は、ファイル、データベースとして、又は別のフォーマットで提供することができる。たとえば、試験者３０８は、頻繁に変更されると予想される任意のデータ・ソースを、リスト３１０上にもっていてもよい。このようなデータ・ソースをテスト・ソースで置換することにより、試験者３０８は、一貫した入力データを使用してグラフを確実にテストできるようにすることができる。
【００６９】
挿入エンジン３０６は、識別されたそれぞれのデータ・ソース３０２及び出力データ受信側３０４と、リスト３１０上のデータ・ソース及び出力データ受信側とを比較する。挿入エンジンは、リスト３１０上に表示される任意のデータ・ソース３０２又は出力データ受信側３０４について、オーバレイ指定３１２を作成する。例によっては、上流ポートや下流ポートなど、オーバレイ指定３１２についてのパラメータが、解析エンジン３００によって挿入エンジン３０６に提供される。例によっては、挿入エンジン３０６は、グラフ１００にアクセスして、関連するパラメータを取得する。
【００７０】
テスト・ソースについてオーバレイ指定３１２を作成するため、挿入エンジン３０６は、ソース・ファイルにデータを読み込む。例によっては、挿入エンジン３０６は、特定のデータ・ソース３０２に取って代わることになるテスト・ソース用のソース・ファイルに、データ・ソース３０２からコピーされたデータを読み込む。例によっては、データ・ソース３０２は、ＳＱＬ文などの実行可能な表現式を含み、挿入エンジン３０６は、この実行可能な表現式を実行し、ソース・ファイルに実行した結果を読み込む。例によっては、挿入エンジン３０６は、ユーザ・インターフェース３１４を介して、ソース・ファイル用のデータを試験者３０８に要求することができる。たとえば、挿入エンジン３０６は、識別されたデータ・ソース３０２のリストを試験者３０８に提供することができ、その結果、試験者３０８は、識別されたデータ・ソース３０２のうちのいずれがテスト・ソースで置換されることになるのか選択することができる。試験者３０８は、テスト・ソース用のソース・ファイルに含むべきデータを指定することもできる。場合によっては、試験者３０８は、テスト・ソース用のデータを含むファイルの位置（たとえば、パス）を識別することができる。場合によっては、試験者３０８は、元のデータ・ソース３０２内のデータのコピーであるソース・ファイルを生成するよう、挿入エンジン３０８に指示することができる。場合によっては、試験者３０８は、元のデータ・ソース３０２に含まれるか、又はそれに関連付けられた、ＳＱＬ文などの実行可能な表現式を実行するよう、挿入エンジン３０８に指示することができる。場合によっては、試験者３０８は、テスト・ソースのソース・ファイル用に、データを生成できるようにすることができる。たとえば、試験者３０８は、グラフ内のあらゆる機能が少なくとも１回実行されるようにする、実データ又は生成済みデータなどのデータのセットを提供してもよい。
【００７１】
プローブ用のオーバレイ指定３１２を作成するため、挿入エンジン３０８は、出力データを記憶すべきファイルの位置を決定する。例によっては、この位置は、たとえばシステム技術者によって、デフォルトに設定される。例によっては、挿入エンジン３０６は、ユーザ・インターフェース３１４を介して、出力データ・ファイルについての位置を指定するよう試験者３０８に要求することができる。
【００７２】
置換構成要素を挿入するため、解析エンジン３００は、グラフ１００を解析して、グラフ内の１つ又は複数のフォーマット特有の構成要素３０５を識別する。グラフの各構成要素を解析するため、解析エンジン３００は、グラフの接続の全てを「探索」して回る。例によっては、解析エンジン３００は、グラフの最も遠い上流構成要素から開始し、この上流構成要素からの各出力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。逆に言えば、解析エンジン３００は、グラフの最も遠い下流構成要素から開始し、この下流構成要素への各入力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。
【００７３】
解析エンジン３００は、グラフ１００内の各構成要素の仕様にアクセスすることができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードの解析に基づいて、解析エンジン３００は、データ処理動作がデータのフォーマットに依存しているかどうかを判定することができる。解析エンジン３００は、フォーマット特有の構成要素の識別子を挿入エンジン３０６に送信し、この挿入エンジン３０６は、置換構成要素のためにフォーマット特有の構成要素のうちのいずれかを省略するか決定する。
【００７４】
例によっては、解析エンジン３００は、ユーザの要求に応じてグラフ１００を解析する。たとえば、ユーザは、グラフ１００を使用して、通常このグラフによって処理されるデータとは異なるフォーマットのデータを処理したいと思うことがある。ユーザは、グラフ１００の解析を要求して、異なるフォーマットのデータをグラフ１００が確実に処理できるようにすることができる。
【００７５】
例によっては、たとえば、グラフが最初に定義されるとき、又はグラフが最初にインスタンス化若しくはパラメータ化されるとき（たとえば、グラフの第１の実行時に）、解析エンジン３００がグラフ１００を一度解析して、グラフ内のフォーマット特有の構成要素全てのリストを生成する。グラフ内のフォーマット特有の構成要素のリストは、先々参照するために記憶して、たとえば、互いに異なるフォーマットのデータを処理するためにグラフ１００を使用するというユーザの要求に応答して使用することができる。
【００７６】
例によっては、解析エンジン３００は、グラフをいつ解析するかを自動的に決定する。たとえば、グラフの仕様は、このグラフによってこれまでに処理されたデータのフォーマットの記述を含んでもよい。入力データのフォーマットが、これまでに処理されたデータのフォーマットと異なる場合、解析エンジンは、グラフを解析して、異なるフォーマットの入力データを処理するために何らかの構成要素を置換する必要があるかどうかを判定してもよい。
【００７７】
挿入エンジン３０６は、解析エンジン３００によって識別されるフォーマット特有の構成要素のいずれかを省略するか判定する。挿入エンジン３０６は、省略される構成要素のそれぞれについて置換構成要素を定義するオーバレイ指定を作成する。
【００７８】
例によっては、省略すべきフォーマット特有の構成要素は、ユーザによって識別される。たとえば、挿入エンジン３０６は、識別済みのフォーマット特有の構成要素のリストをユーザ・インターフェース３１４に表示することができ、ユーザは、置換すべき構成要素を選択する。ユーザは、置換すべき構成要素のそれぞれについて置換構成要素として使用される構成要素を指示することができる。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか判定してもよい。省略すべき構成要素、置換構成要素、又はその両方を識別するユーザ入力に基づいて、挿入エンジン３０６はオーバレイ指定を作成する。
【００７９】
例によっては、挿入エンジン３０６は、フォーマット特有の構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか自動的に決定することができる。たとえば、挿入エンジンは、フォーマット特有の構成要素のそれぞれの仕様を解析して、どの構成要素が入力データを処理できるか、又は処理できないか判定することができる。挿入エンジン３０６は、置換構成要素、たとえば、置換すべき対応する構成要素によって表されるのと同じデータ処理動作を表すが、入力データのフォーマットのデータを処理できる置換構成要素を自動的に識別することができる。挿入エンジン３０６は、自動的に識別された置換構成要素についてのオーバレイ指定を作成する。例によっては、ユーザ入力は、自動化判定に組み込まれる。たとえば、挿入エンジン３０６によって識別される置換構成要素を承認するよう、ユーザに求めてもよい。
【００８０】
図６には、グラフ用の置換構成要素を定義するための一般的な手法が示してある。グラフによる処理のために、特定のフォーマットを有するデータのセットが受信される（４００）。受信データの特定のフォーマットを処理する能力について、グラフを解析すべきかどうかに関して判定がなされる（４０２）。例によっては、ユーザは、たとえばユーザ・インターフェースを介して、グラフを解析すべきであると示すことができる。たとえば、ユーザは、このデータのセットが、グラフによって処理されたこれまでのデータとは異なるフォーマットを有することを知っている場合がある。例によっては、この判定を自動的におこなうことができる。たとえば、受信データのフォーマットを決定し、たとえば、グラフが構成されるデータのフォーマットを示すグラフの仕様に記憶された情報と比較することができる。グラフが構成されるデータのフォーマットと受信データのフォーマットが一致しない場合、グラフが解析される。
【００８１】
グラフは、たとえばプロセッサによって解析されて、構成要素によって処理されるデータのフォーマットに依存する、グラフの１つ又は複数の構成要素を識別する（４０４）。具体的には、グラフの構成要素のうちの１つ又は複数のそれぞれについての仕様が解析されて、グラフ内のフォーマット特有の構成要素を識別する。例によっては、グラフは、このグラフの各構成要素を介する段階的進行によって解析される。たとえば、各構成要素を解析して、この構成要素がフォーマット特有の構成要素かどうかを判定するとともに、この入力フローと出力フローを識別する。各フローは隣接する構成要素へと続き、これら構成要素のそれぞれが解析されて、この構成要素がフォーマット特有であるかどうかを判定し、入力フロー及び出力フローを識別する。このようにして、グラフの構成要素の全てを解析することができる。例によっては、この解析は、実行時に、たとえばグラフがパラメータ化された後に、自動的に実行することができる。例によっては、この解析は、自動的かつ動的に、たとえばグラフが実行されている間に実行することができる。たとえば、グラフの実行中に、あるパラメータが解決されると、動的な解析を実行することができる。例によっては、グラフは短期記憶内に受信され、そこからプロセッサによってグラフが解析されて、フォーマット特有の構成要素を識別する。
【００８２】
フォーマット特有と識別された構成要素のうちの１つ又は複数を評価して、構成要素を省略すべきかどうか、及び置換構成要素が含まれているかどうかを判定する（４０６）。たとえば、構成要素が、受信済みのデータのセットのフォーマットを有するデータを処理することができない場合、フォーマット特有の構成要素を省略してもよい。例によっては、フォーマット特有の構成要素のリストがユーザ・インターフェースに表示され、ユーザが、構成要素のいずれかを省略すべきか指定する。例によっては、フォーマット特有の構成要素のそれぞれの仕様を評価して、受信済みのデータのセットのフォーマットを有するデータを、この構成要素が処理できるかどうかを自動的に判定する。例によっては、フォーマット特有と識別された構成要素の全てが省略される。
【００８３】
省略すべきフォーマット特有の構成要素のうちの１つ又は複数のそれぞれでの置換構成要素について、オーバレイ指定が定義される（４０８）。所与の置換構成要素の仕様は、対応する省略済みのフォーマット特有の構成要素の仕様に基づいているが、受信済みのデータのセットのフォーマットを有するデータに実行できる、１つ又は複数のデータ処理動作を定義する。例によっては、置換構成要素は、受信済みのデータのセットのフォーマットに対して、フォーマット特有のものとすることができる。例によっては、置換構成要素は、一般的なもの、たとえば任意のフォーマットのデータを処理できるものとすることができる。
【００８４】
グラフの実行に先立って、コンパイラが、グラフを実行可能なグラフにコンパイルしてもよい（４１０）。コンパイルの一環として、コンパイラは、置換構成要素を定義するオーバレイ指定２００を考慮に入れる。たとえば、コンパイラは、入力としてオーバレイ指定２００を受け付けてもよい。グラフの第２のバージョンが生成され、置換用に識別されたフォーマット特有の構成要素が除去され、除去済みの構成要素の代わりのオブジェクトとして、１つ又は複数の置換構成要素がグラフの第２のバージョンに挿入される。置換構成要素は、（除去済みの構成要素以外の）グラフ１００の第１のバージョンに含まれるデータ処理構成要素とともに、グラフの第２のバージョンで表してもよい。オーバレイ指定２００、又はこのオーバレイ指定を記憶するファイルは、グラフを含むファイルから分離されたままである。すなわち、置換構成要素は、グラフの第１のバージョンに含まれるデータ処理構成要素とともに、グラフの第２のバージョンに表示してもよいが、グラフの第１のバージョンを含むファイルは、置換構成要素の定義を含まない。
【００８５】
オーバレイ指定において定義されるテスト・ソース、プローブ、又は置換構成要素などの挿入は、少なくとも２つのモード、すなわち単一実行モード（Single-Execution Mode）及び保存状態モード（Saved-State Mode）のうちの１つを使用して実行できる。
【００８６】
図７には、単一実行モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント６０２が、グラフ６０４の第１のバージョン、及び挿入を定義するオーバレイ・ファイル６０６（たとえば、オーバレイ指定）を生成又は参照する。たとえば、オーバレイ・ファイル６０６は、図４のオーバレイ指定２００でもよい。次いで、グラフ６０４が、コンパイラ６０８によってコンパイルされる。コンパイラ６０８は、オーバレイ・ファイル６０６を考慮に入れ、グラフの第２のバージョンを作成する。グラフの第２のバージョンは実行可能であり、オーバレイ・ファイル６０６によって定義される挿入を含む。次いで、グラフの第２のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。グラフの第２のバージョンが再び実行されることになる場合、グラフ６０４の再指定、再コンパイル、及びグラフの第２のバージョンの再実行を含む、このプロセスが繰り返される。実行可能なグラフの、ある実行から次の実行までの情報は保存されない。
【００８７】
図８には、保存状態マネージャ７０８を用いて、保存状態モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント７０２が、グラフ７０４、及び挿入を定義するオーバレイ・ファイル７０６（たとえば、オーバレイ指定）を生成又は参照する。たとえば、オーバレイ・ファイル７０６は、図４のオーバレイ指定２００でもよい。保存状態リポジトリ７１０が、保存状態マネージャ７０８及びコンパイラ７１２によって管理される。保存状態マネージャ７０８は、この保存状態データが保存状態リポジトリ７１０内のどこに配置されているか識別することもできる。グラフ７０４が、コンパイラ７１２によってコンパイルされる。コンパイラ７１２は、オーバレイ・ファイル７０６を考慮に入れ、オーバレイ・ファイル７０６によって定義される挿入を含むグラフの第２のバージョンを作成する。次いで、グラフの第２のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。保存状態モードによって、実行可能なグラフが、各実行間で情報を保存している間に何回も実行できるようになるという点で、保存状態モードは単一実行モードと異なる。
【００８８】
保存状態マネージャ７０８は、保存状態マネージャ・ディレクトリに存在することができ、保存状態を管理する。保存状態リポジトリ７１０に保存できる情報の例には、情報のうちでもとりわけ、プローブ挿入に関連する情報、テスト・ソース挿入に関連する情報、置換構成要素挿入に関連する情報、オーバレイ・ファイル７０６に関連する情報、及びグラフ構成要素に関連付けられたパラメータ（たとえば属性）が含まれる。
【００８９】
例によっては、実行可能なグラフが実行されるとき、グラフの特定の部分のみが実行される。すなわち、グラフの特定の構成要素のみが実行される。例によっては、グラフの構成要素の全てよりも少ない構成要素が実行される。実行可能なグラフは、挿入に影響を及ぼすことになる構成要素を実行するだけでよい。例によっては、グラフの第２のバージョンは、元のグラフ全体の第２のバージョンである。例によっては、グラフの第２のバージョンは、元のグラフ全体のほんの一部分の第２のバージョン、たとえば、定義された挿入に関連したグラフの部分のみの第２のバージョンである。たとえば、最も上流の置換構成要素の上流にある構成要素は、グラフの第１のバージョンによって実行してもよく、最も上流の置換構成要素で開始する構成要素は、グラフの第２のバージョンによって実行してもよい。
【００９０】
図９には、ここで説明する置換構成要素技法を使用できる、例示的なデータ処理システム８００が示してある。このシステム８００は、記憶装置又はオンライン・データ・ストリームへの接続など、１つ又は複数のデータのソースを含んでもよいデータ・ソース８０２を含み、そのそれぞれが、様々なフォーマット（たとえば、データベース・テーブル、スプレッドシート・ファイル、フラット・テキスト・ファイル、又はメインフレームが使用するネイティブ・フォーマット）のうちの任意のフォーマットで、データを記憶又は提供してもよい。実行環境８０４及び開発環境８１８は、たとえば、あるバージョンのＵＮＩＸオペレーティング・システムなど、適切なオペレーティング・システムの制御下で、１つ又は複数の汎用コンピュータ上にホスティングしてもよい。たとえば、実行環境８０４は、複数ノードの並列コンピューティング環境を含むことができ、これは、複数の中央処理装置（ＣＰＵ）若しくはプロセッサ・コア、ローカル・システム（たとえば、対称型マルチプロセッシング（ＳＭＰ）コンピュータなどのマルチプロセッサ・システム）若しくはローカル分散システム（たとえば、クラスタ若しくは超並列処理（ＭＰＰ）として結合された複数のプロセッサ）、又は、遠隔プロセッサ若しくは遠隔分散プロセッサ（たとえば、ローカル・エリア・ネットワーク（ＬＡＮ）及び／又は広域ネットワーク（ＷＡＮ）を介して結合されたマルチプロセッサ）、又はその任意の組合せを使用するコンピュータ・システムの構成を含む。
【００９１】
実行環境８０４は、データ・ソース８０２からデータを読み取り、出力データを生成する。データ・ソース８０２を設ける記憶装置は、実行環境８０４に対してローカルでもよく、たとえばこれは、実行環境８０４をホスティングするコンピュータに接続された記憶媒体（たとえばハード・ドライブ８０８）に記憶され、又は実行環境８０４に対して遠隔でもよく、たとえばこれは、（たとえばクラウド・コンピューティング・インフラストラクチャによって提供される）遠隔接続を介して、実行環境８０４をホスティングするコンピュータと通信する遠隔システム（たとえばメインフレーム８１０）上にホスティングされる。データ・ソース８０２は、テスト・ソース定義（たとえば、図４のテスト・ソース定義２０１）で定義されるデータを含んでもよい。すなわち、テスト・ソース定義２０１のレイアウト・パラメータ２１２が、データ・ソース８０２内のソース・ファイルの位置を指してもよい。
【００９２】
出力データは、実行環境８０４からアクセス可能なデータ・ソース８０２又はデータ記憶システム８１６に記憶して戻してもよく、又は他の方法で使用してもよい。データ記憶システム８１６は、開発者８２０がグラフを、開発、デバッグ、及びテストすることのできる開発環境８１８からもアクセス可能である。実装形態によっては、開発環境８１８は、各接点間の（作業要素すなわちデータのフローを表す）有向フローによって接続される（データ処理構成要素又はデータセットを表す）節点を含むグラフとして、アプリケーションを開発するためのシステムである。たとえば、「グラフベースのアプリケーション用のパラメータの管理（Managing Parameters for Graph-Based Applications）」と題する、米国特許第２００７／００１１６６８号に、このような環境がより詳細に記載してあり、これを参考として本明細書に援用する。「グラフとして表現された計算の実行（EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS）」と題する、米国特許第５，９６６，０７２号に、このようなグラフベースの計算を実行するためのシステムが記載してあり、これを参考として本明細書に援用する。このシステムに従って作成されるグラフは、グラフ構成要素によって表される個々のプロセスとの間で情報を取得し、各プロセス間で情報を転送し、各プロセスについて実行順序を定義するための方法を提供する。このシステムは、利用可能な任意の方法からプロセス間通信の方法を選択するアルゴリズムを含む（たとえば、グラフのフローによる通信経路は、ＴＣＰ／ＩＰ若しくはＵＮＩＸのドメイン・ソケットを使用することができ、又は共有メモリを使用して、各プロセス間でデータを渡すことができる）。
【００９３】
開発環境８１８は、ソース・コードを記憶するためのコード・リポジトリ８２２を含む。例によっては、ソース・コード及びオーバレイ指定（たとえば、図４のオーバレイ指定２２０）は、たとえばユーザ・インターフェースを介して開発環境にアクセスする開発者８２０によって開発してもよい。例によっては、ソース・コード及びオーバレイ指定は、たとえば、前述の解析エンジン３００及び挿入エンジン３０６によって自動的に決定される。例によっては、グラフ及びオーバレイ指定は、コード・リポジトリ８２２に記憶することができる。例によっては、コード・リポジトリ８２２にグラフが記憶され、別のオーバレイ・リポジトリ８２４にオーバレイ指定が記憶される。
【００９４】
コード・リポジトリ８２２及びオーバレイ・リポジトリ８２４のうちの１つ又は両方が、コンパイラ８２６と通信してもよい。コンパイラ８２６は、グラフの第１のバージョン及びオーバレイ指定（たとえば、図４のオーバレイ指定２００）を、グラフの実行可能な第２のバージョン８２８にコンパイルすることができる。たとえば、コンパイラは、入力としてオーバレイ指定を受け付けてもよい。１つ又は複数の挿入が処理され、オーバレイ指定に含まれる挿入定義にそれぞれが対応するオブジェクトの形で、グラフに挿入される。グラフの第２のバージョン８２８は、修正されたグラフによって視覚的に表すことができる。挿入オブジェクトは、グラフ５００の第２のバージョンに示してもよい。
【００９５】
開発環境８１８は、グラフの第２のバージョン８２８を実行するための実行環境８３０を含むことができる。たとえば、グラフがコンパイラ８２６によってコンパイルされると、グラフの第２のバージョン８２８を実行することができる。グラフの第２のバージョン８２８を実行することは、データ（たとえば、作業要素又はデータ・レコード）が各構成要素間を流れるときに、各構成要素、挿入（たとえば、テスト・ソース、プローブ、置換構成要素、又はこれらのうちの任意の２つ以上の組合せ）、及びグラフの第２のバージョン８２８の有向フローに関連する計算を実行することを含むことができる。例によっては、実行環境８３０は、コード・リポジトリ８２２に記憶された第１のバージョンのグラフのソース・コード、又はオーバレイ・リポジトリ８２４に記憶されたソース・コードを修正することなく、グラフの第２のバージョン８２８を実行する。実行環境８３０は、開発環境８１８のインターフェースを介してアクセス可能でもよく、又はそれ自体のインターフェースをもっていてもよい。このインターフェースは、実行に関連する情報を表示するように構成することができる。このインターフェースは、挿入に関連する情報（たとえば、プローブによって監視及び保存されているデータ、テスト・ソースによって挿入されているデータ、置換構成要素についての情報、又は他の情報）を表示するように構成することもできる。実行環境８３０により、開発者８２０は、各実行間で、グラフの第２のバージョン８２８を複数回実行できるようになり、グラフの第２のバージョン８２８の各態様を修正できるようになってもよい。
【００９６】
例によっては、開発者は、グラフの挿入及びコンパイルを管理する。たとえば、開発者８２０は、コード・リポジトリ８２２から、図１のグラフ１００の第１のバージョンを選択する。開発者８２０は又、オーバレイ・リポジトリ８２４から、図４のオーバレイ指定２００を選択する。例によっては、オーバレイ指定２００を選択する代わりに、開発者８２０は、オーバレイ・リポジトリ８２４内の様々なオーバレイ指定から挿入定義を選択してもよい。開発者８２０は、グラフ１００の第１のバージョン及びオーバレイ指定２００に基づいて、グラフの第２のバージョン８２８をコンパイルするようコンパイラ８２６に命令する。
【００９７】
例によっては、挿入は自動的に挿入される。たとえば、前述の通り、グラフ１００内の１つ又は複数のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素は、たとえば、入力接続又は出力接続がない構成要素を識別することによって、又はグラフ１００内の構成要素の仕様を解析することによって自動的に識別される。識別されたデータ・ソース及び出力データ受信側は、グラフ１００のデバッギング中に挿入によって置換されることになる、データ・ソース及び出力データ受信側のリストと自動的に比較することができる。たとえば、このリストは、開発者８２０が提供することができる。フォーマット特有の構成要素を解析して、入力されるデータのセットのフォーマットなど、特定のフォーマットのデータをこの構成要素が処理できるかどうかを判定することができる。データを処理できないフォーマット特有の構成要素のリストが生成される。例によっては、このリストは、開発者８２０が提供することができる。このリストに従って、グラフ１００のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素用のオーバレイ指定が自動的に作成される。次いで、グラフの第２のバージョンが自動的にコンパイルされる。
【００９８】
例によっては、オーバレイ指定は、コード・リポジトリ８２２又はオーバレイ・リポジトリ８２４内のファイルとして永続的に記憶されることはない。むしろ、通常オーバレイ・ファイルに含まれるはずの情報（たとえば、挿入定義）は、（たとえば、ユーザ・インターフェースを介して）開発者８２０によって作成され、又は解析エンジン３００及び挿入エンジン３０６によって自動的に判定され、メモリに一時的に記憶される。次いで、オーバレイ情報は、コンパイラ（たとえば、図８の６０８）又は保存状態マネージャ（たとえば、図９の７０８）に渡される。
【００９９】
図１０を参照すると、例示的なプロセスでは、グラフの第１のバージョン（たとえば、図１のグラフ１００）が受信される（９０２）。たとえば、グラフの第１のバージョンは、プロセッサがアクセス可能な短期記憶に受信することができる。グラフ１００の第１のバージョンは、構成要素及びフローを含む。この構成要素は、データ・レコードに実行される動作を表し、このフローは、各構成要素間のデータ・レコードのフローを表す。
【０１００】
１つ又は複数の挿入を定義するオーバレイ指定が受信される（９０４）。例によっては、オーバレイ指定は、開発者又は試験者から受信される。例によっては、たとえば前述の通り、オーバレイ指定は自動的に定義される。オーバレイ指定は、図４に示すオーバレイ指定２００でもよい。オーバレイ指定は、１つ又は複数の挿入定義（たとえば、１つ若しくは複数のテスト・ソース定義、１つ若しくは複数のプローブ定義、又は１つ若しくは複数の置換構成要素定義）を含むことができる。挿入定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ経路、及び（テスト・ソース定義用の）レイアウト・パラメータを含むことができる。定義されたテスト・ソース及びプローブのそれぞれは、グラフ１００のフローに関連付けることができる。定義された置換構成要素のそれぞれは、グラフ１００の構成要素に関連付けることができる。
【０１０１】
定義された挿入のうちの１つにそれぞれが対応する、１つ又は複数のオブジェクトが生成される（９０６）。オブジェクトは、テスト・ソース、プローブ、又は置換構成要素など、グラフの構成要素でもよい。
【０１０２】
グラフ１００の一部分の構成要素及びフローの少なくともいくつか、並びに生成された１つ又は複数のオブジェクトを含む、グラフの少なくとも一部分の第２のバージョンが生成される（９０８）。例によっては、グラフの第２のバージョンは、グラフ１００の一部分の構成要素及びフローの少なくともいくつか、並びに生成された１つ又は複数のオブジェクトを含むように修正された、元のグラフ１００のコピーである。グラフの第２のバージョンは、修正されたグラフ（たとえば、図２のグラフ２００の第２のバージョン、又は図３のグラフ３００の第３のバージョン）によって視覚的に表すことができる。各オブジェクトは、（テスト・ソース若しくはプローブ用の）オブジェクトに対応する定義済みの挿入に関連付けられたフローにおいて、又はこのオブジェクトに対応する定義済みの置換構成要素に関連付けられた構成要素の代わりに挿入される。生成された挿入オブジェクトは、グラフ１００のデータ処理構成要素とともに、グラフの第２のバージョンに表示してもよいが、グラフ１００の第１のバージョン（又は、グラフ１００の第１のバージョンを含むファイル）は修正されない。
【０１０３】
グラフ及びオーバレイ指定をコンパイルして、オーバレイ・ファイルによって定義された挿入を含むグラフの第２のバージョンを作成できるコンパイラ（たとえば、図７のコンパイラ６０８、及び図８のコンパイラ７１２）を説明したが、実施形態によっては、グラフ及びオーバレイ指定はコンパイルされない。たとえば、グラフ及びオーバレイ指定は、コンパイルされることなく直接実行することができる。インタープリタは、それぞれのステートメントを、既に機械コードにコンパイルされている一連の１つ又は複数のサブルーチンに変換することによって、グラフ及びオーバレイ指定を直接実行することができる。
【０１０４】
プローブ、テスト・ソース、及び置換構成要素の形で挿入を説明してきたが、実施形態によっては、挿入は他の形をとることができる。挿入を広く使用して、グラフの所与のポイントでデータを入力し、グラフの所与のポイントからデータを取り出すことができる。たとえば、グラフのフローを通過するデータの品質を監視するように、挿入を設計することができる。データ品質が閾値を下回る場合、ユーザは、自動警告を受信することができる。挿入のさらなる説明は、米国特許出願第１４／７１５，９０４号に見いだすことができ、この内容全体を参考として本明細書に援用する。
【０１０５】
さらに、グラフとの関連で挿入を説明してきたが、実施形態によっては、挿入は他の実行可能なアプリケーションとともに使用することができる。たとえば、包括的で実行可能なアプリケーション用のデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスは、このアプリケーションの自動解析を用いて識別することができる。識別されたデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスのうちの１つ又は複数は、それぞれ適切なテスト・ソース、プローブ、又は置換プロセスによって置換することができる。このようにして、実行可能なアプリケーションは、テスト・ソースからのデータを処理し、データをプローブに出力することができ、又は互いに異なるフォーマットのデータを処理できるようにすることができる。この構成は、実行可能なアプリケーションをテスト又はデバッグするのに役立つことがある。
【０１０６】
前述の手法は、適切なソフトウェアを実行するコンピューティング・システムを使用して実施することができる。たとえば、ソフトウェアは、（分散アーキテクチャ、クライアント／サーバ、又はグリッドなど様々なアーキテクチャでよい）１つ又は複数のプログラムされた、又はプログラム可能なコンピューティング・システム上で実行される、１つ又は複数のコンピュータ・プログラムでの手順を含んでもよく、このコンピューティング・システムのそれぞれが、少なくとも１つのプロセッサ、（揮発性メモリ及び／又は不揮発性メモリ、及び／又は記憶素子を含む）少なくとも１つのデータ記憶装置システム、（少なくとも１つの入力装置若しくは入力ポートを使用して入力を受信し、少なくとも１つの出力装置若しくは出力ポートを使用して出力を供給するための）少なくとも１つのユーザ・インターフェースを備える。ソフトウェアは、たとえば、グラフの設計、構成、及び実行に関連するサービスを提供する、比較的大きいプログラムの１つ又は複数のモジュールを含んでもよい。プログラムの各モジュール（たとえばグラフの要素）は、データ構造として、又はデータ・リポジトリに記憶されたデータ・モデルに合致する他の編成データとして実装することができる。
【０１０７】
ソフトウェアは、（たとえば、汎用若しくは専用の、コンピューティング・システム若しくはコンピューティング装置によって読取り可能な）ＣＤ−ＲＯＭ又は他のコンピュータ読取り可能な媒体など、有形で持続的な媒体上に実装してもよく、又はネットワークの通信媒体を介して、ソフトウェアが実行されるコンピューティング・システムの有形で持続的な媒体に送達してもよい（たとえば、伝搬信号において符号化してもよい）。処理の一部又は全ては、専用コンピュータ上で実行してもよく、又は、コプロセッサ若しくはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、若しくは専用の特定用途向け集積回路（ＡＳＩＣ）などの専用ハードウェアを使用して実行してもよい。ソフトウェアによって指定された計算の様々な部分を様々なコンピューティング要素によって実行する分散方式で、処理を実施してもよい。本明細書に記載の処理を実行するよう、記憶装置媒体がコンピュータに読み取られるときにコンピュータを構成し動作させるために、このようなコンピュータ・プログラムはそれぞれ、汎用又は専用のプログラム可能なコンピュータでアクセス可能な記憶装置のコンピュータ読取り可能な記憶媒体（たとえば、固体記憶装置若しくは固体記憶媒体、又は磁気媒体若しくは光媒体）に、記憶又はダウンロードされることが好ましい。この発明性のあるシステムは又、コンピュータ・プログラムで構成された有形の持続的な媒体として実施されるものとみなしてもよく、ここで、そのように構成された媒体により、コンピュータは、特定の事前定義された方式で動作して、本明細書に記載の処理ステップのうちの１つ又は複数を実行できるようになる。
【０１０８】
いくつもの実施形態を説明してきた。それにもかかわらず、前述の説明は、本発明の範囲を例示するものであり、それを限定するものではなく、本発明の範囲は、添付の特許請求の範囲に記載の範囲によって定義されることを理解されたい。したがって、他の実施形態も、添付の特許請求の範囲に記載の範囲内にある。たとえば、本発明の範囲から逸脱することなく、様々な修正を加えてもよい。さらに、前述のステップのいくつかは、順序に依存しなくてもよく、したがって、記載された順序とは異なる順序で実行することができる。
【図１】
2019521430.tif 000003
【図２】
2019521430.tif 000004
【図３】
2019521430.tif 000005
【図４】
2019521430.tif 000006
【図５】
2019521430.tif 000007
【図６】
2019521430.tif 000008
【図７】
2019521430.tif 000009
【図８】
2019521430.tif 000010
【図９】
2019521430.tif 000011
【図１０】
2019521430.tif 000012
【国際調査報告】
2019521430.tif 000013
2019521430.tif 000014
2019521430.tif 000015