(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-04
(45)【発行日】2023-01-13
(54)【発明の名称】コンピュータプログラムシステムの静的及び実行時分析
(51)【国際特許分類】
G06F 11/36 20060101AFI20230105BHJP
【FI】
G06F11/36 112
(21)【出願番号】P 2021569170
(86)(22)【出願日】2020-05-21
(86)【国際出願番号】 US2020033998
(87)【国際公開番号】W WO2020237051
(87)【国際公開日】2020-11-26
【審査請求日】2021-11-19
(32)【優先日】2019-05-22
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-01-17
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ジョン・ジョイス
(72)【発明者】
【氏名】マーシャル・エー・イスマン
(72)【発明者】
【氏名】サム・ケンダル
【審査官】関口 明紀
(56)【参考文献】
【文献】特開2019-046001(JP,A)
【文献】特開2018-116517(JP,A)
【文献】特開2013-156802(JP,A)
【文献】特開2011-060277(JP,A)
【文献】特開2009-245066(JP,A)
【文献】米国特許出願公開第2011/0258611(US,A1)
【文献】米国特許出願公開第2013/0219057(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
(57)【特許請求の範囲】
【請求項1】
複数のコンピュータプログラムを含むコンピュータプログラムエコシステムを分析するためのコンピュータによって実装される方法であって、
前記コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいて前記コンピュータプログラムエコシステムの要素間の静的依存関係を識別するステップであって、前記コンピュータプログラムエコシステムの前記要素は前記コンピュータプログラムエコシステムの前記複数のコンピュータプログラム及び前記コンピュータプログラムに関連するデータ資源を含む、識別するステップを含む、前記コンピュータプログラムエコシステムの静的分析を行うステップと、
データレコードを処理するために前記コンピュータプログラムエコシステムの実行中に利用された前記コンピュータプログラムエコシステムの前記要素の1つ又は複数を識別するステップを含む、前記コンピュータプログラムエコシステムの実行時分析を行うステップと、
前記コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有する前記コンピュータプログラムエコシステムのコンピュータプログラムを識別するステップを含む、前記コンピュータプログラムエコシステムのスケジュール分析を行うステップと、
前記静的分析、前記実行時分析、及び前記スケジュール分析の結果に基づき、前記コンピュータプログラムエコシステムの前記要素のサブセットをエコシステムユニットとして識別するステップと、
第1のコンピュータシステムから第2のコンピュータシステムに前記エコシステムユニットを移行するか、前記エコシステムユニットを試験するか、又はその両方を行うステップと
を含む方法。
【請求項2】
実行時分析を行うステップが、
前記コンピュータプログラムエコシステムの実行によって生成される実行時ログ情報を得るステップと、
前記コンピュータプログラムエコシステムの実行中に利用された前記コンピュータプログラムエコシステムの前記1つ又は複数の要素を識別するために前記実行時ログ情報を分析するステップと
を含む、請求項1に記載の方法。
【請求項3】
前記実行時ログ情報を分析するステップが、
前記コンピュータプログラムエコシステムの実行中に実行された1つ又は複数のコンピュータプログラムを識別するために前記実行時ログ情報内のパラメータの値を分析するステップ
を含む、請求項2に記載の方法。
【請求項4】
前記要素のサブセットをエコシステムユニットとして識別するステップが、
前記コンピュータプログラムエコシステムの実行中に実行された前記コンピュータプログラムを前記エコシステムユニットの一部として識別するステップ
を含む、請求項3に記載の方法。
【請求項5】
前記コンピュータプログラムエコシステムの実行中に実行された1つ又は複数のコンピュータプログラムを識別するステップが、
実行されたコンピュータプログラム間の実行時依存関係を識別するステップ
を含む、請求項3に記載の方法。
【請求項6】
実行されたコンピュータプログラム間の実行時依存関係を識別するステップが、
前記実行時ログ情報内の前記パラメータの前記値に基づいて前記実行時依存関係を識別するステップ
を含む、請求項3に記載の方法。
【請求項7】
前記実行時ログ情報内のパラメータの値を分析するステップが、
前記値の1つ又は複数を一般化するステップ
を含む、請求項3に記載の方法。
【請求項8】
前記実行時ログ情報を分析するステップが、
前記コンピュータプログラムエコシステムの実行中にアクセスされた1つ又は複数のデータ資源を識別するために前記実行時ログ情報内のパラメータの値を分析するステップ
を含む、請求項3に記載の方法。
【請求項9】
前記コンピュータプログラムエコシステムの実行中にアクセスされた各データ資源の名前を明らかにするために前記実行時ログ情報内の前記パラメータの前記値を分析するステップ
をさらに含む、請求項8に記載の方法。
【請求項10】
前記要素のサブセットをエコシステムユニットとして識別するステップが、
前記コンピュータプログラムエコシステムの実行中にアクセスされた前記データ資源を前記エコシステムユニットの一部として識別するステップ
を含む、請求項8に記載の方法。
【請求項11】
前記コンピュータプログラムエコシステムの前記要素のサブセットをエコシステムユニットとして識別するステップが、
前記コンピュータプログラムエコシステムの実行中に利用された前記1つ又は複数の要素を前記エコシステムユニット内に含めるステップ
を含む、請求項1に記載の方法。
【請求項12】
スケジュール分析を行うステップが
スケジューラからスケジュール情報を得るステップ
を含み、前記スケジューラは前記コンピュータプログラムエコシステムと別個である、請求項1に記載の方法。
【請求項13】
スケジュール分析を行うステップが、
前記コンピュータプログラムエコシステムの第2のコンピュータプログラムの実行後に実行される予定の前記コンピュータプログラムエコシステムの第1のコンピュータプログラムを識別するステップ
を含む、請求項1に記載の方法。
【請求項14】
前記要素のサブセットをエコシステムユニットとして識別するステップが、
前記第1のコンピュータプログラム及び前記第2のコンピュータプログラムを前記エコシステムユニットの一部として識別するステップ
を含む、請求項13に記載の方法。
【請求項15】
データを処理するために前記コンピュータプログラムエコシステムを実行するステップ
をさらに含む、請求項1に記載の方法。
【請求項16】
前記コンピュータプログラムエコシステムを実行するステップが、
前記コンピュータプログラムエコシステムに関連する前記パラメータセットの1つ又は複数の中のパラメータの値に従って前記コンピュータプログラムエコシステムの前記コンピュータプログラムの1つ又は複数をインスタンス化するステップ
を含む、請求項15に記載の方法。
【請求項17】
前記コンピュータプログラムエコシステムを実行するステップが、
前記データを処理するために前記1つ又は複数のインスタンス化されたコンピュータプログラムを実行するステップ
を含む、請求項16に記載の方法。
【請求項18】
実行時分析を行うステップが、
前記コンピュータプログラムエコシステムの実行によって生成される実行時ログ情報を得るステップと、
前記コンピュータプログラムエコシステムの実行中に利用された前記コンピュータプログラムエコシステムの前記1つ又は複数の要素を識別するために前記実行時ログ情報を分析するステップと
を含み、
前記実行時ログ情報が、1つ又は複数の実行されるインスタンス化されたコンピュータプログラムを示す情報を含む、請求項17に記載の方法。
【請求項19】
前記コンピュータプログラムエコシステムを実行するステップが、
前記コンピュータプログラムエコシステムに関連する前記データ資源の1つ又は複数にアクセスするステップ
を含む、請求項15に記載の方法。
【請求項20】
実行時分析を行うステップが、
前記コンピュータプログラムエコシステムの実行によって生成される実行時ログ情報を得るステップと、
前記コンピュータプログラムエコシステムの実行中に利用された前記コンピュータプログラムエコシステムの前記1つ又は複数の要素を識別するために前記実行時ログ情報を分析するステップと
を含み、
前記実行時ログ情報が、1つ又は複数のアクセスされるデータ資源を示す情報を含む、請求項19に記載の方法。
【請求項21】
前記コンピュータプログラムエコシステムに関連する前記データ資源の1つ又は複数にアクセスするステップが、
ファイル、データベース、及びオブジェクトの1つ又は複数からデータを読み出すステップ
を含む、請求項19に記載の方法。
【請求項22】
前記コンピュータプログラムエコシステムに関連する前記データ資源の1つ又は複数にアクセスするステップが、
ファイル、データベース、及びオブジェクトの1つ又は複数にデータを書き込むステップ
を含む、請求項19に記載の方法。
【請求項23】
前記コンピュータプログラムエコシステムを実行するステップが、
実行時ログ情報を生成するステップ
を含む、請求項19に記載の方法。
【請求項24】
実行時ログ情報を生成するステップが、
前記実行時ログ情報をログファイルに書き込むステップ
を含む、請求項23に記載の方法。
【請求項25】
前記1つ又は複数のコンピュータプログラムがデータフローグラフを含む、請求項1に記載の方法。
【請求項26】
複数のコンピュータプログラムを含むコンピュータプログラムエコシステムを分析するためのコンピュータシステムであって、
メモリに接続された1つ又は複数のプロセッサを含み、前記1つ又は複数のプロセッサが、
前記コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいて前記コンピュータプログラムエコシステムの要素間の静的依存関係を識別することであって、前記コンピュータプログラムエコシステムの前記要素は前記コンピュータプログラムエコシステムの前記複数のコンピュータプログラム及び前記コンピュータプログラムに関連するデータ資源を含む、識別することを含む、前記コンピュータプログラムエコシステムの静的分析を行うことと、
データレコードを処理するために前記コンピュータプログラムエコシステムの実行中に利用された前記コンピュータプログラムエコシステムの前記要素の1つ又は複数を識別することを含む、前記コンピュータプログラムエコシステムの実行時分析を行うことと、
前記コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有する前記コンピュータプログラムエコシステムのコンピュータプログラムを識別することを含む、前記コンピュータプログラムエコシステムのスケジュール分析を行うことと、
前記静的分析、前記実行時分析、及び前記スケジュール分析の結果に基づき、前記コンピュータプログラムエコシステムの前記要素のサブセットをエコシステムユニットとして識別することと、
第1のコンピュータシステムから第2のコンピュータシステムに前記エコシステムユニットを移行するか、前記エコシステムユニットを試験するか、又はその両方を行うことと
を行うように構成される、コンピュータシステム。
【請求項27】
複数のコンピュータプログラムを含むコンピュータプログラムエコシステムをコンピュータシステムに分析させるための命令を記憶した、非一時的なコンピュータ可読媒体であって、前記命令が、前記コンピュータシステムに、
前記コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいて前記コンピュータプログラムエコシステムの要素間の静的依存関係を識別することであって、前記コンピュータプログラムエコシステムの前記要素は前記コンピュータプログラムエコシステムの前記複数のコンピュータプログラム及び前記コンピュータプログラムに関連するデータ資源を含む、識別することを含む、前記コンピュータプログラムエコシステムの静的分析を行うことと、
データレコードを処理するために前記コンピュータプログラムエコシステムの実行中に利用された前記コンピュータプログラムエコシステムの前記要素の1つ又は複数を識別することを含む、前記コンピュータプログラムエコシステムの実行時分析を行うことと、
前記コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有する前記コンピュータプログラムエコシステムのコンピュータプログラムを識別することを含む、前記コンピュータプログラムエコシステムのスケジュール分析を行うことと、
前記静的分析、前記実行時分析、及び前記スケジュール分析の結果に基づき、前記コンピュータプログラムエコシステムの前記要素のサブセットをエコシステムユニットとして識別することと、
第1のコンピュータシステムから第2のコンピュータシステムに前記エコシステムユニットを移行するか、前記エコシステムユニットを試験するか、又はその両方を行うことと
を行わせる、非一時的なコンピュータ可読媒体。
【請求項28】
複数のコンピュータプログラムを含むコンピュータプログラムエコシステムを分析するためのコンピュータシステムであって、
前記コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいて前記コンピュータプログラムエコシステムの要素間の静的依存関係を識別することであって、前記コンピュータプログラムエコシステムの前記要素は前記コンピュータプログラムエコシステムの前記複数のコンピュータプログラム及び前記コンピュータプログラムに関連するデータ資源を含む、識別することを含む、前記コンピュータプログラムエコシステムの静的分析を行うための手段と、
データレコードを処理するために前記コンピュータプログラムエコシステムの実行中に利用された前記コンピュータプログラムエコシステムの前記要素の1つ又は複数を識別することを含む、前記コンピュータプログラムエコシステムの実行時分析を行うための手段と、
前記コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有する前記コンピュータプログラムエコシステムのコンピュータプログラムを識別することを含む、前記コンピュータプログラムエコシステムのスケジュール分析を行うための手段と、
前記静的分析、前記実行時分析、及び前記スケジュール分析の結果に基づき、前記コンピュータプログラムエコシステムの前記要素のサブセットをエコシステムユニットとして識別するための手段と、
第1のコンピュータシステムから第2のコンピュータシステムに前記エコシステムユニットを移行するか、前記エコシステムユニットを試験するか、又はその両方を行うための手段と
を含むコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本願は、2019年5月22日に出願された米国特許出願第62/851,295号明細書の優先権を米国特許法第119条(e)の下で主張する、2020年1月17日に出願された米国特許出願第16/746,392号明細書の優先権を主張し、その両方の全内容を参照により本明細書に援用する。
【背景技術】
【0002】
データ処理システムは、入力データを処理するために実行可能な、複数のコンピュータプログラムを含み得る。データ処理システム内で、或るコンピュータプログラムから別のコンピュータプログラムにデータを渡してから、一組の出力データを生成することができる。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許出願公開第2016/0019057号明細書
【文献】米国特許出願公開第2007/0011668号明細書
【文献】米国特許第5966072号明細書
【発明の概要】
【課題を解決するための手段】
【0004】
本発明者らは、コンピュータプログラム及び関連するデータ資源(本明細書ではコンピュータプログラムエコシステムと呼ぶ)を分析してコンピュータプログラム及びデータ資源のサブセットをエコシステムユニットとして識別すること、及び分析によって識別されるエコシステムユニットを使用して1つ又は複数のシステムタスクを実行するための手法を本明細書に記載する。エコシステムユニット内のコンピュータプログラム及びデータ資源は、互いに対するその静的依存関係及び/又は実行時依存関係に基づいて識別することができる。コンピュータプログラムエコシステムが実行されると、コンピュータプログラムの特定のものが実行され、コンピュータプログラムの実行されているものによって特定のデータ資源がアクセスされる。どのコンピュータプログラムが実行されていたのか及びどのデータ資源がアクセスされたのかを示す情報と静的依存関係を比較することによってエコシステムユニットを識別することができる。或る計算システムから別の計算システムへの移行又はコンピュータプログラムエコシステムの試験等のシステムタスクを実行するための単一エンティティとして、エコシステムユニットを形成するコンピュータプログラム及びデータ資源を扱うことはシステムタスクを促進することができる。システムタスクのためにエコシステムユニットをまとめて扱うことにより、コンピュータプログラムエコシステムの全ての関連要素をシステムタスクの実行に含めることを可能にしながら、例えばそれにより更に少ない処理能力を消費するシステムタスクのより効率的な実行を可能にしながら、システムの計算データ資源(例えばメモリ、処理能力、処理時間)を節約することができる。
【0005】
一態様では、複数のコンピュータプログラムを含むコンピュータプログラムエコシステムを分析するためのコンピュータによって実装される方法は、コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいてコンピュータプログラムエコシステムの要素間の静的依存関係を識別するステップであって、コンピュータプログラムエコシステムの要素はコンピュータプログラムエコシステムの複数のコンピュータプログラム及びコンピュータプログラムに関連するデータ資源を含む、識別するステップを含む、コンピュータプログラムエコシステムの静的分析を行うステップを含む。この方法は、データレコードを処理するためにコンピュータプログラムエコシステムの実行中に利用されたコンピュータプログラムエコシステムの要素の1つ又は複数を識別するステップを含む、コンピュータプログラムエコシステムの実行時分析を行うステップを含む。この方法は、コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有するコンピュータプログラムエコシステムのコンピュータプログラムを識別するステップを含む、コンピュータプログラムエコシステムのスケジュール分析を行うステップを含む。この方法は、静的分析、実行時分析、及びスケジュール分析の結果に基づき、コンピュータプログラムエコシステムの要素のサブセットをエコシステムユニットとして識別するステップを含む。この方法は、第1のコンピュータシステムから第2のコンピュータシステムにエコシステムユニットを移行するか、エコシステムユニットを試験するか、又はその両方を行うステップを含む。
【0006】
実施形態は以下の特徴の1つ又は複数の任意の組み合わせを含むことができる。
【0007】
実行時分析を行うステップは、コンピュータプログラムエコシステムの実行によって生成される実行時ログ情報を得るステップと、コンピュータプログラムエコシステムの実行中に利用されたコンピュータプログラムエコシステムの1つ又は複数の要素を識別するために実行時ログ情報を分析するステップとを含む。実行時ログ情報を分析するステップは、コンピュータプログラムエコシステムの実行中に実行された1つ又は複数のコンピュータプログラムを識別するために実行時ログ情報内のパラメータの値を分析するステップを含む。要素のサブセットをエコシステムユニットとして識別するステップは、コンピュータプログラムエコシステムの実行中に実行されたコンピュータプログラムをエコシステムユニットの一部として識別するステップを含む。コンピュータプログラムエコシステムの実行中に実行されたコンピュータプログラムエコシステムの1つ又は複数のコンピュータプログラムを識別するステップは、実行されたコンピュータプログラム間の実行時依存関係を識別するステップを含む。実行されたコンピュータプログラム間の実行時依存関係を識別するステップは、実行時ログ情報内のパラメータの値に基づいて実行時依存関係を識別するステップを含む。実行時ログ情報内のパラメータの値を分析するステップは、値の1つ又は複数を一般化するステップを含む。実行時ログ情報を分析するステップは、コンピュータプログラムエコシステムの実行中にアクセスされた1つ又は複数のデータ資源を識別するために実行時ログ情報内のパラメータの値を分析するステップを含む。この方法は、コンピュータプログラムエコシステムの実行中にアクセスされた各データ資源の名前を明らかにするために実行時ログ情報内のパラメータの値を分析するステップを含む。要素のサブセットをエコシステムユニットとして識別するステップは、コンピュータプログラムエコシステムの実行中にアクセスされたデータ資源をエコシステムユニットの一部として識別するステップを含む。
【0008】
コンピュータプログラムエコシステムの要素のサブセットをエコシステムユニットとして識別するステップは、コンピュータプログラムエコシステムの実行中に利用された1つ又は複数の要素をエコシステムユニット内に含めるステップを含む。
【0009】
スケジュール分析を行うステップはスケジューラからスケジュール情報を得るステップを含み、スケジューラはコンピュータプログラムエコシステムと別個である。
【0010】
スケジュール分析を行うステップは、コンピュータプログラムエコシステムの第2のコンピュータプログラムの実行後に実行される予定のコンピュータプログラムエコシステムの第1のコンピュータプログラムを識別するステップを含む。要素のサブセットをエコシステムユニットとして識別するステップは、第1のコンピュータプログラム及び第2のコンピュータプログラムをエコシステムユニットの一部として識別するステップを含む。
【0011】
この方法は、データを処理するためにコンピュータプログラムエコシステムを実行するステップを含む。コンピュータプログラムエコシステムを実行するステップは、コンピュータプログラムエコシステムに関連するパラメータセットの1つ又は複数の中のパラメータの値に従ってコンピュータプログラムエコシステムのコンピュータプログラムの1つ又は複数をインスタンス化するステップを含む。コンピュータプログラムエコシステムを実行するステップは、データを処理するために1つ又は複数のインスタンス化されたコンピュータプログラムを実行するステップを含む。実行時ログ情報は、1つ又は複数の実行されるインスタンス化されたコンピュータプログラムを示す情報を含む。コンピュータプログラムエコシステムを実行するステップは、コンピュータプログラムエコシステムに関連するデータ資源の1つ又は複数にアクセスするステップを含む。実行時ログ情報は、1つ又は複数のアクセスされるデータ資源を示す情報を含む。コンピュータプログラムエコシステムに関連するデータ資源にアクセスするステップは、ファイル、データベース、及びオブジェクトの1つ又は複数からデータを読み出すステップを含む。コンピュータプログラムエコシステムに関連するデータ資源にアクセスするステップは、ファイル、データベース、及びオブジェクトの1つ又は複数にデータを書き込むステップを含む。コンピュータプログラムエコシステムを実行するステップは、実行時ログ情報を生成するステップを含む。実行時ログ情報を生成するステップは、実行時ログ情報をログファイルに書き込むステップを含む。
【0012】
1つ又は複数のコンピュータプログラムはデータフローグラフを含む。
【0013】
一態様では、複数のコンピュータプログラムを含むコンピュータプログラムエコシステムを分析するためのコンピュータシステムは、メモリに接続される1つ又は複数のプロセッサを含む。1つ又は複数のプロセッサは、コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいてコンピュータプログラムエコシステムの要素間の静的依存関係を識別することであって、コンピュータプログラムエコシステムの要素はコンピュータプログラムエコシステムの複数のコンピュータプログラム及びコンピュータプログラムに関連するデータ資源を含む、識別することを含む、コンピュータプログラムエコシステムの静的分析を行うように構成される。1つ又は複数のプロセッサは、データレコードを処理するためにコンピュータプログラムエコシステムの実行中に利用されたコンピュータプログラムエコシステムの要素の1つ又は複数を識別することを含む、コンピュータプログラムエコシステムの実行時分析を行うように構成される。1つ又は複数のプロセッサは、コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有するコンピュータプログラムエコシステムのコンピュータプログラムを識別することを含む、コンピュータプログラムエコシステムのスケジュール分析を行うように構成される。1つ又は複数のプロセッサは、静的分析、実行時分析、及びスケジュール分析の結果に基づき、コンピュータプログラムエコシステムの要素のサブセットをエコシステムユニットとして識別するように構成される。1つ又は複数のプロセッサは、第1のコンピュータシステムから第2のコンピュータシステムにエコシステムユニットを移行するか、エコシステムユニットを試験するか、又はその両方を行うように構成される。
【0014】
一態様では、コンピュータ可読媒体は、複数のコンピュータプログラムを含むコンピュータプログラムエコシステムをコンピュータシステムに分析させるための命令を記憶する。この命令は、コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいてコンピュータプログラムエコシステムの要素間の静的依存関係を識別することであって、コンピュータプログラムエコシステムの要素はコンピュータプログラムエコシステムの複数のコンピュータプログラム及びコンピュータプログラムに関連するデータ資源を含む、識別することを含む、コンピュータプログラムエコシステムの静的分析をコンピュータシステムに行わせる。この命令は、データレコードを処理するためにコンピュータプログラムエコシステムの実行中に利用されたコンピュータプログラムエコシステムの要素の1つ又は複数を識別することを含む、コンピュータプログラムエコシステムの実行時分析をコンピュータシステムに行わせる。この命令は、コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有するコンピュータプログラムエコシステムのコンピュータプログラムを識別することを含む、コンピュータプログラムエコシステムのスケジュール分析をコンピュータシステムに行わせる。この命令は、静的分析、実行時分析、及びスケジュール分析の結果に基づき、コンピュータプログラムエコシステムの要素のサブセットをエコシステムユニットとして識別することをコンピュータシステムに行わせる。この命令は、第1のコンピュータシステムから第2のコンピュータシステムにエコシステムユニットを移行するか、エコシステムユニットを試験するか、又はその両方を行うことをコンピュータシステムに行わせる。
【0015】
一態様では、複数のコンピュータプログラムを含むコンピュータプログラムエコシステムを分析するためのコンピュータシステムは、コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの値に基づいてコンピュータプログラムエコシステムの要素間の静的依存関係を識別することであって、コンピュータプログラムエコシステムの要素はコンピュータプログラムエコシステムの複数のコンピュータプログラム及びコンピュータプログラムに関連するデータ資源を含む、識別することを含む、コンピュータプログラムエコシステムの静的分析を行うための手段を含む。コンピュータシステムは、データレコードを処理するためにコンピュータプログラムエコシステムの実行中に利用されたコンピュータプログラムエコシステムの要素の1つ又は複数を識別することを含む、コンピュータプログラムエコシステムの実行時分析を行うための手段を含む。コンピュータシステムは、コンピュータプログラムエコシステムの別のコンピュータプログラムへのスケジュール依存関係を有するコンピュータプログラムエコシステムのコンピュータプログラムを識別することを含む、コンピュータプログラムエコシステムのスケジュール分析を行うための手段を含む。コンピュータシステムは、静的分析、実行時分析、及びスケジュール分析の結果に基づき、コンピュータプログラムエコシステムの要素のサブセットをエコシステムユニットとして識別するための手段を含む。コンピュータシステムは、第1のコンピュータシステムから第2のコンピュータシステムにエコシステムユニットを移行するか、エコシステムユニットを試験するか、又はその両方を行うための手段を含む。
【0016】
1つ又は複数の実装形態の詳細を添付図面及び以下の説明に記載する。説明及び図面並びに特許請求の範囲から他の特徴及び利点が明らかになる。
【図面の簡単な説明】
【0017】
【
図1A】コンピュータプログラムエコシステムの図である。
【
図1B】コンピュータプログラムエコシステムの図である。
【
図1C】コンピュータプログラムエコシステムの図である。
【
図1D】コンピュータプログラムエコシステムの図である。
【
図4】コンピュータプログラムエコシステムを分析するためのシステムの図である。
【
図6】コンピュータプログラムエコシステムの実行時分析のための流れ図である。
【発明を実施するための形態】
【0018】
コンピュータプログラム及びデータ資源のサブセットをエコシステムユニットとして識別するために、複数のコンピュータプログラムを含み、複数のデータ資源が関連するコンピュータプログラムエコシステムを分析するための手法を本明細書に記載する。コンピュータプログラムエコシステムとは、コンピュータプログラムに関連するデータ資源と共に一組の複数のコンピュータプログラムである。データ資源は、コンピュータプログラムエコシステム内のコンピュータプログラムの1つ又は複数による処理中に参照データとして使用されるコンピュータプログラムエコシステム内のコンピュータプログラムの1つ又は複数によって処理するためのデータ(例えばデータレコード)のソース、又はコンピュータプログラムエコシステム内のコンピュータプログラムの1つ又は複数によるデータの処理後のデータ(例えばデータレコード)の宛先等のデータリポジトリである。エコシステムユニットは、コンピュータプログラムエコシステムの要素間の依存関係を示す、コンピュータプログラムエコシステムの静的分析、実行時分析、及びスケジュール分析の結果に基づいて識別される。コンピュータプログラム及び資源の移行又はコンピュータプログラムの試験等のシステムタスクは、全コンピュータプログラムエコシステムではなくエコシステムユニットを使用して実行することができ、それにより処理能力又はメモリ等のシステム資源が節約される。
【0019】
コンピュータプログラムエコシステムのコンピュータプログラム及びデータ資源は互いに静的依存関係を有し得る。2つの要素(例えばコンピュータプログラム及び/又はデータ資源)間の静的依存関係は、コンピュータプログラムエコシステムに関連する過去に記憶されたパラメータセット内の値によって定められる依存関係である。コンピュータプログラムエコシステムの要素間の静的依存関係は、記憶済みのパラメータセット内の値の静的分析によって識別することができる。
【0020】
コンピュータプログラムエコシステムのコンピュータプログラム及びデータ資源は、コンピュータプログラムエコシステムの実行時まで定められない互いに対する依存関係も有し得る。データレコードを処理するためにコンピュータプログラムエコシステムが実行される場合、例えば静的依存関係を定める過去に記憶されたパラメータセット内のパラメータ値に加えて又はその代わりに、実行コマンドがパラメータ値を含み得る。コンピュータプログラムエコシステムの実行中に生成される実行時ログがそれらのパラメータ値を示すことができ、かかるパラメータ値はどのコンピュータプログラムが実行されたのか、どのデータ資源がアクセスされたのかを示す。実行時分析、例えば実行時ログの分析は、静的分析から明らかにならなかったコンピュータプログラムエコシステムの要素間の依存関係を識別することができる。
【0021】
コンピュータプログラムエコシステムのコンピュータプログラムは互いに対するスケジュール依存関係も有し得る。データレコードを処理するためにコンピュータプログラムエコシステムを実行することは、特定の要素(例えばコンピュータプログラム)を何時実行すべきかを規定するスケジューラによって制御され得る。一部の事例では、第2のコンピュータプログラム又はコンピュータプログラム群を実行した後で第1のコンピュータプログラム又はコンピュータプログラム群を実行すべきだとスケジューラが規定することができる。スケジュール分析、例えばスケジューラによって規定されるスケジューリング情報の分析は、コンピュータプログラム間のスケジュール依存関係を、たとえそれらのコンピュータプログラムが互いに静的依存関係又は実行時依存関係を有さなくても識別することができる。
【0022】
静的依存関係、実行時分析の結果、及びスケジュール依存関係を比較することにより、コンピュータプログラムエコシステムの要素間の依存関係の全体像を編み出すことができる。別の要素に依存する要素又は別の要素が依存する要素は、静的分析、実行時分析、及びスケジュール分析の組み合わせによって識別される。これらの識別された要素がまとめてエコシステムユニットを形成する。エコシステムユニットを形成するコンピュータプログラム及びデータ資源を単一エンティティとして扱うことは、或る計算システムから別の計算システムへの移行又はコンピュータプログラムエコシステムの試験等のシステムタスクを促進することができる。
【0023】
図1Aを参照し、コンピュータプログラムエコシステム100は、複数のコンピュータプログラム102a~102h(まとめてコンピュータプログラム102と呼ぶ)を含む。コンピュータプログラム102の少なくとも一部は、コンピュータプログラム102の1つ又は複数の他のものに静的に依存する。例えばコンピュータプログラム102dは、コンピュータプログラム102dの上流のコンピュータプログラム102aによって処理されそこから出力されるデータ(例えばデータレコード)を入力として受け付ける。静的依存関係はコンピュータプログラムの実行時の前の静的分析内で、例えばコンピュータプログラムに関連する記憶済みのパラメータ値又はソースコードの分析に基づいて決定することができる依存関係である。
【0024】
図1Aの例では、コンピュータプログラムエコシステム100のコンピュータプログラム102がデータフローグラフである。データフローグラフは、実行可能なデータ処理コンポーネント並びにデータソース及びデータシンク等のデータ資源であるノードを含み得る、グラフ形式の実行可能コンピュータプログラムである。データ資源は、例えばグラフによる処理のためにデータ(例えばデータレコード)を提供する、又はグラフのデータ処理コンポーネントによって処理されるデータを受け付けることができるファイル、データベーステーブル、又は他の種類のデータソース若しくはデータシンクとすることができる。データ処理コンポーネント及びデータ資源は、まとめてグラフのノードと呼ぶ場合がある。ノード間のデータ又は制御信号等の情報のフローのために、グラフの2つのノードをつなぐ辺が設けられる。かかるデータフローグラフ(グラフと呼ぶ場合もある)は、1つ又は複数のグラフの実行を制御するデータ処理グラフ又はプランとすることができる。情報の処理を行うためにデータフローグラフを実行することができる。一部の例では、データフローグラフの1つ又は複数のデータ処理コンポーネントがサブグラフであり得る。
【0025】
1つ又は複数のデータ資源104a~104j(まとめてデータ資源104と呼ぶ)がコンピュータプログラムエコシステム100に関連付けられ得る。データ資源はデータリポジトリ、例えばコンピュータプログラムエコシステムによる処理中に(例えばコンピュータプログラムエコシステムのコンピュータプログラムによる処理中に)処理され又は使用されるデータのソース、又はコンピュータプログラムエコシステムによって出力されるデータの宛先である。データ資源の例はファイル、データベース(例えばデータベースのテーブル)、待ち行列、オブジェクト、及び他の種類のデータ資源を含む。資源にアクセスするというのは、データがデータ資源との間で読み書きされることを意味する。データ資源104の少なくとも一部がコンピュータプログラムエコシステム100のコンピュータプログラム102の1つ又は複数に静的に依存し、又はコンピュータプログラム102の少なくとも一部がデータ資源104の1つ又は複数に静的に依存し、又はその両方である。例えば、記憶済みのパラメータ値はコンピュータプログラム102a及びデータ資源104a、104f間の静的依存関係を示すことができ、データ資源104aからのデータは関係するコンピュータプログラム102aへの入力として与えられ、コンピュータプログラム102aはひいてはデータ資源104fにデータレコードを出力する。
【0026】
コンピュータプログラムエコシステムの要素(例えばコンピュータプログラムエコシステム100内のコンピュータプログラム102及びコンピュータプログラムエコシステム100に関連するデータ資源104)間の静的依存関係は、コンピュータプログラムエコシステム100に関連する1つ又は複数のパラメータセットによって指定される。パラメータセットは、特定のコンピュータプログラム102に、特定の資源104に、又はより広くはコンピュータプログラムエコシステム100に関連することができる。パラメータセットは、それぞれのコンピュータプログラム102、資源104、又はエコシステム100に関連するファイルによって定めることができ、そのファイルはパラメータセットのパラメータのための値(又は値を決定するために使用可能な情報)を含む。以下で論じるように、パラメータセット内のパラメータの解決されたパラメータ値に基づいてコンピュータプログラムエコシステムの要素間の静的依存関係を識別するために、コンピュータプログラムエコシステムの静的分析を行うことができる。
【0027】
図1Bを参照し、入力データレコード等の入力データを処理するためにコンピュータプログラムエコシステム100を実行することができる。一組の所与の入力データを処理する際、コンピュータプログラムエコシステム100の要素(例えばコンピュータプログラム102及びデータ資源104)の全てが必ずしも利用されるわけではない。例えばコンピュータプログラムエコシステム100の実行中、コンピュータプログラムエコシステム100のコンピュータプログラム102の全て未満を実行することができ、及び/又はコンピュータプログラムエコシステム100に関連するデータ資源104の全て未満にアクセスすることができる。
【0028】
図1Bの例では、入力データ110を処理するために、コンピュータプログラムエコシステム100の実行中にコンピュータプログラム102a、102b、及び102d~102fが実行され、データ資源104a、104b、及び104fがアクセスされる。
図1Bの灰色の陰影で示すように、他の要素(例えばコンピュータプログラム102c、102g、及び102h、並びにデータ資源104c、104d、104e、及び104g~104j)は利用されない。
【0029】
実行コマンドに応答し、例えば過去に記憶されたパラメータセットに加えて又はその代わりに実行コマンドに供給される引数としてパラメータ値を受け付けることができるコンピュータプログラムエコシステムが実行される。コンピュータプログラムエコシステムの静的分析は記憶済みのパラメータセットだけに基づいて静的依存関係を決定し、そのため実行コマンドに供給される引数に由来するパラメータ値に関連するパラメータセットは静的分析内で決定される静的依存関係内で表されない。従って静的分析だけに基づいてエコシステムユニットを識別することは、エコシステムユニットを構成する要素の不完全な又は誤った識別をもたらし得る。
【0030】
実行時分析はコンピュータプログラムエコシステム100の実行中に利用されるコンピュータプログラムエコシステム100の要素を識別するために行うことができ、それにより静的分析によって与えられるコンピュータプログラムエコシステムの特徴付けを補足する。コンピュータプログラムエコシステム100の実行中、コンピュータプログラムエコシステム100に関連するパラメータセットの1つ又は複数の中のパラメータの値を示す実行時ログ情報が生成される。実行時分析は、コンピュータプログラムエコシステムの実行中に利用された要素を識別するために実行時ログ情報内のパラメータの値を分析することを含む。例えばコンピュータプログラムエコシステムの実行中、ファイル又はテーブルに書き込まれるログ情報は実行され又はアクセスされたコンピュータプログラムエコシステムの要素の識別情報を含み得る。実行時分析は、実行中に実行され又はアクセスされた要素のリストを得るためにログ情報を解釈することができる。
【0031】
一部の例では、コンピュータプログラムエコシステム100の実行がスケジューラによって制御され得る。一部の例では、実行が特定の時点においてスケジュールされ得る(例えばクレジットカードレコード処理エコシステムは11:00pmの夜間に実行するようにスケジュールすることができ、通話記録処理エコシステムは土曜日の2:00amに実行するようにスケジュールすることができる)。一部の例では、コンピュータプログラムエコシステムの1つ又は複数のコンピュータプログラムがコンピュータプログラムエコシステムの1つ又は複数の他のコンピュータプログラムの前又は後に実行される予定であるように実行をスケジュールすることができ、これをスケジュール依存関係と呼ぶ。一部の例では、エコシステムユニットを識別する際にコンピュータプログラム102のスケジューリングの依存関係を考慮に入れることができる。例えばスケジュール依存関係を有するコンピュータプログラムは、たとえそれらのコンピュータプログラムがコンピュータプログラムエコシステム100の静的分析又は実行時分析内で識別されなくてもエコシステムユニットに含めることができる。
【0032】
図1Cを参照し、スケジュール分析は互いにスケジュール依存関係を有するコンピュータプログラムエコシステム100内のコンピュータプログラムを識別することができる。
図1Cの例では、コンピュータプログラム102hがコンピュータプログラム102fへのスケジュール依存関係を有することをスケジュール分析が明らかにし、それはコンピュータプログラム102fがその実行を終えた後でコンピュータプログラム102hが実行される予定であることを意味する。
【0033】
一部の例では、スケジュール分析は静的分析又は実行時分析によって反映されないコンピュータプログラム102間の依存関係を捕捉することができる。
図1Cの例では、コンピュータプログラム102hがコンピュータプログラム102fに対してスケジュール依存関係を有するが静的依存関係は有さない。加えて
図1Bに示すように、コンピュータプログラム102hとコンピュータプログラム102fとの間で実行時依存関係は識別されなかった。その理由は、例えばコンピュータプログラム102fの後で実行されるものとしてのコンピュータプログラム102hのスケジューリングが特定の曜日にだけ関係し、そのため実行時分析によって捕捉されなかったからであり得る。
【0034】
コンピュータプログラムエコシステムの要素のサブセットをエコシステムユニットとして識別するために、コンピュータプログラムエコシステムの静的分析、実行時分析、及びスケジュール分析の結果を使用することができる。例えばコンピュータプログラムエコシステムの実行中に利用される要素は、利用される要素に静的に依存する他の任意の要素、利用される要素が静的に依存する他の任意の要素、及び利用される要素とスケジュール依存関係を共有する任意の要素に加えてエコシステムユニットを形成することができる。
図1Dを参照し、コンピュータプログラムエコシステム100内で、コンピュータプログラム102a、b、d~f、h、及び資源104a、b、fがエコシステムユニットを形成する。これらのコンピュータプログラム及び資源は静的分析及び実行時分析(
図1A及び
図1B)並びにスケジュール分析(
図1C)によって識別された。(灰色で陰影付けしてある)残りのコンピュータプログラム102c、g、及び資源104c、e、h、g、jはエコシステムユニットの一部ではない。
【0035】
システム開発者若しくはシステムエンジニア等のユーザ、又はコンピュータによって実装される自動操作はコンピュータプログラムエコシステムを使用し、コンピュータプログラムエコシステムの試験、或る計算システムから別の計算システムへのコンピュータプログラムエコシステムの移行、又はコンピュータプログラムエコシステムからの未使用コードのアーカイブ若しくは削除等のシステムタスクを実行できる場合がある。コンピュータプログラムエコシステムの全ての適切な要素が所与のシステムタスク内でアドレス指定されることを確実にしながらシステム資源(例えば処理容量又はメモリ容量)を節約するために、コンピュータプログラムエコシステムを全体として使用するのではなくエコシステムユニットを使用してシステムタスクを実行することができる。
【0036】
図2は、第1の計算システム202から第2のクラウドベースの計算システム204へのコンピュータプログラムエコシステム100の移行の一例を示す。コンピュータプログラムエコシステム100を移行するために、コンピュータプログラムエコシステムのエコシステムユニット150の一部として識別されたコンピュータプログラムエコシステムの要素だけが第1の計算システム202から第2の計算システム204に移行される。第1の計算システム202から第2の計算システム204に全コンピュータプログラムエコシステム100を移行することは、例えば時間、帯域幅、メモリ、又は他の要因に関してコストのかかるプロセスであり得る。コンピュータプログラムエコシステム100の要素間の関係又はコンピュータプログラムエコシステム100の実行中の各要素の状態を理解することなしにコンピュータプログラムエコシステム100の一部を移行することは、所与のタスクに関連する全ての要素を移行できない結果を招き得る。エコシステムユニットの一部を形成しない要素を移行せずにエコシステムユニット150を全体として移行することにより、コンピュータプログラムエコシステムの全ての関連要素を移行できるようにしながらシステム資源を節約することができる。
【0037】
図3は、コンピュータプログラムエコシステム100の試験の一例を示す。コンピュータプログラムエコシステム100は、そのそれぞれが少なくとも1つの入力値に作用し、少なくとも1つの出力値を生成する1つ又は複数のデータ処理規則(例えばコンピュータプログラムによって指定され適用される)を実装することができる。一組のデータの処理中に、例えば所与のデータレコードの処理中に所与のデータ処理規則が実行されるかどうかは、データレコードの1つ又は複数のフィールドのそれぞれの中の値等、一組のデータ内の値に直接又は間接的に依存し得る。
【0038】
コンピュータプログラムエコシステム100を試験するために、例えばコンピュータプログラムエコシステム100をホストするサーバ312からデータソース(例えばファイル又はテーブル)等の資源を下位環境310上に複製し、コンピュータプログラムエコシステム100のコンピュータプログラムのインスタンス化を使用して試験を下位環境で続行する。コンピュータプログラムエコシステム100を試験するためのより効率的な準備を行うために、コンピュータプログラムエコシステム100のエコシステムユニット150の一部である資源だけを下位環境上に複製する。その後、試験に関連する資源だけを複製した状態で試験プロセスを続行することができる。
【0039】
試験プロセスでは、試験データ304及び実際ではない生産データが与えられ、コンピュータプログラムエコシステム100によって処理され、試験結果306がコンピュータプログラムエコシステム100から出力される。試験データ304は試験のために特に準備され又は選択されるデータであり、コンピュータプログラムエコシステム100内のデータ処理規則の一部又は全て(例えばコンピュータプログラムエコシステム100の複数のコンピュータプログラム102のデータ処理規則の一部又は全て)の実行を引き起こすのに十分なデータを含み得る。試験をより効率的にし、より資源集約的にしないために、コンピュータプログラムエコシステム100内のエコシステムユニット150を試験前に識別することができ、エコシステムユニット150内の(例えばコンピュータプログラムの)データ処理規則の一部又は全てを実行させるのに十分な試験データ304。エコシステムユニット150は全コンピュータプログラムエコシステム100よりも集約的でない可能性があるので、エコシステムユニット150内のデータ処理規則の実行を引き起こすのに十分な試験データの量及び/又は多様性を少なくすることができ、その結果より少ない処理能力を消費するより効率的な試験が可能になる。
【0040】
図4を参照し、コンピュータプログラムエコシステム400の要素のサブセットをエコシステムユニット430として識別するために、分析システム420の一例がコンピュータプログラムエコシステム400に対する静的分析及び実行時分析並びにスケジュール分析を行う。コンピュータプログラムエコシステム400は計算システム410上にホストされ、複数のコンピュータプログラム402、例えばデータフローグラフを含み、1つ又は複数のデータ資源408がコンピュータプログラムエコシステム400に関連する。
【0041】
分析システム420は、複数のコンピュータプログラム402及び1つ又は複数のデータ資源408間等のコンピュータプログラムエコシステム400の要素間の静的依存関係を識別するための静的分析エンジン422を含む。静的分析エンジンはコンピュータプログラムエコシステム400のコンピュータプログラム402をインスタンス化し、コンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット404内のパラメータを解決することによって動作する。次いで静的分析エンジン422は、コンピュータプログラム402及びデータ資源408間の静的依存関係を識別するために解決されたパラメータ値を分析する。静的分析プロセスの出力は、コンピュータプログラムエコシステム要素の静的依存関係の識別である。一部の例では、静的分析プロセスがグラフィカルなデータ系統図を出力としてもたらすことができる。
【0042】
一組の入力データ、例えばデータレコードを処理するためにコンピュータプログラムエコシステム400が実行されると、実行時ログファイル等の1つ又は複数の実行時ログ406が生成される。実行時ログ406は、例えば実行コマンドと共にコンピュータプログラムエコシステムへの入力として与えられる、コンピュータプログラムエコシステム400の実行時に適用可能なパラメータセット及び関連する解決されたパラメータ値を含む。分析システム420は、実行時ログ406内のパラメータセット及び関連する解決されたパラメータ値の分析により、実行中に利用されたコンピュータプログラムエコシステム400の要素(例えばコンピュータプログラム402及びデータ資源408)を識別するための実行時分析エンジン424を含む。
【0043】
エコシステムユニット430を形成するコンピュータプログラムエコシステム400の要素のサブセットを識別するために、静的分析エンジン422及び実行時分析エンジン424による分析の結果が比較エンジン426に与えられる。比較エンジン426は、エコシステムユニット420を構成するコンピュータプログラムエコシステム400の全ての要素、例えばコンピュータプログラムエコシステムの別の要素との間の静的依存関係を有する全ての要素、実行中に利用される全ての要素、及び実行中に利用される要素のそれぞれとの間で静的依存関係を有する全ての要素の識別を得るために、実行時分析エンジン424によって識別されるパラメータセット及び関連する解決されたパラメータ値を組み込むことにより静的分析によってもたらされる静的依存関係の識別を補足する。
【0044】
スケジュール分析エンジン428は、例えばスケジューラ440に関連するパラメータセット404又はスケジュール情報408の分析により、コンピュータプログラムエコシステム400のコンピュータプログラム402間のスケジュール依存関係を分析する。(例えばエコシステムユニットに関して既に識別されている要素との)スケジュール依存関係を有するものとしてスケジュール分析エンジン428によって識別されるコンピュータプログラムエコシステム400の要素もエコシステムユニット430内に含まれる。
【0045】
エコシステムユニット430の識別は、コンピュータプログラムの試験又は或るコンピュータシステムから別のコンピュータシステムへの移行等のシステムタスクの実行を促進することができる。
【0046】
図5A及び
図5Bは、コンピュータプログラムエコシステムの要素間の静的依存関係を分析するための手法の例を示す。
図5A及び
図5Bの手法の例は、コンピュータプログラムエコシステムのデータフローグラフの一例のためのパラメータの解決及びかかるデータフローグラフのインスタンス化を含む。静的分析の更なる説明は、参照によりその全内容を本明細書に援用する米国特許出願公開第2016/0019057号明細書の中で見つけることができる。
【0047】
図5Aを参照し、コンピュータプログラムエコシステムの一部を形成するデータフローグラフ500の一例は、gather.mpと名付ける第1のサブグラフ502及びprocess.mpと名付ける第2のサブグラフ504を含む。
【0048】
第1のサブグラフ502は、第1の論理データセットDS1 506及び第2の論理データセットDS2 508を入力として受け付け、第1の論理データセット506及び第2の論理データセット508からのデータを処理し、処理の結果を第3の論理データセットDS3 510内に書き込む。第2のサブグラフ504は、(図らずも第3の論理データセット510と同じ物理ファイルを指す)第4の論理データセットDS4 512を入力として受け付け、第4の論理データセット512からのデータを処理し、処理の結果をテーブル514に書き込む。
【0049】
4つの論理データセット506、508、510、512のそれぞれは、実行時に物理ファイルへのパスに解決するパラメータ化されたパスに関連する。具体的には、第1の論理データセット506はパラメータ化されたパス/${FEED}/inv_${DATE}.datを使用して識別され、第2の論理データセット508はパラメータ化されたパス/${FEED}/cust_${DATE}.datを使用して識別され、第3の論理データセット510はパラメータ化されたパス/trans_${DATE}.datを使用して識別され、第4の論理データセット512はパラメータ化されたパス/trans_${DATE}.datを使用して識別される。
【0050】
第1のサブグラフ502は2つのパラメータP1=FEED及びP2=DATEを引数として受け付け、以下でより詳細に説明するように、パラメータ化されたパス内のFEED及びDATEプレースホルダを受信したFEED及びDATEパラメータの値で置換することによって第1の論理データセット506、第2の論理データセット508、及び第3の論理データセット510のそれぞれの物理的な位置へのパスを解決するために、それらのパラメータを使用する。加えて、第1のサブグラフ502はDATEパラメータのための「静的分析」値を含む。以下でより詳細に説明するように、DATEパラメータのための静的分析値はデータフローグラフ500の静的分析中に(即ちデータフローグラフ500のデータ系統が決定されるとき)パラメータ値として使用されるプレースホルダ値である。
【0051】
同様に、第2のサブグラフ504は単一のパラメータP1=DATEを受け付け、それを使用して第4の論理データセット512のためのパラメータ化されたパス内のDATEプレースホルダを受信したDATEパラメータの値で置換することによって第4の論理データセット512の物理的な位置へのパスを解決する。加えて、第2のサブグラフ504はDATEパラメータのための「静的分析」値を含む。以下でより詳細に説明するように、DATEパラメータのための静的分析値はデータフローグラフ517の静的分析中に(即ちデータフローグラフ517のデータ系統が決定されるとき)パラメータ値として使用されるプレースホルダ値である。
【0052】
データフローグラフ500及びそのサブグラフの動作はグラフが受け付けるパラメータによって決まるので、データフローグラフ及びそのサブグラフは「汎用」データフローグラフ又は「汎用」コンピュータプログラムと呼ばれる場合がある。
【0053】
パラメータは「設計時」パラメータ又は「実行時」パラメータとして指定することができる。上記のようにパスの解決に使用されることに加え、設計時パラメータはその関連するデータフローグラフの論理演算に影響を及ぼす。対照的に、実行時パラメータはジョブごとにグラフに供給され、グラフの論理演算に影響を及ぼさない。一部の例では、データフローグラフの論理演算はグラフの機能及びグラフが利用する論理データセットの両方に言及する。一部の例では、パラメータは設計時部分及び実行時部分の両方を含む混合パラメータとすることができる。
【0054】
図5Aでは、FEEDパラメータはgather.mpサブグラフの論理演算に影響を及ぼす設計時パラメータである。例えばFEEDパラメータの或る値に関して、第1のサブグラフ502内のソートコンポーネント516は自らが受け付けるデータを昇順にソートし得る一方、FEEDパラメータの別の異なる値はソートコンポーネント516にデータを降順にソートさせ得る。一部の例では、設計時パラメータを含むデータフローグラフを「汎用」グラフと呼び、それはその論理演算が設計時パラメータの供給値に基づいて変化するからである。
【0055】
DATEパラメータはサブグラフ502の論理演算に影響を及ぼさない実行時パラメータであり、ジョブごとに供給される。
【0056】
一部の例では、データフローグラフ用の共通使用されるパラメータの組が「パラメータセット」(「pset」と呼ぶ場合もある)として記憶され、それらはディスクに保存し、容易に再利用することができる。例えば
図5Aでは、第1のサブグラフ502が自らに関連する3つのpset、つまりPSET_mexico518、PSET_canada520、及びPSET_usa522を有する。PSET_mexico518は共通使用されるFEEDパラメータ値「mexico」と、共通使用される本日の日付を返す関数であるDATEパラメータ値「today()」とを含む。PSET_canada520は共通使用されるFEEDパラメータ値「canada」と、共通使用されるDATEパラメータ値「today()」とを含む。PSET_usa522は共通使用されるFEEDパラメータ値「usa」と、共通使用されるDATEパラメータ値「today()」とを含む。同様に、第2のサブグラフ504には単一のpsetであるPSET523が関連付けられている。PSET523は、共通使用される本日の日付を返す関数であるDATEパラメータ値「today()」を含む。
【0057】
一部の例では、(例えばデータフローグラフ500が属するコンピュータプログラムエコシステムを実行する一環として)データフローグラフ500を実行する前に、データフローグラフ500(及びその関連するサブグラフ502、504)に関連する1つ又は複数のpsetが識別され、1つ又は複数のpset内の幾つかの固有の設計時パラメータが決定される。所与のデータフローグラフの固有の設計時パラメータごとに、データフローグラフの別個の実行可能インスタンスがインスタンス化される。
【0058】
例えば
図5Bを参照し、
図5Bのデータフローグラフ500では第1のサブグラフ502、gather.mpの3つのインスタンスがインスタンス化され(PSET_mexico->gather.mp502a、PSET_canada->gather.mp502b、PSET_usa->gather.mp502c)、各インスタンスは
図5Aのpset内の3つの固有のフィードパラメータの異なるもの、つまりmexico、canada、及びusaに従って構成される。第2のサブグラフ504は如何なる設計時パラメータも含まない単一のpset523だけに関連するので、第2のサブグラフ504の単一のインスタンス(process.mp504a)だけが実行時にインスタンス化される。
【0059】
サブグラフ502、504の適切なインスタンスがインスタンス化されると、データセットのためのパラメータ化されたパス内のパラメータ値プレースホルダがpsetからの実際のパラメータ値で置換され、データセットの物理的な位置へのパスを解決する。例えば第1のサブグラフ502のPSET_mexico->gather.mpインスタンス502aでは、FEEDパラメータ値が「mexico」でありDATEパラメータ値が「031014」なので、第1のデータセット506のためのパスが/mexico/inv_031014に解決される。
【0060】
そのサブグラフ502、504を含むデータフローグラフ500がインスタンス化され、データフローグラフのデータセットへの物理的パスが解決されると、データフローグラフ500。実行中、第1のサブグラフ502の3つのインスタンス502a、502b、502cがそのそれぞれの入力データセットからデータを読み出し、データを処理し、処理済みデータを/trans_031014.dat物理ファイル内に記憶する。第2のサブグラフ502のインスタンス504aのための入力データセット(例えばDS4 512)は第1のサブグラフの出力データセットと同じ物理ファイルに解決するので、/trans_031014.dat物理ファイルがprocess.mpのインスタンスによって読み出され、その後処理され、テーブル514内に記憶される。
【0061】
図6は、コンピュータプログラムエコシステムの実行時分析への手法の一例を示す。上記で述べたように、コンピュータプログラムエコシステムは引数としてパラメータ値を受け付ける実行コマンドに応答して実行され得る。かかるパラメータ値に関連するpsetはコンピュータプログラムエコシステムの静的分析に考慮されないので、コンピュータプログラムエコシステムの静的分析は不完全又は誤っている場合があり得る。実行時分析の結果は、コンピュータプログラムエコシステムのインスタンスの1つ又は複数の実行に関連する実行時ログ内で識別されるパラメータの組を考慮することによって静的分析の結果を強化するために使用することができる。実行時分析の更なる説明は、参照によりその全内容を本明細書に援用する米国特許出願公開第2016/0019057号明細書の中で見つけることができる。
【0062】
実行時分析において、データフローグラフ(例えば
図5Aのサブグラフ502)等のコンピュータプログラムの一例は2つのパラメータP1及びP2を含み、そのそれぞれは設計時パラメータ又は実行時パラメータとして指定され得る。実行時分析は、各パラメータの分類を設計時パラメータ又は実行時パラメータとして指定するパラメータ分類626を利用する。一部の例では、実行時分析がパラメータ分類ステップ624を含み得る。一部の例では、パラメータが予め分類される。
【0063】
実行時分析は実行時ログデータストア628を使用し、実行時ログデータストア628は、コンピュータプログラムエコシステムの1つ又は複数のインスタンスの実行に関連する情報をそれぞれ含む1つ又は複数の実行時ログ629を含む。実行時ログ629は、コンピュータプログラムエコシステムの1つ又は複数のコンピュータプログラムを実行のためにインスタンス化するために使用された実行コマンドのレコードを含み得る。所与のログエントリのための実行コマンドは、コンピュータプログラムの識別情報及び実行コマンドへの引数として供給された1つ又は複数のパラメータ値を含む。一部の例では、コンピュータプログラムが如何なるパラメータセットにもアクセスすることなしにインスタンス化されるが、代わりに実行コマンドに供給される引数としてパラメータ値を受け付ける。
【0064】
パラメータ分類626及び実行時ログデータストア628は処理ループ630に与えられ、処理ループ630は実行時ログデータストア628内の実行時ログ629ごとに実行コマンドのための新たな論理psetを生成し、新たなpsetが既存の論理psetのリポジトリ648内に既に存在するかどうかを判定し、まだ存在しない場合は新たな論理psetをリポジトリ648に追加する。
【0065】
処理ループ630内で、実行時ログデータストア628からの実行時ログJn632をパラメータ分類626に従って論理pset構築ステップ634内で分析して、論理pset636を生成する。それを行う際、論理pset構築ステップ634は実行時ログ632内に含まれる実行コマンドを分析して、グラフ実行コマンドへの引数として含まれるパラメータ値を抽出する。次いで論理pset構築ステップ634は、抽出した各パラメータ値をパラメータ分類626内の対応するパラメータと突き合わせる。抽出したパラメータ値がパラメータ分類626内の設計時パラメータに対応すると論理pset構築ステップ634が判定する場合、論理pset構築ステップ634は抽出した設計時パラメータの値を論理pset636内に含める。抽出したパラメータ値がパラメータ分類626内の実行時パラメータに対応すると論理pset構築ステップ634が判定する場合、抽出したパラメータ値を論理pset636内に含めない。
【0066】
論理pset636の識別情報644を決定し(642)、既存の論理psetのリポジトリ648内の全てのpsetの識別情報と比較する(646)。識別情報644がリポジトリ648内の少なくとも1つの既存の論理psetの識別情報と一致する場合はアクションを起こさず、それはコンピュータプログラムの実行コマンドのインスタンス化のための論理psetがリポジトリ648内に既に存在するからである。一致がない場合、新規論理pset追加ステップ650により、論理pset636及びその識別情報644を新たな論理psetとして既存の論理pset648のリポジトリ648に追加する。
【0067】
図7を参照し、複数のコンピュータプログラムを含むコンピュータプログラムエコシステムを分析するための方法の一例では、コンピュータプログラムエコシステムの静的分析を行う(700)。静的分析の一環として、複数のコンピュータプログラム及びコンピュータプログラムエコシステムに関連するデータ資源間の静的依存関係を識別する(702)。例えば、静的依存関係はコンピュータプログラムエコシステムに関連する1つ又は複数のパラメータセット内のパラメータの解決された値に基づいて識別され得る。
【0068】
データレコードを処理するためにコンピュータプログラムエコシステムを実行する(704)。例えば、コンピュータプログラムエコシステムに関連するパラメータセットの1つ又は複数の中のパラメータの値に従ってコンピュータプログラムエコシステムのコンピュータプログラムの1つ又は複数がインスタンス化され、データを処理するためにインスタンス化されたコンピュータプログラムが実行される。一部の例では、コンピュータプログラムエコシステムを実行することは、コンピュータプログラムエコシステムに関連するデータ資源の1つ又は複数にアクセスすること、例えばファイル、データベース、及びオブジェクトの1つ又は複数からデータを読み出すこと、ファイル、データベース、及びオブジェクトの1つ又は複数にデータを書き込むこと、又はその両方を含み得る。
【0069】
コンピュータプログラムエコシステムの実行によって実行時ログ情報が生成される(706)。例えば、実行時ログ情報はログファイルに書き込まれる。実行時ログ情報は、コンピュータプログラムエコシステムに関連するパラメータセットの1つ又は複数の中のパラメータの値を含み得る。例えば実行時ログ情報は、コンピュータプログラムエコシステムの実行中に実行された1つ又は複数のインスタンス化されたコンピュータプログラムを示す情報、コンピュータプログラムエコシステムの実行中にアクセスされた1つ又は複数のデータ資源を示す情報を含み得る。
【0070】
コンピュータプログラムエコシステムの実行時分析を行う(708)。実行時分析の一環として実行時ログ情報が得られる。更に実行時分析の一環として、コンピュータプログラムエコシステムの実行中に実行されたコンピュータプログラム又はアクセスされたデータ資源等、コンピュータプログラムエコシステムの実行中に利用されたコンピュータプログラムエコシステムの要素の1つ又は複数を識別するために、実行時ログ情報内のパラメータの値を分析する(710)。例えば実行されるコンピュータプログラム間の実行時依存関係を、例えば実行時ログ情報内のパラメータの値に基づいて識別することができる。一部の例では、実行時ログ情報内のパラメータの値の分析が値の1つ又は複数を一般化することを含む。
【0071】
コンピュータプログラムエコシステムの別のコンピュータプログラムに対するスケジュール依存関係を有するコンピュータプログラムエコシステムのコンピュータプログラムを識別するために、コンピュータプログラムエコシステムのスケジュール分析を行う(712)。例えばスケジュール分析は、スケジューラからスケジューリング情報を得ることができ、別のコンピュータプログラムの実行が完了した後で実行される予定のコンピュータプログラムを識別することができる。
【0072】
コンピュータプログラムエコシステムの静的分析の結果、実行時分析の結果、及びスケジュール分析の結果に基づき、コンピュータプログラムエコシステムの要素のサブセットをエコシステムユニットとして識別する(714)。例えば実行された1つ又は複数のコンピュータプログラム及びアクセスされた1つ又は複数のデータ資源が、実行されたコンピュータプログラム又はアクセスされたデータ資源に対して静的依存関係を有する他のコンピュータプログラム又はデータ資源と共にエコシステムユニット内に含まれる。
【0073】
エコシステムユニットを使用してシステムタスクを実行する(716)。一部の例では、システムタスクは第1の計算プラットフォームから第2の計算プラットフォームにエコシステムユニットを移行することを含む。一部の例では、システムタスクはエコシステムユニットを試験することを含む。
【0074】
図8は、本明細書に記載の技法を使用することができる、データフローグラフを開発し実行するためのデータ処理システム800の一例を示す。システム800はデータソース802を含み、データソース802はそのそれぞれが様々な形式(例えばデータベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームコンピュータによって使用されるネイティブ形式)の何れかでデータを記憶し又は提供することができる記憶装置又はオンラインデータストリームへの接続等の1つ又は複数のデータのソースを含み得る。データはロジスティックデータ、分析データ、又は産業用機械データであり得る。実行環境又は実行時環境804は、前処理モジュール806及び実行モジュール812を含む。実行環境804は、例えばUNIX(登録商標)オペレーティングシステムのバージョン等の適切なオペレーティングシステムの制御下で1つ又は複数の汎用コンピュータ上にホストされ得る。例えば実行環境804は、複数の処理ユニット(中央処理装置、CPU等)又はプロセッサコア、ローカル(例えば完全対称型マルチプロセッシング(SMP)コンピュータ等のマルチプロセッサシステム)若しくはローカル分散(例えばクラスタとして接続される複数のプロセッサ又は超並列処理(MPP)システム、又はリモート若しくはリモート分散された(例えばローカルエリアネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して接続される複数のプロセッサ)、又はその任意の組み合わせを使用するコンピュータシステムの構成を含むマルチノード並列計算環境を含み得る。
【0075】
データソース802を提供する記憶装置は実行環境804にとってローカルとする、例えば実行環境804をホストするコンピュータに接続される記憶媒体(例えばハードドライブ808)上に記憶することができ、又は実行環境804にとってリモートとする、例えば実行環境804をホストするコンピュータとリモート接続(例えばクラウド計算インフラによって提供される)上で通信するリモートシステム(例えばメインフレームコンピュータ810)上にホストすることができる。
【0076】
前処理モジュール806は、データソース802からデータを読み出し、実行するためのデータ処理アプリケーション(例えば実行可能データフローグラフ)を準備する。例えば前処理モジュール806は、データ処理アプリケーションをコンパイルし、実行環境804にとってアクセス可能なデータ記憶システム816に及び/又はそこからコンパイル済みのデータ処理アプリケーションを記憶し及び/又はロードし、実行するためのデータ処理アプリケーションを準備するために他のタスクを行うことができる。
【0077】
実行モジュール812は、一組のデータを処理し、その処理から生じる出力データ814を生成するために、前処理モジュール806によって準備されたデータ処理アプリケーションを実行する。出力データ814は、データソース802内に若しくは実行環境804にとってアクセス可能なデータ記憶システム816内に再び記憶することができ、又は他のやり方で使用され得る。データ記憶システム816は任意選択的な開発環境818にとってもアクセス可能であり、開発環境818では実行モジュール812によって実行されるデータ処理アプリケーションを開発者820が設計し編集することができる。開発環境818は、一部の実装形態では頂点間の有向辺(作業要素、即ちデータのフローを表す)によって接続される頂点(データ処理コンポーネント又はデータセットを表す)を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えばかかる環境は、参照により本明細書に援用する、「Managing Parameters for Graph-Based Applications」と題された米国特許出願公開第2007/0011668号明細書の中でより詳細に記載されている。かかるグラフに基づく計算を実行するためのシステムは、参照によりその全内容を本明細書に援用する「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題された米国特許第5,966,072号明細書に記載されている。本システムに従って作成されるデータフローグラフは、グラフコンポーネントによって表される個々のプロセスの内外に情報を与えるための、プロセス間で情報を動かすための、及びプロセスの実行順序を定めるための方法を提供する。本システムは、利用可能な任意の方法からプロセス間通信方法を選択するアルゴリズムを含む(例えばグラフの辺による通信路はプロセス間でデータを渡すためにTCP/IP又はUNIX(登録商標)ドメインソケットを使用し又は共用メモリを使用することができる)。
【0078】
前処理モジュール806は、様々な形式のデータベースシステムを含むデータソース802を実装し得る様々な種類のシステムからデータを受け付けることができる。データは、ことによるとヌル値を含む個々のフィールド(「属性」又は「カラム」とも呼ぶ)の値を有するレコードとして編成することができる。データソースからデータを最初に読み出すとき、前処理モジュール806は典型的にはそのデータソース内のレコードに関する何らかの初期形式情報から開始する。一部の状況では、データソースのレコード構造が最初は分からない場合があり、代わりにデータソース又はデータの分析後に決定され得る。レコードに関する初期情報は、例えば別個の値を表すビットの数、レコード内のフィールドの順序、及びビットによって表される値の種類(例えば文字列、符号付き/符号なし整数)を含み得る。
【0079】
換言すれば、及び本明細書に記載の実行可能データフローグラフに広く該当し、実行可能データフローグラフはデータ処理コンポーネントを介してデータソース802の1つ又は複数の入力データセットから1つ又は複数の出力データセットに流れるデータに対して実行されるグラフに基づく計算を実装し、データフローグラフはデータ記憶域814内のデータ構造によって指定され、データフローグラフはデータ構造によって指定され1つ又は複数の辺によって接続されるデータ処理コンポーネントを表すノードを有し、辺はデータ構造によって指定され、データ処理コンポーネント間のデータフローを表す。実行環境又は実行時環境804は、データ記憶域814に接続され、1つ又は複数のコンピュータ上にホストされ、データフローグラフを指定する記憶済みデータ構造を読み出すように及び前処理モジュール806によってデータフローグラフに指定されるデータ処理コンポーネントの計算を行うためのシステム資源(例えばプロセス、メモリ、CPU等)を割り当て構成するように構成される前処理モジュール806と、データ処理コンポーネントの計算の実行をスケジュールし制御するための実行モジュール812とを含む。換言すれば、1つ又は複数のコンピュータ上にホストされる実行時環境又は実行環境804はデータソース802からデータを読み出し、データフローグラフ形式で表される実行可能コンピュータプログラムを使用してデータを処理するように構成される。
【0080】
上記の手法は適切なソフトウェアを実行する計算システムを使用して実装することができる。例えばソフトウェアは、1つ又は複数のプログラムされた計算システム又はプログラム可能な計算システム(分散、クライアント/サーバ、又はグリッド等の様々なアーキテクチャのものであり得る)上で実行される1つ又は複数のコンピュータプログラム内の手続きを含むことができ、かかる計算システムは少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性のメモリ及び/又は記憶要素を含む)少なくとも1つのデータ記憶システム、(少なくとも1つの入力装置又はポートを使用して入力を受け付け、少なくとも1つの出力装置又はポートを使用して出力を行うための)少なくとも1つのユーザインタフェースをそれぞれ含む。ソフトウェアは、例えばグラフの設計、構成、及び実行に関係するサービスを提供するより大きいプログラムの1つ又は複数のモジュールを含み得る。プログラムのモジュール(例えばグラフの要素)は、データリポジトリ内に記憶されるデータモデルに従うデータ構造又は他の組織化されたデータとして実装され得る。
【0081】
ソフトウェアは、(例えば汎用又は専用の計算システム又は計算装置によって読み出し可能な)CD-ROM又は他のコンピュータ可読媒体等の有形の非一時的媒体上に与えることができ、又はソフトウェアがそこで実行される計算システムの有形の非一時的媒体までネットワークの通信媒体上で届けられ得る(例えば伝搬信号内に符号化される)。処理の一部又は全てが専用コンピュータ上で、又はコプロセッサ、若しくは書替え可能ゲートアレイ(FPGA)、若しくは専用の特定用途向け集積回路(ASIC)等の専用ハードウェアを使用して実行され得る。処理は分散式に実装されてもよく、その場合ソフトウェアによって指定される計算の異なる部分が異なる計算要素によって実行される。本明細書に記載した処理を実行するために記憶装置媒体がコンピュータによって読み出されるときコンピュータを構成し動作させるために、そのような各コンピュータプログラムは、好ましくは汎用又は専用のプログラム可能コンピュータによってアクセス可能な記憶装置のコンピュータ可読記憶媒体(例えばソリッドステートメモリ若しくは媒体又は磁気媒体若しくは光学媒体)上に記憶され又はかかるコンピュータ可読記憶媒体にダウンロードされる。本発明のシステムは、コンピュータプログラムで構成される有形の非一時的媒体として実装されると考えられる場合もあり、そのように構成される媒体は本明細書に記載した処理ステップの1つ又は複数を実行するようにコンピュータを特定の及び既定のやり方で動作させる。
【0082】
幾つかの実施形態を説明してきた。それでもなお、本発明の趣旨及び範囲から逸脱することなしに様々な修正を加えることができることが理解されよう。例えば上記のステップの一部は順序に依存しない場合があり、従って記載したのと異なる順序で実行することができる。
【0083】
他の実装形態も添付の特許請求の範囲に含まれる。
【符号の説明】
【0084】
100 コンピュータプログラムエコシステム
102 コンピュータプログラム
104 データ資源
150 エコシステムユニット
202 第1の計算システム
204 第2の計算システム
304 試験データ
306 試験結果
310 下位環境
312 サーバ
400 コンピュータプログラムエコシステム
402 コンピュータプログラム
404 パラメータセット
406 実行時ログファイル
408 データ資源(スケジュール情報)
420 分析システム
422 静的分析エンジン
424 実行時分析エンジン
426 比較エンジン
428 スケジュール分析エンジン
430 エコシステムユニット
440 スケジューラ
502 第1のサブグラフ
502a,502b,502c 第1のサブグラフのインスタンス
504 第2のサブグラフ
504a 第2のサブグラフのインスタンス
506 第1の論理データセット(DS1)
508 第2の論理データセット(DS2)
510 第3の論理データセット(DS3)
512 第4の論理データセット(DS4)
514 テーブル
516 ソートコンポーネント
517 データフローグラフ
518,520,522,523 パラメータセット
800 データ処理システム
802 データソース
804 実行環境又は実行時環境
806 前処理モジュール
808 ハードドライブ
810 メインフレームコンピュータ
812 実行モジュール
814 出力データ
816 データ記憶システム
818 開発環境
820 開発者