JP2016103299A - フロー分析計装 - Google Patents

フロー分析計装 Download PDF

Info

Publication number
JP2016103299A
JP2016103299A JP2016024609A JP2016024609A JP2016103299A JP 2016103299 A JP2016103299 A JP 2016103299A JP 2016024609 A JP2016024609 A JP 2016024609A JP 2016024609 A JP2016024609 A JP 2016024609A JP 2016103299 A JP2016103299 A JP 2016103299A
Authority
JP
Japan
Prior art keywords
data
flow
flow unit
data record
record
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
JP2016024609A
Other languages
English (en)
Other versions
JP6220910B2 (ja
Inventor
ロバーツ,アンドリュー,エフ.
F Roberts Andrew
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
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 Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of JP2016103299A publication Critical patent/JP2016103299A/ja
Application granted granted Critical
Publication of JP6220910B2 publication Critical patent/JP6220910B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データ記録のセットを選択することが困難な場合もあり得る。【解決手段】方法は、データフローグラフを修正するステップであって、データフローグラフは、少なくとも1つの入口点と少なくとも1つの出口点とを接続する複数の経路を含み、データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントをデータフローグラフに追加するステップであって、各フローユニットは、データ記録が行き交う経路のセグメントを特定する、ステップを含む、ステップを含む。また、方法は、修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定するステップも含む。また、方法は、複数のデータ記録のサブセットを決定するステップであって、実行経路の選択されたセットは、サブセットで表される、ステップも含む。【選択図】図2

Description

関連出願の相互参照
本願は、2011年1月7日に出願された「Flow Analysis Instrumentation」と称する米国仮特許出願第61/430,625号の優先権を主張し、同特許は、その全内容が参照により本明細書に組み込まれる。
背景
本明細書は、フロー分析に関する。
データフローグラフは、データに関するオペレーションの実行に使用される。データは、データフローグラフに提供される。データフローグラフは、データに関する一連のオペレーションを実行する。あるシナリオでは、データに関して実行される一連のオペレーションは、データ記録(data record)ごとに異なり得る。
データ記録の小セットは、データフローグラフのテストに使用される。しかし、選択されたデータ記録のセットが本番環境におけるデータ記録を代表するものではない場合があるため、データ記録のセットを選択することが困難な場合もあり得る。
要約
本明細書は、フロー分析に関連する技術について説明する。
一般に、本明細書に記載される対象物の一態様は、データフローグラフを修正する動作であって、データフローグラフは、少なくとも1つの入口点と少なくとも1つの出口点とを接続する複数の経路を含む、動作を含む方法において具体化することができる。データフローグラフを修正するステップは、データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントをデータフローグラフに追加するステップであって、各フローユニットは、データ記録が行き交う経路のセグメントを特定する、ステップを含む。また、方法は、修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定する動作も含む。また、方法は、複数のデータ記録のサブセットを決定する動作であって、実行経路の選択されたセットは、サブセットで表される、動作も含む。これらのおよび他の実施形態はそれぞれ、場合により、以下の特徴の1つまたは複数を含み得る。実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含み得る。また、特徴は、実行経路ではない複数の経路のうちの未使用の経路を特定するステップも含み得る。また、特徴は、データフローグラフを使用して複数のデータ記録のサブセットを処理するステップも含み得る。複数のデータ記録を処理するステップは、複数のデータ記録の1つのデータ記録に第1のフローユニットを追加するステップを含み得る。複数のデータ記録を処理するステップは、データ記録に第2のフローユニットを追加し、第2のフローユニットに第1のフローユニットを追加するステップを含み得る。実行経路を特定するステップは、修正されたデータフローグラフを使用して処理された複数のデータ記録からフローユニットを除去するステップと、除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップとを含み得る。複数のデータ記録のサブセットを決定するステップは、選択された実行経路の1つを有するデータ記録を特定するステップを含み得る。
本明細書に記載される対象物の特定の実施形態は、以下の利点の1つまたは複数を実現するために実装することができる。データフローグラフをデバッグするステップを簡易化することができる。データフローグラフが十分に発揮されるデータ記録のサンプルセットを選択することができる。個別の記録がグラフ中を流れる際にそれらをトレースすることができる。本明細書に記載される対象物の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。対象物の他の特徴、態様および利点は、説明、図面および特許請求の範囲から明らかになるであろう。
データフローグラフ中を通る実行経路を示す。 データ記録の記録系列を決定することができる例示的な環境を示す。 フローユニットを使用して、修正されたデータフローグラフ中を通る記録を追跡する例を示す。 フローユニットを消費する例を示す。 フローユニットを使用して、データフローグラフ中を通る経路を追跡する例を示す。 出力データ記録の生成につながる入力データ記録を特定する例を示す。 データ記録にフローユニットを追加するように、データフローグラフのデータソースコンポーネントを修正する例を示す。 データ記録にフローユニットを追加するように、複数の出力ポートを備えたコンポーネントを修正する例を示す。 フローユニットを処理するように、データシンクを修正する例を示す。 複数のデータフローグラフにわたってフローユニットを使用する例を示す。 フロー分析のための例示的なプロセスを示す。
様々な図面における同様の参照番号および記号表示は同様の要素を示す。
詳細な説明
一般に、フロー分析は、データ記録のセット内の値の分配、データ記録間の関係およびデータ記録を処理して出力記録を生成する方法についてのより完全な理解を可能にする。
図1は、データフローグラフ中を通る実行経路を示す。データフローグラフ102は、例えば、経路108および経路110などの複数の経路を含み、それにより、入口点104(例えば、データソース)から出口点106、112(例えば、データシンク)へとデータ記録を処理することができる。例では、経路108は、入口点104から出口点106へと続く。経路110は、同じ入口点104を出発するが、分岐して出口点112へと続く。
一般に、データフローグラフは、コンポーネントと、コンポーネント間のデータ記録のフローを特定するリンクとで構成されている。コンポーネントは、データソースと、データシンクと、処理用のコンポーネントとを含む。データソースは、データフローグラフへの入口点を提供することができ、グラフで処理されるデータ記録のセットを読み取ることができる。例えば、データソースは、ファイルシステム上の関係型データベースの表またはファイルを含み得る。データソースは、表またはファイルから記録を読み取り、データ記録を作成する。データシンクは、データフローグラフからの出口点を提供することができ、データフローグラフが処理を完了した時点で出力記録を格納することができる。データソースおよびシンクは、例えば、ファイルシステム上に格納された関係型データベースの表またはファイルを含み得る。データフローグラフは、コンピュータ112または他のタイプのコンピュータデバイス上で実行することができる。他の実施形態では、データフローグラフの実行は、複数のコンピューティングデバイス間で分配することができる。
ある実施形態では、コンポーネントは、入力ポートと、出力ポートとを含み得る。リンクは、第1のコンポーネントの出力ポートを第2のコンポーネントの入力ポートに接続する。あるコンポーネントは、複数の入力ポートおよび出力ポートを有し得る。それによって入口点から出口点へデータ記録をナビゲートすることができる一連のコンポーネントおよびリンクは、経路(例えば、経路108、110)と呼ばれる。
フロー分析は、1つまたは複数のデータフローグラフ中を通るデータ記録のフローを追跡するプロセスである。フロー分析は、デバッグ、テストおよびプロファイル分野での新しいアプリケーションセットを可能にする。デバッグの場合、フロー分析により、個別のデータ記録をグラフで処理する際にそれをトレースすることができる。ユーザは、1つまたは複数の記録をマークすることも、ブレークポイントで停止することもでき、グラフ開発環境は、特定の記録に依存するいかなる記録も、また、特定の記録が依存するいかなる記録も認定することを含めて、グラフ中を通る特定の記録の経路を追跡(トレース)する。開発者は、予想外の結果を示した可能性のある出力データ記録を認定し、データ記録の作成に使用された入力データ記録を見て、それらの入力データ記録を追跡してデータフローグラフが予想通りに機能しない可能性のある場所を決定することができる。
テストの場合、フロー分析は、ユーザに、特定の経路を通過する記録のみを含む入力データのサブセットを生成することを可能にする。データフローグラフ中を通る特定の経路に基づいて入力データを選択することによって、処理されたデータ記録の参照整合性を保つことができる。
プロファイルの場合、フロー分析は、ユーザに、記録をグループに分類するグラフを作成し、次いで、これらのカテゴリ内の記録が依存する入力データセットから記録のサブセットを生成することを可能にする。例えば、グラフは、入力顧客およびトランザクションを住所および製品カテゴリ別にグループ分けし、次いで、演算された出力記録のうち、どの記録が、「無益な」シンクに対して「有益な」出力データシンクに到達するかに従って、顧客およびトランザクション記録を分割することができる。
図2は、データ記録の系列を決定することができる例示的な環境を示す。例えば、図1からのコンピュータ112などのコンピュータ上で実行する例示的なシステム200は、データフローグラフリポジトリ202を含む。プロセス矢印204で表されるように、データフローグラフ計装(instrumentation)エンジン206は、データフローグラフリポジトリ202からデータフローグラフを入手する。データフローグラフ計装エンジン206は、以下で論じられるように、修正されたグラフで処理する際にデータフローグラフがデータ記録の記録レベル系列を追跡できるように、グラフを修正する。データフローグラフ計装エンジン206は、例えば、コンピュータ上で実行するプロセスであり得る。
ある実施形態では、データフローグラフ計装エンジン206は、データフローグラフ中を通るデータ記録のフローの追跡を可能にする処理コンポーネントをデータフローグラフに追加する。例えば、追加の処理コンポーネントは、各データ記録に追加のフィールドを追加することができる。これらの追加のフィールドは、フローユニットと呼ばれ得る。ある実施形態では、各フローユニットは、データフローグラフ中を通る経路のセグメントを特定する。フローユニットは、データ記録から除去し、後に分析するために格納することができる。
ある実施形態では、データフローグラフ計装エンジンは、それ自体が、データフローグラフを入力として受け入れて、修正されたデータフローグラフを生成する計装データフローグラフを含み得る。
プロセス矢印208で表されるように、修正されたデータフローグラフは、データフローグラフランタイム環境210に提供することができ、データフローグラフランタイム環境210は、1つのコンピュータまたは複数のコンピュータ上で実行する1つまたは複数のプロセスであり得る。プロセス矢印212で表されるように、データソース214からのデータ記録は、データフローグラフランタイム環境210に提供される。データフローグラフランタイム環境210は、修正されたデータフローグラフを使用してデータ記録を処理する。
プロセス矢印216で表されるように、修正されたデータフローグラフは、フローユニットリポジトリ218にフローユニットを格納する。フローユニットリポジトリ218は、例えば、ファイルシステム上に格納された関係型データベースまたはファイルであり得る。
プロセス矢印220で表されるように、フローユニット分析エンジン222は、格納されたフローユニットを分析する。格納されたフローユニットから、フローユニット分析エンジン222は、データフローグラフで処理された際に各データ記録が取ったさまざまな経路を決定することができる。フローユニット分析エンジン222は、少なくとも1つのデータ記録が取った、データフローグラフ中を通る異なる経路のすべてを決定することができる。
また、フローユニット分析エンジン222は、記録依存性も決定することができる。あるシナリオでは、出力記録は、複数の入力記録に依存する。例えば、データフローグラフは、1年間にわたる顧客による発注の総価格を計算することができる。各注文は、別々の入力記録を表すことになり、これらの記録の集合体は、単一の出力記録を生成することになる。フローユニット分析エンジン222は、各入力データ記録や、出力記録の作成に使用されたあらゆる中間データ記録を決定することができる。
プロセス矢印224で表されるように、フローユニット分析エンジン222は、修正されたデータフローによって生成されたデータ記録について説明するデータプロファイル226を格納することができる。
プロセス矢印228で表されるように、フローユニット分析エンジン222は、データソース214からデータ記録を受け入れることもできる。フローユニット分析エンジン222は、フローユニットを使用して、データ記録の代表サンプルを決定することができる。ある実施形態では、代表サンプルは、少なくとも1つのサンプルデータ記録およびその処理された先行記録がデータフローグラフの異なる経路のそれぞれを取るように決定される。ある実施形態では、代表サンプルは、サブセット内の各データ記録が同じ経路を取るように決定される。
フローユニット分析エンジン222は、データソース214からのデータ記録の完全なセットを処理する際にデータフローグラフによって生成されたフロー範囲と比較した際、データフローグラフ中を通る記録のサブセットのフロー範囲が一貫した状態を保つように、データ記録のサブセットを決定することができる。例えば、データフローグラフは、郵便番号に基づいてトランザクション記録の値を総計するコンポーネントを含み得る。特定の郵便番号を有する記録を選択すると、フローユニット分析エンジン222は、その郵便番号に対応するデータ記録のすべてを選択する。したがって、その郵便番号に対する総計値は、データ記録のサブセットが処理されようが、データソース214のデータ記録のすべてが処理されようが、一貫した状態を保つ。ある実施形態では、フローユニット分析エンジン222は、データフローグラフ中を通るフロー範囲の分配を維持するデータのサブセットを決定することができる。例えば、データ記録の完全なセットを処理する間に顧客の10パーセントが拒否されれば、データ記録のサブセットを処理する際に顧客の10パーセントが拒否されることになる。
プロセス矢印230で表されるように、フローユニット分析エンジン222は、サンプルデータ記録リポジトリ232にデータ記録のサブセットを格納することができる。
一実施形態では、計装データフローグラフの実行は一時停止される。一時停止状態では、コンポーネントの1つのデータ記録は、データフローグラフのコンポーネントをユーザに最初に選択させることによって選択される。システム200は、一時停止状態でコンポーネントに預けられた記録のセットをユーザに示し、その結果、ユーザは、観察用の記録を次に選択することができる。選択された記録と関連付けられたフローユニットデータを使用することで、システム200は、すべての先行記録のセット(入力記録と、選択された記録を含むコンポーネントまでつながるグラフのコンポーネントによって生成されたそれらの中間記録の両方)を決定することができる。入力記録のこのセットを使用することで、システム200は、ここでは、これらの選択された記録のみを含む入力データサブセットの集合体を作成し、次いで、これらのデータサブセットを用いてグラフを再開することができる。ここで、グラフは、選択された記録の実行に踏み込むことができ、それにより、ユーザは、最初に選択したコンポーネントの実行までグラフの挙動を観察することができる。
図3は、フローユニットを使用して、修正されたデータフローグラフ中を通る記録を追跡する例を示す。データソース「ci」302は、第1のデータ記録330と第2のデータ記録332の2つのデータ記録を含む。データ記録がデータソース「ci」302からデータフローグラフに提供される際、フローユニットは、各データ記録に付随している。フローユニット304はデータ記録330に付随し、フローユニット306はデータ記録332に付随している。
ある実施形態では、フローユニットは、フローユニットと関連付けられたコンポーネント識別子と、コンポーネントと関連付けられたグループと、シーケンス番号とを含む。グループは、例えば、それを通じてデータ記録が提供されたポートの表示であり得る。ある実施形態では、フローユニットは、コンポーネント識別子、グループ識別子およびシーケンスでフォーマットされた文字列(例えば、「ci.a.1」、「r1.a.1」)を含み得る。各コンポーネント識別子は、データフローグラフのコンポーネントを一意的に特定することが可能である。例えば、フローユニット304は、文字列「ci.a.1」を含み、「ci」は、フローユニットがデータソース「ci」302と関連付けられていることを示し、グループ「a」は、データ記録が文字「a」318と関連付けられたポート上に提供されたことを示し、シーケンス番号「1」は、データ記録がデータソース「ci」302から文字「a」318と関連付けられたポート上に供給された第1のデータ記録であることを示す。
同様に、フローユニット306は、文字列「ci.a.2」を含み、「ci」は、フローユニットがデータソース「ci」302と関連付けられていることを示し、グループ「a」は、データ記録が文字「a」318と関連付けられたポート上に提供されたことを示し、シーケンス番号「2」は、データ記録がデータソース「ci」302から文字「a」318と関連付けられたポート上に供給された第2のデータ記録であることを示す。ある実施形態では、コンポーネントおよびポートは、数値、文字、文字列または他の任意の識別子に関連付けることができる。
この例では、第1のデータ記録330と第2のデータ記録332の両方とも、フィルタリングコンポーネント「r1」308によって処理される。フィルタリングコンポーネント「r1」308は、第1のデータ記録330を第1のポート320上に提供し、第2のデータ記録332を第2のポート322上に提供する。第1のデータ記録330には、新しいフローユニット310が提供される。新しいフローユニットは、文字列「r1.a.1」を含み、「r1」は、フローユニットがフィルタリングコンポーネント「r1」308と関連付けられていることを示し、「a」は、データ記録が「a」ポート320上に提供されたことを示し、「1」は、データ記録がフィルタリングコンポーネント「r1」308の「a」ポート320上に提供された第1のデータ記録であることを示す。
フィルタリングコンポーネント「r1」308は、第2のデータ記録332を「b」ポート322上に提供する。第1のデータ記録330と同様に、第2のデータ記録には新しいフローユニット312が提供される。新しいフローユニット312は、文字列「r1.b.1」を含み、「r1」は、フローユニットがフィルタリングコンポーネント「r1」308と関連付けられていることを示し、「b」は、データ記録が「b」ポート322上に提供されたことを示し、「1」は、データ記録がフィルタリングコンポーネント「r1」308の「b」ポート322上に提供された第1のデータ記録であることを示す。
すべてのコンポーネントが新しいフローユニットをデータ記録に提供するわけではない。この例では、コンポーネント314、コンポーネント316およびコンポーネント334は、パススルーコンポーネントとして扱われる。これらのコンポーネントは、フロー分析プロセスにおいて無視される。ここでは、第1のデータ記録330はそのフローユニット310を保持し、第2のデータ記録332はそのフローユニット312を保持する。ある実施形態では、データ記録の経路を変更しないコンポーネントは、新しいフローユニットを提供しない。他の実施形態では、各コンポーネントは、新しいフローユニットをデータ記録に提供する。フロー計装エンジンは、新しいフローユニットが構築され、ブロックまたはグループが割り当てられて反映され、特定のコンポーネントおよびポートを通過するように、グラフのどのコンポーネントを計装するかを決定する際に選択性を有し得る。
データ記録がデータシンク324に格納される前、フローユニットは除去される。除去されたフローユニットは、フローユニットデータストア326に格納される。この例では、データシンク324は、第1のデータ記録330および第2のデータ記録332を格納する。フローユニットデータストア326は、フローユニット312およびフローユニット310を格納する。
図4は、フローユニットを消費する例を示す。コンポーネント、ポートおよびシーケンス番号の識別は、必ずしもデータフローグラフ中を通る完全な経路を一意的に特定するのに十分であるとは限らない。完全な経路を特定するため、フローユニットを組み合わせることができる。例えば、図4を参照すると、データフローグラフは、コンポーネント「z1」402と、コンポーネント「z2」404と、コンポーネント「r7」406とを含む。この例では、データ記録412は、コンポーネント「z1」402の「a」ポートによって提供される第4のデータ記録である。データ記録412にはフローユニット410が提供され、フローユニット410は文字列「z1.a.4」を含む。データ記録412がコンポーネント「r7」406によって処理された後、データ記録には、新しいフローユニット414が提供される。新しいフローユニットは、データ記録がコンポーネント「r7」406の「a」ポート408上に提供された第6のデータ記録(「r7.a.6」)であることを示す。これ以上は何もなく、フローユニット414は、データ記録412がコンポーネント「z1」402によって提供されたものか、コンポーネント「z2」404によって提供されたものかは示さない。完全な経路を維持するため、フローユニット410は、フローユニット414に組み込まれる(またはフローユニット414によって消費される)。ある実施形態では、フローユニットは、データ記録またはデータ記録を生成するために処理された1つもしくは複数のデータ記録と以前に関連付けられた他のフローユニットのセットを消費する。
他の実施形態では、フローユニットは、データ記録または処理されたデータ記録と以前に関連付けられたフローユニットへの参照(コピーに対して)を維持する。各フローユニットが置き換えられると、古いフローユニットは、フローユニットリポジトリ(例えば、図2のフローユニットリポジトリ218)に格納される。新たに作成されたフローユニットは、フローユニットリポジトリに格納された置き換えられたフローユニットへの参照を含む。図5は、フローユニットを使用して、データフローグラフ中を通る経路を追跡する例を示す。フローユニットを使用して、データフローグラフ中を通る複雑な経路を追跡することができる。これらの複雑なフローは、記述文字列を使用して説明することができ、その結果、データフローグラフ中を通る同じ経路をたどる各データ記録およびその先行記録は、同一の文字列を有することになる。実行されたフロー経路のセットを、データフローグラフ中を通るすべての可能なフロー経路と比較することによって、実行されたフロー経路のセットの生成に使用されたデータ記録がデータフローグラフのすべての経路をテストするのに十分かどうか(すなわち、実行されたフロー経路がすべての可能なフロー経路をカバーするかどうか)を決定することができる。
各フローユニットはデータ記録と関連付けられ、また、フローユニットは他の「消費された」フローユニットも参照するため、各フローユニットを生成するために処理された完全な記録セットを特定することが可能である。生成されたフローユニットのサブセットを選択することによって、選択されたフローユニットに対応するデータ記録のサブセットを選択することができる。例えば、データフローグラフ500を使用して、顧客の人口統計をプロファイルすることができる。この例では、顧客セットを表すデータ記録のフロー「a」がコンポーネント「ac」502によって提供される(省略して「a」顧客)。分割コンポーネント「f1」504は、データ記録を2つのセットに分割し、各セットは異なる出力ポート上に提供される。例えば、分割コンポーネント「f1」504は、郵便番号に基づいて「a」顧客を分割し得る。
「a」顧客によって完了されたトランザクションのセットを表すフローデータ記録は、コンポーネント「at」510によって提供される(省略して「a」トランザクション)。
結合コンポーネント512は、顧客データ記録と顧客トランザクションとを結合して、「a」顧客に対する組み合わされたデータ記録のフローを生成する。トランザクションデータ記録と結合できない顧客データ記録や、顧客データ記録と結合できないトランザクションデータ記録は、出口点514へとつながる別々の出力ポート上に提供される。一般に、各顧客トランザクションデータ記録は、トランザクションを完了した顧客と関連付けられる。この例では、顧客は、分割コンポーネント「f1」504用の「a」ポートからの顧客データ記録または分割コンポーネント「f1」504の「b」ポートからの顧客データ記録(ただし両方ではない)によって表すことができる。
「b」顧客のセットを表すデータ記録のフローは、コンポーネント「bc」516によって提供される(省略して「b」顧客)。分割コンポーネント「f2」518は、データ記録を2つのセットに分割し、各セットは異なる出力ポート上に提供される。例えば、分割コンポーネント「f2」518は、郵便番号に基づいて「b」顧客を分割し得る。
「b」顧客によって完了されたトランザクションのセットを表すフローデータ記録は、コンポーネント「bt」524によって提供される(省略して「b」トランザクション)。
結合コンポーネント「j2」526は、「b」顧客データ記録と「b」顧客トランザクションとを結合して、「b」顧客に対する組み合わされたデータ記録のフローを生成する。トランザクションデータ記録と結合できない顧客データ記録や、顧客データ記録と結合できないトランザクションデータ記録は、出口点530へとつながる別々の出力ポート上に提供される。一般に、各顧客トランザクションデータ記録は、トランザクションを完了した顧客と関連付けられる。この例では、顧客は、分割コンポーネント「f2」518用の「a」ポートからの顧客データ記録または分割コンポーネント「f2」518の「b」ポートからの顧客データ記録(ただし両方ではない)によって表すことができる。
一般顧客情報を表すデータ記録のフローは、コンポーネント「ci」532によって提供される(省略して顧客情報)。コンポーネント「r1」534は、顧客情報を提供するデータ記録を再フォーマットする。再フォーマットできないデータ記録は、出口点536へと流れるポート上に提供される。再フォーマットできるデータ記録は、第2のポート上に提供される。
結合コンポーネント「j3」538は、再フォーマットされた顧客情報データ記録を、結合コンポーネント「j1」512からのデータ記録および結合コンポーネント「j2」526からのデータ記録と組み合わせる。結合できないデータ記録は、出口点540へと流れる出力ポート上に提供される。結合されたデータ記録は、出力ポート上に提供され、ロールアップコンポーネント「ru」542へと流れる。一般に、コンポーネント「j3」538は、再フォーマットされた顧客情報データ記録を、結合コンポーネント「j1」512用の「a」ポートからのデータ記録または結合コンポーネント「j2」526の「a」ポートからのデータ記録と組み合わせる。
ロールアップコンポーネント「ru」542は、何らかの基準に基づいて、例えば、郵便番号に基づいて、顧客トランザクション記録を総計する。総計記録は、出口点544へとつながるポート上に提供される。
データフローグラフ500は、フローユニットを使用してデータ記録のフローを追跡するように修正される。例えば、データフローグラフ計装エンジン(例えば、図2に示されるデータフローグラフ計装エンジン206)を使用する。文字列表示を使用することで、フローユニットは、フローについて記述するために組み合わせることができる個別のデータ記録とは無関係に、データフローグラフ中を通るデータ記録の複雑なフローについて記述することができる。例えば、コンポーネント「ac」によって提供されたデータ記録は、フローユニット文字列「ac.a」によってタグ付けし、コンポーネント「ac」502用の「a」ポートに由来するデータ記録を示すことができる。
データ記録がフィルタコンポーネント「f1」504によってフィルタ処理された時点で、フローユニット文字列「f1.b」によってデータ記録をタグ付けし、データ記録がフィルタコンポーネント「f1」504の「b」ポート上に提供されたことを示すことができる。ある実施形態では、フローユニットは、データ記録が取った経路の各部分を特定する履歴文字列を含み得る。例えば、データ記録は、履歴文字列「(ac.a)f1.b」でタグ付けすることができる。括弧を使用して、f1.bフローユニットがac.aフローユニットを消費したことを示すことができる。
同様に、コンポーネント「at」510によって提供されたデータ記録は、履歴文字列「at.a」を有するフローユニットでタグ付けし、データ記録がコンポーネント「at」510のポート上に提供されたことを示すことができる。
結合コンポーネント「j1」512は、フィルタコンポーネント「f1」504からの一方の顧客データ記録をコンポーネント「at」510からのトランザクション記録と組み合わせる。組み合わされたデータ記録は、履歴文字列「((ac.a)f1.b,at.a)j1.a」を有するフローユニットでタグ付けし、顧客記録からのフローユニット(「(ac.a)f1.b」)とトランザクション記録(「at.a」)とを組み合わせることによって、新しいフローユニットが作成されたことを示すことができる。コンマを使用して、一緒に組み合わされた複数のフローユニットを分離することができる。
同様に、顧客情報データ記録は、コンポーネント「ci」532によって提供され、履歴文字列「ci.a」を有するフローユニットでタグ付けされる。顧客情報データ記録は、コンポーネント「r1」534によって再フォーマットされる。再フォーマットされた顧客情報データ記録は、履歴文字列「(ci.a)r1.a」を有するフローユニットでタグ付けされる。
結合コンポーネント「j3」538は、結合コンポーネント「j1」512からの組み合わされたデータ記録とコンポーネント「r1」534からの再フォーマットされた顧客情報データ記録とを組み合わせる。新たに組み合わされた記録は、履歴文字列「(((ac.a)f1.b,at.a)j1.a,(ci.a)r1.a)j3.a」を有するフローユニットでタグ付けすることができる。
ロールアップコンポーネント「ru」542は、結合コンポーネント「j3」から放出される複数の記録を単一の記録に組み合わせる。履歴フィールドのアスタリスクを使用して、同じフローからの複数の記録が一緒に組み合わされていることを示すことができる。例えば、ロールアップ記録は、履歴文字列「(*(((ac.a)f1.b,at.a)j1.a,(ci.a)r1.a)j3.a)ru.a」を有するフローユニットでタグ付けすることができる。この表記法は、複数の「(((ac.a)f1.b,at.a)j1.a,(ci.a)r1.a)j3.a」フローユニットがru.aフローユニットの生成において消費されたことを示す。
図6は、出力データ記録の生成につながる入力データ記録を特定する例を示す。実行フロー経路履歴のすべてが決定された時点で、フロー経路履歴を使用して、実行フロー経路のすべてまたは一部にわたる全体的または部分的範囲を提供するデータのサブセットを決定することができる。例えば、関係型データベースに格納された表602は、図5のデータフローグラフ500から生成されたデータ記録のすべてに対する実行フロー経路を含む。表602の各行は、データフローグラフによって生成された出力データ記録に対応する。表の1つの列は、出力記録を生成するために取った実行経路について説明するフローユニット履歴を含む。出力記録から、入力記録を決定することができる。各出力記録は、図4と関連して上記で説明されるような入れ子フローユニットを含むフローユニットに対応する。例えば、矢印606によって表されるように、行604は、フローユニット608の表示を含む。フローユニット608は、フローユニットの生成において消費されたすべてのフローユニットを含む。行604に対応する出力データ記録の生成に必要な入力データ記録は、フローユニット木の「葉ノード」を検査することによって決定することができる。それは、それらの生成において他のいかなるフローユニットも消費しなかったフローユニットである。
この例では、入れ子フローユニット610は、コンポーネント「ci」の「a」ポート上に提供された第10のデータ記録が出力データ記録の作成において使用されたことを示す。コンポーネント「ci」は単一のポートのみを含むため(図5のコンポーネント「ci」532を参照)、入力データ記録を一意的に特定することができる。
同様に、入れ子フローユニット612、614、616、618および620は、コンポーネント「at」の「a」ポート上に提供された第8のデータ記録、コンポーネント「ac」の「a」ポート上に提供された第10のデータ記録、コンポーネント「ci」の「a」ポート上に提供された第19のデータ記録、コンポーネント「at」の「a」ポート上に提供された第21のデータ記録およびコンポーネント「ac」の「a」ポート上に提供された第30のデータ記録がそれぞれ、出力データ記録の作成において使用されたことを示す。これらの記録を含むデータのサンプルセットは、表602の行604に対応する出力データ記録を生成する。
出力データ記録の選択されたサブセットと関連付けられたフローユニット履歴を使用することによって、これらの出力記録を生成する入力データ記録のサブセットを選択することができる。入力データ記録のこのサブセットは、プログラムの挙動を変更することなく、テストまたは分析のために使用することができる。例えば、テストセットがコンポーネント「at」の「a」ポート上に提供された第21のデータ記録を含まなければ、グラフの実行により、同じ出力記録が生成されることはない。
図7は、データ記録にフローユニットを追加するように、データフローグラフのデータソースコンポーネントを修正する例を示す。一般に、データフローグラフは、データ記録にフローユニットを追加したり、データフローグラフに実行経路のマップを提供するためにフローユニットを一緒に組み合わせたり、データ記録がデータフローグラフを出る前にフローユニットを除去したりするように計装することができる。
記録系列を提供するようにデータフローグラフ700を修正するステップは、フローユニットを含むように各データ記録を再フォーマットするコンポーネントを各データソースの後に追加するステップを含む。ある実施形態では、各データソースは、元の入力データセットコンポーネントのコピーと、フローユニットを含むように各データ記録を再フォーマットするコンポーネントとを含むサブグラフ(または入れ子グラフ)と置き換えられる。例えば、データフローグラフ700は、データソース702がフローユニットジェネレータコンポーネント704にデータ記録を提供するように修正される。
ある実施形態では、フローユニットジェネレータコンポーネント704は、各データ記録に追加のフィールドを追加し、追加のフィールドは、上記で説明されるようなフローユニットである。
図8は、データ記録にフローユニットを追加するように、複数の出力ポートを備えたコンポーネントを修正する例を示す。データフローグラフ700は、複数の出力ポート804、806を有する再フォーマットコンポーネント802を含む。この例では、別々のフローユニットジェネレータコンポーネントが各ポートに追加される。ポート804はフローユニットジェネレータ808に対応し、ポート806はフローユニットジェネレータ810に対応する。ある実施形態では、複数の出力ポートを備えたコンポーネントは、サブグラフと置き換えられる。例えば、サブグラフ812は、元のコンポーネントのコピーを含み、フローユニットを備えたデータ記録を各ポート上に提供する。
図9は、フローユニットを処理するように、データシンクを修正する例を示す。データフローグラフ700は、データシンク902を含む。データフローグラフは、フローユニット除去コンポーネント904を追加するように修正される。フローユニット除去コンポーネント904は、データ記録からフローユニットを除去し、それをフローユニットリポジトリ906に格納する。フローユニットのないデータ記録は、データシンク902に格納される。
図10は、複数のデータフローグラフにわたってフローユニットを使用する例を示す。例えば、計装データフローグラフA 1004は、データストア1002からデータ記録を読み取る。プロセス矢印1006で表されるように、データフローグラフA 1004は、記録を処理し、データストア1008に出力データ記録を生成する。プロセス矢印1012で表されるように、データフローグラフA 1004によって生成された各出力データ記録は、フローユニットリポジトリ1010に格納されたフローユニットと関連付けられる。
プロセス矢印1016で表されるように、計装データフローグラフBは、データストア1008からデータ記録を読み取り、記録を処理し、それらをデータストア1020に格納する。プロセス矢印1014で表されるように、データストア1008から読み取られた各データ記録に対する新しいフローユニットを作成する代わりに、計装データフローグラフB 1018は、フローユニットリポジトリ1010からデータ記録と関連付けられたフローユニットを読み取る。
プロセス矢印1022で表されるように、計装データグラフは、フローユニットリポジトリ1010にフローユニットを格納する。計装データフローグラフB 1018から生成されたフローユニットは、消費されたフローユニットと、データフローグラフA 1004とデータフローグラフB 1018の両方を通るデータ記録およびその先行データ記録の完全な実行経路を特定する履歴とを含む。
図11は、フロー分析のための例示的なプロセスを示す。プロセスは、例えば、図1のコンピュータ112などの1つまたは複数のコンピューティングデバイス上で実装することができる。
プロセス1100は、データフローグラフを修正する(1102)。データフローグラフは、データフローグラフで処理されたデータ記録からフローユニットを追加および除去するように修正される。各フローユニットは、データフローグラフ中を通る経路のセグメントを特定する。
プロセス1100は、フローユニットに基づいて実行経路を特定する(1104)。フローユニットを使用して、データ記録およびそれを生成するために使用された先行記録が取ったデータフローグラフ中を通る経路を特定することができる。
プロセス1100は、データ記録のサブセットを決定する(1106)。データ記録のサブセットは、実行経路に基づいて決定され、その結果、サブセットの少なくとも1つのデータ記録は、データフローグラフ中を通る各実行経路を通ったことになる。
本明細書に記載される対象物およびオペレーションの実施形態は、本明細書で開示される構造およびそれらの構造上の均等物またはそれらの1つもしくは複数の組合せを含む、デジタル電子回路、または、コンピュータソフトウェア、ファームウェアもしくはハードウェアにおいて実装することができる。本明細書に記載される対象物の実施形態は、データ処理装置によって実行するために、または、データ処理装置の動作を制御するために、コンピュータ記憶媒体上で符号化された1つまたは複数のコンピュータプログラム(すなわち、コンピュータプログラム命令の1つまたは複数のモジュール)として実装することができる。その代替としてまたはそれに加えて、プログラム命令は、人工的に生成された伝播信号(例えば、データ処理装置で実行するため、適切な受信機装置への送信のために情報を符号化するように生成された機械的に生成された電気信号、光信号または電磁信号)上で符号化することができる。コンピュータ記憶媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、または、それらの1つもしくは複数の組合せであっても、それらに含まれてもよい。その上、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝播信号で符号化されたコンピュータプログラム命令の送信元または送信先であり得る。また、コンピュータ記憶媒体は、1つまたは複数の別々の物理的コンポーネントまたは媒体(例えば、複数のCD、ディスクまたは他の記憶装置)であっても、それらに含まれてもよい。
本明細書に記載されるオペレーションは、1つもしくは複数のコンピュータ可読記憶装置上に格納されるかまたは他の送信元から受信されるデータに対して、データ処理装置によって実行されるオペレーションとして実装することができる。
「データ処理装置」という用語は、データを処理するためのあらゆる種類の装置、デバイスおよびマシンを包含し、一例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または、前述の複数のものもしくは組合せを含む。装置は、特殊用途論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。また、装置は、ハードウェアに加えて、問題のコンピュータプログラム用の実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、または、それらの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどのさまざまな異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプトまたはコードとしても知られる)は、コンパイラ型またはインタープリタ型言語、宣言型または手続き型言語を含む、いかなる形式のプログラミング言語でも記述することができ、スタンドアロンプログラムとして、または、コンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチン、オブジェクトまたは他のユニットとして含む、いかなる形式でも展開することができる。コンピュータプログラムは、ファイルシステムのファイルに対応することができるが、対応できなくてもよい。プログラムは、他のプログラムもしくはデータを保持するファイルの一部(例えば、マークアップ言語ドキュメントに格納された1つまたは複数のスクリプト)に、問題のプログラム専用の単一のファイルに、または、複数の連携ファイル(例えば、1つまたは複数のモジュール、サブプログラムまたはコードの部分を格納するファイル)に格納することができる。コンピュータプログラムは、1つのコンピュータ上、または、1つの場所に位置するかもしくは複数の場所にわたって分散し、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開することができる。
本明細書に記載されるプロセスおよび論理のフローは、入力データの操作および出力の生成によって動作を実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行することができる。また、プロセスおよび論理のフローは、特殊用途論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行することもでき、装置は、特殊用途論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)として実装することもできる。
コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方およびあらゆる種類のデジタルコンピュータのいずれか1つまたは複数のプロセッサを含む。一般に、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの不可欠な要素は、命令に従って動作を実行するためのプロセッサと、命令およびデータを格納するための1つまたは複数のメモリデバイスである。また、一般に、コンピュータは、データを格納するための1つまたは複数の大容量記憶装置(例えば、磁気ディスク、光磁気ディスクまたは光ディスク)を含むか、あるいは、それらと動作可能に結合され、データの受信もしくはデータの送信またはその両方を行う。しかし、コンピュータには、そのようなデバイスがなくてもよい。その上、コンピュータは、いくつか例を挙げてみると、例えば、携帯電話、携帯情報端末(PDA)、携帯型オーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、または、携帯用の記憶装置(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などの別のデバイスに埋め込むことができる。コンピュータプログラム命令およびデータの格納に適したデバイスは、すべての形式の不揮発性メモリ、媒体およびメモリデバイスを含み、一例として、半導体メモリデバイス(例えば、EPROM、EEPROMおよびフラッシュメモリデバイス)、磁気ディスク(例えば、内蔵ハードディスクまたはリムーバブルディスク)、光磁気ディスク、ならびに、CD−ROMおよびDVD−ROMディスクを含む。プロセッサおよびメモリは、特殊用途論理回路によって補完することも、特殊用途論理回路に組み込むこともできる。
ユーザとの相互作用を提供するため、本明細書に記載される対象物の実施形態は、ユーザに情報を表示するためのディスプレイデバイス(例えば、CRT(ブラウン管)またはLCD(液晶ディスプレイ)モニタ)や、それによりユーザはコンピュータに入力を提供することができるキーボードおよびポインティングデバイス(例えば、マウスまたはトラックボール)を有するコンピュータ上で実装することができる。同様に、他の種類のデバイスを使用して、ユーザとの相互作用を提供することもできる。例えば、ユーザに提供されるフィードバックは、いかなる形式の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバック)でもよく、ユーザからの入力は、音響、音声または触覚入力を含むいかなる形式でも受信することができる。それに加えて、コンピュータは、ユーザによって使用されるデバイスへのドキュメントの送信および同デバイスからのドキュメントの受信によって(例えば、ウェブブラウザから受信された要求に応じて、ユーザのクライアントデバイス上のウェブブラウザへウェブページを送信することによって)ユーザと相互作用することができる。
本明細書に記載される対象物の実施形態は、バックエンドコンポーネント(例えば、データサーバとして)を含むか、ミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むか、フロントエンドコンポーネント(例えば、それを通じてユーザは本明細書に記載される対象物の実施形態と相互作用することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ)を含むか、または、そのようなバックエンド、ミドルウェアもしくはフロントエンドコンポーネントの1つもしくは複数の任意の組合せを含むコンピューティングシステムにおいて実装することができる。システムのコンポーネントは、デジタルデータ通信のいかなる形式または媒体(例えば、通信ネットワーク)によっても相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、ならびに、ピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントとサーバとを含み得る。クライアントおよびサーバは、一般に、互いにリモート接続され、通常、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行し、互いにクライアント/サーバ関係を有するコンピュータプログラムに基づいて生じる。ある実施形態では、サーバは、クライアントデバイスにデータ(例えば、HTMLページ)を送信する(例えば、クライアントデバイスと相互作用するユーザへのデータの表示および同ユーザからのユーザ入力の受信を目的として)。クライアントデバイス側で生成されたデータ(例えば、ユーザ相互作用の結果)は、クライアントデバイスからサーバ側で受信することができる。
本明細書は多くの特定の実施形態の詳細を含むが、これらは、発明の範囲または特許請求され得る範囲を制限するものと解釈されてはならず、むしろ、特定の発明の特定の実施形態に特有の特徴を説明するものとして解釈されたい。別々の実施形態の文脈において本明細書に記載されるある特定の特徴は、単一の実施形態と組み合わせて実装することもできる。逆に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々にまたは任意の適切な下位組合せで実装することもできる。その上、特徴は、ある特定の組合せで機能するものとして上記で説明され得、そのようなものとして最初に特許請求されることさえあり得るが、特許請求された組合せからの1つまたは複数の特徴は、いくつかの事例では、その組合せから削除することができ、特許請求された組合せは、下位組合せまたは下位組合せの変形形態を対象とし得る。
同様に、オペレーションは、図面において特定の順番で描写されているが、これは、所望の結果を得るために、示される特定の順番でもしくは起こった順番でそのようなオペレーションを実行すること、または、示されるすべてのオペレーションを実行することが必要であると理解してはならない。ある特定の状況では、マルチタスクおよび並行処理が有利であり得る。その上、上記で説明される実施形態のさまざまなシステムコンポーネントの分離は、すべての実施形態においてそのような分離が必要であると理解してはならず、説明されるプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一緒に統合することも、複数のソフトウェア製品にパッケージ化することもできることを理解されたい。
したがって、対象物の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲内にある。いくつかの事例では、特許請求の範囲内に列挙される動作は、異なる順番で実行しても依然として所望の結果を得ることができる。それに加えて、添付の図面に描写されるプロセスは、所望の結果を得るために、必ずしも示される特定の順番または起こった順番でなければならないわけではない。ある実施形態では、マルチタスクおよび並行処理が有利であり得る。
上記で説明されるフロー分析手法は、コンピュータ上で実行するためのソフトウェアを使用して実装することができる。例えば、ソフトウェアは、1つまたは複数のプログラムされたまたはプログラム可能なコンピュータシステム(それは、分散型、クライアント/サーバまたはグリッドなどのさまざまなアーキテクチャのものである)上で実行する1つまたは複数のコンピュータプログラムの手順を形成し、コンピュータシステムはそれぞれ、少なくとも1つのプロセッサと、少なくとも1つのデータ格納システム(揮発性および不揮発性メモリならびに/または格納要素を含む)と、少なくとも1つの入力デバイスまたはポートと、少なくとも1つの出力デバイスまたはポートを含む。ソフトウェアは、例えば、データフローグラフの設計および構成に関連する他のサービスを提供する大規模なプログラムの1つまたは複数のモジュールを形成することができる。グラフのノードおよび要素は、コンピュータ可読媒体に格納されたデータ構造、または、データリポジトリに格納されたデータモデルに適合する他の組織化されたデータとして実装することができる。
ソフトウェアは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能なCD−ROMなどの記憶媒体上で提供されても、ネットワークの通信媒体上で、ソフトウェアが実行されるコンピュータの記憶媒体に送達されてもよい(伝播信号で符号化される)。機能のすべては、特殊用途のコンピュータ上か、または、コプロセッサなどの特殊用途のハードウェアを使用して実行することができる。ソフトウェアは、ソフトウェアによって指定されるコンピューテーションの異なる部分は異なるコンピュータによって実行される分散様式で実装することができる。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能な記憶媒体もしくはデバイス(例えば、ソリッドステートメモリもしくは媒体、または、磁気もしくは光媒体)上に格納されるか、または、同記憶媒体もしくはデバイスにダウンロードされるが、それは、コンピュータシステムで記憶媒体もしくはデバイスを読み取り、本明細書に記載される手順を実行する際にコンピュータを構成および動作するためである。また、本発明のシステムは、コンピュータ可読記憶媒体として実装され、コンピュータプログラムを用いて構成されるものと考慮され得、そのように構成された記憶媒体は、特定の事前に定義された様式でコンピュータシステムを動作させ、本明細書に記載される機能を実行する。
本発明の多くの実施形態について説明してきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更を行うことができることが理解されよう。例えば、上記で説明されたステップのいくつかは、順番に依存しないものであり得、したがって、説明されている順番とは異なる順番で実行することができる。
前述の説明は、例示を意図するものであり、本発明の範囲を限定するものではなく、本発明の範囲は、添付の特許請求の範囲によって定義されることを理解されたい。例えば、上記で説明された多くの機能ステップは、処理全体に実質的に影響を与えることなく、異なる順番で実行することができる。他の実施形態は、以下の特許請求の範囲内にある。

