JP6674459B2 - グラフのデバッグ - Google Patents

グラフのデバッグ Download PDF

Info

Publication number
JP6674459B2
JP6674459B2 JP2017524459A JP2017524459A JP6674459B2 JP 6674459 B2 JP6674459 B2 JP 6674459B2 JP 2017524459 A JP2017524459 A JP 2017524459A JP 2017524459 A JP2017524459 A JP 2017524459A JP 6674459 B2 JP6674459 B2 JP 6674459B2
Authority
JP
Japan
Prior art keywords
graph
components
component
data
flows
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017524459A
Other languages
English (en)
Other versions
JP2018500642A (ja
Inventor
オフナー,カール
ラーソン,ブロンド
ベイ,ポール
テベン,ダン
ゴウルド,ジョエル
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2018500642A publication Critical patent/JP2018500642A/ja
Application granted granted Critical
Publication of JP6674459B2 publication Critical patent/JP6674459B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

優先権の主張
本願は、2014年11月5日に出願された米国仮特許出願第62/075,466号の優先権を主張するものであり、この内容全体を参照により本明細書に援用する。
背景
本明細書は、グラフのデバッグに関する。
コード開発者は、多くの場合、開発プロセス全体を通してソースコードをデバッグする。そうするときに、ソースコードの機能に影響を及ぼし得るデバッグコードでソースコードが変更され得る。多くの場合、ソースコードの元の機能を回復するために、デバッグ完了時、追加されたデバッグコードをソースコードから削除することが望ましい。
概要
一態様では、方法は、コンポーネント及びフローを含む第1のグラフを受信することを含む。コンポーネントは、データレコードに対して実行される動作を表す。フローは、コンポーネント間のデータレコードのフローを表す。本方法は、第1のグラフとは別個の仕様を受信することも含む。仕様は、1つ又は複数の挿入を定義する。挿入のそれぞれは、第1のグラフのフローに関連付けられる。本方法は、挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成することも含む。本方法は、第1のグラフのコンポーネント及びフローの少なくとも幾つかと、1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成することも含む。
実装形態は、以下の特徴のうちの1つ又は複数を含むことができる。
幾つかの実装形態では、生成されたコンポーネントの1つは、データレコードが第2のグラフのコンポーネント間を渡る際、データレコードに関連するデータをモニタするように構成されるプローブである。
幾つかの実装形態では、プローブは、1つ又は複数のデータレコードに関連するデータを記憶するように構成される。
幾つかの実装形態では、生成されたコンポーネントの1つは、第2のグラフのコンポーネントの1つにデータを提供するように構成されるテストソースである。
幾つかの実装形態では、本方法は、第2のグラフを実行することも含む。
幾つかの実装形態では、第2のグラフの全てよりも少数のコンポーネントが実行される。
幾つかの実装形態では、実行される第2のグラフのコンポーネントは、コンポーネントであって、その動作が生成されたオブジェクトの1つ又は複数に影響を及ぼす、コンポーネントを含む。
幾つかの実装形態では、生成されたコンポーネントの1つはプローブである。実行される第2のグラフのコンポーネントは、データをプローブに提供するコンポーネントを含む。
幾つかの実装形態では、プローブの下流に存在する第2のグラフの1つ又は複数のコンポーネントは実行されない。
幾つかの実装形態では、生成されたコンポーネントの1つはテストソースである。テストソースの上流に存在する第2のグラフの1つ又は複数のコンポーネントは実行されない。
幾つかの実装形態では、本方法は、第2のグラフのコンポーネントの1つに関連付けられたパラメータを変更することも含む。本方法は、変更されたコンポーネントが、実行時、生成されたコンポーネントのいずれかに影響を及ぼすか否かを判断することも含む。本方法は、第2のグラフを再実行することも含む。
幾つかの実装形態では、変更されたコンポーネントが、実行時、生成されたコンポーネントのいずれにも影響を及ぼさない場合、変更されたコンポーネントは再実行されない。
幾つかの実装形態では、生成されたコンポーネントの1つはプローブである。変更されたコンポーネントは、プローブに関連付けられたフローの上流に存在する。
幾つかの実装形態では、第1のグラフ及び仕様は、別個のファイルに記憶される。
幾つかの実装形態では、第1のグラフ及び第2のグラフは、別個のファイルに記憶される。
幾つかの実装形態では、第2のグラフは、ファイルに記憶されないシェルスクリプトである。
幾つかの実装形態では、第2のグラフにおいて、生成されたコンポーネントの1つは、生成されたコンポーネントに関連付けられるフローからデータを受信する第1のグラフ内のコンポーネントに対応するコンポーネントにデータを提供する。
幾つかの実装形態では、第2のグラフにおいて、生成されたコンポーネントの1つは、生成されたコンポーネントに関連付けられるフローにデータを提供する第1のグラフ内のコンポーネントに対応するコンポーネントからデータを受信する。
幾つかの実装形態では、第2のグラフは、第1のグラフが変更されずに生成される。
幾つかの実装形態では、第2のグラフを生成することは、第1のグラフの少なくとも一部のコピーを生成することを含む。第2のグラフを生成することは、1つ又は複数の生成されたコンポーネントを含むように、第1のグラフのコピーを変更することも含む。
別の態様では、システムは、少なくとも1つのプロセッサを含む。本システムは、コンポーネント及びフローを含む第1のグラフを受信する手段も含む。コンポーネントは、データレコードに対して実行される動作を表す。フローは、コンポーネント間のデータレコードのフローを表す。本システムは、第1のグラフとは別個の仕様を受信する手段も含む。仕様は、1つ又は複数の挿入を定義する。挿入のそれぞれは、第1のグラフのフローに関連付けられる。本システムは、挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成する手段も含む。本システムは、第1のグラフのコンポーネント及びフローの少なくとも幾つかと、1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成する手段も含む。
別の態様では、コンピュータシステムは、コードリポジトリから、コンポーネント及びフローを含む第1のグラフを受信するように構成されたプロセッサを含む。コンポーネントは、データレコードに対して実行される動作を表す。フローは、コンポーネント間のデータレコードのフローを表す。プロセッサは、ユーザインタフェースを通して、第1のグラフとは別個の仕様を受信するようにも構成される。仕様は、1つ又は複数の挿入を定義する。挿入のそれぞれは、第1のグラフのフローに関連付けられる。本コンピュータシステムは、定義された挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成するように構成されたコンパイラも含む。コンパイラは、第1のグラフのコンポーネント及びフローの少なくとも幾つかと、1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成するようにも構成される。
別の態様では、コンピュータ可読デバイスは、コンピュータプログラムを記憶する。コンピュータプログラムは、コンピュータに、コンポーネント及びフローを含む第1のグラフを受信させる実行可能命令を含む。コンポーネントは、データレコードに対して実行される動作を表す。フローは、コンポーネント間のデータレコードのフローを表す。コンピュータプログラムは、コンピュータに、第1のグラフとは別個の仕様を受信させる実行可能命令も含む。仕様は、1つ又は複数の挿入を定義する。挿入のそれぞれは、第1のグラフのフローに関連付けられる。コンピュータプログラムは、コンピュータに、挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成させる実行可能命令も含む。コンピュータプログラムは、コンピュータに、第1のグラフのコンポーネント及びフローの少なくとも幾つかと、1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成させる実行可能命令も含む。
別の態様では、方法は、コンピュータプログラムの第1のバージョンのデータ処理要素を識別することを含む。データ処理要素は、i)第1のデータ要素からデータを受信するか、又はii)第1のデータ要素にデータを提供するように構成される。本方法は、第2のデータ要素を表すコンポーネントを生成することも含む。本方法は、コンピュータプログラムの少なくとも一部の第2のバージョンを生成することも含む。コンピュータプログラムの第2のバージョンは、識別されたデータ処理要素を含む。コンピュータプログラムの第2のバージョンは、コンピュータプログラムの第2のバージョン内の識別されたデータ処理要素が、i)生成されたコンポーネントからデータを受信するか、又はii)生成されたコンポーネントにデータを提供するように、生成されたコンポーネントを含む。
実装形態は、以下の特徴のうちの1つ又は複数を含むことができる。
幾つかの実装形態では、本方法は、コンピュータプログラムの第1のバージョンを受信することも含む。
幾つかの実装形態では、コンピュータプログラムの少なくとも一部の第2のバージョンを生成することは、コンピュータプログラムの一部のコピーを生成することを含む。
幾つかの実装形態では、本方法は、生成されたコンポーネントを含むように、コンピュータプログラムの一部のコピーを変更することも含む。
態様は、以下の利点のうちの1つ又は複数を含むことができる。
コード生成の開始時、定義された挿入に対応するオブジェクトが作成され得、且つ挿入を定義するオーバーレイ仕様とはグラフを別個に保ちながら、通常のコンポーネントとしてグラフに追加され得る。したがって、開発者は、元のグラフを不注意で破損するリスクを回避しながら、グラフを変更し、デバッグすることができる。
更に、グラフを編集する許可を有さない開発者は、挿入を使用してグラフを変更することができる。
本発明の他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになる。
グラフの例である。 オーバーレイ仕様の例である。 シングル実行モードで挿入定義を実行する例示的なシステムを示す。 挿入コンポーネントを含むグラフの例である。 挿入コンポーネントを含むグラフの例である。 挿入コンポーネントを含むグラフの例である。 挿入コンポーネントを含むグラフの例である。 状態保存モードで挿入定義を実行する例示的なシステムを示す。 グラフをデバッグするシステムのブロック図である。 例示的なグラフデバッグ手順のフローチャートである。
説明
グラフは、ある人物により書かれ、別の人物によりテストされ得る。グラフを完全にテストするために、試験者は、データがグラフを通って流れる際、データにアクセスする必要があり得る。例えば、試験者は、グラフのあるコンポーネントから別のコンポーネントに流れる際、データを検証することを望み得る。幾つかの実装形態では、試験者は、上流プロセスが正確に機能することを検証したが、下流プロセスの機能を依然として検証していないことがある。幾つかの実装形態では、上流プロセスは、実行に比較的長い時間がかかり得、非効率的なテストに繋がり得る。テスト効率は、試験者が、事前に検証された上流動作の実行を事前に検証されたデータで置換することができる場合、改善することができる。
従来の開発環境では、試験者は、通常、ウォッチポイントを追加するために又は上流コンポーネントを予め検証されたデータで置換するために、グラフを変更する必要がある。しかし、グラフが編集されると、試験者は、元のグラフの機能を変更していないことを確信することができない。幾つかの環境では、試験者は、グラフを編集するのに必要な許可を有していないことがある。
グラフベースのプロセスは、グラフとは別個のオーバーレイファイル(例えば、オーバーレイ仕様)を使用してデバッグし、テストすることができる。オーバーレイ仕様は、1つ又は複数の挿入を定義する別個のファイルであることができる。挿入は、グラフのフローに関連付けられたコンポーネントにより提示することができる。挿入に対応するコンポーネントは、プローブ又はテストソースであることができる。プローブは、グラフが実行される際、コンポーネント間を渡るデータをモニタすることができ、後に検査又は再使用するためにデータを保存させることができる。テストソースは、データをグラフのコンポーネントに提供することができ、それにより、例えば、グラフの各実行で上流コンポーネントを返す必要がない。
オーバーレイ仕様において定義される挿入に対応するコンポーネントは、元のグラフの一部になることなく、グラフに含めることができる。元のグラフがコンパイルされる際、コンパイラは、オーバーレイファイルを考慮し、挿入(本明細書では、挿入コンポーネントと呼ばれることもある)に対応するコンポーネントを含む第2のグラフを生成する。第2のグラフ(例えば、図4a〜図4dに示されるグラフ400a〜400d)は、元のグラフのコンポーネント又はフローの少なくとも幾つかに対応するコンポーネント及びフローを含む。第2のグラフは、オーバーレイ仕様において定義される挿入に対応するコンポーネントも含む。第2のグラフは、元のグラフ100の第2のバージョン又は元のグラフ100のコピーであり得る。幾つかの実装形態では、第2のグラフを生成することは、元のグラフ100の少なくとも一部のコピーを生成し、挿入に対応する1つ又は複数のコンポーネントを含むようにコピーを変更することを含む。幾つかの実装形態では、第2のグラフはシェルスクリプトであり、ファイルに記憶されない。幾つかの実装形態では、第2のグラフ及び第1のグラフは、別個のファイルに記憶される。
挿入コンポーネントの第2のグラフへの組み込みがデバッグ中の元のグラフを変更しないことに留意することが重要である。代わりに、挿入定義は、別個のファイル(例えば、別個のオーバーレイ仕様)に留まり、コード生成開始時、第2のグラフに含めるために通常のグラフコンポーネントになることができる。したがって、デバッグ中、元のグラフを不注意で破損するリスクがない。
図1は、デバッグ又はテストされ得るグラフ100の例を示す。グラフ100は、フローで接続されたデータ処理コンポーネントを含む。1つ又は複数のデータレコードを含むデータセット102は、フィルタコンポーネント103に接続される。2つのコンポーネント間の接続は、第1のコンポーネント(この例では、データセット102)からの出力レコードが第2のコンポーネント(この例では、フィルタコンポーネント103)に渡されることを示す。一般に、フィルタコンポーネントは、所定の基準を満たさないレコードをフィルタリング又は除去する。例えば、フィルタコンポーネント103は、オハイオ州に在住の顧客のデータレコードを渡し、他のレコードデータを拒絶する。フィルタコンポーネント103は、フィルタリングされたデータレコードをソートする(例えば、顧客に関連付けられた郵便番号により)ソートコンポーネント104に接続される。ソートコンポーネント104は、データレコードのコピーを作成する複製コンポーネント106に接続され、それにより、データレコードのコピーを2つの異なる方法で処理することができる。複製コンポーネントは、リフォーマットコンポーネント108及び式によるフィルタコンポーネント110に接続される。例えば、郵便番号によりソートされた、オハイオ州に在住の顧客のデータレコードのあるインスタンスは、リフォーマットコンポーネント108に送られ、データレコードの別のインスタンスは、式によるフィルタコンポーネント110に送られる。リフォーマットコンポーネント108は、データレコードのフォーマットを異なるデータフォーマットに変更し、式によるフィルタコンポーネント110は、データレコードに関連付けられた式に基づいて、データレコードを削除する。リフォーマットコンポーネント108及び式によるフィルタコンポーネント110は、受け取ったデータレコードを結合する収集コンポーネント312に接続され、収集コンポーネントは、出力データシンクコンポーネント114(例えば、データベース)に接続される。グラフ100は、コンポーネント間に複数のフローを含むが、複製−リフォーマットフロー116及び収集−出力データシンクフロー118が、この例では特に興味深いものである。
グラフ100の試験者は、グラフ100の機能を検証するために、グラフ100をデバッグすることを望み得る。例えば、試験者は、データがあるコンポーネントから別のコンポーネントに流れる際、データをモニタし、検証することを望み得る。代替的に、試験者は、グラフ100内の1つ又は複数の上流コンポーネントを実行せず、代わりに、上流コンポーネントを実行した場合に上流コンポーネントからデータを受け取るコンポーネント(例えば、下流コンポーネント)にデータを提供することを望み得る。そうするときに、様々な理由でグラフを変更しないことが望ましいことがある。例えば、試験者は、グラフの機能を破損するリスクをとりたくないことがある。幾つかの実装形態では、試験者は、グラフへのアクセスが制限されているか、又はアクセスできないことがある(例えば、試験者は、グラフの編集に必要な許可を有さないことがある)。
オーバーレイは、テスト目的で使用することができる第2のグラフに含められる挿入コンポーネントの生成に使用することができる。図2は、オーバーレイを定義するオーバーレイ仕様200の例を示す。オーバーレイ仕様200は、グラフを記憶するファイルとは別個であり得るファイルに記憶することができる。オーバーレイ仕様は、1つ又は複数の挿入を定義する。グラフがコンパイルされるとき、挿入に対応するコンポーネントを生成し、元のグラフの一部になることなく、第2のグラフに追加することができる。第2のグラフは、元のグラフのコンポーネント及びフローの少なくとも幾つかに対応するコンポーネント及びフローも含む。第2のグラフ内の各挿入コンポーネントは、元のグラフのフローに関連付けられる。挿入コンポーネントは、プローブ又はテストソースであることができる。
プローブ
幾つかの実装形態では、プローブは、データが第2のグラフのコンポーネント間を渡る際、データをモニタする。例えば、データをモニタし、後の検査のために保存し、又は第2のグラフの実行時に再使用するために保存することができる。オーバーレイ仕様200は、元のグラフの特定のフローに関連付けられたプローブを定義することができる。第2のグラフは、元のグラフのこの特定のフローに対応するフローを含むことができる。第2のグラフは、特定のフローに関連付けられた元のグラフのコンポーネントに対応するコンポーネントを含むこともできる。第2のグラフ内のフローは、プローブによりモニタされ、ときには保存もされるコンポーネント間のデータの流れを表す。プローブは、特定の値を報告するか、又は特定の値が所定の範囲内若しくは範囲外であるとき、報告するように構成することができる。プローブによりモニタされるデータは、後の分析又は使用のために保存され得る。幾つかの実装形態では、データは、フラットファイル又は関係データベースに記憶することができる。
テストソース
幾つかの実装形態では、特定のポイント(例えば、特定のコンポーネントの位置)までの元のグラフの実行結果は、事前に検証されていることがある。そのような場合、元のグラフが実行されるたびに、上流コンポーネントが機能を再処理することは非効率的であり得る。オーバーレイ仕様200は、元のグラフの特定のフローに関連付けられたテストソースを定義することができる。第2のグラフは、元のグラフのこの特定のフローに対応するフローを含むことができる。第2のグラフは、特定のフローに関連付けられた元のグラフのコンポーネントに対応するコンポーネントを含むこともできる。テストソースは、特定のフローに関連付けられた元のグラフのコンポーネントに対応する第2のグラフ内のコンポーネントにデータ(例えば、事前に検証されたデータ)を提供することができる。幾つかの実装形態では、テストソースは、事前に保存されたデータを下流コンポーネントに渡すように構成することができる。このようにして、事前に実行されたグラフのセクション全体が迂回され得る。
図2を参照すると、オーバーレイ仕様200は、1つ又は複数の挿入定義を含むことができる。この例では、オーバーレイ仕様200は、1つのテストソース定義201及び1つのプローブ定義213を含む。オーバーレイ仕様200は、挿入定義が対応することができるグラフを指定する3ラインヘッダで開始される。ヘッダはテストソース定義201に続き、テストソース定義201は、名称202、上流ポート204、下流ポート206、挿入タイプ208、プロトタイプパス210、及びレイアウトパラメータ212を含む。
テストソース定義201の上流ポート204は、グラフ100内のポート、特に、複製コンポーネント106の出力を参照する。下流ポート206は、リフォーマットコンポーネント108の入力をポイントする。したがって、第2のグラフが実行されるとき、テストソースは、グラフ100のリフォーマットコンポーネント108に対応するコンポーネントにデータを提供する。
挿入タイプ208は、挿入がテストソースであるか、それともプローブであるかを定義する。値「0」はテストソースを定義し、値「1」はプローブを定義する。この挿入はテストソースであるため、挿入タイプ208の値は「0」である。
プロトタイプパス210は、挿入のタイプを示す。この例では、この挿入はテストソースであるため、プロトタイプパス210は入力ファイルコンポーネントを指定する。プロトタイプパス210は、特定のタイプの挿入を定義するコードを含むファイルをポイントする。レイアウトパラメータ212は、テストソースが提供するデータを含むソースファイルの場所を定義する。幾つかの実装形態では、場所はファイルパスである。テストソースが第2のグラフに含まれるとき、ソースファイル内のデータは、リフォーマットコンポーネント108の入力に提供される。
幾つかの実装形態では、ソースファイル内のデータは、グラフ100の通常実行中、コンポーネント間を渡るデータと同じであり得る。しかし、第2のグラフにおいてテストソースを使用してデータを提供することにより、第2のグラフの上流コンポーネントを処理しなくてもよい。例えば、複製コンポーネント106等の上流コンポーネントは、データの処理に大量のシステムリソースを必要とし得るか、又はグラフ内の他のコンポーネントと比較してデータの処理に比較的長い時間がかかり得る。したがって、既知のデータ(例えば、グラフ100の通常実行中、コンポーネント間を渡るデータと同じデータ)を第2のグラフのコンポーネントに提供して、時間を節減するか、又はシステムリソースを保存することができる。
テストソース定義201の後、プローブ定義213が続き、プローブ定義213は、名称214、上流ポート216、下流ポート218、挿入タイプ220、及びプロトタイプパス222を含む。
プローブ定義213の上流ポート216は、グラフ100内のポート、特に、収集コンポーネント112の出力を参照する。プローブ定義213の下流ポート218は、出力データシンクコンポーネント114の入力を参照する。したがって、第2のグラフが実行されるとき、プローブは、収集コンポーネント112に対応する第2のグラフのコンポーネントの出力と、出力データシンクコンポーネント114に対応する第2のグラフのコンポーネントの入力との間を渡るデータをモニタする。
プローブ定義213の挿入タイプ220は、挿入がテストソースであるか、それともプローブであるかを定義する。値「1」はプローブを定義する。この挿入はプローブであるため、挿入タイプ220の値は「1」である。
プロトタイプパス222は、挿入のタイプを示す。この例では、この挿入はプローブであるため、プロトタイプパス222は出力ファイルコンポーネントを指定する。プロトタイプパス222は、特定のタイプの挿入を定義するコードを含むファイルをポイントする。
幾つかの実装形態では、プローブによりモニタされるデータは、システムにより自動的に作成されるファイルに記憶される。ファイルは、システムにより自動的に決定される場所に記憶することができる。幾つかの実装形態では、データは、記憶される前にモニタすることができる。
上述したように、コンパイラは、元のグラフをコンパイルして、第2のグラフを生成する間、オーバーレイ仕様200を考慮する。コンパイラは、オーバーレイ仕様200を入力として受け入れ得る。オーバーレイ仕様200において定義される挿入に対応する1つ又は複数のコンポーネントが生成され、第2のグラフに含められる。生成された各挿入コンポーネントは、オーバーレイ仕様200に含まれる挿入定義に対応する。挿入コンポーネントは、元のグラフ100のコンポーネント及びフローの少なくとも幾つかに対応するコンポーネント及びフローと共に、第2のグラフ(例えば、図4a〜図4dのグラフ400a〜400d)に含めることができる。挿入コンポーネントは、1つ又は複数の有向フローにより他のコンポーネント又は他の挿入コンポーネントに接続され得る。オーバーレイ仕様200又はオーバーレイ仕様を記憶したファイルは、グラフ100を含むファイルとは別個のままである。
オーバーレイ仕様において定義される挿入コンポーネントは、少なくとも2つのモード:シングル実行モード及び状態保存モードのうちの一方を使用して実行することができる。
シングル実行モード
図3は、シングル実行モードで挿入コンポーネントを実行する例示的なシステムを示す。この例では、クライアント302が、グラフ304と、挿入を定義するオーバーレイファイル306(例えば、オーバーレイ仕様)とを生成又は参照する。例えば、オーバーレイファイル306は、図2のオーバーレイ仕様200であり得る。グラフ304は、コンパイラ308によりコンパイルされる。コンパイラ308は、オーバーレイファイル306を考慮し、オーバーレイファイル306により定義される挿入コンポーネントを含む第2のグラフを作成する。次に、第2のグラフを実行することができる。幾つかの実装形態では、コンパイル及び実行は同時に行われる。第2のグラフを再び実行すべき場合、このプロセスを繰り返さなければならない。すなわち、グラフ304を再指定し、再コンパイルする必要があり、第2のグラフを再実行する必要がある。
図4a〜図4dは、1つ又は複数の挿入コンポーネントを含むグラフ400a〜400dの例を示す。グラフ400a〜400dは、上述した第2のグラフの例であり得る。第2のグラフは、元のグラフ100の第2のバージョンであることができる。これらの例では、図1のグラフ100は、コンパイルされて、挿入を含むグラフ400a〜400dの1つを作成する。挿入は、図2のオーバーレイ仕様200において定義される。図4aでは、グラフ400aはテストソース挿入422を含む。図4bでは、グラフ400bはプローブ挿入420を含む。図4cでは、グラフ400cは、テストソース挿入422及びプローブ挿入420の両方を含む。テストソース挿入422は、テストソース定義201に対応することができ、プローブ挿入420は、プローブ定義213に対応することができる。
グラフ400a〜400dは、元のグラフ100のコンポーネント及びフローの少なくとも幾つかに対応するコンポーネント及びフローも含む。幾つかの実装形態では、第2のグラフの対応するコンポーネント及びフローは、元のグラフ100内のそれぞれの相手方と同じ又は同様の属性を有し得る。幾つかの実装形態では、対応するコンポーネント及びフローは、元のグラフ100内のそれぞれの相手方と同一である。例えば、元のグラフ100のソートコンポーネント104は、グラフ400aのソートコンポーネント404の第2のインスタンスであり得る。
これらの例では、挿入コンポーネントは、コンパイラがグラフ100をコンパイルしたとき、生成された。図4a〜図4dは、挿入コンポーネントを含むグラフ400a〜400dを示すが、元のグラフ100は変わらないままである。
図4a及び図4cを参照すると、プローブ挿入420が、収集コンポーネント412の出力から出力データシンクコンポーネント414の入力へのデータの流れを表すフロー418に位置する。フロー418、収集コンポーネント412、及び出力データシンクコンポーネント414は、図1の元のグラフ100のフロー118、収集コンポーネント112、及び出力データシンクコンポーネント114にそれぞれ対応する。プローブ挿入420の場所は、プローブ定義213(図2に示される)において定義される上流ポート216及び下流ポート218に基づく。グラフ400a、400cが実行される場合、収集コンポーネント412から出力データシンクコンポーネント414に流れるデータは、プローブ挿入420によりモニタされる。幾つかの実装形態では、データはまた、プローブ挿入420により、システムにより自動的に作成されるファイルに記憶される。上述したように、第2のグラフを再び実行する場合、グラフを再指定し、再コンパイルする必要があり、第2のグラフを再実行する必要がある。第2のグラフを再び実行する場合、プローブ挿入420にデータが投入される。
図4b及び図4cを参照すると、テストソース挿入422が、リフォーマットコンポーネント408の入力へのデータの流れを表すフロー416に位置する。フロー416及びリフォーマットコンポーネント408は、図1の元のグラフ100のフロー116及びリフォーマットコンポーネント108にそれぞれ対応する。テストソース挿入422の場所は、テストソース定義において定義される上流ポート204及び下流ポート206に基づく。グラフ400b、400cが実行される場合、テストソース定義201においてレイアウトパラメータ212により識別されるソースファイルからのデータは、リフォーマットコンポーネント408に流れる。このデータは、式によるフィルタコンポーネント410から流れるデータと共に、収集コンポーネント412に流れる。収集コンポーネント412から流れるデータは、最終的に出力データシンク414に記憶され、出力データシンク414はデータベースであり得る。
幾つかの実装形態では、試験者は、データを出力データシンク414等のデータベースに書き込まずに、プローブ挿入420を使用してデータをモニタすることを望み得る。例えば、試験者は、データベースを損なうリスクなしで、実験データを使用してグラフをテストすることを望み得る。図4dを参照すると、グラフ400dは、テストソース挿入422及びプローブ挿入420の両方を含む。グラフ400dが実行される場合、テストソース定義201内のレイアウトパラメータ212により識別されるソースファイルからの実験データは、リフォーマットコンポーネント408に流れる。このデータは、式によるフィルタコンポーネント410から流れるデータと共に、収集コンポーネント412に流れる。収集コンポーネント112から流れるデータは、プローブ挿入420によりモニタされる。幾つかの実装形態では、データはまた、プローブ挿入420により、システムにより自動的に作成されるファイルに記憶される。
状態保存モード
図5は、状態保存マネージャ508を用いて状態保存モードで挿入コンポーネントを実行する例示的なシステムを示す。この例では、クライアント502は、グラフ504と、挿入を定義するオーバーレイファイル506(例えば、オーバーレイ仕様)とを生成又は参照する。例えば、グラフ504は図1のグラフ100であり得、オーバーレイファイル506は、図2のオーバーレイ仕様200であり得る。状態保存リポジトリ510は、状態保存マネージャ508及びコンパイラ512により管理される。状態保存マネージャ508は、状態保存データが状態保存リポジトリ510内のいずれの場所に配置されているかを識別することもできる。グラフ504は、コンパイラ512によりコンパイルされる。コンパイラ512は、オーバーレイファイル506を考慮し、オーバーレイファイル506により定義される挿入コンポーネントを含む第2のグラフを作成する。次に、第2のグラフを実行することができる。幾つかの実装形態では、コンパイル及び実行は同時に行われる。
状態保存モードは、状態保存モードでは、実行間で情報を保存しながら、第2のグラフを複数回にわたって実行可能であるという点で、シングル実行モードと異なる。例えば、図4a〜4dを参照すると、挿入コンポーネントが状態保存モードを使用して実行された場合、第2のグラフの初回の実行でデータ投入されたプローブ挿入420に、2回目の実行中、再びデータ投入する必要がないことがある。幾つかの実装形態では、プローブ挿入420は、2回目の実行において、テストソースに内部変換することができる。換言すれば、プローブ挿入420が第2のグラフの初回の実行でデータ投入されるため、プローブ挿入420は、投入されたデータを第2のグラフのコンポーネント(例えば、図4a及び図4cの出力データシンクコンポーネント414)に提供することができる。
状態保存マネージャ508は、状態保存マネージャディレクトリに存在することができ、保存された状態を管理する。状態保存リポジトリ510に保存することができる情報の例としては、特に、プローブに関連する情報、テストソースに関連する情報、オーバーレイファイル506に関連する情報、及びグラフコンポーネントに関連付けられたパラメータ(例えば、属性)が挙げられる。
幾つかの実装形態では、グラフが実行される場合、グラフの特定の部分のみが実行される(例えば、グラフの特定のコンポーネントのみが実行される)。幾つかの実装形態では、グラフの全てよりも少数のコンポーネントが実行される。グラフが挿入コンポーネントを含む(例えば、図4a〜図4dのグラフ400a〜400d内に)実装形態では、グラフは、動作が挿入コンポーネントに影響を及ぼすコンポーネントのみを実行し得る。例えば、グラフは、データをプローブに提供するコンポーネントを含むグラフの部分のみを実行し得る。幾つかの実装形態では、プローブから下流にあるコンポーネントは、実行する必要がなくてよい。
幾つかの実装形態では、プローブは、グラフの初回実行時にデータ投入される。実行の間、グラフコンポーネントのうちの1つ又は複数のパラメータが変更され得る。コンポーネントのパラメータは、コンポーネントがどのように動作するかを定義する。コンポーネントに関連付けられたパラメータを追跡することにより、コンパイラ512は、パラメータの変更がコンポーネント内でいつ発生したかを特定することができる。最後の値のテーブルが、グラフコンポーネントに関連付けられたパラメータを追跡する。グラフが実行される場合、最後の値のテーブルは、コンポーネントの現在パラメータと比較されて、実行間に任意のパラメータが変更されたか否かを判断する。パラメータ変更が生じた場合、その変更は、プローブにより記憶されているデータに影響を及ぼすこともあれば、又は及ぼさないこともある。コンパイラ512は、コンポーネントへの変更が、グラフの次の実行時、プローブにより記憶されることになるデータに影響を及ぼすか否かを判断する。プローブにより記憶されることになるデータが、変更により影響を受ける場合、変更されたコンポーネント及び変更されたコンポーネントからデータを受信するコンポーネントは、グラフの次の実行中に再実行され得る。換言すれば、変更されたコンポーネントからデータを受信し、データをプローブに提供する(直接又は間接的に)特定のコンポーネントは、変更されたコンポーネントがその特定のコンポーネントの実行に影響を及ぼし、その特定のコンポーネントがプローブにより記憶されるデータに影響を及ぼす場合、再実行され得る。幾つかの実装形態では、プローブにより記憶されることになるデータが変更により影響を受けない場合、いずれのコンポーネントも再実行の必要はなくてよい。
図6は、上述した技法を使用することができる例示的なデータ処理システム600を示す。システム600は、記憶デバイス又はオンラインデータストリームへの接続等のデータの1つ又は複数のソースを含み得るデータソース602を含み、各ソースは、様々なフォーマットのいずれか(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット)でデータを記憶又は提供し得る。実行環境604及び開発環境618は、例えば、あるバージョンのUNIXオペレーティングシステム等の適するオペレーティングシステムの制御下で、1つ又は複数の汎用コンピュータでホストされ得る。例えば、実行環境604は、ローカルで(例えば、対称マルチ処理(SMP)コンピュータ等のマルチプロセッサシステム)、ローカルに分散して(例えば、クラスタとして結合された複数のプロセッサ若しくは超並列処理(MPP)システム、リモートで、リモートに分散して(例えば、ローカルエリアネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合された複数のプロセッサ)、又はそれらの任意の組合せで、複数の中央演算処理装置(CPU)又はプロセッサコアを使用するコンピュータシステムの構成を含むマルチノード並列計算環境を含むことができる。
実行環境604は、データをデータソース602から読み取り、出力データを生成する。データソース602を提供する記憶デバイスは、実行環境604にローカル、例えば、実行環境604をホストするコンピュータ(例えば、ハードドライブ608)に接続された記憶媒体に記憶されてもよく、又は実行環境604にリモート、例えば、リモート接続(例えば、クラウド計算基盤により提供される)を介して実行環境604をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム610)でホストされてもよい。データソース602は、テストソース定義(例えば、図2のテストソース定義201)において定義されるデータを含み得る。すなわち、テストソース定義201のレイアウトパラメータ212は、データソース602内のソースファイルの場所をポイントし得る。
出力データは、データソース602に再び記憶してもよく、実行環境604にアクセス可能なデータ記憶システム616に記憶してもよく、又は他の方法で使用されてもよい。データ記憶システム616は、開発者620がグラフを開発し、デバッグし、テストすることが可能な開発環境618にもアクセス可能である。開発環境618は、幾つかの実装形態では、頂点間の有向フロー(作業要素、すなわちデータの流れを表す)により接続される頂点(データ処理コンポーネント又はデータセットを表す)を含むグラフとして、アプリケーションを開発するシステムである。例えば、そのような環境は、“Managing Parameters for Graph-Based Applications”という名称の米国特許出願公開第2007/0011668号により詳細に記載されており、これは参照により本明細書に援用される。そのようなグラフベースの計算を実行するシステムは、“EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS”という名称の米国特許第5,966,072号に記載されており、これは参照により本明細書に援用される。このシステムにより作られたグラフは、情報をプロセス間で移動させるため、及びプロセスの実行順序を定義するために、グラフコンポーネントにより表された個々のプロセス内に情報を入れると共に、個々のプロセスから情報を出す方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信方法を選択するアルゴリズムを含む(例えば、グラフのフローに従った通信パスは、TCP/IP若しくはUNIXドメインを使用することができるか、又はプロセス間でデータを渡すために共有メモリを使用することができる)。
開発環境618は、ソースコードを記憶するコードリポジトリ622を含む。ソースコード及びオーバーレイ仕様(例えば、図2のオーバーレイ仕様220)は、例えば、ユーザインタフェースを通して開発環境にアクセスすることができる開発者620により開発され得る。幾つかの実装形態では、グラフ及びオーバーレイ仕様は、コードリポジトリ622に記憶することができる。幾つかの実装形態では、グラフはコードリポジトリ622に記憶され、オーバーレイ仕様は、別個のオーバーレイリポジトリ624に記憶される。
コードリポジトリ622及びオーバーレイリポジトリ624のうちの一方又は両方は、コンパイラ626と通信し得る。コンパイラ626は、グラフを検索し(例えば、コードリポジトリ622から)、グラフをコンパイルして、実行可能グラフ628にすることができる。実行可能グラフの例としては、図4a〜図4dに示されるグラフ400a〜400dが挙げられる。実行可能グラフ628は、コードリポジトリ622から検索された元のグラフと別個であることができる。コンパイルの一環として、コンパイラ626は、オーバーレイ仕様を考慮することができる。コンパイラは、オーバーレイ仕様を入力として受け入れ得る。コンパイラは、オーバーレイ仕様において定義される挿入にそれぞれ対応する1つ又は複数のコンポーネントを生成するように構成される。実行可能グラフは、元のグラフのコンポーネント及びフローの少なくとも幾つかに対応するコンポーネント及びフローを含む。実行可能グラフは、生成された挿入コンポーネントも含む。
開発環境618は、実行可能グラフ628を実行するテスト実行環境630を含むことができる。グラフがコンパイラ626によりコンパイルされると、実行可能グラフ628を実行することができる。実行可能グラフ628の実行は、データ(例えば、作業要素又はデータレコード)がコンポーネント間を流れる際、実行可能グラフ628のコンポーネント、挿入、及び有向フローに関連付けられた計算を実行することを含むことができる。幾つかの実装形態では、テスト実行環境630は、コードリポジトリ622に記憶された元のグラフのソースコード又はオーバーレイリポジトリ624に記憶されたソースコードを変更せずに、実行可能グラフ628を実行する。テスト実行環境630には、開発環境618のインタフェースを通してアクセス可能であってもよく、又はテスト実行環境630はそれ自体のインタフェースを有してもよい。インタフェースは、実行に関連する情報を表示するように構成することができる。インタフェースは、挿入に関連する情報(例えば、プローブによりモニタされ保存されているデータ又はテストソースにより挿入中のデータ)を表示するように構成することもできる。テスト実行環境630では、開発者620は、実行可能グラフ628を複数回、実行し、実行間で実行可能グラフ628の態様を変更することが可能であり得る。
幾つかの実装形態では、開発者620は、図1のグラフ100をコードリポジトリ622から選択する。開発者620はまた、オーバーレイリポジトリ624から、図2のオーバーレイ仕様200も選択する。幾つかの実装形態では、オーバーレイ仕様200を選択する代わりに、開発者620は、オーバーレイリポジトリ624内の複数のオーバーレイ仕様から挿入定義を選択し得る。開発者620は、コンパイラ626にグラフをコンパイルするように命令する。コンパイルの一環として、コンパイラ626は、オーバーレイ仕様200を考慮し、実行可能グラフ628を作成する。実行可能グラフ628の例は、図4a〜図4dのグラフ400a〜400dであり、これらのグラフは、オーバーレイ仕様200において定義される挿入を含む。次に、実行可能グラフ628は、テスト実行可能環境630で実行される。
実行中又は実行後、開発者620は、実行可能グラフ628のコンポーネント、挿入、及びフローの実行に関連する情報を観測することができる。例えば、図4a〜図4dを手短に参照すると、開発者620は、プローブ挿入420によりモニタされ記憶されたデータが不正確又は予測外であることを観測し得る。開発者620は、オーバーレイリポジトリ624から、リフォーマットコンポーネント408から流れるデータをモニタするように構成されたプローブを定義するプローブ挿入定義と、式によるフィルタコンポーネント410から流れるデータをモニタするように構成されたプローブを定義するプローブ挿入定義とを選択し得る。開発者620は、これらの2つのプローブにより収集されたデータを分析して、リフォーマット408からのデータ出力又は式によりフィルタコンポーネント410からのデータ出力が、収集コンポーネント112から出力されるデータを不正確又は予測外にしているか否かを判断することができる。
この例を続けると、開発者620は、式によるフィルタコンポーネント410からのデータ出力が不正確又は予測外であると判断し得る。式によるフィルタコンポーネント410から上流に存在する全てのコンポーネント(例えば、フィルタコンポーネント403、ソートコンポーネント404、及び複製コンポーネント406)をデバッグして、不正確データの原因を特定するのではなく、開発者620は、代わりに、検証されたデータ(例えば、正確であると検証されたデータ)を収集コンポーネント412に提供することを選択し得る。開発者620は、オーバーレイリポジトリ624から、収集コンポーネント112にデータを提供するように構成されたテストソースを定義するテストソース挿入定義を選択することができる。この手法は、開発者620が式によるフィルタコンポーネント410から下流に位置するグラフ400a〜400dのコンポーネントのデバッグに関わる場合、適切であり得る。そのような手法は、グラフコンポーネントの反復実行を低減することにより、システムリソースを節減することができる。
幾つかの実装形態では、オーバーレイ仕様は、コードリポジトリ622又はオーバーレイリポジトリ624内にファイルとして永続的に記憶されない。むしろ、通常、オーバーレイファイルに含まれる情報(例えば、挿入定義)は、開発者620により開発され(例えば、ユーザインタフェースを通して)、メモリに一時的に記憶される。次に、オーバーレイ情報は、コンパイラ(例えば、図3の308)又は状態保存マネージャ(例えば、図5の508)に渡される。
図7は、デバッグ手順700を示すフローチャートである。第1のグラフ(例えば、図1のグラフ100)が受信される(702)。第1のグラフは、コンポーネント及びフローを含む。コンポーネントは、データレコードに対して実行される動作を表し、フローは、コンポーネント間のデータレコードの流れを表す。コンポーネントは、図1に示されるフィルタコンポーネント103、ソートコンポーネント104、複製コンポーネント106、リフォーマットコンポーネント108、式によるフィルタコンポーネント110、及び収集コンポーネント112を含み得る。フローは、複製−リフォーマットフロー116及び収集−出力データシンクフロー118を含むことができる。
1つ又は複数の挿入を定義する仕様(例えば、オーバーレイ仕様)が受信される(704)。仕様は、図2に示されるオーバーレイ仕様200であり得る。仕様は、1つ又は複数の挿入定義(例えば、テストソース定義201及びプローブ定義213)を含むことができる。挿入定義は、名称、上流ポート、下流ポート、挿入タイプ、プロトタイプパス、及びレイアウトパラメータを含むことができる(テストソース定義の場合)。各挿入は、第1のグラフのフローに関連付けられる。挿入はプローブ又はテストソースであることができる。
定義された挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントが生成される(706)。挿入コンポーネントの例としては、図4a〜図4dのテストソース挿入422及びプローブ挿入420が挙げられる。テストソース挿入422は、グラフ100の複製−リフォーマットフロー116に関連付けられ、プローブ挿入420は、グラフ100の収集−出力データシンクフロー118に関連付けられる。
第1のグラフのコンポーネント及びフローの少なくとも幾つかに対応するコンポーネント及びフローを含む第2のグラフが生成される。第2のグラフは、1つ又は複数の生成されたコンポーネントも含む。図4a〜図4dに示されるグラフ400a〜400dは、第2のグラフの例である。生成された各コンポーネントは、第1のグラフの特定のフローに関連付けられる。第2のグラフは、これらの特定のフローに対応するフローを含み、生成された各コンポーネントは、第2のグラフ内の対応する各フローに関連付けられる。例えば、グラフ400a〜400dを参照すると、テストソース挿入422は、図1の第1のグラフ100のフロー116に対応するフロー416に関連付けられる。テストソース挿入422は、第1のグラフ100のリフォーマットコンポーネント108に対応するリフォーマットコンポーネント408にデータを提供する。プローブ挿入420は、第1のグラフ100のフロー118に対応するフロー418に関連付けられる。プローブ挿入420は、第1のグラフ100の収集コンポーネント112に対応する収集コンポーネント412から渡されるデータをモニタする。第2のグラフは、第1のグラフ100を変更せずに生成され、実行される。
グラフ及びオーバーレイ仕様をコンパイルして、オーバーレイファイルにより定義される挿入を含む第2のグラフを作成することができるコンパイラ(例えば、図3のコンパイラ308及び図5のコンパイラ512)を説明したが、幾つかの実装形態では、グラフ及びオーバーレイ仕様はコンパイルされない。例えば、グラフ及びオーバーレイ仕様は、コンパイルされずに直接実行することができる。インタプリタは、機械コードに既にコンパイルされた1つ又は複数のサブルーチンのシーケンスに各ステートメントを変換することにより直接、グラフ及びオーバーレイ仕様を実行することができる。
プローブ及びテストソースの形態の挿入を説明したが、幾つかの実装形態では、挿入は他の形態をとることができる。挿入は、グラフの所与のポイントにデータを注入し、グラフの所与のポイントからデータをプルするために広く使用することができる。例えば、挿入は、グラフのフローを通して渡るデータの品質をモニタするように設計することができる。データ品質が閾値を下回る場合、ユーザは自動アラートを受信することができる。挿入の更なる説明は、米国特許出願第XYZ(代理人整理番号07470−0322001)に見出すことができ、これは参照により本明細書に援用される。
上述したデバッグ手法は、適したソフトウェアを実行する計算システムを使用して実施することができる。例えば、ソフトウェアは、少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び/又は不揮発性のメモリ及び/又は記憶要素を含む)、少なくとも1つのユーザインタフェース(少なくとも1つの入力デバイス又はポートを使用して入力を受信し、少なくとも1つの出力デバイス又はポートを使用して出力を提供する)をそれぞれ含む1つ又は複数のプログラムされた又はプログラム可能な計算システム(分散、クライアント/サーバ、又はグリッド等の様々なアーキテクチャのものであり得る)で実行される1つ又は複数のコンピュータプログラムでの手順を含み得る。ソフトウェアは、例えば、グラフの設計、構成、及び実行に関連するサービスを提供するより大きいプログラムの1つ又は複数のモジュールを含み得る。プログラム(例えば、グラフの要素)のモジュールは、データリポジトリに記憶されたデータモデルに準拠するデータ構造又は他の編成データとして実施することができる。
ソフトウェアは、CD−ROM若しくは他のコンピュータ可読媒体(例えば、汎用若しくは専用計算システム若しくはデバイスにより可読)等の有形の非一時的媒体で提供してもよく、又は実行される計算システムの有形の非一時的媒体にネットワークの通信媒体を介して送出(例えば、伝搬信号で符号化される)してもよい。処理の幾つか又は全ては、専用コンピュータで実行されてもよく、又はコプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、若しくは専用の特定用途向け集積回路(ASIC)等の専用ハードウェアを使用して実行してもよい。処理は、ソフトウェアにより指定された計算の異なる部分が異なる計算要素により実行される分散方式で実施され得る。そのような各コンピュータプログラムは、好ましくは、記憶デバイス媒体がコンピュータに読み取られた場合、本明細書に記載の処理を実行するようにコンピュータを構成し動作させるために、汎用又は専用プログラマブルコンピュータがアクセス可能な記憶デバイスのコンピュータ可読記憶媒体(例えば、固体状態メモリ若しくは媒体、又は磁気若しくは光学媒体)に記憶されるか、又はダウンロードされる。本発明のシステムは、コンピュータプログラムが構成された有形の非一時的媒体として実施されることも考慮し得、ここで、媒体は、本明細書に記載される処理ステップの1つ又は複数を実行するように、特定の予め定義された方式でコンピュータを動作させるように構成される。
本発明の幾つかの実施形態について説明した。それにもかかわらず、上記説明が本発明の範囲の限定ではなく、例示が意図され、本発明の範囲が以下の特許請求の範囲により規定されることを理解されたい。したがって、他の実施形態も以下の特許請求の範囲内にある。例えば、本発明の範囲から逸脱せずに、様々な変更形態がなされ得る。更に、上述したステップの幾つかは順序に依存せず、したがって、記載される順序と異なる順序で実行することができる。

