IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

<>
  • 特許-性能変動性予測器 図1
  • 特許-性能変動性予測器 図2
  • 特許-性能変動性予測器 図3
  • 特許-性能変動性予測器 図4
  • 特許-性能変動性予測器 図5
  • 特許-性能変動性予測器 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-05-27
(45)【発行日】2025-06-04
(54)【発明の名称】性能変動性予測器
(51)【国際特許分類】
   G06F 11/36 20250101AFI20250528BHJP
【FI】
G06F11/36
G06F11/3668
【請求項の数】 20
(21)【出願番号】P 2023504104
(86)(22)【出願日】2021-07-19
(65)【公表番号】
(43)【公表日】2023-08-10
(86)【国際出願番号】 CN2021107006
(87)【国際公開番号】W WO2022017306
(87)【国際公開日】2022-01-27
【審査請求日】2023-12-12
(31)【優先権主張番号】16/936,549
(32)【優先日】2020-07-23
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シン、スウェタ
(72)【発明者】
【氏名】アーナンド、マニッシュ
(72)【発明者】
【氏名】クルカルニ、ヴァイバブ、ムリダール
【審査官】西間木 祐紀
(56)【参考文献】
【文献】特開平09-293030(JP,A)
【文献】米国特許出願公開第2019/0155572(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/36
G06F 11/3668
(57)【特許請求の範囲】
【請求項1】
1または複数のコンピュータプロセッサによって、回帰されたビルドと同じリリースサイクルで実施された1または複数の履歴ビルドとの間の計算された類似性測定を利用して、1または複数の類似する履歴回帰テストおよび履歴ビルドを特定することであって、前記特定された1または複数の類似する履歴回帰テストおよび履歴ビルドは、前記回帰されたビルドのK個の最近傍であ、特定することと、
1または複数のコンピュータプロセッサによって、テストポイントからの対応する平均距離とターゲット変数としての経過時間とによってそれぞれ重み付けされた前記K個の最近傍を含むKNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測することと、
前記予測された経過時間が、前記回帰されたビルドに関連する実際の経過時間を超えることに応答して、1または複数のコンピュータプロセッサによって、前記回帰されたビルドが実際の回帰であると決定することと、
前記回帰されたビルドが変動性に起因しないと決定することに応答して、1または複数のコンピュータプロセッサによって、1または複数の類似する履歴ビルドを修正するために利用された措置である緩和措置に基づいて、前記回帰されたビルドを修正するための1または複数の緩和措置を前記回帰されたビルドに適用することと、
を含む、コンピュータ実装方法。
【請求項2】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測することは、
1または複数のコンピュータプロセッサによって、前記K個の最近傍に関連しないテストポイントを除去することによってテストポイントのバイアスを除去するように、前記KNNアルゴリズムを修正すること
をさらに含む、請求項1に記載の方法。
【請求項3】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測することは、
1または複数のコンピュータプロセッサによって、前記K個の最近傍の平均値を利用して、前記経過時間を予測すること
を含む、請求項1に記載の方法。
【請求項4】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測することは、
1または複数のコンピュータプロセッサによって、前記K個の最近傍の中央値を利用して、前記経過時間を予測すること
を含む、請求項1に記載の方法。
【請求項5】
前記予測された経過時間が、前記回帰されたビルドに関連する前記実際の経過時間を超えないことに応答して、1または複数のコンピュータプロセッサによって、前記回帰されたビルドが変動性に起因することを決定することと、
前記回帰されたビルドが変動性に起因すると決定することに応答して、1または複数のコンピュータプロセッサによって、1または複数の環境に配備する1または複数の前記回帰されたビルドを適用することと、
をさらに含む、請求項1に記載の方法。
【請求項6】
前記計算された類似性は、システムプロファイラ統計に基づく、請求項1に記載の方法。
【請求項7】
前記システムプロファイラ統計は、CPUプロファイリング、GPUプロファイリング、入力/出力プロファイリング、およびネットワークプロファイリングを含む、請求項6に記載の方法。
【請求項8】
前記CPUプロファイリングは、実行時間、温度、最小CPU利用率、最大CPU利用率、メディアCPU利用率、平均CPU利用率、および関連メモリ利用率を含む統計を生成する、請求項7に記載の方法。
【請求項9】
前記計算された類似性はユークリッド距離を利用する、請求項1に記載の方法。
【請求項10】
1または複数のコンピュータ可読記憶媒体と、前記1または複数のコンピュータ可読記憶媒体に保存されたプログラム命令とを含み、前記保存されたプログラム命令は、
回帰されたビルドと同じリリースサイクルで実施された1または複数の履歴ビルドとの間の計算された類似性測定を利用して、1または複数の類似する履歴回帰テストおよび履歴ビルドを特定するプログラム命令であって、前記特定された1または複数の類似する履歴回帰テストおよび履歴ビルドは、前記回帰されたビルドのK個の最近傍である、プログラム命令と、
テストポイントからの対応する平均距離とターゲット変数としての経過時間とによってそれぞれ重み付けされた前記K個の最近傍を含むKNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測するプログラム命令と、
前記予測された経過時間が、前記回帰されたビルドに関連する実際の経過時間を超えることに応答して、前記回帰されたビルドが実際の回帰であると決定するプログラム命令と、
前記回帰されたビルドが変動性に起因しないと決定することに応答して、1または複数の類似する履歴ビルドを修正するために利用された措置である緩和措置に基づいて、前記回帰されたビルドを修正するための1または複数の緩和措置を前記回帰されたビルドに適用するプログラム命令と、
を含む、コンピュータプログラム製品。
【請求項11】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測する前記プログラム命令は、
前記K個の最近傍に関連しないテストポイントを除去することによってテストポイントのバイアスを除去するように、前記KNNアルゴリズムを修正するプログラム命令
をさらに含む、請求項10に記載のコンピュータプログラム製品。
【請求項12】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測する前記プログラム命令は、
前記K個の最近傍の平均値を利用して、前記経過時間を予測するプログラム命令
をさらに含む、請求項10に記載のコンピュータプログラム製品。
【請求項13】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測する前記プログラム命令は、
前記K個の最近傍の中央値を利用して、前記経過時間を予測するプログラム命令
をさらに含む、請求項10に記載のコンピュータプログラム製品。
【請求項14】
前記計算された類似性は、システムプロファイラ統計に基づく、請求項10に記載のコンピュータプログラム製品。
【請求項15】
1または複数のコンピュータプロセッサと、
1または複数のコンピュータ可読記憶媒体と、
前記1または複数のプロセッサの少なくとも1つによって実行するための前記コンピュータ可読記憶媒体に保存されたプログラム命令とを含み、前記保存されたプログラム命令は、
回帰されたビルドと同じリリースサイクルで実施された1または複数の履歴ビルドとの間の計算された類似性測定を利用して、1または複数の類似する履歴回帰テストおよび履歴ビルドを特定するプログラム命令であって、前記特定された1または複数の類似する履歴回帰テストおよび履歴ビルドは、前記回帰されたビルドのK個の最近傍である、プログラム命令と、
テストポイントからの対応する平均距離とターゲット変数としての経過時間とによってそれぞれ重み付けされた前記K個の最近傍を含むKNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測するプログラム命令と、
前記予測された経過時間が、前記回帰されたビルドに関連する実際の経過時間を超えることに応答して、前記回帰されたビルドが実際の回帰であると決定するプログラム命令と、
前記回帰されたビルドが変動性に起因しないと決定することに応答して、1または複数の類似する履歴ビルドを修正するために利用された措置である緩和措置に基づいて、前記回帰されたビルドを修正するための1または複数の緩和措置を前記回帰されたビルドに適用するプログラム命令と、
を含む、コンピュータシステム。
【請求項16】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測する前記プログラム命令は、
前記K個の最近傍に関連しないテストポイントを除去することによってテストポイントのバイアスを除去するように、前記KNNアルゴリズムを修正するプログラム命令
をさらに含む、請求項15に記載のコンピュータシステム。
【請求項17】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測する前記プログラム命令は、
前記K個の最近傍の平均値を利用して、前記経過時間を予測するプログラム命令
をさらに含む、請求項15に記載のコンピュータシステム。
【請求項18】
前記K個の最近傍と前記ターゲット変数としての前記経過時間とを含む前記KNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測する前記プログラム命令は、
前記K個の最近傍の中央値を利用して、前記経過時間を予測するプログラム命令
をさらに含む、請求項15に記載のコンピュータシステム。
【請求項19】
前記計算された類似性は、システムプロファイラ統計に基づく、請求項15に記載のコンピュータシステム。
【請求項20】
前記計算された類似性はユークリッド距離を利用する、請求項15に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に機械学習の分野に関するものであり、より詳細には、回帰テストにおける性能変動性の予測および緩和に関するものである。
【背景技術】
【0002】
回帰テストでは、過去に開発およびテストされたソフトウェアが、修正または変更後も適切に動作することを確認するために、複数の機能テストと非機能テストとを実施する。ソフトウェアが適切に動作しない、または効率が低下した場合、これは回帰となる。回帰テストは、バグの修正、ソフトウェアの拡張、構成の変更、ハードウェアの代替などをきっかけに行われることがある。
【0003】
k近傍法アルゴリズム(KNN)は分類や回帰に使用されるノンパラメトリックな手法であり、入力は特徴量空間におけるk個の最近傍トレーニングサンプルから構成される。KNNはインスタンスベース学習の一種で、関数は局所的にのみ近似され、すべての計算は関数が評価されるまで延期される。回帰の目的(例えばKNN回帰)では、出力は入力の予測値であり、その値は平均値や中央値であることがある。
【発明の概要】
【0004】
本発明の実施形態は、回帰テストにおける変動性を予測および緩和するためのコンピュータ実装方法、コンピュータプログラム製品、およびシステムを開示する。コンピュータ実装方法は、1または複数のコンピュータプロセッサが、回帰されたビルドと同じリリースサイクルで実施された1または複数の履歴ビルドとの間の計算された類似性測定を利用して、1または複数の類似する履歴回帰テストおよび履歴ビルドを特定することであって、前記特定された1または複数の類似する履歴回帰テストおよび履歴ビルドは、前記回帰されたビルドのK個の最近傍である、特定することを含む。前記1または複数のコンピュータプロセッサは、テストポイントからの対応する平均距離とターゲット変数としての経過時間とによってそれぞれ重み付けされた前記K個の最近傍を含むKNNアルゴリズムを利用して、前記1または複数のプロファイル化された回帰テストの前記経過時間を予測する。前記1または複数のコンピュータプロセッサは、前記予測された経過時間が、前記回帰されたビルドに関連する実際の経過時間を超えることに応答して、前記回帰されたビルドが実際の回帰であると決定する。前記1または複数のコンピュータプロセッサは、前記回帰されたビルドが変動性に起因しないと決定することに応答して、1または複数の類似する履歴ビルドに基づいて、前記回帰されたビルドに1または複数の緩和措置を適用する。
【図面の簡単な説明】
【0005】
図1】本発明の一実施形態による、計算環境を示す機能ブロック図である。
図2】本発明の一実施形態による、図1の計算環境内のサーバコンピュータにおいて、回帰テストにおける変動性を予測および緩和するためのプログラムの動作ステップを示すフローチャートである。
図3】本発明の一実施形態による、例示的なテーブルを示す図である。
図4】本発明の一実施形態による、例示的なチャートを示す図である。
図5】本発明の一実施形態による、例示的なチャートを示す図である。
図6】本発明の一実施形態による、サーバコンピュータのコンポーネントのブロック図である。
【発明を実施するための形態】
【0006】
従来、組織は、ソフトウェアのリリース(例えば、アルファ、ベータ、リリース候補など)のために、複数の性能およびエッジケースのワークロードを1または複数のビルド(すなわち、継続的統合および継続的配備)で実行することを含む複数の評価およびテストを実行する。複数の評価およびテストの完了に応じて、従来のシステムは、診断を記録し、統計機能を利用して、診断結果を履歴結果(例えば、ベースライン)と比較し、潜在的な回帰を決定する。従来のシステムは、診断結果の比較のサブセットのみに制限され、例えば、前記システムは、システムの制限による計算上の制約のため、限られた一定期間において中央処理統計のみを考慮することができる。さらに、前記従来のシステムは、ベースラインもしくは関連する閾値またはその両方を特定および計算するために、相当な計算資源を利用する。
【0007】
本発明の実施形態は、潜在的な回帰(すなわち、回帰されたテスト、ビルド、ソフトウェアなど)が変動性の影響を受けるまたは実際の回帰(すなわち、変動性の影響を受けない)である可能性を予測する。本発明の実施形態は、1または複数のベースラインビルドと回帰されたビルドとにおける1または複数のクエリ実行の経過時間について、1または複数の確率的テストを実施する。本発明の実施形態は、各プロジェクト、ビルド、モジュール、またはサブモジュールに対して1または複数の動的閾値を関連付けた。本発明の実施形態は、閾値の決定が、ソフトウェアの効率的な統合および配備にとって重要であることを認識する。本発明の実施形態は、偽陽性アラートを減らし、承認された(例えば、回帰なしまたは決定された偽陽性)ソフトウェアの効率的なテスト、修正、およびその後の配備を可能にする。本発明の実施形態は、回帰アラートに応答して、緩和措置を開始する。本発明の実施形態の実装は、様々な形態を取ることができ、例示的な実装の詳細は、図を参照して後に説明される。
【0008】
次に、本発明について、図を参照しながら詳細に説明する。
【0009】
図1は、本発明の一実施形態による、一般に100と指定される計算環境を示す機能ブロック図である。本明細書で使用する「計算的(computational)」という用語は、単一のコンピュータシステムとして一緒に動作する、物理的に異なる複数のデバイスを含むコンピュータシステムを説明するものである。図1は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関して、いかなる制限も示唆しない。特許請求の範囲に記載された本発明の範囲から逸脱することなく、説明された環境に対する多くの修正が当業者によって行われ得る。
【0010】
計算環境100は、ネットワーク102を介して接続されたサーバコンピュータ120を含む。ネットワーク102は、例えば、電気通信ネットワーク、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、またはこれら3つの組み合わせとすることができ、有線、無線、または光ファイバー接続を含むことができる。ネットワーク102は、音声、データ、およびビデオ情報を含むマルチメディア信号を含む、データ、音声もしくはビデオ信号またはその組み合わせを受信および送信することができる1または複数の有線もしくは無線またはその両方のネットワークを含むことができる。一般に、ネットワーク102は、サーバコンピュータ120、および計算環境100内の他のコンピューティングデバイス(不図示)間の通信をサポートするであろう接続およびプロトコルの任意の組み合わせとすることができる。様々な実施形態において、ネットワーク102は、有線、無線、または光接続を介してローカルに動作し、接続およびプロトコル(例えば、パーソナルエリアネットワーク(PAN)、近距離無線通信(NFC)、レーザー、赤外線、超音波など)の任意の組み合わせとすることができる。
【0011】
サーバコンピュータ120は、スタンドアロンコンピューティングデバイス、管理サーバ、ウェブサーバ、モバイルコンピューティングデバイス、またはデータを受信、送信、および処理することができる任意の他の電子デバイスまたはコンピューティングシステムとすることができる。他の実施形態では、サーバコンピュータ120は、クラウドコンピューティング環境におけるようなサーバシステムとして複数のコンピュータを利用するサーバコンピューティングシステムを表すことができる。別の実施形態では、サーバコンピュータ120は、ラップトップコンピュータ、タブレットコンピュータ、ネットブックコンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、パーソナルデジタルアシスタント(PDA)、スマートフォン、またはネットワーク102を介して計算環境100内の他のコンピューティングデバイス(不図示)と通信可能な任意のプログラム可能電子デバイスであり得る。別の実施形態では、サーバコンピュータ120は、計算環境100内でアクセスされた時にシームレスなリソースの単一のプールとして機能するクラスタ化されたコンピュータおよびコンポーネント(例えば、データベースサーバコンピュータ、アプリケーションサーバコンピュータなど)を利用するコンピューティングシステムを表している。図示されている実施形態では、サーバコンピュータ120は、リポジトリ122およびプログラム150を含む。他の実施形態では、サーバコンピュータ120は、計算環境100内に示されていない他のアプリケーション、データベース、プログラムなどを含んでいてもよい。一実施形態において、サーバコンピュータ120は、ソースコード管理システムもしくはCI/CDシステムまたはその両方である。サーバコンピュータ120は、図6に関してさらに詳細に図示され、説明されるように、内部および外部のハードウェアコンポーネントを含んでもよい。
【0012】
リポジトリ122は、プログラム150によって使用されるデータのためのリポジトリである。図示されている実施形態では、リポジトリ122は、サーバコンピュータ120上に存在する。別の実施形態では、プログラム150がリポジトリ122にアクセスできることを条件に、リポジトリ122は計算環境100内の他の場所に存在してもよい。データベースは、データの組織化された集合である。リポジトリ122は、データベースサーバ、ハードディスクドライブ、またはフラッシュメモリなど、プログラム150によってアクセスされ利用され得るデータおよび構成ファイルを保存することができる任意のタイプのストレージデバイスで実装され得る。一実施形態において、リポジトリ122は、履歴テスト、テストケース、モジュール、関連するプロファイラ、閾値など、プログラム150によって利用されるデータを保存する。一実施形態において、リポジトリ122は、複数のユーザがコードをシステムにプッシュすること、および、含まれるコードベースを他のユーザが表示およびダウンロードすることを可能にするソースコード管理システムである。別の実施形態では、プッシュされたコードもしくはソフトウェアまたはその両方は、エラーおよび潜在的な回帰のために自動的にテストされる。一実施形態において、ソースコード管理システムは、履歴コードベースおよび関連するリビジョンなど、プログラム150によって使用されるデータを保存する。
【0013】
プログラム150は、回帰テストにおける性能変動性を予測および緩和するためのプログラムである。様々な実施形態において、プログラム150は、以下のステップを実施することができる:回帰されたビルドと同じリリースサイクルで実施された1または複数の履歴ビルドとの間の計算された類似性測定を利用して、1または複数の類似する履歴回帰テストおよび履歴ビルドを特定することであって、特定された1または複数の類似する履歴回帰テストおよび履歴ビルドは、回帰されたビルドのK個の最近傍である、特定することと、テストポイントからの対応する平均距離とターゲット変数としての経過時間とによってそれぞれ重み付けされたK個の最近傍を含むKNNアルゴリズムを利用して、1または複数のプロファイル化された回帰テストの経過時間を予測することと、予測された経過時間が、回帰されたビルドに関連する実際の経過時間を超えることに応答して、回帰されたビルドが実際の回帰であると決定することと、回帰されたビルドが変動性に起因しないと決定することに応答して、1または複数の類似する履歴ビルドに基づいて、回帰されたビルドに1または複数の緩和措置を適用すること。図示された実施形態では、プログラム150は、スタンドアロンソフトウェアプログラムである。別の実施形態では、プログラム150の機能、またはその任意の組み合わせのプログラムは、単一のソフトウェアプログラムに統合されてもよい。いくつかの実施形態では、プログラム150は、別々のコンピューティングデバイス(不図示)上に配置されてもよいが、ネットワーク102を介して通信することができることに変わりはない。様々な実施形態において、プログラム150のクライアント版は、計算環境100内の任意の他のコンピューティングデバイス(不図示)上に存在する。プログラム150は、図2に関してさらに詳細に図示され、説明される。
【0014】
本発明は、リポジトリ122などの様々なアクセス可能なデータソースを含むことができ、そのデータソースは、個人用記憶装置、データ、コンテンツ、またはユーザが処理されないことを望む情報を含むことができる。処理とは、個人データに対して行われる収集、記録、組織化、構造化、保存、適応、変更、検索、相談、使用、送信による開示、普及、またはその他の利用可能化、組み合わせ、制限、消去、または破壊などの、自動または非自動的な、操作または一連の操作のことをいう。プログラム150は、個人データの収集について通知し、ユーザが個人データの処理をオプトインまたはオプトアウトできるようにすることで、説明に基づく同意を提供する。同意はいくつかの形態をとることができる。オプトイン同意は、個人データが処理される前に積極的行動をユーザに課すことができる。あるいは、オプトアウト同意は、データが処理される前に、個人データの処理を防止するための積極的行動を取ることをユーザに課すことができる。プログラム150は、トラッキング情報などのユーザ情報、ならびに個人特定情報または機密個人情報などの個人データの、承認された安全な処理を可能にする。プログラム150は、個人データおよび処理の性質(例えば、タイプ、範囲、目的、期間等)に関する情報を提供する。プログラム150は、保存された個人データのコピーをユーザに提供する。プログラム150は、不正確または不完全な個人データの訂正または補完を可能にする。プログラム150は、個人データを直ちに削除することを可能にする。
【0015】
図2は、本発明の一実施形態による、回帰テストにおける変動性を予測および緩和するためのプログラム150の動作ステップを示すフローチャート200である。
【0016】
プログラム150は、ソフトウェアに対する回帰テストを開始する(ステップ202)。プログラム150は、1または複数のソフトウェア、モジュール、アプリケーション、関数、クエリ、コンテナ、コードベース、デプロイメント、もしくはコードのセクション(以下、ソフトウェアという)、またはその組み合わせに対して、1または複数の評価テスト、回帰テスト、ユニットテスト、機能テスト、および性能テスト(以下、テストという)を開始させる。一実施形態において、プログラム150は、ソースコード管理システム(例えば、リポジトリ122)を監視する、またはプッシュされた、修正された、もしくは保存された、またはその組み合わせであるソフトウェアに応答して前記システムから通知される。様々な実施形態において、プログラム150は、コンピューティングデバイス(不図示)と宛先サーバ(すなわち、サーバコンピュータ120)との間に「座る」インラインプロキシもしくは透過プロキシまたはその両方として機能する。別の実施形態では、プログラム150は、gitクライアントまたはサーバを監視して、ソースコード管理システムへの/からのプッシュまたはコード修正を決定する。一実施形態では、プログラム150は、プッシュまたはプルされたコードベースを特定し、gitアクション(すなわち、プッシュまたはプル)またはその後のソフトウェアデプロイメントを一時停止、遅延、中断、または停止させる。様々な実施形態において、プログラム150は、プッシュされる、保存される、またはプルされるビルド、および関連情報(例えば、コードメタデータ、依存性、関連するテストなど)に関する通知を受信する。一実施形態では、プログラム150は、自動的に、ソースコード管理システム内に含まれる、参照される、または保存される、すべての関連する履歴ビルドを検索する。
【0017】
プログラム150は、回帰テストをプロファイル化する(ステップ204)。プログラム150が1または複数の回帰テストを開始することに応答して、プログラム150は、前記テストをプロファイル化(例えば、監視、スキャンなど)する。例えば、プログラム150は、ソフトウェア、具体的には修正されたデータベースクエリに関する1または複数のテストに関連するメモリおよびCPU統計値を記録する。別の例では、プログラム150は、時間の複雑さ、1または複数の関数呼び出しの頻度/期間についてプロファイル化する。一実施形態において、プログラム150は、コードプロファイラ(例えば、イベントベース、統計的、計装化、およびシミュレーション方法)のようなバイナリツールを利用してテストをプロファイル化する。本実施形態では、プログラム150は、深い洞察(例えば、統計的洞察)を得るために監視ツールを利用し、前記ツールは、オペレーティングシステム監視ツール(例えば、CPU利用率を監視するためのvmstat)、および例えばデータベース機能(例えば、oprofile)のプロファイル化のために複数の関連CPU統計(例えば、実行時間、温度、最小利用率のCPU、最大利用率のCPU、平均利用率のCPU、メモリ利用率、システム温度など)を監視するCPUプロファイル化のためのプロファイリングツールを含む。様々な実施形態において、プログラム150は、CPUプロファイリング、GPUプロファイリング、入力/出力プロファイリング、およびネットワークプロファイリングを含むシステムプロファイリングを利用する。様々な実施形態において、CPUプロファイラデータまたはvmstatなどの診断は、生成または受信される際に変換または修正される。例えば、プログラム150は、CPUプロファイラから生成された1または複数の結果をフィルタリングし、特定のクエリ実行中に呼び出されたデータベース機能のみが保持される。さらなる実施形態において、プログラム150は、データポイントを集約すること、例えば、指定されたコンポーネントに基づいて関数で費やされたCPUティックを集約することによって、結果および関連する次元を減少させる。別の例では、プログラム150は、各コンポーネント名に対する列を有する結果テーブルを作成する。この例では、プログラム150は、プログラム150が各テストに対する行を修正するだけであるように、結果テーブルを更新する。さらなる例では、プログラム150は、「NULL」のような、すべての行に対して一定の値を有するすべての列を削除することによって次元を削減する。
【0018】
プログラム150は、回帰を検出する(ステップ206)。一実施形態において、プログラム150は、ステップ204で説明したように、1または複数の実施されたテストの間に監視されたプロファイラデータに基づいて、潜在的な回帰を検出する。一実施形態において、プログラム150は、一般的な回帰閾値を利用して、回帰されたテストおよび関連するビルドを検出する。本実施形態において、1または複数のテストポイント(例えば、プロファイリングから生成されたデータポイント)が前記一般的な回帰閾値を超える場合、プログラム150は回帰にフラグを立てる。別の実施形態では、プログラム150は、潜在的な回帰(すなわち、回帰されたビルド)に関する1または複数のテストケースを利用するプロファイラから警告または通知を受信する。様々な実施形態において、プログラム150は、潜在的な回帰を特定するために進行中のテストデータを比較し、例えば、プログラム150は、ベースライン(例えば、履歴平均など)または閾値から5%逸脱するすべてのテストにフラグを立てる。本実施形態では、プログラム150は、包括的な(例えば、複数の潜在的な回帰を許容する)閾値を利用し、プログラム150がその後の閾値を動的に調整すること、および潜在的な回帰を分析することをできるようにする。
【0019】
プログラム150は、類似する履歴テストおよび関連する緩和措置を特定する(ステップ208)。一実施形態において、プログラム150は、回帰を検出することに応答して、1または複数のプロファイラおよび関連する診断から生成されたデータに基づいて、複数の履歴テストを特定および決定する。例えば、プログラム150は、現在のビルドに関連する1または複数の履歴ビルドを検索する。一実施形態において、プログラム150は、回帰されたビルドと、すべての履歴ビルド、またはリリースサイクル、セット、またはバージョンに固有のテストなどのビルド/テストの履歴のサブセットとの間の類似性測定またはスコア(例えば、数値または確率)を計算する。別の実施形態では、プログラム150は、CPU、グラフィック処理装置(GPU)、システム、ネットワーク、データベース、メモリプロファイラ統計などの診断結果から類似性スコアを生成する。さらなる実施形態において、プログラム150は、診断結果と回帰との間の相関関係に基づいて、異なるプロファイラ統計値を重み付けする。一実施形態において、プログラム150は、ノンパラメトリックアルゴリズムを利用して、テストサンプル(すなわち、回帰されたビルド/テスト)とすべてのトレーニングサンプル(すなわち、履歴類似ビルド/テスト)との間の類似性測定(例えば、ユークリッド距離)を計算する。様々な実施形態において、プログラム150は、CPUプロファイラ統計に基づいて、回帰されたビルド/ランおよび同じリリース上の過去のすべてのビルド/ランを利用して類似性測定を計算する。様々な実施形態において、プログラム150は、関連するデータに基づいて、類似性の閾値を超えることにより、履歴テストおよびビルドが類似していると決定する。別の実施形態では、プログラム150は、同じリリースサイクルにおけるすべての履歴テストおよびビルドが類似していると決定する。
【0020】
プログラム150は、特定された類似する履歴テストに基づいて、回帰されたテストの経過時間を予測する(ステップ210)。一実施形態において、プログラム150は、ステップ208で説明したように、特定された類似する履歴テストおよび関連するプロファイルを利用して、現在のテストおよび関連するビルドの経過時間を予測もしくは生成またはその両方を行う。別の実施形態では、プログラム150は、指定された類似性スコア閾値(例えば、75%の類似度)またはK個の最近傍(例えば、K=5)よりも大きい(すなわち、超える)類似度スコアを有する任意の特定された履歴テストを利用して、現在のテストのターゲット変数もしくは従属変数またはその両方を予測する。本実施形態では、プログラム150は、経過時間をターゲット変数とするKNNへの入力として、プロファイラデータを利用する。別の実施形態では、プログラム150は、K個の最近傍の投票を利用して、テストポイント(例えば、回帰データポイント)からの対応する平均距離によってそれぞれ重み付けされたテストの経過時間を予測する。
【0021】
様々な実施形態において、回帰されたテストの決定されたK個の最近傍に関連するデータを特定および検索することに応答して、プログラム150は、前記K個の最近傍の集約または平均を利用して回帰されたテスト、ビルド、関数、もしくはクエリまたはその組み合わせの経過時間を予測する。一実施形態において、プログラム150は、バイアスを除去するテストデータポイントを除去する(すなわち、テストデータポイントが近傍として考慮されない)オプションを実装する修正KNNアルゴリズムを利用し、経過時間の平均値または中央値をテストの経過時間の予測に利用するかどうかを指定するためのオプションを提供する。本実施形態は、外れ値が影響を受け、変動性によって複合化される外れ値近傍影響を低減することによって、予測品質を向上させる。一実施形態において、プログラム150は、平均利用率よりも中央利用率を優先させる(例えば、より大きな重みを適用する)。
【0022】
様々な実施形態において、プログラム150は、退行および劣化を検出するために重要な1または複数の閾値を動的に調整する。一例では、プログラム150は、コードの複雑さ、実行時間、もしくはシステム仕様またはその組み合わせなどの関連するソフトウェアに関連する要因に基づいて、1または複数の閾値を修正する(すなわち、調整する)。例えば、プログラム150は、長い(例えば、タイムアウト期間(例えば、30秒)よりも大きい(すなわち、超える))実行クエリを含むソフトウェアについて、関連するベースラインの5%に劣化閾値を微調整する(すなわち、変更する)。この例では、前記閾値は、短い実行クエリに対して変動性の問題(すなわち、偽陽性)を引き起こす可能性がある。例えば、クエリ実行時間が5秒である場合、0.25秒の増加は、回帰警告を引き起こす。様々な実施形態において、プログラム150は、複数の閾値を利用して、潜在的な回帰をさらに区分および分析する。
【0023】
予測された経過時間が実際の経過時間より短い(超えない)場合(決定ブロック212で「yes」に分岐)、プログラム150は終了する。一実施形態において、プログラム150は、回帰(すなわち、回帰テスト)が変動性の影響を受けた(すなわち、偽陽性)ことを決定し、プログラム150は、中断する、終了する、分離コードをリリースする、コンテナ化する、パッケージ化する、もしくは1または複数の環境(例えば、サーバ、クラウドなど)へソフトウェアを配備する、またはその組み合わせを行う。それに応じて、プログラム150は、高い信頼性(例えば、>95%)で、回帰が変動性に起因することを決定し、したがって、さらなる分析を必要としない。
【0024】
予測された経過時間が実際の経過時間よりも長い場合、プログラム150は、ソフトウェアに緩和措置を適用する(ステップ214)。一実施形態において、プログラム150は、予測された経過時間が実際の経過時間より長い(すなわち、超える)、または関連するベースラインに関して回帰(すなわち、劣化)閾値より大きいと決定する場合、プログラム150は、高い信頼度(例えば、>95%)で、回帰が変動性に起因するものではく、さらなる措置を必要とすることを決定する。これに応答して、プログラム150は、関連する診断および履歴措置に基づいて、1または複数の緩和措置を実行する。例えば、プログラム150は、複数の類似する履歴ビルド、回帰、および前記履歴回帰を修正するために利用された関連する緩和措置を特定する。様々な実施形態において、プログラム150は、複数の可能な緩和措置を決定し、ビルドの類似性(例えば、生成された類似性スコア)、有効性、計算コスト、さらなる回帰に対する感受性(例えば、感受性パーセンテージ)に基づいて、各措置を重み付けする。一実施形態において、プログラム150は、緩和措置を選択するようにユーザを促す。別の実施形態では、プログラム150は、関連する類似性スコアおよび関連する履歴テストに基づいて、自動的に、1または複数の緩和措置を開始させる。さらなる実施形態において、プログラム150は、パッチまたはバグ修正のようなコードに対する1または複数の調整を推奨する。別の実施形態では、プログラム150は、コードをソースコードツリーの分離したブランチにプッシュする。さらなる実施形態では、プログラム150は、回帰されたビルドの代わりに、既知の作業ビルドを同時に配備する。
【0025】
一実施形態において、プログラム150は、ショートメッセージサービス(SMS)、電子メール、プッシュ通知、自動音声通話、テキスト読み上げ、gitクライアント警告などを含むがこれらに限定されない複数の通信および送信方法を利用して、ユーザまたは1人または複数の管理者に関連する1または複数のコンピューティングデバイス(不図示)に対して1または複数の通知を通知、プッシュ、もしくは送信(transmit)(例えば、送信(send))またはその組み合わせを行うことができる。一実施形態において、プログラム150は、以下に説明するように、特定された機密情報、特定されたセキュリティ脆弱性、関連するコードスニペット(例えば、露出したデータベース接続文字列を含むコードのセクション)、および関連する改善措置のうちの少なくとも1つを含むデータを送信する。様々な実施形態において、プログラム150は、許可されたユーザから応答が受信されるまで活動を停止する(例えば、分離領域内にコードを保持する)。別の実施形態では、プログラム150は、プログラム150がユーザ応答を受信しない分離されたコードベースを削除および除去する。本実施形態において、プログラム150は、ユーザ応答のための一定期間を設定する応答閾値を指定する。様々な実施形態において、プログラム150は、以下に詳述するように、生成されたレポートを送信する。
【0026】
別の実施形態では、プログラム150は、テスト結果および診断(すなわち、特定された回帰、履歴類似性テストおよびソフトウェア、履歴緩和措置、生成されたスコアなど)を含むレポートを生成する。様々な実施形態において、プログラム150は、生成されたレポートを含む文書(例えば、ダウンロード可能な文書、スプレッドシート、画像、グラフなど)を構築する。本実施形態において、文書は、デジタル文書または物理文書(例えば、印刷物)である。別の実施形態では、プログラム150は、レポートの視覚的表現を作成し、ユーザが1または複数のスキャンもしくはテストまたはその両方を相互作用、追加、修正、もしくは除去またはその組み合わせを行うことを可能にする。さらに別の実施形態では、プログラム150は、グラフィカルユーザインタフェース(不図示)またはウェブグラフィカルユーザインタフェース(例えば、生成された結果を含むハイパーテキストマークアップランゲージを生成する)上で1または複数のスキャンおよびテストの結果を提示する。プログラム150は、スキャンおよびテスト結果を、テキストファイル、HTMLファイル、CSSファイル、JavaScriptファイル、文書、スプレッドシートなどの複数の適切なフォーマットに出力することができる。
【0027】
図3は、本発明の例示的な実施形態による表300を示す。表300は、ステップ210で利用された修正されたKNNおよびステップ208で特定された特定された最近傍に基づいて、1または複数のデータマイニングおよびテキスト分析ソフトウェアアプリケーションから作成された表を代表するものである。表300は、複数の行を含み、各行は回帰テストを表し、各テストは、予測された経過時間、実際の経過時間、および関連する計算された距離(すなわち、類似性)を有する複数の集約されたK個の最近傍に関する情報を含む複数の列を含む。一例では、プログラム150は、16.272の経過時間を予測し、実際の経過時間は67.948であったと決定する。ここで、プログラム150は、回帰が真の回帰であり、変動性の影響を受けないと決定する。
【0028】
図4は、本発明の例示的な実施形態によるチャート400を示す。チャート400のチャートは、複数のテストビルドについて、データベースクエリワークロードに固有の回帰パーセンテージを比較する。チャート400は、各テストポイントに対する実際の回帰値と予測された回帰値とを図示している。ここで、プログラム150は、予測された経過時間が、実際の経過時間の回帰と比較して、変動(fluctuations)(すなわち、変動性(variability))が少ないことを特定する。一例として、プログラム150は、5%のベースライン偏差で回帰閾値を調整し、したがって偽陽性の発生を低減する。
【0029】
図5は、本発明の例示的な実施形態によるチャート500を示す。チャート500は、平均値/中央値予測比較からの結果を示している。チャート500は、さらに、実際の経過時間および10個の最近傍(例えば、K=10)の平均値/中央値集計から計算された予測された経過時間を利用するベースラインに対する劣化パーセンテージを示している。チャート500は、予測された経過時間が実際の経過時間と比較して変動が少ないことを実証している。チャート500は、さらに、平均値/中央値に基づく予測された経過時間が同様に推移することを示している。チャート500は、劣化の閾値が5%以上の場合、平均値ベースの予測は21/68の劣化を実際の回帰としてフラグ付けしたのに対し、中央値ベースの予測は12/68のみをフラグ付けしたことを示している。
【0030】
図6は、本発明の実施形態による、サーバコンピュータ120のコンポーネントを示すブロック図600である。図6は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関していかなる制限も示唆しないことを理解されたい。図示された環境に対する多くの変更を行うことができる。
【0031】
サーバコンピュータ120はそれぞれ、キャッシュ603、メモリ602、永続ストレージ605、通信ユニット607、入力/出力(I/O)インタフェース606の間の通信を提供する通信ファブリック604を含む。通信ファブリック604は、プロセッサ(マイクロプロセッサ、通信プロセッサ、ネットワークプロセッサなど)、システムメモリ、周辺装置、およびシステム内の任意の他のハードウェアコンポーネントの間でデータもしくは制御情報またはその両方を渡すようにデザインされた任意のアーキテクチャで実装され得る。例えば、通信ファブリック604は、1または複数のバスまたはクロスバースイッチで実装され得る。
【0032】
メモリ602および永続ストレージ605は、コンピュータ可読記憶媒体である。本実施形態では、メモリ602はランダムアクセスメモリ(RAM)を含む。概して、メモリ602は、任意の適切な揮発性または不揮発性のコンピュータ可読記憶媒体を含むことができる。キャッシュ603は高速メモリ(fast memory)であり、最近アクセスされたデータ、および最近アクセスされたデータに近いデータをメモリ602から保持することによって、プロセッサ601の性能を向上させる。
【0033】
プログラム150は、キャッシュ603を介して1または複数のコンピュータプロセッサ601のそれぞれが実行するために、永続ストレージ605およびメモリ602に記憶することができる。一実施形態において、永続ストレージ605は、磁気ハードディスクドライブを含む。磁気ハードディスクに代えて、またはこれに加えて、永続ストレージ605は、ソリッドステートハードドライブ、半導体記憶装置、読み取り専用メモリ(ROM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、またはプログラム命令もしくはデジタル情報を記憶可能な任意の他のコンピュータ可読記憶媒体を含むことができる。
【0034】
永続ストレージ605が使用する媒体は、取り外し可能であってもよい。例えば、永続ストレージ605には、取り外し可能なハードドライブを用いてもよい。他の例としては、光ディスク、磁気ディスク、サムドライブ、およびスマートカードが挙げられ、これらは、永続ストレージ605の一部でもある別のコンピュータ可読記憶媒体に転送するためにドライブに挿入される。ソフトウェアおよびデータ612は、キャッシュ603を介してそれぞれのプロセッサ601の1または複数によるアクセスもしくは実行またはその両方のために、永続ストレージ605に格納されることができる。
【0035】
これらの例において、通信ユニット607は、他のデータ処理システムまたは装置との通信を提供する。これらの例において、通信ユニット607は、1または複数のネットワークインタフェースカードを含む。通信ユニット607は、物理通信リンクおよび無線通信リンクのいずれかまたは両方を用いて通信を提供してもよい。プログラム150は、通信ユニット607を介して永続ストレージ605にダウンロードしてもよい。
【0036】
I/Oインタフェース606は、サーバコンピュータ120に接続可能な他の装置とのデータの入力および出力を可能にする。例えば、I/Oインタフェース606は、キーボード、キーパッド、タッチスクリーン、もしくは他の適切な入力装置またはこれらの組み合わせなどの外部装置608との接続を提供することができる。また、外部装置608は、例えば、サムドライブ、ポータブル光ディスクもしくは磁気ディスク、およびメモリカードなどのポータブルコンピュータ可読記憶媒体を含むこともできる。本発明の実施形態を実施するために用いられるソフトウェアおよびデータ(例えばプログラム150)は、かかるポータブルコンピュータ可読記憶媒体に記憶することができ、I/Oインタフェース606を介して永続ストレージ605にロードすることができる。I/Oインタフェース606は、ディスプレイ609にも接続する。
【0037】
ディスプレイ609は、ユーザにデータを表示する機構を提供するものであり、例えばコンピュータモニタとすることができる。
【0038】
本明細書に記載されたプログラムは、本発明の特定の実施形態においてそれらが実装される用途に基づいて特定される。しかしながら、本明細書における任意の特定のプログラム命名法は単に便宜上使用されており、したがって、本発明は、かかる命名法によって特定されるもしくは暗示されるまたはその両方である任意の特定の用途における使用のみに限定されるべきではないことを理解されたい。
【0039】
本発明は、システム、方法もしくはコンピュータプログラム製品またはそれらの組み合せとすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を記憶したコンピュータ可読記憶媒体を含んでよい。
【0040】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し、記憶することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、一例として、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置またはこれらの適切な組み合わせであってよい。コンピュータ可読記憶媒体のより具体的な一例としては、ポータブルコンピュータディスケット、ハードディスク、RAM、ROM、EPROM(またはフラッシュメモリ)、SRAM、CD-ROM、DVD、メモリスティック、フロッピーディスク、パンチカードまたは溝内の隆起構造などに命令を記録した機械的に符号化された装置、およびこれらの適切な組み合せが挙げられる。本明細書で使用されるコンピュータ可読記憶装置は、電波もしくは他の自由に伝播する電磁波、導波管もしくは他の伝送媒体を介して伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号のような、一過性の信号それ自体として解釈されるべきではない。
【0041】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または、ネットワーク(例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、もしくはワイヤレスネットワークネットワークまたはその組み合わせ)を介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバー、無線伝送、ルーター、ファイアウォール、スイッチ、ゲートウェイコンピュータ、もしくはエッジサーバーまたはその組み合わせで構成されることができる。各コンピューティング/処理装置のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を転送する。
【0042】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、統合回路のための構成データ、またはSmalltalk、C++などのオブジェクト指向プログラミング言語、「C」プログラミング言語または類似のプログラミング言語などの手続き型プログラミング言語、および「Q」プログラミング言語、Q#、量子計算言語(QCL)または類似のプログラミング言語などの量子プログラミング言語、アセンブリ言語などの低水準言語または類似のプログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで記述されたソースコードまたはオブジェクトコードのいずれかであってよい。コンピュータ可読プログラム命令は、スタンドアロンソフトウェアパッケージとして、完全にユーザのコンピュータ上で、または部分的にユーザのコンピュータ上で実行可能である。あるいは、部分的にユーザのコンピュータ上でかつ部分的にリモートコンピュータ上で、または完全にリモートコンピュータまたはサーバ上で実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続され、または(例えば、インターネットサービスプロバイダーを使用したインターネット経由で)外部コンピュータに接続されてよい。いくつかの実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用してパーソナライズすることにより、コンピュータ可読プログラム命令を実行することができる。
【0043】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に記載されている。フローチャート図もしくはブロック図またはその両方の各ブロック、およびフローチャート図もしくはブロック図またはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0044】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を生成するように、機械を生成するために汎用コンピュータ、専用コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサに提供されることができる。これらのコンピュータ可読記憶媒体はまた、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む生成品の1つを命令が記憶されたコンピュータ可読プログラム命令が構成するように、コンピュータ、プログラム可能なデータ処理装置、もしくは特定の方法で機能する他のデバイスまたはその組み合わせに接続可能なコンピュータ可読記憶媒体の中に記憶されることができる。
【0045】
コンピュータ、他のプログラム可能な装置、または他のデバイス上でフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックで指定された機能/行為を実行する命令のように、コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置、または他のデバイス上で一連の操作ステップを実行し、コンピュータ実装された過程を生成することができる。
【0046】
図(すなわち、FIG)のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータプログラム製品が実行可能な実装の構成、機能、および動作を示している。これに関して、フローチャートまたはブロック図の各ブロックは、モジュール、セグメント、または命令の一部を表してよく、これは、指定された論理機能を実装するための1つまたは複数の実行可能命令を構成する。いくつかの代替の実施形態では、ブロックに示されている機能は、図に示されている順序とは異なる場合がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されるか、またはブロックは、関係する機能に応じて逆の順序で実行される場合がある。ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方のブロックの組み合わせは、指定された機能または動作を実行する、または特別な目的のハードウェアとコンピュータ命令の組み合わせを実行する特別な目的のハードウェアベースのシステムによって実装できることにも留意されたい。
【0047】
本発明の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であることを意図するものではなく、開示される実施形態に限定されることを意図するものでもない。本発明の範囲から逸脱することなく、多くの修正および変更が可能であることは当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見られる技術に対する実際の適用または技術的改善を最もよく説明するため、または当業者が本明細書に記載の実施形態を理解できるようにするために選択された。
図1
図2
図3
図4
図5
図6