Claims (24)

  1. データフローグラフを修正するステップであって、前記データフローグラフは、少なくとも1つの入口点と少なくとも1つの出口点とを接続する複数の経路を含み、該ステップは、
    データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントを前記データフローグラフに追加するステップであって、各フローユニットは、前記データ記録が行き交う経路のセグメントを特定する、ステップを含み、
    前記修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定するステップと、
    前記複数のデータ記録のサブセットを決定するステップであって、実行経路の選択されたセットは、前記サブセットで表される、ステップと
    を含む、コンピュータに実行される方法。
  2. 実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含む、請求項1に記載の方法。
  3. 前記実行経路ではない前記複数の経路のうちの未使用の経路を特定するステップをさらに含む、請求項1に記載の方法。
  4. 前記データフローグラフを使用して前記複数のデータ記録のサブセットを処理するステップをさらに含む、請求項1に記載の方法。
  5. 前記複数のデータ記録を処理するステップは、前記複数のデータ記録の1つのデータ記録に第1のフローユニットを追加するステップを含む、請求項1に記載の方法。
  6. 前記複数のデータ記録を処理するステップは、前記データ記録に第2のフローユニットを追加し、前記第2のフローユニットに前記第1のフローユニットを追加するステップを含む、請求項5に記載の方法。
  7. 実行経路を特定するステップは、
    前記修正されたデータフローグラフを使用して処理された前記複数のデータ記録からフローユニットを除去するステップと、
    前記除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップと
    を含む、請求項1に記載の方法。
  8. 前記複数のデータ記録のサブセットを決定するステップは、前記選択された実行経路の1つを有するデータ記録を特定するステップを含む、請求項7に記載の方法。
  9. データフローグラフを修正するステップであって、前記データフローグラフは、少なくとも1つの入口点と少なくとも1つの出口点とを接続する複数の経路を含み、該ステップは、
    データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントを前記データフローグラフに追加するステップであって、各フローユニットは、前記データ記録が行き交う経路のセグメントを特定する、ステップを含み、
    前記修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定するステップと、
    前記複数のデータ記録のサブセットを決定するステップであって、実行経路の選択されたセットは、前記サブセットで表される、ステップと
    を含むオペレーションを実行するようにプログラムされた1つまたは複数のコンピュータ
    を含む、システム。
  10. 実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含む、請求項9に記載のシステム。
  11. 前記実行経路ではない前記複数の経路のうちの未使用の経路を特定するステップをさらに含む、請求項9に記載のシステム。
  12. 前記データフローグラフを使用して前記複数のデータ記録のサブセットを処理するステップをさらに含む、請求項9に記載のシステム。
  13. 前記複数のデータ記録を処理するステップは、前記複数のデータ記録の1つのデータ記録に第1のフローユニットを追加するステップを含む、請求項9に記載のシステム。
  14. 前記複数のデータ記録を処理するステップは、前記データ記録に第2のフローユニットを追加し、前記第2のフローユニットに前記第1のフローユニットを追加するステップを含む、請求項13に記載のシステム。
  15. 実行経路を特定するステップは、
    前記修正されたデータフローグラフを使用して処理された前記複数のデータ記録からフローユニットを除去するステップと、
    前記除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップと
    を含む、請求項9に記載のシステム。
  16. 前記複数のデータ記録のサブセットを決定するステップは、前記選択された実行経路の1つを有するデータ記録を特定するステップを含む、請求項15に記載のシステム。
  17. コンピュータプログラムで符号化されたコンピュータ記憶媒体であって、前記コンピュータプログラムは、データ処理装置によって実行される際に、前記データ処理装置に、
    データフローグラフを修正するステップであって、前記データフローグラフは、少なくとも1つの入口点と少なくとも1つの出口点とを接続する複数の経路を含み、該ステップは、
    データ記録にフローユニットを追加したり、データ記録からフローユニットを除去したりするコンポーネントを前記データフローグラフに追加するステップであって、各フローユニットは、前記データ記録が行き交う経路のセグメントを特定する、ステップを含み、
    前記修正されたデータフローグラフを使用して複数のデータ記録を処理することによって得られたフローユニットに基づいて実行経路を特定するステップと、
    前記複数のデータ記録のサブセットを決定するステップであって、実行経路の選択されたセットは、前記サブセットで表される、ステップと
    を含むオペレーションを実行させる命令を含む、コンピュータ記憶媒体。
  18. 実行経路を特定するステップは、データ記録に追加されたフローユニットのセットを決定するステップを含む、請求項17に記載のコンピュータ記憶媒体。
  19. 前記実行経路ではない前記複数の経路のうちの未使用の経路を特定するステップをさらに含む、請求項17に記載のコンピュータ記憶媒体。
  20. 前記データフローグラフを使用して前記複数のデータ記録のサブセットを処理するステップをさらに含む、請求項17に記載のコンピュータ記憶媒体。
  21. 前記複数のデータ記録を処理するステップは、前記複数のデータ記録の1つのデータ記録に第1のフローユニットを追加するステップを含む、請求項17に記載のコンピュータ記憶媒体。
  22. 前記複数のデータ記録を処理するステップは、前記データ記録に第2のフローユニットを追加し、前記第2のフローユニットに前記第1のフローユニットを追加するステップを含む、請求項21に記載のコンピュータ記憶媒体。
  23. 実行経路を特定するステップは、
    前記修正されたデータフローグラフを使用して処理された前記複数のデータ記録からフローユニットを除去するステップと、
    前記除去されたフローユニットを分析して、各データ記録に対する実行経路を決定するステップと
    を含む、請求項17に記載のコンピュータ記憶媒体。
  24. 前記複数のデータ記録のサブセットを決定するステップは、前記選択された実行経路の1つを有するデータ記録を特定するステップを含む、請求項23に記載のコンピュータ記憶媒体。