Claims (23)

  1. コンポーネント及びフローを含む第1のグラフを受信することであって、前記コンポーネントは、データレコードに対して実行される動作を表し、前記フローは、コンポーネント間のデータレコードのフローを表す、受信することと、
    前記第1のグラフとは別個の仕様を受信することであって、前記仕様は、1つ又は複数の挿入を定義し、前記挿入のそれぞれは、前記第1のグラフのフローに関連付けられる、受信することと、
    前記挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成することと、
    前記第1のグラフの前記コンポーネント及びフローの少なくとも幾つかと、前記1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成することと
    を含む、方法。
  2. 前記生成されたコンポーネントの1つは、データレコードが前記第2のグラフのコンポーネント間を渡る際、前記データレコードに関連するデータをモニタするように構成されるプローブである、請求項1に記載の方法。
  3. 前記プローブは、前記1つ又は複数のデータレコードに関連する前記データを記憶するように構成される、請求項2に記載の方法。
  4. 前記生成されたコンポーネントの1つは、前記第2のグラフの前記コンポーネントの1つにデータを提供するように構成されるテストソースである、請求項1に記載の方法。
  5. 前記第2のグラフを実行することを更に含む、請求項1に記載の方法。
  6. 前記第2のグラフの全てよりも少数の前記コンポーネントが実行される、請求項5に記載の方法。
  7. 実行される前記第2のグラフの前記コンポーネントは、コンポーネントであって、その動作が前記生成されたオブジェクトの1つ又は複数に影響を及ぼす、コンポーネントを含む、請求項6に記載の方法。
  8. 前記生成されたコンポーネントの1つはプローブであり、及び実行される前記第2のグラフの前記コンポーネントは、データを前記プローブに提供するコンポーネントを含む、請求項7に記載の方法。
  9. 前記プローブの下流に存在する前記第2のグラフの1つ又は複数のコンポーネントは実行されない、請求項8に記載の方法。
  10. 前記生成されたコンポーネントの1つはテストソースであり、及び前記テストソースの上流に存在する前記第2のグラフの1つ又は複数のコンポーネントは実行されない、請求項7に記載の方法。
  11. 前記第2のグラフの前記コンポーネントの1つに関連付けられたパラメータを変更することと、
    前記変更されたコンポーネントが、実行時、前記生成されたコンポーネントのいずれかに影響を及ぼすか否かを判断することと、
    前記第2のグラフを再実行することと
    を更に含む、請求項5に記載の方法。
  12. 前記変更されたコンポーネントが、実行時、前記生成されたコンポーネントのいずれにも影響を及ぼさない場合、前記変更されたコンポーネントは再実行されない、請求項11に記載の方法。
  13. 前記生成されたコンポーネントの1つはプローブであり、及び前記変更されたコンポーネントは、前記プローブに関連付けられたフローの上流に存在する、請求項12に記載の方法。
  14. 前記第1のグラフ及び前記仕様は、別個のファイルに記憶される、請求項1に記載の方法。
  15. 前記第1のグラフ及び前記第2のグラフは、別個のファイルに記憶される、請求項1に記載の方法。
  16. 前記第2のグラフは、ファイルに記憶されないシェルスクリプトである、請求項1に記載の方法。
  17. 前記第2のグラフにおいて、前記生成されたコンポーネントの1つは、前記生成されたコンポーネントに関連付けられる前記フローからデータを受信する前記第1のグラフ内のコンポーネントに対応するコンポーネントにデータを提供する、請求項1に記載の方法。
  18. 前記第2のグラフにおいて、前記生成されたコンポーネントの1つは、前記生成されたコンポーネントに関連付けられる前記フローにデータを提供する前記第1のグラフ内のコンポーネントに対応するコンポーネントからデータを受信する、請求項1に記載の方法。
  19. 前記第2のグラフは、前記第1のグラフが変更されずに生成される、請求項1に記載の方法。
  20. 前記第2のグラフを生成することは、
    前記第1のグラフの少なくとも一部のコピーを生成することと、
    前記1つ又は複数の生成されたコンポーネントを含むように、前記第1のグラフの前記コピーを変更することと
    を含む、請求項1に記載の方法。
  21. 少なくとも1つのプロセッサと、
    コンポーネント及びフローを含む第1のグラフを受信する手段であって、前記コンポーネントは、データレコードに対して実行される動作を表し、前記フローは、コンポーネント間のデータレコードのフローを表す、手段と、
    前記第1のグラフとは別個の仕様を受信する手段であって、前記仕様は、1つ又は複数の挿入を定義し、前記挿入のそれぞれは、前記第1のグラフのフローに関連付けられる、手段と、
    前記挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成する手段と、
    前記第1のグラフの前記コンポーネント及びフローの少なくとも幾つかと、前記1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成する手段と
    を含む、システム。
  22. プロセッサを含み、前記プロセッサは、
    コードリポジトリから、コンポーネント及びフローを含む第1のグラフを受信すること
    であって、前記コンポーネントは、データレコードに対して実行される動作を表し、前記フローは、コンポーネント間のデータレコードのフローを表す、受信することと、
    ユーザインタフェースを通して、前記第1のグラフとは別個の仕様を受信することであって、前記仕様は、1つ又は複数の挿入を定義し、前記挿入のそれぞれは、前記第1のグラフのフローに関連付けられる、受信することと、
    前記挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成することと、
    前記第1のグラフの前記コンポーネント及びフローの少なくとも幾つかと、前記1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成することと
    を行うように構成される、コンピュータシステム。
  23. コンピュータプログラムを記憶するコンピュータ可読デバイスであって、前記コンピュータプログラムは、実行可能命令を含み、前記実行可能命令は、コンピュータに、
    コンポーネント及びフローを含む第1のグラフを受信することであって、前記コンポーネントは、データレコードに対して実行される動作を表し、前記フローは、コンポーネント間のデータレコードのフローを表す、受信することと、
    前記第1のグラフとは別個の仕様を受信することであって、前記仕様は、1つ又は複数の挿入を定義し、前記挿入のそれぞれは、前記第1のグラフのフローに関連付けられる、受信することと、
    前記挿入の1つにそれぞれ対応する1つ又は複数のコンポーネントを生成することと、
    前記第1のグラフの前記コンポーネント及びフローの少なくとも幾つかと、前記1つ又は複数の生成されたコンポーネントとに対応するコンポーネント及びフローを含む第2のグラフを生成することと
    を行わせる、コンピュータ可読デバイス。
