JP2021527249A - 実行可能グラフの更新 - Google Patents

実行可能グラフの更新 Download PDF

Info

Publication number
JP2021527249A
JP2021527249A JP2020567769A JP2020567769A JP2021527249A JP 2021527249 A JP2021527249 A JP 2021527249A JP 2020567769 A JP2020567769 A JP 2020567769A JP 2020567769 A JP2020567769 A JP 2020567769A JP 2021527249 A JP2021527249 A JP 2021527249A
Authority
JP
Japan
Prior art keywords
graph
differences
node
link
difference
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.)
Granted
Application number
JP2020567769A
Other languages
English (en)
Other versions
JPWO2019236519A5 (ja
JP7200266B2 (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 JP2021527249A publication Critical patent/JP2021527249A/ja
Publication of JPWO2019236519A5 publication Critical patent/JPWO2019236519A5/ja
Priority to JP2022203622A priority Critical patent/JP7381705B2/ja
Application granted granted Critical
Publication of JP7200266B2 publication Critical patent/JP7200266B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Generation (AREA)
  • Oscillators With Electromechanical Resonators (AREA)
  • Massaging Devices (AREA)
  • Vehicle Body Suspensions (AREA)
  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)

Abstract

ベースグラフに基づいて更新されたグラフを生成する方法は、ベースグラフ、各ソースグラフ、及びターゲットグラフ間納佐を識別することを含む。各グラフの仕様は、データを処理する演算を定義するデータ処理コンポーネントを表すノードと、データのフローを表すリンクとを定義する。識別することは、ベースグラフ及びソースグラフの仕様を比較することであって、それにより、ベースグラフとソースグラフとの間の第1の組の差分を識別する、比較することと、ベースグラフとターゲットグラフとの仕様を比較することであって、それにより、ベースグラフとターゲットグラフとの間の第2の組の差分を識別する、比較することとを含む。方法は、第1の組における差分と第2の組における差分との間の対応性を特徴付けることと、対応性及び第1の組の差分及び第2の組の差分に基づいて1組の結合差分を特定することと、ベースグラフ及び1組の結合差分に基づいて更新されたグラフを生成することとを含む。

Description

優先権の主張
本願は、2018年6月6日付けで出願された米国特許出願第62/681,395号明細書及び2018年10月5日付けで出願された米国特許出願第16/153,320号明細書の優先権を主張するものであり、これら両特許出願の内容は全体的に、参照により本明細書に援用される。
コンピュータプログラムの開発又は実行中、コンピュータプログラムに変更を行うことができる。時に、ある開発者又はある開発者チームが、別の開発者又は別の開発者チームによって行われた変更から独立してコンピュータプログラムに変更を行うことがある。
一態様では、ベースグラフに基づいて更新データフローグラフを生成する方法は、第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を識別することを含む。第1のデータフローグラフはベースグラフを含み、第2のデータフローグラフはソースグラフを含み、第3のデータフローグラフはターゲットグラフを含む。データフローグラフのそれぞれの仕様はノードを定義し、ノードの少なくとも1つは、提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクはノードを接続し、各リンクはデータのフローを表す。識別することは、ベースグラフの仕様とソースグラフの仕様とを比較することであって、それにより、ベースグラフとソースグラフとの間の第1の組の差分を識別し、第1の組の差分は、第1の削除ノード、第1の削除リンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較することと、ベースグラフの仕様とターゲットグラフの仕様とを比較することであって、それにより、ベースグラフとターゲットグラフとの間の第2の組の差分を識別し、第2の組の差分は、第2の削除ノード、第2の削除リンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較することを含む。本方法は、第1の組の差分における差分と第2の組の差分における差分との間の対応性を特徴付けることであって、(i)第2の組の差分において識別されるノード若しくはリンクに対応する第1の組の差分において識別されるノード若しくはリンク、(ii)第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない第1の組の差分において識別されるノード若しくはリンク、又は(iii)第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む、特徴付けることを含む。本方法は、特徴付けられた対応性、ベースグラフとソースグラフとの間の第1の組の差分、及びベースグラフとターゲットグラフとの間の第2の組の差分に基づいて1組の結合差分を特定することを含む。本方法は、ベースグラフ及び1組の結合差分に基づいて更新データフローグラフを生成することを含む。
実施形態は以下の特徴の1つ又は複数を含むことができる。
第1の特徴において、先の特徴の任意の1つ又は複数と組み合わせて、ソースグラフ、ベースグラフ、ターゲットグラフ、及び更新データフローグラフは、実行可能データフローグラフである。
第2の特徴において、先の特徴の任意の1つ又は複数と組み合わせて、ソースグラフは、ベースグラフの第1の変更バージョンであり、ターゲットグラフは、ベースグラフの第2の変更バージョンである。
第3の特徴において、先の特徴の任意の1つ又は複数と組み合わせて、本方法は、第1の組の差分及び第2の組の差分を生成することを含む。各組の差分は、組中の各差分について、差分のタイプを識別する情報及び(i)差分に関連する1つ又は複数のノードを示す情報又は(ii)差分に関連する1つ又は複数のリンクを示す情報の1つ又は複数を含む。
第4の特徴において、先の特徴の任意の1つ又は複数と組み合わせて、差分のタイプは、削除、追加、又は変更の1つ又は複数を含む。
第5の特徴において、第3又は第4の特徴と組み合わせて、差分に関連する1つ又は複数のノードを示す情報は、(i)削除、追加、又は変更されたノードを識別する情報と、(ii)削除、追加、又は変更されたノードの上流にあるノードを識別する情報及び(iii)削除、追加、又は変更されたノードの下流にあるノードを識別する情報の1つ又は複数とを含む。
第6の特徴において、第3〜第6の特徴の何れか1つと組み合わせて、差分に関連する1つ又は複数のノードを示す情報は、(i)追加されたリンクを識別する情報及び(ii)削除されたリンクを識別する情報の1つ又は複数を含む。
第7の特徴において、先の特徴の任意の1つ又は複数と組み合わせて、1組の結合差分を生成することは、1組の結合差分に、第2の組の差分において識別されるいかなるノード又はリンクにも対応しない第1の組の差分において識別されるノード又はリンクを示す情報を含むことを含む。
第8の特徴において、先の特徴の任意の1つ又は複数と組み合わせて、本方法は含む1組の結合差分を生成することは、1組の結合差分に、第1の組の差分において識別されるいかなるノード又はリンクにも対応しない第2の組の差分において識別されるノード又はリンクを示す情報を含むことを含む。
第9の特徴において、先の特徴の任意の1つ又は複数と組み合わせて、本方法は、第1の組の差分において識別されるノード又はリンクと第2の組の差分において識別される対応するノード又はリンクとの互換性を特定することを含む。
第10の特徴において、第9の特徴と組み合わせて、第1の組の差分において識別されるノード又はリンクは、第1の変更ノード又はリンクを含み、第2の組の差分において識別されるノード又はリンクは、第2の変更ノード又はリンクを含む。互換性を特定することは、第1の変更ノード又はリンクに関連する変更が第2の変更ノード又はリンクに関連する変更と互換性を有すると判断することと、1組の結合差分に、第1の組の差分において識別されるノード又はリンク及び第2の組の差分において識別されるノード又はリンクの両方を示す情報を含むこととを含む。
第11の特徴において、第9又は第10の特徴と組み合わせて、第1の組において識別されるノード又はリンクは、第1の変更ノード又はリンクを含み、第2の組の差分において識別されるノード又はリンクは、第2の変更ノード又はリンクを含む。互換性を特定することは、第1の変更ノード又はリンクに関連する変更が第2の変更ノード又はリンクに関連する変更と互換性を有すると判断することと、第1の変更ノード若しくはリンク、第2の変更ノード若しくはリンクを選択するか、又はいずれも選択しないことと、1組の結合差分に選択されたノード又はリンクを示す情報を含めることとを含む。
第12の特徴において、先の任意の特徴と組み合わせて、1組の結合差分を特定することは、対応すると判断された差分対について、差分が互換性を有すると判断することと、1組の結合差分に対の両方の差分を示す情報を含めることとを含む。
第13の特徴において、先の任意の特徴と組み合わせて、1組の結合差分を特定することは、対応すると判断された差分対について、差分が競合すると判断することと、対の差分の一方を選択することと、1組の結合差分に選択された差分を示す情報を含めることとを含む。
第14の特徴において、第13の特徴と組み合わせて、本方法は、選択基準に基づいて差分の一方を選択することを含む。
第15の特徴において、先の任意の特徴と組み合わせて、本方法は、対の両方の差分を示す情報をユーザインターフェースに提示することと、ユーザ入力に基づいて差分の一方を選択することとを含む。
第16の特徴において、先の任意の特徴と組み合わせて、更新データフローグラフを生成することは、ベースグラフのコピーを生成することと、1組の結合差分における各差分をコピーに適用することとを含む。
第17の特徴において、先の任意の特徴と組み合わせて、ベースグラフの仕様とソースグラフの仕様とを比較することは、ベースグラフとソースグラフとの間の対応性を特定することを含む。
第18の特徴において、第17の特徴と組み合わせて、ベースグラフとソースグラフとの間の対応性を特定することは、(1)ソースグラフのノード又はリンクに対応するベースグラフの第1のノード又はリンクを識別すること、(2)ソースグラフのいずれのノードにも対応しないベースグラフの第2のノード又はリンクを識別すること、及び(3)ベースグラフのいずれのノード又はリンクにも対応しないソースグラフの第3のノード又はリンクを識別することの1つ又は複数を含む。
第19の特徴において、第18の特徴と組み合わせて、ベースグラフとソースグラフとの間の第1の組の差分を識別することは、ベースグラフの第1のノード又はリンクとソースグラフの対応するノード又はリンクとの間の差分を識別することを含む。
第20の特徴において、第19の特徴と組み合わせて、第1のノード又はリンクとソースグラフの対応するノード又はリンクとの間の差分を識別することは、第1のノード又はリンクのパラメータ及びパラメータの表現の1つ又は複数と対応する第1のノード又はリンクのパラメータ又はパラメータの表現との間の差分を識別することを含む。
第21の特徴において、先の任意の特徴と組み合わせて、ベースグラフはベースサブグラフを含み、ソースグラフは第1のサブグラフを含む。本方法は、ベースサブグラフの仕様と第1のサブグラフの仕様とを比較して、ベースサブグラフと第1のサブグラフとの間の1つ又は複数の差分を識別することを含む。
第22の特徴において、先の任意の特徴と組み合わせて、第1のデータフローグラフはベースグラフであり、第2のデータフローグラフはソースグラフであり、第3のデータフローグラフはターゲットグラフである。
第23の特徴において、先の任意の特徴と組み合わせて、リンクはノード間のデータのフローを表す。
第24の特徴において、先の任意の特徴と組み合わせて、リンクは、ノード間の制御信号のフローを表す。
第25の特徴において、先の任意の特徴と組み合わせて、ベースグラフ、ソースグラフ、及びターゲットグラフはデータ処理グラフを含む。
第26の特徴において、先の任意の特徴と組み合わせて、ベースグラフ、ソースグラフ、及びターゲットグラフは制御グラフを含む。
第27の特徴において、先の任意の特徴と組み合わせて、ベースグラフ、ソースグラフ、及びターゲットグラフはプランを含む。
第28の特徴において、先の任意の特徴と組み合わせて、差分間の対応性を特定することは、(1)第1の組の差分及び第2の組の差分の一方のみで識別されるノード又はリンクが関わる差分及び(2)第1の組の差分及び第2の組の差分の両方において識別されるノード又はリンクが関わる差分を識別することを含む。
第29の特徴において、先の任意の特徴と組み合わせて、1組の結合差分を特定することは、第1の組の差分及び第2の組の差分の一方のみで識別されるノード又はリンクが関わる差分の第1の組の差分及び第2の組の差分のそれぞれについて、その差分が1組の結合差分に追加されることを示す情報と、第1の組の差分及び第2の組の差分の両方において識別されるノード又はリンクが関わる差分の第1の組の差分及び第2の組の差分のそれぞれについて、互換性分析が実行されることとを含む。
第30の特徴において、第29の特徴と組み合わせて、互換性分析を実行することは、第1の差分が第2の差分と競合するか否かを判断することであって、競合する差分対は、競合する差分対の一方のベース実行可能グラフへの適用が、競合する差分対の他方のベース実行可能グラフへの適用を妨げる場合、競合する、判断することを含む。
第31の特徴において、第30の特徴と組み合わせて、本方法は、任意の競合する差分対の場合、選択基準に従って競合する差分対の一方を選択することにより、競合する差分対の競合を解決することと、選択された差分を示す情報を1組の結合差分追加することとを含む。
第32の特徴において、第30又は第31の特徴と組み合わせて、本方法は、グラフィカルユーザインターフェースを提供することと、グラフィカルユーザインターフェースを介して、競合する差分対を視覚的に表す情報を表示することとを含む。
第33の特徴において、第32の特徴と組み合わせて、本方法は、グラフィカルユーザインターフェースを介して、競合する差分対から選択された1つ又は複数の差分の1つ又は複数の視覚的表現及び選択から生じる更新データフローグラフのそれぞれの視覚的表現を表示することを含む。
第34の特徴において、第33の特徴と組み合わせて、本方法は、ユーザからグラフィカルユーザインターフェースを介して、視覚的表現の1つの選択、示唆される1つ又は複数の選択を含む入力を受信することであって、選択基準は入力により定義される、受信することを含む。
一態様では、非一時的コンピュータ可読媒体は、計算システムに、ベースグラフに基づいて更新データフローグラフを生成させる命令を記憶する。命令は、第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を計算システムに識別させる命令を含み、第1のデータフローグラフはベースグラフを含み、第2のデータフローグラフはソースグラフを含み、第3のデータフローグラフはターゲットグラフを含む。データフローグラフのそれぞれの仕様はノードを定義し、ノードの少なくとも1つは、提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクはノードを接続し、各リンクはデータのフローを表す。識別することは、ベースグラフの仕様とソースグラフの仕様とを比較することであって、それにより、ベースグラフとソースグラフとの間の第1の組の差分を識別し、第1の組の差分は、プラン第1の削除されたノード、第1の削除されたリンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較することと、ベースグラフの仕様とターゲットグラフの仕様とを比較することであって、それにより、ベースグラフとターゲットグラフとの間の第2の組の差分を識別し、第2の組の差分は、第2の削除されたノード、第2の削除されたリンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較することを含む。命令は、計算システムに、第1の組の差分における差分と第2の組の差分における差分との間の対応性を特徴付けさせる命令であって、(i)第2の組の差分において識別されるノード若しくはリンクに対応する第1の組の差分において識別されるノード若しくはリンク、(ii)第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない第1の組の差分において識別されるノード若しくはリンク、又は(iii)第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む、計算システムに特徴付けさせる命令を含む。命令は、特徴付けられた対応性、ベースグラフとソースグラフとの間の第1の組の差分、及びベースグラフとターゲットグラフとの間の第2の組の差分に基づいて1組の結合差分を計算システムに特定させる命令と、ベースグラフ及び1組の結合差分に基づいて更新データフローグラフを計算システムに生成させる命令とを含む。
一態様では、ベースグラフに基づいて更新データフローグラフを生成する計算システムは、メモリに結合される1つ又は複数のプロセッサを含む。1つ又は複数のプロセッサ及びメモリは、第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を識別するように構成され、第1のデータフローグラフはベースグラフを含み、第2のデータフローグラフはソースグラフを含み、第3のデータフローグラフはターゲットグラフを含む。データフローグラフのそれぞれの仕様はノードを定義し、ノードの少なくとも1つは、提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクはノードを接続し、データのフローを表す。識別することは、ベースグラフの仕様とソースグラフの仕様とを比較することであって、それにより、ベースグラフとソースグラフとの間の第1の組の差分を識別し、第1の組の差分は、プラン第1の削除されたノード、第1の削除されたリンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較することと、ベースグラフの仕様とターゲットグラフの仕様とを比較することであって、それにより、ベースグラフとターゲットグラフとの間の第2の組の差分を識別し、第2の組の差分は、第2の削除されたノード、第2の削除されたリンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較することを含む。1つ又は複数のプロセッサ及びメモリは、第1の組の差分における差分と第2の組の差分における差分との間の対応性を特徴付けるように構成され、特徴付けることは、(i)第2の組の差分において識別されるノード若しくはリンクに対応する第1の組の差分において識別されるノード若しくはリンク、(ii)第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない第1の組の差分において識別されるノード若しくはリンク、又は(iii)第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む。1つ又は複数のプロセッサ及びメモリは、特徴付けられた対応性、ベースグラフとソースグラフとの間の第1の組の差分、及びベースグラフとターゲットグラフとの間の第2の組の差分に基づいて1組の結合差分を特定することと、ベースグラフ及び1組の結合差分に基づいて更新データフローグラフを生成することとを行うように構成される。
一態様では、ベースグラフに基づいて更新データフローグラフを生成する計算システムは、第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を識別する手段を含み、第1のデータフローグラフはベースグラフを含み、第2のデータフローグラフはソースグラフを含み、第3のデータフローグラフはターゲットグラフを含む。データフローグラフのそれぞれの仕様はノードを定義し、ノードの少なくとも1つは、提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクはノードを接続し、データのフローを表す。識別することは、ベースグラフの仕様とソースグラフの仕様とを比較することであって、それにより、ベースグラフとソースグラフとの間の第1の組の差分を識別し、第1の組の差分は、プラン第1の削除されたノード、第1の削除されたリンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較することと、ベースグラフの仕様とターゲットグラフの仕様とを比較することであって、それにより、ベースグラフとターゲットグラフとの間の第2の組の差分を識別し、第2の組の差分は、第2の削除されたノード、第2の削除されたリンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較することを含む。本計算システムは、第1の組の差分における差分と第2の組の差分における差分との間の対応性を特徴付ける手段を含み、特徴付けることは、(i)第2の組の差分において識別されるノード若しくはリンクに対応する第1の組の差分において識別されるノード若しくはリンク、(ii)第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない第1の組の差分において識別されるノード若しくはリンク、又は(iii)第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む。本計算システムは、特徴付けられた対応性、ベースグラフとソースグラフとの間の第1の組の差分、及びベースグラフとターゲットグラフとの間の第2の組の差分に基づいて1組の結合差分を特定する手段を含む。本計算システムは、ベースグラフ及び1組の結合差分に基づいて更新データフローグラフを生成する手段を含む。
本明細書に記載される手法は、データフローグラフ(すなわち、コンピュータプログラム)の複数のバージョンを、各バージョンでの変更を反映した1つの更新データフローグラフに効率的且つ高信頼的に自動的に併合できるようにする。この自動化された併合は、例えば、複数のチームのそれぞれにより独立して実行されたコンピュータプログラムへの開発作業又はデバッグ作業を1つの更新されたコンピュータプログラムに効率的且つ高信頼的に結合するのに使用することができる。この効率的で高信頼的なバージョン管理は、ソフトウェア開発プロセス中、プログラム開発者を助け、したがって、この開発プロセスをもより効率的且つ精密にする。
データフローグラフの図表現である。 データフローグラフの図表現である。 データフローグラフの図表現である。 データフローグラフの図表現である。 システム図である。 データフローグラフの図表現である。 データフローグラフの図表現である。 データフローグラフの図表現である。 データフローグラフの図表現である。 フローチャートである。 フローチャートである。 スクリーンショットである。 スクリーンショットである。 スクリーンショットである。 スクリーンショットである。 フローチャートである。 データフローグラフを開発するデータ処理システムの図である。
本明細書において、コンピュータプログラムの複数のバージョンを1つの更新されたプログラムに結合する手法について説明する。例えば、データフローグラフ等のコンピュータプログラム、例えばデータ処理グラフ、制御グラフ、又はプランを開発又はデバッグする場合、複数の開発者又は複数の組の開発者はそれぞれ、独立してコンピュータプログラムに対して作業し得る。その結果として、コンピュータプログラムの複数の変更されたバージョンが生成され得る。ベースコンピュータプログラムと、ベースコンピュータプログラムのこれらの変更された各バージョンとの間の差分を識別し、全ての差分の完全な組をベースコンピュータプログラムに適用して、ベースコンピュータプログラムの変更された各バージョンで行われた変更を反映した1つの更新されたコンピュータプログラムを生成することができる。
データフローグラフは、データソース及びデータシンク等のデータ処理コンポーネント及びデータセットを示すノードを含むことができるコンピュータプログラムのグラフ表現である。データセットは、例えば、ファイル、データベーステーブル、又はグラフによる処理若しくはグラフによる処理されたデータの受信のためにデータ(例えば、データレコード)を提供することができる他のタイプのデータソース若しくはシンクであることができる。データ処理コンポーネント及びデータセットは時にまとめてグラフのノードと呼ばれる。グラフの2つのノードを結ぶリンクは、第1のノードと第2のノードとの間のデータ又は制御信号等の情報のフローを表す。そのようなデータフローグラフ(時にグラフと呼ばれる)は、データ処理グラフ、制御グラフ、又はプランであることができる。幾つかの例では、データフローグラフは、情報の処理を実行するために実行することが可能であることができる。幾つかの例では、データフローグラフは実行可能ではなく、例えばなお開発中又はデバッグ中であるコンピュータプログラムの表現であるデータフローグラフである。図1は、データを処理するように構成され、各リンク14、20により第1のノード16にそれぞれ接続されたデータソース12、18を含むデータフローグラフ10を示す。フィルタノード16は、リンク24、28によりデータシンク22、26にそれぞれ接続される。
グラフのノードは、リンクを接続することができる入力ポート及び/又は出力ポートを有することができる。図1の例では、リンク14、20の上流端部は、対応するデータソース12、18の出力ポートに接続される。リンク24の上流端部はフィルタノード16の出力ポートに接続される。リンク14、20の下流端部は、フィルタノード16の入力ポートに接続される。リンク24、28の下流端部は、対応するデータシンク22、26の入力ポートに接続される。
データ処理コンポーネントは、演算を実行して、データを処理又は操作する。ノードは、実行されると、データ処理コンポーネントの演算を実施するプログラミングコードにより定義されるオブジェクトであるデータ処理コンポーネント(例えば、ソフトウェアとハードウェアトの組合せ)の図表現である。データ処理コンポーネントの例には、マッピングコンポーネント、フィルタコンポーネント、重複排除コンポーネント、集計コンポーネント、複製コンポーネント、正規化コンポーネント、パーテーション及びソートコンポーネント、結合コンポーネント、又は他のタイプのデータ処理コンポーネントがある。幾つかの例では、データソースコンポーネント及びデータシンクコンポーネントはデータ処理コンポーネントと見なすことができる。データ処理コンポーネントの演算は、1つ又は複数のパラメータに関して定義することができる。パラメータは、データ処理コンポーネントのコードにより参照されるファイル(例えば、.dmlファイル)において定義することができる。例えば、ファイルは、データ処理コンポーネントに関連するパラメータの値又は式を含むことができる。グラフがインスタンス化される(例えば、実行時に)場合、パラメータの式は評価されて、時にパラメータの解決と呼ばれることもあるパラメータの値を取得する。パラメータの値又は式は、例えば、ユーザインターフェースを介してユーザにより(例えば、プロンプトに応答して)定義、ファイルから定義、又は同じコンテキスト若しくは異なるコンテキストでの別のパラメータに関して定義することができる。例えば、パラメータは、別のパラメータと「同じ」関係を有するようにパラメータを指定することにより、異なるコンテキスト(例えば、異なるコンポーネントのコンテキストで評価されるパラメータ)からエクスポートすることができる。図1の例では、フィルタノード16及びその対応するコンポーネントは、関連するパラメータセット15を有する。
初期の変更されていないデータフローグラフをベース実行可能グラフ又はベースグラフと呼ぶ。ベースグラフと比較して変更されたグラフの第1の変更バージョンをソース実行可能グラフ又はソースグラフと呼ぶ。ベースグラフと比較して変更されたグラフの第2の変更バージョンをターゲット実行可能グラフ又はターゲットグラフと呼ぶ。ソース実行可能グラフ及びターゲット実行可能グラフの両方からの変更を組み込んだグラフを更新データフローグラフと呼ぶ。
差分分析をソースグラフ及びターゲットグラフのそれぞれに実行されて、ベースグラフとソースグラフ及びターゲットグラフのそれぞれとの間の対応する1組の差分を識別する。差分分析の結果は複数の組の差分であり、各組の差分はベースグラフトソースグラフ及びターゲットグラフの一方との間の差分を示す。複数の組の差分は1つの組の結合差分に併合される。1組の結合差分はベースグラフに適用されて、更新グラフを生成する。これは、上述した効率的で高信頼的なバージョン管理の提供に寄与する。
一例では、図1のデータフローグラフ10はベースグラフである。図2A及び図2Bはソースグラフ30及びターゲットグラフ40をそれぞれ示す。差分分析をソースグラフ30及びターゲットグラフ40のそれぞれに実行して、ベースグラフ10と各グラフ30、40との間の差分を識別する。第1のグラフ及び第2のグラフ(例えば、ベースグラフ10及びソースグラフ30)の差分分析は、ソースグラフ30には存在するが、ベースグラフ10には存在しないノード(追加ノードと呼ばれる)、ベースグラフ10には存在するが、ソースグラフ30には存在しない1つ又は複数のノード(削除ノードと呼ばれる)、及びベースグラフ10及びソースグラフ30の両方に存在するが、変更された1つ又は複数のノード(変更ノードと呼ばれる)を識別する。変更ノードは一般に、第1のグラフと第2のグラフとで同様であることができるが、更に後述するように、パラメータ、属性、又はノードに関連する他の特徴が変更されている。差分分析はまた、第1のグラフの1つ又は複数のリンクと第2のグラフの1つ又は複数のリンクとの間の差分を識別することもできる。差分分析の更なる説明を以下に提供する。
図2A及び図2Bの例では、ソースグラフ30への差分分析の結果、追加ノード32、追加フロー34、35、36、及び削除フロー14、20を識別する第1の組の差分が生成される。ターゲットグラフ40への差分分析の結果、変更されたパラメータセット15’を有する変更ノード16、削除ノード26、及び削除リンク28を識別する第2の組の差分が生成される。
複数の組の差分は、より詳細に後述する1つの組の結合差分に結合される。図2A及び図2Bの例では、1組の結合差分は、追加ノード32、削除ノード26、変更ノード16、並びに追加フロー及び削除フローを識別する。図2Cも参照すると、1組の結合差分をベースグラフ10(又はそのコピー)に適用して、更新グラフ50を生成する。更新グラフ50は、1組の結合差分に従って変更されたベースグラフ10のノード及びリンクを含む。すなわち、ベースグラフと比較してソースグラフ及びターゲットグラフの何れか一方において追加されたノード及びリンクは、更新グラフにおいてベースグラフと比較して追加される(すなわち、生成される)。ベースグラフと比較してソースグラフ及びターゲットグラフの何れか一方において削除されたノード及びリンクは、更新グラフにおいてベースグラフと比較して削除される(すなわち、生成されない)。
図3を参照すると、グラフ更新システム300は、ベースグラフ302とソースグラフ304及びターゲットグラフ306のそれぞれとの間の差分を識別し、ベースグラフ302と比較して両グラフ304、306において行われた変更を反映した1つの更新グラフ350を生成する。グラフ更新システム300は、差分分析をソースグラフ304及びターゲットグラフ306のそれぞれに対して実行し、各グラフ304、306に対応する1組の差分312、314を出力する差分エンジン310を含む。各組の差分はベースグラフ302と対応するグラフ304、306との間の差分を識別する。グラフ更新システム300はまた、複数の組の差分312、314を併合して1つの組の結合差分322にする併合エンジン320も含む。グラフ更新エンジン330は、ベースグラフ302及び1組の結合差分322に基づいて更新グラフ350を生成する。
差分分析は、所与のグラフ(例えば、ソースグラフ又はターゲットグラフ)に対して、ソース又はターゲットグラフで削除されたベースグラフ302内のノード、ソース又はターゲットグラフに追加されたノード、及びソース又はターゲットグラフで変更されたノードを識別する。幾つかの例では、差分分析はリンクも分析して、削除されたリンク、追加されたリンク、及び変更されたリンクを識別する。差分エンジン310は、ベースグラフ302の仕様をソースグラフ及びターゲットグラフのそれぞれの仕様と比較して、ベースグラフ302内のどのノード(例えば、データ処理コンポーネント、入力データセット、又は出力データセットに対応するノード)がソースグラフ及びターゲットグラフのそれぞれ内のノードに対応するかを特定する。グラフの仕様は、グラフとは別個であり、グラフのノード及びリンク等のグラフの要素を定義するファイルである。
対応するノードは、データグラフ及びソース又はターゲットグラフの両方に何らかの形で関わるが、必ずしも同一である必要はなく、ベースグラフとソース又はターゲットグラフとの間で差分を有することができるが、一般に、両グラフにおいて同じノードとみなすのに十分、類似するノード(関連するパラメータセットが異なるが、他の点は同一のノード等)である。幾つかの例では、差分エンジン310は、ノードのタイプ(例えば、データ処理コンポーネント又はデータセット)、ノードの名称、ノードの一意の識別子、又はノードに関連する他のメタデータの1つ又は複数等のノードに関連するメタデータに基づいて、対応するノードを識別する。幾つかの例では、差分エンジン310は、ポートの名称若しくは番号、ノードへのデータフローの名称若しくはソース、ノード若しくはコンポーネントからのデータフローの名称若しくは宛先、又はノード若しくはコンポーネント内若しくは外へのデータフローに関連する他の情報等のノード又はコンポーネント内又は外へのデータフローに関連する情報に基づいて、対応するノードを識別する。幾つかの例では、差分エンジン310は、特定のノードが他のノードと比較してグラフのどこに位置するか(例えば、1つ又は複数のどのノードが特定のノードの真上又は真下にあるか)等のトポロジ情報に基づいて、対応するノードを識別する。幾つかの例では、差分エンジン310は、カンバス上のグラフの図表現におけるノードのロケーション(例えば、x−y座標)に基づいて、対応するノードを識別する。幾つかの例では、例えば、カンバス上のノードのロケーションがノード又はノードを含むグラフの機能に何の影響も有さないため、差分エンジン310は、対応するノードを識別するに当たり、ロケーション情報を無視する。
所与のグラフ(例えば、ソースグラフ304又はターゲットグラフ306)の差分分析において、ソースグラフ304又はターゲットグラフ306に対応するノードがないベースグラフ302内の任意のノードは、そのグラフの1組の差分における削除ノードとして差分エンジン310により識別される。ベースグラフ302に対応するノードがないソースグラフ304又はターゲットグラフ306内の任意のノードは、そのグラフの1組の差分において追加ノードとして差分エンジン310により識別される。
対応するノードの対は、差分エンジン310により更に分析されて、ソースグラフ304又はターゲットグラフ306内のノードが、ベースグラフ302内の対応するノードと比較して任意の差分を有するか否かを判断する。差分が識別される場合、ノードは差分エンジン310により変更ノードとして識別される。幾つかの例では、差分エンジン310は、グラフの実行に影響することができるノードの特徴及びグラフの実行に影響しないノードの特徴の両方を分析することができる。グラフの実行に影響する特徴は、例えば、パラメータ式又はパラメータ値等のパラメータを含むことができる。グラフの実行に影響しない特徴は、例えば、属性値(例えば、オーサー属性、名称属性、バージョン属性、若しくは他の属性)、コメント、レジェンド、フォーマット(例えば、フォント)、カンバス上のノードのロケーション、又は他の特徴を含むことができる。幾つかの例では、差分エンジン310は、グラフの実行に影響することができる特徴のみを分析することができ、グラフの実行に影響しない特徴を無視することができる。
対応するノード対のパラメータの分析は、任意のパラメータが追加されたか(例えばソース又はターゲットグラフのノードに存在するが、ベースグラフの対応するノードに存在しないパラメータ)、それとも削除されたか(例えば、ベースグラフのノードに存在するが、ソース又はターゲットグラフの対応するノードに存在しないパラメータ)を識別することができる。パラメータの分析は、パラメータを定義する式、パラメータの値、又は両方の分析を含むことができる。パラメータの式を分析するために、パラメータ分析を各ノードに対応するソースコードに対して実行することができる。
幾つかの例では、差分分析はまた、ベースグラフ及びソース又はターゲットグラフにより参照される外部ファイルの分析を含むこともできる。幾つかの例では、レコードフォーマットファイル(例えば.dmlファイル)、変換ファイル(例えば.xfrファイル)、又は内容がグラフの実行に影響することができる他のタイプのファイル等の特定のタイプのファイルのみが差分エンジン310により分析される。
ベースグラフとソース又はターゲットグラフとの間の差分分析の結果は、各差分(ノード削除、ノード追加、及びノード変更のそれぞれ)を示す情報を含む1組の差分(例えば、組312、314)である。削除ノードを示す情報は、以下の1つ、複数、又は全てを含むことができる:
・ベースグラフにおけるノードを識別し(例えば、ノードの一意の識別子)、ノードの削除を示す情報、
・ベースグラフにおけるノードの上流にあるノードを識別する情報、
・ベースグラフにおけるノードの下流にあるノードを識別する情報、
・上流ノードからベースグラフにおけるノードへの入力フローを識別し、入力リンクの削除を示す情報、
・ベースグラフにおけるノードから下流ノードへの出力を識別し、リンクの削除を示す情報、及び
・上流ノードをソース又はターゲットグラフにおける下流ノードに接続するフローを識別し、リンクの追加を示す情報。
追加ノードを示す情報は、以下の1つ、複数、又は全てを含むことができる:
・ノードの機能を示す情報(例えば、ノードの仕様、ノードのパラメータセット、又はノード機能を示す他の情報)、
・ソース又はターゲットグラフにおける追加ノードの上流にあるノードを識別する情報、
・ソース又はターゲットグラフにおける追加ノードの下流にあるノードを識別する情報、
・上流ノードからソース又はターゲットグラフにおける追加ノードへのリンクを識別し、リンクの追加を示す情報、
・追加ノードからソース又はターゲットグラフにおける下流ノードへのリンクを識別し、リンクの追加を示す情報、及び
・上流ノードからベースグラフにおける下流ノードへのリンクを識別し、リンクの削除を示す情報。
変更ノードを示す情報は、以下の1つ、複数、又は全てを含むことができる:
・ノードを識別する情報及び
・ノードへの変更を示す情報(例えば、更新パラメータリスト)。
差分分析の更なる説明は、2017年5月5日付けで出願された米国特許出願第15/587,987号明細書において提供され、この特許出願の内容は全体的に、参照により本明細書に援用される。
併合エンジン320は、複数の組の差分312、314を併合して1組の結合差分322にする。そうするために、併合エンジン320は、差分対312、314間の対応性を特定して、(1)差分対の1つのみで識別されるノードが関わる差分及び(2)複数の組の差分の2つ以上で識別されるノードが関わる差分を識別する。特定のノードが関わる差分とは、情報が特定のノードを例えば削除ノード、追加ノード、変更ノード、上流ノード、又は下流ノードとして識別する差分を示す差分を意味する。差分対の1つのみで識別されるノードが関わる各差分について、その差分を示す情報は1組の結合差分322に追加される。2つ以上の組の差分で識別されるノードが関わる各差分について、併合エンジン320は互換性分析を実行する。
互換性分析とは、第1の差分が第2の差分と競合するか、それとも互換性を有するかを判断する分析である。差分対は、ベースグラフのコピーへの差分の1つの適用が、差分の他の1つのコピーへの適用を妨げる場合、競合対と呼ばれる。競合対の一例は、フィルタコンポーネントの削除及びその同じフィルタコンポーネントのパラメータへの変更である。競合対の別の例は、リフォーマットコンポーネントの削除及びフローによるそのリフォーマットコンポーネントに接続されたデータソースの追加である。競合対の別の例は、コンポーネントのパラメータへの第1の変更及びコンポーネントのその同じパラメータへの第2の異なる変更である。
併合エンジン320は、差分対を選択することにより各競合対を解決する。選択された差分を示す情報は1組の結合差分322に追加される。幾つかの例では、併合エンジン320は、選択基準324、例えば競合の解決の仕方についてユーザにより提供される指示を参照して各差分対を解決する。例えば、選択基準は、複数の差分対の優先順位を指定し、併合エンジン320がより高優先度の差分対から差分を選択すべきことを示し得る。幾つかの例では、併合エンジン320は、ユーザが各競合対から差分を手動で選択することができるように、競合対をユーザインターフェース340に表示させる。
幾つかの例では、競合対は、テキスト情報として、例えばリストとしてユーザに提示することができる。幾つかの例では、競合対は、例えば、2017年5月5日付けで出願された米国特許出願第15/587,987号明細書に記載されるように、各差分の図表現を使用してユーザに提示することができ、この米国特許出願の内容は全体的に、参照により本明細書に援用される。
グラフ更新エンジン330は、1組の結合差分322における差分に基づいて更新グラフ350を生成する。例えば、グラフ更新エンジン330は、ベースグラフ302のコピーを生成し、1組の結合差分における差分をコピーに適用することができる。各差分について、1組の結合差分322は、リンクの追加又は削除及びノードの追加、削除、又は変更を含め、行うべき1つ又は複数の変更を識別する。グラフ更新エンジン330はこれらの各変更をコピーに適用する。全ての変更が適用されたコピーが更新グラフ350である。
幾つかの例では、1組の結合差は互換性がある差分のみを含むことができ、したがって、更新グラフ350は互換性のある差分のみを反映する。差分の競合対が解決されると、解決された差分も更新グラフに適用することができる。
図4A〜図4Dを参照して、差分を併合する一例を示す。図4Aは、銀行取引レコードを処理するベースグラフ400を示す。ベースグラフ400は、データソース402、リフォーマットノード404、フィルタノード406、及びデータシンク408を有する。フィルタノード406には、transaction_amountフィールドを識別するfilter_byパラメータを含むパラメータセット405が関連付けられる。ノードは、図4Aに示されるように、リンク410、412、416により接続される。
図4B及び図4Cはそれぞれソースグラフ420及びターゲットグラフ440である。差分分析は、ソースグラフ420において、フィルタノード406が削除され、追加のデータソース422が追加されたことを識別する。ターゲットグラフ440では、フィルタノード406には、filter_byパラメータがtransaction_dateフィールドである変更パラメータセット405’が関連付けられ、追加のソートノード442が追加された。
ソースグラフ420の1組の差分は以下の情報を含む:
・削除されたフィルタノード406を示す情報:
・フィルタノード406の識別子、
・ベースグラフ400においてフィルタノード406の上流にあるリフォーマットノード404の識別子、
・ベースグラフにおいてフィルタノード406の下流にあるデータシンクノード408の識別子、
・ベースグラフにおいてリフォーマットノード404とフィルタノード406との間のリンク412及びリンク412の削除の指示、
・ベースグラフにおけるフィルタノード406とデータシンクノード408との間のリンク416及びリンク416の削除の指示、並びに
・ソースグラフ420におけるリフォーマットノード404とデータシンクノード408との間の新しいリンク424の識別子、
・新しいデータソースノード422を示す情報:
・データソースノード422の仕様、
・ソースグラフ420におけるデータソースノード422の下流にあるリフォーマットノード404の識別子、
・ソースグラフ420におけるデータソースノード422とリフォーマットノード404との間の新しいリンク426の識別子。
ターゲットグラフ440の1組の差分は以下の情報を含む:
・フィルタノード406の変更を示す情報:
・フィルタノード406の識別子、
・ターゲットグラフ440においてフィルタノード406の上流にあるリフォーマットノードの識別子、
・ターゲットグラフ440においてフィルタノード406の下流にあるソートノードの識別子、
・フィルタノード402に接続された各リンク412、444の識別子、及び
・変更パラメータセット405’の仕様、
・ソートノード442の追加を示す情報:
・ソートノード442の仕様、
・ソートノードのパラメータセットの仕様、
・ターゲットグラフ440におけるソートノード442の上流にあるフィルタノード406の識別子、
・ターゲットグラフ440におけるソートノード442の下流にあるデータシンクノード408の識別子、
・ターゲットグラフ440におけるフィルタノード406とソートノード442との間の新しいリンク444の識別子、
・ターゲットグラフにおけるソートノード442とデータシンク408との間の新しいリンク446の識別子、及び
・ベースグラフにおけるフィルタノード406とデータシンク408との間のリンク416の識別子及びリンク416の削除の指示。
互換性分析は、ソースグラフ420におけるデータソース422の追加がターゲットグラフ440における全ての差分と互換性があり、ターゲットグラフ440におけるソートノード442の追加がソースグラフ420における全ての差分と互換性があると判断する。データソース422の追加及びソートコンポーネント442の追加を示す上記列挙した情報は、1組の結合差分に追加される。
互換性分析は、ターゲットグラフ440におけるフィルタノード406に関連するパラメータセット15の変更と競合するものとして、ソースグラフ420におけるフィルタノード406の削除を識別する。この例では、この競合はユーザインターフェースでユーザに提示され、ユーザは、例えば、パラメータセット変更の選択で応答し得る。代替的には、選択基準が自動的にシステム300により適用し得、同じ選択に繋がり得る。パラメータセットの変更を示す上記列挙した情報は、2組の結合差分に追加される。フィルタノード406の削除を示す情報は1組の結合差分に追加されない。
図4Dを参照すると、1組の結合差分における差分はベースグラフ400のコピーに適用されて、更新グラフ450を生成する。特に、上記指定したノード及びリンクの追加、削除、及び変更は、ベースグラフ400のコピーに適用される。例えば、ソートノードの追加をベースグラフのコピーに適用するために、リンク416は削除され、ソートノード442は追加され、ソートノードを上流ノード及び下流ノードに接続する新しいリンク446、448が追加される。グラフ450における各ノードは対応するコンポーネントを表し、グラフ450における各リンクは、コンポーネント間の対応するデータフローを表す。
図5Aは、ベースグラフ、ソースグラフ、及びターゲットグラフに基づいて更新グラフを生成するプロセスの一例を示す。第1の組の差分が、ベースグラフとソースグラフとの間で特定される(500)。図5Bを参照すると、第1の組の差分を特定するために、ベースノードグラフにおける各ノード又はリンクとソースグラフにおけるノード又はリンクとの間の対応性が特定される(550)。ソースグラフにおける第2のノード又はリンクに対応するベースグラフにおける第1のノード又はリンクのそれぞれは、対応する第2のノード又はリンクと比較され(552)、第1のノード又はリンクと第2のノード又はリンクとの間の任意の差分が識別される(554)。第1のノード又はリンクと第2のノード又はリンクとの間に差分がない場合、第2のノード又はリンクは第1の組の差分に含まれない(558)。第1のノード又はリンクと第2のノード又はリンクとの間に差分がある場合(560)、第2のノード又はリンクは、第1の組の差分において変更ノード又はリンクとして示される(562)。ソースグラフにおけるノード又はリンクに対応しないベースグラフにおけるノード又はリンクは、第1の組の差分において削除ノード又はリンクとして示される(564)。ベースグラフにおけるノード又はリンクに対応しないソースグラフにおけるノード又はリンクは、第1の組の差分において追加ノード又はリンクとして示される(566)。
第2の組の差分が、ベースグラフとターゲットグラフとの間で特定される(502)。第2の組の差分を特定するために、ベースノードグラフにおける各ノード又はリンクとターゲットグラフにおけるノード又はリンクとの間の対応性が特定される。ターゲットグラフにおける第2のノード又はリンクに対応するベースグラフにおける第1のノード又はリンクのそれぞれは、対応する第2のノード又はリンクと比較され、第1のノード又はリンクと第2のノード又はリンクとの間の任意の差分が識別される。第1のノード又はリンクと第2のノード又はリンクとの間に差分がない場合、第2のノード又はリンクは第2の組の差分に含まれない。第1のノード又はリンクと第2のノード又はリンクとの間に差分がある場合、第2のノード又はリンクは、第2の組の差分において変更ノード又はリンクとして示される。ターゲットグラフにおけるノード又はリンクに対応しないベースグラフにおけるノード又はリンクは、第2の組の差分において削除ノード又はリンクとして示される。
第1の組の差分における特定の差分は評価されて、特定の差分と第2の組の差分との間の対応性を特定する(504)。第1の組の差分における特定の差分に対応する第2の組の差分における差分がない場合(506)、第1の組の差分における特定の差分は、1組の結合差分に追加され(508)、対処済みとして示される。第1の組の差分における特定の差分に対応する第2の組の差分における差分がある場合(510)、第2の組の差分における対応する差分との特定の差分の互換性が特定される(512)。差分が互換性を有すると特定される場合(514)、第1の組の差分における特定の差分は1組の結合差分に追加され(508)、両差分は対処済みとして示される。差分が互換性を有すると特定される場合(516)、各差分の相対優先度が、予め定義されたルールに従って又はユーザ入力に基づいて特定される(518)。高優先度の差分は1組の結合差分に追加され(520)、両差分は対処済みとして示される。
第1の組の差分はレビューされて、全ての差分が対処されたか否かを判断する(522)。対処されていない差分が第1の組の差分に残っている場合(524)、第1の組の差分における別の差分が評価される(504)。第1の組の差分における全ての差分が対処された場合(526)、第2の組の差分における任意の未対処差分が1組の結合差分に追加される(528)。1組の結合差分はベースグラフに適用されて、更新グラフを生成する(530)。
図6〜図9は、ソースグラフ及びターゲットグラフから更新グラフを生成するユーザインターフェースの一例のスクリーンショットである。
特に図6を参照して、グラフィカルユーザインターフェース600は、ベースグラフとソースグラフ及びターゲットグラフとの間の差分を併合することにより作成された更新グラフのリストを示す。アイコンは、例えば、更新グラフが互換性問題を有さない(例えば、calculate_interest_dailyグラフに示されるように)こと又は差分の1つ若しくは複数の競合対を有する(例えば、apply_interest_monthlyグラフに示されるように)ことを示す、各更新グラフのステータスを示すことができる。ユーザは、グラフの1つを選択して、グラフについての情報を表示することができる。例えば、差分の1つ又は複数の競合対を有するグラフの場合、ユーザは、ベースグラフとソースグラフ及びターゲットグラフの1つ又は複数との間の差分のグラフ表現を見ることができる。差分の図表現の一例を図7に示す。
図8を参照すると、幾つかの例では、競合はテキストフォーマットで表現することができる。例えば、図8の例では、ソースグラフは「+400.00」値を含み、ターゲットグラフは「+200.0」値を含む。競合がテキストで表される場合、ユーザはテキストを編集して、所望の内容を残すことができる(例えば、所与の競合でソースグラフ又はターゲットグラフに対応するテキストを削除する)。幾つかの例では、全ての差分がテキストに含まれ、競合する差分は、「<<<<<<<<」マーカと「>>>>>>>>>」マーカとの間に挟まれる等のマーカにより示されて、ユーザが全ての競合を容易に見つけられるようにする。
図9を参照すると、幾つかの例では、競合は図で表すことができる。競合に対処するために、ユーザは各競合を選択(例えば、クリック又はタップ)して、競合のテキスト表現にアクセスことができる。幾つかの例では、競合は、図表現を通して直接対処することができる。
図10は、ベースグラフに基づいて更新グラフを生成する一般的なプロセスを示す。第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分が識別される(50)。第1のデータフローグラフはベースグラフを含み、第2のデータフローグラフはソースグラフを含み、第3のデータフローグラフはターゲットグラフを含む。各データフローグラフの仕様は、1つ又は複数のノード及びノードを接続する1つ又は複数のリンクを定義する。ノードの少なくとも1つは、データ処理コンポーネントに提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表す。差分を識別すること(50)は、ベースグラフの仕様とソースグラフの仕様とを比較することであって、それにより、ベースグラフとソースグラフとの間の第1の組の差分を識別すること、例えば、第1の削除ノード、第1の削除フロー、第1の追加ノード、第1の追加フロー、第1の変更ノード、又は第1の変更フローの1つ又は複数を識別することを含む。差分を識別すること(50)は、ベースグラフの仕様とターゲットグラフの仕様とを比較することであって、それにより、ベースグラフとターゲットグラフとの間の第2の組の差分を識別すること(54)、例えば、第2の削除ノード、第2の削除フロー、第2の追加ノード、第2の追加フロー、第2の変更ノード、又は第2の変更フローの1つ又は複数を識別することも含む。
第1の組の差分における差分と第2の組の差分における差分との間の対応性が特徴付けられる(56)。特徴付けることは、(i)第2の組の差分において識別されるノード若しくはリンクに対応する第1の組の差分において識別されるノード若しくはリンク、(ii)第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない第1の組の差分において識別されるノード若しくはリンク、又は(iii)第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む。第1の組の差分において識別されたノード又はリンクと第2の組の差分において識別された対応するノード又はリンクとの間の互換性が特定される(58)。
1組の結合差分が、特徴付けられた対応性、ベースグラフとソースグラフとの間の第1の組の差分、及びベースグラフとターゲットグラフとの間の第2の組の差分に基づいて特定される(60)。1組の結合差は、第1の組の差分において識別されたノード若しくはリンクと第2の組の差分において識別された対応するノード若しくはリンクとの間の互換性に基づいて特定することができる。1組の結合差分には、第2の組の差分において識別されたいかなるノード若しくはリンクにも対応しない第1の組の差分において識別されたノード若しくはリンクを示す情報又は第1の組の差分において識別されたいかなるノード若しくはリンクにも対応しない第2の組の差分において識別されたノード若しくはリンクを示す情報を含めることができる。
更新データフローグラフは、ベースグラフ及び1組の結合差分に基づいて生成される(62)。
幾つかの例では、グラフのコンポーネントは、それら自体がフローと相互接続される1組の他のコンポーネントを使用して実施することができる。グラフのコンポーネントが実施されるこの1組のコンポーネントは、サブグラフと呼ばれ、グラフのノードである。本明細書に記載される手法は、サブグラフを含むグラフ間の差分の併合に使用することができる。
プランとは、複数のグラフの実行が関わるプロセスの視覚的表現である。プランでは、個々のグラフはノードであり、プランのグラフ間のデータフローを示すフローにより相互接続される。
図11は、開発のためのデータ処理システム1000及び本明細書に記載される技法を使用することができるデータフローグラフの一例を示す。幾つかの場合、データ処理システム1000はまた、実行可能データフローグラフを実行するためのものであることもできる。システム1000は、記憶装置又はオンラインデータストリームへの接続等の1つ又は複数のデータソースを含み得るデータソース1002を含み、各データソースは、任意の種々のフォーマット(例えば、データベーステーブル、スプレッドシートファイル、平文ファイル、又はメインフレームコンピュータにより使用されるネイティブフォーマット)のデータを記憶又は提供し得る。データは、物流データ、分析データ、又は産業機械データであり得る。実行環境又は実行時環境1004は、前処理モジュール1006及び実行モジュール1012を含む。実行環境1004は、例えば、あるバージョンのUNIX(登録商標)オペレーティングシステム等の適したオペレーティングシステムの制御下で1つ又は複数の汎用コンピュータでホストし得る。例えば、実行環境1004は、ローカル(例えば、対称マルチ処理(SMP)コンピュータ等のマルチプロセッサシステム)、ローカルに分散(例えば、クラスタとして結合される複数のプロセッサ又は超並列処理(MPP)システム、リモート、リモートに分散(例えば、ローカルエリアネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合される複数のプロセッサ)、又はそれらの任意の組合せのいずれかである、複数の処理ユニット(中央演算処理装置、CPU等)又はプロセッサコアを使用するコンピュータシステムの構成を含む複数のノード並列計算環境を含むことができる。
データソース1002を提供する記憶装置は、実行環境1004に対してローカル、例えば、実行環境1004をホストするコンピュータに接続された記憶媒体(例えば、ハードドライブ1008)に記憶されてもよく、実行環境1004に対してリモート、例えば、リモート接続(例えば、クラウド計算基盤により提供される)を介して実行環境1004をホストするコンピュータと通信するリモートシステム(例えば、メインフレームコンピュータ1010)でホストされてもよい。
前処理モジュール1006は、データソース1002からデータを読み取り、実行に向けてデータ処理アプリケーション(例えば、実行可能データフローグラフ)を準備する。例えば、前処理モジュール1006は、データ処理アプリケーションをコンパイルし、実行環境1004がアクセス可能なデータ記憶システム1016にコンパイルされたデータ処理アプリケーションを記憶且つ/又は実行環境1004がアクセス可能なデータ記憶システム1016からコンパイルされたデータ処理アプリケーションをロードし、実行に向けてデータ処理アプリケーションを準備する他のタスクを実行する。
実行モジュール1012は、前処理モジュール1006により準備されたデータ処理アプリケーションを実行して、1組のデータを処理し、処理から生じた出力データ1014を生成する。出力データ1014は、データソース1002に記憶されてもよく、実行環境1004がアクセス可能なデータ記憶システム1016に記憶されてもよく、又は他の方法で使用されてもよい。データ記憶システム1016には、開発者1020が実行モジュール1012により実行されるデータ処理アプリケーションを設計、編集することが可能な、任意選択的な開発環境1018もアクセス可能である。開発環境1018は、幾つかの実施態様では、頂点間の有向リンク(作業要素、すなわちデータのフローを表す)により接続される頂点(データ処理コンポーネント又はデータセットを表す)を含むデータフローグラフとしてアプリケーションを開発するシステムである。例えば、そのような環境は「Managing Parameters for Graph−Based Applications」と題する米国特許出願公開第2007/0011668号明細書により詳細に説明されており、この特許出願は参照により本明細書に援用される。そのようなグラフベースの計算を実行するシステムは、「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題する米国特許第5,966,072号明細書に記載されており、この米国特許の内容は全体的に、参照により本明細書に援用される。このシステムにより作成されたデータフローグラフは、グラフコンポーネントにより表される個々のプロセス内へ及び個々のプロセスから情報を取得し、情報をプロセス間で移動させ、プロセスの実行順序を定義する方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信方法を選ぶ(例えば、グラフのリンクに従った通信パスは、TCP/IP若しくはUNIXドメインソケットを使用することができ、又は共有メモリを使用して、プロセス間でデータを渡すことができる)アルゴリズムを含む。
前処理モジュール1006は、異なる形態のデータベースシステムを含め、データソース1002を実施し得る種々のタイプのシステムからデータを受信することができる。データは、可能な場合にはヌル値を含む、各フィールド(「属性」又は「カラム」とも呼ばれる)に値を有するレコードとして編成し得る。データソースからデータを最初に読み取る際、前処理モジュール1006は通常、そのデータソースにおけるレコードについての何らかの初期フォーマット情報で開始する。幾つかの状況では、データソースのレコード構造は最初、知られていないことがあり、代わりに、データソース又はデータの分析後に特定し得る。レコードについての初期情報は、例えば、別個の値を表すビット数、レコード内のフィールドの順序、及びビットにより表される値の対応タイプ(例えば、文字列、符号付き/符号なし整数)を含むことができる。
換言すれば、本明細書に記載される実行可能データフローグラフに一般に適用可能なように、実行可能データフローグラフは、データソース1002の1つ又は複数の入力データセットからデータ処理コンポーネントを通して1つ又は複数の出力データセットに流れるデータに対して実行されるグラフベースの計算を実施し、データフローグラフはデータ記憶装置1014内のデータ構造により指定され、データフローグラフは、データ構造により指定され、1つ又は複数のリンクにより接続されるデータ処理コンポーネントを表すノードを有し、リンクはデータ構造により指定され、データ処理コンポーネント間のデータフローを表す。実行環境又は実行時環境1004はデータ記憶装置1014に結合され、1つ又は複数のコンピュータでホストされ、実行時環境1004は、データフローグラフを指定する、記憶されたデータ構造を読み取り、前処理モジュール1006によりデータフローグラフに割り当てられたデータ処理コンポーネントの計算の実行に向けて計算リソース(例えば、要素、メモリ、CPU等)を割り振り構成するように構成された前処理モジュール1006を含み、実行時環境1004は、データ処理コンポーネントの計算の実行をスケジュールし制御する実行モジュール1012を含む。換言すれば、1つ又は複数のコンピュータでホストされる実行時又は実行環境1004は、データソース1002からデータを読み取り、データフローグラフの形態で表される実行可能コンピュータプログラムを使用してデータを処理するように構成される。
上述した手法は、適したソフトウェアを実行する計算システムを使用して実施することができる。例えば、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び/又は不揮発性メモリ及び/又は記憶要素を含む)、少なくとも1つのユーザインターフェース(少なくとも1つの入力デバイス又はポートを使用して入力を受信し、少なくとも1つの出力デバイス又はポートを使用して出力を提供する)を含む1つ又は複数のプログラムされた又はプログラム可能な計算システム(分散、クライアント/サーバ、又はグリッド等の種々のアーキテクチャであり得る)で実行される1つ又は複数のコンピュータプログラム内にプロシージャを含み得る。ソフトウェアは、例えば、グラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1つ又は複数のモジュールを含み得る。プログラムのモジュール(例えば、グラフの要素)は、データリポジトリに記憶されたデータモデルに準拠したデータ構造又は他の編成データとして実施することができる。
ソフトウェアは、CD−ROM若しくは他のコンピュータ可読媒体(例えば、汎用若しくは専用計算システム若しくはデバイスにより可読)等の有形非一時的媒体で提供されてもよく、又はネットワークの通信媒体を介して、実行される計算システムの有形非一時的媒体に送出(例えば、伝播信号に符号化)してもよい。処理の幾つか又は全ては、コプロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、又は専用特定用途向け集積回路(ASIC)等の専用コンピュータで実行されてもよく、専用ハードウェアを使用して実行されてもよい。処理は、ソフトウェアにより指定される計算の異なる部分が異なる計算要素により実行される分散様式で実施し得る。そのような各コンピュータプログラムは、好ましくは、汎用又は専用プログラマブルコンピュータがアクセス可能な記憶装置のコンピュータ可読記憶媒体(例えば、固体状態メモリ、固体状態媒体、磁気媒体、又は光学媒体)に記憶又はダウンロードされて、記憶装置媒体がコンピュータにより読み取られると、本明細書に記載された処理を実行するようにコンピュータを構成し動作させる。本発明によるシステムはまた、コンピュータプログラムが構成された有形非一時的媒体として実施されると見なすこともでき、そうして構成された媒体は、特定の予め定義された様式でコンピュータを動作させて、本明細書に記載された処理ステップの1つ又は複数を実行させる。
本発明の幾つかの実施形態について説明した。それにも関わらず、上記説明が例示を意図し、本発明の範囲の限定を意図せず、本発明の範囲が以下の特許請求の範囲により規定されることを理解されたい。したがって、他の実施形態も以下の特許請求の範囲内にある。例えば、本発明の範囲から逸脱せずに種々の変更を行い得る。さらに、上述したステップの幾つかは順序から独立し得、したがって、説明された順序とは異なる順序で実行することができる。

Claims (38)

  1. ベースグラフに基づいて更新データフローグラフを生成する方法であって、
    第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を識別することであって、
    前記第1のデータフローグラフは前記ベースグラフを含み、前記第2のデータフローグラフはソースグラフを含み、前記第3のデータフローグラフはターゲットグラフを含み、前記データフローグラフのそれぞれの仕様はノードを定義し、前記ノードの少なくとも1つは、データ処理コンポーネントに提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクは前記ノードを接続し、それぞれがデータのフローを表し、
    前記識別することは、
    前記ベースグラフの仕様と前記ソースグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ソースグラフとの間の第1の組の差分を識別し、前記第1の組の差分は、第1の削除ノード、第1の削除リンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較すること、及び
    前記ベースグラフの仕様と前記ターゲットグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ターゲットグラフとの間の第2の組の差分を識別し、前記第2の組の差分は、第2の削除ノード、第2の削除リンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較すること
    を含む、識別することと、
    前記第1の組の差分における差分と前記第2の組の差分における差分との間の対応性を特徴付けることであって、(i)前記第2の組の差分において識別されるノード若しくはリンクに対応する前記第1の組の差分において識別されるノード若しくはリンク、(ii)前記第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない前記第1の組の差分において識別されるノード若しくはリンク、又は(iii)前記第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない前記第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む、特徴付けることと、
    前記特徴付けられた対応性、前記ベースグラフと前記ソースグラフとの間の前記第1の組の差分、及び前記ベースグラフと前記ターゲットグラフとの間の前記第2の組の差分に基づいて1組の結合差分を特定することと、
    前記ベースグラフ及び前記1組の結合差分に基づいて前記更新データフローグラフを生成することと、
    を含む方法。
  2. 前記ソースグラフ、前記ベースグラフ、前記ターゲットグラフ、及び前記更新データフローグラフは、実行可能データフローグラフである、請求項1に記載の方法。
  3. 前記ソースグラフは、前記ベースグラフの第1の変更バージョンであり、前記ターゲットグラフは、前記ベースグラフの第2の変更バージョンである、請求項1又は2に記載の方法。
  4. 前記第1の組の差分及び前記第2の組の差分を生成することを含み、各組の差分は、組中の各差分について、
    前記差分のタイプを識別する情報及び
    (i)前記差分に関連する1つ又は複数のノードを示す情報又は(ii)前記差分に関連する1つ又は複数のリンクを示す情報の1つ又は複数
    を含む、請求項1〜3の何れか1項に記載の方法。
  5. 前記差分の前記タイプは、削除、追加、又は変更の1つ又は複数を含む、請求項4に記載の方法。
  6. 前記差分に関連する1つ又は複数のノードを示す情報は、(i)削除、追加、又は変更されたノードを識別する情報と、(ii)前記削除、追加、又は変更されたノードの上流にあるノードを識別する情報及び(iii)前記削除、追加、又は変更されたノードの下流にあるノードを識別する情報の1つ又は複数とを含む、請求項4又は5に記載の方法。
  7. 前記差分に関連する1つ又は複数のリンクを示す情報は、(i)追加されたリンクを識別する情報及び(ii)削除されたリンクを識別する情報の1つ又は複数を含む、請求項4〜6の何れか1項に記載の方法。
  8. 前記1組の結合差分を生成することは、前記1組の結合差分に、前記第2の組の差分において識別されるいかなるノード又はリンクにも対応しない前記第1の組の差分において識別されるノード又はリンクを示す情報を含むことを含む、請求項1〜7の何れか1項に記載の方法。
  9. 前記1組の結合差分を生成することは、前記1組の結合差分に、前記第1の組の差分において識別されるいかなるノード又はリンクにも対応しない前記第2の組の差分において識別されるノード又はリンクを示す情報を含むことを含む、請求項1〜8の何れか1項に記載の方法。
  10. 前記第1の組の差分において識別されるノード又はリンクと前記第2の組の差分において識別される対応するノード又はリンクとの互換性を特定することを含む、請求項1〜9の何れか1項に記載の方法。
  11. 前記第1の組の差分において識別されるノード又はリンクは、第1の変更ノード又はリンクを含み、前記第2の組の差分において識別されるノード又はリンクは、第2の変更ノード又はリンクを含み、
    互換性を特定することは、
    前記第1の変更ノード又はリンクに関連する変更が前記第2の変更ノード又はリンクに関連する変更と互換性を有すると判断することと、
    前記1組の結合差分に、前記第1の組の差分において識別される前記ノード又はリンク及び前記第2の組の差分において識別される前記ノード又はリンクの両方を示す情報を含むことと、
    を含む、請求項10に記載の方法。
  12. 前記第1の組の差分において識別されるノード又はリンクは、第1の変更ノード又はリンクを含み、前記第2の組の差分において識別されるノード又はリンクは、第2の変更ノード又はリンクを含み、
    互換性を特定することは、
    前記第1の変更ノード又はリンクに関連する変更が前記第2の変更ノード又はリンクに関連する変更と互換性を有すると判断することと、
    前記第1の変更ノード若しくはリンク、前記第2の変更ノード若しくはリンクを選択するか、又はいずれも選択しないことと、
    前記1組の結合差分に前記選択されたノード又はリンクを示す情報を含めることと、
    を含む、請求項10又は11に記載の方法。
  13. 前記1組の結合差分を特定することは、
    対応すると判断された差分対について、前記差分が互換性を有すると判断することと、
    前記1組の結合差分に前記対の両方の差分を示す情報を含めることと、
    を含む、請求項1〜12の何れか1項に記載の方法。
  14. 前記1組の結合差分を特定することは、
    対応すると判断された差分対について、前記差分が競合すると判断することと、
    前記対の前記差分の一方を選択することと、
    前記1組の結合差分に前記選択された差分を示す情報を含めることと、
    を含む、請求項1〜13の何れか1項に記載の方法。
  15. 選択基準に基づいて前記差分の一方を選択することを含む、請求項14に記載の方法。
  16. 前記対の前記両方の差分を示す情報をユーザインターフェースに提示することと、
    ユーザ入力に基づいて前記差分の一方を選択することと、
    を含む、請求項14又は15に記載の方法。
  17. 前記更新データフローグラフを生成することは、
    前記ベースグラフのコピーを生成することと、
    前記1組の結合差分における各差分を前記コピーに適用することと、
    を含む、請求項1〜16の何れか1項に記載の方法。
  18. 前記ベースグラフの仕様と前記ソースグラフの仕様とを比較することは、前記ベースグラフと前記ソースグラフとの間の対応性を特定することを含む、請求項1〜17の何れか1項に記載の方法。
  19. 前記ベースグラフと前記ソースグラフとの間の対応性を特定することは、(1)前記ソースグラフのノード又はリンクに対応する前記ベースグラフの第1のノード又はリンクを識別すること、(2)前記ソースグラフのいずれのノードにも対応しない前記ベースグラフの第2のノード又はリンクを識別すること、及び(3)前記ベースグラフのいずれのノード又はリンクにも対応しない前記ソースグラフの第3のノード又はリンクを識別することの1つ又は複数を含む、請求項18に記載の方法。
  20. 前記ベースグラフと前記ソースグラフとの間の第1の組の差分を識別することは、前記ベースグラフの前記第1のノード又はリンクと前記ソースグラフの前記対応するノード又はリンクとの間の差分を識別することを含む、請求項19に記載の方法。
  21. 前記第1のノード又はリンクと前記ソースグラフの前記対応するノード又はリンクとの間の差分を識別することは、前記第1のノード又はリンクのパラメータ及びパラメータの表現の1つ又は複数と前記対応する第1のノード又はリンクのパラメータ又はパラメータの表現との間の差分を識別することを含む、請求項20に記載の方法。
  22. 前記ベースグラフはベースサブグラフを含み、前記ソースグラフは第1のサブグラフを含み、前記方法は、
    前記ベースサブグラフの仕様と前記第1のサブグラフの仕様とを比較して、前記ベースサブグラフと前記第1のサブグラフとの間の1つ又は複数の差分を識別すること
    を含む、請求項1〜21の何れか1項に記載の方法。
  23. 前記第1のデータフローグラフは前記ベースグラフであり、前記第2のデータフローグラフは前記ソースグラフであり、前記第3のデータフローグラフは前記ターゲットグラフである、請求項1〜22の何れか1項に記載の方法。
  24. 前記リンクはノード間のデータのフローを表す、請求項1〜23の何れか1項に記載の方法。
  25. 前記リンクは、ノード間の制御信号のフローを表す、請求項1〜24の何れか1項に記載の方法。
  26. 前記ベースグラフ、前記ソースグラフ、及び前記ターゲットグラフはデータ処理グラフを含む、請求項1〜25の何れか1項に記載の方法。
  27. 前記ベースグラフ、前記ソースグラフ、及び前記ターゲットグラフは制御グラフを含む、請求項1〜26の何れか1項に記載の方法。
  28. 前記ベースグラフ、前記ソースグラフ、及び前記ターゲットグラフはプランを含む、請求項1〜27の何れか1項に記載の方法。
  29. 前記差分間の前記対応性を特定することは、
    (1)前記第1の組の差分及び前記第2の組の差分の一方のみで識別されるノード又はリンクが関わる差分及び(2)前記第1の組の差分及び前記第2の組の差分の両方において識別されるノード又はリンクが関わる差分を識別することを含む、請求項1〜28の何れか1項に記載の方法。
  30. 前記1組の結合差分を特定することは、
    前記第1の組の差分及び前記第2の組の差分の一方のみで識別されるノード又はリンクが関わる差分の前記第1の組の差分及び前記第2の組の差分のそれぞれについて、その差分を示す情報が前記1組の結合差分に追加されることと、
    前記第1の組の差分及び前記第2の組の差分の両方において識別されるノード又はリンクが関わる差分の前記第1の組の差分及び前記第2の組の差分のそれぞれについて、互換性分析が実行されることと、
    を含む、請求項1〜29の何れか1項に記載の方法。
  31. 前記互換性分析を実行することは、
    第1の差分が第2の差分と競合するか否かを判断することであって、競合する差分対は、前記競合する差分対の一方の前記ベース実行可能グラフへの適用が、前記競合する差分対の他方の前記ベース実行可能グラフへの適用を妨げる場合、競合する、判断することを含む、請求項30に記載の方法。
  32. 任意の競合する差分対の場合、選択基準に従って前記競合する差分対の一方を選択することにより、前記競合する差分対の競合を解決することと、
    前記選択された差分を示す情報を前記1組の結合差分追加することと、
    を含む、請求項31に記載の方法。
  33. グラフィカルユーザインターフェースを提供することと、
    前記グラフィカルユーザインターフェースを介して、前記競合する差分対を視覚的に表す情報を表示することと、
    を含む、請求項31又は32に記載の方法。
  34. 前記グラフィカルユーザインターフェースを介して、前記競合する差分対から選択された1つ又は複数の差分の1つ又は複数の視覚的表現及びそれぞれの前記選択から生じる前記更新データフローグラフのそれぞれの視覚的表現を表示することを含む、請求項33に記載の方法。
  35. ユーザから前記グラフィカルユーザインターフェースを介して、前記視覚的表現の1つの選択、示唆される1つ又は複数の選択を含む入力を受信することであって、前記選択基準は前記入力により定義される、受信することを含む、請求項34に記載の方法。
  36. 計算システムに、ベースグラフに基づいて更新データフローグラフを生成させる命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は前記計算システムに、
    第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を識別することであって、前記第1のデータフローグラフは前記ベースグラフを含み、前記第2のデータフローグラフはソースグラフを含み、前記第3のデータフローグラフはターゲットグラフを含み、
    前記データフローグラフのそれぞれの仕様はノードを定義し、前記ノードの少なくとも1つは、提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクは前記ノードを接続し、各リンクはデータのフローを表し、
    前記識別することは、
    前記ベースグラフの仕様と前記ソースグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ソースグラフとの間の第1の組の差分を識別し、前記第1の組の差分は、プラン第1の削除されたノード、第1の削除されたリンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較すること、及び
    前記ベースグラフの仕様と前記ターゲットグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ターゲットグラフとの間の第2の組の差分を識別し、前記第2の組の差分は、第2の削除されたノード、第2の削除されたリンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較すること
    を含む、識別することと、
    前記第1の組の差分における差分と前記第2の組の差分における差分との間の対応性を特徴付けることであって、(i)前記第2の組の差分において識別されるノード若しくはリンクに対応する前記第1の組の差分において識別されるノード若しくはリンク、(ii)前記第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない前記第1の組の差分において識別されるノード若しくはリンク、又は(iii)前記第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない前記第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む、特徴付けることと、
    前記特徴付けられた対応性、前記ベースグラフと前記ソースグラフとの間の前記第1の組の差分、及び前記ベースグラフと前記ターゲットグラフとの間の前記第2の組の差分に基づいて1組の結合差分を特定することと、
    前記ベースグラフ及び前記1組の結合差分に基づいて前記更新データフローグラフを生成することと、
    を行わせる命令を含む、非一時的コンピュータ可読媒体。
  37. ベースグラフに基づいて更新データフローグラフを生成する計算システムであって、
    メモリに結合される1つ又は複数のプロセッサ
    を含み、前記1つ又は複数のプロセッサ及び前記メモリは、
    第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を識別することであって、前記第1のデータフローグラフは前記ベースグラフを含み、前記第2のデータフローグラフはソースグラフを含み、前記第3のデータフローグラフはターゲットグラフを含み、
    前記データフローグラフのそれぞれの仕様はノードを定義し、前記ノードの少なくとも1つは、提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクは前記ノードを接続し、データのフローを表し、
    前記識別することは、
    前記ベースグラフの仕様と前記ソースグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ソースグラフとの間の第1の組の差分を識別し、前記第1の組の差分は、プラン第1の削除されたノード、第1の削除されたリンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較すること、及び
    前記ベースグラフの仕様と前記ターゲットグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ターゲットグラフとの間の第2の組の差分を識別し、前記第2の組の差分は、第2の削除されたノード、第2の削除されたリンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較すること
    を含む、識別することと、
    前記第1の組の差分における差分と前記第2の組の差分における差分との間の対応性を特徴付けることであって、(i)前記第2の組の差分において識別されるノード若しくはリンクに対応する前記第1の組の差分において識別されるノード若しくはリンク、(ii)前記第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない前記第1の組の差分において識別されるノード若しくはリンク、又は(iii)前記第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない前記第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む、特徴付けることと、
    前記特徴付けられた対応性、前記ベースグラフと前記ソースグラフとの間の前記第1の組の差分、及び前記ベースグラフと前記ターゲットグラフとの間の前記第2の組の差分に基づいて1組の結合差分を特定することと、
    前記ベースグラフ及び前記1組の結合差分に基づいて前記更新データフローグラフを生成することと、
    を行うように構成される、計算システム。
  38. ベースグラフに基づいて更新データフローグラフを生成する計算システムであって、
    第1のデータフローグラフと第2のデータフローグラフ及び第3のデータフローグラフのそれぞれとの間の差分を識別する手段であって、前記第1のデータフローグラフは前記ベースグラフを含み、前記第2のデータフローグラフはソースグラフを含み、前記第3のデータフローグラフはターゲットグラフを含み、
    前記データフローグラフのそれぞれの仕様はノードを定義し、前記ノードの少なくとも1つは、提供されるデータを処理するために実行すべき演算を定義するデータ処理コンポーネントを表し、1つ又は複数のリンクは前記ノードを接続し、データのフローを表し、
    前記識別することは、
    前記ベースグラフの仕様と前記ソースグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ソースグラフとの間の第1の組の差分を識別し、前記第1の組の差分は、プラン第1の削除されたノード、第1の削除されたリンク、第1の追加ノード、第1の追加リンク、第1の変更ノード、又は第1の変更リンクの1つ又は複数を示す情報を含む、比較すること、及び
    前記ベースグラフの仕様と前記ターゲットグラフの仕様とを比較することであって、それにより、前記ベースグラフと前記ターゲットグラフとの間の第2の組の差分を識別し、前記第2の組の差分は、第2の削除されたノード、第2の削除されたリンク、第2の追加ノード、第2の追加リンク、第2の変更ノード、又は第2の変更リンクの1つ又は複数を示す情報を含む、比較すること
    を含む、識別する手段と、
    前記第1の組の差分における差分と前記第2の組の差分における差分との間の対応性を特徴付ける手段であって、(i)前記第2の組の差分において識別されるノード若しくはリンクに対応する前記第1の組の差分において識別されるノード若しくはリンク、(ii)前記第2の組の差分において識別されるいずれのノード若しくはリンクにも対応しない前記第1の組の差分において識別されるノード若しくはリンク、又は(iii)前記第1の組の差分において識別されるいかなるノード若しくはリンクにも対応しない前記第2の組の差分において識別されるノード若しくはリンクの1つ又は複数を識別することを含む、特徴付ける手段と、
    前記特徴付けられた対応性、前記ベースグラフと前記ソースグラフとの間の前記第1の組の差分、及び前記ベースグラフと前記ターゲットグラフとの間の前記第2の組の差分に基づいて1組の結合差分を特定する手段と、
    前記ベースグラフ及び前記1組の結合差分に基づいて前記更新データフローグラフを生成する手段と、
    を含む、計算システム。
JP2020567769A 2018-06-06 2019-06-04 実行可能グラフの更新 Active JP7200266B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022203622A JP7381705B2 (ja) 2018-06-06 2022-12-20 実行可能グラフの更新

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862681395P 2018-06-06 2018-06-06
US62/681,395 2018-06-06
US16/153,320 2018-10-05
US16/153,320 US10990364B2 (en) 2018-06-06 2018-10-05 Updating executable graphs
PCT/US2019/035296 WO2019236519A1 (en) 2018-06-06 2019-06-04 Updating executable graphs

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022203622A Division JP7381705B2 (ja) 2018-06-06 2022-12-20 実行可能グラフの更新

Publications (3)

Publication Number Publication Date
JP2021527249A true JP2021527249A (ja) 2021-10-11
JPWO2019236519A5 JPWO2019236519A5 (ja) 2022-06-13
JP7200266B2 JP7200266B2 (ja) 2023-01-06

Family

ID=68763880

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2020567769A Active JP7200266B2 (ja) 2018-06-06 2019-06-04 実行可能グラフの更新
JP2022203622A Active JP7381705B2 (ja) 2018-06-06 2022-12-20 実行可能グラフの更新

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022203622A Active JP7381705B2 (ja) 2018-06-06 2022-12-20 実行可能グラフの更新

Country Status (9)

Country Link
US (2) US10990364B2 (ja)
EP (1) EP3803571B1 (ja)
JP (2) JP7200266B2 (ja)
CN (1) CN112368675B (ja)
AU (1) AU2019282542B2 (ja)
CA (1) CA3102834A1 (ja)
MX (1) MX2020013214A (ja)
SG (1) SG11202011195XA (ja)
WO (1) WO2019236519A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990364B2 (en) * 2018-06-06 2021-04-27 Ab Initio Technology Llc Updating executable graphs
EP3822770A1 (en) * 2019-11-15 2021-05-19 Nvidia Corporation Techniques for modifying an executable graph to perform a workload associated with a new task graph
EP3926465A1 (en) * 2020-06-16 2021-12-22 Mendix Technology B.V. Method and system for creating an app by merging source code
CN112099848B (zh) * 2020-09-11 2024-03-05 杭州海康威视数字技术股份有限公司 一种业务处理方法、装置及设备
US11914994B2 (en) * 2021-12-17 2024-02-27 Rockwell Automation Technologies, Inc. Collaborative work in industrial system projects

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190105A1 (en) * 2005-01-13 2006-08-24 Ray Hsu Merging graphical programs
US20120089542A1 (en) * 2010-10-12 2012-04-12 Sap Ag Consistency Maintenance of Distributed Graph Structures
JP2018077613A (ja) * 2016-11-08 2018-05-17 富士通株式会社 開発支援装置、開発支援方法および開発支援プログラム

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5206951A (en) * 1987-08-21 1993-04-27 Wang Laboratories, Inc. Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US5974254A (en) * 1997-06-06 1999-10-26 National Instruments Corporation Method for detecting differences between graphical programs
US7165248B2 (en) * 2001-06-04 2007-01-16 Sun Microsystems, Inc. File tree conflict processor
US7085779B2 (en) * 2001-06-04 2006-08-01 Sun Microsystems, Inc. File tree change reconciler
US7069547B2 (en) * 2001-10-30 2006-06-27 International Business Machines Corporation Method, system, and program for utilizing impact analysis metadata of program statements in a development environment
US7484200B2 (en) * 2002-08-14 2009-01-27 National Instruments Corporation Automatically analyzing and modifying a graphical program
US7773985B2 (en) 2003-09-22 2010-08-10 United Parcel Service Of America, Inc. Symbiotic system for testing electromagnetic signal coverage in areas near transport routes
US7506304B2 (en) * 2004-05-14 2009-03-17 National Instruments Corporation Graphical data flow programming environment with first model of computation that includes a structure supporting second model of computation
US7987445B2 (en) * 2005-01-13 2011-07-26 National Instruments Corporation Comparing a configuration diagram to an actual system
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US20070006152A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Software source asset management
US8407670B2 (en) * 2006-06-02 2013-03-26 Microsoft Corporation Collaborative code conflict detection, notification and resolution
US20080168071A1 (en) * 2007-01-08 2008-07-10 Pernell James Dykes Storing Data in Predicted Formats
US8583613B2 (en) * 2007-08-21 2013-11-12 Oracle International Corporation On demand data conversion
CN102855495B (zh) * 2012-08-22 2015-06-24 南京蒙渡电子科技有限公司 电子版标准答案的实现方法及其应用系统
EP2767900B1 (en) * 2013-02-19 2019-10-30 Códice Software S.L Parque Tecnológico de Boecillo Method for programming language dependent merging of program codes
US9063742B1 (en) * 2013-10-22 2015-06-23 The Mathworks, Inc. Version histories for multiple portions of program code
CA2932763C (en) 2013-12-05 2022-07-12 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
US9442707B2 (en) * 2014-06-25 2016-09-13 Microsoft Technology Licensing, Llc Incremental whole program compilation of code
DE112015003587T5 (de) * 2014-09-02 2017-05-11 Ab Initio Technology Llc Spezifizieren von komponenten in graphbasierten programmen
AU2015312003B2 (en) * 2014-09-02 2019-08-29 Ab Initio Technology Llc Executing graph-based program specifications
US9830227B2 (en) * 2014-12-05 2017-11-28 International Business Machines Corporation Performing a closure merge operation
US9471304B1 (en) * 2015-06-18 2016-10-18 Sap Se Tree-based versioning and merging
US9996342B2 (en) * 2016-01-22 2018-06-12 International Business Machines Corporation Automatic detection of potential merge errors
US10540340B2 (en) * 2016-02-09 2020-01-21 International Business Machines Corporation Performing conflict analysis of replicated changes among nodes in a network
US20180107764A1 (en) * 2016-10-17 2018-04-19 Brigham Young University Graph comparison for conflict resolution
US10802945B2 (en) * 2016-12-07 2020-10-13 Ab Initio Technology Llc Differencing of executable dataflow graphs
US10379825B2 (en) * 2017-05-22 2019-08-13 Ab Initio Technology Llc Automated dependency analyzer for heterogeneously programmed data processing system
US10445098B2 (en) * 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
CN108009497A (zh) * 2017-11-30 2018-05-08 深圳中兴网信科技有限公司 图像识别监控方法、系统、计算设备以及可读存储介质
US10303469B1 (en) * 2017-12-28 2019-05-28 Semmle Limited Commit graph generation
US10509642B2 (en) * 2018-03-30 2019-12-17 International Business Machines Corporation Intelligent discovery and application of API changes for application migration
US10990364B2 (en) * 2018-06-06 2021-04-27 Ab Initio Technology Llc Updating executable graphs

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060190105A1 (en) * 2005-01-13 2006-08-24 Ray Hsu Merging graphical programs
US20120089542A1 (en) * 2010-10-12 2012-04-12 Sap Ag Consistency Maintenance of Distributed Graph Structures
JP2018077613A (ja) * 2016-11-08 2018-05-17 富士通株式会社 開発支援装置、開発支援方法および開発支援プログラム

Also Published As

Publication number Publication date
US20210216290A1 (en) 2021-07-15
JP2023033306A (ja) 2023-03-10
EP3803571A1 (en) 2021-04-14
EP3803571B1 (en) 2024-02-14
CN112368675B (zh) 2021-12-24
US20190377558A1 (en) 2019-12-12
WO2019236519A1 (en) 2019-12-12
AU2019282542A1 (en) 2020-12-03
US11372631B2 (en) 2022-06-28
CA3102834A1 (en) 2019-12-12
SG11202011195XA (en) 2020-12-30
US10990364B2 (en) 2021-04-27
JP7381705B2 (ja) 2023-11-15
AU2019282542B2 (en) 2023-06-01
CN112368675A (zh) 2021-02-12
JP7200266B2 (ja) 2023-01-06
MX2020013214A (es) 2021-05-12

Similar Documents

Publication Publication Date Title
JP7381705B2 (ja) 実行可能グラフの更新
JP7090778B2 (ja) 影響分析
US10901702B2 (en) Managing interfaces for sub-graphs
JP6594950B2 (ja) データ系統の要約
JP5902185B2 (ja) コンピュータプログラムを表すデータフローグラフ内のデータセットオブジェクトの管理
JP5940560B2 (ja) データの集合体に対する変更の管理
JP6584672B2 (ja) サブグラフインターフェースの生成
JP7076208B2 (ja) アプリケーション・テスト
JP2018500642A (ja) グラフのデバッグ
AU2021201363B2 (en) Format-specific data processing operations

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220603

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220603

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220603

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221027

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: 20221121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221221

R150 Certificate of patent or registration of utility model

Ref document number: 7200266

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150