JP2016024609A 2011-01-07 2016-02-12 フロー分析計装 Active JP6220910B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161430625P 2011-01-07 2011-01-07
US61/430,625 2011-01-07

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013548540A Division JP5886878B2 (ja) 2011-01-07 2012-01-05 フロー分析計装

Publications (2)

Publication Number Publication Date
JP2016103299A true JP2016103299A (ja) 2016-06-02
JP6220910B2 JP6220910B2 (ja) 2017-10-25

Family

ID=45582019

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013548540A Active JP5886878B2 (ja) 2011-01-07 2012-01-05 フロー分析計装
JP2016024609A Active JP6220910B2 (ja) 2011-01-07 2016-02-12 フロー分析計装

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013548540A Active JP5886878B2 (ja) 2011-01-07 2012-01-05 フロー分析計装

Country Status (8)

Country Link
US (1) US9563411B2 (ja)
EP (1) EP2661687B1 (ja)
JP (2) JP5886878B2 (ja)
KR (1) KR101894925B1 (ja)
CN (1) CN103403677B (ja)
AU (2) AU2012204292B2 (ja)
CA (1) CA2823691C (ja)
WO (1) WO2012094496A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280373B1 (en) * 2012-10-16 2016-03-08 IntelliCorp Inc. Data transfer guide
US10789294B2 (en) * 2013-03-02 2020-09-29 Leon Guzenda Method and system for performing searches of graphs as represented within an information technology system
CA2956078C (en) 2014-07-24 2021-12-07 Ab Initio Technology Llc Data lineage summarization
SG11201701662XA (en) * 2014-09-02 2017-04-27 Ab Initio Technology Llc Visually specifying subsets of components in graph-based programs through user interactions
US9880818B2 (en) * 2014-11-05 2018-01-30 Ab Initio Technology Llc Application testing
AU2016219432A1 (en) 2015-02-11 2017-08-24 Ab Initio Technology Llc Filtering data lineage diagrams
WO2016130615A1 (en) 2015-02-11 2016-08-18 Ab Initio Technology Llc Filtering data lineage diagrams
US10135854B2 (en) * 2015-04-07 2018-11-20 Informatica Llc Method, apparatus, and computer-readable medium for generating a data proliferation graph
US10496528B2 (en) * 2015-08-31 2019-12-03 Microsoft Technology Licensing, Llc User directed partial graph execution
US10936289B2 (en) 2016-06-03 2021-03-02 Ab Initio Technology Llc Format-specific data processing operations
US10379825B2 (en) 2017-05-22 2019-08-13 Ab Initio Technology Llc Automated dependency analyzer for heterogeneously programmed data processing system
US11126411B2 (en) * 2018-12-13 2021-09-21 Sap Se Dashboard user interface for data driven applications
US10826801B1 (en) 2019-07-31 2020-11-03 Bank Of America Corporation Multi-level data channel and inspection architectures
US11115310B2 (en) 2019-08-06 2021-09-07 Bank Of America Corporation Multi-level data channel and inspection architectures having data pipes in parallel connections
US11470046B2 (en) 2019-08-26 2022-10-11 Bank Of America Corporation Multi-level data channel and inspection architecture including security-level-based filters for diverting network traffic
US20210149734A1 (en) * 2019-11-15 2021-05-20 Nvidia Corporation Techniques for modifying an executable graph to perform a workload associated with a new task graph
WO2022195862A1 (ja) * 2021-03-19 2022-09-22 日本電気株式会社 分析装置、分析システム、分析方法、及び分析プログラム

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01125634A (ja) * 1987-11-11 1989-05-18 Hitachi Ltd モジュール連携テスト方法
JPH05151371A (ja) * 1991-11-28 1993-06-18 Sanyo Electric Co Ltd データ駆動型計算機
JPH06348549A (ja) * 1993-06-07 1994-12-22 Nikon Corp ソフトウエア処理装置
JP2003516581A (ja) * 1999-12-06 2003-05-13 エービー イニティオ ソフトウェア コーポレーション 連続フローチェックポイント設定データ処理法
WO2008124319A1 (en) * 2007-04-10 2008-10-16 Ab Initio Technology Llc Editing and compiling business rules
US20090327196A1 (en) * 2008-06-30 2009-12-31 Ab Initio Software Llc Data Logging in Graph-Based Computations
WO2010134325A1 (ja) * 2009-05-20 2010-11-25 日本電気株式会社 動的データフロー追跡方法、動的データフロー追跡プログラム、動的データフロー追跡装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02307129A (ja) * 1989-05-23 1990-12-20 Nec Corp スナップid出力文設定/削除方式
US7406424B2 (en) * 2001-08-29 2008-07-29 Hewlett-Packard Development Company, L.P. Migration of a workflow system to changed process definitions
US7634582B2 (en) 2003-12-19 2009-12-15 Intel Corporation Method and architecture for optical networking between server and storage area networks
WO2005109773A2 (en) * 2004-04-30 2005-11-17 Nexthop Technologies, Inc. Remote management of communication devices
US20070074175A1 (en) * 2005-09-23 2007-03-29 Telefonaktiebolaget L M Ericsson (Publ) Method and system for dynamic probes for injection and extraction of data for test and monitoring of software
US7548937B2 (en) 2006-05-04 2009-06-16 International Business Machines Corporation System and method for scalable processing of multi-way data stream correlations
US20100138388A1 (en) * 2008-12-02 2010-06-03 Ab Initio Software Llc Mapping instances of a dataset within a data management system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01125634A (ja) * 1987-11-11 1989-05-18 Hitachi Ltd モジュール連携テスト方法
JPH05151371A (ja) * 1991-11-28 1993-06-18 Sanyo Electric Co Ltd データ駆動型計算機
JPH06348549A (ja) * 1993-06-07 1994-12-22 Nikon Corp ソフトウエア処理装置
JP2003516581A (ja) * 1999-12-06 2003-05-13 エービー イニティオ ソフトウェア コーポレーション 連続フローチェックポイント設定データ処理法
WO2008124319A1 (en) * 2007-04-10 2008-10-16 Ab Initio Technology Llc Editing and compiling business rules
US20090327196A1 (en) * 2008-06-30 2009-12-31 Ab Initio Software Llc Data Logging in Graph-Based Computations
WO2010134325A1 (ja) * 2009-05-20 2010-11-25 日本電気株式会社 動的データフロー追跡方法、動的データフロー追跡プログラム、動的データフロー追跡装置

