(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-23
(54)【発明の名称】コンピュータプログラムの自動修正
(51)【国際特許分類】
G06F 8/30 20180101AFI20241016BHJP
G06F 11/36 20060101ALI20241016BHJP
【FI】
G06F8/30
G06F11/36 188
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024519316
(86)(22)【出願日】2022-10-06
(85)【翻訳文提出日】2024-04-24
(86)【国際出願番号】 US2022077666
(87)【国際公開番号】W WO2023060170
(87)【国際公開日】2023-04-13
(32)【優先日】2021-10-08
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ジョイス,ジョン
(72)【発明者】
【氏名】イスマン,マーシャル エー.
(72)【発明者】
【氏名】バッハ,エドワード アラン
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042HH17
5B042HH49
5B376BC08
5B376BC32
5B376BC38
5B376BC65
(57)【要約】
コンピュータプログラムを更新するための方法は、第1のコンピューティングシステム上でホストされ、第1のコンピューティングシステムによって実行されるように構成されたコンピュータプログラムを受信することを含む。本方法は、コンピュータプログラムを分析して、コンピュータプログラムの系統、アーキテクチャ、及び動作の特性評価を取得することを含む。系統は、コンピュータプログラムの要素間の関係を含み、アーキテクチャは、データソースの特性、データターゲットの特性、及びデータレコードに含まれるデータを処理するように構成された、1つ以上のプロセッサの特性を含み、動作は、データレコードからのデータを処理するために実行されるプロセスを含む。本方法は、コンピュータプログラムに対して行われる更新の特性評価を受信することであって、コンピュータプログラムが更新に従って修正されるときに、修正されたコンピュータプログラムの少なくとも一部は、第2のコンピューティングシステム上でホストされ、第2のコンピューティングシステムによって実行されるように構成されている、ことと、コンピュータプログラムを修正して更新を実施し、修正されたコンピュータプログラムを生成することと、を含む。
【特許請求の範囲】
【請求項1】
コンピュータプログラムを更新するための方法であって、前記方法は、コンピューティングシステムによって実施され、
第1のコンピューティングシステム上でホストされ、前記第1のコンピューティングシステムによって実行されるように構成されたコンピュータプログラムを受信することであって、前記コンピュータプログラムは、実行されると、データソースからデータレコードを受信し、前記データレコードのフィールドに含まれるデータを処理し、処理した前記データを含むデータレコードをデータターゲットに出力するように構成されている、ことと、
1つ以上のプロセッサによって前記コンピュータプログラムを分析して、前記コンピュータプログラムの系統、アーキテクチャ、及び動作の特性評価を取得することであって、
前記コンピュータプログラムの前記系統は、前記コンピュータプログラムの要素間の関係、前記コンピュータプログラムと他のコンピュータプログラムとの関係、又はその両方を含み、
前記コンピュータプログラムの前記アーキテクチャは、前記データソースの特性、前記データターゲットの特性、及び前記データレコードに含まれる前記データを処理するように構成された1つ以上のプロセッサの特性を含み、
前記コンピュータプログラムの前記動作は、前記データレコードからの前記データを処理するために実行される前記コンピュータプログラムのプロセスを含む、ことと、
前記コンピュータプログラムに対して行われる更新の特性評価を受信することであって、前記コンピュータプログラムが前記更新に従って修正されるときに、前記修正されたコンピュータプログラムの少なくとも一部は、第2のコンピューティングシステム上でホストされ、前記第2のコンピューティングシステムによって実行されるように構成されている、ことと、
前記コンピュータプログラムを修正して前記更新を実施し、修正された前記コンピュータプログラムを生成することであって、前記コンピュータプログラムの前記系統、前記コンピュータプログラムのアーキテクチャ、又は前記コンピュータプログラムの前記動作のうちの1つ以上を修正すること含む、ことと、を含む、方法。
【請求項2】
前記第2のコンピューティングシステムはクラウドベースのシステムである、請求項1に記載の方法。
【請求項3】
前記コンピュータプログラムを修正することは、前記更新の前記特性評価を、前記コンピュータプログラムの前記系統、前記アーキテクチャ、及び前記動作の前記特性評価とマージすることを含む、請求項1又は2に記載の方法。
【請求項4】
前記コンピュータプログラムは、前記データソースから前記データレコードを受信し、受信した前記データレコードのフィールド内の値を処理し、前記値の前記処理の結果を含むデータレコードを出力するように構成されたデータ処理コンポーネントを含み、前記データ処理コンポーネントは、データレコードのフローを表すリンクによって接続されている、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記コンピュータプログラムを修正することは、データ処理コンポーネントのパラメータの値若しくは表現、又は前記コンピュータプログラムのリンクを修正することを含む、請求項4に記載の方法。
【請求項6】
前記コンピュータプログラムを修正することは、新しいデータ処理コンポーネントを追加すること、データ処理コンポーネントを削除すること、新しいリンクを追加すること、又はリンクを削除することを含む、請求項4又は5に記載の方法。
【請求項7】
前記更新の前記特性評価は、前記コンピュータプログラムの少なくとも一部に対する分散処理方式の特性評価を含み、前記コンピュータプログラムを修正することは、前記分散処理方式に従って処理動作の分散を実施するように前記コンピュータプログラムのレイアウトを修正することを含む、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記コンピュータプログラムを修正することは、
パーティショニング動作を実施するように構成された、第1の新しいデータ処理コンポーネントの仕様を生成することと、
収集動作を実施するように構成された、第2の新しいデータ処理コンポーネントの仕様を生成することと、
前記第1の新しいデータ処理コンポーネントを前記コンピュータプログラムの前記少なくとも一部の上流で前記コンピュータプログラムに挿入することと、
前記第2の新しいデータ処理コンポーネントを前記コンピュータプログラムの前記少なくとも一部の下流で前記コンピュータプログラムに挿入することと、を含む、請求項7に記載の方法。
【請求項9】
前記データソースは、第1のファイルシステム又はデータベースを含み、前記コンピュータプログラムに対して行われる前記更新の前記特性評価は、修正された前記コンピュータプログラムがデータレコードを受信する第2のファイルシステム又はデータベースの識別を含む、請求項1~8のいずれか一項に記載の方法。
【請求項10】
前記コンピュータプログラムを修正することは、
前記第1のファイルシステム又はデータベースに対応する前記コンピュータプログラムの第1のデータソースコンポーネントを削除することと、
前記第2のファイルシステム又はデータベースに対応する第2のデータソースコンポーネントを挿入することと、を含む、請求項9に記載の方法。
【請求項11】
前記データターゲットは、第1のファイルシステム又はデータベースを含み、前記コンピュータプログラムに対して行われる前記更新の前記特性評価は、修正された前記コンピュータプログラムがデータレコードを出力する、多数の第2のファイルシステム又はデータベースのセットの識別を含み、前記第2のファイルシステム又はデータベースのうちの少なくとも1つは、前記第2のファイルシステム又はデータベースのうちの少なくとも他の1つの位置とは異なる位置にある、請求項1~10のいずれか一項に記載の方法。
【請求項12】
前記コンピュータプログラムを修正することは、
コンピュータプログラムのデータ処理コンポーネントを、前記第1のファイルシステム又はデータベースに対応する第1のデータターゲットコンポーネントに接続する、前記コンピュータプログラム内のフローを複製することと、
前記第2のファイルシステム又はデータベースの最初の1つに対応する新しいコンポーネントを挿入することであって、複製された前記フローは前記データ処理コンポーネントを前記新しいコンポーネントに接続する、ことと、を含む、請求項11に記載の方法。
【請求項13】
前記第2のファイルシステム又はデータベースは、クラウドベースのファイルシステム又はデータベースであり、前記更新の前記特性評価は、非クラウドベースの記憶位置に記憶されるデータの第1の特性の識別、前記第2のクラウドベースのファイルシステム若しくはデータベースに記憶されるデータの第2の特性の識別、又はその両方を含む、請求項11又は12に記載の方法。
【請求項14】
前記コンピュータプログラムを分析することは、データ系統分析を行うことを含み、前記データ系統分析に基づいて、前記第1の特性を有するデータレコードを受信するか、若しくは出力するように構成されている第1のコンポーネント、前記第2の特性を有するデータレコードを受信するか、若しくは出力するように構成されている第2のコンポーネント、又はその両方を識別することを含む、請求項13に記載の方法。
【請求項15】
前記第1の特性は、個人識別情報(PII)を含む、請求項13又は14に記載の方法。
【請求項16】
前記コンピュータプログラムを修正することは、前記第1の特性を有するデータを出力する第1のデータ処理コンポーネントの仕様を修正すること、前記第2の特性を有するデータを出力する第2のデータ処理コンポーネントの仕様を修正すること、又はその両方を含む、請求項13~15のいずれか一項に記載の方法。
【請求項17】
前記コンピュータプログラムを修正することは、
第1のタイプのファイル転送プロトコルを実装する前記コンピュータプログラムのデータ処理コンポーネントを識別することと、
第2のタイプのファイル転送プロトコルに従って前記データ処理コンポーネントの仕様を修正することと、を含み、前記更新の前記特性評価は、前記第1のタイプのファイル転送プロトコルから前記第2のタイプのファイル転送プロトコルへの変更の指示を含む、請求項1~16のいずれか一項に記載の方法。
【請求項18】
前記データ処理コンポーネントの前記仕様を修正することは、前記データ処理コンポーネントの1つ以上のパラメータごとに値又は表現を変更することを含む、請求項17に記載の方法。
【請求項19】
前記更新の前記特性評価は、個人識別情報(PII)の匿名化の要件を含む、請求項1~18のいずれか一項に記載の方法。
【請求項20】
前記コンピュータプログラムを分析することは、PIIを含む1つ以上のフィールドを有する第1のデータレコードを受信するように構成されているデータ処理コンポーネントを識別することを含み、前記コンピュータプログラムを修正することは、識別した前記データ処理コンポーネントの上流にトークン化サービスを実装するように構成されたコンポーネントを追加することを含み、前記トークン化サービスは、前記第1のデータレコードを受信し、受信した前記レコードの前記フィールドに含まれる前記PIIを一般化するように構成されている、請求項19に記載の方法。
【請求項21】
前記コンピュータプログラムを修正することは、識別した前記データ処理コンポーネントの仕様を修正して、識別した前記データ処理コンポーネントによって処理されるデータレコードのレコード形式の定義を変更することを含む、請求項20に記載の方法。
【請求項22】
前記第2のコンピューティングシステムはクラウドベースのコンピューティングシステムであり、前記コンピュータプログラムを修正することは、前記トークン化サービスの実行のために非クラウドベースのコンピューティングシステムを指定することを含む、請求項21に記載の方法。
【請求項23】
修正された前記コンピュータプログラムの少なくとも一部をテストすることであって、前記テストすることは、
修正された前記コンピュータプログラムの前記少なくとも一部に入力テストデータレコードを提供することと、
修正された前記コンピュータプログラムの前記少なくとも一部から第1の処理されたデータレコードを取得することと、を含む、ことと、
前記コンピュータプログラムの少なくとも一部をテストすることであって、前記コンピュータプログラムの前記少なくとも一部は、修正された前記コンピュータプログラムのテストされた前記一部に対応し、前記コンピュータプログラムの前記少なくとも一部をテストすることは、
前記コンピュータプログラムの前記少なくとも一部に前記入力テストデータレコードを提供することと、
前記コンピュータプログラムの前記少なくとも一部から第2の処理されたデータレコードを取得することと、を含む、ことと、
前記第1の処理されたデータレコードと前記第2の処理されたデータレコードとを比較することと、を含む、請求項1~22のいずれか一項に記載の方法。
【請求項24】
修正された前記コンピュータプログラムを前記第2のコンピューティングシステムに移行させることを含む、請求項1~23のいずれか一項に記載の方法。
【請求項25】
前記コンピュータプログラムを修正することは、
前記更新の前記特性評価によって示されるターゲット属性値に一致する属性値を有する前記コンピュータプログラムのデータ処理コンポーネントを識別することと、
識別した前記データ処理コンポーネントを新しいデータ処理コンポーネントに置換することと、を含む、請求項1~24のいずれか一項に記載の方法。
【請求項26】
前記更新の前記特性評価によって示されるターゲット属性値に一致する属性値を有する前記コンピュータプログラムのデータ処理コンポーネントを識別することは、
データレコードの第1のセットを生成することであって、前記コンピュータプログラムの各データ処理コンポーネントに対応するデータレコードを生成することを含み、各データレコードは、前記それぞれのデータ処理コンポーネントの識別子及び前記それぞれのデータ処理コンポーネントの属性の属性値を含む、ことと、
前記第1のセットの前記データレコードに含まれる前記属性値に基づいて前記データレコードの第1のセットをフィルタリングしてデータレコードの第2のセットを取得することであって、前記更新の前記特性評価によって示される前記ターゲット属性値に一致する前記特定の属性の値を含まない前記第1のセットの前記データレコードを、前記フィルタリングすることによって削除することを含む、ことと、を含む、請求項25に記載の方法。
【請求項27】
コンピュータプログラムを更新するためのコンピュータシステムであって、前記コンピュータシステムは、メモリに結合された1つ以上のプロセッサを含み、前記1つ以上のプロセッサ及び前記メモリは、請求項1~26のいずれか一項に記載の動作を実行するように構成されている、コンピュータシステム。
【請求項28】
コンピュータプログラムを更新するための動作をコンピューティングシステムに実行させるための命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記動作は、請求項1~26のいずれか一項に記載の動作を含む、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本国際特許出願は、米国特許法第119条(e)の下で、2021年10月8日に出願された米国特許出願第63/253,851号に対する優先権を主張する、2022年3月25日に出願された同第17/704,469号に対する優先権を主張する。
【背景技術】
【0002】
データ処理システムは、入力データレコードに含まれるデータを処理するために実行可能である、複数のコンピュータプログラムを含み得る。データ処理システム内では、あるコンピュータプログラムから別のコンピュータプログラムへとデータレコードを渡すことができ、その結果、処理されたデータを含む出力データレコードセットが得られる。
【発明の概要】
【0003】
概要
一態様では、コンピュータプログラムを更新するための方法は、第1のコンピューティングシステム上でホストされ、第1のコンピューティングシステムによって実行されるように構成されたコンピュータプログラムを受信することを含み、コンピュータプログラムは、実行されると、データソースからデータレコードを受信し、データレコードのフィールドに含まれるデータを処理し、処理したデータレコードをデータターゲットに出力するように構成されている。本方法は、1つ以上のプロセッサによってコンピュータプログラムを分析して、コンピュータプログラムの系統、アーキテクチャ、及び動作の特性評価を取得することを含む。コンピュータプログラムの系統は、コンピュータプログラムの要素間の関係を含み、コンピュータプログラムのアーキテクチャは、データソースの特性、データターゲットの特性、及びデータレコードに含まれるデータを処理するように構成された、1つ以上のプロセッサの特性を含み、コンピュータプログラムの動作は、データレコードからのデータを処理するために実行されるコンピュータプログラムのプロセスを含む。本方法は、コンピュータプログラムに対して行われる更新の特性評価を受信することであって、コンピュータプログラムが更新に従って修正されるときに、修正されたコンピュータプログラムの少なくとも一部は、第2のコンピューティングシステム上でホストされ、第2のコンピューティングシステムによって実行されるように構成されている、ことと、コンピュータプログラムを修正して更新を実施し、修正されたコンピュータプログラムを生成することであって、コンピュータプログラムの系統、コンピュータプログラムのアーキテクチャ、又はコンピュータプログラムの動作のうちの1つ以上を修正することを含む、ことと、を含む。
【0004】
いくつかの実施形態は、以下の特徴のうちの2つ以上の1つ又は任意の組み合わせを含み得る。
【0005】
第2のコンピューティングシステムは、クラウドベースのシステムである。
【0006】
コンピュータプログラムを修正することは、更新の特性評価を、コンピュータプログラムの系統、アーキテクチャ、及び動作の特性評価とマージすることを含む。
【0007】
コンピュータプログラムの系統は、コンピュータプログラムと他のコンピュータプログラムとの間の関係を含む。
【0008】
コンピュータプログラムは、データレコードのフィールド内の値を処理するように構成されたデータ処理コンポーネントを含み、データ処理コンポーネントは、データレコードのフローを表すリンクによって接続されている。場合によっては、コンピュータプログラムを修正することは、データ処理コンポーネントのパラメータの値若しくは表現、又はコンピュータプログラムのリンクを修正することを含む。場合によっては、コンピュータプログラムを修正することは、新しいデータ処理コンポーネントを追加すること、データ処理コンポーネントを削除すること、又はその両方を含む。場合によっては、コンピュータプログラムを修正することは、新しいリンクを追加すること、リンクを削除すること、又はその両方を含む。
【0009】
更新の特性評価は、コンピュータプログラムの少なくとも一部に対する分散処理方式の特性評価を含む。場合によっては、コンピュータプログラムを修正することは、分散処理方式に従って処理動作の分散を実施するようにコンピュータプログラムのレイアウトを修正することを含む。場合によっては、コンピュータプログラムを修正することは、パーティショニング動作を実施するように構成された、第1の新しいデータ処理コンポーネントの仕様を生成することと、収集動作を実施するように構成された、第2の新しいデータ処理コンポーネントの仕様を生成することと、第1の新しいデータ処理コンポーネントを、コンピュータプログラムの少なくとも一部の上流でコンピュータプログラムに挿入することと、第2の新しいデータ処理コンポーネントを、コンピュータプログラムの少なくとも一部の下流でコンピュータプログラムに挿入することと、を含む。場合によっては、本方法は、更新の特性評価に基づいて、分散処理方式が適用されるコンピュータプログラムのコンポーネントを識別することを含む。
【0010】
データソースは、第1のファイルシステム又はデータベースを含み、コンピュータプログラムに対して行われる更新の特性評価は、修正されたコンピュータプログラムがデータレコードを受信する第2のファイルシステム又はデータベースの識別を含む。場合によっては、コンピュータプログラムを修正することは、コンピュータプログラムのコンポーネントの仕様内のデータソースの名前を更新することを含む。場合によっては、コンピュータプログラムを修正することは、第1のファイルシステム又はデータベースに対応するコンピュータプログラムの第1のデータソースコンポーネントを削除することと、第2のファイルシステム又はデータベースに対応する第2のデータソースコンポーネントを挿入することと、を含む。
【0011】
データターゲットは、第1のファイルシステム又はデータベースを含み、コンピュータプログラムに対して行われる更新の特性評価は、修正されたコンピュータプログラムがデータレコードを出力する、多数の第2のファイルシステム又はデータベースのセットの識別を含む。場合によっては、第2のファイルシステム又はデータベースのうちの少なくとも1つは、第2のファイルシステム又はデータベースのうちの少なくとも他の1つの位置とは異なる位置にある。場合によっては、コンピュータプログラムを修正することは、コンピュータプログラムのデータ処理コンポーネントを、第1のファイルシステム又はデータベースに対応する第1のデータターゲットコンポーネントに接続する、コンピュータプログラム内のフローを複製することと、第2のファイルシステム又はデータベースの最初の1つに対応する新しいコンポーネントを挿入することであって、複製されたフローはデータ処理コンポーネントを新しいコンポーネントに接続する、ことと、を含む。場合によっては、第2のファイルシステム又はデータベースは、クラウドベースのファイルシステム又はデータベースであり、更新の特性評価は、非クラウドベースの記憶位置に記憶されるデータの第1の特性の識別、第2のクラウドベースのファイルシステム若しくはデータベースに記憶されるデータの第2の特性の識別、又はその両方を含む。場合によっては、コンピュータプログラムを分析することは、データ系統分析を行うことを含み、データ系統分析に基づいて、第1の特性を有するデータレコードを受信するか、若しくは出力するように構成されている第1のコンポーネント、第2の特性を有するデータレコードを受信するか、若しくは出力するように構成されている第2のコンポーネント、又はその両方を識別することを含む。場合によっては、第1の特性は、個人識別情報(personally identifiable information、PII)を含む。場合によっては、コンピュータプログラムを修正することは、第1の特性を有するデータを出力する第1のデータ処理コンポーネントの仕様を修正すること、第2の特性を有するデータを出力する第2のデータ処理コンポーネントの仕様を修正すること、又はその両方を含む。
【0012】
コンピュータプログラムを修正することは、第1のタイプのファイル転送プロトコルを実装するコンピュータプログラムのデータ処理コンポーネントを識別することと、第2のタイプのファイル転送プロトコルに従ってデータ処理コンポーネントの仕様を修正することと、を含み、更新の特性評価は、第1のタイプのファイル転送プロトコルから第2のタイプのファイル転送プロトコルへの変更の指示を含む。場合によっては、データ処理コンポーネントの仕様を修正することは、データ処理コンポーネントの1つ以上のパラメータごとに値又は表現を変更することを含む。
【0013】
更新の特性評価は、個人識別情報(PII)の匿名化の要件を含む。場合によっては、コンピュータプログラムを分析することは、PIIを含む1つ以上のフィールドを有する第1のデータレコードを受信するように構成されているデータ処理コンポーネントを識別することを含む。場合によっては、コンピュータプログラムを修正することは、識別したデータ処理コンポーネントの上流にトークン化サービスを実装するように構成されたコンポーネントを追加することを含み、トークン化サービスは、第1のデータレコードを受信し、受信したレコードのフィールドに含まれるPIIを一般化するように構成されている。場合によっては、コンピュータプログラムを修正することは、識別したデータ処理コンポーネントの仕様を修正して、識別したデータ処理コンポーネントによって処理されるデータレコードのレコード形式の定義を変更することを含む。場合によっては、第2のコンピューティングシステムはクラウドベースのコンピューティングシステムであり、コンピュータプログラムを修正することは、トークン化サービスの実行のために非クラウドベースのコンピューティングシステムを指定することを含む。
【0014】
本方法は、修正されたコンピュータプログラムの少なくとも一部をテストすることを含み、テストすることは、入力テストデータレコードを修正されたコンピュータプログラムの少なくとも一部に提供することと、第1の処理されたデータレコードを修正されたコンピュータプログラムの少なくとも一部から取得することと、を含む。場合によっては、本方法は、コンピュータプログラムの少なくとも一部をテストすることを含み、コンピュータプログラムの少なくとも一部は、修正されたコンピュータプログラムのテストされた一部に対応し、コンピュータプログラムの少なくとも一部をテストすることは、入力テストデータレコードをコンピュータプログラムの少なくとも一部に提供することと、コンピュータプログラムの少なくとも一部から第2の処理されたデータレコードを取得することと、を含み、修正されたコンピュータプログラムの少なくとも一部をテストすることは、第1の処理されたデータレコードと第2の処理されたデータレコードとを比較することを含む。
【0015】
本方法は、修正されたコンピュータプログラムを第2のコンピューティングシステムに移行させることを含む。
【0016】
コンピュータプログラムを修正することは、更新の特性評価によって示されるターゲット属性値に一致する属性値を有するコンピュータプログラムのデータ処理コンポーネントを識別することと、識別したデータ処理コンポーネントを新しいデータ処理コンポーネントに置換することと、を含む。場合によっては、更新の特性評価によって示されるターゲット属性値に一致する属性値を有するコンピュータプログラムのデータ処理コンポーネントを識別することは、データレコードの第1のセットを生成することであって、コンピュータプログラムの各データ処理コンポーネントに対応するデータレコードを生成することを含み、各データレコードは、それぞれのデータ処理コンポーネントの識別子及びそれぞれのデータ処理コンポーネントの属性の属性値を含む、ことと、第1のセットのデータレコードに含まれる属性値に基づいてデータレコードの第1のセットをフィルタリングしてデータレコードの第2のセットを取得することであって、更新の特性評価によって示されるターゲット属性値に一致する特定の属性の値を含まない第1のセットのデータレコードをフィルタリングによって削除することを含む、ことと、を含む。
【0017】
コンピュータプログラムを修正して更新を実施し、修正されたコンピュータプログラムを生成することは、コンピュータプログラムのアーキテクチャを修正することを少なくとも含む。
【0018】
アーキテクチャを修正することは、データレコードに含まれるデータを処理するように構成された1つ以上のプロセッサの特性を、第2のコンピューティングシステムの1つ以上のプロセッサの特性に適合させることを少なくとも含む。
【0019】
受信したコンピュータプログラムは、第1のコンピューティングシステム上でホストされ、第1のコンピューティングシステムによって実行可能なコンピュータプログラムのコピーである。
【0020】
コンピュータプログラムを修正することは、受信したコンピュータプログラムのコピーを生成することと、生成したコピーを修正して、修正されたコンピュータプログラムを生成することと、を含む。
【0021】
コンピュータプログラムの系統、コンピュータプログラムのアーキテクチャ、又はコンピュータプログラムの動作のうちの1つ以上を修正することは、第2のコンピューティングシステムの特性を考慮しつつ実行される。考慮される第2のコンピューティングシステムの特性は、修正されたコンピュータプログラムを実行するために第2のコンピューティングシステムによって使用されるハードウェアの特性である。
【0022】
第2のコンピューティングシステムはクラウドベースのコンピューティングシステムであり、コンピュータプログラムを修正することは、ローカルコンピュータシステム上で実行され、データソースから受信したレコードのフィールドに含まれるPIIを、好ましくはPIIをトークンに置換することによって匿名化にするように構成されているトークン化サービスを実装するように構成されたコンポーネントを追加することを含み、トークン化システムを介してトークンがPIIにマッピングして戻されるが、修正されたコンピュータプログラムの他の処理動作が行われるクラウドベースのシステムにPII自体が提供されないことを確実にする。
【0023】
本方法の動作の各々は、本方法を実施するコンピューティングシステムによって自動的に実行される。
【0024】
本方法を実施するコンピューティングシステムは、第1のコンピューティングシステム及び第2のコンピューティングシステムの各々とは異なるプログラム更新システムであり、及び/又は第2のコンピューティングシステムは第1のコンピューティングシステムとは異なる。
【0025】
一態様では、データフローグラフを更新するための方法は、データフローグラフにアクセスすることを含み、データフローグラフの仕様はノードを定義し、ノードのうちの少なくとも1つは、レコード形式を有するデータレコードの1つ以上のフィールド内のデータを処理するために実行される動作を定義するデータ処理コンポーネントを表し、データレコードはデータ処理コンポーネントに提供され、1つ以上のリンクは、ノードを接続し、各々がデータレコードのフローを表す。本方法は、データフローグラフを表す、データレコードの第1のセットを生成することを含み、データフローグラフのデータ処理コンポーネントの各々に対応するデータレコードを生成することを含み、各データレコードは、データ処理コンポーネントの識別子と、データ処理コンポーネントの属性の属性値と、を含む。本方法は、データフローグラフに対する更新の特性評価を受信することであって、更新の特性評価は、特定の属性の目標値を示す、ことと、更新の特性評価によって示される目標値に基づいてデータレコードの第1のセットをフィルタリングして、データレコードの第2のセットを取得することであって、フィルタリングによって、更新の特性評価によって示される目標値に一致する特定の属性の属性値を含まないデータレコードを削除することを含む、ことと、データレコードの第2のセット内のデータレコードごとに、対応するコンポーネントを更新の特性評価によって示される新しいコンポーネントに置換することと、を含む。
【0026】
いくつかの実施形態は、以下の特徴の片方又は両方を含み得る。
【0027】
所与のコンポーネントを新しいコンポーネントに置換することは、所与のコンポーネントに接続されたフローを更新することを含む。
【0028】
所与のコンポーネントを新しいコンポーネントに置換することは、所与のコンポーネントを表すノードに接続されたフローを削除することと、新しいコンポーネントを表すノードに接続された新しいフローを生成することと、を含む。
【0029】
本明細書に記載の態様は、コンピュータプログラムが最初にホストされ、実行されるように構成されたコンピューティングシステムとは異なる新しいコンピューティングシステムに移行させるコンピュータプログラムの自動修正を可能にする。このコンピュータプログラムの新しいコンピューティングシステムへの移行の準備を整え、新しいコンピューティングシステムによるその実行の準備を整えるために、コンピュータプログラムの自動修正は、新しいコンピューティングシステムの特性を考慮して、データセキュリティ、データ処理のスループット、コンピューティングリソース消費、又はコンピュータプログラムのプロセス/機能の正しい実行に関する適切な動作など、新しいコンピューティングシステムにおける修正されたコンピュータプログラムの適切な動作を確実にする。コンピュータプログラムの修正時に考慮される新しいコンピューティングシステムの特性は、新しいコンピューティングシステムのハードウェア及び/又は新しいコンピューティングシステムにおけるデータ保護(データセキュリティ)の程度に関する特性を含み得る。これらの態様は、特に有益であるが、ローカルコンピューティングシステムからクラウドベースのコンピューティングシステムへのコンピュータプログラムの移行に限定されない。1つ以上の実装形態の詳細が、添付の図面及び以下の記載において明らかにされる。他の特徴及び利点は、明細書及び図面、並びに特許請求の範囲から明らかとなるであろう。
【図面の簡単な説明】
【0030】
【
図2】コンピュータプログラムを更新するためのシステムの図である。
【
図10A】それぞれ、元のデータフローグラフ及び修正されたデータフローグラフの一部の図である。
【
図10B】それぞれ、元のデータフローグラフ及び修正されたデータフローグラフの一部の図である。
【発明を実施するための形態】
【0031】
本明細書では、例えば、修正されたコンピュータプログラムの少なくとも一部が、元のコンピュータプログラムのコンピューティングシステムとは異なるコンピューティングシステム上でホストされ、当該異なるコンピューティングシステムによって実行され得るように、データフローグラフ(他のタイプのプログラムも可能)などコンピュータプログラムを修正するための手法、好ましくは自動化された手法を説明する。例えば、修正は、クラウドベースのコンピューティングシステム上でホストされ、クラウドベースのコンピューティングシステムによって実行されるように修正されたコンピュータプログラムを構成することができる。自動修正プロセスは、コンピュータプログラムの系統、アーキテクチャ、及び動作を特性評価するためのコンピュータプログラムの自動分析を含む。次に、系統、アーキテクチャ、及び動作のうちの1つ以上が自動的に修正されて、ユーザ又はコンピューティングシステムによって指定された更新などの更新が実施される。更新は、例えば、修正されたコンピュータプログラムへの分散処理方式の導入、入力データレコードの検索若しくは出力データレコードの記憶用の位置の修正、又は、例えばプライバシー規制に準拠するために個人識別情報(PII)をマスクするプロセスの導入であり得る。
【0032】
図1を参照すると、コンピュータプログラム100は、第1のコンピューティングシステム102上でホストされ、第1のコンピューティングシステム102によって実行される。一例では、第1のコンピューティングシステム102は、コンピュータプログラムを動作させるユーザにとってローカルであるコンピューティングシステム、例えば、オフィスの現場に位置するコンピューティングシステムである。システムエンジニアなどのユーザは、コンピュータプログラムの修正バージョン(修正されたコンピュータプログラム104と称される)の少なくとも一部が、第2のコンピューティングシステム106(例えば、クラウドコンピューティングシステム)上でホストされ、当該第2のコンピューティングシステム106によって実行されるように、コンピュータプログラム100を更新することを所望することがある。例えば、コンピュータプログラム100の更新は、アプリケーション又はプロセスをローカル環境(例えば、ローカル記憶及び実行)からクラウドベース環境(例えば、クラウドベース記憶及び/又は実行)に、又はローカル環境とクラウドベース環境との組み合わせに移行させるプロセスの一環として実行され得る。コンピュータプログラム100を更新して、修正されたコンピュータプログラム104を生成することは、以下の段落に記載するように、更新の目的を特性評価するユーザからの入力に基づいた、自動プロセスである。
【0033】
コンピュータプログラム100は、コンピュータプログラムの様々な特性評価を取得するために自動的に分析される。例えば、コンピュータプログラム100を分析して、コンピュータプログラムの要素間の関係、コンピュータプログラムと他のコンピュータプログラムとの関係、又はその両方を含む、コンピュータプログラム100の系統の特性を取得することができる。コンピュータプログラムの系統の特性評価は、それらの関係を示すデータを含む。要素は、データ処理ノード又はコンポーネント、データリソース又はデータターゲット、データフローのリンクなどであり得る。コンピュータプログラム100を分析して、データソースの特性、データターゲットの特性、コンピュータプログラムを実行する(例えば、データレコードのフィールドに含まれるデータを処理する)ように構成されている、1つ以上のプロセッサの特性、又はコンピュータプログラムアーキテクチャの他の特徴を含む、コンピュータプログラムのアーキテクチャの特性評価を取得することができる。コンピュータプログラムのアーキテクチャの特性評価は、それらの特性を示すデータを含む。コンピュータプログラム100を分析して、コンピュータプログラムの実行時に実行されるコンピュータプログラムのプロセス、例えば、コンピュータプログラムによって受信されたデータレコードのフィールドに含まれるデータを処理するために実行されるプロセスを含む、コンピュータプログラムの動作の特性評価を取得することができる。コンピュータプログラムの動作の特性評価は、それらのプロセスを示すデータを含む。
【0034】
コンピュータプログラム100に対する更新の特性評価は、例えば、ユーザからの入力として受信される。更新は、実施されると、例えば、コンピュータプログラム100が更新に従って修正されると、修正されたコンピュータプログラム104をもたらす更新であり、その少なくとも一部は、第2のコンピューティングシステム106上でホストされ、第2のコンピューティングシステム106によって実行されるように構成されている。コンピュータプログラム100は自動的に修正されて更新を実施し、それによって修正されたコンピュータプログラム104を生成し得る。更新を実施することは、コンピュータプログラムの系統を修正すること、コンピュータプログラムのアーキテクチャを修正すること、又はコンピュータプログラムの動作を修正することのうちの1つ以上を含む。修正されたコンピュータプログラム104は、少なくとも部分的に、第2のコンピューティングシステム106上でホストされ、第2のコンピューティングシステム106によって実行されるように構成されている。
【0035】
コンピュータプログラム100及び修正されたコンピュータプログラム104は、実行されるとデータソースからデータレコードを受信し、データレコードのフィールドに含まれるデータを処理し、処理したデータをデータターゲットに出力するコンピュータプログラムである。いくつかの例では、コンピュータプログラム100及び修正されたコンピュータプログラム104は、実行可能なデータフローグラフである。実行可能なデータフローグラフは、ノードを含むグラフ形態のコンピュータプログラムであり、ノードは、データソース及びデータターゲットなど実行可能なデータ処理コンポーネント及びデータリソースである。ノードは、グラフ内のデータレコードを受信し、データレコードのフィールド内の値など、データレコードに含まれるデータを処理し、データレコード内の処理結果を出力することができ、これは、データリソースなどグラフ内の宛先、例えばデータターゲットに転送される。データリソースは、データレコードなどデータのリポジトリ、例えば、データフローグラフの実行中に処理されるか、若しくは使用されるデータのソース、又はデータフローグラフによって出力される、処理されたデータレコードの宛先(ターゲット)である。データリソースは、例えば、ファイル、データベース(例えば、データベースのテーブル)、キュー、オブジェクト、又は他のタイプのデータソース若しくはターゲットである。グラフの2つのノードを接続するリンクは、ノード間の情報及び/又はデータ(データレコードなど)の流れのために提供される。実行可能なデータフローグラフは、実行されると、データレコードのフィールドに含まれるデータを処理するように構成可能である。データフローグラフ(グラフと呼ばれることもある)は、1つ以上のグラフの実行を制御するデータ処理グラフ又は計画であり得る。いくつかの例では、データフローグラフの1つ以上のデータ処理コンポーネントは、サブグラフである。
【0036】
図2は、コンピュータプログラム200を更新して修正されたコンピュータプログラム204を生成するためのコンピューティングシステム230の概略図である。コンピューティングシステム230は、1つ以上のプロセッサと、メモリと、を含む。コンピュータプログラム200、204は、例えば、データレコードのフィールドに含まれるデータを処理するように構成可能である、実行可能なデータフローグラフである。元のコンピュータプログラム200は、コンピュータプログラム200に関心のある企業又はエンティティにローカルなコンピューティングシステムなど第1のコンピューティングシステム201上でホストされ、第1のコンピューティングシステム201によって実行される。修正されたコンピュータプログラム204は、第1のコンピューティングシステム201とは異なる、クラウドベースのコンピューティングシステムなど第2のコンピューティングシステム203上でホストされ、第2のコンピューティングシステム203によって実行される。いくつかの例では、修正されたコンピュータプログラム204の一部は、第1のコンピューティングシステム201上でホストされ、及び/又は第1のコンピューティングシステム201によって実行され、他の部分は、第2のコンピューティングシステム203上でホストされ、及び/又は第2のコンピューティングシステム203によって実行される。
【0037】
システム230は、システム201からプログラム200のコピーを受信するか、又はシステム230は、システム201上でホストされるように構成されているプログラム200を受信する。システム230は、受信したコンピュータプログラム200(のコピー)を分析して、コンピュータプログラム200の系統、コンピュータプログラム200のアーキテクチャ、コンピュータプログラム200の動作、又はそれらのうちの任意の2つ以上の組み合わせの特性評価を取得するプログラム分析モジュール210を含む。この特性評価211は、修正モジュール220に渡される。
【0038】
コンピュータプログラム200の系統は、コンピュータプログラムの要素間の関係(例えば、ノード、データリソース、又はその両方の関係)、コンピュータプログラムと他のコンピュータプログラムとの関係、又はその両方を含む。コンピュータプログラム200の系統は、静的依存関係、ランタイム依存関係、又はその両方を識別することができるか、又はそれらに基づくことができる。2つの要素又はプログラム間の静的依存関係は、コンピュータプログラムに関連付けられた、以前に記憶されたパラメータセット内の値によって定義される依存関係である。コンピュータプログラムの要素間又はコンピュータプログラム間の静的依存関係は、記憶されたパラメータセット内の値の静的分析によって識別される。2つの要素又はコンピュータプログラム間のランタイム依存関係は、コンピュータプログラムのうちの1つの実行時に定義されるが、静的分析からは明らかでない依存関係である。コンピュータプログラム200がデータレコードを処理するために実行されるとき、実行コマンドは、例えば、静的従属関係を定義する、以前に記憶されたパラメータセット内のパラメータ値に加えて、又はその代わりに、パラメータ値を含み得る。コンピュータプログラムの実行中に生成されるランタイムログは、例えば、実行されたノード、又はアクセスされたデータリソースを示す、これらのパラメータ値を示す。コンピュータプログラムの要素間又はコンピュータプログラム間のランタイム依存関係は、ランタイムログに示されるパラメータ値の分析によって識別される。
【0039】
静的分析及びランタイム分析の更なる説明は、米国特許出願公開第2016/0019057号及び同第2016/0019057号に見出すことができ、その両方の内容は、参照することによってその全体が本明細書に組み込まれる。
【0040】
コンピュータプログラム200のアーキテクチャは、データソースの特性、データターゲットの特性、コンピュータプログラムを実行する(例えば、データレコードのフィールドに含まれるデータを処理する)ように構成されている、1つ以上のプロセッサの特性、又はコンピュータプログラムアーキテクチャの他の特徴を含む。データソース又はデータターゲットの特性評価は、データソース若しくはデータターゲットの名前、データソース若しくはデータターゲットのタイプ(例えば、データベース、ファイル、キューなど)、データソース若しくはデータターゲットの実際の位置(例えば、物理ファイル又はデータセットのパス)、又はデータソース若しくはデータターゲットのパラメータ化された位置を含み得る。パラメータ化された位置は、コンピュータプログラムの実行時に、実際のデータソース又はデータターゲットのパス、例えば、物理ファイル又はデータセットのパスに解決する表現である。例えば、データソース又はデータターゲットなどデータセットは、パラメータ化されたパス/${FEED}/inv_${DATE}.datによって特徴付けられ得る。実行時に、コンピュータプログラムは、パラメータ化されたパスを特定の物理的位置に解決することができるように、FEEDパラメータ及びDATEパラメータの値を受信する。特性評価は、多数のデータソース又はデータターゲット、例えば、ローカル及び/又はクラウドベースのデータソース又はデータターゲットの識別又は指示を含み得る。1つ以上のプロセッサの特性評価は、プロセッサの数、分散処理方式用のレイアウト(例えば、処理動作用のパーティショニング方式の指示)、1つ以上のプロセッサの各々の位置、1つ以上のプロセッサごとのターゲット若しくは実際の電力消費、又は他の特性を含み得る。
【0041】
コンピュータプログラム200の動作は、コンピュータプログラムの実行時に実行されるコンピュータプログラムのプロセス、例えば、データレコードのフィールドに含まれるデータを処理するために実行されるプロセスを含む。コンピュータプログラムのプロセスは、例えば、ファイル転送動作、ソート動作、フィルタ動作、結合動作、及び他の適切な動作を含み得る。
【0042】
システム230は、コンピュータプログラム200に対して行われる更新の特性評価222を受信する修正モジュール220を含む。更新の特性評価222は、ユーザインターフェース224、例えばプログラム開発インターフェースを介してユーザから受信され得る。更新は、コンピュータプログラム200が更新に従って修正されて、修正されたコンピュータプログラム204を生成すると、修正されたコンピュータプログラム204の少なくとも一部が、第2のコンピューティングシステム203上でホストされ、第2のコンピューティングシステム203によって実行されるように構成されているように、コンピュータプログラム200に対して行われる修正である。更新の特性評価の例は、以下のうちの1つ以上を含む。
●修正されたコンピュータプログラムの少なくとも一部に対して実装される分散処理方式の特性評価、例えば、パーティショニングの特性評価(例えば、修正されたコンピュータプログラムの少なくとも一部に対する処理動作の幅の変更、又はデータレコードが多数の処理ストリームの各々にパーティショニングされる規則の変更(例えば、顧客番号に基づいたパーティショニングから製品番号に基づいたパーティショニングへの変更)。
●修正されたコンピュータプログラム204のデータソース、データターゲット、若しくはその両方の変更(例えば、それぞれコンピュータプログラム200のデータソース若しくはデータターゲットとは異なる、1つ以上のデータソース若しくはデータターゲットの識別)、又は、データソース、データターゲット、若しくはその両方の数の変更(例えば、ローカルデータターゲットからクラウドベースのデータターゲットへの変更、若しくはローカルターゲット及びクラウドベースのデータターゲットの組み合わせへの変更)。
●修正されたコンピュータプログラムによって実装されるファイル転送プロトコルのタイプの変更(例えば、従来のファイル転送プロトコル(File Transfer Protocol、FTP)からセキュアファイル転送プロトコル(Secure File Transfer Protocol、SFTP)への変更)。
●修正されたコンピュータプログラム204によって受信されるか、又は処理されるデータレコード内の個人識別情報(PII)をマスクするための要件の導入。
【0043】
修正モジュール220は、更新222をコンピュータプログラム200の特性評価211と結合し、その結果をコンピュータプログラム200に適用することによって更新222を実施し、それによって修正されたコンピュータプログラム204を生成する。コンピュータプログラム200を修正することは、コンピュータプログラム200の系統、コンピュータプログラムのアーキテクチャ、コンピュータプログラム200の動作、又はそれらの任意の2つ以上の組み合わせを修正することを含む。いくつかの例では、コンピュータプログラム200を修正することは、コンピュータプログラム200自体を直接修正して、修正されたコンピュータプログラム204を生成することを含む。いくつかの例では、コンピュータプログラムを修正することは、コンピュータプログラム200のコピーを生成することと、コピーを修正して、修正されたコンピュータプログラム204を生成することと、を含む。
【0044】
コンピュータプログラム200がデータフローグラフである場合、修正は、データ処理コンポーネントのパラメータの値若しくは表現又はデータフローグラフのリンクを修正することを含み得る。修正は、システム203の特性(例えば、ハードウェア特性)を説明するなどのために、新しいデータ処理コンポーネント若しくはリンクを追加すること、新しいデータ処理コンポーネント若しくはリンクを削除すること、又はその組み合わせを含み得る。例えば、コンピュータプログラム200内の第1のデータ処理コンポーネントを第2のデータ処理コンポーネントに置換するために、第1のデータ処理コンポーネント及びその関連リンクが削除され、新しいデータ処理コンポーネント及び適切なリンクが追加される。
【0045】
いくつかの例では、修正モジュール220は、更新の特性評価をユーザから受信すると、修正されるコンピュータプログラム200のコンポーネントを自動的に識別し、更新を実施する。例えば、更新の特性評価222は、修正される元のコンピュータプログラム200内のコンポーネントの特性を識別することができ、当該特性を満たすコンポーネントの修正方法を指定することができる。修正モジュール220は、コンピュータプログラム200の特性評価211に基づいて、以下で更に詳細に説明する検索及び置換プロセスを実施して、特性を満たすコンポーネントを識別し、それらの識別されたコンポーネントを適切に修正された置換コンポーネントに置換する。特定の例では、更新の特性評価は、特定の位置パラメータ(例えば、ローカルデータ記憶位置へのパス)を有する元のコンピュータプログラム200内の全データターゲットが、異なる位置パラメータ(例えば、クラウドベースのデータ記憶位置へのパス)を有するように修正されることを示す。修正モジュール222は、指定された位置パラメータを有する全てのデータターゲットコンポーネントを検索し、それらを異なる位置パラメータを有するデータターゲットコンポーネントに置換する。
【0046】
いくつかの例では、ユーザによって提供される更新の特性評価222は、修正されるか、若しくは修正の影響を受けるコンポーネントを識別するか、又は当該コンポーネントを示し、修正モジュール220は、それらのコンポーネントの更新を実施する。例えば、更新の特性評価222は、プロセスセットを識別することができ、当該プロセスセットが修正される方法を指定することができる。コンピュータプログラム200の特性評価211に基づいて、修正モジュール220は、更新されるべきコンポーネントを識別することができる。特定の例では、更新の特性評価は、修正されたコンピュータプログラム内の分散処理方式に従って実行されるべきプロセスのセットの識別を含む。修正モジュール220は、コンピュータプログラム200のアーキテクチャ及び動作の特性評価211に基づいて、それらのプロセスに対応するコンポーネントを識別し、以下でより詳細に説明するように、ユーザによって識別されたコンポーネントの上流にパーティションコンポーネントを挿入し、ユーザによって識別されたコンポーネントの下流に収集コンポーネントを挿入する。
【0047】
いくつかの例では、更新の特性評価222は、全ての個人識別情報(PII)が、第2のコンピュータシステム203において、より小さい保護データセキュリティ環境を占めるようにするなどのために、システム203に提供される前のトークン化プロセスにおいて匿名化されることを規定することができる。トークン化プロセスは、例えば、PIIの数値形式から、得られるトークン向けの英数字形式への形式の変更をもたらし得る。修正モジュール220は、コンピュータプログラム200のデータ系統特性評価に基づいて、形式の変更を説明するためにレコード形式が更新されるべきコンポーネントを識別し得る。
【0048】
図3は、コンピュータプログラム300及び修正されたコンピュータプログラム304の例を示す。コンピュータプログラム300は、分散処理方式を実装せず、更新に従って修正されて、第2のコンピューティングシステムの特性を説明するために、修正されたコンピュータプログラム304の一部302において分散処理方式を実装する。分散処理方式は、多数のプロセッサが使用されてコンピュータプログラムを実行するアーキテクチャである。いくつかの例では、多数のプロセッサは、異なるコンピューティングデバイス上に位置し得る。例えば、プロセッサのうちの1つ以上は、プライバシー規制に準拠するものなどローカルコンピュータに位置し得、1つ以上の他のプロセッサは、クラウドベースのプロセッサであり得る。分散コンピューティング方式は、以下のこと、例えば、効率的な処理を実現すること、順応性及び拡張能力を導入すること、個人識別情報(PII)など機密データのクラウドベースの処理を禁止し得るプライバシー規制への準拠を維持しつつ、又は他の理由で、クラウドベースシステムへのコンピュータプログラムの移行を実現することのために使用され得る。
【0049】
修正されたコンピュータプログラム304における分散処理方式の実装は、コンピュータプログラム300のレイアウトを修正して、分散処理方式によって指定されるように処理動作の分散を実装することを含み得る。修正は、パーティショニング動作を実施する第1の新しいデータ処理コンポーネント306の仕様を生成することを含む。パーティショニングコンポーネント306は、例えば、上流コンポーネント310と分散処理部分302の第1のコンポーネント312との間など、分散処理を実装する修正されたコンピュータプログラム304の一部302の上流で修正されたコンピュータプログラム304に挿入される。上流コンポーネント310を元のコンピュータプログラム300内の第1のコンポーネント312に接続するリンクは削除され、パーティショニングコンポーネント306をコンポーネント310、312に接続するために2つの新しいリンクが生成される。更に、修正は、収集動作を実施する第2の新しいデータ処理コンポーネント308の仕様を生成することを含む。収集コンポーネント308は、例えば、分散処理部分302の最終コンポーネント314と下流のコンポーネント316との間など、分散処理を実装する修正されたコンピュータプログラム304の一部302の下流で修正されたコンピュータプログラム304に挿入される。最終コンポーネント314を元のコンピュータプログラム300内の下流コンポーネント316に接続するリンクは削除され、収集コンポーネント308をコンポーネント314、316に接続するために2つの新しいリンクが生成される。
【0050】
いくつかの例では、元のコンピュータプログラムは既に分散処理方式を実装しており、更新は分散処理方式のパーティショニングに対する変更である。変更は、並列ストリームの数の変更であり得る(例えば、元のコンピュータプログラムは、N個の並列ストリームを実装し、更新は、M個の並列ストリームへの変更である)。変更は、データレコードがパーティショニングされる方法の変更であり得る。例えば、元のコンピュータプログラムは、データレコードに含まれるデータの第1の特性に基づいてデータレコードのパーティショニングを実施することができ(例えば、データレコードは顧客番号に従ってパーティショニングされ得る)、修正されたコンピュータプログラムは、データの異なる特性に基づいてデータレコードのパーティショニングを実施し得る(例えば、データレコードは、製品番号に従ってパーティショニングされ得る)。変更は、分散プロセッサの位置の変更であり得る。例えば、元のコンピュータプログラム及び修正されたコンピュータプログラムの両方は、同数の並列ストリームを実装し得るが、元のコンピュータプログラムによる処理はローカルプロセッサによって実行され、修正されたコンピュータプログラムによる処理はクラウドベースのプロセッサによって実行される。
【0051】
一例では、分散処理方式を導入するためのコンピュータプログラム300の修正は、以下のように実行される。コンピュータプログラム300の系統、アーキテクチャ及び動作は、自動分析プロセスにおいて特性評価される。ユーザは、分散処理方式に従って実施される1つ以上のプロセスを識別する入力と、パーティショニングの特性、例えば、並列ストリームの数及び分散処理方式の一部を実行するプロセッサごとの位置(例えば、パス)を識別する入力と、を提供する。入力の特性評価は、コンピュータプログラム300の系統、アーキテクチャ、及び動作の特性評価と結合され、修正されたコンピュータプログラム304が生成される。例えば、ユーザ入力において識別された1つ以上のプロセスに共に対応するコンピュータプログラムのコンポーネントのセットが識別され、パーティションコンポーネント及び収集コンポーネントが、識別されたコンポーネントのセットの上流及び下流にそれぞれ挿入される。
【0052】
図4は、コンピュータプログラム400、及びデータソースを変更するように修正された、修正されたコンピュータプログラム404の例を示す。コンピュータプログラム400は、第1のリンク408によってコンピュータプログラム400の処理コンポーネント406に接続されたデータソースコンポーネント402に対応する第1のデータソース(この例では、データベース)からデータレコードを受信する。更新はデータレコードのソースを変更し、その結果、修正されたコンピュータプログラム404は、第2のリンク412によって処理コンポーネント406に接続されたデータソースコンポーネント410で表される第2のデータソースからデータレコードを受信する。
図4の例では、データソースコンポーネント402に対応する第1のデータソースはデータベースであり、第2のデータソースはファイルシステムであり、データソースコンポーネント410は、Hadoop分散ファイルシステム(Hadoop Distributed File System、HDFS)から読み出すように構成されたコンポーネントである。他のタイプのデータソースが、コンピュータプログラム400、第2のコンピュータプログラム404、又はその両方に使用され得る。いくつかの例では、両データソースは同一タイプのデータソースであり得、データソースの名前又は位置(例えば、パス)などの属性は変更され得る。
【0053】
いくつかの例では、データソースコンポーネント410は、データソースの特性、例えば、データソースの名前又はパス(例えば、位置)の変更、例えば、ローカルデータソースからクラウドベースのデータソースへの変更を除いて、データソースコンポーネント402と同一であり得る。例えば、データソースコンポーネント402のパラメータを変更して、データソースコンポーネント410を得ることができる。いくつかの例では、コンピュータプログラムに対する修正は、データソースコンポーネント402及び第1のリンク408を削除することと、データソースコンポーネント410及び第2のリンク412を追加して、新たに追加されたデータソースコンポーネント410を処理コンポーネント406に接続することと、を含み、新たに追加されたデータソースコンポーネント410は、修正されたコンピュータプログラム404のデータソースを表す。
【0054】
一例では、データソースを変更するためのコンピュータプログラム400の修正は、以下のように実行される。コンピュータプログラム400の系統、アーキテクチャ及び動作は、自動分析プロセスにおいて特性評価される。ユーザは、データソースに対する変更を示す入力、例えば、修正されたコンピュータプログラム内の異なるデータソースパスに変更されるコンピュータプログラム内のデータソースパスの識別を提供する。入力の特性評価は、コンピュータプログラム400の系統、アーキテクチャ、及び動作の特性評価と結合され、修正されたコンピュータプログラム404が生成される。例えば、検索及び置換プロセスは、ユーザ入力において指定されたデータソースパスに一致するデータソースを識別し、対応するデータソースコンポーネントを、異なるデータソースパスを有するデータソースを表す新しいデータソースコンポーネントに置換するために実行される。
【0055】
図5は、コンピュータプログラム500、及びデータターゲットを変更するように修正された、修正されたコンピュータプログラム504の例を示す。コンピュータプログラム500は、第1のリンク508によってコンピュータプログラム500の処理コンポーネント506に接続されたデータターゲットコンポーネント502で表される第1のデータターゲット(この例では、データベース)に処理されたデータレコードを出力する。更新は処理されたデータレコードのターゲットを変更し、その結果、修正されたコンピュータプログラム504は、第2のリンク512によって処理コンポーネント506に接続されたデータターゲットコンポーネント510で表される第2のデータターゲット(この例では、ファイルシステム)に対して処理されたデータレコードを出力する。処理コンポーネント506は、コンピュータプログラム500と修正されたコンピュータプログラム504との間で同一コンポーネントとして示されているが、いくつかの例では、処理コンポーネントは、2つのコンピュータプログラム間で異なり得る。
【0056】
いくつかの例では、データターゲットコンポーネント510は、データターゲットの特性、例えば、データターゲットの名前又はパス(例えば、位置)の変更、例えば、ローカルデータターゲットからクラウドベースのデータターゲットへの変更を除いて、データターゲットコンポーネント502と同一であり得る。いくつかの例では、コンピュータプログラムに対する修正は、データターゲットコンポーネント502及び第1のリンク508を削除することと、データターゲットコンポーネント510及び第2のリンク512を追加して、新たに追加されたデータターゲットコンポーネント510を処理コンポーネント506に接続することと、を含み、新たに追加されたデータターゲットコンポーネント510は、修正されたコンピュータプログラム504のデータターゲットを表す。
【0057】
いくつかの例では、データターゲットは、異なるタイプのファイル転送プロトコルであり得、例えば、データターゲットコンポーネント502は、第1のタイプのファイル転送プロトコルを実装し得、データターゲットコンポーネント510は、第2のタイプのファイル転送プロトコル、例えば、セキュアftpプロトコルを実装する。
【0058】
一例では、データターゲットを変更するためのコンピュータプログラム500の修正は、以下のように実行される。コンピュータプログラム500の系統、アーキテクチャ及び動作は、自動分析プロセスにおいて特性評価される。ユーザは、データターゲットに対する変更を示す入力、例えば、修正されたコンピュータプログラム内の異なるデータターゲットパスに変更されるコンピュータプログラム内のデータターゲットパスの識別を提供する。入力の特性評価は、コンピュータプログラム500の系統、アーキテクチャ、及び動作の特性評価と結合され、修正されたコンピュータプログラム504が生成される。例えば、検索及び置換プロセスは、ユーザ入力において指定されたデータターゲットパスに一致するデータターゲットを識別し、対応するデータターゲットコンポーネントを、異なるデータターゲットパスを有するデータターゲットを表す新しいデータターゲットコンポーネントに置換するために実行される。
【0059】
コンピュータプログラムは、出力データレコードのデータターゲットを変更して、クラウドベースのファイルシステム又はデータベースなどクラウドベースのデータストレージにおけるデータの記憶に関する制限に準拠するように修正され得る。例えば、プライバシー規則は、個人識別情報(PII)を含むデータレコードなど特定の特性を有する特定のデータがクラウドベースのデータストレージに記憶されないこと、また他のデータはクラウドベースのデータストレージに記憶されることを規定し得る。
【0060】
PIIを含むデータレコードを受信することになるコンピュータプログラム500内のデータターゲットの識別は、データ系統分析によって、場合によってはセマンティックディスカバリ分析と組み合わせて実行され得る。
【0061】
データ系統は、データフローグラフなど、コンピュータプログラムによって処理されるデータレコードのライフサイクルを記述する情報である。所与のデータレコードのデータ系統情報としては、所与のデータレコードが依存する1つ以上のデータレコードの識別子、所与のデータレコードに依存する1つ以上の下流データレコード、データレコードを処理して所与のデータレコードを生成するコンピュータプログラムの1つ以上のコンポーネント、及び所与のデータレコード又は所与のデータレコードに依存するデータレコードを処理するコンピュータプログラムの1つ以上のコンポーネントが挙げられる。上流データレコードに依存する下流データレコードとは、コンピュータプログラムによる上流データレコードの処理が、直接的又は間接的に下流データレコードの生成をもたらすことである。生成された下流データレコードは、コンピュータプログラムから出力されるデータレコード(出力データレコードと呼ばれることもある)であり得るか、コンピュータプログラムによって更に処理されるデータレコード(中間データレコードと呼ばれることもある)であり得る。上流データレコードは、コンピュータプログラムへのデータレコード入力(入力データレコード又は基準データレコードと呼ばれることもある)であり得るか、又はコンピュータプログラムによる処理を既に受けたデータレコード(中間データレコードと呼ばれることもある)であり得る。データ系統分析は、所与のデータレコードに依存する、又は所与のレコードが依存するデータレコードを識別し、データレコードを処理して所与のデータレコードを生成する、所与のデータレコードを処理する、又は所与のデータレコードに依存するデータレコードを処理するコンピュータプログラムのコンポーネントを識別するためのコンピュータプログラムの分析である。
【0062】
PIIを含むデータレコードがクラウドベースのシステムに記憶されないか、又はクラウドベースのシステムによって処理されないことを確実にする特定の例では、データ系統分析が実行されて、PIIを含むデータレコードを処理するコンポーネント、又はPIIを含むデータレコードを受信するデータターゲットを識別することができる。これらのデータターゲットは、ローカルデータターゲットのままでいることができ、これらのコンポーネントは、ローカルプロセッサを使用して実装され得る。
【0063】
いくつかの例では、PIIを含むデータレコードは、セマンティックディスカバリプロセスにおいて自動的に識別される。セマンティックディスカバリの更なる説明は、米国特許出願公開第2020/0380212号に見出すことができ、その内容は、参照によりそれらの全体が本明細書に組み込まれる。
【0064】
図6は、コンピュータプログラム600、及び処理されたデータレコードを多数のデータターゲットに出力するように修正された、修正されたコンピュータプログラム604の例を示す。コンピュータプログラム600は、第1のリンク608によってコンピュータプログラム600の処理コンポーネント606に接続されたデータターゲットコンポーネント602で表される第1のデータターゲット(この例では、データベース)に処理されたデータレコードを出力する。更新は、第1のデータターゲットを削除し、データフローを複製するための複製コンポーネント614、及びそれぞれの第2のリンク612a~612cによって処理コンポーネント606に接続されたデータターゲットコンポーネント610a~610cで各々表される、多数の第2のデータターゲット(この例では、多数のデータベース)を導入する。第2のデータターゲットの少なくとも1つは、他の第2のデータターゲットの位置とは異なる位置にあり得る。いくつかの例では、第2のデータターゲットのうちの1つは第1のデータターゲットと同一であり、追加のデータターゲットが追加されている。いくつかの例では、第2のデータターゲットの全てが、第1のデータターゲットとは異なる。いくつかの例では、処理されたデータレコードを多数のデータターゲットに出力するコンピュータプログラムが、処理されたデータレコードを単一のデータターゲットにのみ出力するように修正され得るように、反対の修正が行われ得る。ファイルシステムなど他のタイプのデータターゲットが、コンピュータプログラム600、修正されたコンピュータプログラム604、又はその両方に使用され得る。
【0065】
いくつかの例では、コンピュータプログラムに対する修正は、データターゲットコンポーネント602及び第1のリンク608を削除することと、データターゲットコンポーネント610a~610c及び第2のリンク612a~612cを追加して、新たに追加されたデータターゲットコンポーネント610a~610cを処理コンポーネントに接続することと、を含む。例えば、データターゲットコンポーネントのうちの1つ(例えば、コンポーネント610a)及びその対応するリンク(例えば、リンク612a)が追加される。次に、コンポーネント610a及びリンク612aが複製されて、他のデータターゲットコンポーネント610b、610cを生成し、接続する。次に、データターゲットコンポーネント610b、610cのパラメータが変更されて、それぞれのデータターゲットを参照する。
【0066】
図7は、コンピュータプログラム700及び修正されたコンピュータプログラム704の例を示す。コンピュータプログラム700のコンポーネント706は、第1のパラメータセット710に従って処理を実施する。更新は、プロセスが第2の(異なる)パラメータセット712に従って実施されるようにコンポーネント706を修正する。修正は、コンピュータプログラム700を分析して、特定のパラメータ、パラメータ表現、又はパラメータ値を含むデータ処理コンポーネントを識別することを含む。いくつかの例では、例えば、識別されたコンポーネントのパラメータセット710内の1つ以上のパラメータの値又は表現を変更することによって、識別されたコンポーネントの仕様が修正され、修正されたパラメータセット712を有する修正されたコンポーネント708が生成される。いくつかの例では、識別されたコンポーネント706は削除され、異なるパラメータセットを有する新しいコンポーネント708によって置換される。
【0067】
図8は、コンピュータプログラム800及び修正されたコンピュータプログラム804の例を示す。コンピュータプログラム800は、ローカルコンピュータシステム上で実行されるために構成されており、修正されたコンピュータプログラム804は、修正されたコンピュータプログラム804の少なくとも一部の実行がクラウドベースのシステム上で行われるように構成されている。クラウドベースのシステムにおけるPIIに関する制限、例えば、クラウドベースのシステムにおけるPIIの処理又は記憶の禁止に準拠するために、コンピュータプログラムは、コンピュータプログラム800によって受信され、処理されたデータレコード内の全てのPIIが、クラウドベースのシステムに到達する前に、修正されたコンピュータプログラム804によって匿名化されるように修正される。
【0068】
コンピュータプログラム800の修正は、コンピュータプログラムを分析して、データソースコンポーネント810によって表されるデータソースから、PIIを含む1つ以上のフィールドを有するデータレコードを受信し、当該データレコードを処理するように構成されているデータ処理コンポーネント(例えばコンポーネント806)を識別することを含む。分析は、例えば、セマンティックディスカバリ分析と組み合わせて実行される、データ系統分析であり得る。コンポーネント806は、修正されたコンピュータプログラム804の修正されたコンポーネント808が、例えば上述のようにクラウドベースのコンピューティングシステム上で実行されるように構成されているように修正される。加えて、新しいコンポーネント812が、データソース810とコンポーネント806との間に追加され、その結果、新しいコンポーネントは、データソース810からデータレコードを受信し、データレコードをコンポーネント808に出力する。コンポーネント812は、ローカル(例えば、非クラウドベースの)コンピュータシステム上で実行されるように構成されており、例えば、PIIをトークンに置換することによって、データソース810から受信したレコードのフィールドに含まれるPIIを匿名化するように構成されているトークン化サービスを実施する。トークンは、トークン化システムを介してPIIに再マップされるが、修正されたコンピュータプログラム804の他の処理動作が行われるクラウドベースのシステムにPII自体が提供されないことを確実にする。
【0069】
いくつかの例では、トークンは、PIIとは異なる形式を有する。例えば、PIIが社会保障番号である場合、PIIは9桁の数字であるが、トークンは異なる桁数の英数字値であり得る。トークンの形式がPIIの形式と異なる場合、コンポーネント808は、コンポーネント808によって処理されるデータレコードのレコード形式の定義を変更して、コンポーネント808がトークンの形式と互換性のあるように修正される。場合によっては、他の下流コンポーネントも、異なるレコード形式のデータレコードを処理するように適宜修正される。
【0070】
いくつかの例では、コンピュータプログラム800から出力されたデータレコードがPIIを含む場合、修正されたコンピュータプログラム804から出力されたデータレコードは、PIIのそれぞれのトークンを含む。いくつかの例では、修正されたコンピュータプログラム804に、例えばデータターゲットのすぐ上流に、トークン化解除コンポーネントが追加されて、ローカルコンピュータシステム上で実行されるプロセスにおいてデータレコードにPIIが再導入される。トークン化解除コンポーネントは、トークン化コンポーネント812が追加される方法と同様のプロセスで追加される。
【0071】
いくつかの例では、更新されるコンポーネントは、検索及び置換プロセスにおいて自動的に識別され、置換される。検索及び置換プロセスは、特定のコンピュータプログラムに適用されると、コンピュータプログラムのコンポーネントを検索し、それらの属性を取得する検索機能、ターゲット属性(例えば、更新のユーザの特性評価において置換をトリガする属性として識別された属性)に一致する属性を有するコンポーネントをフィルタリングするフィルタ機能、各置換の実行方法を記述する再フォーマット機能、及び置換を実行する置換機能を実施する。
【0072】
図9は、検索及び置換プロセスを実施するデータフローグラフ900の例を示す。
図9の例では、検索及び置換プロセスは、入力ファイルを、Hadoop分散ファイルシステム(HDFS)から読み取るように構成可能なコンポーネントに置換する。データフローグラフ900の第1の処理コンポーネント902は、入力コンポーネント904からデータレコードを受信する。データレコードは、置換が実行されるコンピュータプログラム(例えば、データフローグラフ)の識別、置換されるコンポーネントの属性、及び置換コンポーネントの記述など置換プロセスのための命令を提供する。
【0073】
第1の処理コンポーネント902は、コンピュータプログラムのコンポーネントの全てを検索し、それらの属性を取得する検索コンポーネントである。検索コンポーネント902は、データレコードのセットをフィルタコンポーネント906に渡し、各レコードは、置換が実行されるコンピュータプログラムの1つのコンポーネントに対応する。各レコードは、それぞれのコンポーネントの識別子(例えば、コンピュータプログラムの識別、コンポーネントのパスなどの識別子)と、コンピュータプログラムのそれぞれのコンポーネントの属性のリストと、を含む。
【0074】
フィルタコンポーネント906は、検索コンポーネント902から受信したデータレコードをフィルタリングして、ターゲット属性(例えば、更新のユーザの特性評価において置換をトリガする属性として識別された属性)に一致する属性を有するコンポーネントに対応するレコードを保持する。この例では、フィルタコンポーネント906は、データレコードをフィルタリングして、入力ファイルを表すコンポーネントに対応するデータレコードのみを保持する。保持されたデータレコードは、再フォーマットコンポーネント908に渡される。
【0075】
再フォーマットコンポーネント908は、フィルタコンポーネント906から受信したレコードに対応するコンポーネントの各々を置換する置換コンポーネントを記述するレコードを作成する。これらのレコードは、以下のデータの一部又は全体を含み得る。
-置換が実行されるコンピュータプログラム(例えば、データフローグラフ)の識別。
-置換されるコンピュータプログラムのコンポーネントの識別(例えば、パス)。
-新しい置換コンポーネントに対する識別(例えば、パラメータ化されたパス)。
-新しい置換コンポーネントの名前。
-置換コンポーネントのポートの名前のリスト(例えば、ベクトル)。
-置換されるコンポーネントのポートの名前に対する置換コンポーネントのポートの名前のマッピング。
-置換コンポーネントのパラメータの名前のリスト(例えば、ベクトル)。
-置換されるコンポーネントのパラメータの名前に対する置換コンポーネントのパラメータの名前のマッピング。
-置換されるインスタンス値のリスト(例えば、ベクトル)。
【0076】
再フォーマットコンポーネント908からの出力であるレコードは、置換を特性評価する。これらのレコードは、レコードによって示される各コンポーネントの置換を実施する置換コンポーネント910に提供される。置換動作のログは、ログファイル912に出力される。
【0077】
図10A及び
図10Bは、元のデータフローグラフ150、並びに自動検索及び置換プロセスを使用して更新されて、コンポーネント154として表される入力ファイルをREAD HDFSコンポーネント156に置換する修正データフローグラフ152の例を示す。
【0078】
いくつかの例では、修正されたコンピュータプログラムは、修正されたコンピュータプログラムの動作を検証するために、リリース前にテストされる。例えば、修正されたコンピュータプログラムは、入力データレコードの同一セットについて、元のコンピュータプログラムによって出力されるデータレコードと同一であるデータレコードを出力することが期待され得る。テストすることは、元のコンピュータプログラム及び修正されたコンピュータプログラムの両方に同一の入力データセットを提供することと、両コンピュータプログラムから処理されたデータレコードのそれぞれのセットを取得することと、を含み得る。処理されたデータレコードの2つのセットが比較される。処理されたデータレコードの2つのセットが一致する、例えば、同一である(例えば、閾値内で同一である)場合、修正されたコンピュータプログラムは、検証される。2つのプロセスデータレコードセットが一致しない場合、エラーメッセージが出力され、好ましくはエラーの解決方法を示すガイダンスを伴う。
【0079】
いくつかの例では、修正されたコンピュータプログラムの一部のみ、例えば、元のコンピュータプログラムに対して変更された、修正されたコンピュータプログラムの一部のみがテストされる。コンピュータプログラムの一部は、データフローグラフ内のフローに関連付けられたオブジェクトである挿入、例えばテストソース及びプローブを使用することによってテストされ得る。テストソースは、フローを通過するデータ(例えば、上流データ)を新しいデータに置換し、上流計算がコンピュータプログラムの実行ごとに再実行されることを不要にする。例えば、テストソースは、テストデータレコードがデータソースからではなくテストソースからグラフに提供されるように、データソースを置換することができる。プローブは、グラフの実行時にフローを通過するデータレコードを監視し、後の検査又は再利用のためにデータレコードが保存されるようにすることができる。例えば、プローブは、データベースなどデータターゲットに別様に保存されていたであろうデータレコードを受信することができる。データソース及びターゲット以外のデータフローグラフ内の位置に挿入を導入することもでき、グラフ開発者は、データレコードがグラフを通過するときにデータレコードにアクセスすることができる。挿入を使用することによって、入力データレコードセットは、修正されたコンピュータプログラムの一部のすぐ上流で元のコンピュータプログラム及び修正されたコンピュータプログラムに提供されることができ、処理されたデータレコードは、修正された部分のすぐ下流で取り出されることができる。挿入の使用は、コンピュータプログラム全体よりも少ない部分がテスト中に実行されるという点で、より効率的なテストを可能にすることができる。挿入の更なる説明は、「Debugging a Graph」と題する米国特許第10,055,333号、及び「Application Testing」と題する同第9,880,818号に見出すことができ、その両方の内容は、参照によりそれら全体が本明細書に組み込まれる。
【0080】
図11を参照すると、コンピュータプログラムを更新するための例示的なプロセスにおいて、コンピュータプログラムが受信される(150)。コンピュータプログラムは、実行されるとデータソースからデータレコードを受信し、データレコードのフィールドに含まれるデータを処理し、処理したデータレコードをデータターゲットに出力するように構成されている。コンピュータプログラムは、データレコードのフィールド内の値を処理するように構成されたデータ処理コンポーネントを含むデータフローグラフであり得、データ処理コンポーネントは、データレコードのフローを表すリンクによって接続されている。
【0081】
コンピュータプログラムは、1つ以上のプロセッサによって分析されて、コンピュータプログラムの系統、アーキテクチャ、及び動作の特性評価を取得する(152)。分析は、コンピュータプログラムの静的分析、コンピュータプログラムのランタイム分析、コンピュータプログラムのスケジュール分析、コンピュータプログラムのデータ系統分析、コンピュータプログラムのセマンティックディスカバリ分析、又は他のタイプの分析を含み得る。コンピュータプログラムの系統は、コンピュータプログラムの要素間の関係、及び任意選択的にコンピュータプログラムと他のコンピュータプログラムとの関係を含む。コンピュータプログラムのアーキテクチャは、データソースの特性、データターゲットの特性、及びデータレコードに含まれるデータを処理するように構成された1つ以上のプロセッサの特性を含む。コンピュータプログラムの動作は、データレコードからのデータを処理するために実行されるコンピュータプログラムのプロセスを含む。
【0082】
コンピュータプログラムに対して行われる更新の特性評価は、例えば、ユーザインターフェースへのユーザ入力によって受信される(154)。更新は、コンピュータプログラムが更新に従って修正されるときに、修正されたコンピュータプログラムの少なくとも一部が、クラウドベースのシステムなど第2のコンピューティングシステム上でホストされ、第2のコンピューティングシステムによって実行されるように構成されるような更新である。
【0083】
コンピュータプログラムは修正されて更新を実施し、それによって修正されたコンピュータプログラムを生成する(156)。修正は、コンピュータプログラムの系統、コンピュータプログラムのアーキテクチャ、又はコンピュータプログラムの動作のうちの1つ以上を修正すること含む。修正は、更新の特性評価を、コンピュータプログラムの系統、アーキテクチャ、及び動作の特性評価とマージすることを含み得る。
【0084】
コンピュータプログラムがデータフローグラフである場合、コンピュータプログラムを修正することは、データ処理コンポーネントのパラメータの値若しくは表現又はコンピュータプログラムのリンクを修正すること、新しいデータ処理コンポーネント若しくはリンクを追加すること、データ処理コンポーネント若しくはリンクを削除すること、又は他の適切な修正を含み得る。
【0085】
修正されたコンピュータプログラムの少なくとも一部がテストされる(158)。テストすることは、入力テストデータレコードを修正されたコンピュータプログラムの少なくとも一部に提供することと、第1の処理されたデータレコードを修正されたコンピュータプログラムの少なくとも一部から取得することと、を含む。テストすることはまた、修正されたコンピュータプログラムのテストされる部分に対応するコンピュータプログラムの少なくとも一部をテストすることを含み、入力テストデータレコードをコンピュータプログラムの少なくとも一部に提供することと、第2の処理されたデータレコードをコンピュータプログラムの少なくとも一部から取得することと、を含む。第1の処理されたデータレコード及び第2の処理されたデータレコードが比較される。テストすることは、コンピュータプログラムの各機能又は実質的に全ての機能をトリガして、処理されたデータレコードを出力として生成するテストデータを修正されたコンピュータプログラムに供給することを含み得る。
【0086】
図12を参照すると、データフローグラフを更新するための例示的なプロセスは、データフローグラフにアクセスすること(250)を含む。データフローグラフの仕様はノードを定義し、ノードのうちの少なくとも1つは、レコード形式を有するデータレコードの1つ以上のフィールド内のデータを処理するために実行される動作を定義するデータ処理コンポーネントを表し、データレコードはデータ処理コンポーネントに提供され、1つ以上のリンクはノードを接続し、各々がデータレコードのフローを表す。
【0087】
レコードの第1のセットが生成され、レコードの第1のセットはデータフローグラフを表す(252)。これは、データフローグラフのデータ処理コンポーネントの各々に対応するデータレコードを生成することを含み、各データレコードは、データ処理コンポーネントの識別子と、データ処理コンポーネントの属性の属性値と、を含む。
【0088】
データフローグラフに対する更新の特性評価が受信され(254)、更新の特性評価は、特定属性の目標値を示す。データレコードの第1のセットは、更新の特性評価によって示される目標値に基づいてフィルタリングされて、データレコードの第2のセットが取得される(256)。これは、フィルタリングによって、更新の特性評価によって示される目標値に一致する特定属性の属性値を含まないデータレコードを削除することを含む。
【0089】
データレコードの第2のセット内のデータレコードごとに、対応するコンポーネントが、更新の特性評価によって示される新しいコンポーネントに置換される(258)。
【0090】
図13は、本明細書に記載の技法が使用され得る、データフローグラフの開発及び実行のためのデータ処理システム850の例を示す。システム850は、ストレージデバイス又はオンラインデータストリームへの接続などの1つ以上のデータソースを含み得るデータソース852を含み、これらの各々は、様々なフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームコンピュータによって使用されるネイティブフォーマット)のいずれかでデータを記憶し得るか、又は提供し得る。データは、物流データ、分析データ、又は産業機械データであってもよい。実行環境又はランタイム環境854は、前処理モジュール856と、実行モジュール862と、を含む。実行環境854は、例えば、UNIXオペレーティングシステムのあるバージョンなど好適なオペレーティングシステムの制御下で、1つ以上の汎用コンピュータ上でホストされ得る。例えば、実行環境854は、ローカル(例えば、対称マルチ処理(symmetric multi-processing、SMP)コンピュータなどマルチプロセッサシステム)、又はローカル分散(例えば、クラスタ若しくは超並列処理(massively parallel processing、MPP)システムとして結合された多数のプロセッサ、あるいはリモート、又はリモート分散(例えば、ローカルエリアネットワーク(local area network、LAN)及び/若しくはワイドエリアネットワーク(wide-area network、WAN)を介して結合された多数のプロセッサ)、あるいはそれらの任意の組み合わせのいずれかの、多数の処理ユニット(中央処理ユニット(central processing unit、CPU)など)又はプロセッサコアを使用したコンピュータシステムの構成を含む、マルチノード並列コンピューティング環境を含み得る。
【0091】
データソース852を提供するストレージデバイスは、実行環境854に対してローカルであってもよく、例えば、実行環境854をホストするコンピュータに接続された記憶媒体(例えば、ハードドライブ858)上に記憶されてもよく、又は実行環境854に対してリモートにあってもよく、例えば、(例えば、クラウドコンピューティングインフラストラクチャによって提供される)リモート接続を介して実行環境854をホストするコンピュータと通信するリモートシステム(例えば、メインフレームコンピュータ860)上でホストされてもよい。
【0092】
前処理モジュール856は、データソース852からデータを読み取り、実行のためにデータ処理アプリケーション(例えば、実行可能データフローグラフ)を準備する。例えば、前処理モジュール856は、データ処理アプリケーションをコンパイルし、コンパイルしたデータ処理アプリケーションを、実行環境854にアクセス可能なデータ記憶システム866に及び/又はそれから記憶及び/又はロードし、実行するようにデータ処理アプリケーションを準備するために他のタスクを実行することができる。
【0093】
実行モジュール862は、前処理モジュール856によって準備されたデータ処理アプリケーションを実行して、データセットを処理し、処理から生じる出力データ864を生成する。出力データ864は、データソース852に再び記憶されてもよく、又は実行環境854にアクセス可能なデータ記憶システム866に再び記憶されてもよく、あるいは別様に使用されてもよい。データ記憶システム866はまた、開発者870が、実行モジュール862によって実行されるデータ処理アプリケーションを設計し、編集することができる、任意選択の開発環境868にアクセス可能である。開発環境868は、いくつかの実装形態では、(データ処理コンポーネント又はデータセットを表す)頂点間で(ワーク要素、すなわち、データのフローを表す)有向リンクによって接続された頂点を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境は、「Managing Parameters for Graph-Based Applications」と題する米国特許出願公開第2007/0011668号により詳細に記載されており、その内容は、参照によりそれらの全体が本明細書に組み込まれる。このようなグラフベースの計算を実行するためのシステムは、「Executing Computations Expressed as Graphs」と題する米国特許第5,966,072号に記載されており、その内容は、参照によりそれらの全体が本明細書に組み込まれる。このシステムに従って作成されたデータフローグラフは、プロセス間で情報を移動させ、プロセスの実行順序を定義するために、グラフ構成要素によって表される個々のプロセスに出入りする情報を取得するための方法を提供する。このシステムは、任意の利用可能な方法(例えば、グラフのリンクによる通信経路は、TCP/IP又はUNIXドメインソケットを使用するか、又は共有メモリを使用してプロセス間でデータを通過させることができる)から、プロセス間の通信方法を選択するアルゴリズムを含む。
【0094】
前処理モジュール856は、異なる形態のデータベースシステムを含む、データソース852を具現化し得る様々なタイプのシステムからデータを受信することができる。データは、場合によってはヌル値を含む、それぞれのフィールド(「属性」又は「列」とも呼ばれる)の値を有するレコードとして編成されてもよい。データソースからデータを最初に読み取るとき、前処理モジュール856は、典型的には、そのデータソース内のレコードに関する何らかの初期フォーマット情報で開始する。いくつかの状況では、データソースのレコード構造は最初に知られていなくてもよく、代わりに、データソース又はデータの分析後に判定されてもよい。レコードに関する初期情報としては、例えば、異なる値を表すビット数、レコード内のフィールドの順序、及びビットによって表される値のタイプ(例えば、ストリング、符号付き/符号なし整数)を挙げることができる。
【0095】
換言すれば、本明細書に記載の実行可能なデータフローグラフに概して適用可能なように、実行可能なデータフローグラフは、データ処理コンポーネントを介してデータソース852の1つ以上の入力データセットから1つ以上の出力データセットに流れるデータに対して実行されるグラフに基づく計算を実施し、データフローグラフは、データストレージ864内のデータ構造によって指定され、データフローグラフは、データ構造によって指定され、1つ以上のリンクによって接続されたデータ処理コンポーネントを表しているノードを有し、リンクは、データ構造によって指定され、データ処理コンポーネント間のデータフローを表す。実行環境又はランタイム環境854は、データストレージ864に結合され、1つ以上のコンピュータ上でホストされ、ランタイム環境854は、データフローグラフを指定する記憶されたデータ構造を読み取り、システムリソース(例えば、プロセス、メモリ、CPUなど)を割り振り、構成して、前処理モジュール856によってデータフローグラフに割り当てられたデータ処理コンポーネントの計算を実行するように構成された、前処理モジュール856を含み、ランタイム環境854は、データ処理コンポーネントの計算の実行をスケジュールし、制御するための実行モジュール862を含む。換言すると、1つ以上のコンピュータ上でホストされたランタイム又は実行環境854は、データソース852からデータを読み取り、データフローグラフの形態で表される実行可能なコンピュータプログラムを使用してデータを処理するように構成されている。
【0096】
上記の手法は、好適なソフトウェアを実行するコンピューティングシステムを使用して実装することができる。例えば、ソフトウェアは、1つ以上のプログラムされた又はプログラム可能なコンピューティングシステム(分散、クライアント/サーバ、又はグリッドなどの様々なアーキテクチャのものであってもよい)上で実行される1つ以上のコンピュータプログラムにおける手順を含んでもよく、コンピューティングシステムの各々は、少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又は記憶要素を含む)少なくとも1つのデータ記憶システム、(少なくとも1つの入力デバイス又はポートを使用して入力を受信し、少なくとも1つの出力デバイス又はポートを使用して出力を提供するための)少なくとも1つのユーザインターフェースを含む。ソフトウェアは、例えば、グラフの設計、構成、及び実行に関連するサービスを提供する、より大きいプログラムの1つ以上のモジュールを含んでもよい。プログラムのモジュール(例えば、グラフの要素)は、データリポジトリに記憶されたデータモデルに適合するデータ構造又は他の編成されたデータとして実装することができる。
【0097】
ソフトウェアは、(例えば、汎用又は専用のコンピューティングシステム又はデバイスによって読み取り可能な)CD-ROM又は他のコンピュータ可読媒体などの有形の非一時的媒体上に提供されてもよく、あるいは、ネットワークの通信媒体を介して、実行されるコンピューティングシステムの有形の非一時的媒体に送達され(例えば、伝搬信号中で符号化され)てもよく、そこにおいてそれが実行される。処理の一部又は全部は、専用コンピュータ上で実行されてもよく、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC)などの専用ハードウェアを使用して実行されてもよい。処理は、ソフトウェアによって指定される計算の異なる部分が異なる計算要素によって実行される、分散方式で実装されてもよい。このような各コンピュータプログラムは、好ましくは、汎用又は専用のプログラマブルコンピュータによってアクセス可能な記憶デバイスのコンピュータ可読記憶媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気若しくは光学媒体)に記憶されるか又はダウンロードされて、記憶デバイス媒体がコンピュータによって読み取られたとき、本明細書に記載の処理を実行するようにコンピュータを構成しかつ動作させる。本発明のシステムはまた、コンピュータプログラムで構成された有形の非一時的媒体として実装されるとみなされてもよく、そのように構成された媒体は、本明細書に記載の処理工程のうちの1つ以上を実行するために、コンピュータを特定の所定の方式で動作させる。
【0098】
いくつかの実施形態が説明されている。それにもかかわらず、本発明の趣旨及び範囲から逸脱することなく、様々な修正を行うことができることが理解されよう。例えば、上記の工程のうちのいくつかは、順序独立であってもよく、したがって、記載された順序とは異なる順序で実行することができる。
【0099】
他の実装形態も、以下の特許請求の範囲の範囲内である。
【国際調査報告】