ストリーム・コンピューティング・プラットフォームは、異種データ型の複雑な分析の実行に加えて、一日当たり最大でペタバイトまでの速度で膨大な量のデータを連続的に分析することができる高性能プラットフォームである。例えば、異種データ型は、他のデータ型の中でも、テキスト、イメージ、オーディオ、音声、VoIP、ビデオ、ウェブトラフィック、eメール、GPSデータ、金融取引データ、衛星データ、及びセンサ・データを含むことができる。ストリーム・コンピューティング・プラットフォームの開発プロセスは、高いプログラミング・スキル、知識、及び深いプラットフォームの理解を利用する。しかしながら、ストリーミング・アプリケーションの主なステークホルダ(利害関係者)であり得る主題専門家(subject matter expert)は、ストリーミング・アプリケーション開発スキルを有していないことがあるが、どちらかと言えば、深い主題の専門領域の知識を有し得る。従って、ストリーム・コンピューティング・プラットフォームは、プロジェクト・ライフサイクルにおいて少なくとも2つの役割を有し得る。主題専門家は、機能及び非機能アプリケーション要件を定め、複雑なテストケースのシミュレーションによるアプリケーション承認テスト(acceptance test)を担当することがある。例えば、機能アプリケーション要件は、特定の入力又は出力のセットの受信といった、システム及びそのコンポーネントの機能を定めることができる。非機能アプリケーション要件は、性能速度など、システムの動作を判定するために用い得る基準を指定することができる。ストリーミング・アプリケーション開発者は、主題の制約(subject matter constrain)を理解し、アプリケーション・ステークホルダ(利害関係者)との連続的で密な通信の間、それらをストリーミング・アプリケーションに変換するように訓練を受けることができる。さらに、2つの役割は、異なる語彙を使用することがあり、主題専門家が、ストリーミング・アプリケーション開発の詳細を認識していないことがある。さらに、ストリーミング・アプリケーションを設計及び開発するとき、大量のデータの処理は、付加的な要因を考慮に入れることを含み得る。
本開示の実施形態によると、システムは、グロッサリに基づいてストリーミング分析アプリケーションを生成することができる。例えば、分析モデルは、リポジトリから選択することができ、又は半構造化言語を用いて主題制約に基づいて生成することができる。例えば、システムは、半構造化言語で主題制約を受け取り、所定のグロッサリを用いてストリーミング・アプリケーションを自動的かつリアルタイムに生成することができる。さらに、技術は、ストリーミング分析アプリケーションのテスト及び調整のためのシミュレーション・ベースの方法を含む。方法は、主題専門家が、手動コーディング及び特定のストリーミング・プラットフォームの深い知識なしに、ストリーミング分析アプリケーションを迅速に生成、テスト、及び調整することを可能にする。さらに、方法は、特定のストリーミング・プラットフォームの実装に依存しない。従って、本開示の実施形態は、任意のストリーミング・プラットフォームを用いて、ストリーミング分析アプリケーションを自動的かつリアルタイムに生成することを可能にする。
幾つかのシナリオにおいて、本明細書で説明される技術は、クラウド・コンピューティング環境において実装することができる。少なくとも図7〜図9を参照して詳細に後述するように、ストリーミング・アプリケーションを生成するように構成されたコンピューティング・デバイスを、クラウド・コンピューティング環境において実装することができる。本開示は、クラウド・コンピューティングについての説明を含み得るが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことを予め理解されたい。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と共に実施することができる。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信モデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
特徴
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、場合によっては自動的に、プロビジョニングされて素早くスケール・アウトし、迅速に解放されて素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、無制限であり、いつでもどんな量でも購入できるように見えることが多い。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデル
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎となるクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎となるクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎となるクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
配備モデル
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オン・プレミス(on-premise)又はオフ・プレミス(off-premise)で存在することがある。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オン・プレミス又はオフ・プレミスで存在することがある。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図1を参照すると、例示的コンピューティング・デバイスが、ストリーミング・アプリケーションを生成することができる。コンピューティング・デバイス100は、例えば、サーバ、デスクトップ型コンピュータ、ラップトップ型コンピュータ、タブレット型コンピュータ、又はスマートフォンとすることができる。幾つかの例において、コンピューティング・デバイス100は、クラウド・コンピューティング・ノードとすることができる。コンピューティング・デバイス100は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピューティング・デバイス100は、通信ネットワークを通じてリンクされる遠隔処理デバイスによりタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
ここで図1を参照すると、ブロック図は、グロッサリを用いたストリーミング・アプリケーションの生成のための例示的システムを示す。例示的プロセス・フローは、全体的に参照番号100で示され、下記の図8のコンピューティング・デバイス800を用いて実施することができる。図1は、矢印104で示されるように、主題専門家(SME)から入力を受け取るように示されるユーザ・インターフェース102を含む。本明細書で述べられるような主題専門家は、いずれかの適切な自動コンピュータ・アプリケーション又はユーザを含むことができる。入力は、半構造化フォーマットでストリーミング・アプリケーションの予想挙動を記述することができる。例えば、フォーマットは、Gherkinフォーマットに類似し得る。予想挙動は、機能挙動、アプリケーションの実行に利用可能な予想ハードウェア及びソフトウェア・リソース、及びセキュリティ、拡張性等のような非機能側面を含むことができる。例えば、半構造化フォーマットは、次のように現れ得る。:
シナリオ1:ネットワーク・トラフィック異常ストリーミング・アプリケーション
Given(前提):タッピング・サーバから収集された、200Mb/秒の速度を有するライブ・エンタープライズ・ネットワーク・トラフィック
When(条件):HTTPトラフィックにおいて異常が検出される
Then(結果):警告を発する
シナリオ2:地震早期警報ストリーミング・アプリケーション
Given:100イベント/秒の速度で取得されるべき、mseedフォーマットでの地震計からのセンサ・データ
When:単一ステーションからのピークが検出された
Then:地震の震央の検出のためのアルゴリズムを適用し、震央の座標と共に警告を発する
図1の例において、分類モジュール106は、矢印108で示されるように、主題入力を受け取ることができる。分類モジュール106は、矢印111で示されるように、ストア110の所定の分類基準に基づいて主題入力を分類することができる。ストア110は、いずれかの好適なデータベース又は他のいずれかのデータ・ストレージ・システムとすることができる。幾つかの例において、分類は、半構造化主題要件の所定の分類基準による自動分類プロセスとすることができる。分類モジュール106は、ブートストラッピングのための教師あり学習を使用することができる。例えば、教師あり学習は、訓練データからの分析モデル生成プロセスを含むことができる。分析モデル生成プロセスは、オフライン性質を有することができる。例えば、分類モジュール106は、最初に、サイズが限定されている訓練セットに基づいてモデルを生成することができる。次に、生成されたモデルをランタイム環境に配備することができる。幾つかの例において、分類モジュール106は、所定の訓練データを用いて、テキスト分類のための初期ブートストラップ・モデルを作成することができる。次に、分類モジュール106は、フィードバックを介してリアルタイム学習によりモデルを改善することができる。さらに、分類モジュール106は、リアルタイム学習を用いて、性能及び品質結果を改善することができる。分類モジュール106はまた、高度な自然言語処理及び機械学習技術を利用することもできる。例えば、分類モジュール106は、上記のシナリオ1を「ネットワーク分析アプリケーション」として分類することができる。
さらに図1を参照すると、抽出器モジュール112は、矢印114で示されるように、分類を受け取ることができる。抽出器モジュール112は、分類基準110に基づいて分類モジュール106により生成された分類からエンティティのリストを抽出することができる。システム100はまた、グロッサリ作成者により予め定められ得るグロッサリ113を含むこともできる。例えば、初期エンティティ抽出段階は、矢印115で示されるように、分類基準110に基づくことができる。例えば、グロッサリは、矢印116で示されるようにグロッサリ作成者により予め定められ得る。幾つかの例において、予め定められたグロッサリ113は、特定の主題を処理する際に特定の会社又は組織により使用される言語を含むことができる。抽出器モジュール112は、分類基準110を用いて、グラフ内の相関した用語及び概念を結合してエンティティを作成し、それをソリューション・コンポーネントにマッピングすることができる。幾つかの例において、分類基準110及び/又はグロッサリ113はまた、システム学習コンポーネントにより所定の主題カテゴリを調整することもできる。抽出器モジュール112は、付加的なエンティティの抽出のために、分類基準110内に定められたエンティティの関係を利用することができる。抽出器モジュール112の出力は、強化型(enriched)エンティティのリストを含むことができる。例えば、抽出エンティティは、詳細に後述される図2〜図3の例示的な抽出エンティティ200及び300に類似し得る。幾つかの例において、抽出器モジュール112は、分類基準110内に抽出の成功のために十分な情報が存在しないことを検出することができる。抽出器モジュール112は、矢印118で示されるように、欠落情報(missing information)の通知をユーザ・インターフェース102に送ることができる。幾つかの例において、SMEは、ユーザ・インターフェース102を介して欠落情報を提供することができる。
システム100は、矢印120で示されるように、抽出器モジュール112からエンティティ・リストを受け取ることができるソリューション生成器モジュール119をさらに含む。システム100は、矢印123で示されるように、1つ又は複数のソリューションを生成するために使用されるモデル及び/又は訓練データを含むモデル/訓練データ・リポジトリ121をさらに含む。本明細書で用いられる場合、ソリューションは、使用することができる候補アプリケーションを指す。例えば、抽出器モジュール112からの強化(enriched)エンティティ及び分類モジュール106からのカテゴリに基づいて、モデル・リポジトリ121から適切なモデルを抽出することができる。ソリューション生成器モジュール119は、矢印124で示されるように、知識データベース122を用いて、強化エンティティを繰り返しモデルにマッピングすることによって、ソリューションを生成することができる。例えば、知識データベース122は、それぞれのメタデータと共にあらゆる世界中の開発チームにより作成及びアップロードされたソリューション及びソリューション・コンポーネントを保持するストリーム・ライブラリ及びオープン・ソース知識ベースを含むことができる。知識データベース122は、動的なものとすることができる。例えば、新しいツールキット又はソリューションは、ひとたび知識データベース122に付加されると、ストリーミング・アプリケーションに即座に利用可能になり得る。幾つかの例において、ストリーミング・アプリケーションの生成に用いるために、発行されたツールキット又はソリューションを知識データベース122に自動的に付加することができる。幾つかの例において、知識データベース122は、オープン・ソース・リソースを含むことができる。例えば、オープン・ソース・コミュニティからのソリューションを知識データベース122に自動的に付加することができる。ソリューション生成器モジュール119は、これらの知識ベースを管理することができる。幾つかの例において、ソリューション生成器モジュール119は、矢印126で示されるように、マッピングを用いて検索範囲を繰り返し絞り、所定の要件に合致するソリューションのセットを戻すことができる。例えば、ソリューション生成器モジュール119は、それらが要件にどれだけ近接して合致するかに基づいて、潜在的なソリューションにスコア付けし、下記のソリューション・エクスプローラ130に関して述べられるように、より高いスコアを有するソリューションのセットを戻すことができる。図4〜図5の例示的マッピング400〜500に関してより詳細に説明されるように、ソリューション生成器モジュール119は、エンティティを1つ又は複数のストリーム・ソリューション・コンポーネントにマッピングすることができる。幾つかの例において、ソリューション生成器モジュール119は、矢印127で示されるように、グロッサリ113を使用することができる。グロッサリ113は、複数のアプリケーション概念グラフを含むことができる。例えば、概念グラフは、カテゴリ間(inter-component)接続及び特性を有するリアルタイムのマイニング・アプリケーション概念構造を含むことができる。概念グラフは、ソリューション生成器モジュール119が有効であることを可能にする。さらに、ソリューション生成器モジュール119が顧客により承認されるストリーミング・アプリケーションを作成するとき、ソリューション生成器モジュール119は、矢印127で示されるように、フィードバックをグロッサリに送ることができる。フィードバックは、新しい特性及びコンポーネント間接続を含むことができる。幾つかの例において、検索が、ユーザ・フィードバックに付随して行われることがある。例えば、ユーザ・フィードバックは、マッピング結果のスコア付けを含むことができる。例えば、ユーザは、最良のソリューションに対して最高のスコアを与えることができる。幾つかの例において、ユーザ・フィードバックをしたものの特定のエンティティ・パターンをいずれの利用可能なソリューションにもマッピングできない場合、ソリューション生成器モジュール119は、新しい十分なオペレータを開発するためのタスク要件を作成し、SMEに通知することができる。上記のシナリオ1及び2についてのマッピングを、それぞれ下記の図4及び図5に関して説明する。
さらに図1を参照すると、幾つかの例において、促進モジュール128は、他の専門家からの入力に基づいて、ソリューション・コンポーネント選択を案内することができる。例えば、促進モジュール128は、最も高い重み付けのインデックスを、他の専門家が促進したいと考え得るソリューション・コンポーネントに付加することができ、従って、ソリューション生成器モジュール119を、より高いスコアを与えるように案内することができる。
システム100は、ソリューション・エクスプローラ・モジュール130をさらに含む。例えば、ソリューション・エクスプローラ・モジュール130は、矢印132で示されるように、ソリューション生成器モジュール119から受け取ったソリューション134を管理するために用いることができるユーザ・インターフェースとすることができる。例えば、ソリューション134の各々は、分析モデルを含むことができ、この分析モデルは、該分析モデルを含むストリーミング分析アプリケーションを生成するために使用することができる。ソリューション・エクスプローラ・モジュール130は、矢印136で示されるように、ソリューション・グラフ及び関連情報を探索するために用いることができる。ソリューション・エクスプローラ・モジュール130は、ソリューション・シミュレータ138、矢印142で示されるようにソリューション・エディタ140、及び矢印146で示されるように、パラメータ・マネージャ144を呼び出すために用いることもできる。
ソリューション・シミュレータ138は、デフォルト又はユーザ定義入力値を有するソリューションを実行し、結果をテストすることができる。例えば、ソリューション・シミュレータ138は、矢印149で示されるように、テスト入力マネージャ148においてアップロードされた「gold」テスト結果を受け取ることができる。「gold」テスト結果は、予想されるテスト結果を含むことができる。ソリューション・シミュレータ138はまた、照合メトリクス(match metrics)を用いて比較統計情報を生成することもできる。照合メトリクスは、結果エクスプローラ150を介して、ユーザに対して表示することができる。幾つかの例において、結果が所定の要件を満たす場合、後述のように、ソリューションを生産環境に配備することができる。結果がユーザの期待に合わない場合、矢印151で示されるように、ソリューションを改善すること、又はユーザ・インターフェース102において要件を再定義することができる。幾つかの例において、パラメータ・マネージャ144は、矢印146で示されるように、パラメータを構成することによって、ストリーミング分析アプリケーションを微調整するために用いることができる。例えば、ストリーミング分析アプリケーションが特定のアルゴリズムを実行する場合、パラメータ・マネージャ144は、最良の性能及び結果のためにアルゴリズムを調整することを可能にする。幾つかの例において、ソリューション・エディタ140は、矢印142で示されるように、ソリューションを編集するために用いることができる。例えば、外部開発者の助けを借りて又は借りずに、ソリューションを編集することができる。従って、技術により、主題専門家が、外部開発者の助けを借りずにソリューションを編集することが可能になる。例えば、使用する代替的なソリューションのリストをSMEに提示することができる。幾つかの例において、主題専門家は、矢印154で示されるように、タスク要件を作成して、新しいソリューション・コンポーネントを開発することができる。例えば、矢印154で示されるように、タスク要件をタスク生成モジュール152に送ることができる。次に、開発者は、後述のようにオペレータを構築することができる。
さらに図1を参照すると、構成ユーザ・インターフェース156は、SMEが、結果分析に基づいてストリーミング・アプリケーションを調整することを可能にする。例えば、結果分析は、矢印158で示されるように、結果エクスプローラ150により生成され、構成ユーザ・インターフェース156に送られていることがある。幾つかの例において、調整は機能的であり得る。例えば、調整は、新しいタイプのデータ・インジェクタを付加する要求を含むことができる。データ・インジェクタは、他のタイプのデータ・インジェクタの中でも、ネットワーク・カードからライブ・トラフィックをキャプチャするためのライブ・フィーダ、ファイルからデータを読み取るためのファイル・フィーダ、又はデータベースからデータを読み取るためのデータベース・フィーダを含むことができる。幾つかの例において、調整は、非機能的であり得る。例えば、調整は、より大きいデータ量及び/又は速度をサポートする要求を含むことができる。構成ユーザ・インターフェース156はまた、矢印162で示されるように、配備160のためにソリューションを送出するのに用いることもできる。幾つかの例において、矢印164で示されるように、配備されたソリューションを知識データベース122に送ることもできる。例えば、ソリューション・エクスプローラ130は、ストリーミング・アプリケーションの生成のために、ソリューション134のリスト内に配備されたソリューションを含むことができる。
上述のように、ソリューション生成器モジュール119が要件エンティティを知識データベース122内の既存のソリューションにマッピングできない場合、タスク生成器モジュール152は、ソリューション・エクスプローラ130のための新しい開発タスクを自動的に生成することができる。幾つかの例において、ソリューション・エディタ140はまた、タスク生成器モジュール152を用いて、シミュレーション・ベースのテスト中に自動生成されたソリューションを更新することもできる。例えば、SMEは、矢印154で示されるように、ソリューション・エディタ140を用いて、自動生成されたソリューションを手動で更新することができる。幾つかの例において、ソリューション生成器モジュール119は、矢印166で示されるように、タスク生成器モジュール152に、新しい開発タスクを生成させることができる。例えば、ソリューション生成器モジュール119は、1つ又は複数のオペレータが存在しないことを検出することができる。タスク生成器モジュール152は、オペレータ生成器168に、欠落オペレータの記述を生成させることができる。例えば、必要とされる欠落オペレータの入力及び出力を記述することができる。オペレータ生成器168は、矢印170で示されるように、新しいオペレータをソリューション生成器モジュール119に送ることにより、システムに新しいオペレータを通知することができる。次に、ソリューション生成器モジュール119は、矢印174で示されるように、生成されたオペレータを用いて、付加的な遅延ソリューション172を生成することができる。幾つかの例において、ソリューション134がシミュレートされる前に、待ち時間176があることがある。例えば、ソリューション・マッパーが、顧客の特定の入力フォーマットの構文解釈の使用するための適切なインジェクタ(フィーダ)を見つけることができない場合、待機時間176があることがある。幾つかの例において、開発者は、矢印178で示されるように、タスク生成器モジュール152により提供される欠落オペレータの記述を調べ、新しいオペレータを開発することができる。矢印180で示されるように、新しいオペレータを知識データベース122に付加することができる。
図1のブロック図は、システム100が図1に示されるコンポーネントの全てを含むことを示すように意図しないことを理解されたい。むしろ、システム100は、図1に示されていないより少ない又は付加的なコンポーネント(例えば、付加的なクライアント・デバイス、付加的なリソース・サーバ等)を含むことができる。
図2は、HTTPトラフィックにおける異常の検出に対して警告を発することができるストリーミング・アプリケーションのための例示的エンティティ抽出プロセスのブロック図である。例示的プロセスは、全体的に参照番号200で示され、図8のコンピューティング・デバイス800を用いて実施することができる。図2は、半構造化要件定義202、要件分類ラベル204、及び抽出エンティティ208を含む。抽出エンティティ208は、ネットワーク・エンティティ212、トラフィック・エンティティ214、速度エンティティ216、警告エンティティ218、異常検出エンティティ220、及び外部システム・エンティティ222を含む。
例示的プロセス200において、半構造化要件定義202は、「タッピング・サーバから収集した200Mb/秒の速度を有するライブ・エンタープライズ・ネットワーク・トラフィック」の値を有する「given」要件を含む。半構造化要件定義202は、「HTTPトラフィックにおいて異常が検出される」の値を有する「when」要件をさらに含む。半構造化要件定義202はまた、「警告を発する」の値を有する「then」要件をさらに含む。矢印206で示されるように、半構造化要件定義202は、「ネットワーク分析アプリケーション」の値を有する要件分類ラベル204を生成するように、コンピューティング・デバイスにより分類することができる。例えば、コンピューティング・デバイスは、分類基準を用いて、提供された半構造化要件定義202に基づいて、要件分類ラベル204の値を求めることができる。半構造化要件定義202は、SMEにより提供され得る。
矢印210で示されるように、コンピューティング・デバイスは、要件分類ラベル204及びグロッサリ(図示せず)に基づいて、半構造化要件定義202から抽出エンティティ208を抽出することができる。各々の抽出エンティティは、属性及び値を有することができる。図2の例示的マッピング200において、ネットワーク・エンティティ212は、「ライブ」の値をもつ属性を有することができる。トラフィック・エンティティ214は、「HTTP」の値をもつ属性を有する。速度エンティティ216は、「100Mb/秒」の値をもつ属性を有する。警告エンティティ218は、「感染のみ」の値をもつ属性を有する。異常検出エンティティ220は、「HTTP」の値をもつ属性を有する。外部システム・エンティティ222は、「セキュリティ情報及びイベント管理(Security Information and Event Management)システムを示す「SIEM」の値をもつ属性を有する。次に、図4に関して詳細に後述されるように、各々の抽出エンティティを1つ又は複数のソリューション・コンポーネントにマッピングすることができる。
図2のブロック図は、プロセス200が図2に示されるコンポーネントの全てを含むことを示すように意図しないことを理解されたい。むしろ、プロセス200は、図2に示されていないより少ない又は付加的なコンポーネント(例えば、付加的な抽出エンティティ、値等)を含むことができる。
図3は、地震の震央を検出することができるストリーミング・アプリケーションのための例示的エンティティ抽出プロセスのブロック図である。例えば、ストリーミング・アプリケーションは、リアルタイムに震央を検出し、潜在的に危険な場所について早期警報を提供することができる。例示的プロセスは、全体的に参照番号300で示され、図8のコンピューティング・デバイス800を用いて実施することができる。図3は、半構造化要件定義302、要件分類ラベル304、及び抽出エンティティ308を含む。抽出エンティティ308は、センサ・データ・エンティティ312、ピーク・エンティティ314、早期警報エンティティ316、及び震央エンティティ318を含む。
例示的プロセス300において、半構造化要件定義302は、「100イベント/秒の速度で取得されるべきmseedフォーマットでの地震計からのセンサ・データ」の値を有する「given」要件を含む。半構造化要件定義302は、「単一ステーションからのピークが検出された」の値を有する「when」要件をさらに含む。半構造化要件定義302はまた、「地震の震央の検出のためのアルゴリズムを提供し、震央の座標と共に警告を発する」の値を有する「then」要件も含む。矢印306で示されるように、半構造化要件定義302は、「地震早期警報アプリケーション」の値を有する要件分類ラベル304を生成するように、コンピューティング・デバイスにより分類することができる。例えば、コンピューティング・デバイスは、分類基準を用いて、提供された半構造化要件定義302に基づいて、要件分類ラベル304の値を求めることができる。半構造化要件定義302は、SMEにより提供され得る。
矢印310で示されるように、コンピューティング・デバイスは、要件分類ラベル304及びグロッサリ(図示せず)に基づいて、半構造化要件定義302から抽出エンティティ308を抽出することができる。各々の抽出エンティティは、属性及び値を有することができる。図3の例示的マッピング300において、センサ・データ・エンティティ312は、「mseedフォーマット」の値を含む。ピーク・エンティティ314は、「閾値」の値を含む。早期警報エンティティ316及び震央エンティティ318は、いずれの属性値も有さない。次に、図5に関して詳細に後述されるように、各々の抽出エンティティを1つ又は複数のソリューション・コンポーネントにマッピングすることができる。
図3のブロック図は、プロセス300が図3に示されるコンポーネントの全てを含むことを示すように意図しないことを理解されたい。むしろ、プロセス300は、図3に示されていない、より少ない又は付加的なコンポーネント(例えば、付加的な抽出エンティティ、値等)を含むことができる。
図4は、HTTPトラフィックにおける異常の検出に対して警告を発することができるストリーミング・アプリケーションを生成するための例示的マッピングのブロック図である。例示的マッピングは、全体的に参照番号400で示され、図8のコンピューティング・デバイス800を用いて実施することができる。図4は、取り込み(ingestion)コンポーネント402、フィルタ及び強化(Filters and Enrichment)コンポーネント404、抽出コンポーネント406、マイニング・コンポーネント408、並びにシンク及び可視化コンポーネント410を含むソリューション・コンポーネントを含む。例示的マッピング400はまた、上記の図2で抽出された抽出ネットワーク・エンティティ212、トラフィック・エンティティ214、速度エンティティ216、異常検出エンティティ220、警告エンティティ218、及び外部システム・エンティティ222も含む。エンティティは、矢印414〜428を介してコンポーネントにマッピングされた状態で示される。
取り込みコンポーネント402は、ネットワーク・カードからデータをキャプチャし、並行処理を用いてそれを有効に構文解析することができる。幾つかの例において、各ボックスは、別個のCPU上で実行することができる機能ユニットを表すことができる。従って、技術により、分散型コンピューティング・アプリケーションを生成することが可能になる。例えば、ソリューション・コンポーネント402〜410の各々におけるボックスの列は、矢印414で示されるように、各コンポーネントにマッピングされた100Mb/秒の速度216の要件を満たすように実行される並行処理を示す。キャプチャ・ユニット430は、データをキャプチャし、データをソート・ユニット432に送ることができる。検出器ユニット434は、キャプチャしたデータからのHTTPトラフィックを検出することができる。例えば、複数の検出器ユニット434を用いて、キャプチャしたデータ処理の100Mb/秒の速度を可能にすることができる。出力ユニット436は、検出器ユニット434からデータを収集し、検出したHTTPトラフィックをフィルタ及び強化コンポーネント404に出力することができる。
フィルタ及び強化コンポーネント404、抽出コンポーネント406、及びマイニング・コンポーネント408は、異常検出を実行することができる。例えば、フィルタ及び強化コンポーネント404は、受け取ったHTTPトラフィックをフィルタ・ユニット440へ送ることができる受信機ユニット438を含むことができる。フィルタ・ユニット440は、フィルタリングしたデータを強化ユニット442に送ることができる。強化ユニット442は、100Mb/秒の速度でデータを強化することができる。出力ユニット444は、強化データを抽出コンポーネント406に送ることができる。
抽出コンポーネントは、受信機ユニット446と、100Mb/秒の速度でデータを抽出することができる複数の抽出ユニット448とを含むことができる。抽出コンポーネント406はまた、抽出情報をマイニング・コンポーネント408に送ることができる出力ユニット450を含むこともできる。
マイニング・コンポーネント408は、受信機ユニット452と、100Mb/秒の速度で情報を分類することができる複数のマイニング・ユニット454とを含む。マイニング・コンポーネント408はまた。マイニングした情報をシンク及び可視化コンポーネント410に送ることができる出力ユニット456も含む。例えば、マイニング・コンポーネントは、分析モデルに対応し得る。分析モデルは、モデル・リポジトリから取り出し得る。幾つかの例において、分析モデルは、訓練データセットに基づいて生成し得る。
シンク及び可視化コンポーネント410は、マイニングした情報を受け取ることができる一対の受信ユニット458を含む。受信機ユニット460は、マイニングした情報を、100Mb/秒の速度で動作することができる可視化ユニット462に送ることができる。マイニングした情報が感染されたものとして検出された場合、シンク及び可視化コンポーネント410は、警告を引き起こさせることができる。
従って、複数の機能コンポーネント402〜410が複数の要件212、214、216、218及び222にマッピングされる。図4のブロック図は、例示的マッピング400が図4に示されるコンポーネントの全てを含むことを示すように意図しないことを理解されたい。むしろ、例示的マッピング400は、図4に示されていないより少ない又は付加的なコンポーネント(例えば、付加的な抽出エンティティ、又はソリューション・コンポーネント、ユニット等)を含むことができる。
図5は、地震の震央を検出することができるストリーミング・アプリケーションを生成するための例示的マッピングのブロック図である。例示的マッピングは、全体的に参照番号500で示され、図8のコンピューティング・デバイス800を用いて実施することができる。図5は、取り込みコンポーネント502、ピーク検出器コンポーネント504、フィルタ及び強化コンポーネント506、及び改良(refinement)及びフィルタリング・コンポーネント508を含むソリューション・コンポーネントを含む。例示的マッピング500はまた、上記の図3で抽出したセンサ・データ・エンティティ312、ピーク・エンティティ314、早期警報エンティティ316、及び震央エンティティ318も含む。これらのエンティティは、矢印512、518、532、542を介してコンポーネントにマッピングされた状態で示される。
フィーダ510は、センサ・データをピーク検出器コンポーネント504に伝送することができる。ピーク検出器コンポーネントは、複数のピーク検出ユニット516と、検出したピーク出力522とを含むことができる。オートロケータ・コンポーネント520は、準備及びフィルタリング・コンポーネント526と、関連付け及び震源核形成(nucleation)モジュール528とを含むことができる。例えば、準備及びフィルタリング・コンポーネント526は、検出したピーク出力522を準備及びフィルタリングし、矢印530で示されるように、フィルタリングした出力を関連付け及び震源核形成モジュール528に送ることができる。次に、関連付け及び震源核形成モジュールは、潜在的な地震早期警報を発することができる。オートロケータ・コンポーネント520は、矢印536で示されるように、関連付け及び震源核形成モジュール528から震源(origin)情報を受け取り、震源情報に対する改良を行うための震源改良コンポーネント534をさらに含むことができる。オートロケータ・コンポーネント520はまた、矢印540で示されるように震源改良コンポーネント534から改良した震源情報を受け取ることができる震源フィルタリング・コンポーネント538を含み、地震の震央を判断することもできる。
従って、4つの提供される要件312、314、316、318を、ストリーミング・アプリケーションのための要求される機能と関連したソリューション・コンポーネントにマッピングすることができる。
図5のブロック図は、例示的マッピング500が図5に示されるコンポーネントの全てを含むことを示すように意図しないことを理解されたい。むしろ、例示的マッピング500は、図5に示されていないより少ない又は付加的なコンポーネント(例えば、付加的な抽出エンティティ、ソリューション・コンポーネント、ユニット等)を含むことができる。
図6は、グロッサリに基づいてストリーミング・アプリケーションを生成することができる例示的方法のプロセス・フロー図である。方法600は、図8のコンピューティング・デバイス800のようないずれかの適切なコンピューティング・デバイスにより実施することができ、図1のシステム100を参照して説明される。例えば、後述の方法は、図1のシステム100により実施することができる。
ブロック602において、システムは、半構造化フォーマットで主題要件を受け取る。例えば、主題要件は、人間可読言語での複数の主題制約を含むことができる。上述のように、制約は、動作ストリーミング・アプリケーションの主題要件を含むことができる。
ブロック604において、システムは、所定の分類基準に基づいて主題要件を分類する。例えば、分類基準は、編成されたカテゴリの構造を含むことができる。システムは、各主題要件又は分類基準内の主題要件と関連したキーワードを検出し、関連したカテゴリを戻すことによって、主題要件を分類することができる。
ブロック606において、システムは、文法に基づいてエンティティのリストを抽出することができる。例えば、エンティティはそれぞれ、上記の図2及び図3に関して説明されるように属性及び値を含むことができる。
ブロック608において、システムは、グロッサリに基づいてソリューションを生成する。例えば、ソリューションは、以下の図7に説明される技術に従って生成することができる。幾つかの例において、システムは、メタデータ比較に基づいてソリューションにスコア付けし、より高いスコアを有するソリューションのセットを戻すことができる。
ブロック610において、システムは、ソリューションに基づいてストリーミング分析アプリケーションを生成する。例えば、マイニング・コンポーネントは、ストリーミング分析アプリケーション内に含まれる複数のコンポーネントの1つとすることができる。幾つかの例において、ストリーミング分析アプリケーションは、リアルタイムで生成することができる。幾つかの例において、システムは、主題専門家からフィードバックを受け取り、フィードバックに基づいてストリーミング分析アプリケーションを更新することができる。例えば、フィードバックは、付加的な又は除去されたオペレータ、パラメータ、ソリューション・コンポーネント等を含むことができる。従って、システムは、修正することができるストリーミング分析アプリケーションのリアルタイム生成を可能にする。幾つかの例において、システムは、ストリーミング分析アプリケーションを実行することができる。ストリーミング分析アプリケーションは、ストリーミング分析情報を受け取り、リアルタイムの出力を生成することができる。例えば、出力は、他の種類の出力の中でも、地震の早期警報、震央の位置、異常の検出を示す警告とすることができる。幾つかの例において、システムは、主題専門家からフィードバックを受け取り、フィードバックに基づいて、グロッサリ内のストリーミング分析アプリケーションの概念グラフを更新することができる。これに応じて、ストリーミング分析アプリケーションを更新することもできる。
図6のプロセス・フロー図は、方法600の動作がいずれかの特定の順序で実行されること、又はあらゆる場合において、方法600の動作の全てが含まれることを示すように意図しない。
図7は、モデルを含むソリューションを生成することができる例示的方法のプロセス・フロー図である。方法700は、図8のコンピューティング・デバイス800のような、いずれかの適切なコンピューティング・デバイスにより実施することができ、図1のシステム100を参照して説明される。例えば、後述の方法は、図1のソリューション生成器モジュール119により実施することができる。
ブロック702において、ソリューション生成器は、抽出エンティティを受け取る。例えば、抽出エンティティは、上記の図2及び図3に説明されるような値を有する1つ又は複数の属性を含むことができる。
ブロック704において、ソリューション生成器は、モデル・リポジトリ内に適切なモデルが存在するかどうかを判断する。例えば、適切なモデルは、モデル・リポジトリ内の各モデルと関連したメタデータを用いて検出することができる。幾つかの例において、メタデータは、他の情報の中でも、モデルをいつ適用できるか、モデルはどの使用事例をカバーできるかといった情報を含むことができる。メタデータは、モデルを1つ又は複数の抽出エンティティと照合するための主要データとして使用することができる。例えば、ソリューション生成器は、エンティティのリストをソリューション・コンポーネントにマッピングし、マッピングしたソリューション・コンポーネントをモデル・リポジトリ内の既存のモデルのソリューション・コンポーネントと比較することによって、適切なモデルが存在するかどうかを判断することができる。システムが、モデル・リポジトリ内に適切なモデルが存在することを検出した場合、方法はブロック706に進むことができる。システムが、モデル・リポジトリ内に適切なモデルが存在しないことを検出した場合、方法はブロック708に進むことができる。
ブロック706において、ソリューション生成器は、モデル・リポジトリからモデルをフェッチする。例えば、モデル・リポジトリは、方法の過去の事例から生成されたモデルを含むことができる。幾つかの例において、モデル・リポジトリは、オープン・ソース・モデルを含むことができる。
ブロック708において、ソリューション生成器は、分類及び抽出したエンティティに基づいて、モデル・リポジトリ内の適切な訓練データセットを検出する。例えば、モデル・リポジトリ内の訓練セットの各々は、モデルに類似した関連したメタデータを有することができる。メタデータは、訓練セットを1つ又は複数の抽出エンティティと照合するために用いることができる。例えば、ソリューション生成器は、訓練データのメタデータを抽出エンティティ・リストと比較することによって、適切な訓練データセットを検出することができる。
ブロック710において、ソリューション生成器は、訓練データセットに基づいてモデルを生成する。システムは、エンティティのリストを1つ又は複数のソリューション・コンポーネントにマッピングすることができる。例えば、上記の図4のマイニング・コンポーネントは、ソリューション生成器により生成された分析モデルに対応し得る。幾つかの例において、アルゴリズムを既に選択され、新しい訓練データで「リフレッシュされる」ことがある。例えば、新しい訓練データは、特定の使用事例により適したものであり得る。幾つかの例において、アルゴリズムは、決定木の形態とすることができる。幾つかの例においては、アルゴリズムを選択することができない。この場合、ソリューション生成器は、多数の教師ありアルゴリズムを訓練し、次に、訓練したアルゴリズムの性能を比較することができる。
ブロック712において、ソリューション生成器は、抽出エンティティをグロッサリ内の概念グラフ及び特性にマッピングすることによって、ストリーミング分析アプリケーション・コンポーネントを生成する。例えば、ストリーミング分析アプリケーション・コンポーネントは、他のコンポーネントの中でも、上記の図4の例におけるような、取り込み、フィルタ、抽出、マイニング、及び/又はシンク及び可視化コンポーネントを含むことができる。
ブロック714において、ソリューション生成器は、モデルを含むソリューションを生成する。例えば、ソリューションは、モデルに対応するマイニング・コンポーネントを含むことができる。幾つかの例において、ソリューションは、シミュレートし、修正することができる。例えば、ソリューション・エディタを用いて、ソリューションを改良することができる。幾つかの例において、ソリューション生成器は、エンティティのリストを1つ又は複数のソリューション・コンポーネントにマッピングすることによって、ソリューションを生成することができる。
図7のプロセス・フロー図は、方法700の動作がいずれかの特定の順番で実行されること、又はどの場合においても方法700の動作の全てが含まれることを意図しない。例えば、ブロック704において適切なモデルが検出された場合、ブロック708及び710を実行することはできない。さらに、方法700は、任意の適切な数の付加的な動作を含むことができる。
図8は、ストリーミング分析アプリケーションを生成することができる例示的コンピューティング・デバイスのブロック図である。コンピューティング・デバイス800は、例えば、サーバ、デスクトップ型コンピュータ、ラップトップ型コンピュータ、タブレット型コンピュータ、又はスマートフォンとすることができる。幾つかの例において、コンピューティング・デバイス800は、クラウド・コンピューティング・ノードとすることができる。コンピューティング・デバイス800は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピューティング・デバイス800は、通信ネットワークを通じてリンクされる遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
コンピューティング・デバイス800は、格納される命令、動作中にその命令の動作のための一時的メモリ空間を提供するためのメモリ・デバイス804を実行するプロセッサ802を含むことができる。プロセッサは、シングルコア・プロセッサ、マルチコア・プロセッサ、コンピューティング・クラスタ、又は任意の数の他の構成とすることができる。メモリ804は、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ、フラッシュ・メモリ、又は他のいずれかの適切なメモリ・システムを含むことができる。
プロセッサ802は、システム相互接続806(例えば、PCI(登録商標)、PCI−Express(登録商標)等)を通じて、コンピューティング・デバイス800を1つ又は複数のI/Oデバイス810に接続するように適合された入力/出力(I/O)デバイス・インターフェース808に接続することができる。I/Oデバイス810は、例えば、キーボード及びポインティング・デバイスを含むことができ、ポインティング・デバイスは、中でも、タッチパッド又はタッチスクリーンを含むことができる。I/Oデバイス810は、コンピューティング・デバイス800の内蔵コンポーネントとしてもよく、又はコンピューティング・デバイス800に外部接続されたデバイスとしてもよい。
プロセッサ802はまた、システム相互接続806を通じて、コンピューティング・デバイス800をディスプレイ・デバイス814に接続するように適合されたディスプレイ・インターフェース812にリンクすることもできる。ディスプレイ・デバイス814は、コンピューティング・デバイス800の内蔵コンポーネントであるディスプレイ画面を含むことができる。ディスプレイ・デバイス814はまた、コンピューティング・デバイス800に外部接続された、中でも、コンピュータ・モニタ、テレビジョン、又はプロジェクタを含むこともできる。さらに、システム相互接続806を通じてコンピューティング・デバイス800をネットワーク818に接続するために、ネットワーク・インターフェース・コントローラ(NIC)816を適合することができる。幾つかの実施形態において、NIC816は、中でも、インターネット・スモール・コンピュータ・システム・インターフェースのようないずれかの適切なインターフェース又はプロトコルを用いてデータを伝送することができる。ネットワーク818は、中でも、セルラー・ネットワーク、無線ネットワーク、広域ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、又はインターネットとすることができる。外部コンピューティング・デバイス820は、ネットワーク818を通じてコンピューティング・デバイス800に接続することができる。幾つかの例において、外部コンピューティング・デバイス820は、外部ウェブサーバとすることができる。幾つかの例において、外部コンピューティング・デバイス820は、クラウド・コンピューティング・ノードとすることができる。
プロセッサ802はまた、システム相互接続806を通じて、ハードドライブ、光ドライブ、USBフラッシュドライブ、ドライブのアレイ、又はそれらのいずれかの組み合わせを含むことができるストレージ・デバイス822にリンクすることもできる。幾つかの例において、ストレージ・デバイスは、分類器モジュール824、抽出器モジュール826、及びモデラー・モジュール828を含むことができる。分類器モジュール824は、半構造化フォーマットで主題要件を受け取ることができる。例えば、主題要件は、人間可読言語での複数の主題制約を含み得る。分類器モジュール824は、所定の分類基準に基づいて、主題要件を分類することができる。例えば、所定の分類基準は、1つ又は複数の語からなる1つ又は複数の所定のカテゴリを含むことができる。抽出器モジュール826は、文法に基づいて、エンティティのリストを抽出することができる。例えば、各エンティティは、属性及び値を含むことができる。モデラー・モジュール828は、エンティティのリストについての適切なモデルがモデル・リポジトリ内に存在するかどうかを判断することができる。幾つかの例において、適切なモデルが存在する場合、モデラー・モジュール828は、モデル・リポジトリから適切なモデルを取り出すことができる。例えば、モデラー・モジュール828は、適切なモデルを用いて、マイニング・コンポーネントを生成することができる。幾つかの例において、モデラー・モジュール828は、分類及び抽出したエンティティに基づいて、モデル・リポジトリ内の適切な訓練データセットを見つけることができる。例えば、モデラー・モジュール828は、モデル・リポジトリ内のいずれの適切なモデルも検出しないことに応答して、適切な訓練データセットを検索することができる。モデラー・モジュール828はまた、訓練データセットに基づいてモデルを生成するためのコードを含むこともできる。例えば、訓練データセットは、無害な及び疑わしいネットワーク・トラフィックを表すトラフィックを含み得る。モデラー・モジュール828はまた、モデルに基づいて、マイニング・コンポーネントを生成することもできる。例えば、マイニング・コンポーネントは、ストリーミング分析のために用いることができる。次に、モデラー・モジュール828は、マイニング・コンポーネントを含むストリーミング分析アプリケーションを生成することができる。幾つかの例において、コンピューティング・デバイスがストリーミング分析アプリケーションを実行するとき、ストリーミング分析アプリケーションは、ストリーミング分析情報を受け取り、リアルタイム出力を生成することができる。例えば、出力は、他の種類の出力の中でも、地震の早期警報、震央の位置、異常の検出を示す警告とすることができる。
図8のブロック図は、コンピューティング・デバイス800が図8に示されるコンポーネントの全てを含むことを示すように意図していないことを理解されたい。むしろ、コンピューティング・デバイス800は、図8に示されていないより少ない又は付加的なコンポーネント(例えば、付加的なメモリ・コンポーネント、組み込みコントローラ、モジュール、付加的なネットワーク・インターフェース等)を含むことができる。さらに、分類器モジュール824、抽出器モジュール826、及びモデラー・モジュール828の機能のいずれも、ハードウェアにおいて及び/又はプロセッサ802において部分的に又は完全に実装することができる。例えば、機能は、中でも、特定用途向け集積回路、組み込みコントローラ内に実装される論理、又はプロセッサ802内に実装される論理を用いて実装することができる。幾つかの実施形態において、分類器モジュール824、抽出器モジュール826、及びモデラー・モジュール828の機能は、論理を用いて実装することができ、本明細書で参照される論理は、いずれかの適切なハードウェア(例えば、中でもプロセッサ)、ソフトウェア(例えば、中でもアプリケーション)、ファームウェア、又はハードウェア、又はソフトウェア及びファームウェアのいずれかの適切な組み合わせを含むことができる。
ここで図9を参照すると、例示的なクラウド・コンピューティング環境900が示される。示されるように、クラウド・コンピューティング環境900は、例えば携帯情報端末(PDA)又は携帯電話904A、デスクトップ型コンピュータ904B、ラップトップ型コンピュータ904C、及び/又は自動車コンピュータ・システム904Nといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード902を含む。ノード902は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境900が、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないinfrastructure as a service、platform as a service、及び/又はsoftware as a serviceを提供することが可能になる。図9に示されるコンピューティング・デバイス904A〜Nのタイプは単に例示であることを意図し、コンピューティング・ノード902及びクラウド・コンピューティング環境900は、任意のタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続によって(例えば、ウェブ・ブラウザを用いて)、任意のタイプのコンピュータ化された装置と通信できることを理解されたい。
ここで図10を参照すると、クラウド・コンピューティング環境900(図9)により提供される機能抽象化層のセットが示される。図10に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層1000は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、IBM(登録商標) zSeries(登録商標)システムを一例とするメインフレームと;IBM pSeries(登録商標)システムを一例とするRISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバと;IBM xSeries(登録商標)システムと;IBM BladeCenter(登録商標)システムと;ストレージ・デバイスと;ネットワーク及びネットワーキング・コンポーネントと、が含まれる。ソフトウェア・コンポーネントの例として、IBM WebSphere(登録商標)アプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、IBM DB2(登録商標)データベース・ソフトウェアを一例とするデータベース・ソフトウェアと、が含まれる。(IBM、zSeries、pSeries、xSeries、BladeCenter、Webspere及びDB2は、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。)
仮想化層1002は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。一例においては、管理層1004が、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、これらのリソースの消費に対する課金又は請求とを提供する。1つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層1006は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、トランザクション処理、及びストリーミング・アプリケーション生成が含まれる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、又は、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することによってコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、命令がそこに格納されたコンピュータ可読ストレージ媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータにより実施されるプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するようにすることもできる。
ここで図11を参照すると、グロッサリを用いてストリーミング・アプリケーションを生成することができる、例示的な有形の非一時的コンピュータ可読媒体1100のブロック図が示される。有形の非一時的コンピュータ可読媒体1100は、コンピュータ相互接続1104によってプロセッサ1102によりアクセスすることができる。さらに、有形の非一時的コンピュータ可読媒体1100は、上記の図6の方法600の動作を実施するよう、プロセッサ1102に指示するためのコードを含むことができる。
図11に示されるように、本明細書で述べられる種々のソフトウェア・コンポーネントは、有形の非一時的コンピュータ可読媒体1100上に格納することができる。例えば、分類器モジュール1106は、半構造化フォーマットで主題要件を受け取るためのコードを含む。分類器モジュール1106はまた、所定の分類基準に基づいて主題要件を分類するためのコードも含む。抽出器モジュール1108は、グロッサリに基づいて主題要件からエンティティのリストを抽出するためのコードを含む。モデラー・モジュール1110は、分類及び抽出したエンティティに基づいて、モデル・リポジトリ内の適切な訓練データセットを検出するためのコードを含む。モデラー・モジュール1110はまた、訓練データセットに基づいてモデルを生成するためのコードも含む。モデラー・モジュール1110はまた、モデルに基づいてストリーミング分析アプリケーションを生成するためのコードも含む。例えば、モデラー・モジュール1110は、モデル・リポジトリからモデルをフェッチし、モデルに基づいてストリーミング分析アプリケーションを生成するためのコードを含むことができる。モデラー・モジュール1110はまた、マイニング・コンポーネントを含むストリーミング分析アプリケーションを生成するためのコードを含むこともできる。幾つかの例において、適切なモデルがモデル・リポジトリ内に既に存在することがある。モデラー・モジュール1110は、モデル・リポジトリ内の既存のモデルを検出するためのコードを含むことができる。次に、モデラー・モジュール1110は、モデル・リポジトリ内の既存のモデルに基づいて、ストリーミング分析アプリケーションを生成することができる。
幾つかの例において、モデラー・モジュール1110は、エンティティのリストをソリューション・コンポーネントにマッピングし、マッピングされたソリューション・コンポーネントを、モデル・リポジトリ内の既存のモデルのソリューション・コンポーネントと比較するためのコードを含むことができる。幾つかの例において、モデラー・モジュール1110は、オペレータが存在しないことを検出し、タスク生成要求をユーザ・インターフェースに送るためのコードを含むことができる。幾つかの例において、モデラー・モジュール1110は、主題専門家からフィードバックを受け取り、フィードバックに基づいてストリーミング分析アプリケーションを修正することができる。特定の用途に応じて、図11に示されない任意の数の付加的なソフトウェア・コンポーネントを、有形の非一時的コンピュータ可読媒体1100内に含ませ得ることを理解されたい。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。特定の用途に応じて、図11に示されない任意の数の付加的なソフトウェア・コンポーネントを有形の非一時的コンピュータ可読媒体1100内に含ませ得ることを理解されたい。
本発明の種々の実施形態の説明が例証のために提示されたが、網羅的であること又は開示される実施形態を制限することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの変更及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理及び実際の用途、又は市場で見出される技術に優る技術の改善を最もよく説明するために、又は、当業者が本明細書で開示される実施形態を理解することができるように、選択された。
本発明の実施形態の環境は、任意の所望の様式で配置された、任意の数のコンピュータ又は他の処理システム(例えば、クライアント又はエンドユーザ・システム、サーバ・システム等)及びデータベース又は他のリポジトリを含むことができ、本発明の実施形態は、任意の所望のタイプのコンピューティング環境(例えば、クラウド・コンピューティング、クライアント・サーバ、ネットワーク・コンピューティング、メインフレーム、独立型システム等)に適用することができる。本発明の実施形態により使用されるコンピュータ又は他の処理システムは、任意の数の任意のパーソナル・コンピュータ又は他のタイプのコンピュータ又は処理システム(例えば、デスクトップ、ラップトップ、PDA、モバイル機器等)により実装することができ、任意の市販のオペレーティング・システム、及び市販及び特注のソフトウェア(例えば、ブラウザ・ソフトウェア、通信ソフトウェア、サーバ・ソフトウェア、分類器モジュール、抽出器モジュール、モデラー・モジュール等)の任意の組み合わせを含むことができる。これらのシステムは、情報を入力し及び/又は表示するための任意のタイプのモニタ及び入力デバイス(例えば、キーボード、マウス、音声認識等)を含むことができる。
本発明の実施形態のソフトウェア(例えば、分類器モジュール、抽出器モジュール、モデラー・モジュール等)は、任意の所望のコンピュータ言語で実装することができ、本明細書内に含まれる機能的説明及び図面に示されるフローチャートに基づいて、コンピュータ技術の当業者によって開発できることを理解されたい。さらに、本明細書における種々の機能を実行するソフトウェアへのいずれの言及も、これらの機能をソフトウェア制御下で実行するコンピュータ・システム又はプロセッサを一般的に指す。本発明の実施形態のコンピュータ・システムは、代替的に、いずれかのタイプのハードウェア及び/又は他の処理回路により実装することができる。
コンピュータ又は他の処理システムの種々の機能は、任意の方式で任意の数のソフトウェア及び/又はハードウェア・モジュール又はユニット、処理システム又はコンピュータ・システム及び/又は回路の間に分散させることができ、コンピュータ又は処理システムは、互いにローカルに又は遠隔に配置することができ、いずれかの適切な通信媒体(例えば、LAN、WAN、イントラネット、インターネット、有線、モデム接続、無線等)を介して通信することができる。例えば、本発明の実施形態の機能は、任意の方式で、種々のエンドユーザ/クライアント及びサーバ・システム、及び/又は他のいずれかの中間処理デバイスの間に分散させることができる。上述され、フローチャートで示されるソフトウェア及び/又はアルゴリズムは、本明細書で説明される機能を達成する任意の方式で修正することができる。さらに、フローチャート又は説明における機能は、所望の動作を達成する任意の順序で実行することができる。
本発明の実施形態のソフトウェア(例えば、分類器モジュール、抽出器モジュール、モデラー・モジュール等)は、独立型システム、又はネットワーク若しくは他の通信媒体により接続されたシステムでの使用のために、固定又は携帯型プログラム製品装置又はデバイスの非一時的コンピュータ使用可能媒体(例えば、磁気又は光媒体、光磁気媒体、フロッピー・ディスケット、CD−ROM、DVD、メモリ・デバイス等)上で利用可能であり得る。
通信ネットワークは、任意の数の任意のタイプの通信ネットワーク(例えば、LAN、WAN、インターネット、イントラネット、VPN等)により実装することができる。本発明の実施形態のコンピュータ又は他の処理システムは、ネットワーク上でいずれかの従来型又は他のプロトコルを介して通信するためのいずれかの従来型又は他の通信デバイスを含むことができる。コンピュータ又は他の処理システムは、ネットワークへのアクセスのために任意のタイプの接続(例えば、有線、無線等)を用いることができる。ローカル通信媒体は、いずれかの適切な通信媒体(例えば、ローカル・エリア・ネットワーク(LAN)、有線、無線リンク、イントラネット等)により実装することができる。
システムは、情報(例えば、分類基準データ、グロッサリ・データ、知識データベース・データ、モデル/訓練データ、デフォルト/ユーザ定義入力等)を格納するために、任意の数の任意の従来型又は他のデータベース、データストア又はストレージ構造(例えば、ファイル、データベース、データ構造、データ又は他のリポジトリ等)を用いることができる。データベース・システムは、情報(例えば、分類基準データ、グロッサリ・データ、知識データベース・データ、モデル/訓練データ、デフォルト/ユーザ定義入力等)を格納するための任意の数の任意の従来型又は他のデータベース、データストア又はストレージ構造(例えば、ファイル、データベース、データ構造、データ又は他のリポジトリ等)により実装することができる。データベース・システムは、サーバ及び/又はクライアント・システム内に含ませることもでき、又はこれらに結合することもできる。データベース・システム及び/又はストレージ構造は、コンピュータ又は他の処理システムから遠隔とすることもローカルとすることもでき、任意の所望のデータ(例えば、分類基準データ、グロッサリ・データ、知識データベース・データ、モデル/訓練データ、デフォルト/ユーザ定義入力等)を格納することができる。
本発明の実施形態は、情報(例えば、分類基準データ、グロッサリ・データ、知識データベース・データ、モデル/訓練データ、デフォルト/ユーザ定義入力等)を取得又は提供するために、任意の数の任意のタイプのユーザ・インターフェース(例えば、グラフィカル・ユーザ・インターフェース(GUI)、コマンドライン、プロンプト等)を使用することができ、インターフェースは、任意の方式で配置された任意の情報を含むことができる。インターフェースは、いずれかの適切な入力デバイス(例えば、マウス、キーボード等)を介して情報を入力/表示するため及び所望の動作を開始し、所望のアクションを開始するための、任意の位置に配置された任意の数の任意のタイプの入力又は作動機構(例えば、ボタン、アイコン、フィールド、ボックス、リンク等)を含むことができる。インターフェース画面は、画面間をいずれかの方式でナビゲートするためのいずれかの適切なアクチュエータ(例えば、リンク、タブ等)を含むことができる。
本発明の実施形態は、上述した特定のタスク又はアルゴリズムに限定されるものではなく、参加者の各々の好み(preference)、制限及び能力を分析することによって、参加者間のあらゆる活動の選択肢を判断するために用いることができる。
本明細書で用いられる用語は、特定の実施形態を説明することのみを目的とし、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が明確に他の場合を指示していない限り、複数形も含む。「含む(comprise)」、「含んでいる(comprising)」、「含む(include)」、「含んでいる(including)」、「有する(has)」、「有する(have)」、「有している(having)」、「備える(with)」などの用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はその群の存在又は付加を除外するものではないことが、さらに理解されるであろう。
以下の特許請求の範囲における全てのミーンズ又はステップ・プラス・ファンクション要素の対応する構造、材料、動作及び均等物は、具体的に特許請求される他の請求される要素と組み合わせて機能を実行するための任意の構造、材料、又は動作を含むことが意図されている。本発明の説明は、例示及び説明の目的のために提示されたものにすぎず、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲及び趣旨から逸脱することなく多くの修正及び変形が明らかとなるであろう。本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図されている特定の用途に適するように種々の修正を伴う種々の実施形態に関して、本発明を理解することができるように、実施形態が選択され、説明された。
本発明の種々の実施形態の説明が例示の目的のために提示されたが、網羅的であること、又は開示された実施形態に制限することを意図するものではない。当業者には、説明される実施形態の範囲の趣旨及び範囲から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の用途、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体内に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、又は、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて、電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施する命令を含む製品を製造するようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。