Also Published As

Publication number Publication date
JP6220910B2 (ja) 2017-10-25
AU2012204292A1 (en) 2013-05-02
CN103403677B (zh) 2017-08-11
JP2014506370A (ja) 2014-03-13
KR20140006862A (ko) 2014-01-16
US20120179726A1 (en) 2012-07-12
KR101894925B1 (ko) 2018-09-04
WO2012094496A1 (en) 2012-07-12
CN103403677A (zh) 2013-11-20
EP2661687A1 (en) 2013-11-13
AU2012204292B2 (en) 2016-05-19
AU2016216684B2 (en) 2017-09-28
CA2823691A1 (en) 2012-07-12
JP5886878B2 (ja) 2016-03-16
CA2823691C (en) 2020-03-24
AU2016216684A1 (en) 2016-09-08
US9563411B2 (en) 2017-02-07
EP2661687B1 (en) 2021-03-10

Similar Documents

Publication Publication Date Title
JP6220910B2 (ja) フロー分析計装
US11475023B2 (en) Impact analysis
Rubin et al. Agile development with software process mining
KR101732764B1 (ko) 코드 클론 검출을 이용하는 지능형 코드 디퍼런싱을 수행하는 방법 및 시스템
US8843943B2 (en) Generating a service definition in view of service activity events
CN107250988B (zh) 应用程序测试
Sarno et al. Decision mining for multi choice workflow patterns
US20170337227A1 (en) Multidimensional application monitoring visualization and search
JP2018500642A (ja) グラフのデバッグ
Cassé et al. A tracing based model to identify bottlenecks in physically distributed applications
Brown et al. AcoustiCloud: A cloud-based system for managing large-scale bioacoustics processing
Vera et al. Event-based execution architectures for dynamic software systems
Shatnawi et al. Reside: Reusable service identification from software families
CN109144498A (zh) 一种面向对象实例化任务的api自动推荐方法及装置
Ajwani et al. Generating synthetic task graphs for simulating stream computing systems
Dittrich et al. Network analysis of software repositories: identifying subject matter experts
de Oliveira et al. Debugging Scientific Workflows with Provenance: Achievements and Lessons Learned.
Nomura et al. Massive event data analysis and processing service development environment using dfd
Li et al. A generic approach for process performance analysis using bipartite graph matching
Dornieden Knowledge-driven user behavior model extraction for iobserve
Skouradaki Workload mix definition for benchmarking BPMN 2.0 Workflow Management Systems
Goulão et al. Streamlining scenario modeling with model-driven development: A case study
Aalmink et al. Enterprise tomography: An efficient approach for Semi-Automatic localization of integration concepts in VLBAs
Mukala et al. Process mining event logs from FLOSS data: State of the art and perspectives
Brunings Discovering Context-Rich Local Process Models

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170201

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170413

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170801

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170901

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171002

R150 Certificate of patent or registration of utility model

Ref document number: 6220910

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250