"統合開発環境IDEにおける非同期コードテストの方法であって、前記方法は、コンピュータのプロセッサが、ソースコードエディタを介してユーザによって提供された入力に従って、データベース内に入力コードを作成するステップであって、前記IDEは、前記ソースコードエディタ、影響アナライザ、テストケースランチャ、およびグラフィカルユーザインターフェースGUIを含み、前記データベースは、前記IDEをホストしている前記コンピュータに結合されている、前記ステップと、前記影響アナライザを使用して、前記入力コードからテストケースリストを生成するステップであって、前記影響アナライザは、前記ユーザが前記入力コードのコードブロックを変更した直後に前記テストケースリストが生成されるように、前記ソースコードエディタと同時に実行され、前記テストケースリストの各テストケースは、個別のテストケース識別子と、個別の開始優先度とを含む少なくとも1つのテストケースを含み、前記個別の開始優先度は、前記変更されたコードブロックに各テストケースがどの程度強く関連するかを定量化し、前記各テストケースは、前記個別のテストケース識別子によって一意的に特定される、前記ステップと、前記変更されたコードブロックに関するテスト実行結果を、前記テストケースリストの前記少なくとも1つのテストケースを各テストケースの前記個別の開始優先度に基づき前記テストケースランチャを使用して非同期的に実行することによって、発生させるステップと、前記テスト実行結果を、前記GUIを用いて前記ユーザに伝達するステップと、を含む方法。前記テストケースリストを前記生成するステップは、前記作成するステップからの前記入力コードの第1のスナップショットを取得するステップであって、前記第1のスナップショットは、前記影響アナライザの実行スタックの一部である、前記ステップと、前記第1のスナップショットを構文解析することによって、前記入力コードのコードブロック構造を構築するステップであって、前記コードブロック構造は、前記入力コードにおいて採用されているプログラミング言語によって決定される、前記ステップと、前記ユーザが前記入力コードの変更を完了したことを検出すると、前記入力コードの第2のスナップショットを取得するステップと、前記変更されたコードブロックを、前記第1のスナップショットと、前記第2のスナップショットとを比較することによって決定するステップと、前記変更されたコードブロックによる影響を受ける少なくとも1つのコードブロックを、前記構築するステップからの前記コードブロック構造から選択し、その後、選択されたコードブロックそれぞれが前記変更されたコードブロックにどの程度強く関連するかを定量化する個別の関連強度に、前記選択されたコードブロックそれぞれを関係付けるステップと、前記選択された少なくとも1つのコードブロックおよび前記個別の関連強度を含む、テストケースを作成し、前記選択された少なくとも1つのコードブロックのすべての関連強度の合計として、前記テストケースの開始優先度を計算するステップと、前記作成されたテストケースおよび計算された開始優先度を、前記テストケースリストのエントリとして前記データベースに記憶するステップと、を含む、請求項1に記載の方法。選択されたコードブロックそれぞれの前記個別の関連強度は、前記選択されたコードブロックそれぞれと、前記変更されたコードブロックとの間の、前記コードブロック構造において決定される包含関係および呼び出し関係によって決定され、前記コードブロックそれぞれおよび前記変更されたコードブロックが相互に直接的に呼び出す場合、ならびに前記コードブロックそれぞれおよび前記変更されたコードブロックが互いを直接包含する場合、前記関連強度はより強く、前記コードブロックそれぞれの関連強度すべての合計が小さいほど、前記開始優先度はより強い、請求項2に記載の方法。前記テスト実行結果を前記発生させるステップは、前記データベースから前記テストケースリストを読み出すステップであって、前記データベースはリアルタイムのメモリ動作のために使用可能である、前記ステップと、前記読み出されたテストケースリストの少なくとも1つのテストケースを有する実行キューをセットするステップと、前記GUIを使用して、前記実行キューを前記ユーザに対して表示するステップと、前記表示された実行キューからの前記少なくとも1つのテストケースを、前記少なくとも1つのテストケースの各テストケースに関連する個別の開始優先度の順に、非同期的に実行するステップと、前記各テストケースの前記テスト実行結果を生成するステップであって、前記テスト実行結果は、前記テストケース識別子と、前記テストケースが成功か、または失敗かについてのインジケーションとを含む、前記ステップと、を含む、請求項1に記載の方法。前記テスト実行結果を前記発生させるステップは、前記表示の後で、前記ユーザに、実行する第1のテストケースを選択するよう促すステップであって、その結果前記ユーザは、前記第1のテストケースに関連する開始優先度にかかわらず前記テストケースを選択する、前記ステップと、第1のテスト実行結果を、前記選択された第1のテストケースを非同期的に実行することによって生成するステップと、をさらに含む、請求項4に記載の方法。コンピュータ可読記憶デバイスにおいて具現化されたコンピュータ可読プログラムコードを記憶している前記コンピュータ可読記憶デバイスを含むコンピュータプログラム製品であって、前記コンピュータ可読プログラムコードは、統合開発環境IDEにおいて非同期コードテストを実行する命令を含み、前記非同期コードテストは、ソースコードエディタを介してユーザによって提供された入力に従って、データベース内に入力コードを作成することであって、前記IDEは、前記ソースコードエディタ、影響アナライザ、テストケースランチャ、およびグラフィカルユーザインターフェースGUIを含み、前記データベースは、前記IDEをホストしている前記コンピュータに結合されている、前記作成すること、前記影響アナライザを使用して、前記入力コードからテストケースリストを生成することであって、前記影響アナライザは、前記ユーザが前記入力コードのコードブロックを変更した直後に前記テストケースリストが生成されるように、前記ソースコードエディタと同時に実行され、前記テストケースリストの各テストケースは、個別のテストケース識別子と、個別の開始優先度とを含む少なくとも1つのテストケースを含み、前記個別の開始優先度は、前記変更されたコードブロックに各テストケースがどの程度強く関連するかを定量化し、前記各テストケースは、前記個別のテストケース識別子によって一意的に特定される、前記生成すること、前記変更されたコードブロックに関するテスト実行結果を、前記テストケースリストの前記少なくとも1つのテストケースを各テストケースの前記個別の開始優先度に基づき前記テストケースランチャを使用して非同期的に実行することによって、発生させること、ならびに前記テスト実行結果を、前記GUIを用いて前記ユーザに伝達すること、を含むコンピュータプログラム製品。前記テストケースリストを前記生成することは、前記作成することからの前記入力コードの第1のスナップショットを取得することであって、前記第1のスナップショットは、前記影響アナライザの実行スタックの一部である、前記取得すること、前記第1のスナップショットを構文解析することによって、前記入力コードのコードブロック構造を構築することであって、前記コードブロック構造は、前記入力コードにおいて採用されているプログラミング言語によって決定される、前記構築すること、前記ユーザが前記入力コードの変更を完了したことを検出すると、前記入力コードの第2のスナップショットを取得すること、前記変更されたコードブロックを、前記第1のスナップショットと、前記第2のスナップショットとを比較することによって決定すること、前記変更されたコードブロックによる影響を受ける少なくとも1つのコードブロックを、前記構築することからの前記コードブロック構造から選択し、その後、選択されたコードブロックそれぞれが前記変更されたコードブロックにどの程度強く関連するかを定量化する個別の関連強度に、前記選択されたコードブロックそれぞれを関係付けること、前記選択された少なくとも1つのコードブロックおよび前記個別の関連強度を含む、テストケースを作成し、前記選択された少なくとも1つのコードブロックのすべての関連強度の合計として、前記テストケースの開始優先度を計算すること、ならびに前記作成されたテストケースおよび計算された開始優先度を、前記テストケースリストのエントリとして前記データベースに記憶すること、を含む、請求項6に記載のコンピュータプログラム製品。選択されたコードブロックそれぞれの前記個別の関連強度は、前記選択されたコードブロックそれぞれと、前記変更されたコードブロックとの間の、前記コードブロック構造において決定される包含関係および呼び出し関係によって決定され、前記コードブロックそれぞれおよび前記変更されたコードブロックが相互に直接的に呼び出す場合、ならびに前記コードブロックそれぞれおよび前記変更されたコードブロックが互いを直接包含する場合、前記関連強度はより強く、前記コードブロックそれぞれの関連強度すべての合計が小さいほど、前記開始優先度はより強い、請求項7に記載のコンピュータプログラム製品。前記テスト実行結果を前記発生させることは、前記データベースから前記テストケースリストを読み出すことであって、前記データベースはリアルタイムのメモリ動作のために使用可能である、前記読み出すこと、前記読み出されたテストケースリストの少なくとも1つのテストケースを有する実行キューをセットすること、前記GUIを使用して、前記実行キューを前記ユーザに対して表示すること、前記表示された実行キューからの前記少なくとも1つのテストケースを、前記少なくとも1つのテストケースの各テストケースに関連する個別の開始優先度の順に、非同期的に実行すること、前記各テストケースの前記テスト実行結果を生成することであって、前記テスト実行結果は、前記テストケース識別子と、前記テストケースが成功か、または失敗かについてのインジケーションとを含む、前記生成すること、を含む、請求項6に記載のコンピュータプログラム製品。前記テスト実行結果を前記発生させることは、前記表示の後で、前記ユーザに、実行する第1のテストケースを選択するよう促すことであって、その結果前記ユーザは、前記第1のテストケースに関連する開始優先度にかかわらず前記テストケースを選択する、前記促すこと、ならびに第1のテスト実行結果を、前記選択された第1のテストケースを非同期的に実行することによって生成すること、をさらに含む、請求項9に記載のコンピュータプログラム製品。プロセッサと、前記プロセッサに結合されたコンピュータ可読メモリユニットとを含むコンピュータシステムであって、前記コンピュータ可読メモリユニットは、前記プロセッサによって実行されると統合開発環境IDEにおける非同期コードテストの方法を実装する命令を含み、前記方法は、ソースコードエディタを介してユーザによって提供された入力に従って、データベース内に入力コードを作成するステップであって、前記IDEは、前記ソースコードエディタ、影響アナライザ、テストケースランチャ、およびグラフィカルユーザインターフェースGUIを含み、前記データベースは、前記IDEをホストしている前記コンピュータに結合されている、前記ステップと、前記影響アナライザを使用して、前記入力コードからテストケースリストを生成するステップであって、前記影響アナライザは、前記ユーザが前記入力コードのコードブロックを変更した直後に前記テストケースリストが生成されるように、前記ソースコードエディタと同時に実行され、前記テストケースリストの各テストケースは、個別のテストケース識別子と、個別の開始優先度とを含む少なくとも1つのテストケースを含み、前記個別の開始優先度は、前記変更されたコードブロックに各テストケースがどの程度強く関連するかを定量化し、前記各テストケースは、前記個別のテストケース識別子によって一意的に特定される、前記ステップと、前記変更されたコードブロックに関するテスト実行結果を、前記テストケースリストの前記少なくとも1つのテストケースを各テストケースの前記個別の開始優先度に基づき前記テストケースランチャを使用して非同期的に実行することによって、発生させるステップと、前記テスト実行結果を、前記GUIを用いて前記ユーザに伝達するステップと、を含む、コンピュータシステム。前記テストケースリストを前記生成するステップは、前記作成するステップからの前記入力コードの第1のスナップショットを取得するステップであって、前記第1のスナップショットは、前記影響アナライザの実行スタックの一部である、前記ステップと、前記第1のスナップショットを構文解析することによって、前記入力コードのコードブロック構造を構築するステップであって、前記コードブロック構造は、前記入力コードにおいて採用されているプログラミング言語によって決定される、前記ステップと、前記ユーザが前記入力コードの変更を完了したことを検出すると、前記入力コードの第2のスナップショットを取得するステップと、前記変更されたコードブロックを、前記第1のスナップショットと、前記第2のスナップショットとを比較することによって決定するステップと、前記変更されたコードブロックによる影響を受ける少なくとも1つのコードブロックを、前記構築するステップからの前記コードブロック構造から選択し、その後、選択されたコードブロックそれぞれが前記変更されたコードブロックにどの程度強く関連するかを定量化する個別の関連強度に、前記選択されたコードブロックそれぞれを関係付けるステップと、前記選択された少なくとも1つのコードブロックおよび前記個別の関連強度を含む、テストケースを作成し、前記選択された少なくとも1つのコードブロックのすべての関連強度の合計として、前記テストケースの開始優先度を計算するステップと、前記作成されたテストケースおよび計算された開始優先度を、前記テストケースリストのエントリとして前記データベースに記憶するステップと、を含む、請求項11に記載のコンピュータシステム。選択されたコードブロックそれぞれの前記個別の関連強度は、前記選択されたコードブロックそれぞれと、前記変更されたコードブロックとの間の、前記コードブロック構造において決定される包含関係および呼び出し関係によって決定され、前記コードブロックそれぞれおよび前記変更されたコードブロックが相互に直接的に呼び出す場合、ならびに前記コードブロックそれぞれおよび前記変更されたコードブロックが互いを直接包含する場合、前記関連強度はより強く、前記コードブロックそれぞれの関連強度すべての合計が小さいほど、前記開始優先度はより強い、請求項12に記載のコンピュータシステム。前記テスト実行結果を前記発生させるステップは、前記データベースから前記テストケースリストを読み出すステップであって、前記データベースはリアルタイムのメモリ動作のために使用可能である、前記ステップと、前記読み出されたテストケースリストの少なくとも1つのテストケースを有する実行キューをセットするステップと、前記GUIを使用して、前記実行キューを前記ユーザに対して表示するステップと、前記表示された実行キューからの前記少なくとも1つのテストケースを、前記少なくとも1つのテストケースの各テストケースに関連する個別の開始優先度の順に、非同期的に実行するステップと、前記各テストケースの前記テスト実行結果を生成するステップであって、前記テスト実行結果は、前記テストケース識別子と、前記テストケースが成功か、または失敗かについてのインジケーションとを含む、前記ステップと、を含む、請求項11に記載のコンピュータシステム。前記テスト実行結果を前記発生させるステップは、前記表示の後で、前記ユーザに、実行する第1のテストケースを選択するよう促すステップであって、その結果前記ユーザは、前記第1のテストケースに関連する開始優先度にかかわらず前記テストケースを選択する、前記ステップと、第1のテスト実行結果を、前記選択された第1のテストケースを非同期的に実行することによって生成するステップと、をさらに含む、請求項14に記載のコンピュータシステム。コンピュータインフラストラクチャをサポートするプロセスであって、前記プロセスは、コンピューティングシステムにおけるコンピュータ可読コードの作成、統合、ホスト、維持、および展開のうちの少なくとも1つに関して少なくとも1つのサポートサービスを提供することを含み、前記コードは、前記コンピューティングシステムとともに、統合開発環境IDEにおける非同期コードテストの方法を実行することができ、前記方法は、コンピュータのプロセッサが、ソースコードエディタを介してユーザによって提供された入力に従って、データベース内に入力コードを作成するステップであって、前記IDEは、前記ソースコードエディタ、影響アナライザ、テストケースランチャ、およびグラフィカルユーザインターフェースGUIを含み、前記データベースは、前記IDEをホストしている前記コンピュータに結合されている、前記ステップと、前記影響アナライザを使用して、前記入力コードからテストケースリストを生成するステップであって、前記影響アナライザは、前記ユーザが前記入力コードのコードブロックを変更した直後に前記テストケースリストが生成されるように、前記ソースコードエディタと同時に実行され、前記テストケースリストの各テストケースは、個別のテストケース識別子と、個別の開始優先度とを含む少なくとも1つのテストケースを含み、前記個別の開始優先度は、前記変更されたコードブロックに各テストケースがどの程度強く関連するかを定量化し、前記各テストケースは、前記個別のテストケース識別子によって一意的に特定される、前記ステップと、前記変更されたコードブロックに関するテスト実行結果を、前記テストケースリストの前記少なくとも1つのテストケースを各テストケースの前記個別の開始優先度に基づき前記テストケースランチャを使用して非同期的に実行することによって、発生させるステップと、前記テスト実行結果を、前記GUIを用いて前記ユーザに伝達するステップと、を含む、プロセス。前記テストケースリストを前記生成するステップは、前記作成するステップからの前記入力コードの第1のスナップショットを取得するステップであって、前記第1のスナップショットは、前記影響アナライザの実行スタックの一部である、前記ステップと、前記第1のスナップショットを構文解析することによって、前記入力コードのコードブロック構造を構築するステップであって、前記コードブロック構造は、前記入力コードにおいて採用されているプログラミング言語によって決定される、前記ステップと、前記ユーザが前記入力コードの変更を完了したことを検出すると、前記入力コードの第2のスナップショットを取得するステップと、前記変更されたコードブロックを、前記第1のスナップショットと、前記第2のスナップショットとを比較することによって決定するステップと、前記変更されたコードブロックによる影響を受ける少なくとも1つのコードブロックを、前記構築するステップからの前記コードブロック構造から選択し、その後、選択されたコードブロックそれぞれが前記変更されたコードブロックにどの程度強く関連するかを定量化する個別の関連強度に、前記選択されたコードブロックそれぞれを関係付けるステップと、前記選択された少なくとも1つのコードブロックおよび前記個別の関連強度を含む、テストケースを作成し、前記選択された少なくとも1つのコードブロックのすべての関連強度の合計として、前記テストケースの開始優先度を計算するステップと、前記作成されたテストケースおよび計算された開始優先度を、前記テストケースリストのエントリとして前記データベースに記憶するステップと、を含む、請求項16に記載のプロセス。選択されたコードブロックそれぞれの前記個別の関連強度は、前記選択されたコードブロックそれぞれと、前記変更されたコードブロックとの間の、前記コードブロック構造において決定される包含関係および呼び出し関係によって決定され、前記コードブロックそれぞれおよび前記変更されたコードブロックが相互に直接的に呼び出す場合、ならびに前記コードブロックそれぞれおよび前記変更されたコードブロックが互いを直接包含する場合、前記関連強度はより強く、前記コードブロックそれぞれの関連強度すべての合計が小さいほど、前記開始優先度はより強い、請求項17に記載のプロセス。前記テスト実行結果を前記発生させるステップは、前記データベースから前記テストケースリストを読み出すステップであって、前記データベースはリアルタイムのメモリ動作のために使用可能である、前記ステップと、前記読み出されたテストケースリストの少なくとも1つのテストケースを有する実行キューをセットするステップと、前記GUIを使用して、前記実行キューを前記ユーザに対して表示するステップと、前記表示された実行キューからの前記少なくとも1つのテストケースを、前記少なくとも1つのテストケースの各テストケースに関連する個別の開始優先度の順に、非同期的に実行するステップと、前記各テストケースの前記テスト実行結果を生成するステップであって、前記テスト実行結果は、前記テストケース識別子と、前記テストケースが成功か、または失敗かについてのインジケーションとを含む、前記ステップと、を含む、請求項16に記載のプロセス。前記テスト実行結果を前記発生させるステップは、前記表示の後で、前記ユーザに、実行する第1のテストケースを選択するよう促すステップであって、その結果前記ユーザは、前記第1のテストケースに関連する開始優先度にかかわらず前記テストケースを選択する、前記ステップと、第1のテスト実行結果を、前記選択された第1のテストケースを非同期的に実行することによって生成するステップと、をさらに含む、請求項19に記載のプロセス。プログラムコードは、複数のモジュールを含み、これらが互いに呼び出しを行って、リターン時にデータを交換するため、プログラムコードのデバッギングは、従来のIDEツールを用いても効率が悪く、大きな労働力を要する。本発明の一実施形態によれば、統合開発環境IDEにおける非同期コードテストasynchronouscodetestingの方法は、コンピュータのプロセッサが、ソースコードエディタを介してユーザによって提供された入力に従って、データベース内に入力コードを作成するステップであって、IDEは、ソースコードエディタ、影響アナライザimpactanalyzer、テストケースランチャtestcaselauncher、およびグラフィカルユーザインターフェースGUI:graphicaluserinterfaceを含み、データベースは、IDEをホストしているコンピュータに結合されている、該ステップと、影響アナライザを使用して、入力コードからテストケースリストを生成するステップであって、影響アナライザは、ユーザが入力コードのコードブロックを変更した直後にテストケースリストが生成されるように、ソースコードエディタと同時に実行され、テストケースリストの各テストケースは、個別のテストケース識別子と、個別の開始優先度launchingpriorityとを含む少なくとも1つのテストケースを含み、個別の開始優先度は、前記変更されたコードブロックに各テストケースがどの程度強く関連するかを定量化し、前記各テストケースは、個別のテストケース識別子によって一意的に特定される、該ステップと、変更されたコードブロックに関するテスト実行結果を、テストケースリストの前記少なくとも1つのテストケースを各テストケースの個別の開始優先度に基づきテストケースランチャを使用して非同期的に実行することによって、発生させるステップと、テスト実行結果を、GUIを用いてユーザに伝達するステップとを含む。本発明の一実施形態によれば、コンピュータプログラム製品は、コンピュータ可読プログラムコードを具現化するコンピュータ可読メモリユニットを含む。コンピュータ可読プログラムコードは、コンピュータシステムのプロセッサによって実行されると統合開発環境IDEにおける非同期コードテストの方法を実装する命令を含む。本発明の一実施形態によれば、コンピュータシステムは、プロセッサと、プロセッサに結合されたコンピュータ可読メモリユニットとを含み、コンピュータ可読メモリユニットは、プロセッサによって実行されると統合開発環境IDEにおける非同期コードテストの方法を実装する命令を含む。本発明の一実施形態によれば、コンピュータインフラストラクチャをサポートするプロセスは、コンピューティングシステムにおけるコンピュータ可読コードの作成、統合、ホスト、維持、および展開のうちの少なくとも1つに関して少なくとも1つのサポートサービスを提供することを含み、このコードは、コンピューティングシステムとともに、統合開発環境IDEにおける非同期コードテストの方法を実行することができる。図1は、本発明の実施形態による、統合開発環境IDEツール21における非同期コードテストのためのシステム10を示す。システム10は、ユーザ11、統合開発環境IDEツール21、およびIDEツール21に結合されたデータベース31を含む。本発明の一実施形態では、データベース31は、IDEツール21をホストするコンピュータシステムの記憶装置/メモリデバイスから割り当てられる。採用されるコンピュータシステムのコンポーネントの詳細については、下記の図10の説明を参照されたい。IDEツール21は、ソースコードエディタ22、影響アナライザ23、テストケースランチャ24、およびグラフィカルユーザインターフェースGUI25を含む。IDEツール21はさらに、コンパイラ、ローダ、リンカなどの従来のIDEツールの典型的なコンポーネントを含むが、これらについては本明細書には記載されない。IDEツール21によって実行されるステップについては、下記の図2の説明を参照されたい。IDEツールは、典型的には、ソフトウェア開発プロジェクトにおいて、プログラマのブログラミング効率および生産性を改善するために採用される。従来の統合開発環境IDEツールの例は、特に、EclipseTM、IBMIBM社の登録商標RationalIBM社の登録商標ApplicationDeveloperRAD、MicrosoftR.NETTMVisualStudioRなどであると考えられるEclipseは、EclipseFoundationの米国およびその他の国々における商標であり、IBMおよびRationalはインターナショナルビジネスマシーンズコーポレーションの米国およびその他の国々における登録商標であり、Microsoft、VisualStudioおよび.NETは、MicrosoftCorporationの米国およびその他の国々における登録商標または商標である。ユーザ11は、GUI25を介してIDEツール21と対話して、データベース31内の入力コード32を作成し、それを編集し、さらに影響アナライザ23によって生成される1つ以上のテストケースを実行するためにテストケースランチャ24を動作させる。入力コード32は、ユーザ11がソフトウェアプロジェクトの一部として開発している対象コードである。典型的なソフトウェア開発方法では、ユーザ11は、対象コードを編集し、対象コードをテストして対象コードが意図した結果を発生させるかどうか確かめるというサイクルを繰り返す。ユーザ11が対象コードを変更すると、ユーザ11はさらに、対象コードの変更に対応するテストケースも書く必要がある。テストケースは、対象コードに出現する各変数のデータ値および条件の組み合わせであり、変更された対象コードがどのように動くかを検査し、変更された対象コードによって生成される結果を得るためのものである。テストケースの実行において、従来のIDEツールは、順次または同期実行モードを利用し、対象コードの呼び出し元callerは、呼び出し先calleeのリターンを待ってからプログラムフローを続行する。順次実行モードとは対照的に、対象コードが非同期実行モードで実行される場合、対象コードの呼び出し元は、呼び出し先のリターンを待たず、呼び出し先を呼び出した後は次のステップへと続行する。呼び出されるモジュールはそれぞれ、呼び出し先モジュールまたは単に呼び出し先とも呼ばれ、呼び出し元モジュールのスレッドとは別のスレッドで実行される。呼び出し先は、呼び出し先が実行を完了した後、呼び出し先のスレッドを終了させ、呼び出し元モジュールに制御を返す。マルチスレッド処理環境でのバックグラウンド処理のように、通常、時間のかかる動作は、非同期的に実行される。本明細書では、テストケースという用語は、変更されたコードブロックに関連する一連の条件、もしくは変数のインスタンス、またはその両方として定義され、対象コードが正しく動作し、対象コードを変更する際にユーザが意図した結果を発生させるかどうかを、ユーザが判断できるようにするものである。ソフトウェア工学で典型的なテストケースフォーマットは、特に、テストケース識別子、説明、ステップ番号/実行順序、前提条件単数または複数、深度、フラグなどを含む。IBMWebSphereIBM社の登録商標StudioAssetAnalyzerWSAAは、メインフレーム、JavaR、および複合アプリケーションを含む企業アプリケーション内および企業アプリケーション間の依存関係について自動解析を提供する、市販のIT維持ツールの例であるWebSphereは、インターナショナルビジネスマシーンズコーポレーションの米国およびその他の国々における登録商標であり、Javaは、SunMicrosystemsの米国およびその他の国々における商標または登録商標である。本発明の一実施形態では、テストケースフォーマットは、JUnitテストケースクラスorg.junit.Testをインポートすることによって使用される、Javaプログラミング言語のJUnitモデルを採用する。影響アナライザ23は、データベース31への入力コード32の更新がユーザ11によって行われると、入力コード32を自動的に解析する。その後、影響アナライザ23は、テストケースと、個々に関連する開始優先度との少なくとも1つのペア、すなわちtestcase,launchingpriorityを含むテストケースリスト33を生成し、テストケースリストをデータベース31に記憶する。影響アナライザ23によって実行されるステップおよびテストケースリスト33の詳細については、下記の図3の説明を参照されたい。テストケースリスト33の例については、下記の図8を参照されたい。入力コード32の各コードブロックは、ユーザ11によって変更された入力コード32のコードブロックと関係している。コードブロックは、ユーザ11によって入力コード32において採用されたプログラミング言語によって定義される。変更されたコードブロックと、各コードブロックとの間の個別の関連度は、入力コード32において採用されたプログラミング言語の構造に従って決定される。本明細書では、コードブロックという用語は、特定可能なプログラミング要素または単位として定義される。変更されたコードブロックと、入力コード32の各コードブロックとの間の個別の関連度は、各コードブロックの個別の関連強度associationstrength値として定量化される。関連強度の計算において考慮される要素は、特に、深度と呼ばれるコードブロックのネスティングレベル、コードブロックを呼び出す呼び出し元の数、呼び出しの頻度などであればよい。影響アナライザ23は、コードブロック単位に基づき各テストケースを生成し、テストケース内のコードブロックと、変更されたコードブロックとの間のすべての関連強度の合計/優先度を集合的に表すよう、各テストケースの個別の開始優先度を計算する。したがって、テストケースが、変更されたコードブロックに強く関連するコードブロックを含む場合、テストケースの開始優先度は、そのような、2つのコードブロック間の強い関連を反映する。テストケースランチャ24は、影響アナライザ23によって生成されたテストケースリスト33を、データベース31から読み出し、様々な実行モードでテストケースリスト33のテストケースを実行する。テストケースランチャ24は、テストケースリスト33を実行キュー42に記憶し、実行キュー42では、テストケースリスト33内のテストケースが、各テストケースの個々に関連する開始優先度によって順序付けられる。テストケースランチャ24によって実行されるステップに関しては、下記の図4の説明を参照されたい。本発明の一実施形態では、テストケースランチャ24は、GUI25を介してユーザ11によって選択されたテストケースを実行する。テストケースランチャ24は、各テストケースを実行してテスト実行結果34を生成するためにユーザによってトリガされると、実行キュー42をポップする。本発明の他の実施形態では、テストケースランチャ24は、各テストケースの個々に関連する開始優先度に従って、テストケースリスト33のテストケースを自動的に実行する。本発明の同実施形態では、影響アナライザ23およびテストケースランチャ24が、リアルタイムで何のユーザ対話もなくシームレスに動作するため、ユーザ11が入力コード32のコードブロックを更新し、関係のあるテストケースのコンテキストが完成すると、ユーザ11は、即座にテスト実行結果34を見ることができる。データベース31は、ユーザ11によって提供された入力コード32と、影響アナライザ23によって生成されたテストケースリスト33と、テストケースランチャ24によって生成されたテスト実行結果34とを記憶する。ユーザ11は、GUI25およびソースコードエディタ22を使用して、入力コード32を変更する。影響アナライザ23は、テストケースランチャ24がアクセスするよう、データベース31内にテストケースリスト33を記憶する。影響アナライザ23およびテストケースランチャ24が同じプラットフォーム上で実行される本発明の実施形態では、データベース31は、リアルタイム応答のために、ローカルメモリデバイスとして実装されるとよい。本発明は、ソフトウェアプロジェクトのデバッギング効率/作業生産性を改善するためのIDEツール21のコンポーネントとして、ソフトウェア開発の統合テスト段階よりも、特に単体テスト段階で実装されるとよい。入力コードが更新されるたびにテストケースを自動的に実行することによって、ユーザは、入力コードの更新のテストケースを作成および実行する時間を節約することができる。さらに、コーディング段階の間に各更新を自動でテストすることで、累積エラーの可能性が減り、結果として、更新された入力コードにおいて不具合の原因をより容易に特定できるようになる。さらに、テストケースを非同期的に実行することによって、入力コード内の更新されたコードブロックのテストにおいて、呼び出し先の動作によってもたらされる遅延を伴わずに、テスト結果が生成されることが可能である。様々なプログラミング言語の従来の単体テストフレームワークは、特に、JavaのJUnit、C言語のCUnit、EclipseFoundationのEclipseTMプロセスフレームワークEPF:EclipseProcessFrameworkであるEclipseはEclipseFoundationの米国およびその他の国々における商標または登録商標。本発明は、ユーザが、変更された入力コードを別々にテストしなくても入力コードの変更の結果をリアルタイムで見ることができるようにする。図2は、本発明の実施形態による、上記の図1の統合開発環境IDEツールによって実行される非同期コードテストの方法を示すフローチャートである。ステップ110において、IDEツールは、データベースもしくはその他任意のメモリデバイスまたはその両方に、ソースコードエディタを用いたユーザ入力に基づき、入力コードを作成するが、この作成は、この入力コードがデータベースもしくはその他任意のメモリデバイスまたはその両方に存在しない場合に行われる。入力コードが既にデータベースもしくはその他任意のメモリデバイスまたはその両方に存在する場合は、IDEツールは、データベースに記憶されている入力コードを、ユーザ入力に基づき更新する。IDEツールは、ステップ120に移る。ステップ120でIDEツールの影響アナライザは、ステップ110で作成/更新された入力コードに対応するテストケースリストを生成する。テストケースリストは、少なくとも1つのテストケースと、前記少なくとも1つのテストケースの各テストケースに関連する個別の開始優先度とを含む。影響アナライザは、ユーザがソースコードエディタを用いて入力コードを編集する間、ソースコードエディタと同時に実行される。影響アナライザは、ソースコードエディタから入力コードの更新を検出すると、入力コードの更新を解析するようトリガされる。影響アナライザによって実行されるステップについては、下記の図3の説明を参照されたい。IDEツールは、ステップ130に移る。ステップ130で、IDEツールは、テストケースランチャを実行して、ステップ120で影響アナライザによって作成されたテストケースリストを実行することによって、テスト実行結果を生成する。本発明の一実施形態では、テストケースランチャは、開始優先度に従ってテストケースリストを自動的に実行するよう構成されている。本発明の他の実施形態では、テストケースランチャは、ユーザによってテストケースランチャのグラフィカルユーザインターフェースGUIを介して選択される、テストケースリストのエントリを実行するよう構成されている。テストケースランチャによって実行されるステップについては、下記の図4の説明を参照されたい。IDEツールは、ステップ140に移る。ステップ140で、IDEツールは、ステップ130でテストケースランチャによって生成されたテスト実行結果を、テストケースランチャのGUIを介してユーザに伝達する。テストケースランチャユーザインターフェースの例については、図9および付随する説明を参照されたい。IDEツールは、ステップ110で入力コードに対して行われた更新の非同期コードテストを完了する。IDEツールは、ユーザがデータベースの入力コードを修正すれば、ステップ110~140を繰り返すとよい。図3は、本発明の実施形態による、上記の図2のステップ120の影響アナライザによって実行される、入力コードに対する更新のコードブロック構造を解析する方法を示すフローチャートである。ステップ210で、影響アナライザは、入力コードを、データベースもしくはその他のメモリデバイスまたはその両方から、影響アナライザのローカルメモリにロードする。その後、影響アナライザは、ロードされた入力コードに対応する第1のスナップショットを作る。本明細書では、スナップショットという用語は、ソースコードエディタを介して表示されるとおりの最新の入力コードを含む、影響アナライザの実行スタックrunstackから獲得される一連のデータとして定義される。デバッギングのコンテキストでは、スナップショットという用語は、Javaスタックトレースにおける、Java仮想マシンJVM:JavaVirtualMachineのスレッド状態を示すようより広く使用されている。任意のプロセスの実行スタックのコンテンツは一時的なものであるが、実行スタックコンテンツを用いて作られたスナップショットは、通常の1つのデータとして、不変でアクセス可能な状態が保たれる。影響アナライザは、ステップ220に移る。ステップ220で、影響アナライザは、ステップ210の第1のスナップショットを構文解析し、第1のスナップショットのコードブロック構造を構築する。コードブロック構造は、入力コード用に採用されたプログラミング言語の構文に従って決定される。入力コードがJavaプログラミング言語を利用するコードブロック構造の例については、下記の図5、6、7、8を参照されたい。コードブロック構造は、本明細書では、コールパス情報callpathinformationと呼ばれることもある。影響アナライザは、ステップ230に移る。ステップ230で、影響アナライザは、ユーザによる入力コードの更新を検出するが、これはユーザがソースコードエディタ内でプログラムコードの変更を行った場合である。本発明の一実施形態では、ソースコードエディタは、ユーザが、入力コードのプログラミング要素を完成させた後に所定の期間タイピングを休止すると、入力コードに対する更新を影響アナライザに通知するよう構成されている。例えば、ユーザがprinta;をタイピングした後15秒間休止すると、影響アナライザは入力コードの更新を検出する。影響アナライザは、ステップ240に移る。ステップ240で、影響アナライザは、ステップ230で検出された変更された入力コードに対応する第2のスナップショットを作る。影響アナライザは、ステップ250に移る。ステップ250で、影響アナライザは、ステップ210からの第1のスナップショットと、ステップ240からの第2のスナップショットとを比較することによって、変更されたコードブロックを決定する。影響アナライザは、ステップ260に移る。ステップ260で、影響アナライザは、testcase,launchingpriorityとして表記される、テストケースと、各テストケースに個々に関連する開始優先度との少なくとも1つのペアを含むテストケースリストを、ステップ220で構築されたコードブロック構造に基づき作成する。各テストケースは、codeblock,associationstrengthの1つ以上のペアを含み、第1の引数codeblockは、第2のスナップショットと、第1のスナップショットとの間の変化による影響を受けるコードブロックを特定し、第2の引数associationstrengthは、第1の引数として特定されたコードブロックが、変更されたコードブロックにどの程度強く関連するかを定量化する。テストケースの開始優先度は、テストケース内の影響されるすべてのコードブロックのすべての関連強度の合計/優先度を集合的に表すよう計算される。影響アナライザは、ステップ270に移る。本発明の一実施形態では、影響アナライザは、組sourcefileid,codeblockidを用いてテストケース内のコードブロックを示す。本発明の同実施形態において、第2のパラメータのcodeblockidは、コールパス情報をさらに含む。テストケースリストのエントリおよびテストケースリストのインスタンスの個別の例については、下記の図7および8を参照されたい。ステップ270において、影響アナライザは、テストケースランチャがテストケースをリアルタイムで実行するよう、ステップ260で生成されたテストケースリストを、データベースもしくはその他の高速メモリデバイスまたはその両方に記憶する。本発明の他の実施形態では、影響アナライザは、生成されたテストケースリストを、テストケースランチャに直接的に伝達するとよい。影響アナライザは、入力コードの更新の処理を完了し、IDEツールは、上記の図2のステップ130に移る。図4は、本発明の実施形態による、上記の図2のステップ130のテストケースランチャによって実行される、テストケースリストのエントリを実行してテスト実行結果を生成する方法を示すフローチャートである。ステップ310で、テストケースランチャは、データベースもしくはその他の高速メモリデバイスまたはその両方から、上記の図3のステップ270で影響アナライザが記憶したテストケースリストを読み出す。テストケースランチャは、ステップ320に移る。ステップ320で、テストケースランチャは、読み出されたテストケースリストからのテストケースを有する実行キューを構成する。一実施形態では、実行キューは、テストケースリスト内の各テストケースの開始優先度に基づき順序付けられる。テストケースランチャは、ステップ330に移る。ステップ330で、テストケースランチャは、実行キューをユーザに表示する。テストケースランチャは、ステップ340に移る。ステップ340で、テストケースランチャは、実行キュー内のテストケースを、各テストケースに関連する個別の開始優先度の順に実行する。本発明の一実施形態では、テストケースランチャは、実行キュー内の各テストケースを非同期実行モードで自動的に実行するよう構成されている。別の実施形態では、テストケースランチャは、各テストケースの個別の開始優先度にかかわらず、非同期テスト用のテストケース単数または複数を選択するようユーザに促すよう構成されている。ユーザが実行キューからテストケースを選択すると、テストケースランチャは、選択されたテストケースを非同期実行モードで実行する。テストケースランチャは、ステップ350に移る。ステップ350で、テストケースランチャは、ステップ340から生じたデータを記録すること、もしくはデータをデータベースに記憶すること、またはその両方によってテスト実行結果を生成する。テストケースランチャは、テストケースリストの処理を完了し、IDEツールは、上記の図2のステップ140に移る。図5は、本発明の実施形態による、上記の図3のステップ220で影響アナライザによって構築された静的なコードブロック構造を有する、データベースに記憶された入力コードの例である。行L101~L117は、関数Mainを構成し、これは、Javaプログラミング言語のコードブロック構造における最上位コードブロックAである。行L102~L113は、関数func1を構成し、これは、最上位コードブロックA内の第1の第2位コードブロックBである。行L103~L112は、forループを構成し、これは、第1の第2位コードブロックB内の第1の第3位コードブロックCである。行L104~L111は、forループの本体を構成し、これは、第1の第3位コードブロックC内の第4位コードブロックDである。行L106~L108は、第1のif条件節を構成し、これは、第4位コードブロックD内の第1の第5位コードブロックEである。行L107は、第1のif条件節の本体を構成し、これは、第1の第5位コードブロックE内の第1の第6位コードブロックFによって表されている。第1の第6位コードブロックFは、条件p1>1000が満たされると実行される。第1の第6位コードブロックFは、行L114から始まる関数func2を呼び出す。行L109~L111は、第2のif条件節を構成し、これは、第4位コードブロックD内の第2の第5位コードブロックGである。行L110は、第2のif条件節の本体を構成し、これは、第2の第5位コードブロックG内の第2の第6位コードブロックHによって表されている。第2の第6位コードブロックHは、条件p2<0が満たされると実行される。第2の第6位コードブロックHは、新たな値100を変数p2に代入する。行L114~L116は、関数func2を構成し、これは、最上位コードブロックA内の第2の第2位コードブロックIである。行L115は、関数func2の本体を構成し、これは、第2の第2位コードブロックI内の第2の第3位コードブロックJによって表されている。第2の第2位コードブロックIは、行L107から関数func2が呼び出されると実行される。図6は、本発明の実施形態による、上記の図5のコードブロック間の様々な関係を示す。本発明の同実施形態において、静的なコードブロック構造が、利用されているプログラミング言語の構造に基づき、影響アナライザもしくは従来の静的解析ツールまたはその両方によって自動的に解析されるとよい。上記の図5のJavaコードブロックA、B、C、D、E、F、G、H、I、およびJは、上位コードブロックが下位コードブロックを含むよう、すなわちネストするよう、階層的に構造化されている。実線の矢は、個別の上位コードブロックから始まり個別の下位コードブロックへ向かう、コードブロック間の静的な包含関係を表す。図6に示されている包含関係は、A→B→C→D→E→F、A→B→C→D→G→H、およびA→I→Jである。FからIへの破線の曲線は、コードブロックFがコードブロックIを呼び出すことを表し、これは、コードブロック間の動的呼び出し関係と呼ばれる。本発明の同実施形態において、テストケースは、JUnitフォーマットの自動実行可能なソースコードである。第1のテストケースT1は、func11000,2000であり、すなわち、func1を、引数intp1=1000、intp2=2000により呼び出し、第1のテストケースT1の実行シーケンスは、上記の図5の包含関係および呼び出し関係に基づき、B-C-D-E-F-I-Jである。第2のテストケースT2は、func2123であり、すなわち、func2を、引数intd=123により呼び出し、第2のテストケースT2の実行シーケンスは、上記の図5の包含関係および呼び出し関係に基づき、I-Jである。ユーザがコードブロックJを編集すると、第2のテストケースT2が第1のテストケースT1よりもコードブロックJにより直接的に関連することから、影響アナライザは、第1のテストケースT1よりも高い開始優先度を、第2のテストケースT2に指定し、コードブロックJの更新が、第1のテストケースT1よりも第2のテストケースT2の方に強く影響を及ぼすことを示す。個別の開始優先度に従って、第2のテストケースT2が最初に実行され、続いて第1のテストケースT1が実行される。本発明の別の実施形態では、ユーザは、個別の開始優先度をオーバーライドして、テストケースを実行する順序を調整することもできる。図7および8は、本発明の実施形態による、図3のステップ260において影響アナライザによって作成されたテストケースリストの例を示す。図7は、本発明の実施形態による、テストケースリストのエントリとしての例示のテストケースフォーマットである。テストケースは、テストケースidAおよびテストケース開始優先度Bを含む。テストケースidAによって表されている各テストケースは、m個のコードブロックA1...Amを含み、mは各テストケースの個別の正の整数である。図8は、本発明の実施形態による、影響アナライザが上記の図3のステップ270を実行した後にデータベースに記憶される、テストケースリストの例を示す。テストケースリストは、n個のテストケースを含み、nは正の整数である。第jのテストケースは、m個のコードブロックを有し、mはjの個別の正の整数である。第jのテストケース内の第kのコードブロックは、CB_IDkとして示されている、コードブロックを表すコードブロック識別子と、CB_CPkとして示されている、コードブロックのコールパスと、CB_ASkとして示されている、コードブロックと更新されたコードブロックとの間の関連強度とを含む。本発明のこの実施形態では、関連強度の値が小さいほど、呼び出しもしくは包含またはその両方の関係に基づく、2つのブロック間の関連がより強いことを示す。この例では、変更されたコードブロックは、SRC_001_001として示されている第1のソースファイルの第1のコードブロックとして特定される。第1のテストケースは、テストケースidTC_001と、3つのコンポーネントコードブロックのすべての関連強度の合計である、八8という開始優先度とを含む。第1のテストケースTC_001は、個別のコードブロックid、SRC_001_001、SRC_001_002、およびSRC_002_034によって表されている3つのコードブロックを含む。第1のコードブロックSRC_001_001は、コールパスSRC_001によって表されている第1のソースファイルを介して呼び出される。第1のコードブロックSRC_001_001は、一1という関連強度を有するが、これは、第1のコードブロックSRC_001_001の包含深度によって計算される。第1のテストケースTC_001の第2のコードブロックSRC_001_002も、コールパスSRC_001によって表されている第1のソースファイルを介して呼び出される。第2のコードブロックSRC_001_002は、二2という関連強度を有する。第3のコードブロックSRC_002_034は、コールパスSRC_002によって表されている第2のソースファイルを介して呼び出される。第3のコードブロックSRC_002_034は、五5という関連強度を有する。第2のテストケースは、テストケースidTC_002と、4つのコンポーネントコードブロックのすべての関連強度の合計である、十八18という開始優先度とを含む。第2のテストケースTC_002は、個別のコードブロックid、SRC_001_001、SRC_001_002、SRC_002_034、およびSRC_002_050によって表されている4つのコードブロックを含む。最初の3つのコードブロックは、第1のテストケースTC_001と同じである。第4のコードブロックSRC_002_050は、コールパスSRC_002によって表されている第2のソースファイルを介して呼び出される。第4のコードブロックSRC_002_050は、十10という関連強度を有し、これは、第4のコードブロックSRC_002_050が、変更されたコードブロックと弱く関連しているということを示す。2つのテストケースTC_001およびTC_002の間で、第1のテストケースTC_001は、八8というより高い開始優先度を有するため、テストケースランチャは、まず第1のテストケースTC_001を実行して、次に第2のテストケースTC_002を実行する。本発明の別の実施形態では、各コードブロックは、コードブロックidおよび関連強度のみを含んでもよく、その場合は影響アナライザが、コードブロックid内にコールパス情報を含め、テストケースランチャは、コードブロックidからコールパス情報を復号可能である。図9は、本発明の実施形態による、上記の図1の統合開発環境IDEツールの画面表示400を示す。編集:sample.javaという見出しのフレーム410は、ソースコードエディタのユーザウィンドウである。フレーム410は、上記の図5に示された入力コードを表示し、ユーザがフレーム410のウィンドウ内で入力コードを変更できるようにする。ユーザがプログラミング要素の更新を完了すると、影響アナライザは、第2のスナップショットを取得し、第2のスナップショットと、第1のスナップショットとを、入力コードのコードブロック構造に基づき比較することによって、変更されたコードブロックを特定する。実行するテストケース単数または複数という見出しのフレーム420は、上記の図4のステップ330を実行した結果としての、テストケースランチャの実行キューの表示ウィンドウである。本発明の一実施形態では、テストケースランチャは、各テストケースの個別のテストケースidおよび簡単な説明を表示する。テストケースの説明の例は、特に、func1の通常システムテスト、func2の異常システムテスト、外部呼び出しテストなどであってもよい。テスト結果単数または複数という見出しのフレーム430は、テストケースランチャによって生成されたテスト実行結果の表示ウィンドウである。テスト実行結果は、テストケースが成功か否か、失敗したテストケース識別子および所定のエラーコード、欠けているデータ項目などを示すとよい。図10は、本発明の実施形態による、統合開発環境IDEにおける非同期コードテストに使用されるコンピュータシステム90を示す。コンピュータシステム90は、プロセッサ91、プロセッサ91に結合された入力デバイス92、プロセッサ91に結合された出力デバイス93、ならびにプロセッサ91にそれぞれ結合されたメモリデバイス94および95を含む。本明細書では、コンピュータシステム90は、任意の種類のプログラム可能データ処理装置を表す。入力デバイス92は、コンピュータシステム90への入力データ96を受け取るために利用される。入力デバイス92は、特に、キーボード、マウス、キーパッド、タッチスクリーン、スキャナ、音声認識デバイス、センサ、ネットワークインターフェースカードNIC:networkinterfacecard、ボイス/ビデオオーバーインターネットプロトコルVOIP:Voice/videooverInternetProtocolアダプタ、無線アダプタ、電話アダプタ、専用回線アダプタなどとしてもよい。出力デバイス93は、コンピュータプログラムコード97によって生成された結果をコンピュータシステム90のユーザに伝達するために利用される。出力デバイス93は、特に、プリンタ、プロッタ、コンピュータ画面、磁気テープ、リムーバブルハードディスク、フレキシブルディスク、NIC、VOIPアダプタ、無線アダプタ、電話アダプタ、専用回線アダプタ、可聴信号生成器もしくは可視信号生成器、またはその両方、発光ダイオードLED:lightemittingdiodeなどとしてもよい。本発明のコンポーネントはいずれも、本発明の統合開発環境IDEにおける非同期コードテストのプロセスに関してコンピューティングインフラストラクチャを展開または統合することを提案するサービスプロバイダにより展開、管理、サービス提供などされることができる。したがって、本発明は、コンピュータ可読コードをコンピューティングシステム例えばコンピュータシステム90に統合、ホスト、維持、および展開することを含む、コンピュータインフラストラクチャをサポートするプロセスを開示し、このコードは、コンピューティングシステムとともに、統合開発環境IDEにおける非同期コードテストの方法を実行することができる。別の実施形態では、本発明は、契約、宣伝、もしくは手数料、またはそのいずれかの組み合わせに基づき本発明のプロセスステップを実行する方法を提供する。すなわち、ソリューションインテグレータなどのサービスプロバイダは、本発明の統合開発環境IDEにおける非同期コードテストのプロセスを、作成、維持、サポートなどすることを提案することができる。この場合、サービスプロバイダは、1つ以上の顧客に対して本発明のプロセスステップを実行するコンピュータインフラストラクチャを作成、維持、サポートなどすることができる。見返りとして、サービスプロバイダは、契約もしくは手数料の取り決めもしくはその両方に従って顧客単数または複数から支払いを受け取ること、もしくは1つ以上のサードパーティに対する広告コンテンツの販売からの支払いを受け取ること、またはその両方ができる。図10は、コンピュータシステム90を、ハードウェアとソフトウェアとの特定の構成として示すが、当業者には周知であると考えられる、ハードウェアとソフトウェアとの任意の構成が、上記に記載された目的のために、図10の特定のコンピュータシステム90とともに利用されてもよい。例えば、メモリデバイス94および95は、独立したメモリデバイスではなく、単一のメモリデバイスの一部であってもよい。当業者であれば当然のことであるが、本発明の側面は、システム、方法またはコンピュータプログラム製品として具現化され得る。したがって、本発明の側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、または本願明細書においてすべて概して回路、モジュールもしくはシステムと呼ばれ得る、ソフトウェアおよびハードウェアの側面を兼ね備えた実施形態の形態をとってもよい。さらに、本発明の側面は、コンピュータ可読プログラムコードが具現化された1つ以上のコンピュータ可読媒体単数または複数において具現化されたコンピュータプログラム製品の形態をとることもできる。1つ以上のコンピュータ可読媒体単数または複数の任意の組み合わせが利用され得る。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体とされ得る。本明細書では、メモリデバイス94、95という用語は、コンピュータ可読記憶媒体を表す。コンピュータ可読記憶媒体は、例えば、限定はされないが、電子、磁気、光学、電磁気、赤外線、もしくは半導体システム、装置、もしくはデバイス、または前述のものの任意の適切な組み合わせとすることもできる。コンピュータ可読記憶媒体のより具体的な例包括的でないリストには、1つ以上のワイヤを有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM:randomaccessmemory、読み取り専用メモリROM:read-onlymemory、消去可能プログラム可能読み取り専用メモリEPROMerasableprogrammableread-onlymemoryまたはフラッシュメモリ、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリCD-ROM:compactdiscread-onlymemory、光学式記憶デバイス、磁気記憶デバイスまたは前述のものの任意の適切な組み合わせが含まれるであろう。この文書の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置もしくはデバイスによって、またはそれに関連して使用されるプログラムを含むこと、または記憶することができる任意の有形の媒体であればよい。コンピュータ可読信号媒体は、例えば、ベースバンドに、または搬送波の一部として、伝播データ信号において具現化されたコンピュータ可読プログラムコードを伴う伝播データ信号を含み得る。そのような伝播信号は、限定はされないが、電磁気、光学、またはその任意の適切な組み合わせを含む様々な形態のいずれかをとってよい。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でなく、命令実行システム、装置もしくはデバイスによって、またはそれに関連して使用されるプログラムを伝達すること、伝播させること、または搬送することができる、任意のコンピュータ可読媒体としてよい。コンピュータ可読媒体上に具現化されたプログラムコードは、限定はされないが、無線、有線、光ファイバケーブル、RFなど、または前述のものの任意の適切な組み合わせを含む任意の適切な媒体を使用して送られてもよい。本発明の側面の動作を実行するコンピュータプログラムコード97は、JavaR、SmalltalkR、Cまたは同様のものなどのオブジェクト指向プログラミング言語、およびCプログラミング言語もしくは同様のプログラミング言語などの従来の手続きプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。コンピュータプログラムコード97は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で実行されること、部分的にユーザのコンピュータ上で実行されること、または部分的にユーザのコンピュータ上で、かつ部分的にリモートコンピュータ上で実行されること、または完全にリモートコンピュータもしくはサーバ上で実行されることもできる。後者のシナリオでは、ローカルエリアネットワークLAN:localareanetwork、もしくは広域ネットワークWAN:wideareanetworkを含む任意のタイプのネットワークを介してリモートコンピュータがユーザのコンピュータに接続されてもよく、または、外部コンピュータに接続されてもよい例えば、インターネットサービスプロバイダを使用しインターネットを介して。本発明の側面は、本発明の実施形態による方法、装置システムおよびコンピュータプログラム製品のフローチャート図もしくはブロック図、またはその両方を参照して記載されている。当然のことながら、フローチャート図もしくはブロック図、またはその両方の各ブロック、およびフローチャート図もしくはブロック図、またはその両方の複数ブロックの組み合わせは、コンピュータプログラム命令により実装可能である。コンピュータプログラム命令という用語は、本明細書ではコンピュータプログラムコード97という用語と置き換え可能である。当該コンピュータプログラム命令が、マシンをもたらすよう、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能データ処理装置のプロセッサに提供されて、この命令が、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサを用いて実行されて、フローチャートもしくはブロック図またはその両方のブロックもしくは複数ブロックにおいて指定された機能/動作を実装する手段を作り出すようにすることもできる。さらに、特定の形で機能するようコンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスに指示することができる当該コンピュータプログラム命令は、コンピュータ可読記憶媒体に記憶されて、コンピュータ可読記憶媒体に記憶されたこの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくは複数ブロックにおいて指定された機能/動作を実装する命令を含む製品をもたらすようにすることもできる。さらに、コンピュータプログラム命令は、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスにロードされて、コンピュータ、その他のプログラム可能装置、またはその他のデバイス上で一連の動作ステップが実行されるようにしてコンピュータに実装されるプロセスをもたらし、コンピュータまたはその他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくは複数ブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。各図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法およびコンピュータプログラム製品の考えられる実装のアーキテクチャ、機能性および動作を示す。この関連で、フローチャートまたはブロック図内の各ブロックは、指定の論理機能単数または複数を実装する1つ以上の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すこともできる。なお、さらに、いくつかの代わりの実装では、ブロック内に示されている機能が、図面に示されているのとは異なる順序で生じてもよい。例えば、関連する機能性次第で、連続して示されている2つのブロックが実際には事実上同時に実行されてもよく、または、各ブロックが逆順で実行されることがあってもよい。なお、さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方の複数ブロックの組み合わせは、指定の機能もしくは動作を実行する専用ハードウェアベースシステム、または専用ハードウェアおよびコンピュータ命令の組み合わせにより実装することができる。特許請求の範囲のミーンズまたはステッププラスファンクション構成要素すべての対応する構造、材料、動作、および等価物は、明確に請求されている他の請求される構成要素とともに機能を実行する任意の構造、材料、または動作を含むものとする。本発明の記載は、例証および説明のために示されたものであるが、包括的であることも、開示された形態の発明に限定されることも目的としていない。当業者には、本発明の範囲および意図から逸脱することのない、多数の変更および変形が明らかであろう。実施形態は、本発明の原理および実際の応用をもっともよく説明して、当業者が、意図される特定の用途に適する様々な変更を用いた様々な実施形態に関して、本発明を理解できるように選ばれ、記載された。"