JP2017524459A 2014-11-05 2015-11-05 グラフのデバッグ Active JP6674459B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462075466P 2014-11-05 2014-11-05
US62/075,466 2014-11-05
US14/715,904 2015-05-19
US14/715,904 US10055333B2 (en) 2014-11-05 2015-05-19 Debugging a graph
PCT/US2015/059280 WO2016073746A1 (en) 2014-11-05 2015-11-05 Debugging a graph

Publications (2)

Publication Number Publication Date
JP2018500642A JP2018500642A (ja) 2018-01-11
JP6674459B2 true JP6674459B2 (ja) 2020-04-01

Family

ID=55852873

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017524459A Active JP6674459B2 (ja) 2014-11-05 2015-11-05 グラフのデバッグ

Country Status (9)

Country Link
US (1) US10055333B2 (ja)
EP (1) EP3215948B1 (ja)
JP (1) JP6674459B2 (ja)
CN (1) CN107111545B (ja)
AU (1) AU2015343004B2 (ja)
CA (1) CA2966847C (ja)
HK (1) HK1244081A1 (ja)
SG (1) SG11201703674UA (ja)
WO (1) WO2016073746A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2010337218B2 (en) 2009-12-14 2015-09-24 Ab Initio Technology Llc Specifying user interface elements
US9811233B2 (en) 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US9880818B2 (en) 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
US10579753B2 (en) 2016-05-24 2020-03-03 Ab Initio Technology Llc Executable logic for processing keyed data in networks
US10936289B2 (en) 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US11055074B2 (en) * 2017-11-13 2021-07-06 Ab Initio Technology Llc Key-based logging for processing of structured data items with executable logic
CN109783089A (zh) * 2019-01-10 2019-05-21 北京智融网络科技有限公司 数据图表动态交互系统、方法、计算设备及可读存储介质
US20210149734A1 (en) * 2019-11-15 2021-05-20 Nvidia Corporation Techniques for modifying an executable graph to perform a workload associated with a new task graph
US20210191845A1 (en) 2019-12-23 2021-06-24 Ab Initio Technology Llc Unit testing of components of dataflow graphs
CA3233392A1 (en) 2021-10-08 2023-04-13 John Joyce Automated modification of computer programs

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05151371A (ja) * 1991-11-28 1993-06-18 Sanyo Electric Co Ltd データ駆動型計算機
JPH05265802A (ja) 1992-03-18 1993-10-15 Shimadzu Corp ソフトウェアデバッグ装置
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6102968A (en) 1998-05-21 2000-08-15 Lucent Technologies Inc. Method for automatically closing open reactive systems
US6813640B1 (en) 1998-12-08 2004-11-02 Macrovision Corporation System and method for controlling the editing by user action of digital objects created in a document server application
US6584601B1 (en) * 2000-02-07 2003-06-24 National Instruments Corporation System and method for converting graphical programs into hardware implementations which utilize probe insertion
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
EP1410215A4 (en) 2000-08-22 2006-10-11 Akamai Tech Inc COMPILING DYNAMIC CONTENT ON EDGE-OF-NETWORK SERVER IN A CONTENT DELIVERY NETWORK
FI114265B (fi) 2001-03-26 2004-09-15 First Hop Oy Menetelmiä ja järjestelyjä tehokkaan tiedonsiirron toteuttamiseksi nopeudeltaan rajoitetun tiedonsiirtolinkin yli
JP2002366356A (ja) * 2001-06-12 2002-12-20 Toshiba Corp ソフトウェア開発支援システム、その方法およびソフトウェア開発支援プログラム
US7139811B2 (en) 2001-08-01 2006-11-21 Actona Technologies Ltd. Double-proxy remote data access system
US7167580B2 (en) 2003-04-30 2007-01-23 Unisys Corporation Image quality assurance systems and methodologies for improving the identification of and access speed to image quality suspects in documents
US7849075B2 (en) 2003-09-15 2010-12-07 Ab Initio Technology Llc Joint field profiling
US7899833B2 (en) 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
GB0501153D0 (en) 2005-01-20 2005-03-02 Ibm System and method for subscription management in a messaging system
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
JP2007316884A (ja) 2006-05-25 2007-12-06 Hitachi Ltd 制御装置、制御方法、及び、制御プログラム
US8572236B2 (en) 2006-08-10 2013-10-29 Ab Initio Technology Llc Distributing services in graph-based computations
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8271943B2 (en) 2007-04-24 2012-09-18 National Instruments Corporation Automatically generating a graphical program with a plurality of models of computation
EP2191362B1 (en) 2007-09-20 2015-08-19 Ab Initio Technology LLC Managing data flows in graph-based computations
US7886050B2 (en) 2007-10-05 2011-02-08 Citrix Systems, Inc. Systems and methods for monitoring components of a remote access server farm
US8458727B2 (en) 2007-11-05 2013-06-04 Microsoft Corporation Asynchronous client to server updates
CN104679807B (zh) 2008-06-30 2018-06-05 起元技术有限责任公司 基于图的计算中的数据日志记录
WO2010096683A1 (en) 2009-02-20 2010-08-26 Citrix Systems, Inc. Systems and methods for intermediaries to compress data communicated via a remote display protocol
AU2010337218B2 (en) 2009-12-14 2015-09-24 Ab Initio Technology Llc Specifying user interface elements
US9552280B2 (en) 2010-05-13 2017-01-24 Microsoft Technology Licensing, Llc Visual analysis and debugging of complex event flows
JP5898188B2 (ja) * 2010-06-15 2016-04-06 アビニシオ テクノロジー エルエルシー グラフに基づく計算の動的ロード
US8726228B2 (en) * 2010-07-30 2014-05-13 National Instruments Corporation Developing programs in a graphical specification and constraint language
JP5521889B2 (ja) * 2010-08-19 2014-06-18 富士電機株式会社 プログラム自動生成装置
US8627296B1 (en) 2010-09-15 2014-01-07 Google Inc. Unified unit and integration test with automatic mock creation
EP2633398B1 (en) * 2010-10-25 2020-05-27 Ab Initio Technology LLC Managing data set objects in a dataflow graph that represents a computer program
US20120131559A1 (en) 2010-11-22 2012-05-24 Microsoft Corporation Automatic Program Partition For Targeted Replay
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9811233B2 (en) * 2013-02-12 2017-11-07 Ab Initio Technology Llc Building applications for configuring processes
US20140189650A1 (en) 2013-05-21 2014-07-03 Concurix Corporation Setting Breakpoints Using an Interactive Graph Representing an Application
CN103473075B (zh) * 2013-09-23 2017-02-08 迈普通信技术股份有限公司 代码变更控制系统及方法

Also Published As

Publication number Publication date
US20160124998A1 (en) 2016-05-05
EP3215948A1 (en) 2017-09-13
HK1244081A1 (zh) 2018-07-27
WO2016073746A1 (en) 2016-05-12
CA2966847C (en) 2021-03-02
EP3215948B1 (en) 2020-07-22
CA2966847A1 (en) 2016-05-12
US10055333B2 (en) 2018-08-21
AU2015343004A1 (en) 2017-05-25
SG11201703674UA (en) 2017-06-29
CN107111545B (zh) 2021-01-12
CN107111545A (zh) 2017-08-29
AU2015343004B2 (en) 2020-03-12
JP2018500642A (ja) 2018-01-11

Similar Documents

Publication Publication Date Title
JP6674459B2 (ja) グラフのデバッグ
JP7090778B2 (ja) 影響分析
US10705807B2 (en) Application testing
KR102292803B1 (ko) 계보 정보의 관리
US11347484B2 (en) Format-specific data processing operations

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181023

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191024

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200122

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200306

R150 Certificate of patent or registration of utility model

Ref document number: 6674459

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250