IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アビニシオ テクノロジー エルエルシーの特許一覧

<>
  • 特許-フォーマット特有のデータ処理動作 図1
  • 特許-フォーマット特有のデータ処理動作 図2
  • 特許-フォーマット特有のデータ処理動作 図3
  • 特許-フォーマット特有のデータ処理動作 図4
  • 特許-フォーマット特有のデータ処理動作 図5
  • 特許-フォーマット特有のデータ処理動作 図6
  • 特許-フォーマット特有のデータ処理動作 図7
  • 特許-フォーマット特有のデータ処理動作 図8
  • 特許-フォーマット特有のデータ処理動作 図9
  • 特許-フォーマット特有のデータ処理動作 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-17
(45)【発行日】2024-10-25
(54)【発明の名称】フォーマット特有のデータ処理動作
(51)【国際特許分類】
   G06F 8/30 20180101AFI20241018BHJP
【FI】
G06F8/30
【請求項の数】 51
(21)【出願番号】P 2018563483
(86)(22)【出願日】2017-05-18
(65)【公表番号】
(43)【公表日】2019-07-25
(86)【国際出願番号】 US2017033285
(87)【国際公開番号】W WO2017209969
(87)【国際公開日】2017-12-07
【審査請求日】2020-05-15
【審判番号】
【審判請求日】2023-02-06
(31)【優先権主張番号】62/345,217
(32)【優先日】2016-06-03
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】15/433,467
(32)【優先日】2017-02-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】イスマン,マーシャル エー.
(72)【発明者】
【氏名】ジョイス,ジョン
【合議体】
【審判長】林 毅
【審判官】大塚 俊範
【審判官】吉田 美彦
(56)【参考文献】
【文献】特開2006-4099(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
コンピュータ・プログラムの第1のバージョンをプロセッサによって解析することであって、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットのデータに第1の動作を実行するように構成されることと、
前記第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを定義する指定を、プロセッサによって、前記解析に基づいて、作成することであって、前記第2の動作は、前記第1の動作に基づいており、前記指定は、前記コンピュータ・プログラムとは別である、ことと、
前記コンピュータ・プログラムの前記第1のバージョン、及び前記指定に基づいて、前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するためにコンパイラ又はインタプリタを実行することであって、前記第1のプロセスを省略することを含み、前記指定により定義された、及び前記第1のフォーマットとは異なる前記第2のフォーマットのデータに前記第2の動作を実行するように構成された前記1つ又は複数の第2のプロセスを、コンピュータ・プログラムの前記少なくとも前記一部分の前記第2のバージョンに含むこととを含む、方法。
【請求項2】
前記第1のプロセスを識別することは、前記第1の動作が前記データのフォーマットに依存しているプロセスを識別することを含む、請求項1に記載の方法。
【請求項3】
前記第1のプロセスを識別することが、前記第2のフォーマットのデータに前記第1の動作を実行することができないプロセスを識別することを含む、請求項1又は2に記載の方法。
【請求項4】
前記第1のプロセスによって処理されるべきデータの前記第1のフォーマットを決定することを含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記第1のプロセスを識別することが、前記コンピュータ・プログラムの第1のデータ処理要素を識別することを含み、前記第1のデータ処理要素が、前記第1のプロセスを実行するように構成される、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記コンピュータ・プログラムでの前記1つ又は複数の第2のプロセスを含むことが、前記コンピュータ・プログラムの前記少なくとも前記一部分の前記第2のバージョンでの1つ又は複数の第2のデータ処理要素を含み、前記第2のデータ処理要素が、前記1つ又は複数の第2のプロセスを実行するように構成される、請求項5に記載の方法。
【請求項7】
前記第1のフォーマットが、データ・タイプを含む、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記第1のフォーマットが、データ要素のサイズを含む、請求項1~7のいずれか一項に記載の方法。
【請求項9】
前記第1のプロセスが、第1のレコード・フォーマットのデータ・レコードに前記第1の動作を実行するように構成され、前記1つ又は複数の第2のプロセスが、第2のレコード・フォーマットのデータ・レコードに前記第2の動作を実行するように構成される、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記第1のレコード・フォーマットが、前記第1のレコード・フォーマットのデータ・レコードでのフィールドの名前を含む、請求項9に記載の方法。
【請求項11】
ユーザ・インターフェースにおいて、前記第1の動作の識別子を提示することを含む、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記コンピュータ・プログラムの少なくとも前記一部分の前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記少なくとも前記一部分のコピーを生成することを含む、請求項1~11のいずれか一項に記載の方法。
【請求項13】
前記コンピュータ・プログラムの前記少なくとも前記一部分の前記コピーを修正して、前記第1のプロセスを省略し、前記1つ又は複数の第2のプロセスを含むことを含む、請求項12に記載の方法。
【請求項14】
前記コンピュータ・プログラムの前記第2のバージョンを実行することを含む、請求項1~13のいずれか一項に記載の方法。
【請求項15】
前記指定がオーバレイ指定を含む、請求項1~14のいずれか一項に記載の方法。
【請求項16】
前記コンピュータ・プログラムの前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記第1のバージョン及び前記オーバレイ指定に基づいて前記第2のバージョンを生成することを含む、請求項15に記載の方法。
【請求項17】
前記オーバレイ指定が、前記第1のプロセスの上流のプロセス及び前記第1のプロセスの下流のプロセスのうち1つ又は複数を識別する、請求項15又は16に記載の方法。
【請求項18】
前記第1のプロセスを定義するコードの解析に基づいて、前記第1のプロセスを識別することを含む、請求項15~17のいずれか一項に記載の方法。
【請求項19】
前記コンピュータ・プログラムがデータフローグラフを含む、請求項1~18のいずれか一項に記載の方法。
【請求項20】
前記第1のプロセスが、前記データフローグラフの第1の構成要素によって表される実行可能なプロセスであり、前記1つ又は複数の第2のプロセスが、前記データフローグラフの1つ又は複数の第2の構成要素によって表される実行可能なプロセスである、請求項19に記載の方法。
【請求項21】
前記1つ又は複数の第2の構成要素が、前記データフローグラフの上流構成要素からデータ・レコードを受信するように構成される、請求項20に記載の方法。
【請求項22】
前記1つ又は複数の第2の構成要素が、前記データフローグラフの下流構成要素にデータ・レコードを提供するように構成される、請求項20又は21に記載の方法。
【請求項23】
コンピュータ・プログラムの第1のバージョンをプロセッサによって解析するための手段であって、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成される手段と、
前記第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを定義する指定を、プロセッサによって、前記解析に基づいて、作成するための手段であって、前記第2の動作は、前記第1の動作に基づいており、前記指定は、前記コンピュータ・プログラムとは別である手段と、
前記コンピュータ・プログラムの前記第1のバージョン、及び前記指定に基づいて、前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するためにコンパイラ又はインタプリタをプロセッサによって実行するための手段であって、前記第1のプロセスを省略することを含み、前記指定により定義された、及び前記第1のフォーマットとは異なる前記第2のフォーマットを有するデータに前記第2の動作を実行するように構成された前記1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも前記一部分の前記第2のバージョンに含む手段とを備える、システム。
【請求項24】
メモリに結合されたプロセッサを備え、前記プロセッサ及びメモリが、
コンピュータ・プログラムの第1のバージョンを解析するように構成され、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、
前記第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを定義する指定を、前記解析に基づいて、作成するように構成され、前記第2の動作は、前記第1の動作に基づいており、前記指定は、前記コンピュータ・プログラムとは別であり、
前記コンピュータ・プログラムの前記第1のバージョン、及び前記指定に基づいて、前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するためにコンパイラ又はインタプリタを実行するように構成され、前記第1のプロセスを省略することを含み、前記指定により定義された、及び前記第1のフォーマットとは異なる前記第2のフォーマットを有するデータに前記第2の動作を実行するように構成された前記1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも前記一部分の前記第2のバージョンに含む、システム。
【請求項25】
コンピューティング・システムが、
コンピュータ・プログラムの第1のバージョンを解析するようにし、前記解析することが、前記コンピュータ・プログラムの前記第1のバージョンに含まれる第1のプロセスを識別することを含み、前記第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、
前記第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを定義する指定を、前記解析に基づいて、作成するようにし、前記第2の動作は、前記第1の動作に基づいており、前記指定は、前記コンピュータ・プログラムとは別であり、
前記コンピュータ・プログラムの前記第1のバージョン、及び前記指定に基づいて、前記コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するためにコンパイラ又はインタプリタを実行するようにし、前記第1のプロセスを省略することを含み、前記指定により定義された、及び前記第1のフォーマットとは異なる前記第2のフォーマットを有するデータに前記第2の動作を実行するように構成された前記1つ又は複数の第2のプロセスを、前記コンピュータ・プログラムの前記少なくとも前記一部分の前記第2のバージョンに含むようにするためのプログラム。
【請求項26】
前記第1のプロセスを識別することは、前記第1の動作が前記データのフォーマットに依存しているプロセスを識別することを含む、請求項25に記載のプログラム。
【請求項27】
前記第1のプロセスを識別することが、前記第2のフォーマットのデータに前記第1の動作を実行することができないプロセスを識別することを含む、請求項25に記載のプログラム。
【請求項28】
記コンピューティング・システムに、前記第1のプロセスによって処理されるべきデータの前記第1のフォーマットを決定させる、請求項25に記載のプログラム。
【請求項29】
前記第1のプロセスを識別することが、前記コンピュータ・プログラムの第1のデータ処理要素を識別することを含み、前記第1のデータ処理要素が、前記第1のプロセスを実行するように構成される、請求項25に記載のプログラム。
【請求項30】
前記コンピュータ・プログラムでの前記1つ又は複数の第2のプロセスを含むことが、前記コンピュータ・プログラムの前記少なくとも前記一部分の前記第2のバージョンでの1つ又は複数の第2のデータ処理要素を含み、前記第2のデータ処理要素が、前記1つ又は複数の第2のプロセスを実行するように構成される、請求項29に記載のプログラム。
【請求項31】
前記第1のプロセスが、第1のレコード・フォーマットのデータ・レコードに前記第1の動作を実行するように構成され、前記1つ又は複数の第2のプロセスが、第2のレコード・フォーマットのデータ・レコードに前記第2の動作を実行するように構成される、請求項25に記載のプログラム。
【請求項32】
前記コンピュータ・プログラムの少なくとも一部分の前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記一部分のコピーを生成することを含む、請求項25に記載のプログラム。
【請求項33】
記コンピューティング・システムに、前記コンピュータ・プログラムの前記一部分の前記コピーを修正させ、前記第1のプロセスを省略させ、前記1つ又は複数の第2のプロセスを含ませる、請求項32に記載のプログラム。
【請求項34】
記コンピューティング・システムに、前記コンピュータ・プログラムの前記第2のバージョンを実行させる、請求項25に記載のプログラム。
【請求項35】
前記指定がオーバレイ指定を含み、前記コンピュータ・プログラムの前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記第1のバージョン及び前記オーバレイ指定に基づいて前記第2のバージョンを生成することを含む、請求項25に記載のプログラム。
【請求項36】
記コンピューティング・システムに、前記第1のプロセスを定義するコードの解析に基づいて、前記第1のプロセスを識別させる、請求項25に記載のプログラム。
【請求項37】
前記コンピュータ・プログラムがデータフローグラフを含む、請求項25に記載のプログラム。
【請求項38】
前記第1のプロセスが、前記データフローグラフの第1の構成要素によって表される実行可能なプロセスであり、前記1つ又は複数の第2のプロセスが、前記データフローグラフの1つ又は複数の第2の構成要素によって表される実行可能なプロセスである、請求項37に記載のプログラム。
【請求項39】
第1のプロセスを識別することは、前記第1の動作が前記データのフォーマットに依存しているプロセスを識別することを含む、請求項24に記載のシステム。
【請求項40】
第1のプロセスを識別することが、前記第2のフォーマットのデータに前記第1の動作を実行することができないプロセスを識別することを含む、請求項24に記載のシステム。
【請求項41】
前記プロセッサ及びメモリは、前記第1のプロセスによって処理されるべきデータの前記第1のフォーマットを決定するように構成されている、請求項24に記載のシステム。
【請求項42】
前記第1のプロセスを識別することが、前記コンピュータ・プログラムの第1のデータ処理要素を識別することを含み、前記第1のデータ処理要素が、前記第1のプロセスを実行するように構成される、請求項24に記載のシステム。
【請求項43】
前記コンピュータ・プログラムでの前記1つ又は複数の第2のプロセスを含むことが、前記コンピュータ・プログラムの前記少なくとも一部分の前記第2のバージョンでの1つ又は複数の第2のデータ処理要素を含み、前記第2のデータ処理要素が、前記1つ又は複数の第2のプロセスを実行するように構成される、請求項42に記載のシステム。
【請求項44】
前記第1のプロセスが、第1のレコード・フォーマットのデータ・レコードに前記第1の動作を実行するように構成され、前記1つ又は複数の第2のプロセスが、第2のレコード・フォーマットのデータ・レコードに前記第2の動作を実行するように構成される、請求項24に記載のシステム。
【請求項45】
前記コンピュータ・プログラムの少なくとも一部分の前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記一部分のコピーを生成することを含む、請求項24に記載のシステム。
【請求項46】
前記プロセッサ及びメモリは、前記コンピュータ・プログラムの前記一部分の前記コピーを修正して、前記第1のプロセスを省略し、前記1つ又は複数の第2のプロセスを含むように構成されている、請求項45に記載のシステム。
【請求項47】
前記プロセッサ及びメモリは、前記コンピュータ・プログラムの前記第2のバージョンを実行するように構成されている、請求項24に記載のシステム。
【請求項48】
前記指定がオーバレイ指定を含み、前記コンピュータ・プログラムの前記第2のバージョンを生成することが、前記コンピュータ・プログラムの前記第1のバージョン及び前記オーバレイ指定に基づいて前記第2のバージョンを生成することを含む、請求項24に記載のシステム。
【請求項49】
前記プロセッサ及びメモリは、前記第1のプロセスを定義するコードの解析に基づいて、前記第1のプロセスを識別するように構成されている、請求項24に記載のシステム。
【請求項50】
前記コンピュータ・プログラムがデータフローグラフを含む、請求項24に記載のシステム。
【請求項51】
前記第1のプロセスが、前記データフローグラフの第1の構成要素によって表される実行可能なプロセスであり、前記1つ又は複数の第2のプロセスが、前記データフローグラフの1つ又は複数の第2の構成要素によって表される実行可能なプロセスである、請求項50に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権の主張
本出願は、2016年6月3日出願の米国特許仮出願第62/345,217号、及び2017年2月15日出願の米国特許出願第15/433,467号の優先権を主張し、その両方の内容全体を参考としてここに組み込む。
【背景技術】
【0002】
背景
複雑な計算は、有向グラフ(「データフロー・グラフ」と呼ばれる)を用いたデータ・フローとして表すことのできる場合が多く、この計算の構成要素は、このグラフの頂点に関連付けられ、データは、グラフのリンク(弧、縁部)に対応する各構成要素間を流れる。各構成要素は、1つ又は複数の入力ポートでデータを受信し、このデータを処理し、1つ又は複数の出力ポートからデータを提供するデータ処理構成要素、及びデータ・フローの送信側又は受信側の役割を果たすデータセット構成要素を含むことができる。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
一態様では、方法は、コンピュータ・プログラムの第1のバージョンをプロセッサによって解析することであって、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットのデータに第1の動作を実行するように構成されることと、コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成することであって、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットのデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含むことを含み、この第2の動作が第1の動作に基づく。
【0004】
各実施形態は、以下の特徴のうちの1つ又は複数を含むことができる。
【0005】
第1のプロセスを識別することは、第1の動作がデータのフォーマットに依存している第1のプロセスを識別することを含む。
【0006】
第1のプロセスを識別することは、第2のフォーマットのデータに第1の動作を実行することができない第1のプロセスを識別することを含む。
【0007】
この方法は、第1のプロセスによって処理されるデータのフォーマットを決定することを含む。第1のプロセスを識別することは、この第1のプロセスによって処理されるデータのフォーマットを有するデータに、第1の動作を実行することができない第1のプロセスを識別することを含む。
【0008】
第1のプロセスを識別することは、コンピュータ・プログラムの第1のデータ処理要素を識別することを含み、この第1のデータ処理要素は、第1のプロセスを実行するように構成される。コンピュータ・プログラムの少なくとも一部分の第2のバージョンでの1つ又は複数の第2のプロセスを含むことは、コンピュータ・プログラムの少なくとも一部分の第2のバージョンでの1つ又は複数の第2のデータ処理要素を含むことを含み、この第2のデータ処理要素は、1つ又は複数の第2のプロセスを実行するように構成される。
【0009】
第1のフォーマットは、データ・タイプを含む。
【0010】
第1のフォーマットは、データ要素のサイズを含む。
【0011】
第1のプロセスは、第1のレコード・フォーマットのデータ・レコードに第1の動作を実行するように構成され、1つ又は複数の第2のプロセスは、第2のレコード・フォーマットのデータ・レコードに第2の動作を実行するように構成される。第1のレコード・フォーマットは、各レコードでのフィールドの名前を含む。
【0012】
この方法は、ユーザ・インターフェースにおいて、1つ又は複数の動作の第1のセットの識別子を提示することを含む。
【0013】
コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成することは、このコンピュータ・プログラムのこの部分のコピーを生成することを含む。
【0014】
この方法は、コンピュータ・プログラムのこの部分のコピーを修正して、第1のプロセスを省き、1つ又は複数の第2のプロセスを含むことを含む。
【0015】
この方法は、コンピュータ・プログラムの第2のバージョンを実行することを含む。
【0016】
1つ又は複数の第2のプロセスは、オーバレイ指定によって定義される。コンピュータ・プログラムの第2のバージョンを生成することは、コンピュータ・プログラムの第1のバージョン及びオーバレイ指定に基づいて第2のバージョンを生成することを含む。このオーバレイ指定は、第1のプロセスの上流のプロセス及び第1のプロセスの下流のプロセスのうちの1つ又は複数を識別する。この方法は、第1のプロセスを定義する実行可能コードの解析に基づいて、第1のプロセスを識別することを含む。
【0017】
コンピュータ・プログラムはグラフを含む。第1のプロセスは、このグラフの第1の構成要素によって表される実行可能なプロセスであり、1つ又は複数の第2のプロセスは、グラフの1つ又は複数の第2の構成要素によって表される実行可能なプロセスである。1つ又は複数の第2の構成要素は、グラフの上流構成要素からデータ・レコードを受信するように構成される。1つ又は複数の第2の構成要素は、グラフの下流構成要素にデータ・レコードを提供するように構成される。
【0018】
一態様では、システムは、コンピュータ・プログラムの第1のバージョンをプロセッサによって解析するための手段であって、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成される手段と、コンピュータ・プログラムの少なくとも一部分の第2のバージョンをプロセッサによって生成するための手段であって、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含む手段とを備え、この第2の動作が第1の動作に基づく。
【0019】
一態様では、システムは、メモリに結合されたプロセッサを備え、このプロセッサ及びメモリは、コンピュータ・プログラムの第1のバージョンを解析するように構成され、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するように構成され、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含み、この第2の動作が第1の動作に基づく。
【0020】
一態様では、持続的なコンピュータ読取り可能な媒体は、コンピューティング・システムが、コンピュータ・プログラムの第1のバージョンを解析するようにし、この解析することが、コンピュータ・プログラムの第1のバージョンに含まれる第1のプロセスを識別することを含み、この第1のプロセスが、第1のフォーマットを有するデータに第1の動作を実行するように構成され、コンピュータ・プログラムの少なくとも一部分の第2のバージョンを生成するようにし、第1のプロセスを省略することを含み、第1のフォーマットとは異なる第2のフォーマットを有するデータに第2の動作を実行するように構成された1つ又は複数の第2のプロセスを、コンピュータ・プログラムの少なくとも一部分の第2のバージョンに含むようにするための命令を記憶し、この第2の動作が第1の動作に基づく。
【0021】
他の特徴及び利点は、以下の説明及び特許請求の範囲から明白になろう。
【図面の簡単な説明】
【0022】
図面の説明
図1】グラフの例である。
図2】グラフの例である。
図3】グラフの例である。
図4】オーバレイ指定の一例である。
図5】ブロック図である。
図6】流れ図である。
図7】ブロック図である。
図8】ブロック図である。
図9】ブロック図である。
図10】流れ図である。
【発明を実施するための形態】
【0023】
説明
グラフなどの実行可能なアプリケーションは、この実行可能なアプリケーションによって処理されるデータ・レコードの1つ又は複数の特定のフォーマットに特有の、1つ又は複数のプロセスを含むことができる。このようなプロセスは、1つ又は複数の特定のフォーマットのみのデータに動作を実行することができ、互いに異なるフォーマットのデータにこれらのプロセスを実行しようとすると、エラー又は不正確な処理につながる場合がある。ここで、データの1つ又は複数の特定のフォーマットに特有の、実行可能なアプリケーションのプロセスを識別するための手法について述べる。実行可能なアプリケーションが、互いに異なるフォーマットのデータに動作を実行できるようにするために、これらのフォーマット特有のプロセスが省略され、1つ又は複数の他のプロセスが含まれる実行可能なアプリケーションの第2のバージョンを生成することができる。置換プロセスと呼ばれることもある、これら他のプロセスは、省略されたフォーマット特有のプロセスによって実行される動作に基づいているが、互いに異なる1つ又は複数のフォーマットのデータに特有であり、又は任意のフォーマットのデータに動作を実行できる動作を実行することができる。実行可能なアプリケーションの第2のバージョンに置換プロセスを含めることにより、実行可能なアプリケーションは、この実行可能なアプリケーションの元のバージョンが構成されたフォーマットとは異なるフォーマットのデータを処理できるようになる。
【0024】
置換プロセスは、オーバレイ指定で定義することができ、このオーバレイ指定は、元の実行可能なアプリケーション(第1のアプリケーションとも呼ばれることがある)とは別のファイルである。オーバレイ指定で定義された置換プロセスは、元のアプリケーションの一部分になることなく、アプリケーションの第2のバージョン(第2のアプリケーションとも呼ばれることもある)に追加することができる。たとえば、アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、1つ又は複数のプロセスが省略され、1つ又は複数の対応する置換プロセスが含まれる第2のアプリケーションを生成する。省略されると、第1のアプリケーションに含まれるプロセスが、第2のアプリケーションには含まれないことを意味する。対応する置換構成要素は、第2のアプリケーション、たとえば省略されたプロセスが第1のアプリケーションに配置されていた位置に挿入される。
【0025】
置換プロセスは、挿入の例である。挿入の他の例には、テスト・ソース及びプローブが含まれ、これらは又オーバレイ指定によって定義することができる。テスト・ソースは、実行可能なアプリケーションによる処理向けの、テスト・データなどのデータを提供できる置換データ・ソースである。プローブは、実行可能なアプリケーションがデータを書き込む際の、代替の書込み先である。挿入は、たとえば、グラフなどの実行可能なアプリケーションをテスト又はデバッグするのに有用になる場合がある。たとえば、試験者又は開発者は、アプリケーションに加える変更の効果を観察するために、入力データの特定のセットを使用してテストを実行したいと思うことがある。この変更の前後ともに、入力データの一貫したセットを使用してアプリケーションを実行することにより、アプリケーションが出力するデータに加えるこの変更の効果を監視することができる。例によっては、アプリケーションの機能の全てを少なくとも一度は実行することになる、テスト・データのセットなど、試験者は、アプリケーションをテストするときに使用されることになるテスト・データの特定のセットを有する場合がある。同様にして、試験者は、アプリケーションが出力データを書き込む際の標準の書込み先とは異なる特定の書込み先に、アプリケーションが出力するこのデータを書き込みたいと考えることがある。
【0026】
例によっては、挿入は、アプリケーションの自動解析に基づいて自動的に定義することができる。たとえば、アプリケーションでのフォーマット特有のプロセスの自動識別に基づいて、置換構成要素を自動的に定義することができる。テスト・ソース及びプローブは、アプリケーションのデータ・ソース及び出力データ受信側の自動識別に基づいて自動的に定義することができる。
【0027】
例によっては、実行可能なアプリケーションはグラフベースのプロセスである。グラフベースのプロセスは、ある1つの構成要素から別の構成要素へのデータの流れを示すフローによって接続された、それぞれ実行可能なプロセスを表す1つ又は複数の構成要素を含む。置換プロセスは、グラフベースのプロセスでの構成要素に関連付けられたオブジェクトである。置換プロセス(置換え構成要素とも呼ばれることがある)は、既存の構成要素によって処理されたはずのデータが置換構成要素によって代わりに処理されるように、グラフ内の既存の構成要素を置換することができる。テスト・ソース及びプローブの挿入は、グラフベースのプロセスでのフローに関連付けられたオブジェクトである。テスト・ソースは、フローを通過するデータ(たとえば、アップストリーム・データ)を新規データで置換することができ、その結果、グラフのそれぞれの実行において上流側の計算を再実行する必要はない。たとえば、テスト・ソースは、データ・ソースからではなくテスト・ソースからグラフにテスト・データが提供されるよう、このデータ・ソースを置換することができる。プローブは、グラフが実行されるとき、フローを通過するデータを監視することができ、後に検査又は再使用するために、このデータを保存することができる。たとえば、プローブは、データベースなどの出力データ受信側に他の方法で保存されていたはずのデータを受信することができる。
【0028】
オーバレイ指定で定義される挿入は、元のアプリケーションの一部分になることなく、実行中にアプリケーションに追加することができる。アプリケーションがコンパイルされると、コンパイラは、オーバレイ・ファイルを考慮に入れ、挿入を含む実行可能なアプリケーションを生成する。アプリケーションの第1のバージョンとしての元のアプリケーション、及びアプリケーションの第2のバージョンとしての挿入を含むアプリケーションを参照する場合がある。たとえば、グラフベースのプロセスの例では、オーバレイ指定において定義された挿入オブジェクトと結合された、グラフの第1のバージョンの構成要素を含むグラフの第2のバージョンとして、実行可能なグラフを視覚的に表すことができる。例によっては、実行可能なグラフはシェル・スクリプトであり、ファイル内には記憶されない。例によっては、実行可能なグラフ及びこのグラフは、別々のファイルに記憶される。
【0029】
グラフの第2のバージョンへの挿入の取込みは、グラフの第1のバージョンを修正しない。その代わりに、挿入定義は、別々のファイル(たとえば、別々のオーバレイ指定)にとどまり、コード生成の開始時点において、修正済みグラフに含めるために通常のグラフ構成要素へと変換することができる。したがって、元のグラフを意図せずに破壊するリスクがない。
【0030】
図1には、グラフ100の一例が示してある。グラフ100は、フローによって接続されたデータ処理構成要素を含む、コンピュータ・プログラムの視覚表現である。2つの構成要素を接続するフローは、第1の構成要素から出力されたレコードが、第2の構成要素に渡されることを示す。フローによって第1の構成要素が第2の構成要素に接続されているとき、第1の構成要素は第2の構成要素を参照する。
【0031】
(図に示すような)データベースなどのデータ・ソース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と呼ぶことがある)が、この例では特に対象となる。
【0032】
グラフの各構成要素のうちの1つ又は複数は、フォーマット特有の構成要素とすることができる。フォーマット特有の構成要素は、1つ又は複数の特定のフォーマットのデータのみを処理できる構成要素である。データ・フォーマットは、個々のデータ項目の特性(たとえば、レコードのフィールド内の値の特性)、又はレコードの特性(レコード・フォーマットと呼ばれることもある)である。個々のデータ項目の特性の例は、データ項目のサイズ(たとえば、1バイトASCIIデータ項目、若しくはマルチバイト・データ項目)、データ項目のタイプ(たとえば、ストリング・タイプ、整数タイプ、ブール・タイプ、若しくは他のデータ・タイプ)、又は個々のデータ項目の別の特性など、データ項目について数多くのバイトを含む。レコード・フォーマットの例には、レコード内のフィールドの名前、レコード内のフィールドの位置、レコード内のフィールドの数、階層型レコード、フィールドの配列又は繰返しグループ、入れ子状の配列、サブレコード、又はレコードの別の特性が含まれる。
【0033】
グラフは、特定のデータ・フォーマットに特有の構成要素を含むとき、特定のフォーマットのデータのみを処理できてもよい。グラフが、互いに異なるフォーマットを有するデータを処理するのに使用される場合、エラーが発生する場合があり、又はデータが不正確に処理される場合がある。フォーマットが異なるデータをグラフが処理できるようにするには、フォーマット特有の構成要素のうちの1つ又は複数を、異なるフォーマットのデータを処理することのできる構成要素で置換することができる。置換構成要素は、様々な構成要素に特有であるフォーマット特有の構成要素とすることができ、又は任意のフォーマットのデータを処理できる構成要素(これを、フォーマットに依存しない構成要素と呼ぶことがある)とすることができる。
【0034】
たとえば、図1の例では、ソート構成要素104は、郵便番号フィールド内の値によってレコードをソートする。この例でのソート構成要素104は、整数だけを処理できるフォーマット特有の構成要素である。グラフ100のオペレータは、グラフ100を使用して、郵便番号フィールドが文字数字の列を含んでもよいデータの新規セットを処理したいと思うことがある。
【0035】
図2を参照すると、ソート構成要素104が省略され、置換ソート構成要素204が含まれる、グラフ100の第2のバージョン200が生成される。置換ソート構成要素204は、グラフの第2のバージョン200内での、ソート構成要素104と同じ位置に配置され、文字数字の列をソートすることができる。グラフの他の構成要素は変化しない。グラフの第2のバージョン200は、データの新規セットをこのように処理することができる。
【0036】
構成要素によっては、任意のフォーマットのデータを受信し、このデータに動作を実行することができてもよいが、特定のフォーマットのデータを出力してもよい。互いに異なるフォーマットのデータが出力として望まれる場合(たとえば、特定のフォーマットを指定する別のアプリケーションへの入力として提供されるように)、グラフは、このデータを提供することができない場合がある。グラフが所望のフォーマットのデータを出力できるようにするために、フォーマット特有の構成要素のうちの1つ又は複数を、所望のフォーマットのデータを出力できる構成要素で置換することができる。
【0037】
やはり図1を参照すると、フォーマット変更構成要素108は、特定のフォーマットのデータを出力するフォーマット特有の構成要素である。たとえば、フォーマット変更構成要素108は、4つのフィールド、Name、Account_num、Balance、及びTrans_dateを有するデータ・レコードを出力してもよい。グラフ100のオペレータは、たとえば、入力データのレコード・フォーマットについて特定の要求条件を有する別のアプリケーションによって出力データを処理できるように、互いに異なるフォーマットの出力データをグラフ100が生成するようにしたいと思うことがある。この例では、出力データの所望のフォーマットは、4つのフィールド、Cust_name、Balance、Account_num、及びTrans_dateを含む。すなわち、出力データの第1のフィールドの名前を変更し、第2のフィールド及び第3のフィールドを切り替える必要がある。
【0038】
図3を参照すると、フォーマット変更構成要素108が省略され、置換フォーマット変更構成要素308が含まれる、グラフ100の第2のバージョン300が生成される。置換フォーマット変更構成要素308は、グラフの第2のバージョン300内での、フォーマット変更構成要素108と同じ位置に配置され、所望のフォーマットの出力データを生成することができる。グラフの他の構成要素は変化しない。
【0039】
例によっては、フォーマット特有の構成要素の上流又は下流の1つ又は複数の構成要素など、グラフの他の構成要素を省略することもできる。場合によっては、省略されたその他の構成要素のうちの1つ又は複数の代わりに、置換構成要素を含めることができる。
【0040】
例によっては、グラフ100の試験者は、グラフ100をデバッグして、その機能を検証したいと考えることがある。場合によっては、試験者は、データが、ある構成要素から別の構成要素に流れるとき、このデータを検証したいと思うことがある。場合によっては、試験者は、グラフ100での上流構成要素を迂回し、その代わりに、迂回された構成要素の位置にデータを挿入したいと思うことがある。場合によっては、試験者は、グラフを変更することの、グラフが出力するデータへの影響を監視するために、入力データの一貫したセットを使用してグラフ100の動作をテストしたいと思うことがある。場合によっては、試験者は、グラフの機能の全てを少なくとも1回だけは実行できるようにすることを知っている入力データのセットを使用して、グラフ100の動作をテストし、したがってグラフの完全なテストを可能にしたいと思うことがある。
【0041】
グラフ100をデバッグする際、グラフの修正をやめることが望ましい場合がある。たとえば、試験者は、グラフの機能を損なうリスクを負いたくない思うことがある。例によっては、試験者は、グラフへのアクセスを制限されているか、又はアクセスできない場合がある(たとえば、試験者には、グラフを編集するのに必要な許可がない場合がある)。グラフ100を修正することなく、このグラフ100をデバッグするために、オーバレイを使用してグラフをデバッグすることができる。例によっては、たとえばグラフの自動解析に基づいて、このオーバレイを自動的に指定することができる。元のグラフ100(グラフの第1のバージョンと呼ばれることがある)、及びオーバレイ指定に基づいて、グラフ100の少なくとも一部分の第2のバージョンを生成することができる。
【0042】
グラフ100の各構成要素間のフローをデータが通過するとき、たとえば、第1の構成要素から第2の構成要素までのフローに沿って、又は出力データ受信側までのフローに沿って、プローブが、このデータを収集又は監視する。たとえば、グラフ100が実行される際にデータがフローを通過するとき、このデータを監視し、後で検査するために保存し、又は再使用するために保存することができる。オーバレイ指定は、収集又は監視すべきデータを運ぶフローを参照するプローブを定義することができる。プローブは、データを収集又は監視すべきフローを指定する。プローブは、特定の値を報告し、又は特定の値が、所定範囲内又は所定範囲外にあるときに、そのことを報告するように構成することができる。プローブを通過するデータは、後で解析又は使用するために保存してもよく、たとえば、このデータは、単層ファイル又はリレーショナル・データベースに記憶することができる。
【0043】
例によっては、プローブは、グラフ100のある構成要素から、ファイル又はデータベースなど出力データ受信側までのフローを参照することができる。グラフ100のデバッギング中に、データ受信側までのフローに沿ってプローブを配置することによって、このプローブは、グラフ100から出力されるデータを受信する。たとえば、グラフ100がデバッギング・モードで実行されるたびに、出力データをプローブによって受信し、ファイルに書き込むことができ、その結果、様々なグラフ実行からの出力データを比較することができ、又は他の方法で評価することができる。例によっては、出力データ受信側が自動的に識別され、オーバレイが自動的に指定されて、識別された出力データ受信側の前に挿入するためのプローブを定義する。
【0044】
例によっては、プローブは、グラフ100の上流構成要素から下流構成要素までのフローを参照することができる。グラフ100のデバッギング中に、下流構成要素までのフローに沿ってプローブを配置することによって、このプローブは、下流構成要素によって他の方法で受信されていたはずのデータを受信し、したがって下流構成要素が実行しないようにする。たとえば、試験者は、下流構成要素の前にグラフが処理する結果を監視したいと考えることがある。たとえば、この下流構成要素は、グラフの外部に影響を及ぼす機能を有してもよく、たとえば、下流構成要素は、この下流構成要素によって自身のクレジット・カードのレコードが処理されるそれぞれの人に向けて、テキスト・メッセージを送信してもよい。グラフのデバッギング中、試験者は、グラフの外部に影響を及ぼすような構成要素を使用不可にしたいと考えることがある。
【0045】
グラフ100の2つの構成要素間の特定のフローにおいて、テスト・ソースがグラフ100にデータを挿入する。オーバレイ指定は、テスト・ソースからのデータで置換すべきデータを運ぶフローを参照する、テスト・ソースを定義することができる。例によっては、テスト・ソースは、通常、フローを通過するはずのデータを、新規のデータで置換する。状況によっては、テスト・ソースは、これまでに保存されたデータを読み取り、このデータを下流構成要素に渡すように構成することができる。例によっては、テスト・ソースは、データベース又はファイルなど、データ・ソースからのフローにおいて、データをグラフ100に挿入する。テスト・ソースは、データ・ソースによって他の方法で提供されたはずのデータと同じフォーマットを有するデータを挿入することができる。例によっては、データ・ソースが自動的に識別され、オーバレイが自動的に指定されて、識別されたデータ・ソースを置換するためのテスト・ソースを定義する。
【0046】
例によっては、あるポイントまで(たとえば、ある構成要素まで)グラフ100を実行した結果が、これまでに検証されていた場合がある。すなわち、上流プロセス機能が、あるポイントまで検証されていた場合がある。こうした場合、グラフ100が実行されるたびに上流構成要素が各機能を再処理することは、非効率になる場合がある。テスト・ソースは、そのあるポイントにおいて、データ(たとえば、これまでに検証されたデータ)をグラフに挿入することができる。このようにして、これまでに実行されたグラフ100のセクション全体を迂回してもよい。
【0047】
図4には、1つ又は複数の挿入を定義するオーバレイ指定200の一例が示してある。挿入は、グラフ(たとえば、グラフ100)のフローに関連付けられたオブジェクトとすることができ、プローブ、テスト・ソース、又は置換構成要素の形をとることができる。図4の例では、オーバレイ指定200は、1つのテスト・ソース定義201、及び1つのプローブ定義213を含む。オーバレイ指定200は、グラフ100についての仕様を含むファイルとは別のファイルなど、ファイルに記憶することができる。
【0048】
オーバレイ指定200は、挿入定義が対応できる先のグラフを指定する、3行のヘッダで開始する。ヘッダの後には、テスト・ソース定義201、プローブ定義213、及び置換構成要素定義(図示せず)が続く。
【0049】
テスト・ソース定義201は、名前202、上流ポート204、下流ポート206、挿入タイプ208、プロトタイプ・パス210、及びレイアウト・パラメータ212を含む。
【0050】
テスト・ソース定義201の上流ポート204は、テスト・ソースをグラフ100に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。フローの上流にある構成要素は、その出力ポートからフロー上にデータが出力される元の構成要素である。図4の例では、テスト・ソース定義201の上流ポート204が、データベース102の出力を指す。テスト・ソース定義201の下流ポート206は、テスト・ソースをグラフ100に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。フローの下流にある構成要素は、その入力ポートにおいてフローからデータが受信される構成要素である。図4の例では、テスト・ソース定義の下流ポート206が、フィルタ構成要素103の入力を指す。したがって、この例でのテスト・ソース定義201は、データベース102の出力と、フィルタ構成要素103の入力との間のフローにテスト・ソースが配置されることになり、その結果、このテスト・ソースが提供するデータが、データベース102からの入力データを置換できることを示す。
【0051】
挿入タイプ208は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。図4の例では、値「0」がテスト・ソースを定義し、値「1」がプローブを定義し、値「2」が置換構成要素を定義する。他の値を使用して、挿入のタイプを定義することもできる。この挿入はテスト・ソースなので、挿入タイプ208の値は「0」である。
【0052】
プロトタイプ・パス210は、挿入のタイプを示す。この例では、この挿入はテスト・ソースなので、プロトタイプ・パス210は、入力ファイル構成要素を指定する。プロトタイプ・パス210は、特定のタイプの挿入を定義するコードを含むファイルを指す。レイアウト・パラメータ212は、テスト・ソースが含むことになるデータを含むソース・ファイルの位置を定義する。例によっては、この位置はファイル・パスである。ソース・ファイル内のデータは、通常、上流ポート204及び下流ポート206によって定義されるフローを通過するはずのデータを置換することになる。すなわち、テスト・ソースがグラフ100に適用されると、フィルタ構成要素103が、データベース102からのデータを受信するのではなく、ソース・ファイル内のデータを受信する。
【0053】
このソース・ファイルは、テスト・ソースの下流の構成要素によって他の方法で受信されるはずのデータと同じフォーマットを有するデータを含む。例によっては、ソース・ファイル内のデータは、テスト・ソースの上流にあるデータ・ソース(たとえば、データベース)内のデータと同じでもよい。たとえば、データベース102からのデータ・レコードを、ソース・ファイルにコピーすることができる。例によっては、データ・ソースは、SQLクエリなどの実行可能文を示す。これらの例では、SQLクエリを実行することができ、このクエリ実行の結果をソース・ファイルに記憶することができる。例によっては、ソース・ファイル内のデータは、データ・ソース以外のどこかから取得することができる。たとえば、ソース・ファイル内のデータを生成して、グラフ100を完全にデバッグするために、あるデータ(たとえば、ある範囲の値)を確実に処理することができる。例によっては、データ・ソース内のデータが変更されても、ソース・ファイル内のデータは同じままであり、したがって、入力データの一貫したセットでデバッギングを継続できるようになる。
【0054】
例によっては、ソース・ファイル内のデータは、グラフ100の通常の実行中にフローを通過するはずのデータと同じでもよいが、テスト・ソースを使用してこのデータを挿入することによって、上流構成要素は処理を控えることができる。たとえば、複製構成要素106などの上流構成要素は、データを処理するのに大量のシステム・リソースを必要とすることがあり、又は、データ・フロー・グラフ100内の他の構成要素と比較して、データを処理するのに要する時間が相対的に長くなることがある。したがって、既知のデータ(たとえば、通常の実行中にフローを通過するはずの同じデータ)をフローに挿入して、時間を節約し、又はシステム・リソースを保護することができる。
【0055】
プローブ定義213は、名前214、上流ポート216、下流ポート218、挿入タイプ220、及びプロトタイプ・パス222を含む。
【0056】
プローブ定義213の上流ポート216は、プローブをグラフ100に挿入すべきフローのすぐ上流にある構成要素の出力ポートを参照する。図4の例では、プローブ定義213の上流ポート216が、集約構成要素112の出力を指す。プローブ定義213の下流ポート218は、プローブをグラフ100に挿入すべきフローのすぐ下流にある構成要素の入力ポートを参照する。図4の例では、プローブ定義213の下流ポート218が、出力データ受信側構成要素114を指す。したがって、この例でのプローブ定義213は、集約構成要素112の出力と、出力データ受信側構成要素114との間のフローにプローブが配置されることになり、その結果、出力データ受信側構成要素に他の方法で書き込まれたはずのデータをプローブが受信することを示す。
【0057】
プローブ定義213の挿入タイプ220は、挿入がテスト・ソースなのか、プローブなのか、それとも置換構成要素なのか定義する。この挿入はプローブなので、挿入タイプ220の値は「1」である。
【0058】
プロトタイプ・パス222は、挿入のタイプを示す。この例では、この挿入はプローブなので、プロトタイプ・パス222は出力ファイル構成要素を指定する。プロトタイプ・パス222は、特定のタイプの挿入を定義するコードを含むファイルを指す。
【0059】
例によっては、プローブによって監視すべきデータは、システムによって自動的に作成されるファイルに記憶される。このファイルは、システムによって決定される位置に記憶することができる。プローブは、上流ポート216及び下流ポート218によって定義されたフローを通過するデータを監視する。すなわち、プローブがグラフ100に適用されると、集約構成要素112の出力から、出力データ受信側構成要素114の入力まで通過するデータが監視され、システムによって自動的に作成されるファイルに記憶される。例によっては、このデータを、記憶する前に監視することができる。ファイルは、プローブ定義によって参照される構成要素(この例では、外部のデータ受信側構成要素114)によって受信されたはずの同じフォーマットのデータを受信することができる。
【0060】
例によっては、グラフ100の自動解析の結果として、オーバレイ指定によって、1つ又は複数のプローブ又はテスト・ソースの挿入を定義することができる。たとえば、グラフ100の自動解析を実行して、データベース、ファイル、又は他のタイプのデータ・ソースなど、任意のデータ・ソースを識別することができる。識別されたデータ・ソースのうちの1つ又は複数を、テスト・ソースで自動的に置換することができる。置換されたデータ・ソースにより、データ・ソースのすぐ下流のフローにテスト・ソースが挿入され、その結果、データ・ソースからのデータではなく、このテスト・ソースからのデータが下流構成要素に提供されることを意味する。同様に、グラフ100の自動解析は、データベース、ファイル、又は他のタイプの出力データ受信側など、任意の出力データ受信側を識別することができる。識別された出力データ受信側のうちの1つ又は複数を、プローブで自動的に置換することができる。置換された出力データ受信側により、出力データ受信側のすぐ上流のフローにプローブが挿入され、その結果、上流構成要素からのデータが、出力データ受信側ではなくプローブによって受信されることを意味する。グラフ100の自動解析を使用して、特定のタイプの構成要素(たとえば、実行するとグラフ100の外部に影響を及ぼす特定のタイプの構成要素)など、他の構成要素を識別することもできる。
【0061】
テスト・ソース及びプローブの挿入のさらなる説明が、米国特許出願第14/715,807号に提示されており、その内容全体を参考としてここに組み込む。
【0062】
置換構成要素定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ・パス、及びレイアウト・パラメータを含む。置換構成要素定義の上流ポートは、この置換構成要素がグラフ100内に挿入される位置のすぐ上流にある構成要素の出力ポートを参照する。置換構成要素定義の下流ポートは、この置換構成要素がグラフ内に挿入される位置のすぐ下流にある構成要素の入力ポートを参照する。上流ポート及び下流ポートに基づいて、置換構成要素によって置換すべきグラフ100内の既存の構成要素を識別することができる。挿入タイプは、この挿入が置換構成要素であると定義する。
【0063】
プロトタイプ・パスは、挿入のタイプを示す。この例では、この挿入が置換構成要素なので、プロトタイプ・パスは、置換構成要素を定義するコードを含むファイルを指す。置換構成要素を定義するコードは、置換すべき既存の構成要素を定義するコードに基づいているが、所望のフォーマットのデータを処理することができる。
【0064】
例によっては、グラフの自動解析の結果として、オーバレイ指定によって、グラフ用の1つ又は複数の置換構成要素を定義することができる。たとえば、グラフ内の各構成要素の仕様を解析することができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードを解析すると、構成要素によって表されるデータ処理動作がデータのフォーマットに依存しているかどうかを明らかにすることができる。
【0065】
置換構成要素は、識別されたフォーマット特有の構成要素のうちの1つ又は複数について定義される。例によっては、置換すべきフォーマット特有の構成要素は、ユーザ入力に基づいて識別される。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを置換するか判定してもよい。例によっては、グラフによってこれまでに処理されたデータのフォーマットに対して入力データのフォーマットの自動解析を実行して、フォーマット特有の構成要素のいずれかを置換するかを識別することができる。
【0066】
例によっては、グラフベースではないコンピュータ・プログラムでは、コンピュータ・プログラム内の1つ又は複数のフォーマット特有のプロセスを識別し、1つ又は複数の他のプロセス、たとえば、特定のフォーマットのデータに対して作用できるプロセス、又は任意のフォーマットのデータ対して作用できるプロセスでこれを置換することができる。
【0067】
図5を参照すると、テスト・ソース、プローブ、又はその両方を挿入するため、解析エンジン300が、グラフ100を自動的に解析して、データ・ソース302及び出力データ受信側304を識別する。たとえば、解析エンジン300は、グラフ100のそれぞれのノードについて、パラメータ及び接続にアクセスすることができる(用語「ノード」及び「構成要素」は、これを区別なく使用することがある)。所与のノードが入力接続をもたない場合、解析エンジン300は、このノードをデータ・ソースと識別する。同様に、所与のノードが出力接続をもたない場合、解析エンジン300は、このノードを出力データ受信側と識別する。グラフのそれぞれのノードにアクセスし、これを解析するため、解析エンジンは、グラフの各接続(用語「接続」及び「フロー」は、これを区別なく使用することがある)の全てを「探索」して回る。例によっては、実行時(たとえば、デバッギング目的で処理が開始するとき)まで、グラフ100はインスタンス化又はパラメータ化されない。解析エンジン300は、実行時に自動解析を実行して、グラフ100内のデータ・ソース及び出力データ受信側を識別することができる。
【0068】
解析エンジン300は、データ・ソース302及び出力データ受信側304の識別子を挿入エンジン306に送信し、この挿入エンジンは、データ・ソースと出力データ受信側のいずれが、それぞれテスト・ソース及びプローブで置換されることになるのか判定する。例によっては、試験者308は、テスト・ソース及びプローブで置換すべき、データ・ソース及び出力データ受信側のリスト310を提供する。このリスト310は、ファイル、データベースとして、又は別のフォーマットで提供することができる。たとえば、試験者308は、頻繁に変更されると予想される任意のデータ・ソースを、リスト310上にもっていてもよい。このようなデータ・ソースをテスト・ソースで置換することにより、試験者308は、一貫した入力データを使用してグラフを確実にテストできるようにすることができる。
【0069】
挿入エンジン306は、識別されたそれぞれのデータ・ソース302及び出力データ受信側304と、リスト310上のデータ・ソース及び出力データ受信側とを比較する。挿入エンジンは、リスト310上に表示される任意のデータ・ソース302又は出力データ受信側304について、オーバレイ指定312を作成する。例によっては、上流ポートや下流ポートなど、オーバレイ指定312についてのパラメータが、解析エンジン300によって挿入エンジン306に提供される。例によっては、挿入エンジン306は、グラフ100にアクセスして、関連するパラメータを取得する。
【0070】
テスト・ソースについてオーバレイ指定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回実行されるようにする、実データ又は生成済みデータなどのデータのセットを提供してもよい。
【0071】
プローブ用のオーバレイ指定312を作成するため、挿入エンジン308は、出力データを記憶すべきファイルの位置を決定する。例によっては、この位置は、たとえばシステム技術者によって、デフォルトに設定される。例によっては、挿入エンジン306は、ユーザ・インターフェース314を介して、出力データ・ファイルについての位置を指定するよう試験者308に要求することができる。
【0072】
置換構成要素を挿入するため、解析エンジン300は、グラフ100を解析して、グラフ内の1つ又は複数のフォーマット特有の構成要素305を識別する。グラフの各構成要素を解析するため、解析エンジン300は、グラフの接続の全てを「探索」して回る。例によっては、解析エンジン300は、グラフの最も遠い上流構成要素から開始し、この上流構成要素からの各出力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。逆に言えば、解析エンジン300は、グラフの最も遠い下流構成要素から開始し、この下流構成要素への各入力フローを「探索」して回り、したがって、最終的にはグラフの構成要素の全てを解析してもよい。
【0073】
解析エンジン300は、グラフ100内の各構成要素の仕様にアクセスすることができる。構成要素の仕様は、この構成要素を定義するコード、たとえば、この構成要素によって表されるデータ処理動作を定義するコードを含むか、又はそれを指す。コードの解析に基づいて、解析エンジン300は、データ処理動作がデータのフォーマットに依存しているかどうかを判定することができる。解析エンジン300は、フォーマット特有の構成要素の識別子を挿入エンジン306に送信し、この挿入エンジン306は、置換構成要素のためにフォーマット特有の構成要素のうちのいずれかを省略するか決定する。
【0074】
例によっては、解析エンジン300は、ユーザの要求に応じてグラフ100を解析する。たとえば、ユーザは、グラフ100を使用して、通常このグラフによって処理されるデータとは異なるフォーマットのデータを処理したいと思うことがある。ユーザは、グラフ100の解析を要求して、異なるフォーマットのデータをグラフ100が確実に処理できるようにすることができる。
【0075】
例によっては、たとえば、グラフが最初に定義されるとき、又はグラフが最初にインスタンス化若しくはパラメータ化されるとき(たとえば、グラフの第1の実行時に)、解析エンジン300がグラフ100を一度解析して、グラフ内のフォーマット特有の構成要素全てのリストを生成する。グラフ内のフォーマット特有の構成要素のリストは、先々参照するために記憶して、たとえば、互いに異なるフォーマットのデータを処理するためにグラフ100を使用するというユーザの要求に応答して使用することができる。
【0076】
例によっては、解析エンジン300は、グラフをいつ解析するかを自動的に決定する。たとえば、グラフの仕様は、このグラフによってこれまでに処理されたデータのフォーマットの記述を含んでもよい。入力データのフォーマットが、これまでに処理されたデータのフォーマットと異なる場合、解析エンジンは、グラフを解析して、異なるフォーマットの入力データを処理するために何らかの構成要素を置換する必要があるかどうかを判定してもよい。
【0077】
挿入エンジン306は、解析エンジン300によって識別されるフォーマット特有の構成要素のいずれかを省略するか判定する。挿入エンジン306は、省略される構成要素のそれぞれについて置換構成要素を定義するオーバレイ指定を作成する。
【0078】
例によっては、省略すべきフォーマット特有の構成要素は、ユーザによって識別される。たとえば、挿入エンジン306は、識別済みのフォーマット特有の構成要素のリストをユーザ・インターフェース314に表示することができ、ユーザは、置換すべき構成要素を選択する。ユーザは、置換すべき構成要素のそれぞれについて置換構成要素として使用される構成要素を指示することができる。たとえば、ユーザは、入力データのフォーマット、フォーマット特有の構成要素のそれぞれによって表されるプロセス、又はその両方についての自らの知識を使用して、構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか判定してもよい。省略すべき構成要素、置換構成要素、又はその両方を識別するユーザ入力に基づいて、挿入エンジン306はオーバレイ指定を作成する。
【0079】
例によっては、挿入エンジン306は、フォーマット特有の構成要素のいずれかを省略すべきか、又どの構成要素を置換構成要素として含めるべきか自動的に決定することができる。たとえば、挿入エンジンは、フォーマット特有の構成要素のそれぞれの仕様を解析して、どの構成要素が入力データを処理できるか、又は処理できないか判定することができる。挿入エンジン306は、置換構成要素、たとえば、置換すべき対応する構成要素によって表されるのと同じデータ処理動作を表すが、入力データのフォーマットのデータを処理できる置換構成要素を自動的に識別することができる。挿入エンジン306は、自動的に識別された置換構成要素についてのオーバレイ指定を作成する。例によっては、ユーザ入力は、自動化判定に組み込まれる。たとえば、挿入エンジン306によって識別される置換構成要素を承認するよう、ユーザに求めてもよい。
【0080】
図6には、グラフ用の置換構成要素を定義するための一般的な手法が示してある。グラフによる処理のために、特定のフォーマットを有するデータのセットが受信される(400)。受信データの特定のフォーマットを処理する能力について、グラフを解析すべきかどうかに関して判定がなされる(402)。例によっては、ユーザは、たとえばユーザ・インターフェースを介して、グラフを解析すべきであると示すことができる。たとえば、ユーザは、このデータのセットが、グラフによって処理されたこれまでのデータとは異なるフォーマットを有することを知っている場合がある。例によっては、この判定を自動的におこなうことができる。たとえば、受信データのフォーマットを決定し、たとえば、グラフが構成されるデータのフォーマットを示すグラフの仕様に記憶された情報と比較することができる。グラフが構成されるデータのフォーマットと受信データのフォーマットが一致しない場合、グラフが解析される。
【0081】
グラフは、たとえばプロセッサによって解析されて、構成要素によって処理されるデータのフォーマットに依存する、グラフの1つ又は複数の構成要素を識別する(404)。具体的には、グラフの構成要素のうちの1つ又は複数のそれぞれについての仕様が解析されて、グラフ内のフォーマット特有の構成要素を識別する。例によっては、グラフは、このグラフの各構成要素を介する段階的進行によって解析される。たとえば、各構成要素を解析して、この構成要素がフォーマット特有の構成要素かどうかを判定するとともに、この入力フローと出力フローを識別する。各フローは隣接する構成要素へと続き、これら構成要素のそれぞれが解析されて、この構成要素がフォーマット特有であるかどうかを判定し、入力フロー及び出力フローを識別する。このようにして、グラフの構成要素の全てを解析することができる。例によっては、この解析は、実行時に、たとえばグラフがパラメータ化された後に、自動的に実行することができる。例によっては、この解析は、自動的かつ動的に、たとえばグラフが実行されている間に実行することができる。たとえば、グラフの実行中に、あるパラメータが解決されると、動的な解析を実行することができる。例によっては、グラフは短期記憶内に受信され、そこからプロセッサによってグラフが解析されて、フォーマット特有の構成要素を識別する。
【0082】
フォーマット特有と識別された構成要素のうちの1つ又は複数を評価して、構成要素を省略すべきかどうか、及び置換構成要素が含まれているかどうかを判定する(406)。たとえば、構成要素が、受信済みのデータのセットのフォーマットを有するデータを処理することができない場合、フォーマット特有の構成要素を省略してもよい。例によっては、フォーマット特有の構成要素のリストがユーザ・インターフェースに表示され、ユーザが、構成要素のいずれかを省略すべきか指定する。例によっては、フォーマット特有の構成要素のそれぞれの仕様を評価して、受信済みのデータのセットのフォーマットを有するデータを、この構成要素が処理できるかどうかを自動的に判定する。例によっては、フォーマット特有と識別された構成要素の全てが省略される。
【0083】
省略すべきフォーマット特有の構成要素のうちの1つ又は複数のそれぞれでの置換構成要素について、オーバレイ指定が定義される(408)。所与の置換構成要素の仕様は、対応する省略済みのフォーマット特有の構成要素の仕様に基づいているが、受信済みのデータのセットのフォーマットを有するデータに実行できる、1つ又は複数のデータ処理動作を定義する。例によっては、置換構成要素は、受信済みのデータのセットのフォーマットに対して、フォーマット特有のものとすることができる。例によっては、置換構成要素は、一般的なもの、たとえば任意のフォーマットのデータを処理できるものとすることができる。
【0084】
グラフの実行に先立って、コンパイラが、グラフを実行可能なグラフにコンパイルしてもよい(410)。コンパイルの一環として、コンパイラは、置換構成要素を定義するオーバレイ指定200を考慮に入れる。たとえば、コンパイラは、入力としてオーバレイ指定200を受け付けてもよい。グラフの第2のバージョンが生成され、置換用に識別されたフォーマット特有の構成要素が除去され、除去済みの構成要素の代わりのオブジェクトとして、1つ又は複数の置換構成要素がグラフの第2のバージョンに挿入される。置換構成要素は、(除去済みの構成要素以外の)グラフ100の第1のバージョンに含まれるデータ処理構成要素とともに、グラフの第2のバージョンで表してもよい。オーバレイ指定200、又はこのオーバレイ指定を記憶するファイルは、グラフを含むファイルから分離されたままである。すなわち、置換構成要素は、グラフの第1のバージョンに含まれるデータ処理構成要素とともに、グラフの第2のバージョンに表示してもよいが、グラフの第1のバージョンを含むファイルは、置換構成要素の定義を含まない。
【0085】
オーバレイ指定において定義されるテスト・ソース、プローブ、又は置換構成要素などの挿入は、少なくとも2つのモード、すなわち単一実行モード(Single-Execution Mode)及び保存状態モード(Saved-State Mode)のうちの1つを使用して実行できる。
【0086】
図7には、単一実行モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント602が、グラフ604の第1のバージョン、及び挿入を定義するオーバレイ・ファイル606(たとえば、オーバレイ指定)を生成又は参照する。たとえば、オーバレイ・ファイル606は、図4のオーバレイ指定200でもよい。次いで、グラフ604が、コンパイラ608によってコンパイルされる。コンパイラ608は、オーバレイ・ファイル606を考慮に入れ、グラフの第2のバージョンを作成する。グラフの第2のバージョンは実行可能であり、オーバレイ・ファイル606によって定義される挿入を含む。次いで、グラフの第2のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。グラフの第2のバージョンが再び実行されることになる場合、グラフ604の再指定、再コンパイル、及びグラフの第2のバージョンの再実行を含む、このプロセスが繰り返される。実行可能なグラフの、ある実行から次の実行までの情報は保存されない。
【0087】
図8には、保存状態マネージャ708を用いて、保存状態モードで挿入定義を実行するための、例示的なシステムが示してある。この例では、クライアント702が、グラフ704、及び挿入を定義するオーバレイ・ファイル706(たとえば、オーバレイ指定)を生成又は参照する。たとえば、オーバレイ・ファイル706は、図4のオーバレイ指定200でもよい。保存状態リポジトリ710が、保存状態マネージャ708及びコンパイラ712によって管理される。保存状態マネージャ708は、この保存状態データが保存状態リポジトリ710内のどこに配置されているか識別することもできる。グラフ704が、コンパイラ712によってコンパイルされる。コンパイラ712は、オーバレイ・ファイル706を考慮に入れ、オーバレイ・ファイル706によって定義される挿入を含むグラフの第2のバージョンを作成する。次いで、グラフの第2のバージョンは、実行することができる。例によっては、コンパイルと実行は同時に発生する。保存状態モードによって、実行可能なグラフが、各実行間で情報を保存している間に何回も実行できるようになるという点で、保存状態モードは単一実行モードと異なる。
【0088】
保存状態マネージャ708は、保存状態マネージャ・ディレクトリに存在することができ、保存状態を管理する。保存状態リポジトリ710に保存できる情報の例には、情報のうちでもとりわけ、プローブ挿入に関連する情報、テスト・ソース挿入に関連する情報、置換構成要素挿入に関連する情報、オーバレイ・ファイル706に関連する情報、及びグラフ構成要素に関連付けられたパラメータ(たとえば属性)が含まれる。
【0089】
例によっては、実行可能なグラフが実行されるとき、グラフの特定の部分のみが実行される。すなわち、グラフの特定の構成要素のみが実行される。例によっては、グラフの構成要素の全てよりも少ない構成要素が実行される。実行可能なグラフは、挿入に影響を及ぼすことになる構成要素を実行するだけでよい。例によっては、グラフの第2のバージョンは、元のグラフ全体の第2のバージョンである。例によっては、グラフの第2のバージョンは、元のグラフ全体のほんの一部分の第2のバージョン、たとえば、定義された挿入に関連したグラフの部分のみの第2のバージョンである。たとえば、最も上流の置換構成要素の上流にある構成要素は、グラフの第1のバージョンによって実行してもよく、最も上流の置換構成要素で開始する構成要素は、グラフの第2のバージョンによって実行してもよい。
【0090】
図9には、ここで説明する置換構成要素技法を使用できる、例示的なデータ処理システム800が示してある。このシステム800は、記憶装置又はオンライン・データ・ストリームへの接続など、1つ又は複数のデータのソースを含んでもよいデータ・ソース802を含み、そのそれぞれが、様々なフォーマット(たとえば、データベース・テーブル、スプレッドシート・ファイル、フラット・テキスト・ファイル、又はメインフレームが使用するネイティブ・フォーマット)のうちの任意のフォーマットで、データを記憶又は提供してもよい。実行環境804及び開発環境818は、たとえば、あるバージョンのUNIXオペレーティング・システムなど、適切なオペレーティング・システムの制御下で、1つ又は複数の汎用コンピュータ上にホスティングしてもよい。たとえば、実行環境804は、複数ノードの並列コンピューティング環境を含むことができ、これは、複数の中央処理装置(CPU)若しくはプロセッサ・コア、ローカル・システム(たとえば、対称型マルチプロセッシング(SMP)コンピュータなどのマルチプロセッサ・システム)若しくはローカル分散システム(たとえば、クラスタ若しくは超並列処理(MPP)として結合された複数のプロセッサ)、又は、遠隔プロセッサ若しくは遠隔分散プロセッサ(たとえば、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合されたマルチプロセッサ)、又はその任意の組合せを使用するコンピュータ・システムの構成を含む。
【0091】
実行環境804は、データ・ソース802からデータを読み取り、出力データを生成する。データ・ソース802を設ける記憶装置は、実行環境804に対してローカルでもよく、たとえばこれは、実行環境804をホスティングするコンピュータに接続された記憶媒体(たとえばハード・ドライブ808)に記憶され、又は実行環境804に対して遠隔でもよく、たとえばこれは、(たとえばクラウド・コンピューティング・インフラストラクチャによって提供される)遠隔接続を介して、実行環境804をホスティングするコンピュータと通信する遠隔システム(たとえばメインフレーム810)上にホスティングされる。データ・ソース802は、テスト・ソース定義(たとえば、図4のテスト・ソース定義201)で定義されるデータを含んでもよい。すなわち、テスト・ソース定義201のレイアウト・パラメータ212が、データ・ソース802内のソース・ファイルの位置を指してもよい。
【0092】
出力データは、実行環境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のドメイン・ソケットを使用することができ、又は共有メモリを使用して、各プロセス間でデータを渡すことができる)。
【0093】
開発環境818は、ソース・コードを記憶するためのコード・リポジトリ822を含む。例によっては、ソース・コード及びオーバレイ指定(たとえば、図4のオーバレイ指定220)は、たとえばユーザ・インターフェースを介して開発環境にアクセスする開発者820によって開発してもよい。例によっては、ソース・コード及びオーバレイ指定は、たとえば、前述の解析エンジン300及び挿入エンジン306によって自動的に決定される。例によっては、グラフ及びオーバレイ指定は、コード・リポジトリ822に記憶することができる。例によっては、コード・リポジトリ822にグラフが記憶され、別のオーバレイ・リポジトリ824にオーバレイ指定が記憶される。
【0094】
コード・リポジトリ822及びオーバレイ・リポジトリ824のうちの1つ又は両方が、コンパイラ826と通信してもよい。コンパイラ826は、グラフの第1のバージョン及びオーバレイ指定(たとえば、図4のオーバレイ指定200)を、グラフの実行可能な第2のバージョン828にコンパイルすることができる。たとえば、コンパイラは、入力としてオーバレイ指定を受け付けてもよい。1つ又は複数の挿入が処理され、オーバレイ指定に含まれる挿入定義にそれぞれが対応するオブジェクトの形で、グラフに挿入される。グラフの第2のバージョン828は、修正されたグラフによって視覚的に表すことができる。挿入オブジェクトは、グラフ500の第2のバージョンに示してもよい。
【0095】
開発環境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の各態様を修正できるようになってもよい。
【0096】
例によっては、開発者は、グラフの挿入及びコンパイルを管理する。たとえば、開発者820は、コード・リポジトリ822から、図1のグラフ100の第1のバージョンを選択する。開発者820は又、オーバレイ・リポジトリ824から、図4のオーバレイ指定200を選択する。例によっては、オーバレイ指定200を選択する代わりに、開発者820は、オーバレイ・リポジトリ824内の様々なオーバレイ指定から挿入定義を選択してもよい。開発者820は、グラフ100の第1のバージョン及びオーバレイ指定200に基づいて、グラフの第2のバージョン828をコンパイルするようコンパイラ826に命令する。
【0097】
例によっては、挿入は自動的に挿入される。たとえば、前述の通り、グラフ100内の1つ又は複数のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素は、たとえば、入力接続又は出力接続がない構成要素を識別することによって、又はグラフ100内の構成要素の仕様を解析することによって自動的に識別される。識別されたデータ・ソース及び出力データ受信側は、グラフ100のデバッギング中に挿入によって置換されることになる、データ・ソース及び出力データ受信側のリストと自動的に比較することができる。たとえば、このリストは、開発者820が提供することができる。フォーマット特有の構成要素を解析して、入力されるデータのセットのフォーマットなど、特定のフォーマットのデータをこの構成要素が処理できるかどうかを判定することができる。データを処理できないフォーマット特有の構成要素のリストが生成される。例によっては、このリストは、開発者820が提供することができる。このリストに従って、グラフ100のデータ・ソース、出力データ受信側、又はフォーマット特有の構成要素用のオーバレイ指定が自動的に作成される。次いで、グラフの第2のバージョンが自動的にコンパイルされる。
【0098】
例によっては、オーバレイ指定は、コード・リポジトリ822又はオーバレイ・リポジトリ824内のファイルとして永続的に記憶されることはない。むしろ、通常オーバレイ・ファイルに含まれるはずの情報(たとえば、挿入定義)は、(たとえば、ユーザ・インターフェースを介して)開発者820によって作成され、又は解析エンジン300及び挿入エンジン306によって自動的に判定され、メモリに一時的に記憶される。次いで、オーバレイ情報は、コンパイラ(たとえば、図8の608)又は保存状態マネージャ(たとえば、図9の708)に渡される。
【0099】
図10を参照すると、例示的なプロセスでは、グラフの第1のバージョン(たとえば、図1のグラフ100)が受信される(902)。たとえば、グラフの第1のバージョンは、プロセッサがアクセス可能な短期記憶に受信することができる。グラフ100の第1のバージョンは、構成要素及びフローを含む。この構成要素は、データ・レコードに実行される動作を表し、このフローは、各構成要素間のデータ・レコードのフローを表す。
【0100】
1つ又は複数の挿入を定義するオーバレイ指定が受信される(904)。例によっては、オーバレイ指定は、開発者又は試験者から受信される。例によっては、たとえば前述の通り、オーバレイ指定は自動的に定義される。オーバレイ指定は、図4に示すオーバレイ指定200でもよい。オーバレイ指定は、1つ又は複数の挿入定義(たとえば、1つ若しくは複数のテスト・ソース定義、1つ若しくは複数のプローブ定義、又は1つ若しくは複数の置換構成要素定義)を含むことができる。挿入定義は、名前、上流ポート、下流ポート、挿入タイプ、プロトタイプ経路、及び(テスト・ソース定義用の)レイアウト・パラメータを含むことができる。定義されたテスト・ソース及びプローブのそれぞれは、グラフ100のフローに関連付けることができる。定義された置換構成要素のそれぞれは、グラフ100の構成要素に関連付けることができる。
【0101】
定義された挿入のうちの1つにそれぞれが対応する、1つ又は複数のオブジェクトが生成される(906)。オブジェクトは、テスト・ソース、プローブ、又は置換構成要素など、グラフの構成要素でもよい。
【0102】
グラフ100の一部分の構成要素及びフローの少なくともいくつか、並びに生成された1つ又は複数のオブジェクトを含む、グラフの少なくとも一部分の第2のバージョンが生成される(908)。例によっては、グラフの第2のバージョンは、グラフ100の一部分の構成要素及びフローの少なくともいくつか、並びに生成された1つ又は複数のオブジェクトを含むように修正された、元のグラフ100のコピーである。グラフの第2のバージョンは、修正されたグラフ(たとえば、図2のグラフ200の第2のバージョン、又は図3のグラフ300の第3のバージョン)によって視覚的に表すことができる。各オブジェクトは、(テスト・ソース若しくはプローブ用の)オブジェクトに対応する定義済みの挿入に関連付けられたフローにおいて、又はこのオブジェクトに対応する定義済みの置換構成要素に関連付けられた構成要素の代わりに挿入される。生成された挿入オブジェクトは、グラフ100のデータ処理構成要素とともに、グラフの第2のバージョンに表示してもよいが、グラフ100の第1のバージョン(又は、グラフ100の第1のバージョンを含むファイル)は修正されない。
【0103】
グラフ及びオーバレイ指定をコンパイルして、オーバレイ・ファイルによって定義された挿入を含むグラフの第2のバージョンを作成できるコンパイラ(たとえば、図7のコンパイラ608、及び図8のコンパイラ712)を説明したが、実施形態によっては、グラフ及びオーバレイ指定はコンパイルされない。たとえば、グラフ及びオーバレイ指定は、コンパイルされることなく直接実行することができる。インタープリタは、それぞれのステートメントを、既に機械コードにコンパイルされている一連の1つ又は複数のサブルーチンに変換することによって、グラフ及びオーバレイ指定を直接実行することができる。
【0104】
プローブ、テスト・ソース、及び置換構成要素の形で挿入を説明してきたが、実施形態によっては、挿入は他の形をとることができる。挿入を広く使用して、グラフの所与のポイントでデータを入力し、グラフの所与のポイントからデータを取り出すことができる。たとえば、グラフのフローを通過するデータの品質を監視するように、挿入を設計することができる。データ品質が閾値を下回る場合、ユーザは、自動警告を受信することができる。挿入のさらなる説明は、米国特許出願第14/715,904号に見いだすことができ、この内容全体を参考として本明細書に援用する。
【0105】
さらに、グラフとの関連で挿入を説明してきたが、実施形態によっては、挿入は他の実行可能なアプリケーションとともに使用することができる。たとえば、包括的で実行可能なアプリケーション用のデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスは、このアプリケーションの自動解析を用いて識別することができる。識別されたデータ・ソース、出力データ受信側、又はフォーマット特有のプロセスのうちの1つ又は複数は、それぞれ適切なテスト・ソース、プローブ、又は置換プロセスによって置換することができる。このようにして、実行可能なアプリケーションは、テスト・ソースからのデータを処理し、データをプローブに出力することができ、又は互いに異なるフォーマットのデータを処理できるようにすることができる。この構成は、実行可能なアプリケーションをテスト又はデバッグするのに役立つことがある。
【0106】
前述の手法は、適切なソフトウェアを実行するコンピューティング・システムを使用して実施することができる。たとえば、ソフトウェアは、(分散アーキテクチャ、クライアント/サーバ、又はグリッドなど様々なアーキテクチャでよい)1つ又は複数のプログラムされた、又はプログラム可能なコンピューティング・システム上で実行される、1つ又は複数のコンピュータ・プログラムでの手順を含んでもよく、このコンピューティング・システムのそれぞれが、少なくとも1つのプロセッサ、(揮発性メモリ及び/又は不揮発性メモリ、及び/又は記憶素子を含む)少なくとも1つのデータ記憶装置システム、(少なくとも1つの入力装置若しくは入力ポートを使用して入力を受信し、少なくとも1つの出力装置若しくは出力ポートを使用して出力を供給するための)少なくとも1つのユーザ・インターフェースを備える。ソフトウェアは、たとえば、グラフの設計、構成、及び実行に関連するサービスを提供する、比較的大きいプログラムの1つ又は複数のモジュールを含んでもよい。プログラムの各モジュール(たとえばグラフの要素)は、データ構造として、又はデータ・リポジトリに記憶されたデータ・モデルに合致する他の編成データとして実装することができる。
【0107】
ソフトウェアは、(たとえば、汎用若しくは専用の、コンピューティング・システム若しくはコンピューティング装置によって読取り可能な)CD-ROM又は他のコンピュータ読取り可能な媒体など、有形で持続的な媒体上に実装してもよく、又はネットワークの通信媒体を介して、ソフトウェアが実行されるコンピューティング・システムの有形で持続的な媒体に送達してもよい(たとえば、伝搬信号において符号化してもよい)。処理の一部又は全ては、専用コンピュータ上で実行してもよく、又は、コプロセッサ若しくはフィールド・プログラマブル・ゲート・アレイ(FPGA)、若しくは専用の特定用途向け集積回路(ASIC)などの専用ハードウェアを使用して実行してもよい。ソフトウェアによって指定された計算の様々な部分を様々なコンピューティング要素によって実行する分散方式で、処理を実施してもよい。本明細書に記載の処理を実行するよう、記憶装置媒体がコンピュータに読み取られるときにコンピュータを構成し動作させるために、このようなコンピュータ・プログラムはそれぞれ、汎用又は専用のプログラム可能なコンピュータでアクセス可能な記憶装置のコンピュータ読取り可能な記憶媒体(たとえば、固体記憶装置若しくは固体記憶媒体、又は磁気媒体若しくは光媒体)に、記憶又はダウンロードされることが好ましい。この発明性のあるシステムは又、コンピュータ・プログラムで構成された有形の持続的な媒体として実施されるものとみなしてもよく、ここで、そのように構成された媒体により、コンピュータは、特定の事前定義された方式で動作して、本明細書に記載の処理ステップのうちの1つ又は複数を実行できるようになる。
【0108】
いくつもの実施形態を説明してきた。それにもかかわらず、前述の説明は、本発明の範囲を例示するものであり、それを限定するものではなく、本発明の範囲は、添付の特許請求の範囲に記載の範囲によって定義されることを理解されたい。したがって、他の実施形態も、添付の特許請求の範囲に記載の範囲内にある。たとえば、本発明の範囲から逸脱することなく、様々な修正を加えてもよい。さらに、前述のステップのいくつかは、順序に依存しなくてもよく、したがって、記載された順序とは異なる順序で実行することができる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10