(57)【要約】  方法は、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数を示すデータを受け取る工程と、各規則がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数の特定のフィールド各々の内容の基準を決定する工程と、内容の基準に基づいて特定のフィールド各々の内容を生成する工程と、特定のフィールド各々に、生成された内容を入れる工程とを含む。
2017500646.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定する工程と、
前記内容の基準に基づいて前記フィールド各々の内容を生成する工程と、
１つまたは複数のレコードの前記フィールド各々に、前記生成された内容を入れる工程と
を含む方法。
【請求項２】
内容を生成する工程が、前記フィールド各々についてのフォーマットの指定に基づいて内容を生成する工程を含む請求項１に記載の方法。
【請求項３】
前記フォーマットの指定が内容の種類を指示する請求項１または２に記載の方法。
【請求項４】
前記内容の種類が、ストリング、小数、整数、日付、または日時のうちの１つまたは複数を含む請求項３に記載の方法。
【請求項５】
ユーザインターフェースを通じて前記フォーマットの指定を受け取る工程を含む請求項２から４のいずれか一項に記載の方法。
【請求項６】
前記フィールドの１つまたは複数を含む新しいレコードを作成する工程と、
前記新しいレコードの前記フィールドに内容を入れる工程と
を含む請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記フィールド各々に前記生成された内容を入れる工程が、前記フィールドの１つまたは複数について、既に存在する内容に変更を加える工程を含む請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記フィールド各々に内容を入れる工程が、１つまたは複数の既に存在するレコードに特定のフィールドを作成する工程を含む請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記内容の基準が、目標値、目標とする値の範囲、目標とする値の分布、最大値、または最小値のうちの１つまたは複数を含む請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記内容の基準が、前記生成される内容について特定の値を含む請求項１から９のいずれか一項に記載の方法。
【請求項１１】
前記内容の基準が、前記１つまたは複数のフィールドの２つ以上に含める内容の組み合わせの目標を指示する請求項１から１０のいずれか一項に記載の方法。
【請求項１２】
ユーザインターフェースを通じて前記内容の基準を受け取る工程を含む請求項１から１１のいずれか一項に記載の方法。
【請求項１３】
内容を生成する工程が、生成モードに基づいて内容を生成する工程を含む請求項１から１２のいずれか一項に記載の方法。
【請求項１４】
前記生成モードが、（ｉ）複数のレコード各々の前記フィールドの１つまたは複数について、ランダムな内容を生成すること、（ｉｉ）複数のレコード各々の前記フィールドの１つまたは複数について、一意の内容を生成すること、および（ｉｉｉ）複数のレコード各々の前記フィールドの１つまたは複数のフィールドの内容を、利用可能な内容のセットから選択することのうち、１つまたは複数を含む請求項１３に記載の方法。
【請求項１５】
前記生成された内容を含む１つまたは複数のレコードを前記データ処理アプリケーションに提供する工程を含む請求項１から１４のいずれか一項に記載の方法。
【請求項１６】
特定の規則を前記データ処理アプリケーションによって実行させるように前記内容の基準が決定される請求項１から１５のいずれか一項に記載の方法。
【請求項１７】
前記内容の基準を決定する工程が、
実行された回数が最小閾値回数よりも少なかった特定の規則を特定する工程と、
前記特定の規則を少なくとも前記最小閾値回数実行させるように前記内容の基準を決定する工程と
を含む請求項１から１６のいずれか一項に記載の方法。
【請求項１８】
コンピュータシステムに、
１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定させ、
前記内容の基準に基づいて前記フィールド各々の内容を生成させ、
１つまたは複数のレコードの前記フィールド各々に、前記生成された内容を入れさせる
命令を記憶した非一時的なコンピュータ読取り可能媒体。
【請求項１９】
１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定し、
前記内容の基準に基づいて前記フィールド各々の内容を生成し、
１つまたは複数のレコードの前記フィールド各々に、前記生成された内容を入れる
ように構成された少なくとも１つのプロセッサを備えるコンピューティングシステム。
【請求項２０】
１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定する手段と、
前記内容の基準に基づいて前記フィールド各々の内容を生成する手段と、
１つまたは複数のレコードの前記フィールド各々に、前記生成された内容を入れる手段と
を備えるコンピューティングシステム。
【請求項２１】
データ処理アプリケーションの開発中に前記データ処理アプリケーションを試験する方法であって、
前記データ処理アプリケーションを使用して第１のデータレコードを処理する工程であって、前記データ処理アプリケーションは１つまたは複数の規則を実装し、各第１のデータレコードは複数のフィールドを有する、工程と、
前記第１のデータレコードの処理中に前記データ処理アプリケーションの各規則が実行される回数を、前記規則の目標値と比較する工程と、
前記比較の結果に基づいて、前記データ処理アプリケーションを使用して処理される第２のデータレコードのデータの目標とする特性を指示する内容の基準を決定する工程と、
前記第１のデータレコードのフォーマットと前記内容の基準とに従って、前記第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程と、
前記データ処理アプリケーションを使用して前記第２のデータレコードを処理する工程と、
前記第２のデータレコードの処理中に前記データ処理アプリケーションの各規則が実行される回数を、前記規則の前記目標値と比較し、各規則の前記目標値が満たされることを判定する工程と、
前記第２のデータレコードを使用して前記データ処理アプリケーションを試験する工程と
を含む方法。
【請求項２２】
前記第１のデータレコードをクライアント装置で受け取る工程を含み、前記データ処理アプリケーションは前記クライアント装置で実行される請求項２１に記載の方法。
【請求項２３】
前記クライアント装置がコンピューティング装置からなる請求項２２に記載の方法。
【請求項２４】
前記第１のデータレコードを遠隔のサーバから受け取る工程を含む請求項２１または２２に記載の方法。
【請求項２５】
ＬＡＮまたはＷＡＮ接続を介してサーバに通信的に結合されたクライアント装置で、前記第１のデータレコードを受け取る工程を含む請求項２４に記載の方法。
【請求項２６】
前記データ処理アプリケーションが前記第２のデータレコードを処理する時に前記第２のデータレコードのデータが各規則の前記目標値を満たさせるように、前記内容の基準を決定する工程を含む請求項２１から２５のいずれか一項に記載の方法。
【請求項２７】
前記第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程が、前記第１のデータレコードの１つまたは複数のフィールドの内容に変更を加える工程を含み、前記変更が加えられた第１のデータレコードが前記第２のデータレコードである請求項２１から２６のいずれか一項に記載の方法。
【請求項２８】
前記第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程が、新しいデータレコードを作成する工程を含む請求項２１から２７のいずれか一項に記載の方法。
【請求項２９】
前記第２のデータレコードを記憶装置に記憶する工程を含む請求項２１から２８のいずれか一項に記載の方法。
【請求項３０】
前記試験の結果に基づいて、前記データ処理アプリケーションに変更を加える工程を含む請求項２１から２９のいずれか一項に記載の方法。
【請求項３１】
前記データ処理アプリケーションを試験する工程が、前記データ処理アプリケーションを使用して前記第２のデータレコードを処理した結果に基づいて前記データ処理アプリケーションに変更を加える工程を含む請求項２１から３０のいずれか一項に記載の方法。
【請求項３２】
前記第２のデータレコードの前記データが、生産環境で前記データ処理アプリケーションによって処理されることが予想されるデータとほぼ同様になるように前記内容の基準を決定する工程を含む請求項２１から３１のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本願は、２０１３年１２月１８日に出願された米国特許出願第６１／９１７，７２７号に対する優先権を主張し、同出願は参照によりすべての内容が本明細書に組み込まれる。
【０００２】
本記載はデータ生成に関する。
【背景技術】
【０００３】
データ処理アプリケーションの開発時に、開発者は生産環境の外で作業をすることがあり、生産データを入手することができない場合がある。データ処理アプリケーションが生産時に実際のデータで正しく動作することを保証するために、データ処理アプリケーションの開発および試験時に実際的なデータを使用することがある。
【発明の概要】
【課題を解決するための手段】
【０００４】
一般的な態様において、方法は、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数を示すデータを受け取る工程と、１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数の特定のフィールド各々の内容の基準を決定する工程と、内容の基準に基づいて特定のフィールド各々の内容を生成する工程と、特定のフィールド各々に、生成された内容を入れる工程とを含む。
【０００５】
実施形態は、以下の特徴の１つまたは複数も含むことができる。
【０００６】
内容を生成する工程は、特定のフィールド各々についてのフォーマットの指定に基づいて内容を生成する工程を含む。フォーマットの指定は、ストリング、小数、整数、日付、または日時、の１つまたは複数を含む内容の種類を指示する。上記方法は、ユーザインターフェースを通じてフォーマットの指定を受け取る工程を含む。
【０００７】
上記方法は、特定のフィールドの１つまたは複数を含む新しいレコードを作成する工程と、新しいレコードの上記特定のフィールドに内容を入れる工程とを含む。
【０００８】
特定のフィールド各々に生成された内容を入れる工程は、特定のフィールドの１つまたは複数について、既に存在する内容に変更を加える工程を含む。
【０００９】
フィールド各々に内容を入れる工程は、１つまたは複数の既に存在するレコードに特定のフィールドを作成する工程を含む。
【００１０】
内容の基準は、目標値、目標とする値の範囲、目標とする値の分布、最大値、または最小値、の１つまたは複数を含む。
【００１１】
内容の基準は、生成される内容について特定の値を含む。
【００１２】
内容の基準は、１つまたは複数のフィールドの２つ以上に含める内容の組み合わせの目標を指示する。
【００１３】
上記方法は、ユーザインターフェースを通じて内容の基準を受け取る工程を含む。
【００１４】
内容を生成する工程は、生成モードに基づいて内容を生成する工程を含む。
【００１５】
生成モードは、（ｉ）複数のレコード各々のフィールドの１つまたは複数について、ランダムな内容を生成すること、（ｉｉ）複数のレコード各々のフィールドの１つまたは複数について、一意の内容を生成すること、および（ｉｉｉ）複数のレコード各々のフィールドの１つまたは複数のフィールドの内容を、利用可能な内容のセットから選択すること、の１つまたは複数を含む。
【００１６】
上記方法は、生成された内容を含む１つまたは複数のレコードをデータ処理アプリケーションに提供する工程を含む。
【００１７】
内容の基準は、特定の規則をデータ処理アプリケーションによって実行させるように決定される。
【００１８】
内容の基準を決定する工程は、実行された回数が最小閾値回数よりも少なかった特定の規則を特定する工程と、その特定の規則を少なくとも最小閾値回数実行させるように内容の基準を決定する工程とを含む。
【００１９】
フォーマットの指定は内容の種類を含む。
【００２０】
一般的な態様において、方法は、ユーザインターフェースを通じてフォーマットの指定を受け取る工程と、ユーザインターフェースを通じて内容の基準を受け取る工程と、ユーザインターフェースを通じて、内容が生成されるモードの指示を受け取る工程と、指示されたモードに従って内容を生成する工程であって、生成される内容はフォーマットの指定と内容の基準とを満たす、工程と、レコード中にフィールドを作成する工程であって、フィールドは生成された内容を含む、工程とを含む。
【００２１】
実施形態は、以下の特徴の１つまたは複数を含むことができる。
【００２２】
上記モードは、（ｉ）複数のレコード各々にランダムな内容を生成すること、（ｉｉ）複数のレコード各々に一意の内容を生成すること、および（ｉｉｉ）複数のレコード各々の内容を、利用可能な内容のセットから選択すること、の１つまたは複数を含む。
【００２３】
内容の基準を受け取る工程は、ユーザインターフェースに表示された１つまたは複数の内容の基準からの内容の基準の選択を受け取ることを含む。
【００２４】
フォーマットの指定を受け取る工程は、ユーザインターフェースに表示された１つまたは複数のフォーマットの指定からのフォーマットの指定の選択を受け取ることを含む。
【００２５】
フォーマットの指定は、ストリング、小数、整数、日付、または日時、の１つまたは複数などの内容の種類を指示する。
【００２６】
内容の基準は、内容の最大値、内容の最小値、および内容の値の範囲、の１つまたは複数を指示する。
【００２７】
内容の基準は内容について特定の値を指示する。
【００２８】
内容の基準は、内容の目標分布を指示する。
【００２９】
内容の基準は、２つ以上のフィールドに含める内容の組み合わせの目標を指示する。
【００３０】
内容生成モードの指示を受け取る工程は、ユーザインターフェースに表示された１つまたは複数の内容生成モードからの内容生成モードの選択を受け取ることを含む。
【００３１】
上記方法は、新しいレコードを作成する工程を含む。レコードにフィールドを作成する工程は、新しいレコードにフィールドを作成する工程を含む。
【００３２】
上記方法は、第２のフォーマットの指定、第２の内容の基準、および第２のモードの指示を受け取る工程と、指示された第２のモードに従って第２の内容を生成する工程であって、生成される内容は第２のフォーマットの指定と第２の内容の基準とを満たす、工程と、レコード中の既存のフィールドの内容を生成された第２の内容に置き換える工程とを含む。
【００３３】
一般的な態様において、非一時的なコンピュータ読取り可能媒体は、コンピュータシステムに、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定させ、内容の基準に基づいてフィールド各々の内容を生成させ、１つまたは複数のレコードのフィールド各々に、生成された内容を入れさせる命令を記憶する。
【００３４】
一般的な態様において、コンピューティングシステムは、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定し、内容の基準に基づいてフィールド各々の内容を生成し、１つまたは複数のレコードのフィールド各々に、生成された内容を入れるように構成された少なくとも１つのプロセッサを備える。
【００３５】
一般的な態様において、コンピューティングシステムは、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定する手段と、内容の基準に基づいてフィールド各々の内容を生成する手段と、１つまたは複数のレコードのフィールド各々に、生成された内容を入れる手段とを備える。
【００３６】
一般的な態様において、データ処理アプリケーションの開発中に前記データ処理アプリケーションを試験する方法は、データ処理アプリケーションを使用して第１のデータレコードを処理する工程であって、データ処理アプリケーションは１つまたは複数の規則を実装する、工程を含む。各第１のデータレコードは複数のフィールドを有する。上記方法は、第１のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、規則の目標値と比較する工程を含む。上記方法は、比較の結果に基づいて、データ処理アプリケーションを使用して処理される第２のデータレコードのデータの目標とする特性を指示する内容の基準を決定する工程を含む。上記方法は、第１のデータレコードのフォーマットと内容の基準とに従って、第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程と、データ処理アプリケーションを使用して第２のデータレコードを処理する工程と、第２のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、前記規則の前記目標値と比較し、各規則の前記目標値が満たされることを判定する工程と、第２のデータレコードを使用してデータ処理アプリケーションを試験する工程とを含む。
【００３７】
実施形態は、以下の特徴の１つまたは複数を含むことができる。
【００３８】
上記方法は、第１のデータレコードをクライアント装置で受け取る工程を含み、データ処理アプリケーションはそのクライアント装置で実行される。クライアント装置はコンピューティング装置からなる。
【００３９】
上記方法は、第１のデータレコードを遠隔のサーバから受け取る工程を含む。上記方法は、ＬＡＮまたはＷＡＮ接続を介してサーバに通信的に結合されたクライアント装置で、第１のデータレコードを受け取る工程を含む。
【００４０】
上記方法は、データ処理アプリケーションが第２のデータレコードを処理する時に第２のデータレコードのデータが各規則の前記目標値を満たさせるように、内容の基準を決定する工程を含む。
【００４１】
第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程は、第１のデータレコードの１つまたは複数のフィールドの内容に変更を加える工程を含み、変更が加えられた第１のデータレコードが第２のデータレコードである。
【００４２】
第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程は、新しいデータレコードを作成する工程を含む。
【００４３】
上記方法は、第２のデータレコードを記憶装置に記憶する工程を含む。
【００４４】
上記方法は、試験の結果に基づいて、データ処理アプリケーションに変更を加える工程を含む。
【００４５】
データ処理アプリケーションを試験する工程が、データ処理アプリケーションを使用して第２のデータレコードを処理した結果に基づいてデータ処理アプリケーションに変更を加える工程を含む。
【００４６】
上記方法は、第２のデータレコードのデータが、生産環境でデータ処理アプリケーションによって処理されることが予想されるデータとほぼ同様になるように内容の基準を決定する工程を含む。
【００４７】
態様は、以下の利点の１つまたは複数を含む可能性がある。例えば単純明快なユーザインターフェースを通じて、任意のフォーマットの指定および内容の基準に従ってデータを生成することができる。例えば既存のデータセットに十分なレコードがない場合や、要求される特性を持つレコードがない場合に、データの生成を使用して既存のデータを補うことができる。データの生成を使用して、例えばアプリケーションが、入手可能でないデータを必要とする場合などに、データを新規に生成することもできる。
【００４８】
いくつかの例では、データ処理アプリケーションを試験するために実際的なデータを生成することができる。例えば、データ処理アプリケーションのすべての規則を少なくとも１回実行させる、例えばデータ処理アプリケーション中で発生し得るあらゆる動作をトリガーする試験データのセットを生成することができる。そのようなデータが存在しない場合は、そのデータを生成することができる。例えば、データの完全なセットが生成されると、生成されたデータのセットをデータ処理アプリケーションで処理して、データ処理アプリケーションの実行を試験することができる。生成されたデータのセットはデータ処理アプリケーション中で発生し得るあらゆる動作を実行させるので、データ処理アプリケーションを徹底的に試験することができる。データ処理アプリケーションが予想されるように機能しない場合（例えばデータ処理アプリケーションのある動作が予想されるように機能しない場合）は、データ処理アプリケーションに適宜変更を加え、満足の行く結果が達成されるまで試験することができる。
【００４９】
本発明の他の特徴および利点は、以下の説明および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００５０】
【図１】データ生成のシステムのブロック図である。
【図２】データ生成モジュールのブロック図である。
【図３Ａ】例示的なソースファイルの一部分の図である。
【図３Ｂ】例示的なターゲットファイルの一部分の図である。
【図３Ｃ】例示的なターゲットファイルの一部分の図である。
【図３Ｄ】例示的なターゲットファイルの一部分の図である。
【図４】ソースウィンドウの図である。
【図５Ａ】ソースウィンドウの図である。
【図５Ｂ】データ生成ウィンドウの図である。
【図６】ターゲットウィンドウの図である。
【図７】補助ソースウィンドウの図である。
【図８】レコードフォーマットウィンドウの図である。
【図９】ストリング特性ウィンドウの図である。
【図１０】小数特性ウィンドウの図である。
【図１１】整数特性ウィンドウの図である。
【図１２】日付特性ウィンドウの図である。
【図１３】日時特性ウィンドウの図である。
【図１４Ａ】規則を作成するウィンドウの図である。
【図１４Ｂ】規則を作成するウィンドウの図である。
【図１４Ｃ】規則を作成するウィンドウの図である。
【図１５Ａ】規則を作成するウィンドウの図である。
【図１５Ｂ】規則を作成するウィンドウの図である。
【図１５Ｃ】規則を作成するウィンドウの図である。
【図１６】規則を作成するウィンドウの図である。
【図１７Ａ】サブジェクト領域のデータセットについてのウィンドウの図である。
【図１７Ｂ】サブジェクト領域のデータセットについてのウィンドウの図である。
【図１８】フローチャートである。
【図１９】データ処理アプリケーションのブロック図である。
【図２０】フローチャートである。
【発明を実施するための形態】
【００５１】
本明細書には、設定可能な様々なオプションに従ってデータを生成する一般的な手法を記載する。例えば、生成されるデータのデータ型をユーザが指定することができる。データ型には、例えば、ストリング、小数、整数、日付、および日時がある。生成されるデータは、生成されるデータの特性に制限を加える１つまたは複数の設定可能な内容の基準を満たすことができ、そのような基準には、例えば、生成される小数データや整数データに許容される値の範囲、生成されるストリングデータの平均ストリング長、生成されるデータで使用できる値または文字のセット、および他の特性などがある。データの生成は、既存のソースレコードの１つまたは複数のフィールドの値の変更、レコードに新しいフィールドを作成して内容を入れることによるソースレコードの増補、または全く新しいレコードの作成が含まれる可能性がある。いくつかの例では、設定可能なオプションを、ユーザインターフェースを通じてユーザが指定することができる。
【００５２】
いくつかの例では、レコードのセットがデータ処理アプリケーションによって処理することができる。データ処理アプリケーションは、実行が入力レコードに依存するなど、実行が１つまたは複数の変数の値に依存する規則を実装することがある。いくつかの例では、レコードのセットにデータを生成して、データ処理アプリケーションがそのレコードのセットを処理した時に、要求される実行結果を生じさせることができる。例えば、データ処理アプリケーション内で特定の規則を実行させる、または特定の規則をより多くの回数、もしくは少ない回数実行させる、または別の要求される実行結果を生じさせるデータをレコードのセットに生成することができる。アプリケーションを実行した結果に基づき、例えば要求される実行結果をより良好に達成するためにどのようなデータを生成すべきかを決定することができる。例えば、そのデータ処理アプリケーションで処理されることが予想される生産データとほぼ同様の実際的なデータのセットを生成することができる。生成された実際的なデータのセットを使用してデータ処理アプリケーションを試験することができ、例えば、データ処理アプリケーションのすべての側面が正しく動作することを保証することができる。試験の結果に基づいて、生産環境で使用する前に適宜データ処理アプリケーションに変更を加えることができる。
【００５３】
図１は、本データ生成技術を使用することができる例示的なデータ処理システム１００を示す。システム１００は、記憶装置やオンラインデータストリームへの接続など、１つまたは複数のデータソースを含むソース１０２を含み、それぞれのデータソースは、各種フォーマットのデータを記憶または提供することができる（例えばデータベーステーブル、表計算ファイル、フラットテキストファイル、メインフレームで使用される固有フォーマット等）。実行環境１０４は実行モジュール１１２を備える。実行環境１０４は、例えば、任意バージョンのＵＮＩＸ（登録商標）オペレーティングシステムなど、適切なオペレーティングシステムの制御下で１つまたは複数の汎用コンピュータにホストすることができる。例えば、実行環境１０４は、コンピュータシステムが複数の中央処理処理（CPU）またはプロセッサコアを使用する構成の多ノードの並列コンピューティング環境を含む可能性があり、中央処理処理（CPU）またはプロセッサコアは、ローカルである（例えば対称型マルチ処理（SMP）コンピュータなどのマルチプロセッサシステム）か、またはローカルで分散されるか（例えばクラスタや超並列処理（MPP）システムとして結合された複数のプロセッサ）、または遠隔にあるか、または遠隔で分散されるか（例えば、ローカルエリアネットワーク（LAN）および／もしくはワイドエリアネットワーク（WAN）を介して結合された複数のプロセッサ）、またはそれらの組み合わせである。
【００５４】
ソース１０２は記憶装置を含み、この記憶装置は、例えば実行環境１０４をホストするコンピュータに接続された記憶媒体（例えばハードドライブ１０８）など、実行環境１０４のローカルにあるか、または実行環境１０４から遠隔にあり、例えば、遠隔への接続（例えばクラウドコンピューティングインフラストラクチャにより提供される）を通じて、実行環境１０４をホストするコンピュータと通信する遠隔のシステム（例えばメインフレーム１１０）にホストされる。
【００５５】
実行モジュール１１２は、ソース１０２からデータを読み出し、処理する。実行モジュール１１２は、データに演算などの処理を実行する１つまたは複数のデータ処理アプリケーションを含む。出力データ１１４は、ソース１０２に戻して記憶されるか、実行環境１０４からアクセスすることができるデータ記憶システム１１６に記憶されるか、またはその他の形で使用される場合がある。
【００５６】
データ記憶システム１１６には、開発者１２０がデータ処理アプリケーション、ソース１０２、またはその両方を設定することができる開発環境１１８からもアクセスすることができる。開発環境１１８は、実装によっては、頂点（データ処理コンポーネントまたはデータセットを表す）間の有向リンク（作業要素、すなわちデータの流れを表す）で接続された頂点を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境については、「Ｍａｎａｇｉｎｇ  Ｐａｒａｍｅｔｅｒｓ  ｆｏｒ  Ｇｒａｐｈ−Ｂａｓｅｄ  Ａｐｐｌｉｃａｔｉｏｎｓ」という名称の米国公開第２００７／００１１６６８号に詳細に記載され、同公開は参照により本明細書に組み込まれる。そのようなグラフを用いた演算を実行するためのシステムが「ＥＸＥＣＵＴＩＮＧ  ＣＯＭＰＵＴＡＴＩＯＮＳ  ＥＸＰＲＥＳＳＥＤ  ＡＳ  ＧＲＡＰＨＳ」という名称の米国特許第５，９６６，０７２号に記載される。システム１００に従って作成されたデータフローグラフは、グラフの構成要素で表される個々のプロセスに情報を出し入れし、プロセス間で情報を移動し、プロセスに実行の順序を定義する手段をもたらす。システム１００は、利用可能な方法からプロセス間通信の方法を選択するアルゴリズムを含む（例えばグラフのリンクに従う通信経路にはTCP/IPもしくはUNIX（登録商標）のドメインソケットを使用することができ、または共有メモリを使用してプロセス間でデータを渡すことができる）。
【００５７】
データ生成モジュール１５０は、実行モジュールで処理するデータを生成することができる。データ生成モジュール１５０は、ソース１０２にあるデータなど、既存のデータに変更を加えるか、または増補することができる。例えば、データ生成モジュール１５０は、ソースデータレコードの１つまたは複数のフィールドの値に変更を加えたり、ソースデータレコードに１つまたは複数の新しいフィールドを作成して内容を入れることができる。データ生成モジュール１５０は、例えばソースデータレコードのフォーマットや指定されたフォーマットに基づいて、全く新しいデータレコードを生成することもできる。
【００５８】
図２を参照すると、データ生成モジュール１５０は、ターゲット２４に記憶されるデータを生成するデータ生成エンジン２０を含む。いくつかの例では、データ生成エンジン２０は、データソース２２のデータに基づいてデータを生成することができる。いくつかの例では、データ生成エンジン２０は、新規に、すなわちソースデータを使用せずにデータを生成することができる。データソース２２は、ファイル、データベース、パラメータセット、別のデータソース等である。データソース２２は、それぞれが１つまたは複数のデータフィールドを持つ１つまたは複数のレコードを含むことができる。例えば、例示的なデータソースは、小売店の顧客の顧客レコードを記憶したデータベースである（本明細書では「顧客データベース」と呼ぶ）。データベースの各レコードは個々の顧客を表す。各レコードは複数のフィールドを有することができる。データソース２２は、フィールドの数、各フィールドのデータの型（例えばストリング、整数、小数、日付、または日時）、および各フィールドのデータの特性（例えば許可される値の範囲、最大許可値、許可される文字のリスト、または他の制限）など、レコードのフォーマットを指定するレコードフォーマットを有することができる。いくつかの例では、新規にデータが生成され、データソースは提供されない。
【００５９】
例えば、図３Ａを参照すると、例示的なソースファイル２００の一部は６つのレコード２０２を含み、各レコードは、ｃｕｓｔ＿ＩＤフィールド２０４、ｎａｍｅフィールド２０６、ｃｕｓｔ＿ａｇｅフィールド２０８、およびｓｔａｔｅフィールド２１０、のフィールドを持つ。
【００６０】
再度図２を参照すると、いくつかの例では、データソース２２はユーザ２６によって特定することができる。例えば、データ生成モジュール１５０のユーザインターフェースエンジン２８が、例えばパーソナルコンピュータやモバイルコンピューティング装置などのコンピューティング装置３２のディスプレイインターフェースで、ユーザインターフェース３０をユーザ２６に表示させることができる。ユーザ２６は、ユーザインターフェース３０を通じてデータソース２２を特定することができる。生成されたデータは、ファイル、データベース、パラメータセット、または別のデータ構造などのターゲット２４に記憶することができる。いくつかの例では、ターゲットファイル２４は、例えばユーザインターフェース３０を通じてユーザ２６によって特定することができる。いくつかの例では、ターゲットのレコードフォーマットがソースのレコードフォーマットと一致する場合がある。すなわち、ターゲットに指定されるレコードフォーマットは、ソースにある既存レコードのレコードフォーマットと同じである場合がある。いくつかの例では、ターゲットのレコードフォーマットがソースのレコードフォーマットと異なり、ソースのレコードフォーマットの一部またはすべてをターゲットにマッピングすることができる。例えば、ソースの１つまたは複数のフィールドのフォーマットを、ターゲットのレコードフォーマットに含めることができる。
【００６１】
データ生成モジュール１５０は、例えばデータベース３６、ファイル、または別のデータ構造に記憶された構成データ３４に基づいて、ターゲット２４のデータを生成することができる。構成データ３４は、ターゲット２４に使用するデータ生成手法、ターゲット２４の内容生成モード、ターゲット２４に生成するデータのデータ型、ターゲットに生成するデータの内容の基準、およびターゲット２４に生成するデータについての他の構成情報を指定することができる。これらの構成データ３４については下記で詳細に説明する。いくつかの例では、ターゲット２４のデータを生成するために使用される構成データ３４の一部またはすべてが、例えばユーザインターフェース３０を通じてユーザ２６によって指定される場合がある。いくつかの例では、構成データ３４の一部またはすべてが、例えばデータソース２２の分析や要求されるターゲットの属性についての情報に基づいて、構成エンジン３９によって決定される場合もある。
【００６２】
いくつかの例では、データ生成エンジン２０は、構成データ３４に従って、データソース２２にある既存のソースレコードのフィールドの１つまたは複数の値を変更することにより、ターゲット２４のデータを生成することができる。変更されたレコードはターゲット２４に記憶することができる。いくつかの例では、所与のフィールドに対応するすべての値を変更する場合もある。例えば、すべてのレコードにわたる任意のフィールドの値の分布が、構成データ３４で示される目標の分布と一致するように、各レコードの当該フィールドに値を割り当てることができる。例えば、その分布は、ユーザ２６によって指定される場合も、構成エンジン３９によって決定される場合もある。いくつかの例では、構成データ３４で示される指定の基準を満たさない値だけを変更するなど、所与のフィールドに対応するすべての値よりも少ない値を変更する場合もある。例えば、任意のフィールドについて、そのフィールドに許可される特定範囲の値の外側にある対応する値が変更される場合がある。
【００６３】
例えば、図３Ｂを参照すると、例示的なターゲットファイル２２０の一部は、ソースファイル２００に基づいて生成されたレコード２２２を含んでいる。この例では、構成データ３４（図２）は、ｃｕｓｔ＿ａｇｅフィールド２０８は４０の最大値を持ち得ることを示している。構成データ３４で指定されるこの基準を満たすために、ｃｕｓｔ＿ａｇｅフィールドの最大値が４０になるように、ソースファイル２００のｃｕｓｔ＿ａｇｅフィールド２０８の値がデータ生成エンジン２０によって変更されている。すなわち、特定のレコード２２２ａのｃｕｓｔ＿ａｇｅフィールド２０８の値が、４５（ソースファイル２００）から２５（ターゲットファイル２２０）に変更されている。生成されたターゲットファイルのレコード２２２の他のフィールドの値は、ソースレコード２０２の値に対応する。
【００６４】
再度図２を参照すると、いくつかの例では、データ生成エンジン２０は、構成データ３４に従ってデータソース２２の既存のソースレコードを１つまたは複数の新しいフィールドで増補することによりデータを生成することができる。増補されたレコード（すなわち１つまたは複数の新しいフィールドを持つレコード）はターゲット２４に記憶することができる。構成データ３４は、新しいフィールドの数、新しいフィールドのデータ型と値、および新しいフィールドの他の特性を決定する命令を提供することができる。いくつかの例では、構成データ３４は、新しいフィールドの値を、データソース２２のソースデータにある既存フィールドに対応するデータに基づいて生成することを指定することができる。いくつかの例では、構成データ３４は、既存のソースデータではなく例えば指定された特性（例えば構成データ３４で指定される特性）に従って、新規に新しいフィールドの値を生成することを指定する場合がある。
【００６５】
例えば、図３Ｃを参照すると、例示的なターゲットファイル２３０の一部は、ソースファイル２００に基づいて生成されたレコード２３２を含んでいる。この例では、構成データ３４（図２）は、ｃｕｓｔ＿ａｇｅフィールド２０８の値を５つの利用可能なａｇｅ＿ｒａｎｇｅの値域（bucket）の１つに分類することによって生成された値を持つ新しいａｇｅ＿ｒａｎｇｅフィールド２３４を作成するよう指定する。構成データ３４はさらに、ソースファイル２００にあるデータとの関係は一切なしに、指定された最大値および最小値を条件とする値を使用して新しいｃｕｓｔ＿ｉｎｃｏｍｅフィールド２３６を作成するよう指定する。
【００６６】
再度図２を参照すると、いくつかの例では、データ生成エンジンは、構成データ３４に従って、データソース２２の既存のソースレコードを１つまたは複数の新しいレコードで増補することによりデータを生成することができる。増補されたレコード（すなわち既存のソースレコードと新しいレコードの両方）はターゲット２４に記憶することができる。新しいレコードは、ソースレコードと同じレコードフォーマットを持つことができる。構成データ３４は、新しいレコードの数、新しいレコードのフィールドの値、および新しいレコードの他の特性を決定する命令を提供することができる。いくつかの例では、構成データ３４は、新しいレコードの１つまたは複数のフィールドの値を、データソース２２の既存のソースデータには一切基づかずに、例えば指定された特性に従って新規に生成するように指定する。いくつかの例では、構成データ３４は、新しいレコードの１つまたは複数のフィールドの値を、構成データ３４で指定される概要を満たすように生成することを指定する。例えば、概要は、すべてのレコードの特定のフィールドの値が平均や分布などの特性を満たすことを指定する。例えば、顧客データベースのソースでは、すべてのレコードにわたるｃｕｓｔ＿ａｇｅフィールドの値が、構成データ３４で指定される特定の分布を満たすように新しいレコードを生成することができる。
【００６７】
例えば、図３Ｄを参照すると、例示的なターゲットファイル２４０の一部は、ソースファイル２００に基づいて生成されたレコード２０２、２４２を含んでいる。この例では、構成データ３４（図２）は、すべてのレコードにわたるｃｕｓｔ＿ａｇｅフィールド２０８の値が、当該フィールドの「６０」の最大値を条件として４０〜４５の間の平均値を持つように、４つの新しいレコード２４２を作成することを指定する。この例では、構成データ３４は、他のフィールドそれぞれの値は、例えばそのフィールドに指定される特性に従って、無作為に生成することを指定する。元のソースレコード２０２もターゲットファイル２４０に含められる。
【００６８】
いくつかの例では、データ生成エンジン２０は、構成データ３４に従って２つ以上の手法をデータ生成に適用することができる。例えば、データ生成エンジン２０は、１つまたは複数のフィールドの値に変更を加えることができる手法、ソースレコードを１つまたは複数の新しいフィールドで増補することができる手法、およびソースレコードを１つまたは複数の新しいレコードで増補することができる手法などの手法の組み合わせを適用することができる。
【００６９】
いくつかの例では、ファイル、データベース、またはパラメータセットなどの生成されたレコードだけがターゲットに記憶され、ソースレコード（存在する場合）はターゲットに記憶されない。いくつかの例では、ソースが例えばユーザによって指定され、生成されるレコードは、ソースのレコードフォーマット、ソースの１つまたは複数のフィールドの概要、またはソースの別の特性に基づいて、データ生成エンジン２０モジュールによって生成されることがある。いくつかの例では、ソースは指定されず、レコードは、構成データ３４に従って、新規にデータ生成エンジン２０によって自動的に生成される。例えば、１つまたは複数のフィールドのレコードフォーマットおよび特性が、構成データ３４で指定される場合がある。
【００７０】
いくつかの例では、ソースのレコードフォーマットをターゲットにマッピングすることができる。例えば、構成データ３４は、ソースのレコードフォーマットをターゲットで採用することを指示する場合がある。例えば、構成データ３４に従ってソースのレコードフォーマットをターゲットに適用することができ、ソースのレコードフォーマットに従って、データ生成エンジン２０で新規に新しいレコードを生成することができる。いくつかの例では、複数のソースからデータが生成されることがあり、各ソースのレコードフォーマットを、部分的または完全にターゲットにマッピングすることができる。例えば、各ソースにある対象フィールドのフォーマットをターゲットにマッピングすることができる。
【００７１】
いくつかの例では、ソースのレコードフォーマットをターゲットにマッピングし、変更を加えることもある。例えば、構成データ３４は、フィールドの名前をソースからターゲットで変更する、またはソースにあるフィールドを削除することを指定する場合がある。
【００７２】
図４を参照すると、データ生成モジュール１５０は、ユーザがデータソースを特定できるソースウィンドウ３００を提供するユーザインターフェース（例えば図２のユーザインターフェース３０）を提供する。ソースウィンドウ３００はソースタイプメニュー３０２を含み、このメニューでユーザはファイルやデータベースなどのソースのタイプを指定することができる。図４の例では、ソースはファイルである。ソースウィンドウ３００で、ユーザは、ソースまでのパス（例えばファイルソースまでのパスや、データベースソースの構成ファイルまでのパス）などのソースの識別子３０４、およびソースレコードのレコードフォーマットの識別子（例えばレコードフォーマットファイルまでのパス）を指定することができる。いくつかの例では、ソースがデータベースである場合、ユーザは、データベースからソースデータを取得するために使用されるクエリ（例えばSQLクエリ）を指定することができる。ソースウィンドウ３００は、新しいレコード３０６を生成するかどうか、および生成する場合は生成する新しいレコードの数をユーザが指示できるオプションを提供する。ソースウィンドウ３００で、ユーザはソースに関する他の情報３０８を見ることができる。例えば、ユーザは、ソースのレコードフォーマット、ソースデータ、またはソースデータの概要を見ることができる。いくつかの例では、データフローグラフなどの実行可能アプリケーションを使用してソースデータを生成することができる。
【００７３】
図５Ａおよび図５Ｂを参照すると、いくつかの例ではユーザインターフェース３０のソースウィンドウ３００で、ユーザは、ソースを指定せずに、新規にデータを生成することを指定することができる。詳細には、ソースウィンドウ３００で、ユーザは、ソースタイプメニュー３０２で、生成されるデータをソースタイプとして選択することができる。ユーザが生成されるデータをソースタイプとして選択すると、データ生成ウィンドウ４００がユーザインターフェース３０に表示される。データ生成ウィンドウ４００で、ユーザは、データを生成するために使用する方法４０２（下記で説明する）を指示し、生成する新しいレコードの数４０４を指示することができる。いくつかの例では、ユーザがデフォルトの指定を変更しない限り、ターゲットのレコードフォーマットで指定されるデフォルトのデータ生成モードやデフォルトの値などのデフォルトのデータ生成特性を使用して、新規にデータを生成することができる。例えば、フィールド生成指定変更のオプション４０６で、ユーザは、ターゲットの１つまたは複数のフィールドについてデータ生成特性を指定することができる。いくつかの例では、規則のオプション４０８で、ユーザは、個々のフィールドに、より複雑なデータ生成規則を作成することができる。
【００７４】
図６を参照すると、ユーザインターフェース３０は、ユーザがターゲットを特定することができるターゲットウィンドウ５００を提供する。ターゲットウィンドウ５００のターゲットタイプメニュー５０２で、ユーザはファイルやデータベースなどターゲットの種類を指定することができる。ターゲットウィンドウ５００で、ユーザは、ターゲットの識別子５０４（例えばターゲットファイルまでのパスや、ターゲットデータベースの構成ファイルまでのパス）を指定することもできる。いくつかの例では、例えばターゲットウィンドウ５００を通じて異なるレコードフォーマットが指定されない限り、ソースのレコードフォーマットがターゲットのレコードフォーマットとして使用される。例えば、ソースを使用せずに新規にデータを生成する場合、ターゲットのレコードフォーマットを指定するレコードフォーマットファイルを、ターゲットウィンドウを通じて特定することができる。いくつかの例では、データフローグラフなどの実行可能アプリケーションを使用して、生成されたデータをターゲットに書き込むことができる。ターゲットウィンドウ５００は、ソースとターゲットが特定されると、データ生成のための各種の設定可能なオプションをユーザが利用できるようにする実行ボタン５０６を備える。ターゲットウィンドウ５００で、ユーザはソースに関する他の情報５０８も見ることができる。例えば、ユーザは、ターゲットデータセットを見る、ターゲットデータセットの概要を見る、またはターゲットのレコードフォーマットを見ることができる。いくつかの例では、ターゲットウィンドウは、ソースから読み出されたレコードおよび／またはターゲットに書き込まれたレコードの数、生成されたレコードの数、他の統計など、ターゲットのデータの生成に関する統計データへのアクセスを提供する。
【００７５】
データ生成エンジン２０は、データを生成するいくつかの手法を提供する。ユーザインターフェース３０のデータ生成ウィンドウで、ユーザは所望のデータ生成手法を指定することができる。例えば、フィールドの変更、フィールドの作成、レコードの作成、既存のソース、および親データセットの手法を使用してデータを生成することができる。
【００７６】
フィールドの変更：フィールド変更の手法では、ターゲットデータレコードがソースデータレコードと同じフォーマットを持つが、内容は異なるように、ソースレコードの１つまたは複数のフィールドに対応する値に変更を加えることができる。いくつかの例では、所与のフィールドに対応するすべての値が変更される場合もある。例えば、すべてのレコードにわたる所与のフィールドの値の分布が目標分布と一致するように値を割り当てることができる。いくつかの例では、指定された基準を満たさない値だけなど、所与のフィールドに対応するすべての値よりも少ない値を変更する場合もある。例えば、特定のフィールドに許可される特定範囲の値の外側にある値を変更することができる。
【００７７】
フィールドの作成：フィールド作成の手法では、既存のレコードに１つまたは複数の新しいフィールドを作成することができる。いくつかの例では、ソースデータ中の既存フィールドについてのデータに基づいて、新しいフィールドの値を生成することができる。いくつかの例では、既存のソースデータには一切基づかずに、例えば指定された特性に従って、新しいフィールドの値を新規に生成することができる。
【００７８】
レコードの作成：レコード作成の手法では、新しいレコードを生成することができる。新しいレコードを生成する場合、生成するレコードの数を指定することができる（例えば図５Ｂ）。いくつかの例では、新しいレコードのレコードフォーマットを指定することができる。例えば、ターゲットに既存のソースレコードと新たに生成されたレコードの両方を入れる場合は、新しいレコードのレコードフォーマットは、ソースレコードのレコードフォーマットと同じにすることができる。新たに生成されたレコードだけをターゲットに入れる場合は、ユーザは、フィールドの数、各フィールドのデータの型、各フィールドのデータの特性（例えば最大値、最小値、許可される文字のセット、他の特性）、レコードフォーマットの他の特徴など、生成されるレコードに適用するレコードフォーマットを指定することができる。
【００７９】
既存データセット：既存データセットの手法では、新たに作成される子データセットにデータを生成する。例えば、既存の顧客データセットに基づいて、トランザクションレコードを含む新しいデータセットを生成することができる。既存データセットの手法では、指定された数の新しいレコードが、既存のソースレコードそれぞれに生成される。例えば、図７を参照すると、既存データセットウィンドウ６００で、ユーザは、ソースデータセットのパス６０２またはデータ操作言語（DML）６０４、既存のソースデータセットにあるデータレコードごとに生成するターゲットレコードの数６０６、および、ターゲットにレコードを生成する際に使用されないソースレコードの割合を指定することができる。いくつかの例では、補助的なソースが、ターゲットレコードの特定のフィールドに入れるために使用するデータを保持する場合があるが、ソースまたはターゲットいずれかのレコードフォーマットと一致しないレコードフォーマットを持つ可能性がある。そのような場合、補助的なソースにある１つまたは複数の対象フィールドをターゲットレコードにマッピングすることができる。
【００８０】
サブジェクト領域の手法：サブジェクト領域の手法では、既存のソースデータセットをサブジェクト領域の階層内で親データセットとすることができ、データの生成は、その親データセットに関係する子データセットの作成を含む場合がある。例えば、親データセット（すなわちソース）が顧客レコードのセットで、子データセット（すなわちターゲット）が顧客ごとの１つまたは複数のトランザクションレコードのセットである場合がある。子データセットのレコードを親セットの対応するレコードに結び付けるキーフィールドを指定することができ、親データレコードの１つまたは複数のキーフィールドを、生成された子データレコードの対応するフィールドにマッピングする。例えば、ｃｕｓｔ＿ＩＤフィールドを、顧客レコードとトランザクションレコードとを結び付けるキーフィールドとすることができる。キーフィールドごとに生成する子レコードの数を指定することができる。いくつかの例では、子レコードを生成する際に使用されない親レコードの割合を指定することができる。いくつかの例では、子レコードのレコードフォーマットを指定することができる。
【００８１】
いくつかの例では、フォーマットの指定、内容の基準、またはその両方に従ってデータを生成することができる。フォーマットの指定は、生成されるデータのフォーマットの指定である。例えば、フォーマットの指定で、生成されるデータのデータ型（例えばストリング、小数、整数、日付、または日時）を指示することができる。内容の基準は、生成されるデータの特性を限定する基準である。内容の基準の例には、例えば、許可される値の範囲、最大許可値、許可される文字のリスト、または他の内容の基準が含まれる。いくつかの例では、フォーマットの指定および内容の基準が、ターゲットレコードのレコードフォーマットで指定される。いくつかの例では、ユーザインターフェース３０が、ユーザがフィールドのフォーマットの指定や内容の基準などのフィールドの特性を指定できるフィールドウィンドウを提供することができる。
【００８２】
図８を参照すると、ユーザインターフェースのレコードフォーマットウィンドウ７００で、ユーザは、ターゲットの１つまたは複数のフィールドについてのデータ型およびデータ特性を含むターゲットレコードフォーマットを編集することができる。レコードフォーマットウィンドウ７００は、ターゲットのレコードフォーマットにあるフィールドのリスト７０２を表示する。リスト７０２は、各フィールドのデータ型も示す。いくつかの例では、ターゲットのレコードフォーマットにあるフィールドが、データソースのレコードフォーマットにも出現する。ターゲットレコードフォーマットとソースレコードフォーマットの両方に出現するそれらのフィールドは、リスト７０２中で例えばアスタリスク（すなわち**）で印を付けることができる。例えば、図８の例では、ｌａｓｔ＿ｔｒａｎｓａｃｔｉｏｎおよびｃｕｓｔｏｍｅｒ＿ｓｉｎｃｅのフィールドは、ターゲットレコードフォーマットとソースレコードフォーマットの両方に出現する。印が付けられていないフィールドは、ターゲットレコードフォーマットにのみ出現する。いくつかの例では、ソースレコードフォーマットに出現するがターゲットレコードフォーマットには出現しないフィールドはリスト７０２に表示されない。
【００８３】
レコードフォーマットウィンドウ７００で、ユーザは、例えば所望のフィールドの名前をクリック、タップ、またはドラッグすることにより、データ生成特性を指定するターゲットレコードフォーマットの１つまたは複数のフィールドを選択することができる。ターゲットレコードフォーマットの選択されたフィールドのリスト７０４が表示される。すなわち、リスト７０４にあるフィールドは、ユーザがデータ生成特性を指定しようとするターゲットレコードフォーマットのそれらのフィールドである。いくつかの例では、例えばユーザがターゲットレコードフォーマットのフィールドの一部だけにデータ生成特性を指定したい場合には、リスト７０４は、ターゲットレコードフォーマットにあるすべてのフィールドのリスト７０２のサブセットである場合もある。例えば、図８の例では、ｃｕｓｔｉｄ、ｆｎａｍｅ、Ｉｎａｍｅ、およびｂｕｉｌｄｉｎｇ＿ｎｕｍのフィールドが選択されている。
【００８４】
ユーザインターフェース３０で、ユーザは、リスト７０４に表示された選択フィールドそれぞれのレコードフォーマットを編集することができる。例えば、選択されたフィールドごとに、ユーザは、そのフィールドのデータ型の選定、そのフィールドへの内容生成モードの割り当て、およびそのフィールドのデータ特性の指定、の任意の組み合わせを行うことができる。ユーザインターフェースは、選択されたフィールドごとに、データ型ウィンドウ、内容生成ウィンドウ、およびデータ特性ウィンドウの１つまたは複数を順次表示することができ、それにより、ユーザは選択されたフィールドそれぞれに各種の特徴を指定することができる。
【００８５】
ユーザインターフェース３０で、ユーザはフィールドのデータ型を選定することができる。データ型ウィンドウは、ユーザがリスト７０４から特定のフィールドを選択するのに応答してユーザインターフェース３０に表示することができ、それによりユーザはそのフィールドにデータ型を選定することができる。ユーザは、ストリング、小数、整数、日付、日時（すなわち日付と時間）など、データ生成モジュール１５０で対応可能な任意のデータ型を選定することができる。フィールドごとに１つのデータ型を選定することができる。いくつかの例では、フィールドにデータ型が選定されない場合は、そのフィールドのレコードフォーマットで指示されるデータ型が保持される。例えば、図８の例では、各フィールドのレコードフォーマットで指示されるそのフィールドのデータ型が、フィールド名の隣に括弧に入れて表示される。ターゲットレコードフォーマットの各フィールドに選定されたデータ型は構成データ３４として記憶することができる。
【００８６】
ユーザインターフェース３０で、ユーザは選択されたフィールドの１つまたは複数に内容生成モードを割り当てることができる。ユーザがリスト７０４から特定のフィールドを選択するのに応答して、ユーザインターフェース３０に内容生成ウィンドウが表示され、ユーザはそのフィールドに内容生成モードを割り当てられることができる。フィールドの内容生成モードは、そのフィールドにデータ生成エンジン２０によってデータが生成される方式を指示する。例えば、例示的な内容生成モードには、ユニークモード、ランダムモード、デフォルトモード、およびリストモードがある。ユニークモードでは、各レコードの選択されたフィールドに一意の値を生成することができる。例えば、一意の小数値、ストリング値、または整数値の昇順のセットを生成することができる。「１９０００１０１」や別の日付のベースなど、デフォルトの日付または指定された日付のベースから、日に基づく昇順で日付値を生成することができる。現在の日付および時刻など、デフォルトの日時または指定された日時のベースから、分に基づく昇順で日時値を生成することができる。ランダムモードでは、各レコードの選択されたフィールドにランダムな値を生成することができる。デフォルトモードでは、ターゲットのレコードフォーマットで指定されるデフォルトの特性またはデフォルトの値を使用して値を生成することができる。例えば、いくつかの例では、デフォルトのデータ生成モードをランダムモードとし、デフォルトの値範囲および特性を各データ型に適用することができる。リストモードでは、許可値のリストから値が選択される。いくつかの例では、あるフィールドに内容生成モードが割り当てられない場合は、デフォルトモードを使用してそのフィールドのデータを生成するか、デフォルト値（例えばターゲットレコードのレコードフォーマットで指定される）をそのフィールドの値として使用することができる。いくつかの例では、１つまたは複数のフィールドの内容生成モードが、ターゲットレコードのレコードフォーマットで指定される場合がある。ターゲットレコードフォーマットの各フィールドの内容生成モードは、構成データ３４として記憶することができる。
【００８７】
ユニークモード、ランダムモード、またはデフォルトモードのデータ生成をフィールドに割り当てる場合、ユーザインターフェース３０で、ユーザは選択されたフィールドの１つまたは複数にデータ特性を指定することができる。データ特性は、そのフィールドのデータ型に依存する可能性があり、そのフィールドに生成できる許容値を制限することができる。例えば、小数フィールドや整数フィールドなどの数値フィールドのデータ特性は、最大許可値、最小許可値、許可される値の範囲、またはすべてのレコードにわたるそのフィールドの平均値を指示する場合がある。下記で説明するように、他のデータ特性も適用することができる。いくつかの例では、フィールドエラー率（すなわちレコードが誤りを含んでいる数または割合）も１つまたは複数のフィールドに指定することができる。特定のフィールドにデータ特性を指定することができるように、ユーザがリスト７０４からそのフィールドを選択するのに応答して、そのフィールドのデータ型に固有の特性ウィンドウがユーザインターフェース３０に表示される。例えば、ストリング特性ウィンドウ、小数特性ウィンドウ、整数特性ウィンドウ、日付特性ウィンドウ、または日時特性ウィンドウ、または別のデータ型に対応するウィンドウをユーザインターフェース３０に表示することができる。ターゲットレコードフォーマットの各フィールドのデータ特性は構成データ３４として記憶することができる。
【００８８】
図９を参照すると、ストリング特性ウィンドウ８００で、ユーザはストリングフィールドのデータ特性を指定することができる。図９の例では、データ特性は、特定のストリングフィールドの平均ストリング長８０２、最大ストリング長８０４、および許容文字のセット８０６を含む。ユーザは、その特定のストリングフィールドにＮＵＬＬ値８０８の割合も指定することができる。いくつかの例では、他のデータ特性も指定することができる。いくつかの例では、ユーザがストリングフィールドに対してデータ特性の１つまたは複数を指定しない場合には、データ特性のデフォルト値を適用することができる。例えば、デフォルトの平均ストリング長８０２が「８」、デフォルトの最大ストリング長８０４が「１６」であり、デフォルトの許容文字のセット８０６は文字｛ａ−ｚ，Ａ−Ｚ，０−９，およびスペース｝を含み、ＮＵＬＬ値のデフォルトの割合８０８はゼロとすることができる。
【００８９】
特定の一例では、ユーザが、特定のフィールドについて、平均ストリング長８０２を４文字に、最大ストリング長８０４を８文字に、許可される文字のセット８０６を｛ａ−ｚ，Ａ−Ｚ｝に、ＮＵＬＬ値の割合８０８をゼロに指定している。この例で、ユーザがその特定のフィールドにランダムモードのデータ生成を割り当てた場合には、許容文字のセットから、指定された平均長および最大長を条件として、レコードごとにそのフィールドにランダムなストリングが生成される。ユーザがその特定のフィールドにユニークモードのデータ生成を割り当てた場合、レコードごとにそのフィールドに一意のストリングが生成される（すなわち、その特定のフィールドに２つのレコードが同じ生成ストリングを持つことはない）。
【００９０】
図１０を参照すると、小数特性ウィンドウ９００で、ユーザは小数フィールドのデータ特性を指定することができる。図１０の例では、データ特性は、特定の小数フィールドについての許可される値の範囲９０２およびＮＵＬＬ値の割合９０４を含む。いくつかの例では、許可される最大の小数位数、生成されるすべてのレコードの小数フィールドの平均値、または他の特性などの他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の１つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの範囲９０２は０〜１０００とし、ＮＵＬＬ値のデフォルトの割合９０４は０とすることができる。
【００９１】
特定の一例では、ユーザが特定のフィールドに対して、許可される値の範囲９０２を０〜１０、ＮＵＬＬ値の割合９０４を１０％と指定している。この例では、ユーザがこの特定のフィールドにランダムモードのデータ生成を割り当てた場合には、許可される値の範囲９０２に該当するランダムな小数が各レコードのそのフィールドに生成される。レコードの１０％にＮＵＬＬ値が与えられる。ユーザがこの特定のフィールドにユニークモードのデータ生成を割り当てた場合には、許可される値の範囲９０２に該当する一意の小数が各レコードのそのフィールドに生成される（すなわち、その特定のフィールドに２つのレコードが同じ値を持つことはない）。
【００９２】
図１１を参照すると、整数特性ウィンドウ１８０でユーザは整数フィールドのデータ特性を指定することができる。図１１の例では、データ特性は許可される値の範囲１８２を含む。いくつかの例では、特定の整数フィールドのＮＵＬＬ値の割合１８４や、生成されるすべてのレコードの整数フィールドの平均値など、他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の１つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの範囲１８２は０〜１２７とすることができる。
【００９３】
図１２を参照すると、日付特性ウィンドウ１９０でユーザは日付フィールドのデータ特性を指定することができる。図１２の例では、データ特性は、年、月、または日などの日付範囲の単位１９２を含む。データ特性は日付のベース１９４も含み、これは、日付範囲が計算される際の基準として使用する日付（例えば「YYYYMMDD」と表記される）であり、「ＹＹＹＹ」は年を意味し、「ＭＭ」は月を意味し、「ＤＤ」は日を意味する。データ特性は、特定の日付フィールドについて、日付のベース１９４を基準とする許可される日付の範囲１９６、およびＮＵＬＬ値または空白値の割合１９８も含む。いくつかの例では、他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の１つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの日付範囲の単位１９２を年とし、デフォルトの日付ベース１９４を今日にし、許可される日付の範囲１９６を−７〜０年（デフォルトの日付ベースを基準として）、ＮＵＬＬ値のデフォルトの割合１９８を１％とすることができる。
【００９４】
特定の一例では、ユーザが、特定のフィールドについて、日付範囲の単位１９２を日とし、日付のベース１９４を２０１３年１月１日とし、許可される日付の範囲１９６を３６５（すなわち２０１３年１月１日の日付のベース以後３６５日）とし、ＮＵＬＬ値の割合１９８をゼロと指定している。この例では、ユーザがこの特定のフィールドにランダムモードのデータ生成を割り当てた場合は、２０１３年１月１日〜２０１４年１月１日の間で無作為に選択された日付が各レコードのそのフィールドに割り当てられる。ユーザがこの特定のフィールドにユニークモードのデータ生成を割り当てた場合は、２０１３年１月１日〜２０１４年１月１日の間の一意の日付が各レコードのそのフィールドに割り当てられる（すなわち、その特定のフィールドに２つのレコードが同じ日付を持つことはない）。
【００９５】
図１３を参照すると、日時特性ウィンドウ２５０で、ユーザは日時フィールドのデータ特性を指定することができる。図１３の例では、データ特性は、年、月、日など、日時範囲の単位２５２を含む。データ特性は日時ベース２５４も含み、これは、日時範囲を計算する際の基準として使用する日付および時間であり（例えば「YYYYMMDD HH24MISS.NNN」と表記される）、「ＹＹＹＹ」は年を意味し、「ＭＭ」は月を意味し、「ＤＤ」は日を意味し、「ＨＨ２４」は２４時間制の計時における時間を意味し、「ＭＩ」は分を意味し、「ＳＳ」は秒を意味し、「ＮＮＮ」は１０００分の１秒を意味する。データ特性は、特定の日時フィールドについての日時ベース２５４を基準とした許可される日時の範囲２５６およびＮＵＬＬ値の割合２５８も含む。いくつかの例では、他のデータ特性を指定することもできる。いくつかの例では、ユーザがデータ特性の１つまたは複数を指定しない場合は、デフォルト値を適用することができる。例えば、デフォルトの日時範囲の単位２５２は日とし、デフォルトの日時ベース２５４は現在とし、許可される日時のデフォルトの範囲２５６は−７〜０日とし、ＮＵＬＬ値のデフォルトの割合２５８は０とすることができる。
【００９６】
いくつかの例では、特性ウィンドウの１つまたは複数（例えばストリング特性ウィンドウ８００、小数特性ウィンドウ９００、整数特性ウィンドウ１８０、日付特性ウィンドウ１９０、または日時特性ウィンドウ２５０）で、ユーザは例えば当該フィールドのフィールドエラー率の値を選択または指定することにより、フィールドのデフォルトエラー率の指定を変更することができる。例えば、ユーザは次のエラー率、すなわち、誤りなし、２つのフィールドにつき１つのフィールドに誤りがある、１０個のフィールドにつき１つのフィールド、１００個のフィールドにつき１つのフィールド、１０００個のフィールドにつき１つのフィールド、１００００個のフィールドにつき１つのフィールド、および１０００００個のフィールドにつき１つのフィールド、から選択することができる。いくつかの例では、ユーザは割合のエラー率を選択または指定することができる。
【００９７】
いくつかの例では、ユーザインターフェース３０は、ユーザが１つまたは複数のデータ型についてデフォルトのデータ特性の指定を変更する機構を提供する。例えば、ユーザは、すべてのストリングデータについて平均ストリング長の指定を変更することができる。ユーザが特定のデータ型についてデフォルトの特性の指定を変更すると、その指定変更後の特性は、ユーザがデータ特性を指定しない、そのデータ型をとるすべてのデータ生成に適用される。
【００９８】
リストモードのデータ生成がフィールドに割り当てられた場合、そのフィールドに許可される値のリストを提供できるリストウィンドウをユーザインターフェース３０に表示することができる。例えば、リストモードのデータ生成をｂｕｉｌｄｉｎｇ＿ｎｕｍフィールドに割り当てた場合、ユーザは、ｂｕｉｌｄｉｎｇ＿ｎｕｍフィールドの値として使用できるビルディング番号のリスト（例えば｛１０，２０，３０，４０，５０｝）を提供することができる。データ生成エンジン１５０によりｂｕｉｌｄｉｎｇ＿ｎｕｍフィールドのデータが生成される時に、各レコードのフィールドの値は、そのビルディング番号のリストから無作為に選択することができる。いくつかの例では、他の制約を適用することができる。例えば、リストの各項目を等しい回数ずつ選択するという制約を条件として、フィールドの値をリストから選択することができる。
【００９９】
いくつかの例では、データ生成やソースからターゲットフォーマットへのマッピングに高度な規則を作成することができる。例えば、高度な規則は、あるフィールドの値を別のフィールドにマッピングさせる規則、あるフィールドの値を別のフィールドの値の計算に使用させる規則、ソースの２つ以上のフィールドを使用してターゲットの１つのフィールドを作成させる規則を含むことができる。いくつかの例では、高度な規則は、データソースのフィールドの値を、ターゲットのフィールドに生成される値に関係付けることができる。いくつかの例では、高度な規則は、ターゲットの第１のフィールドの値を、ターゲットの第２のフィールドに生成される値に関係付けることができる。ユーザインターフェース３０は、図１４Ａ〜図１４Ｃ、図１５Ａ〜図１５Ｃ、および図１６に示す設定画面や規則エディタなど、ユーザが１つまたは複数のターゲットフィールドのデータ生成に高度な規則を生成することができる規則エディタ機能を提供することができる。例えば、ユーザインターフェース３０は、ユーザがフィールドに関連する規則を指定できる規則ウィンドウを提供することができ、その規則を使用してそのフィールドに入れるデータを生成することができる。ユーザインターフェース３０は、ユーザが規則を定義できる規則エディタを提供することができる。
【０１００】
例えば、図１４Ａ〜図１４Ｃを参照すると、ユーザインターフェース３０の規則エディタ機能で、ユーザは、あるフィールドの値を別のフィールドにマッピングさせる高度な規則を作成することができる。この例では、ユーザは、ｓｔａｔｅ＿ｃｄフィールドとｓｔａｔｅ＿ｎａｍｅフィールド両方の生成を可能にする規則を作成しようとしており、ｓｔａｔｅ＿ｃｄフィールドの値は、それに対応する正式な州名を値とするｓｔａｔｅ＿ｎａｍｅフィールドに基づいてニューイングランド地域の州の２文字の省略形のリストから選択される。この規則を作成するために、ユーザは、ｓｔａｔｅ＿ｃｄフィールドの構成ウィンドウ３５０（図１４Ａ）を通じてｓｔａｔｅ＿ｃｄフィールドにリスト生成モードを割り当て、リスト３５２（この場合は、ニューイングランド地域の州の２文字の省略形のリスト：MA、CT、RI、VT、ME、NH）を指定することができ、リスト３５２からｓｔａｔｅ＿ｃｄフィールドの値を選択することができる。規則ウィンドウ３５４（図１４Ｂ）で、ユーザは、ｓｔａｔｅ＿ｎａｍｅフィールド３５６を、ｓｔａｔｅ＿ｎａｍｅフィールド３５６に内容を入れるために使用できる規則「Ｃｏｍｐｕｔｅ  ｓｔａｔｅ＿ｎａｍｅ」３５８に関連付けるよう指示することができる。ユーザは、規則エディタ３６０（図１４Ｃ）でｓｔａｔｅ＿ｎａｍｅフィールドに「Ｃｏｍｐｕｔｅ  ｓｔａｔｅ＿ｎａｍｅ」の規則を定義することができる。この例では、「Ｃｏｍｐｕｔｅ  ｓｔａｔｅ＿ｎａｍｅ」の規則は、ｓｔａｔｅ＿ｃｄフィールドの値ごとにｓｔａｔｅ＿ｎａｍｅフィールドに割り当てられる値を指定する。
【０１０１】
例えば、図１５Ａ〜図１５Ｃを参照すると、ユーザインターフェース３０の規則エディタ機能で、ユーザは、ターゲットの第１のフィールドに対応する値を使用してターゲットの第２のフィールドの値を計算させる高度な規則を作成することができる。この例では、ユーザは、ｉｎｃｏｍｅフィールドの値を使用してｔａｘ＿ｒａｔｅフィールドの値を計算する規則を作成したい。この規則を作成するために、ユーザはｉｎｃｏｍｅフィールドの内容生成ウィンドウ４５０（図１５Ａ）を通じて、ｉｎｃｏｍｅフィールドにランダム生成モードを割り当て、ｉｎｃｏｍｅフィールドに許可される値の範囲や空白値の割合などのデータ特性４５２を指定することができる。規則ウィンドウ４５４（図１５Ｂ）で、ユーザは、ｔａｘ＿ｒａｔｅフィールド４５６を、ｔａｘ＿ｒａｔｅフィールド４５６にデータを入れるために使用できる規則「Ｃｏｍｐｕｔｅ  ｔａｘ＿ｒａｔｅ」４５８に関連付けるよう指示することができる。ユーザは、規則エディタ４６０（図１５Ｃ）でｔａｘ＿ｒａｔｅフィールドの規則を定義することができる。この例では、「Ｃｏｍｐｕｔｅ  ｔａｘ＿ｒａｔｅ」の規則４５８が、ｉｎｃｏｍｅフィールドの値ごとにｔａｘ＿ｒａｔｅフィールドに割り当てられる値を指定する。「Ｃｏｍｐｕｔｅ  ｔａｘ＿ｒａｔｅ」の規則は、例えばｉｎｃｏｍｅフィールドが空白であるか、ＮＵＬＬであるか、または誤りがある場合にｔａｘ＿ｒａｔｅフィールドに割り当てるデフォルトの値４６２も指定する。
【０１０２】
例えば、図１６を参照すると、ユーザインターフェース３０の規則エディタ機能で、ユーザは、複数のソースフィールドを１つのターゲットフィールドにマッピングさせる高度な規則を作成することができる。いくつかの例では、ソースフィールドの１つまたは複数のレコードフォーマットが、ターゲットフィールドのレコードフォーマットと異なる場合がある。この例では、ユーザは、ｆｕｌｌｎａｍｅフィールドのデータを生成する際にｆｉｒｓｔｎａｍｅフィールドとｌａｓｔｎａｍｅフィールド両方の値を使用する式を指定する規則を作成したい。その規則を作成するために、規則ウィンドウ５５０で、ユーザは、ソースにあるｆｉｒｓｔｎａｍｅフィールド５５６と、スペースと、ソースにあるｌａｓｔｎａｍｅフィールド５５８との組み合わせ（「firstname」＋「  」＋「lastname」）として、ｆｕｌｌｎａｍｅフィールド５５４の規則５５２を定義することができる。
【０１０３】
フォーマットの指定、１つまたは複数の内容基準、データ生成モード、および高度な規則の１つまたは複数に基づいて、データを生成することができる。例えば、ソースレコードのデータに変更を加える、１つまたは複数の新しいフィールドを作成してデータを入れる、かつ／または、新しいレコードを作成してデータを入れることができる。
【０１０４】
いくつかの例では、サブジェクト領域を作成することができる。サブジェクト領域は、少なくとも１つのフィールドでキー関係を通じて階層中で互いと関係するデータセットの集まりである。例えば、既存の親データセットが顧客レコードのセットで、子データセットが、既存の顧客それぞれに生成された１つまたは複数のトランザクションレコードのセットである。
【０１０５】
図１７Ａを参照すると、一例では、結合ウィンドウ７０で、ユーザは、生成される子データセットとのキーフィールドとして使用する既存の親データセットの１つまたは複数のフィールドを指定することができる。図１７Ａの例では、既存の親データセットは顧客データセットであり、ｃｕｓｔｉｄを結合キーフィールドとしてトランザクションデータセットが子として生成される。図１７Ｂを参照すると、結合ウィンドウ７５で、ユーザは、子データセットに１つまたは複数の結合キーフィールドを指定することができる。この例では、枠７６で、ｃｕｓｔｉｄフィールドが親データセットから結合キーフィールドとして既に指定されている。枠７８で、子データセットから結合キーフィールドとしてフィールドを指定することができる。いくつかの例では、対応する子レコードを持たない親レコードや対応する親レコードを持たない子レコードなどの非結合レコードをサブジェクト領域のデータセットから除外することができる。いくつかの例では、非結合レコードであってもサブジェクト領域のデータセットに含めることができる。
【０１０６】
いくつかの例では、参照の完全性のためにサブジェクト領域を作成することができ、すなわち、サブジェクト領域は、サブジェクト領域の階層的データセットの参照の完全性を保証するデータレコードのみを提供する。「参照の完全性」とは、サブジェクト領域の各レコードが、サブジェクト領域の少なくとも１つの他のレコードと結合されていることを意味する。例えば、例示的なサブジェクト領域は、アカウント識別子を各トランザクションレコードと関連付ける第１のデータセットを含む。サブジェクト領域の別のデータセットでは、各顧客識別子を、複数のアカウント識別子および複数の製品識別子に関連付けることができる。サブジェクト領域の参照の完全性を保証することは、サブジェクト領域のデータセットに含まれるすべてのレコードが、サブジェクト領域データセットにある１つまたは複数の他のレコードと有効に結合されることを保証することを意味する。いくつかの例では、適用可能なサブセット作成規則の結果生じたデータレコードと、参照の完全性を保証するデータレコードの両方を含むようにサブジェクト領域を作成することができる。すなわち、例えば、参照の完全性の基準を満たさないレコードでも、サブセット作成規則を満たすサブジェクト領域に含めることができる。サブセット作成規則についてのさらなる記載が「Ｄａｔａ  Ｒｅｃｏｒｄｓ  Ｓｅｌｅｃｔｉｏｎ」という名称の米国特許出願第１３／８２７，５５８号に提供され、同出願の内容は参照により本明細書に組み込まれる。
【０１０７】
いくつかの例では、１つまたは複数の既存のデータセットに基づいて仮想のデータセットを作成することができる。例えば、顧客データセットおよびトランザクションデータセットに基づいて、顧客ごとのトランザクションの回数や顧客ごとに費やされたドル額などの値を持つ１つまたは複数のフィールドを含む新しいロールアップデータセットを生成することができる。そのようなロールアップデータセットは、例えば多数または少数の顧客に動作するデータ処理アプリケーションで有用である可能性がある。
【０１０８】
再度図２を参照すると、いくつかの例では、解析エンジン３８が自動化された解析を行って、フォーマットの指定、１つまたは複数の内容基準、データ生成モード、および高度な規則の１つまたは複数を、生成されるデータに実装することができる。例えば、基本的な例として、ユーザが日付のベースを２０００年５月１日と指定し、許可される日付範囲を１０年と指定すると、ユーザが正確な日付を指定することなく、解析エンジン３８が２０００年５月１日から２０１０年５月１日を、許可される日付の範囲として特定することができる。
【０１０９】
別の例では、解析エンジン３８は、ユーザから指定された平均ストリング長および最大ストリング長を達成する、複数のレコードにわたるストリング長の分布を求めることができる。例えば、解析エンジンは、デフォルトの最大ストリング長とデフォルトの平均ストリング長とのデフォルトの目標比に基づいてストリング長の分布を求めることができる。デフォルトの目標比を最大ストリング長に適用して、ガウス分布などのストリング長の分布におけるピークストリング長を特定することができる。例えば、一例では、デフォルトの最大ストリング長は１６、デフォルトの平均ストリング長は８であり、デフォルトの目標比は０．５になる。このデフォルトの目標比をストリングの生成、例えばストリングのランダムな生成に適用することができる。例えば、「６」の最大ストリング長に制限されるフィールドでは、デフォルトの目標比を適用して「３」のピークストリング長を求める。したがって、ストリングは「３」のピークストリング長を中心とするガウス分布で生成される。別の例では、「２５」の最大ストリング長に制限されるフィールドでは、デフォルトの目標比を適用して１２〜１３のピークストリング長を求める。したがって、ストリングは１２〜１３のピークストリング長を中心とするガウス分布で生成される。
【０１１０】
いくつかの例では、解析エンジン３８は、フォーマットの指定、１つまたは複数の内容基準、データ生成モード、および高度な規則の１つまたは複数を、例えばソースレコードの自動化された分析により、自動的に決定することができる。例えば、解析エンジン３８は、どのようにして特定のフィールドについて既存のデータに変更を加える、かつ／または新しいデータを生成して、そのフィールドに目標の値分布を達成するかを決定することができる。
【０１１１】
図１８を参照すると、一般的なデータ生成の手法６５０では、あるフィールドについてフォーマットの指定が受け取られる（６５２）。フォーマットの指定は、例えばストリング、小数、整数、日付、または日時など、そのフィールドに生成するデータのデータ型である。例えば、システム１００は、一般的なデータ生成の手法６５０に従ってデータを生成することができる。いくつかの例では、フォーマットの指定は、ユーザインターフェース３０などのユーザインターフェース（例えばユーザインターフェース３０を通じて提供されるデータ型ウィンドウ）を通じてユーザから受け取ることができる。
【０１１２】
当該フィールドについて内容の基準が受け取られる（６５４）。内容の基準は、例えば、そのフィールドに生成されるデータのデータ特性である。例えば、小数フィールドや整数フィールドなどの数値フィールドについてのデータ特性は、最大許可値、最小許可値、許可される値の範囲、またはすべてのレコードにわたる当該フィールドの平均値を指示する場合がある。ストリングフィールドのデータ特性は、最大の許可文字数、最小の許可文字数、平均文字数、または許可される文字のセットを指示する場合がある。日付フィールドや日時フィールドなど時間に関するフィールドのデータ特性は、日付もしくは日時の単位、日付もしくは日時のベース、または日付もしくは日時の範囲を指示する場合がある。いくつかの例では、フィールドエラー率（すなわちレコードが誤りを含む件数または割合）も１つまたは複数のフィールドに指定することができる。いくつかの例では、内容の基準は、ユーザインターフェース３０（例えばストリング特性ウィンドウ８００、小数特性ウィンドウ９００、整数特性ウィンドウ１８０、日付特性ウィンドウ１９０、または日時特性ウィンドウ２５０）などのユーザインターフェースを通じてユーザから受け取られる場合がある。
【０１１３】
フィールドの内容生成モードの指示が受け取られる（６５６）。内容生成モードは、そのフィールドに内容が生成されるモードである。例えば、内容生成モードは、ユニークモード、ランダムモード、デフォルトモード、およびリストモード、のモードから選択される場合がある。ユニークモードでは、選択されたフィールドに一意の値を生成することができる。ランダムモードでは、選択されたフィールドにランダムな値を生成することができる。デフォルトモードでは、例えばターゲットのレコードフォーマットで指定されるデフォルトの特性またはデフォルトの値を使用して値を生成することができる。リストモードでは、許可される値のリストから値が選択される。いくつかの例では、所与のフィールドに内容生成モードが割り当てられない場合には、デフォルトモードを使用してそのフィールドのデータを生成する場合がある。いくつかの例では、内容生成モードの指示は、ユーザインターフェース３０（例えばユーザインターフェースを通じて提供される内容生成ウィンドウ）などのユーザインターフェースを通じてユーザから受け取られる。
【０１１４】
指示された内容生成モードに従って、複数のレコードそれぞれにフィールドの内容が生成される（６５８）。フィールドに生成される内容は、そのフィールドのフォーマットの指定および内容基準を満たす。いくつかの例では、複数の既存レコードそれぞれに新しいフィールドを作成することができ、指示された内容生成モードに従って、その新しいフィールドに内容を生成することができる。いくつかの例では、複数の新しいレコードが作成される場合があり、各レコードは、指示された内容生成モードに従って内容を生成することができる１つまたは複数のフィールドを持つ。例えば、各既存レコードに基づいて複数の新しいレコードを作成することができる。
【０１１５】
いくつかの例では、データ生成を使用して、１つまたは複数の所望の特徴を持つレコードのセットを作成することができる。例えば、データ生成を使用して、データ処理アプリケーションで処理するために、フィールド中に所望のレコード数および／または所望の値分布を持つレコードのセットを作成することができる。データ処理アプリケーションの例には、例えば、顧客に請求書を発行するデータ処理アプリケーション（例えば電話の顧客の料金請求）、顧客レコードを処理するデータ処理アプリケーション（例えば顧客の購買パターンの人口統計学的傾向を特定する）、および他の種類のデータ処理アプリケーションが含まれる。
【０１１６】
データ処理アプリケーションはしばしば、実行が１つまたは複数の変数の値に依存する（例えば変数の値で実行がトリガーされる）規則を実装する。例えば、変数は入力データに対応する入力変数や、１つまたは複数の入力変数に依存する導出された変数である。データ処理アプリケーションを効果的に試験するために、あらゆる規則が少なくとも対応する最小回数実行されるように、かつ／またはあらゆる規則が対応する最大回数よりも少ない回数実行されるように、アプリケーション中のあらゆる規則を実行させる（例えばアプリケーション中で完全なコードの網羅が実現される）のに十分な入力データを提供することができる。
【０１１７】
図１９を参照すると、いくつかの例では、データ処理アプリケーション５２への入力データとして入力データレコード５０を提供することができる。データ処理アプリケーション５２は１つまたは複数の規則５４を実装する。規則は、例えば、データをあるフォーマットから別のフォーマットに変換したり、データに関する判定を行ったり、入力データのセットに基づいて新しいデータを生成するために使用することができる基準のセットである。規則についてのさらなる記載が、２００７年４月１０日に出願された米国特許出願第１１／７３３，４３４号で得られ、同出願はすべての内容が参照により本明細書に組み込まれる。
【０１１８】
データ処理アプリケーション５２で実装される各規則５４は、その規則に対応する条件式が満たされる時に実行することができ、対応する条件式が満たされない場合にはデータ処理アプリケーション５２で実行されない。規則５４は、少なくとも条件式および実行式を含む指定によって指定することができる。条件式が満たされる（例えば条件式を評価した結果「真」になる）と、実行式を評価することができる。条件式は、１つまたは複数の変数の値に依存する（例えば変数の値でトリガーされる）可能性があり、変数は、例えば入力データ５０に対応する入力変数や、１つまたは複数の入力変数に依存する導出された変数である。いくつかの例では、アプリケーションは、トリガーされるすべての規則５４を実行する。いくつかの例では、アプリケーションは、規則５４の一部や規則５４のうち１つのみ（例えばトリガーされた最初の規則５４）など、トリガーされるすべての規則５４よりも少ない規則を実行する。そのようなデータ処理アプリケーションの実行についてのさらなる記載が、「Ｄａｔａ  Ｒｅｃｏｒｄｓ  Ｓｅｌｅｃｔｉｏｎ」という名称の米国特許出願第１３／８２７，５５８号に提供され、同出願の内容は参照により本明細書に組み込まれる。
【０１１９】
規則は、対応する条件式が満たされる時に実行することができる任意の規則であってよい。一例では、小売店の顧客に対する販売の売り込みを特定するデータ処理アプリケーションの規則は、収入が２０，０００ドル未満の顧客に対する特定の販売の売り込みを特定する規則とすることができる。一例では、電話会社の顧客に請求書を生成するデータ処理アプリケーションの規則は、過去１か月の携帯電話の利用時間がその顧客のサービスプランに許可される携帯電話の利用時間を超えている顧客の請求に追加料金を適用する規則とすることができる。
【０１２０】
データ処理アプリケーション５２によって生成された実行データ５６は、実行された、もしくは実行されなかったアプリケーション５２の規則５４、アプリケーション５２の各規則５４が実行された回数、または他の情報など、データ処理アプリケーション５２の実行に関する情報を提供することができる。実行データ５６はデータ生成モジュール１５０に提供することができる。実行データ５６に基づいて、データ生成モジュール１５０の結果エンジン４０（図２）は、実行されなかった規則５４を実行させたであろう入力データ、特定の規則５４を指定回数実行させたであろう入力データ、または別の要求される実行結果を生じたであろう入力データなど、データ処理アプリケーション５２に要求される入力データまたは入力データ基準を特定することができる。例えば、要求される実行結果は例えばユーザインターフェース３０を通じてユーザによって指定される場合がある。
【０１２１】
データ生成モジュール１５０のデータ生成エンジン２０は、要求される入力データ基準を満たすデータ５８を生成することができる。生成されたデータ５８は、入力データとしてデータ処理アプリケーション５２に提供することができる。すなわち、例えば、データ生成エンジン２０は、データ処理アプリケーション中の以前に実行されなかった規則を実行させるデータ、または特定の規則をより多くの回数もしくは少ない回数実行させるデータ、または別の要求される実行結果を生じさせるデータを生成することができる。一例では、ｉｎｃｏｍｅフィールドに１，０００，０００ドルよりも大きい値を持つレコードを生成して、１，０００，０００より大きいｉｎｃｏｍｅを持つ入力データだけに実行される規則を実行させることができる。一例では、第１の規則はｇｅｎｄｅｒフィールドの値が「Ｆ」である場合に実行され、第２の規則はｇｅｎｄｅｒフィールドの値が「Ｍ」である場合に実行される。データ処理アプリケーションの初回の実行時に、実行データ５６が、第１の規則が１回しか実行されないのに対して第２の規則は５０回実行されることを示す場合、第１の規則と第２の規則をほぼ同じ回数ずつ実行させるという例えばユーザから指定された要求実行結果を満たすデータを、データ生成エンジン２０が生成することができる。例えば、データ生成エンジン２０は、ｇｅｎｄｅｒ＝「Ｆ」の追加的なレコードを作成するか、または既存レコードの一部についてｇｅｎｄｅｒフィールドの値を変更することができる。
【０１２２】
図２０を参照すると、データ生成モジュール１５０によって実装される一般的な手法７５０は、データ処理アプリケーションに適した試験データのセットを生成する。例えば、データ処理アプリケーションでその試験データのセットを処理して、データ処理アプリケーションの各規則を要求される回数ずつ実行させるなどの要求される実行結果を得ることができる。手法７５０では、１つまたは複数のレコードが、１つまたは複数の規則を実装するデータ処理アプリケーションで処理するために提供される（７５２）。各レコードは１つまたは複数のフィールドを持つことができる。データ処理アプリケーションを実行することができる（７５４）。
【０１２３】
各規則がデータ処理アプリケーションで実行された回数に基づいて、データ生成モジュール１５０の結果エンジン４０により、１つまたは複数のレコードの特定のフィールドに内容の基準を決定することができる（７５６）。いくつかの例では、特定のフィールドの内容の基準は、その内容の基準に従って生成されるデータがデータ処理アプリケーションに処理された時に、以前に実行されなかった規則を実行させる、または特定の規則をより多くの回数もしくは少ない回数実行させるなどの要求される実行結果を実現することができるように決定することができる。内容の基準は、例えば、そのフィールドに生成されるデータのデータ特性である。例えば、小数フィールドや整数フィールドなどの数値フィールドのデータ特性は、最大許可値、最小許可値、許可される値の範囲、またはすべてのレコードにわたるそのフィールドの平均値を指示する場合がある。ストリングフィールドのデータ特性は、最大の許可文字数、最小の許可文字数、平均文字数、または許可される文字のセットを指示する場合がある。日付フィールドや日時フィールドなどの時間に関するフィールドのデータ特性は、日付もしくは日時の単位、日付もしくは日時のベース、または日付もしくは日時の範囲を指示する場合がある。
【０１２４】
特定のフィールドについての内容の基準とフォーマットの指定とに基づいて、特定のフィールドに内容を生成することができる（７５８）。いくつかの例では、既存のレコードの特定のフィールドの内容に変更を加えることができる。いくつかの例では、新しいレコードを作成し、その新しいレコードの特定のフィールドの内容を生成することができる。
【０１２５】
少なくとも新たに生成された内容を入力データとして使用して、データ処理アプリケーションを実行することができる（７６０）。いくつかの例では、特定のフィールドに変更された値を含む既存のレコードを、データ処理アプリケーションに提供することができる。いくつかの例では、既存のレコードを、新たに作成されたレコードと共にデータ処理アプリケーションに提供することができる。いくつかの例では、新たに作成されたレコードだけをデータ処理アプリケーションに提供することができる。
【０１２６】
少なくとも新たに生成された内容を入力データとして使用した、データ処理アプリケーションの実行の結果を分析することができる（７６２）。データ処理アプリケーション中の規則が要求する回数実行されるなどの要求される実行結果が達成されると（７６４）、データ生成プロセスが完了する（７６６）。要求される実行結果が達成されなかった場合（７６４）は、さらなる内容の基準を決定し（７５７）、データ処理アプリケーションへの入力データとして使用される新しい内容を再度生成することができる（７５８）。
【０１２７】
いくつかの例では、手法７５０を実装して、データ処理アプリケーションのすべての規則を少なくとも１回実行させる試験データのセットをデータ処理アプリケーションに生成することができる。すなわち、データ処理アプリケーションを徹底的に試験するために、データ処理アプリケーション中で発生し得るあらゆる動作をトリガーするデータを提供することができる。そのようなデータが存在しない場合は、そのデータを生成することができる。例えば、データ生成プロセスが一旦完了すると（７６６）、生成されたデータのセットをデータ処理アプリケーションで処理して、データ処理アプリケーションの実行を試験することができる（７６８）。生成されたデータのセットはデータ処理アプリケーション中で発生し得るあらゆる動作を実行させるので、データ処理アプリケーションを徹底的に試験することができる。データ処理アプリケーションが予想されるように機能しない場合（例えばデータ処理アプリケーションのある動作が予想されるように機能しない場合）は、データ処理アプリケーションに適宜変更を加え（７７０）、満足の行く結果が達成されるまで試験することができる。
【０１２８】
いくつかの例では、手法７５０を実装して、データ処理アプリケーションで処理するための実際的なデータのセットを生成することができる。例えば、小売り企業向けのデータ処理アプリケーションは、顧客の購入パターンを示す動向レポートを生成する場合がある。顧客のプライバシーを守るために、実際的であるが架空のデータレコードのセットをデータ処理アプリケーションで処理するために生成することができる。いくつかの例では、生成されるデータは、扱いに注意を要する個人情報を明かすことなく、データセットのレコードにわたる値の分布（例えば顧客の収入分布）など、実際の顧客データと共通する特性を持つことができる。いくつかの例では、実際的なデータのセットは、物理的なプロセスを示すデータ、金融取引を示すデータ、人間もしくは動物の挙動を示すデータ、または他のデータなどである。
【０１２９】
実施形態１は、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定する工程と、内容の基準に基づいてフィールド各々の内容を生成する工程と、１つまたは複数のレコードのフィールド各々に、生成された内容を入れる工程とを含む方法を対象とする。
【０１３０】
実施形態２は実施形態１を対象とし、内容を生成する工程は、フィールド各々についてのフォーマットの指定に基づいて内容を生成する工程を含む。
【０１３１】
実施形態３は実施形態１または２を対象とし、フォーマットの指定は内容の種類を指示する。
【０１３２】
実施形態４は実施形態３を対象とし、内容の種類は、ストリング、小数、整数、日付、または日時、の１つまたは複数を含む。
【０１３３】
実施形態５は実施形態２から４のいずれかを対象とし、ユーザインターフェースを通じてフォーマットの指定を受け取る工程を含む。
【０１３４】
実施形態６は実施形態１から５のいずれかを対象とし、上記フィールドの１つまたは複数を含む新しいレコードを作成する工程と、新しいレコードの上記フィールドに内容を入れる工程とを含む。
【０１３５】
実施形態７は実施形態１から６のいずれかを対象とし、フィールド各々に生成された内容を入れる工程は、フィールドの１つまたは複数について、既に存在する内容に変更を加える工程を含む。
【０１３６】
実施形態８は実施形態１から７のいずれかを対象とし、フィールド各々に内容を入れる工程は、１つまたは複数の既に存在するレコードに特定のフィールドを作成する工程を含む。
【０１３７】
実施形態９は実施形態１から８のいずれかを対象とし、内容の基準は、目標値、目標とする値の範囲、目標とする値の分布、最大値、または最小値、の１つまたは複数を含む。
【０１３８】
実施形態１０は実施形態１から９のいずれかを対象とし、内容の基準は、生成される内容について特定の値を含む。
【０１３９】
実施形態１１は実施形態１から１０のいずれかを対象とし、内容の基準は、１つまたは複数のフィールドの２つ以上に含める内容の組み合わせの目標を指示する。
【０１４０】
実施形態１２は実施形態１から１１のいずれかを対象とし、ユーザインターフェースを通じて内容の基準を受け取る工程を含む。
【０１４１】
実施形態１３は実施形態１から１２のいずれかを対象とし、内容を生成する工程は、生成モードに基づいて内容を生成する工程を含む。
【０１４２】
実施形態１４は実施形態１３を対象とし、生成モードは、（ｉ）複数のレコード各々のフィールドの１つまたは複数について、ランダムな内容を生成すること、（ｉｉ）複数のレコード各々のフィールドの１つまたは複数について、一意の内容を生成すること、および（ｉｉｉ）複数のレコード各々のフィールドの１つまたは複数のフィールドの内容を、利用可能な内容のセットから選択すること、の１つまたは複数を含む。
【０１４３】
実施形態１５は実施形態１から１４のいずれかを対象とし、生成された内容を含む１つまたは複数のレコードをデータ処理アプリケーションに提供する工程を含む。
【０１４４】
実施形態１６は実施形態１から１５のいずれかを対象とし、特定の規則をデータ処理アプリケーションによって実行させるように内容の基準が決定される。
【０１４５】
実施形態１７は実施形態１から１６のいずれかを対象とし、内容の基準を決定する工程は、実行された回数が最小閾値回数よりも少なかった特定の規則を特定する工程と、その特定の規則を少なくとも最小閾値回数実行させるように内容の基準を決定する工程とを含む。
【０１４６】
実施形態１８は非一時的なコンピュータ読取り可能媒体を対象とし、媒体は、コンピュータシステムに、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定させ、内容の基準に基づいてフィールド各々の内容を生成させ、１つまたは複数のレコードの各上記フィールドに、生成された内容を入れさせる命令を記憶している。
【０１４７】
実施形態１９はコンピューティングシステムを対象とし、コンピューティングシステムは、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定し、内容の基準に基づいてフィールド各々の内容を生成し、１つまたは複数のレコードの各上記フィールドに、生成された内容を入れるように構成された少なくとも１つのプロセッサを備える。
【０１４８】
実施形態２０はコンピューティングシステムを対象とし、コンピューティングシステムは、１つまたは複数のレコードの処理中に１つまたは複数の規則の各々がデータ処理アプリケーションによって実行された回数に基づいて、１つまたは複数のフィールド各々の内容の基準を決定する手段と、内容の基準に基づいてフィールド各々の内容を生成する手段と、１つまたは複数のレコードの各上記フィールドに、生成された内容を入れる手段とを備える。
【０１４９】
実施形態２１は、データ処理アプリケーションの開発中にデータ処理アプリケーションを試験する方法を対象とし、この方法は、データ処理アプリケーションを使用して第１のデータレコードを処理する工程であって、データ処理アプリケーションは１つまたは複数の規則を実装し、各第１のデータレコードは複数のフィールドを有する、工程と、第１のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、規則の目標値と比較する工程と、比較の結果に基づいて、データ処理アプリケーションを使用して処理される第２のデータレコードのデータの目標とする特性を指示する内容の基準を決定する工程と、第１のデータレコードのフォーマットと内容の基準とに従って、第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程と、データ処理アプリケーションを使用して第２のデータレコードを処理する工程と、第２のデータレコードの処理中にデータ処理アプリケーションの各規則が実行される回数を、規則の目標値と比較し、各規則の目標値が満たされることを判定する工程と、第２のデータレコードを使用してデータ処理アプリケーションを試験する工程とを含む。
【０１５０】
実施形態２２は実施形態２１を対象とし、第１のデータレコードをクライアント装置で受け取る工程を含み、データ処理アプリケーションはそのクライアント装置で実行される。
【０１５１】
実施形態２３は実施形態２２を対象とし、クライアント装置はコンピューティング装置からなる。
【０１５２】
実施形態２４は実施形態２１または２２を対象とし、第１のデータレコードを遠隔のサーバから受け取る工程を含む。
【０１５３】
実施形態２５は実施形態２４を対象とし、ＬＡＮまたはＷＡＮ接続を介してサーバに通信的に結合されたクライアント装置で、第１のデータレコードを受け取る工程を含む。
【０１５４】
実施形態２６は実施形態２１から２５のいずれかを対象とし、データ処理アプリケーションが第２のデータレコードを処理する時に第２のデータレコードのデータが各規則の目標値を満たさせるように、内容の基準を決定する工程を含む。
【０１５５】
実施形態２７は実施形態２１から２６のいずれかを対象とし、第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程が、第１のデータレコードの１つまたは複数のフィールドの内容に変更を加える工程を含み、変更が加えられた第１のデータレコードが第２のデータレコードである。
【０１５６】
実施形態２８は実施形態２１から２７のいずれかを対象とし、第２のデータレコードの１つまたは複数のフィールドの内容を生成する工程が、新しいデータレコードを作成する工程を含む。
【０１５７】
実施形態２９は実施形態２１から２８のいずれかを対象とし、第２のデータレコードを記憶装置に記憶する工程を含む。
【０１５８】
実施形態３０は実施形態２１から２９のいずれかを対象とし、試験の結果に基づいて、データ処理アプリケーションに変更を加える工程を含む。
【０１５９】
実施形態３１は実施形態２１から３０のいずれかを対象とし、データ処理アプリケーションを試験する工程は、データ処理アプリケーションを使用して第２のデータレコードを処理した結果に基づいてデータ処理アプリケーションに変更を加える工程を含む。
【０１６０】
実施形態３２は実施形態２１から３１のいずれかを対象とし、第２のデータレコードのデータが、生産環境でデータ処理アプリケーションによって処理されることが予想されるデータとほぼ同様になるように内容の基準を決定する工程を含む。
【０１６１】
上記のデータ生成技術は、適切なソフトウェアを実行するコンピューティングシステムを使用して実装することができる。例えば、コンピューティングシステムは、システム１００、開発環境１１８、データ生成モジュール１５０、および他のコンピューティングシステムを含むことができる。例えば、ソフトウェアは、プログラムされた、またはプログラム可能な１つまたは複数のコンピューティングシステム（分散、クライアント／サーバ、グリッドなどの各種アーキテクチャをとる可能性がある）で実行される１つまたは複数のコンピュータプログラム中のプロシージャを含む場合があり、コンピューティングシステムはそれぞれ、少なくとも１つのプロセッサ、少なくとも１つのデータ記憶システム（揮発性メモリおよび／もしくは不揮発性メモリ、ならびに／または記憶素子を含む）、少なくとも１つのユーザインターフェース（少なくとも１つの入力装置またはポートを使用して入力を受け取り、少なくとも１つの出力装置またはポートを使用して出力を提供する）を備える。ソフトウェアは、例えばデータフローグラフの設計、構成、および実行に関係するサービスを提供する、より大きなプログラムの１つまたは複数のモジュールを含む場合もある。プログラムのモジュール（例えばデータフローグラフの要素）は、データリポジトリに記憶されたデータモデルに沿ったデータ構造または他の編成データとして実装することができる。
【０１６２】
ソフトウェアは、ＣＤ−ＲＯＭや他のコンピュータ可読媒体（例えば汎用または特殊目的のコンピューティングシステムまたは装置で読取り可能）などの有形の非一時的媒体で提供される場合も、ネットワークの通信媒体を通じて、実行先のコンピューティングシステムの有形の非一時的媒体に送付される（例えば伝搬信号に符号化される）場合もある。処理の一部またはすべては、特殊目的コンピュータで行われるか、またはコプロセッサ、フィールドプログラム可能ゲートアレイ（FPGA）、もしくは専用の特定用途集積回路（ASIC）などの特殊目的ハードウェアを使用して行うことができる。処理は、ソフトウェアで指定される演算の異なる部分が異なるコンピューティング要素によって行われる分散方式で実装される場合もある。そのようなコンピュータプログラムはそれぞれ、好ましくは、汎用または特殊目的のプログラム可能コンピュータからアクセスできる記憶装置のコンピュータ読取り可能記憶媒体（例えば固体状態メモリもしくは媒体、または磁気もしくは光学媒体）に記憶またはダウンロードされ、記憶装置媒体がコンピュータによって読み取られた時にコンピュータを構成および操作して、本明細書に記載される処理を行わせる。本発明のシステムは、コンピュータプログラムを備えて構成された有形の非一時的媒体として実装することも考えられ、その場合、そのように構成された媒体は、コンピュータを特定の事前定義された方式で動作させて、本明細書に記載される処理工程の１つまたは複数を行わせる。
【０１６３】
本発明のいくつかの実施形態を説明した。ただし、前述の説明は、本発明の範囲を説明することを意図し、制限することを意図しないことを理解されたい。本発明の範囲は下記の特許請求の範囲によって定義される。
【０１６４】
したがって、他の実施形態も下記の特許請求の範囲にある。例えば、本発明の範囲から逸脱することなく様々な変更を加えることができる。また、上記の工程の一部は順序に依存しない場合があり、したがって記載される順序とは異なる順序で行うことができる。
【図１】
2017500646.tif 000003
【図２】
2017500646.tif 000004
【図３Ａ】
2017500646.tif 000005
【図３Ｂ】
2017500646.tif 000006
【図３Ｃ】
2017500646.tif 000007
【図３Ｄ】
2017500646.tif 000008
【図４】
2017500646.tif 000009
【図５Ａ】
2017500646.tif 000010
【図５Ｂ】
2017500646.tif 000011
【図６】
2017500646.tif 000012
【図７】
2017500646.tif 000013
【図８】
2017500646.tif 000014
【図９】
2017500646.tif 000015
【図１０】
2017500646.tif 000016
【図１１】
2017500646.tif 000017
【図１２】
2017500646.tif 000018
【図１３】
2017500646.tif 000019
【図１４Ａ】
2017500646.tif 000020
【図１４Ｂ】
2017500646.tif 000021
【図１４Ｃ】
2017500646.tif 000022
【図１５Ａ】
2017500646.tif 000023
【図１５Ｂ】
2017500646.tif 000024
【図１５Ｃ】
2017500646.tif 000025
【図１６】
2017500646.tif 000026
【図１７Ａ】
2017500646.tif 000027
【図１７Ｂ】
2017500646.tif 000028
【図１８】
2017500646.tif 000029
【図１９】
2017500646.tif 000030
【図２０】
2017500646.tif 000031
【国際調査報告】
2017500646.tif 000032
2017500646.tif 000033