(57)【特許請求の範囲】
【請求項１】
第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示する方法であって、各データフローグラフは前記データフローグラフにより受信されるデータレコードを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す１つ又は複数のノードと部品間のデータレコードの流れを表す１つ又は複数のリンクとを含み、前記方法は、
前記第１のデータフローグラフと前記第２のデータフローグラフとの間の１つ又は複数の差異を特定するために前記第１の実行可能データフローグラフの仕様と前記第２の実行可能データフローグラフの仕様とをコンピュータにより比較することであって、
所与の実行可能データフローグラフの前記仕様は、前記データフローグラフにより処理されるデータレコードのソースをそれぞれが表す１つ又は複数のノードと、前記データレコードのソースからの前記データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す１つ又は複数のノードと、前記データフローグラフにより処理されるデータレコードの送信先をそれぞれが表す１つ又は複数のノードと、を規定し、前記データフローグラフは、実行されたとき、（１）前記データレコードのソースによって示されるデータソースからのデータレコードを受信及び処理し、及び（２）処理されたデータレコードを前記送信先によって示されるデータシンクに提供するように構成され、
前記第１のデータフローグラフと前記第２のデータフローグラフとの前記仕様の前記比較することは、
（１）前記第２のデータフローグラフのいかなるノードにも対応しない前記第１のデータフローグラフの特定ノードを特定することであって、前記特定された特定ノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定することと、
（２）前記第２のデータフローグラフのいかなるリンクにも対応しない前記第１のデータフローグラフの特定リンクを特定することであって、前記特定された特定リンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定することと、
（３）前記第２のデータフローグラフの第２のノードに対応する前記第１のデータフローグラフの第１のノードを特定することであって、前記特定された第１のノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定すること、及び前記第１のノードと前記第２のノードとの間の差異を特定することと、
（４）前記第２のデータフローグラフの第２のリンクに対応する前記第１のデータフローグラフの第１のリンクを特定することであって、前記特定された第１のリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定すること、及び前記第１のリンクと前記第２のリンクとの間の差異を特定することと、のうちの少なくとも１つを含む、前記比較することと、さらに前記コンピュータにより、
前記第１のデータフローグラフ又は前記第２のデータフローグラフの前記ノード又はリンクの少なくとも一部のグラフィック表現を定式化することであって、前記グラフィック表現は、（１）前記特定された特定ノード又はリンク、又は（２）前記第１のノード又はリンクと前記第２のノード又はリンクとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含む、定式化することと、
前記グラフィック表現をグラフ編集インターフェース内に表示することと、を含む方法。
【請求項２】
前記第１のデータフローグラフは特定データフローグラフの第１のバージョンであり、前記第２のデータフローグラフは前記特定データフローグラフの第２のバージョンである、請求項１に記載の方法。
【請求項３】
前記第１のノード又はリンクと前記第２のノード又はリンクとの間の差異を特定することは、前記第１のノード又はリンクの解決されたパラメータと前記第２のノード又はリンクの解決されたパラメータとの間の差異を特定することを含む、請求項１に記載の方法。
【請求項４】
前記第１のノード又はリンクと前記第２のノード又はリンクとの間の差異を特定することは、前記第１のノード又はリンクのパラメータの表現と前記第２のノード又はリンクのパラメータの表現との間の差異を特定することを含む、請求項１に記載の方法。
【請求項５】
前記グラフィック指標は前記グラフィック表現内の前記第１、第２、又は特定ノード又はリンクの色である、請求項１に記載の方法。
【請求項６】
前記グラフィック指標の前記色は前記第１のノード又はリンクと前記第２のノード又はリンクとの前記特定された差異のタイプを示す、請求項５に記載の方法。
【請求項７】
前記グラフィック指標は前記グラフィック表現内の前記第１、第２、又は特定ノード又はリンクのシェーディング又はフィルである、請求項１に記載の方法。
【請求項８】
前記グラフィック指標は前記第１、第２、又は特定ノード又はリンク近傍に位置するシンボルを含む、請求項１に記載の方法。
【請求項９】
前記グラフィック指標は前記グラフ編集インターフェースとのユーザ相互作用に応答する、請求項１に記載の方法。
【請求項１０】
前記グラフィック指標とのユーザ相互作用に応答する前記特定された差異を示す情報へのアクセスを可能にすることを含む、請求項９に記載の方法。
【請求項１１】
前記第１のデータフローグラフは第１のデータフローサブグラフを含み、前記第２のデータフローグラフは第２のデータフローサブグラフを含む、請求項１に記載の方法であって、
前記第１のデータフローサブグラフの仕様と前記第２のデータフローサブグラフの仕様とを比較することと、
この比較に基づき、前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の１つ又は複数の差異を特定することと、を含む方法。
【請求項１２】
前記グラフィック表現は前記第１のデータフローサブグラフの少なくとも一部分又は前記第２のデータフローサブグラフの少なくとも一部分のグラフィック表現を含み、前記グラフィック表現は前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含む、請求項１１に記載の方法。
【請求項１３】
前記グラフィック表現は、前記第１のデータフローグラフと前記第２のデータフローグラフとの間の前記特定された差異のうちの少なくとも１つと前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の前記特定された差異のうちの少なくとも１つとの階層的表示を含む、請求項１１に記載の方法。
【請求項１４】
前記第１のデータフローグラフの前記仕様と前記第２のデータフローグラフの前記仕様とを比較することは、前記第１のデータフローグラフにより参照される第１のファイルと前記第２のデータフローグラフにより参照される第２のファイルとを比較することを含む、請求項１に記載の方法。
【請求項１５】
前記グラフィック表現は前記第１のファイルと前記第２のファイルとの間の１つ又は複数の差異のグラフィック表現を含む、請求項１４に記載の方法。
【請求項１６】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、（１）前記第１のノード又はリンク及び前記第２のノード又はリンクの名前と、（２）前記第１のノード又はリンク及び前記第２のノード又はリンクの識別子とのうちの１つ又は複数に基づき前記第１のノードを特定することを含む、請求項１に記載の方法。
【請求項１７】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、前記第１のノード及び前記第２のノード内への又はそこからのデータレコードの流れと関連する情報に基づき前記第１のノードを特定することを含む、請求項１に記載の方法。
【請求項１８】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、前記第１のノード又はリンク及び前記第２のノード又はリンクの上流側又は下流側にあるノード又はリンクに基づき前記第１のノード又はリンクを特定することを含む、請求項１に記載の方法。
【請求項１９】
実行のための前記第１のデータフローグラフ及び前記第２のデータフローグラフを準備することと、
前記準備された第１及び第２のデータフローグラフの前記仕様を比較することと、を含む請求項１に記載の方法。
【請求項２０】
コンピュータに第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示させるための命令を格納する非一時的コンピュータ可読媒体であって、各データフローグラフは前記データフローグラフにより受信されるデータレコードを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す１つ又は複数のノードと部品間のデータレコードの流れを表す１つ又は複数のリンクとを含む、非一時的コンピュータ可読媒体において、
前記命令は、前記コンピュータに、前記第１のデータフローグラフと前記第２のデータフローグラフとの間の１つ又は複数の差異を特定するために前記第１の実行可能データフローグラフの仕様と前記第２の実行可能データフローグラフの仕様とを比較させ、
所与の実行可能データフローグラフの前記仕様は、前記データフローグラフにより処理されるデータレコードのソースをそれぞれが表す１つ又は複数のノードと、前記データレコードのソースからの前記データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す１つ又は複数のノードと、前記データフローグラフにより処理されるデータレコードの送信先をそれぞれが表す１つ又は複数のノードと、を規定し、前記データフローグラフは、実行されたとき、（１）前記データレコードのソースによって示されるデータソースからのデータレコードを受信及び処理し、及び（２）処理されたデータレコードを前記送信先によって示されるデータシンクに提供するように構成され、
前記第１のデータフローグラフと前記第２のデータフローグラフとの前記仕様の前記比較することは、
（１）前記第２のデータフローグラフのいかなるノードにも対応しない前記第１のデータフローグラフの特定ノードを特定することであって、前記特定されたノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定することと、
（２）前記第２のデータフローグラフのいかなるリンクにも対応しない前記第１のデータフローグラフの特定リンクを特定することであって、前記特定されたリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定することと、
（３）前記第２のデータフローグラフの第２のノードに対応する前記第１のデータフローグラフの第１のノードを特定することであって、前記特定された第１のノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定すること、及び、前記第１のノードと前記第２のノードとの間の差異を特定することと、
（４）前記第２のデータフローグラフの第２のリンクに対応する前記第１のデータフローグラフの第１のリンクを特定することであって、前記特定された第１のリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定すること、及び前記第１のリンクと前記第２のリンクとの間の差異を特定することと、のうちの少なくとも１つを含み、前記命令はさらに前記コンピュータに、
前記第１のデータフローグラフ又は前記第２のデータフローグラフの前記ノード又はリンクの少なくとも一部のグラフィック表現を定式化させ、前記グラフィック表現は、（１）前記特定された特定ノード又はリンク、又は（２）前記第１のノード又はリンクと前記第２のノード又はリンクとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含み、
前記命令はさらに前記コンピュータに、前記グラフィック表現をグラフ編集インターフェース内に表示させる、非一時的コンピュータ可読媒体。
【請求項２１】
第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示するためのシステムであって、各データフローグラフは前記データフローグラフにより受信されるデータレコードを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す１つ又は複数のノードと部品間のデータレコードの流れを表す１つ又は複数のリンクとを含む、システムにおいて、前記システムは、
前記第１のデータフローグラフと前記第２のデータフローグラフとの間の１つ又は複数の差異を特定するために前記第１の実行可能データフローグラフの仕様と前記第２の実行可能データフローグラフの仕様とを比較するように構成された１つ又は複数のプロセッサ及びメモリを含み：
所与の実行可能データフローグラフの前記仕様は、前記データフローグラフにより処理されるデータレコードのソースをそれぞれが表す１つ又は複数のノードと、前記データレコードのソースからの前記データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す１つ又は複数のノードと、前記データフローグラフにより処理されるデータレコードの送信先をそれぞれが表す１つ又は複数のノードと、を規定し、前記データフローグラフは、実行されたとき、（１）前記データレコードのソースによって示されるデータソースからのデータレコードを受信及び処理し、及び（２）処理されたデータレコードを前記送信先によって示されるデータシンクに提供するように構成され、
前記第１のデータフローグラフと前記第２のデータフローグラフとの前記仕様の前記比較することは、
（１）前記第２のデータフローグラフのいかなるノードにも対応しない前記第１のデータフローグラフの特定ノードを特定することであって、前記特定されたノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定することと、
（２）前記第２のデータフローグラフのいかなるリンクにも対応しない前記第１のデータフローグラフの特定リンクを特定することであって、前記特定されたリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定することと、
（３）前記第２のデータフローグラフの第２のノードに対応する前記第１のデータフローグラフの第１のノードを特定することであって、前記特定された第１のノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定すること、及び、前記第１のノードと前記第２のノードとの間の差異を特定することと、
（４）前記第２のデータフローグラフの第２のリンクに対応する前記第１のデータフローグラフの第１のリンクを特定することであって、前記特定された第１のリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定すること、及び前記第１のリンクと前記第２のリンクとの間の差異を特定することと、のうちの少なくとも１つを含み、前記プロセッサ及びメモリはさらに、
前記第１のデータフローグラフ又は前記第２のデータフローグラフの前記ノード又はリンクの少なくとも一部のグラフィック表現を定式化するように構成され、前記グラフィック表現は、（１）前記特定された特定ノード又はリンク、又は（２）前記第１のノード又はリンクと前記第２のノード又はリンクとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含み、
前記プロセッサ及びメモリはさらに、前記グラフィック表現をグラフ編集インターフェース内に表示するように構成される、システム。
【請求項２２】
第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示するための、１つ又は複数のプロセッサ及びメモリを含むシステムであって、各データフローグラフは前記データフローグラフにより受信されるデータレコードを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す１つ又は複数のノードと部品間のデータレコードの流れを表す１つ又は複数のリンクとを含む、システムにおいて、前記システムは、
前記第１のデータフローグラフと前記第２のデータフローグラフとの間の１つ又は複数の差異を特定するために前記第１の実行可能データフローグラフの仕様と前記第２の実行可能データフローグラフの仕様とを比較する手段を含み、
所与の実行可能データフローグラフの前記仕様は、前記データフローグラフにより処理されるデータレコードのソースをそれぞれが表す１つ又は複数のノードと、前記データレコードのソースからの前記データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す１つ又は複数のノードと、前記データフローグラフにより処理されるデータレコードの送信先をそれぞれが表す１つ又は複数のノードと、を規定し、前記データフローグラフは、実行されたとき、（１）前記データレコードのソースによって示されるデータソースからのデータレコードを受信及び処理し、及び（２）処理されたデータレコードを前記送信先によって示されるデータシンクに提供するように構成され、
前記第１のデータフローグラフと前記第２のデータフローグラフとの前記仕様の前記比較することは、
（１）前記第２のデータフローグラフのいかなるノードにも対応しない前記第１のデータフローグラフの特定ノードを特定することであって、前記特定されたノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定することと、
（２）前記第２のデータフローグラフのいかなるリンクにも対応しない前記第１のデータフローグラフの特定リンクを特定することであって、前記特定されたリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定することと、
（３）前記第２のデータフローグラフの第２のノードに対応する前記第１のデータフローグラフの第１のノードを特定することであって、前記特定された第１のノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定すること、及び、前記第１のノードと前記第２のノードとの間の差異を特定することと、
（４）前記第２のデータフローグラフの第２のリンクに対応する前記第１のデータフローグラフの第１のリンクを特定することであって、前記特定された第１のリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定すること、及び前記第１のリンクと前記第２のリンクとの間の差異を特定することと、のうちの少なくとも１つを含み、前記システムはさらに、
前記第１のデータフローグラフ又は前記第２のデータフローグラフの前記ノード又はリンクの少なくとも一部のグラフィック表現を定式化する手段であって、前記グラフィック表現は、（１）前記特定された特定ノード又はリンク、又は（２）前記第１のノード又はリンクと前記第２のノード又はリンクとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含む、手段と、
前記グラフィック表現をグラフ編集インターフェース内に表示する手段とを含む、システム。
【請求項２３】
実行可能データフローグラフの第１のバージョンと実行可能データフローグラフの第２のバージョンとの間の差異を表示する方法であって、前記データフローグラフは前記データフローグラフにより受信されたデータレコードを処理するように実行可能であり、前記データフローグラフの各バージョンはデータ処理部品を表す１つ又は複数のノードと部品間のデータレコードの流れを表す１つ又は複数のリンクとを含む、方法において、前記方法は、
データレコードを処理するために実行され得る１つ又は複数の操作を含むジョブの状態を統合コントロールシステムにより監視することであって、前記ジョブは前記実行可能データフローグラフの前記第１のバージョンに関連付けられる、監視することと、
前記ジョブの前記状態を示す情報の出力を可能にすることと、
前記統合コントロールシステム又は前記出力された情報とのユーザ相互作用に応答して、
前記実行可能データフローグラフの前記第２のバージョンを特定することと、
前記データフローグラフの前記第１のバージョンと前記データフローグラフの前記第２のバージョンとの間の１つ又は複数の差異を特定するために前記データフローグラフの前記第１のバージョンの仕様と前記データフローグラフの前記第２のバージョンの仕様とを比較することとを含む方法において、
所与の実行可能データフローグラフの前記仕様は、前記データフローグラフにより処理されるデータレコードのソースをそれぞれが表す１つ又は複数のノードと、前記データレコードのソースからの前記データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品をそれぞれが表す１つ又は複数のノードと、前記データフローグラフにより処理されるデータレコードの送信先をそれぞれが表す１つ又は複数のノードと、を規定し、前記データフローグラフは、実行されたとき、（１）前記データレコードのソースによって示されるデータソースからのデータレコードを受信及び処理し、及び（２）処理されたデータレコードを前記送信先によって示されるデータシンクに提供するように構成され、
前記データフローグラフの前記第１のバージョンと前記データフローグラフの前記第２のバージョンとの前記仕様の前記比較することは、
（１）前記データフローグラフの前記第２のバージョンのいかなるノードにも対応しない前記データフローグラフの前記第１のバージョンの第１のノードを特定することであって、前記特定された第１のノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定することと、
（２）前記データフローグラフの前記第２のバージョンのいかなるリンクにも対応しない前記データフローグラフの前記第１のバージョンの第１のリンクを特定することであって、前記特定された第１のリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定することと、
（３）前記データフローグラフの前記第１のバージョンのいかなるノードにも対応しない前記データフローグラフの前記第２のバージョンの第２のノードを特定することであって、前記特定された第２のノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定することと、
（４）前記データフローグラフの前記第１のバージョンのいかなるリンクにも対応しない前記データフローグラフの前記第２のバージョンの第２のリンクを特定することであって、前記特定された第２のリンクは、前記第２のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定することと、
（５）前記データフローグラフの前記第２のバージョンの第４のノードに対応する前記データフローグラフの前記第１のバージョンの第３のノードを特定することであって、前記特定された第３のノードは、データレコードを処理するために行われる操作を規定するように構成可能なデータ処理部品を表す、特定すること、及び、前記第３のノードと前記第４のノードとの間の差異を特定することと、
（６）前記データフローグラフの前記第２のバージョンの第４のリンクに対応する前記データフローグラフの前記第１のバージョンの第３のリンクを特定することであって、前記特定された第３のリンクは、前記第１のデータフローグラフのノードによって表される部品間のデータレコードの流れを表す、特定すること、及び、前記第３のリンクと前記第４のリンクとの間の差異を特定することと、のうちの少なくとも１つを含み、前記方法はさらに、
前記データフローグラフの前記第１のバージョンの前記ノード又はリンク又は前記データフローグラフの前記第２のバージョンの少なくとも一部のグラフィック表現を定式化することであって、前記グラフィック表現は、（１）前記特定された第１のノード又はリンク、（２）前記特定された第２のノード又はリンク、（３）前記第３のノード又はリンクと前記第４のノード又はリンクとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含む、定式化すること、を含む方法。
【請求項２４】
既に実行されたジョブは前記データフローグラフの前記第２のバージョンに関連付けられる、請求項２３に記載の方法。
【請求項２５】
前記グラフ表示は前記特定された差異のうちの１つ又は複数の差異の階層的表示を含む、請求項２３に記載の方法。
【請求項２６】
前記統合コントロールシステムのユーザインターフェース内の表示のための前記グラフィック表現を定式化することを含む請求項２３に記載の方法。
【請求項２７】
前記データフローグラフの前記第１のバージョンと前記データフローグラフの前記第２のバージョンとの間の差異を特定することは、前記データフローグラフの前記第１のバージョンの解決されたパラメータと前記データフローグラフの前記第２のバージョンの解決されたパラメータとの間の差異を特定することを含む、請求項２３に記載の方法。
【請求項２８】
前記データフローグラフの前記第１のバージョンと前記データフローグラフの前記第２のバージョンとの間の差異を特定することは、前記データフローグラフの前記第１のバージョンのパラメータの表現と前記データフローグラフの前記第２のバージョンのパラメータの表現との間の差異を特定することを含む、請求項２３に記載の方法。
【請求項２９】
前記データフローグラフの前記第１のバージョンと前記データフローグラフの前記第２のバージョンとの間の差異を特定することは、前記データフローグラフの前記第１のバージョンにより参照される第１のファイルと前記データフローグラフの前記第２のバージョンにより参照される第２のファイルとの間の差異を特定することを含む、請求項２３に記載の方法。
【請求項３０】
前記ジョブの前記状態を監視することは、前記ジョブの活動、前記ジョブの実際の開始時間、前記ジョブの推定開始時間、前記ジョブに関連する処理期間、及び前記ジョブのサイズのうちの１つ又は複数を監視することを含む、請求項２３に記載の方法。
【請求項３１】
前記ジョブの前記状態を監視することは前記ジョブが成功裡に完了したかどうかを判断することを含む、請求項２３に記載の方法。
【請求項３２】
アプリケーションの状態を監視することを含む請求項２３に記載の方法であって、前記ジョブは前記アプリケーションに関連付けられる、方法。
【請求項３３】
コンピュータ装置の状態を監視することを含む請求項２３に記載の方法であって、前記アプリケーションは前記コンピュータ装置によりホストされる、方法。
【請求項３４】
前記第１のノード又はリンクと前記第２のノード又はリンクとの間の差異を特定することは、前記第１のノード又はリンクの解決されたパラメータと前記第２のノード又はリンクの解決されたパラメータとの間の差異を特定することを含む、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項３５】
前記第１のノード又はリンクと前記第２のノード又はリンクとの間の差異を特定することは、前記第１のノード又はリンクのパラメータの表現と前記第２のノード又はリンクのパラメータの表現との間の差異を特定することを含む、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項３６】
前記グラフィック指標は前記グラフ編集インターフェースとのユーザ相互作用に応答する、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項３７】
前記命令は、前記コンピュータに前記グラフィック指標とのユーザ相互作用に応答する前記特定された差異を示す情報へのアクセスを可能にさせる、請求項３６に記載の非一時的コンピュータ可読媒体。
【請求項３８】
前記第１のデータフローグラフは第１のデータフローサブグラフを含み、前記第２のデータフローグラフは第２のデータフローサブグラフを含む、請求項２０に記載の非一時的コンピュータ可読媒体において、
前記命令は、前記コンピュータに、前記第１のデータフローサブグラフの仕様と前記第２のデータフローサブグラフの仕様とを比較させ、
この比較に基づき、前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の１つ又は複数の差異を特定させる、非一時的コンピュータ可読媒体。
【請求項３９】
前記グラフィック表現は前記第１のデータフローサブグラフの少なくとも一部分又は前記第２のデータフローサブグラフの少なくとも一部分のグラフィック表現を含み、前記グラフィック表現は前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含む、請求項３８に記載の非一時的コンピュータ可読媒体。
【請求項４０】
前記グラフィック表現は、前記第１のデータフローグラフと前記第２のデータフローグラフとの間の前記特定された差異のうちの少なくとも１つと前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の前記特定された差異のうちの少なくとも１つとの階層的表示を含む、請求項３８に記載の非一時的コンピュータ可読媒体。
【請求項４１】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、（１）前記第１のノード又はリンク及び前記第２のノード又はリンクの名前と、（２）前記第１のノード又はリンク及び前記第２のノード又はリンクの識別子とのうちの１つ又は複数に基づき前記第１のノードを特定することを含む、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項４２】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、前記第１のノード及び前記第２のノード内への又はそこからのデータレコードの流れと関連する情報に基づき前記第１のノードを特定することを含む、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項４３】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、前記第１のノード又はリンク及び前記第２のノード又はリンクの上流側又は下流側にあるノード又はリンクに基づき前記第１のノード又はリンクを特定することを含む、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項４４】
前記命令は、前記コンピュータに、実行のための前記第１のデータフローグラフ及び前記第２のデータフローグラフを準備させ、
前記準備された第１及び第２のデータフローグラフの前記仕様を比較させる、請求項２０に記載の非一時的コンピュータ可読媒体。
【請求項４５】
前記第１のノード又はリンクと前記第２のノード又はリンクとの間の差異を特定することは、前記第１のノード又はリンクの解決されたパラメータと前記第２のノード又はリンクの解決されたパラメータとの間の差異を特定することを含む、請求項２１に記載のシステム。
【請求項４６】
前記第１のノード又はリンクと前記第２のノード又はリンクとの間の差異を特定することは、前記第１のノード又はリンクのパラメータの表現と前記第２のノード又はリンクのパラメータの表現との間の差異を特定することを含む、請求項２１に記載のシステム。
【請求項４７】
前記グラフィック指標は前記グラフ編集インターフェースとのユーザ相互作用に応答する、請求項２１に記載のシステム。
【請求項４８】
前記１つ又は複数のプロセッサ及びメモリは、前記グラフィック指標とのユーザ相互作用に応答する前記特定された差異を示す情報へのアクセスを可能にするように構成される、請求項４７に記載のシステム。
【請求項４９】
前記第１のデータフローグラフは第１のデータフローサブグラフを含み、前記第２のデータフローグラフは第２のデータフローサブグラフを含む、請求項２１に記載のシステムであって、
前記１つ又は複数のプロセッサ及びメモリは、前記第１のデータフローサブグラフの仕様と前記第２のデータフローサブグラフの仕様とを比較し、
この比較に基づき、前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の１つ又は複数の差異を特定するように構成される、システム。
【請求項５０】
前記グラフィック表現は前記第１のデータフローサブグラフの少なくとも一部分又は前記第２のデータフローサブグラフの少なくとも一部分のグラフィック表現を含み、前記グラフィック表現は前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の前記特定された差異のうちの少なくとも１つのグラフィック指標を含む、請求項４９に記載のシステム。
【請求項５１】
前記グラフィック表現は、前記第１のデータフローグラフと前記第２のデータフローグラフとの間の前記特定された差異のうちの少なくとも１つと前記第１のデータフローサブグラフと前記第２のデータフローサブグラフとの間の前記特定された差異のうちの少なくとも１つとの階層的表示を含む、請求項４９に記載のシステム。
【請求項５２】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、（１）前記第１のノード又はリンク及び前記第２のノード又はリンクの名前と、（２）前記第１のノード又はリンク及び前記第２のノード又はリンクの識別子とのうちの１つ又は複数に基づき前記第１のノードを特定することを含む、請求項２１に記載のシステム。
【請求項５３】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、前記第１のノード及び前記第２のノード内への又はそこからのデータレコードの流れと関連する情報に基づき前記第１のノードを特定することを含む、請求項２１に記載のシステム。
【請求項５４】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、前記第１のノード又はリンク及び前記第２のノード又はリンクの上流側又は下流側にあるノード又はリンクに基づき前記第１のノード又はリンクを特定することを含む、請求項２１に記載のシステム。
【請求項５５】
前記１つ又は複数のプロセッサ及びメモリは、実行のための前記第１のデータフローグラフ及び前記第２のデータフローグラフを準備し、
前記準備された第１及び第２のデータフローグラフの前記仕様を比較するように構成される、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本出願は、参照のためその内容を本明細書に援用する２０１６年１２月７日出願の米国特許出願第６２／４３１，１９５号と２０１７年５月５日出願の米国特許出願第１５／５８７，９８７号からの優先権を主張する。
【背景技術】
【０００２】
背景
コンピュータプログラムの開発又は実行中、変更がコンピュータプログラムに対して行われ得る。変更に関する情報は、例えば開発者が変更の影響を理解するのを支援するために、何故、更新されたコンピュータプログラムが最早正しく機能しないのかを判断するために、又は複数の人々からの編集を追跡し続けるために開発者にとって有用であり得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
一態様では、方法は第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示するためのものであり、各データフローグラフは、データフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフは、データ処理部品を表す１つ又は複数のノードと部品間のデータの流れを表す１つ又は複数のリンクとを含む。本方法は、第１のデータフローグラフと第２のデータフローグラフとの間の１つ又は複数の差異を特定するために第１の実行可能データフローグラフの仕様と第２の実行可能データフローグラフの仕様とをコンピュータにより比較することを含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す１つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す１つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す１つ又は複数のノードとを規定する。第１のデータフローグラフと第２のデータフローグラフとを比較することは、（１）第２のデータフローグラフのいかなるノード又はリンクにも対応しない第１のデータフローグラフの特定ノード又はリンクを特定することと、（２）第２のデータフローグラフの第２のノード又はリンクに対応する第１のデータフローグラフの第１のノード又はリンクを特定し、第１のノード又はリンクと第２のノード又はリンクとの間の差異を特定することとのうちの少なくとも１つを含む。本方法は、第１のデータフローグラフ又は第２のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化することであって、グラフィック表現は（１）特定された特定ノード又はリンク、又は（１）第１のノード又はリンクと第２のノード又はリンクとの間の特定された差異のうちの少なくとも１つのグラフィック指標を含む、定式化することと、グラフィック表現をグラフ編集インターフェース内に表示することと、を含む。
【０００４】
いくつかの実施形態は以下の特徴の１つ又は複数を含み得る。
【０００５】
第１のデータフローグラフは特定データフローグラフの第１のバージョンであり、第２のデータフローグラフは特定データフローグラフの第２のバージョンである。
【０００６】
第１のノード又はリンクと第２のノード又はリンクとの間の差異を特定することは、第１のノード又はリンクの解決されたパラメータと第２のノード又はリンクの解決されたパラメータとの間の差異を特定することを含む。
【０００７】
第１のノード又はリンクと第２のノード又はリンクとの間の差異を特定することは、第１のノード又はリンクのパラメータの表現と第２のノード又はリンクのパラメータの表現との間の差異を特定することを含む。
【０００８】
グラフィック指標はグラフィック表現内の第１、第２、又は特定ノード又はリンクの色である。
【０００９】
グラフィック指標の色は第１のノード又はリンクと第２のノード又はリンクとの間の特定された差異のタイプを示す。
【００１０】
グラフィック指標はグラフィック表現内の第１、第２、又は特定ノード又はリンクの陰影付け（以下、シェーディング）又は塗りつぶし（以下、フィル）である。
【００１１】
グラフィック指標は第１、第２、又は特定ノード又はリンク近傍に位置するシンボルを含む。
【００１２】
グラフィック指標はユーザ相互作用に応答する。本方法は、グラフィック指標とのユーザ相互作用に応答する特定された差異を示す情報へのアクセスを可能にすることを含む。
【００１３】
第１のデータフローグラフは第１のデータフローサブグラフを含み、第２のデータフローグラフは第２のデータフローサブグラフを含む。本方法は、第１のデータフローサブグラフの仕様と第２のデータフローサブグラフの仕様とを比較することと；この比較に基づき、第１のデータフローサブグラフと第２のデータフローサブグラフとの間の１つ又は複数の差異を特定することとを含む。
【００１４】
グラフィック表現は第１のデータフローサブグラフの少なくとも一部分又は第２のデータフローサブグラフの少なくとも一部分のグラフィック表現を含み、グラフィック表現は第１のデータフローサブグラフと第２のデータフローサブグラフとの間の特定された差異のうちの少なくとも１つのグラフィック指標を含む。
【００１５】
グラフィック表現は、第１のデータフローグラフと第２のデータフローグラフとの間の特定された差異のうちの少なくとも１つの差異と、第１のデータフローサブグラフと第２のデータフローサブグラフとの間の特定された差異のうちの少なくとも１つ差異との階層的表示を含む。
【００１６】
第１のデータフローグラフの仕様と第２のデータフローグラフの仕様とを比較することは、第１のデータフローグラフにより参照される第１のファイルと第２のデータフローグラフにより参照される第２のファイルとを比較することを含む。グラフィック表現は、第１のファイルと第２のファイルとの間の１つ又は複数の差異のグラフィック表現を含む。
【００１７】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、（１）第１のノード又はリンク及び第２のノード又はリンクの名前と、（２）第１のノード又はリンク及び第２のノード又はリンクの識別子とのうちの１つ又は複数に基づき第１のノードを特定することを含む。
【００１８】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、第１のノード及び第２のノード内への又はそこからのデータフローと関連する情報に基づき第１のノードを特定することを含む。
【００１９】
第２のノード又はリンクに対応する第１のノード又はリンクを特定することは、第１のノード又はリンク及び第２のノード又はリンクの上流側又は下流側にあるノード又はリンクに基づき第１のノード又はリンクを特定することを含む。
【００２０】
本方法は、実行のための第１のデータフローグラフ及び第２のデータフローグラフを準備することと；準備された第１及び第２のデータフローグラフの仕様を比較することとを含む。
【００２１】
一態様では、非一時的コンピュータ可読媒体は、コンピュータに第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示させるための命令を格納し、各データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す１つ又は複数のノードと部品間のデータの流れを表す１つ又は複数のリンクとを含む。命令は、コンピュータに、第１のデータフローグラフと第２のデータフローグラフとの間の１つ又は複数の差異を特定するために第１の実行可能データフローグラフの仕様と第２の実行可能データフローグラフの仕様とを比較させる。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す１つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す１つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す１つ又は複数のノードとを規定する。第１のデータフローグラフと第２のデータフローグラフとを比較することは、（１）第２のデータフローグラフのいかなるノード又はリンクにも対応しない第１のデータフローグラフの特定ノード又はリンクを特定することと、（２）第２のデータフローグラフの第２のノード又はリンクに対応する第１のデータフローグラフの第１のノード又はリンクを特定し、第１のノード又はリンクと第２のノード又はリンクとの間の差異を特定することとのうちの少なくとも１つを含む。命令は、コンピュータに、第１のデータフローグラフ又は第２のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化させ、グラフィック表現は、（１）特定された特定ノード又はリンク、又は（１）第１のノード又はリンクと第２のノード又はリンクとの間の特定された差異のうちの少なくとも１つのグラフィック指標を含み、そしてコンピュータにグラフィック表現をグラフ編集インターフェース内に表示させる。
【００２２】
一態様では、システムは、第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示するためのものであり、各データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す１つ又は複数のノードと部品間のデータの流れを表す１つ又は複数のリンクとを含む。システムは、第１のデータフローグラフと第２のデータフローグラフとの間の１つ又は複数の差異を特定するために第１の実行可能データフローグラフの仕様と第２の実行可能データフローグラフの仕様とを比較するように構成されたプロセッサ及びメモリを含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す１つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す１つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す１つ又は複数のノードとを規定する。第１のデータフローグラフと第２のデータフローグラフとを比較することは、（１）第２のデータフローグラフのいかなるノード又はリンクにも対応しない第１のデータフローグラフの特定ノード又はリンクを特定することと、（２）第２のデータフローグラフの第２のノード又はリンクに対応する第１のデータフローグラフの第１のノード又はリンクを特定し、第１のノード又はリンクと第２のノード又はリンクとの間の差異を特定することとのうちの少なくとも１つを含む。プロセッサ及びメモリは、第１のデータフローグラフ又は第２のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化するように構成され、グラフィック表現は（１）特定された特定ノード又はリンク、又は（１）第１のノード又はリンクと第２のノード又はリンクとの間の特定された差異のうちの少なくとも１つのグラフィック指標を含み、プロセッサ及びメモリはさらに、グラフィック表現をグラフ編集インターフェース内に表示するように構成される。
【００２３】
一態様では、システムは、第１の実行可能データフローグラフと第２の実行可能データフローグラフとの間の差異を表示するためのものであり、各データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、各データフローグラフはデータ処理部品を表す１つ又は複数のノードと部品間のデータの流れを表す１つ又は複数のリンクとを含む。本システムは、第１のデータフローグラフと第２のデータフローグラフとの間の１つ又は複数の差異を特定するために第１の実行可能データフローグラフの仕様と第２の実行可能データフローグラフの仕様とを比較する手段を含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す１つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す１つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す１つ又は複数のノードとを規定する。第１のデータフローグラフと第２のデータフローグラフとを比較することは、（１）第２のデータフローグラフのいかなるノード又はリンクにも対応しない第１のデータフローグラフの特定ノード又はリンクを特定することと、（２）第２のデータフローグラフの第２のノード又はリンクに対応する第１のデータフローグラフの第１のノード又はリンクを特定し、第１のノード又はリンクと第２のノード又はリンクとの間の差異を特定することとのうちの少なくとも１つを含む。本システムは、第１のデータフローグラフ又は第２のデータフローグラフのノード又はリンクの少なくとも一部のグラフィック表現を定式化する手段であって、グラフィック表現は（１）特定された特定ノード又はリンク又は（１）第１のノード又はリンクと第２のノード又はリンクとの間の特定された差異のうちの少なくとも１つのグラフィック指標を含む、手段と、グラフィック表現をグラフ編集インターフェース内に表示する手段とを含む。
【００２４】
一態様では、方法は、実行可能データフローグラフの第１のバージョンと実行可能データフローグラフの第２のバージョンとの間の差異を表示するためのものであり、データフローグラフはデータフローグラフにより受信されたデータを処理するように実行可能であり、データフローグラフの各バージョンはデータ処理部品を表す１つ又は複数のノードと部品間のデータの流れを表す１つ又は複数のリンクとを含む。本方法は、データを処理するために実行され得る１つ又は複数の操作を含むジョブの状態を統合コントロールシステムにより監視することであって、ジョブは実行可能データフローグラフの第１のバージョンに関連付けられる、監視することを含む。本方法は、ジョブの状態を示す情報の出力を可能にすることと；統合コントロールシステム又は出力された情報とのユーザ相互作用に応答して、実行可能データフローグラフの第２のバージョンを特定することと；データフローグラフの第１のバージョンとデータフローグラフの第２のバージョンとの間の１つ又は複数の差異を特定するためにデータフローグラフの第１のバージョンの仕様とデータフローグラフの第２のバージョンの仕様とを比較することと、を含む。所与の実行可能データフローグラフの仕様は、データフローグラフにより処理されるデータのソースをそれぞれが表す１つ又は複数のノードと、データソースからのデータを処理するために行われる操作を規定するデータ処理部品をそれぞれが表す１つ又は複数のノードと、データフローグラフにより処理されるデータの送信先をそれぞれが表す１つ又は複数のノードとを規定する。データフローグラフの第１のバージョンとデータフローグラフの第２のバージョンとを比較することは、（１）データフローグラフの第２のバージョンのいかなるノード又はリンクにも対応しないデータフローグラフの第１のバージョンの第１のノード又はリンクを特定することと、（２）データフローグラフの第１のバージョンのいかなるノード又はリンクにも対応しないデータフローグラフの第２のバージョンの第２のノード又はリンクを特定することと、（１）データフローグラフの第２のバージョンの第４のノード又はリンクに対応するデータフローグラフの第１のバージョンの第３のノード又はリンクを特定し、第３のノード又はリンクと第４のノード又はリンクとの間の差異を特定することとうちの少なくとも１つを含む。本方法は、データフローグラフの第１のバージョン又はデータフローグラフの第２のバージョンのノード又はリンクの少なくとも一部のグラフィック表現を定式化することであって、グラフィック表現は、（１）特定された第１のノード又はリンク、（２）特定された第２のノード又はリンク、及び（３）第３のノード又はリンクと第４のノード又はリンクとの間の特定された差異のうちの少なくとも１つのノード又はリンクのグラフィック指標を含む、定式化することを含む。
【００２５】
いくつかの実施形態は以下の特徴の１つ又は複数を含み得る。
【００２６】
既に実行されたジョブがデータフローグラフの第２のバージョンと関連付けられる。
【００２７】
グラフィック表現は特定された差異のうちの１つ又は複数の差異の階層的表示を含む。
【００２８】
本方法は、統合コントロールシステムのユーザインターフェース内の表示のためにグラフィック表現を定式化することを含む。
【００２９】
データフローグラフの第１のバージョンとデータフローグラフの第２のバージョンとの間の差異を特定することは、データフローグラフの第１のバージョンの解決されたパラメータとデータフローグラフの第２のバージョンの解決されたパラメータとの間の差異を特定することを含む。
【００３０】
データフローグラフの第１のバージョンとデータフローグラフの第２のバージョンとの間の差異を特定することは、データフローグラフの第１のバージョンのパラメータの表現とデータフローグラフの第２のバージョンのパラメータの表現との間の差異を特定することを含む。
【００３１】
データフローグラフの第１のバージョンとデータフローグラフの第２のバージョンとの間の差異を特定することは、データフローグラフの第１のバージョンにより参照される第１のファイルとデータフローグラフの第２のバージョンにより参照される第２のファイルとの間の差異を特定することを含む。
【００３２】
ジョブの状態を監視することは、ジョブの活動、ジョブの実際の開始時間、ジョブの推定開始時間、ジョブに関連する処理期間、及びジョブのサイズのうちの１つ又は複数を監視することを含む。
【００３３】
ジョブの状態を監視することはジョブが成功裡に完了したかどうかを判断することを含む。
【００３４】
本方法はアプリケーションの状態を監視することを含み、ジョブはアプリケーションに関連付けられる。
【００３５】
本方法はコンピュータ装置の状態を監視することを含み、アプリケーションはコンピュータ装置によりホストされる。
【００３６】
本明細書で説明する手法は、コンピュータプログラム（例えばデータフローグラフ）などの実行可能アプリケーション間の差異のグラフィック表現の提示を可能にし、したがってアプリケーション間の差異の高位視覚的概要を提供する。例えば、第１のデータフローグラフ（例えばデータフローグラフの初期バージョン）と第２のデータフローグラフ（例えばデータフローグラフの後編集されたバージョン）との間の差異のグラフィック表現は、編集処理中に追加、除去、又は修正された部品の高位ビューを描写し得る。実行可能アプリケーション間の差異のグラフィック表現は双方向的であり得る。例えば、ユーザは、部品に対してなされた修正に関する情報などの当該部品に関する詳細情報を見るためにグラフィック表現内の部品を掘り下げ得る。
【００３７】
データフローグラフ間の差異に関する提示された情報は、グラフ生成又は編集中に開発者へ貴重な技術支援を提供し得る。例えば、開発者は、ソースコード管理システム内の様々なブランチ上に発生した展開を仲裁するために可視化を使用し得る。開発者は、ソースコード管理下のバージョンに対してなした最新変更に関し自身のメモリをリフレッシュするために可視化を使用し得る。開発者は、他の人のグラフへの最新変更を評価するために（例えば、別の開発者が、期待されていた変更を行ったがいかなる他の変更も行っていないということを確認するために、又はいくつかの品質規格が満たされたということを保証するために）、可視化を使用し得る。開発者又は品質管理チームは、何故グラフの振る舞いが連続バージョン間で変わったか（例えば、何故グラフの新バージョンが、クラッシュする、より遅い、誤った答を出す、より多くのＣＰＵ時間を消費する、又はそうでなければ異なるやり方で振る舞うか）を理解したいかもしれない。開発者は、例えば複数バージョンを単一バージョンにマージする又はグラフへの変更を取り消すために差異可視化を通してグラフを編集したいかもしれない。
【００３８】
グラフ間の差異の可視化は、グラフが生成された後に技術的に貴重であり得る。例えば、開発チームにより生成される新特徴は製造部門からのマイナーバグ修正と一体化され得る。品質管理チームは、コードの特定バグの出る行がグラフに対して行われた一連の変更内のどこかに導入されたということを気付くようになり得、可視化は、影響を受けた顧客が通知され得るようにどのバージョンが当該コードを有する第１のバージョンかを発見するために使用され得る。
【図面の簡単な説明】
【００３９】
図面の簡単な説明
【図１】グラフのダイアグラムである。
【図２Ａ−Ｂ】グラフ間の差異のグラフィック表現のダイアグラムである。
【図３】ナビゲーションツリーのダイアグラムである。
【図４−７】ノードレベルビューのダイアグラムである。
【図８Ａ−Ｂ】グラフ間の差異のグラフィック表現のダイアグラムである。
【図９】ナビゲーションツリーのダイアグラムである。
【図１０】異なるビューアインターフェースのダイアグラムである。
【図１１】グラフ解析システムのダイアグラムである。
【図１２】処理環境のダイアグラムである。
【図１３】コントロールセンタインターフェースのダイアグラムである。
【図１４】フローチャートである。
【図１５】データ処理システムのダイアグラムである。
【発明を実施するための形態】
【００４０】
詳細な説明
我々は、ここでは、コンピュータプログラム（例えばデータフローグラフ）などの実行可能アプリケーション間の差異をグラフィック的に表し、したがってアプリケーション間の差異の高位視覚的概要を提供する手法を説明する。例えば、第１のデータフローグラフ（例えばデータフローグラフの初期バージョン）と第２のデータフローグラフ（例えばデータフローグラフの後編集されたバージョン）との間の差異のグラフィック表現は、編集処理中に追加、除去、又は修正された部品を描写し得る。実行可能アプリケーション間の差異のグラフィック表現は双方向的であり得る。例えば、ユーザは、部品に対してなされた修正に関する情報などの当該部品に関する詳細情報を見るためにグラフィック表現内の部品を掘り下げ得る。いくつかのケースでは、実行可能アプリケーション間の差異のうちの１つ又は複数の差異は、実行可能アプリケーション間の差異のグラフィック表現とのユーザ相互作用を介し１つの実行可能アプリケーションから他のアプリケーションへ手動で又は自動的に移行され得る。
【００４１】
データフローグラフ（時にグラフとも呼ぶ）は、データソース及びデータシンクなどのデータ処理部品及びデータセットを表すノードを含み得るコンピュータプログラムの視覚的表示である。データセットは、例えばファイル、データベース表、又はグラフにより処理するためのデータ（例えばデータレコード）を提供し得る又はグラフにより処理されるデータを受信し得る他のタイプのデータソース又はシンクであり得る。データ処理部品及びデータセットは時にグラフのノードと総称される。グラフの２つのノードを接続するリンクは第１のノードと第２のノードとの間のデータの流れを表す。図１は、フロー１４によりフィルタ部品１６へ接続されたデータソース１２を含む単純なデータフローグラフ１０を示す。フィルタ部品１６はフロー１８によりデータシンク２０へ接続される。
【００４２】
グラフのノードは、フローが接続され得る入力ポート及び／又は出力ポートを有し得る。図１の例では、フロー１４、１８の上流端はデータソース１２の出力ポートとフィルタ部品１４の出力ポートとへそれぞれ接続される。フロー１４、１８の下流端はフィルタ部品１４の入力ポートとデータシンク２０の入力ポートとへそれぞれ接続される。
【００４３】
データ処理部品はデータを処理するための操作を実行する。データ処理部品は、実行されるとデータ処理部品の操作を実施するコードにより規定されたオブジェクトのグラフィック表現である。データ処理部品の操作は１つ又は複数のパラメータに関して規定され得る。パラメータは、データ処理部品のコードにより参照されるファイル（例えば．ｄｍｌファイル）内に規定され得る。例えば、ファイルは、データ処理部品に関連するパラメータの値又は表現を含み得る。グラフがインスタンス化される（例えば実行時に）と、パラメータの表現がパラメータの値を得るために評価される（時にパラメータを解決すると呼ばれる）。パラメータ値又は表現は、例えばユーザインターフェース上で（例えばプロンプトに応じて）ユーザにより規定され得る、ファイルから規定され得る、又は同じ文脈における又は異なる文脈における別のパラメータの観点で規定され得る。例えば、パラメータ（例えば異なる部品の文脈で評価されるパラメータ）は、別のパラメータに対する関係と「同じ」関係を有するようにパラメータを指定することにより異なる文脈からエクスポートされ得る。
【００４４】
いくつかの例では、グラフ内の部品は、自身がフローと相互接続される一組の他の部品を使用することにより実装され得る。これによりグラフ内の部品が実装されるこの一組の部品は、サブグラフと呼ばれ、グラフのノードである。
【００４５】
第１のグラフと第２のグラフ（例えばグラフの第１のバージョンとグラフの第２の編集されたバージョン）との間の差異を特定する解析（時に差分解析と呼ばれる）が、第１のグラフ内に存在するが第２のグラフ内には存在しないノード（削除ノード又は除去ノードと呼ばれる）、第２のグラフ内に存在するが第１のグラフ内には存在しないノード（追加ノードと呼ばれる）、又は修正されたノードを特定し得る。修正されたノードは、以下にさらに論述されるように第１のグラフと第２のグラフ間でほぼ同様であり得るが、ノードに関連するパラメータ、属性、又は他の特徴への変更を伴う。差分解析はまた、第１のグラフのフローと第２のグラフのフローとの間の差異を特定し得る。
【００４６】
プランは複数のグラフの実行に関与する過程の視覚的表示である。プランでは、個々のグラフは、ノードであり、プランのグラフの間のデータのフローを示すフローにより相互接続される。本明細書で説明する手法はプラン間の差異をグラフィック的に表すために使用され得る。例えば、第１のプラン及び第２のプランに対し行われる差分解析は、第１のプラン内には存在するが第２のプラン内には存在しないノード（例えばグラフ）、第２のプラン内には存在するが第１のプラン内には存在しないノード、又は修正されたノードを特定し得る。
【００４７】
いくつかの例では、プラン間の差異、プラン内の対応するグラフ間の差異、グラフ内の対応するサブグラフ間の差異、及び／又はグラフ内のノードにより参照される対応パラメータファイル間の差異を特定する入れ子式差分解析（nested differencing analysis）が行われ得る。入れ子式差分解析の結果のグラフィック表現は、プラン、グラフ、及びサブグラフの階層的性質とそれに伴う関連差異とを示し得る。
【００４８】
我々はグラフ間の差異の解析及びグラフィック表現について以下の論述では概して言及するが、本手法はまた、プラン、サブグラフ、パラメータファイル、及び／又はグラフにより参照される他のファイルの解析及びグラフィック表現へ一般的に適用され得る。
【００４９】
グラフ間の差異の可視化はグラフ生成又は編集中に開発者にとって貴重であり得る。例えば、開発者は、ソースコード管理システム内の様々なブランチ上に発生した展開を仲裁するために可視化を使用し得る。開発者は、ソースコード管理下のバージョンに対してなした最新変更に関する自身のメモリをリフレッシュするために可視化を使用し得る。開発者は、誰か他の人のグラフへの最新変更を評価するために（例えば、別の開発者が、期待されていた変更を行ったがいかなる他の変更も行っていないということを確認するために、又はいくつかの品質規格が満たされたということを保証するために）、可視化を使用し得る。開発者又は品質管理チームは、何故グラフの振る舞いが連続バージョン間で変わったか（例えば、何故グラフの新バージョンが、クラッシュする、又はより遅い、又は誤った答を出す、又はより多くのＣＰＵ時間を消費するか）を理解したいかもしれない。開発者は、例えば複数バージョンを単一バージョンにマージする又はグラフへの変更を取消すために異なる可視化を通してグラフを編集したいかもしれない。
【００５０】
グラフ間の差異の可視化は、グラフに対する更新を見たいが自分でグラフを編集する意図が必ずしも無いプロジェクト管理者などの監督役割の人にとって貴重であり得る。
【００５１】
グラフ間の差異の可視化はグラフが生成された後に貴重であり得る。例えば、開発チームにより生成される新特徴は製造部門からのマイナーバグ修正と一体化され得る。品質管理チームは、コードの特定バグの出る行がグラフに対して行われた一連の変更内のどこかに導入されたということを気付くようになり得、可視化は、影響を受けた顧客が通知され得るようにどのバージョンが当該コードを有する第１のバージョンかを発見するために使用され得る。
【００５２】
図２Ａ、２Ｂを参照すると、一例では、グラフの２つのバージョン（第１のバージョン２００（時に、単に第１バージョン２００と呼ばれる）の表現及び第２のバージョン２０２（時に、単に第２バージョン２０２と呼ばれる）の表現）のグラフィック表現がキャンバス上に示される。例えば、グラフはその発展過程にあり得、第１のバージョン２００はグラフの初期バージョンであり得、第２のバージョン２０２はグラフのより最近のバージョンであり得る。グラフの第１及び第２のバージョン２００、２０２間の差異は、例えばグラフの第１及び第２のバージョン２００、２０２間の差異を表す指標によりグラフィック的に表示される。指標は、例えば色、シェーディング、フィル、アイコン、シンボル、テキスト注釈、又は他のタイプの指標であり得る。一例では、削除されたノード（グラフの第１のバージョン２００内に存在するがグラフの第２のバージョン２０２内に存在しないノード）は赤で示される。追加されたノード（グラフの第２のバージョン２０２内に存在するがグラフの第１のバージョン２００内に存在しないノード）は緑で示される。修正されたノード（グラフの両方のバージョン２００、２０２内に存在するが同一でないノード）は青で示される。
【００５３】
図２Ａ、２Ｂの例では、出力ファイル２０４は、グラフの第１のバージョン２００内に存在するが第２のバージョン２０２内に存在しない削除されたノードである。出力ファイル２０４は赤でキャンバス上に示される。フィルタ部品２０６及びトラッシュ部品２０８は、グラフの第２のバージョン２０２内に存在するが第１のバージョン２００内に存在しない追加されたノードである。フィルタ部品２０６及びトラッシュ部品２０８は緑でキャンバス２０上に示される。再フォーマット部品２１０はグラフの両方のバージョン２００、２０２内に存在するが修正されている。例えば、再フォーマット部品２１０のパラメータ又は属性の表現又値はグラフの２つのバージョン２００、２０２間で異なり得る。再フォーマット部品２１０は青でキャンバス上に示される。
【００５４】
いくつかの例では、グラフの第１及び／又は第２のバージョン２００、２０２のノードは、クリック、タップ、ホバーなどのユーザ相互作用又は他の相互作用に対し応答し得る。例えば、ユーザは、グラフの第１及び第２のバージョン２００、２０２間で異なる再フォーマット部品２１０のパラメータ又は属性のリストなど修正に関する追加情報を見るためにポインタを再フォーマット部品２１０の上にホバーし得る。いくつかの例では、追加情報がキャンバス上に（例えばノード近傍に又はキャンバスのブランクスペース内に）表示され得る。いくつかの例では、情報を表示するために新しいウィンドウ又は情報バブルが開かれる（例えばキャンバスの前に）。
【００５５】
図３を参照すると、いくつかの例では、グラフの第１及び第２のバージョン２００、２０２間の差異のグラフィック表現はナビゲーションツリー２２０内の階層的リストの形式を取り得る。ナビゲーションツリー２２０は、論理構造に似たツリー構造のノードをグラフ２００、２０２へ列挙し得る。いくつかの例では、ナビゲーションツリー２２０はグラフ２００、２０２のノードのすべてを列挙し得る。いくつかの例では、ナビゲーションツリー２２０はグラフのバージョン２００、２０２間で異なるノードだけ（例えば追加されたノード、削除されたノード、及び修正されたノードだけ）を列挙し得る。
【００５６】
ナビゲーションツリーはプラン間の差異の階層的リストを描写するために使用され得る。プランのナビゲーションツリーは、タスクのリスト、方法のリスト、又は他の態様などのプランの他の態様に加えてノード（例えばグラフ）のリストを含み得る。
【００５７】
追加されたノード、削除されたノード、及び修正されたノードのそれぞれは、ナビゲーションツリー２２０の階層的リスト内のエントリにより表される。ノードが、追加されたノード、削除されたノード、又は修正されたノードかどうかを示すリスト上の各ノードに付随するアイコンは、例えばアイコンの色、シェーディング、フィル、形状、又は別の特徴によるものである。図３の例では、削除されたノードのアイコンは緑色正方形であり、追加されたノードのアイコンは緑色正方形であり、修正されたノードのアイコンは青色正方形である。
【００５８】
ナビゲーションツリー２２０内のエントリのうちの１つ又は複数は、ノードに関する追加情報を提供するために例えばサブエントリを含み得る。例えば、ノードが、修正されたノードであれば、グラフの第１及び第２のバージョン２００、２０２間で異なるノードの各特徴は、修正されたノードのエントリ下の対応するサブエントリ内に列挙され得る。例えば、再フォーマット部品２１０（修正された部品）に関し、サブエントリは、第１及び第２のバージョン２００、２０２間で異なる各特徴（例えばパラメータ、又は属性、又は他の特徴）のナビゲーションツリー２２０内に含まれ得る。サブエントリは、例えば特徴（例えばパラメータ、属性、又は別のタイプの特徴）のタイプ、特徴の名前、グラフの第１のバージョン２００内の特徴の値、グラフの第２のバージョン２０２内の特徴の値、又は他の情報などの特徴に関する情報を含み得る。
【００５９】
図４を参照すると、いくつかの例では、グラフの第１及び第２のバージョン２００、２０２の修正されたノード（例えば再フォーマット部品２１０）間の差異は、ノードレベルビュー２５０内の表フォーマットで表示され得る。ノードレベルビュー２５０は、ノードの記述、パラメータ、属性、レイアウト、ポート、又は他の特徴などのノードの特徴を列挙する１つ又は複数の表を含む。
【００６０】
図４の例では、パラメータ及び属性表は、ノードのパラメータ及び属性を列挙する。パラメータ及び属性表は、グラフの第１のバージョンと第２のバージョンとの間で異なる値又は表現を有するそれらのパラメータ及び属性だけを含んでもよいし、ノードのすべてのパラメータ及び属性を含んでもよい。各行は、パラメータ又は属性を表し、グラフの第１のバージョン２００内のパラメータ又は属性の値又は表現（「古い値」と呼ばれる）及び／又はグラフの第２のバージョン２０２内のパラメータ又は属性の値（「新しい値」と呼ばれる）を含む。グラフの第１及び第２のバージョン２００、２０２間で異なる値は、ハイライト、アイコン、又は別のタイプの指標などの指標によりマーキングされ得る。例えば、図４の例では、変換部品の古い及び新しい値がハイライトされ、これらの値がグラフの第１及び第２のバージョン２００、２０２間で異なるということを示す。
【００６１】
ノードレベルビュー２５０内の表の名前列はパラメータ又は属性の名前を表示する。いくつかの例では、名前列は、名前がパラメータ又は属性の名前であるかどうかの指標（例えばアイコン、文字、又は別の指標）を含み得る。例えば、パラメータ名は菱形によりマーキングされ得、属性名は等号によりマーキングされ得る。いくつかの例では、名前列は、パラメータが入力パラメータであるか又はローカルパラメータであるかの指標を含み得る。
【００６２】
図５を参照すると、いくつかの例では、ノードレベルビューのパラメータ及び属性表２６０は、タイプ列、必要列、エクスポート列、又は別の列などの追加の列を含み得る。タイプ列は妥当な場合ｄｍｌタイプのパラメータを表示し得る。タイプ列は部品属性へ適用しない。プランに関し、タイプ列は、グラフ、ストリング、選択、又は別のタスクタイプなどのタスクタイプを表示し得る。必要列は、パラメータが必要とされるかどうかと、パラメータの必要とされる状態がバージョン間で変化したかどうかとを示す指標を含み得る。エクスポート列は、パラメータがエクスポートされるかどうかと、パラメータのエクスポート状態がバージョン間で変化したかどうかとの指標を含み得る。
【００６３】
図６を参照すると、ノードレベルビューは、ノードのポートのリストを含むポート表２７０を含み得る。ポートのリストは、グラフの第１及び第２のバージョン間で変化したポートだけを含んでもよいし、すべてのポートを含んでもよい。各行はポートを表し、ポートの名前及び差異のタイプ（例えば追加、削除、又は修正）を含む。差異のタイプは指標により描写され得る。いくつかの例では、ユーザは、ポートのパラメータのリスト又は表へアクセスするためにポートの名前と相互作用し得る（例えば名前をクリック又はタップすることにより）。
【００６４】
図７を参照すると、プラン間の差異を特徴付ける際に、ノードレベルビューはプランの方法のリストを含む方法表２８０を含み得る。方法のリストは、プランの第１及び第２のバージョン間で変化した方法だけを含んでもよいし、すべての方法を含んでもよい。各行は、方法を表し、方法の名前及び差異のタイプ（例えば削除、追加、又は修正）を含む。差異のタイプは指標により描写され得る。いくつかの例では、ユーザは、方法のパラメータのリスト又は表へアクセスするために方法の名前と相互作用し得る（例えば名前をクリック又はタップすることにより）。
【００６５】
いくつかの例では、テキスト差分ビュー（図示せず）が、グラフの第１及び第２のバージョンのそれぞれのバージョン内のノードのコード間の差異の指標によりノード（例えば修正されたノード）のコードを表示し得る。差異は、例えばフォーマット化（例えば下線、取り消し線、太字、イタリック体、又は他のフォーマット化）、ハイライト、又は他の手法により示され得る。いくつかの例では、グラフのバージョンのうちのただ１つのバージョン内のノードのコードが、提示されたコードとグラフの他のバージョン内のノードのコードとの間の差異の指標により提示される。いくつかの例では、グラフの両方のバージョンのノードのコードが提示され、コードの各バージョンは、コードの他のバージョンに対する差異の指標を有し得る。
【００６６】
グラフの第１及び第２のバージョン２００、２０２間の差異のこれらの様々なビューのそれぞれは利点をユーザへ提示し得る。グラフの第１のバージョン２００と第２のバージョン２０２間の差異のキャンバス２０上のグラフィック表示は、大量の詳細無しにユーザが高レベルで差異を迅速に把握することを可能にする。例えば、キャンバス上の第１及び第２のバージョン２００、２０２の表示は、どのノードが追加又は削除されそしてどのノードが修正されたかをユーザが迅速に可視化することを可能にする。ナビゲーションツリー２２０の階層的リストは、ユーザがグラフの残りの文脈の外で個々のノードに焦点を合わせることを可能にする。ノードレベルビュー２５０は、例えばユーザがグラフの各バージョン２００、２０２のノードの特徴の詳細な理解を掘り下げ得るようにノードに対する変更に関する固有情報へのアクセスをユーザに提供する。
【００６７】
いくつかの例では、グラフはサブグラフを含み得、２つのグラフ間の差異のグラフィック表現はグラフにより参照されるサブグラフ間の差異に関する情報を提供し得る。図８Ａ、８Ｂを参照すると、サブグラフ９０４を含むグラフの第１のバージョン９００及び第２のバージョン９０２の表現がキャンバス上に示される。第１及び第２のバージョン９００、９０２間の差異は指標により示される。差異がサブグラフ内に存在すれば、サブグラフ上の指標が差異の高位指標を提供し得る。いくつかの例では、サブグラフ９０４内の差異のリスト又は記述などの追加情報が、サブグラフ９０４とのユーザ相互作用に応答して提供され得る。いくつかの例では、サブグラフ９０４を形成する部品がサブグラフ９０４とのユーザ相互作用に応答して表示され得る（必要に応じ差異の指標により）。
【００６８】
図８Ａ、８Ｂの例では、出力ファイル９０６が削除され、フィルタ部品９０８及びトラッシュ部品９１０が追加された。加えて、サブグラフ９０４内のノードが修正されており、これはサブグラフ９０４上の指標により描写される。
【００６９】
図９を参照すると、ナビゲーションツリー９２０が、グラフの第１及び第２のバージョン９００、９０２の追加されたノード、削除されたノード、及び修正されたノードを列挙し得る。サブグラフ９０４のノードが追加又は削除又は修正されれば、サブグラフ９０４はリスト内に含まれ、ノード（例えば再フォーマット部品）がサブグラフ９０４のエントリ下のサブエントリ内に列挙される。サブグラフ９０４の列挙されたノードが修正されたノードであれば、当該ノード（例えば再フォーマット部品）のサブエントリ自身は、グラフの第１及び第２のバージョン９００、９０２間で異なる各特徴（例えばパラメータ、又は属性、又は他の特徴）のサブエントリを有し得る。
【００７０】
図１０を参照すると、いくつかの例では、複数のビューが差異ビューアインターフェース（時に、差異ビューアとも呼ばれる）６０に一体化され得る。図１０の例示的差異ビューア６０は、グラフの第１のバージョン６００及びグラフの第２のバージョン６０２のグラフィック表現を示すキャンバス６２を含む。図１０の差異ビューア６０では、キャンバス６２はグラフの第１及び第２のバージョン６００、６０２を並列配向で示し；いくつかの例では、キャンバスは第１及び第２のバージョン６００、６０２を上下配向で示し得る。キャンバス６２は、グラフの第１又は第２のバージョン６００、６０２の関心領域内にユーザが焦点を合わせることを可能にするためにスケーラブルかつスライド可能であり得る。差異ビューア６０はまた、ナビゲーションツリー６２０及びノードレベルビュー６５０を含む。差異ビューア６０では、様々なビューにより提示される様々なレベルの情報はすべて、単一かつコンパクトなユーザインターフェース内でユーザへアクセス可能である。
【００７１】
図１０の例では、指標はノード近傍に位置するアイコンであり、アイコンの形状及び色は併せて差異のタイプを示す。例えば、赤色「Ｘ」は削除されたノードを示し、緑色プラス記号は追加されたノードを示し、黄色アスタリスクは修正されたノードを示す。ナビゲーションツリー６２０内のエントリは、追加、削除、又は修正などの変更のタイプによりグループ化され得る。
【００７２】
差異ビューア６０は双方向性であり得る。例えば、ユーザは、差異に関する情報を取得するために当該差異を選択し得る。差異に関する情報は、ユーザが差異を選択したビュー内にだけ、又は１つ又は複数の追加ビュー内（例えばすべてのビュー内）に表示され得る。例えば、ユーザがキャンバス上のノードと相互作用する（例えば、「Preprocess Old」部品６０４をクリックすることにより）と、当該ノードのサブエントリがナビゲーションツリー上に表示され得、当該ノードの特徴の表がノードレベルビュー内に表示され得る。キャンバス、ナビゲーションツリー、及びノードレベルビューはすべて差異ビューア６００内で同時に可視であり得、これにより、ユーザが選択ノードの差異に関する高位差異と詳細との両方の完全な理解を得ることを可能にする。
【００７３】
いくつかの例では、ユーザがノードと行う相互作用のタイプが、当該ノードに関して表示される情報を制御する。例えば、ノードの単一クリックが、当該ノードの特徴（例えばパラメータ又は属性）をノードレベルビュー６５０内に表示させ得る。サブグラフの２度クリックは、キャンバス内のサブグラフを拡張し得、サブグラフの属性及びパラメータをノードレベルビュー６５０内に表示させ、ナビゲーションツリー６２０内のサブグラフのエントリを拡張させ得る。様々なタイプのユーザ相互作用に応答して表示される情報の他の例も提供され得る。
【００７４】
いくつかの例では、ユーザは、第１及び第２のバージョン６００、６０２間のあらゆる差異に関する情報を見るために、各差異を連続的に辿り得る。いくつかの例では、ユーザは、パラメータ値に対する変更又はノードの追加又は削除などのグラフの実行に影響を与え得る差異だけを表示することを選択し得る。いくつかの例では、ユーザは、グラフ実行に影響を与え得る差異とグラフ実行に影響を与えない差異との両方を含むすべての差異（例えばコメントと凡例に対する差異、著者及びバージョン属性などの属性の属性値に対する変更、ノードの配置のｘｙ座標に対する変更、フォント変更、又は他の差異）を表示することを選択し得る。
【００７５】
図１１を参照すると、第１のグラフ８００と第２のグラフ８０２間の差異を解析するグラフ解析システム８０は、各グラフ８００、８０２の仕様を解析するグラフ解析器エンジン８０４を含む。グラフ解析器エンジン８０４は、第１のグラフ８００内のどのノード（例えば部品又はデータセット）が第２のグラフ８０２内のノードに対応するかを判断する。対応ノード同士は、必ずしも同一ではなく、グラフ間で修正され得るが、通常、両方のグラフ内の同じノードと見なされるには十分に似ている。
【００７６】
いくつかの例では、グラフ解析器エンジン８０４は、ノードのタイプ（例えばデータ処理部品対データセット、又はデータ処理部品又はデータセットの特定タイプ）、ノードの名前、ノードの一意的識別子、又はノードに関連する他のメタデータのうちの１つ又は複数などノードに関連するメタデータに基づき対応ノードを特定する。いくつかの例では、グラフ解析器エンジン８０４は、ノード内への又はそこからのデータフローに関連する情報（例えば、ポートの名前又は数、ノード内へのデータフローの名前又はソース、ノードからのデータフローの名前又は送信先、又はノード内への又はそこからのデータフローに関連する他の情報など）に基づき対応ノードを特定する。いくつかの例では、グラフ解析器エンジン８０４は、特定ノードが他のノードに対しグラフ内のどこに位置するか（例えば、どのノードが特定ノードの上流又は下流側に存在するか）などのトポロジー情報に基づき対応ノードを特定する。いくつかの例では、グラフ解析器８０４は、キャンバス上のグラフのグラフィック表現内のノードの位置（例えばｘｙ座標）に基づき対応ノードを特定する。しかし、いくつかの例では、グラフ解析器８０４は対応ノードを特定する際に位置情報を使用しない（例えば、キャンバス上のノードの位置はノードの機能又はノードを含むグラフに影響しないので）。
【００７７】
第２のグラフ８０２内に対応ノードが存在しない第１のグラフ８００内のいかなるノードも、削除されたノードとしてグラフ解析器エンジン８０４により特定される。第１のグラフ８００内に対応ノードが存在しない第２のグラフ８０２内のいかなるノードも、追加されたノードとしてグラフ解析器エンジン８０４により特定される。第１及び第２のグラフ８００、８０２間で対応するノードは、ノードが修正されたかどうかを判断するためにグラフ解析器エンジン８０４により解析される。可視化エンジン８１０は、第１及び第２のグラフ８００、８０２間の差異のグラフィック表現のレンダリングを可能にするデータを生成する。
【００７８】
いくつかの例では、グラフ解析器エンジン８０４は、グラフの実行に影響を与え得る特徴とグラフの実行に影響を与えない特徴との両方を解析し得る。グラフの実行に影響を与える特徴は、例えばパラメータ表現又はパラメータ値などのパラメータを含み得る。グラフの実行に影響を与えない特徴は、例えば属性値（例えば著者属性、名前属性、バージョン属性、又は他の属性）、コメント、凡例、フォーマット（例えばフォント）、キャンバス上の部品の位置、又は他の特徴を含み得る。いくつかの例では、グラフ解析器エンジン８０４は、グラフの実行に影響を与え得る特徴だけを解析し得、グラフの実行に影響を与えない特徴を無視し得る。
【００７９】
２つの対応ノードのそれぞれに関連するパラメータの解析は、パラメータ（例えば第２のグラフのノード内に存在するが第１のグラフの対応ノード内に存在しないパラメータ）が追加されたか、又はパラメータ（例えば第１のグラフのノード内に存在するが第２のグラフの対応ノード内に存在しないパラメータ）が除去されたかを特定し得る。パラメータの解析は、パラメータを規定する表現の解析、パラメータの値の解析、又はその両方を含み得る。
【００８０】
いくつかの例では、２つの対応ノードのそれぞれに関連するパラメータの解析は、対応パラメータの表現が修正されたかどうかを判断し得る。パラメータの表現を解析するために、パラメータ解析は各ノードに対応するソースコードに対し行われ得る。いくつかの例では、パラメータ解析は、グラフ８００、８０２がインスタンス化されそしてすべてのパラメータが解決された後（例えば、各グラフがノードの仕様を参照してパラメータファイルを呼び出した後）に行われ得る。パラメータ解析がグラフインスタンス化後に行われると、グラフ解析器エンジン８０４はパラメータ値同士を比較する。
【００８１】
いくつかの例では、２つの対応ノードのそれぞれに関連するパラメータの順序がグラフ解析器エンジン８０４により解析され得；いくつかの例では、パラメータの順序はグラフ解析器エンジンにより無視される。いくつかの例では、依存性解析のためにだけ使用されるパラメータの表現又は値がグラフ解析器エンジン８０４により解析され得；いくつかの例では、これらのパラメータの表現又は値はグラフ解析器エンジンにより無視される。
【００８２】
いくつかの例では、グラフ解析器エンジン８０４は、グラフにより参照される外部ファイルを解析し得る、又はグラフ８００、８０２により参照されるファイル間のいかなる差異も特定することを計画する。いくつかの例では、レコードフォーマットファイル（例えば、．ｄｍｌファイル）、変換ファイル（例えば、．ｘｆｒファイル）、又はそのコンテンツがグラフの実行に影響を与え得る他のタイプのファイルなどのいくつかのタイプのファイルだけがグラフ解析器エンジン８０４により解析される。グラフ又はプランによる処理のためのデータを提供するファイルなどの他のファイルは考慮されない。
【００８３】
いくつかの例では、解析されるグラフ又はプランは解析に先立って共通ファイルフォーマットへアップグレードされ得る。例えば、グラフ又はプランは、グラフ又はプランの現ファイルフォーマットへ又は最新のファイルフォーマットへアップグレードされ得る。いくつかの例では、グラフ又はプランはそれ自身のオリジナルファイルフォーマットで解析され得る。比較のために（例えばファイルフォーマット変更により生じた又はそうでなければそれに関係する差異を特定するために）オリジナルファイルフォーマットを保持することが有用であり得る。
【００８４】
いくつかの例では、グラフ解析器エンジン８０４による行われる解析の範囲はデフォルトで設定され得る、例えば、グラフ解析器エンジン８０４はグラフ実行に影響を与える差異だけを考慮するためにデフォルトで設定され得る。いくつかの例では、ユーザが、グラフ実行エンジンによる行われる解析の範囲を規定し得る。
【００８５】
いくつかの例では、グラフ間の差異のグラフィック表現はソフトウェア開発プラットフォームに一体化され得る。ソフトウェア開発プラットフォームは、例えばグラフなどのソフトウェアを開発又は維持するソフトウェア開発者により使用され得る。開発者は、例えば自身に最新変更について気付かせ、別の開発者の最新変更を精査するために、又は何故グラフに対する修正が成功しなかったのかの潜在的理由を特定するために、又は他の目的のために、グラフの旧バージョンとグラフの更新バージョンとの間の差異のグラフィック表現を活用し得る。
【００８６】
いくつかの例では、グラフ間の差異のグラフィック表現はソフトウェア管理プラットフォームに一体化され得る。ソフトウェア管理プラットフォームは、例えばグラフなどのソフトウェアの開発又は維持を監督する管理者により使用され得る。管理者は、例えばソフトウェア開発進捗を観察する、追加開発を必要とするグラフの部分を特定する、トラブルシュートを支援する、又は他の目的のために、グラフの旧バージョンとグラフの更新バージョンとの間の差異のグラフィック表現を活用し得る。
【００８７】
いくつかの例では、グラフ間の差異のグラフィック表現は、処理環境の様々な部品の統合管理を容易にする運用コントロールセンタに統合され得る。コントロールセンタは、コンピュータ装置、アプリケーション、又はジョブなどの処理環境の部品の状態を監視及び表示し得、オペレータが処理環境の部品を能動的に管理することを可能にし得る。例示的コントロールセンタの説明は参照によりその全体を本明細書に援用する米国特許出願第１４／６９０，１１４号に見出され得る。
【００８８】
図１２を参照すると、処理環境９００は、データを処理するためにユーザ９０２により又はその代わりに操作され得るハードウェア及びソフトウェア部品を含む。ハードウェア部品は、時に「ホスト」と呼ぶサーバなどのハードウェアコンピュータ装置９０４を含み得る。サーバのそれぞれは、１つ又は複数のデータ処理装置と、１つ又は複数のデータ処理装置により実行される命令を格納するための１つ又は複数の格納装置とを含み得る。処理環境９００のソフトウェア部品はアプリケーション９０６、ジョブ９０８、又はサービス９１０を含み得る。ソフトウェア部品はそれぞれ、１つ又は複数のホスト９０４上で実行する、又はそれらに影響を与える。
【００８９】
アプリケーション９０６は、例えばデータ処理のためにフレームワークを設定すること、データ処理フレームワークを実行すること、又は処理されたデータを解析することを含む様々なデータ処理機能を行うために使用され得るソフトウェア製品などのコンピュータプログラムである。アプリケーションは、文書処理などの特定ドメイン内のタスクを実行すること又はユーザが実行するのを助けることを標的とするプログラムであり得る。１つ又は複数のジョブ９０８は、処理環境９００の１つ又は複数のホスト９０４、１つ又は複数のアプリケーション９０６、又はその両方を使用して行われ得る。ジョブ９０８はデータを処理するために実行される一組の１つ又は複数の操作である。ジョブの例はグラフベース処理環境内のグラフ又はプランである。
【００９０】
いくつかの例では、アプリケーション９０６又はジョブ９０８は１つ又は複数のサービス９１０を利用し得る。サービス９１０は、アプリケーション又はユーザの代わりに行われる特定組のタスク（サービス）を標的とする長期アプリケーション（例えばホスト又はサーバが実行している限り実行されることが期待されるアプリケーション）などのアプリケーションの特別なケースである。サービス９１０により行われ得る例示的タスクは、例えば事象をログ記録すること又はユーザインターフェースを介し事象を可視化することを含む。例示的サービス９１０は、例えばデータベース９１２、キュー９１４、ファイル９１６、アプリケーションサーバ９１８、又は別のタイプのサービスを含む。
【００９１】
統合コントロールセンタ９５０は、処理環境９００のハードウェア及びソフトウェア部品のリアルタイム状態を監視する。いくつかの例では、コントロールセンタ９５０はホスト９０４のうちの１つの上で実行し得；いくつかの例では、コントロールセンタ９５０は別個のコンピュータ装置９５２上で実行する。例えば、コントロールセンタ９５０は、ユーザ９０２がアクセスしジョブ９０８がユーザ９０２の代わりに実行されるホスト９０４及びアプリケーション９０６の状態を監視し得る。処理環境９００の部品に関するリアルタイム状態情報９５４がユーザインターフェース９５６上に表示され得る。状態情報９５４は、ホスト９０４、アプリケーション９０６、ジョブ９０８、サービス９１０、又は他の部品などの処理環境９００の個々の部品間の関係をハイライトするように統合されたやり方で表示され得る。状態情報９５４は、１つ又は複数の部品の状態又は処理環境の個々の部品の状態間の関係を表示するように表示され得る。リアルタイム状態情報及び歴史的状態メトリック及びデータ処理メトリック（例えば、処理されたレコードの数、処理時間、処理期間に関係するメトリック、又は他のメトリック）がコントロールセンタを介し利用可能かもしれない。ユーザインターフェース９５６を介し、ユーザ９０２は、処理環境の１つ又は複数の部品に関係する行動を取ってもよいし、処理環境の１つ又は複数の部品に関係する所定発生に応答して自動的に実行される行為を規定してもよい。
【００９２】
ホスト９０４のために監視及び表示され得るリアルタイム状態メトリックの例は、例えば以下のものを含む：
●ホストの運転状態：例えば、ホストは、オンラインか、エラー又は警告状態によりオンラインか、オフラインか。いくつかのケースでは、コントロールセンタ９５０は、ホストの運転状態に関係する詳細（ホストが計画保守のためにオフラインか、又は障害（例えばディスク故障））によりオフラインかなど）を監視し得る。
●ホストの全中央処理ユニット（ＣＰＵ）使用率。
●ホストの全利用可能メモリ又は使用されたメモリ。
●ホストに関連するファイルシステムの数。
●ファイルシステムの全利用可能ディスクスペース又は使用されたディスクスペース。
●ホスト上で実行しているジョブの数。
●ホスト上で実行しているジョブのそれぞれの識別子。
●ホスト上で実行しているジョブのそれぞれによるＣＰＵ使用率、メモリ使用率、又はその両方。
●ホスト上で実行しているアプリケーションの数。
●ホスト上で実行しているアプリケーションのそれぞれの識別子。
●ホスト上で実行しているアプリケーションのそれぞれによるＣＰＵ使用率、メモリ使用率、又はその両方。
●ユーザによりライセンスされたＣＰＵ又はメモリの最大量に対する特定ユーザ９０２のＣＰＵ使用率、メモリ使用率、又はその両方。
●ホスト上に格納されたライセンスキーの状態（例えば有効期限）及び当該ライセンスキーに関連するアプリケーションの識別子。
●オペレーティングシステムのパラメータ
●ＣＰＵの数
●ＣＰＵクラス
●ＣＰＵ速度
【００９３】
他のリアルタイム状態メトリックも監視され得る。いくつかの例では、ユーザ９０２は、コントロールセンタ９５０により監視されるカスタム状態メトリックを規定し得る。
【００９４】
コントロールセンタ９５０はまた、ホスト９０４の歴史的状態メトリックの追跡を可能にする情報を維持し得る。例えば、コントロールセンタ９５０は、ホスト９０４が所定期間にわたってオフラインだった時間の割合、ホスト９０４が所定期間にわたって経験したエラー又は警告状態の数、又は歴史的運転状態の他の指標などのホストの歴史的運転状態の追跡を可能にする情報を維持し得る。コントロールセンタ９５０は、ホスト９０４上で行われるジョブ９０８の平均又は総数、ホスト９０４上で動作するアプリケーション９０６の平均又は総数、ホスト９０４の平均又は最大ＣＰＵ負荷、ホスト９０４の平均又は最小利用可能メモリ、又はホスト９０４の歴史的状態の他の指標の追跡を可能にする情報を維持し得る。このタイプの情報の一部はホスト９０４の１つ又は複数のログファイル内に見出され得るが、コントロールセンタ９５０により提供される統合表示は情報をより容易にアクセス可能にし、そしてより容易に理解されるようにし、したがって、特定技術知識の少ない人がホスト９０４の歴史的状態メトリックへアクセスして解析することを可能にする。
【００９５】
製品又はサービスのための監視及び表示され得るリアルタイム状態メトリックの例は、例えば以下のものを含む：
●製品又はサービスのライセンスキーの状態：例えば有効である、有効であるが期限切れに近づいている、又は期限切れである。
●製品又はサービスのライセンスキーが発行されるキーサーバの識別子。
●製品又はサービスが動作しているホストの識別子。
●製品又はサービスを利用するジョブの数。
●製品又はサービスを利用するジョブの識別子。
●製品又はサービスの構成ファイルの位置。
●製品又はサービスのログファイルの位置。
●製品又はサービスにより利用される任意のサービスの識別子。
●製品又はサービスにより利用されるサービスのそれぞれの状態（例えば、オンラインか、エラー又は警告状態によりオンラインか、オフラインか）。
●製品又はサービスに関係する任意の部品の識別子及び状態。
【００９６】
他のリアルタイム状態メトリックも監視され得る。いくつかの例では、ユーザ９０２は、コントロールセンタ９５０により監視されるカスタム状態メトリックを規定し得る。
【００９７】
ジョブ９０８のための監視及び表示され得るリアルタイム状態メトリックの例は例えば以下のものを含む：
●ジョブのリアルタイム運転状態：例えば、ジョブが実行されているか、停止又は休止されたか、実行を待っているか、完了したか。
●ジョブの開始時間、経過時間（進行中であれば）、又は終了時間（完成していれば）。
●ジョブの合計経過時間がジョブの標的処理時間（例えばサービスレベルアグリーメント（ＳＬＡ：service level agreement））を満たすかどうか。
●ジョブが実行されているホストの識別子。
●ジョブによるＣＰＵ使用率。
●ジョブにより利用される任意の製品又はサービスの識別子。
●ジョブによるデータ出力のタイプ。
●ジョブによるデータ出力の位置。
●ジョブの実行中に処理されるレコードの数。
●ジョブの実行中に拒絶されるレコードの数。
●ジョブにより利用されるサービスのそれぞれの状態。
【００９８】
他のリアルタイム状態メトリックも監視され得る。いくつかの例では、ユーザ９０２は、コントロールセンタ９５０により監視されるカスタム状態メトリックを規定し得る。
【００９９】
コントロールセンタ９５０はまた、ジョブ９０８の歴史的状態メトリックの追跡を可能にする情報を維持し得る。例えば、コントロールセンタ９５０は、平均実行時間、平均ＣＰＵ使用率、拒絶されたレコードの平均数、又は所与のタイプのジョブの他の歴史的メトリックの追跡を可能にする情報を維持し得る。
【０１００】
ジョブに関係し採用され得る行動の例は例えば以下のものである：
●ジョブを開始又は停止する。
●ジョブをスケジューリングする。
●ジョブを再実行する。
●実行されないようにジョブを使用不能にする。
●実行されるようにジョブを使用可能にする。
●ジョブを保留にする。
●ジョブを保留から解放する。
●ジョブに関する問題を調査し解決する。
●失敗したジョブを、それに依存するジョブがとにかく実行されるように無視する。
●任意の先行又は後行ジョブを見てそれへナビゲートする。
●ジョブの任意のこれまでの実行を見てそれへナビゲートする。
●親ジョブ又は任意の子ジョブを見てそれへナビゲートする。
●ジョブにより使用されているキューを見る。
●ジョブにより使用されているファイルを見る。
●ジョブにより使用されている資源を見る。
●ジョブにより使用されている製品及びサービスを見る。
【０１０１】
コントロールセンタはまた、上に挙げたもの以外の行為を可能し得る。
【０１０２】
コントロールセンタはジョブにより使用されるキュー９１４を監視し得る。いくつかの実施形態では、ジョブは、データ処理部品間で渡されるデータに依存するので、キュー状態を知ることでユーザにジョブの全体性能への洞察を与える。
【０１０３】
コントロールセンタはジョブにより使用される資源を監視し得る。資源はプランにより使用される処理環境のいくつかの態様を表す。例えば、ハードウェア部品、手段、又はプログラムオブジェクは資源として規定され得る。ＣＰＵ時間、プロセッサユニット、ＦＴＰ（ファイル転送プロトコル：file transfer protocol）ポート、ディスク容量、ファイルカウント、入力ストリーム、及び事象トリガ、及びＪＶＭ（Java仮想マシン:Java virtual machine）プールは資源の例である。資源を規定する目的は処理環境内の要求と容量とをバランスすることである。具体的には、資源は、システムにかかる負荷に最大限度及び順序を課すために使用され得る。
【０１０４】
ユーザインターフェース９５６は、コントロールセンタ９５０により監視される状態情報の一部又はすべてを表示し、ユーザに処理環境９００の１つ又は複数の部品に関係する行動を取らせる。一般的に、状態情報は、処理環境９００の様々な部品間の関係をハイライトするコヒーレントでかつ統合されたやり方でユーザインターフェース９５６上に表示されリンクされる。処理環境の各個々の部品に関する情報を孤立して表示するのではなく、この表示パラダイムは、処理環境の部品間のオーバラップの可視でかつアクセス可能な洞察を行う。この表示パラダイムにより、特定部品に関する性能問題の潜在的要因と他の部品に関する性能問題の潜在的影響との両方が理解され対処され得る。
【０１０５】
例えば、コントロールセンタ９５０のユーザインターフェース９５６上に提供される情報の統合表示により、ユーザ９０２は、特定ホスト９０４が維持のためにオフラインで採用されれば影響を受けるジョブ９０８を特定し得る。逆に、ユーザ９０２は、いくつかのジョブ９０８が期待より遅いことに気付き得る。ユーザインターフェース９５６を介し、ユーザ９０２は、これらのジョブ９０８がすべて同じホスト９０４上で実行しているということと、当該ホスト９０４はＣＰＵ制約又はＩ／Ｏ（入出力）制約であるということとを判断することができるかもしれない。いずれの場合も、ユーザ９０２は、いかなる潜在的性能問題も軽減するための又は実際の性能問題を解決するための行動を取り得る。例えば、ユーザインターフェース９５６を介し、そしてホスト９０４が計画保守のためにオフラインにされるという通知に応答して、ユーザ９０２は、影響を受けたジョブ９０８、又はこれらジョブ９０８により利用されるアプリケーション９０６、又はその両方ともを異なるホスト９０８上に一時的に移行し得る。ＣＰＵ制約又はＩ／Ｏ制約ホスト９０４の例では、ユーザは当該ホスト９０４に関する潜在容量問題についてシステム管理者に警告し得る。
【０１０６】
いくつかの例では、グラフに関連するジョブが行われると、運用コントロールセンタはグラフのソースコードのバージョンを記録する。ジョブが成功裡に終了しなければ、当該ジョブに関連するグラフが実行され、グラフ（例えば、前に正常に完了したジョブに関連するグラフ）の別のバージョンと比較され得る。グラフの２つのバージョン間の差異のグラフィック表現は、ジョブを失敗させたかもしれない変化したものをオペレータが容易に理解するのを支援し得る。
【０１０７】
いくつかの例では、グラフの２つのバージョン間の比較は、ユーザ入力（失敗したジョブに関するより多くの情報を取得するためのユーザによる要求などの）に応答して行われ得る。例えば、ユーザはユーザインターフェース９５６を介し又はジョブの失敗した状態を示す警報又は通信を介し比較機能へアクセスし得る。
【０１０８】
図１３を参照すると、運用コントロールセンタインターフェース３５０の例では、ジョブウィンドウ３５２が、完了ジョブ、現在実行中のジョブ、又は将来実行するようにスケジュールされたジョブなどのジョブに関する詳細へのアクセスを提供する。ジョブウィンドウ３５２から、比較行為３５４は、それを元にジョブが実行されたグラフのバージョンと現バージョン又は旧バージョンなどのグラフの別のバージョンとが比較されることを可能にする。図１２の例では、ジョブウィンドウ３５２は、特定グラフに基づき成功裡に実行された最新ジョブに関する詳細を提供し、比較行為３５４はグラフの当該バージョンとグラフの現バージョンとを比較する。このような比較は、例えば何故グラフの現バージョンに基づき実行されているジョブが最早正常に完了することができないのかを理解するために有用であり得る。このような比較はまた、例えばグラフが初期バージョンに対して修正されたかどうかを判断するために有用であり得る。
【０１０９】
図１４を参照すると、差異をグラフィック的に表す例示的手法では、第１のコンピュータプログラム（例えば第１のグラフ）の仕様と第２のコンピュータプログラム（例えば第２のグラフ）の仕様とが比較される（３００）。比較に基づき、第１のコンピュータプログラムと第２のコンピュータプログラムとの間の１つ又は複数の差異が特定される（３０２）。１つ又は複数の差異は、第１のグラフ内に存在するが第２のグラフ内に存在しないノードを含み得る。１つ又は複数の差異は、第２のグラフ内の第２のノードに対応する第１のグラフ内の第１のノードであって第２のノードの対応する特徴とは異なる特徴（パラメータ値又はパラメータの表現など）を有する第１のノードを含み得る。特定された差異のグラフィック表現はレンダリングされる（３０４）。グラフィック表現はユーザ相互作用に応答する。
【０１１０】
図１５は、差異のグラフィック表現の技術が使用され得るデータ処理システム１０００の例を示す。システム１０００は、格納装置又はオンラインデータストリームへの接続などのデータの１つ又は複数のソース（複数のソースのそれぞれは、データを様々なフォーマット（例えばデータベース表、スプレッドシートファイル、フラットテキストファイル、又はメインフレームコンピュータにより使用される固有フォーマット）のうちの任意のフォーマットで格納又は提供し得る）を含み得るデータソース１００２を含む。データは記号論理学データ、解析データ、又は機械データであり得る。実行環境１００４は前処理モジュール１００６及び実行モジュール１０１２を含む。実行環境１００４は、例えばＵＮＩＸオペレーティングシステムの一バージョンなどの好適なオペレーティングシステムの制御下で１つ又は複数の汎用コンピュータ上でホストされ得る。例えば、実行環境１００４は、複数の中央処理ユニット（ＣＰＵ）又はプロセッサコアを使用するコンピュータシステムの構成を含むマルチプルノードパラレルコンピュータ環境を含み得、これは、ローカル（例えば、対称型マルチ処理（ＳＭＰ：symmetric multi-processing）コンピュータ等のマルチプロセッサシステム）、又はローカル分散型（例えば、クラスタ又は超並列処理（ＭＰＰ：massively parallel processing）として結合される複数プロセッサ）システム、又はリモート又はリモート分散型（例えば、ローカルエリアネットワーク（ＬＡＮ：local area network）及び／又は広域ネットワーク（ＷＡＮ：wide-area network）を介し結合される複数プロセッサ）、又はその任意の組み合せのいずれかである。
【０１１１】
データソース１００２を提供する格納装置は、例えば、実行環境１００４をホストするコンピュータへ接続された格納媒体（例えば、ハードドライブ１００８）上に格納された実行環境１００４に対してローカルであってもよいし、例えばリモート接続（例えばクラウドコンピュータインフラストラクチャにより提供される）上で実行環境１００４をホストするコンピュータと通信するリモートシステム（例えば、メインフレームコンピュータ１０１０）上でホストされる実行環境１００４に対してリモートであってもよい。
【０１１２】
前処理モジュール１００６は、データソース１００２からデータを読み出し、実行のためのデータ処理アプリケーションを準備する。例えば、前処理モジュール１００６は、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションを、実行環境１００４へアクセス可能なデータ格納システム１０１６から及び／又はそれへ格納及び／又はロードし、実行のためのデータ処理アプリケーションを準備するために他のタスクを実行し得る。
【０１１３】
実行モジュール１０１２は、一組のデータを処理しこの処理から生じた出力データ１０１４を生成するために前処理モジュール１００６により準備されるデータ処理アプリケーションを実行する。出力データ１０１４は、データソース１００２内又は実行環境１００４へアクセス可能なデータ格納システム１０１６内に戻され格納されてもよいし、そうでなければ使用されてもよい。データ格納システム１０１６もまた、開発環境１０１８へアクセス可能であり、ここで、開発者１０２０は、実行モジュール１０１２により実行されるデータ処理アプリケーションを設計及び編集することができる。開発環境１０１８は、いくつかの実施形態では、頂点間で方向付けられたリンク（作業要素（すなわちデータ）の流れを表す）により接続された頂点（データ処理部品又はデータセットを表す）を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、このような環境は参照により本明細書に援用する米国特許出願第２００７／００１１６６８号：題名「Managing Parameters for Graph-Based Applications」に詳細に説明されている。このようなグラフベース計算を実行するためのシステムは参照により本明細書に援用する米国特許第５，９６６，０７２号：題名「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」に説明されている。このシステムに従って作製されるデータフローグラフは、グラフ成分により表される個別処理内に情報を入れる及びそこから情報を得、処理間で情報を移動し、そして処理の実行順序を規定するための方法を提供する。本システムは、任意の利用可能方法からプロセス間通信方法を選択するアルゴリズムを含む（例えば、グラフのリンクに従う通信経路は、ＴＣＰ／ＩＰ又はＵＮＩＸドメインソケットを使用してもよいし、処理間でデータ渡すために共有メモリを使用してもよい）。
【０１１４】
前処理モジュール１００６は、データソース１００２を具現化し得る多様なタイプのシステム（様々な形式のデータベースシステムを含む）からデータを受信し得る。データは、恐らく空値を含むそれぞれのフィールド（「属性」又は「列」とも呼ばれる）の値を有するレコードとして編成され得る。データソースからデータを最初に読み出す際、前処理モジュール１００６は通常、当該データソース内のレコードに関するいくつかの初期フォーマット情報により開始する。いくつかの状況では、データソースのレコード構造は当初知られていないかもしれなく、その代わりにデータソース又はデータの解析後に判断され得る。レコードに関する初期情報は、例えば別個の値を表すビットの数、レコード内のフィールドの順序、及びビットにより表される値のタイプ（例えばストリング、符号付き／符号無し整数）を含み得る。
【０１１５】
上述の差異のグラフィック表現の手法は好適なソフトウェアを実行するコンピュータシステムを使用して実施され得る。例えば、ソフトウェアは、それぞれが少なくとも１つのプロセッサ、少なくとも１つのデータ格納システム（揮発性及び／又は不揮発性メモリ及び／又は格納要素を含む）、少なくとも１つのユーザインターフェース（少なくとも１つの入力装置又はポートを使用することにより入力を受信するための、そして少なくとも１つの出力装置又はポートを使用することにより出力を提供するための）を含む１つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム（分散クライアント／サーバ又はグリッドなどの様々なアーキテクチャのものであり得る）上で実行する１つ又は複数のコンピュータプログラム内に手順を含み得る。ソフトウェアは、例えばグラフの設計、構成、及び実行に関係するサービスを提供するより大きなプログラムの１つ又は複数のモジュールを含み得る。プログラムのモジュール（例えばグラフの要素）は、データレポジトリ内に格納されたデータモデルに準拠するデータ構造又は他の編成されたデータとして実装され得る。
【０１１６】
ソフトウェアは、ＣＤ−ＲＯＭ又は他のコンピュータ可読媒体（例えば、汎用又は特殊用途コンピュータシステム又は装置により可読な）などの有形な非一時的な媒体上で提供されてもよいし、ネットワークの通信媒体上で、それが実行されるコンピュータシステムの有形な非一時的媒体へ配送されてもよい（例えば、伝播信号内に符号化されてもよい）。処理の一部又はすべては、特殊用途コンピュータ上で、又はコプロセサ又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ：field-programmable gate array）又は特定用途向け集積回路（ＡＳＩＣ：application-specific integrated circuit）などの専用ハードウェアを使用することにより行われ得る。処理は、分散されたやり方で実施され得、ここでは、ソフトウェアにより規定された計算の様々な部分が様々なコンピュータ要素により行われる。このような各コンピュータプログラムは好適には、本明細書で説明された処理を行うために格納装置媒体がコンピュータにより読み出されると、コンピュータを構成及び操作するための汎用又は特殊用途プログラム可能コンピュータによりアクセス可能な格納装置のコンピュータ可読格納媒体（例えば固体メモリ又は媒体、又は磁気又は光学媒体）上に格納される又はそれへダウンロードされる。本発明システムはまた、コンピュータプログラムにより構成される有形な非一時的媒体として実現されると考えられ得、ここでは、そのように構成された媒体は、コンピュータシステムを、本明細書に記載の処理のうちの１つ又は複数を実行するように特定及び所定やり方で動作させる。
【０１１７】
本発明の多くの実施形態が説明された。それにもかかわらず、これまでの説明は、例示することを意図しているが、添付の請求の範囲により規定される本発明の範囲を制限しないように意図されているということを理解すべきである。したがって、他の実施形態もまた以下の特許請求の範囲に含まれる。例えば、様々な修正が本発明の範囲から逸脱することなく行われ得る。加えて、上に記載されたことのいくつかは、順序に無関係であってもよく、したがって記載されたものと異なる順序で実行され得る。
【図１】
0006913168.tif 000002
【図２Ａ】
0006913168.tif 000003
【図２Ｂ】
0006913168.tif 000004
【図３】
0006913168.tif 000005
【図４】
0006913168.tif 000006
【図５】
0006913168.tif 000007
【図６】
0006913168.tif 000008
【図７】
0006913168.tif 000009
【図８Ａ】
0006913168.tif 000010
【図８Ｂ】
0006913168.tif 000011
【図９】
0006913168.tif 000012
【図１０】
0006913168.tif 000013
【図１１】
0006913168.tif 000014
【図１２】
0006913168.tif 000015
【図１３】
0006913168.tif 000016
【図１４】
0006913168.tif 000017
【図１５】
0006913168.tif 000018