(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-15
(45)【発行日】2024-08-23
(54)【発明の名称】モデルベースのアプリケーション制御フレームワークを実装するためのシステムおよび方法
(51)【国際特許分類】
G06F 8/35 20180101AFI20240816BHJP
【FI】
G06F8/35
(21)【出願番号】P 2021557902
(86)(22)【出願日】2020-03-24
(86)【国際出願番号】 US2020024392
(87)【国際公開番号】W WO2020198193
(87)【国際公開日】2020-10-01
【審査請求日】2023-03-14
(32)【優先日】2019-03-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】519022104
【氏名又は名称】ジェイピーモルガン・チェース・バンク,ナショナル・アソシエーション
【氏名又は名称原語表記】JPMorgan Chase Bank,N.A.
【住所又は居所原語表記】383 Madison Avenue,New York,NY 10179,United States of America
(74)【代理人】
【識別番号】100118902
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100162846
【氏名又は名称】大牧 綾子
(72)【発明者】
【氏名】シェパード,マーティン
(72)【発明者】
【氏名】ジョンソン,マーク・アンドリュー
(72)【発明者】
【氏名】ロイル,イアン
【審査官】北川 純次
(56)【参考文献】
【文献】特開2015-125701(JP,A)
【文献】特開平09-198242(JP,A)
【文献】特開平07-325709(JP,A)
【文献】特表2018-535480(JP,A)
【文献】米国特許出願公開第2007/0169049(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/30-8/35
(57)【特許請求の範囲】
【請求項1】
モデルベースのアプリケーション制御フレームワークを実装する方法であって、
少なくとも1つのコンピュータプロセッサを備える情報処理装置において、
アプリケーションを複数のモジュールに分割するステップであって、各モジュールは、独立して実行可能なアプリケーションのコンポーネントを含む、ステップと、
前記モジュールのそれぞれについて複数の属性を決定するステップと、
各モジュールについて展開プラットフォームを特定するステップと、
前記モジュール、前記属性、および前記展開プラットフォーム
を特定する、前記アプリケーションの属性モデルを構築するステップと、
前記属性モデルの制御要件を特定するステップと、
前記制御要件を実装するためのアクションを特定するステップと、
前記制御要件を実装するための前記アクションを前記アプリケーション
上で実行するステップと、
を含む、方法。
【請求項2】
前記属性は、OSタイプ、データ分類、および外部インターフェースのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
前記属性を絞り込むために、質問連鎖で複数の質問を適用するステップ、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記属性は、コードスキャン、インベントリシステム、およびサーバスキャンのうちの少なくとも1つを使用して自動的に特定される、請求項1に記載の方法。
【請求項5】
前記制御要件は、組織のポリシーに基づいている、請求項1に記載の方法。
【請求項6】
前記制御要件を実装するための前記アクションは、前記展開プラットフォームに固有のものである、請求項1に記載の方法。
【請求項7】
前記アプリケーションへの前記制御要件の前記実装を追跡するステップ、
をさらに含む、請求項1に記載の方法。
【請求項8】
モデルベースのアプリケーション制御フレームワークを実装するための方法であって、
少なくとも1つのコンピュータプロセッサを備える情報処理装置において、
アプリケーションを複数のモジュールに分割するステップであって、各モジュールは、独立して実行可能なアプリケーションのコンポーネントを含む、ステップと、
前記モジュールのそれぞれについて複数の属性を決定するステップと、
各モジュールについて展開プラットフォームを特定するステップと、
前記モジュールの1つ、前記モジュールの前記属性、および前記モジュールの前記展開プラットフォームに関連するデザインパターンを特定するステップと、
前記デザインパターンに対する制御要件を特定するステップと、
前記制御要件を実装するためのアクションを特定するステップと、
前記制御要件を実装するための前記アクションを前記アプリケーション
上で実行するステップと、
を含む、方法。
【請求項9】
前記属性は、OSタイプ、データ分類、および外部インターフェースのうちの少なくとも1つを含む、請求項8に記載の方法。
【請求項10】
前記属性は、コードスキャン、インベントリシステム、およびサーバスキャンのうちの少なくとも1つを使用して自動的に特定される、請求項8に記載の方法。
【請求項11】
前記制御要件は、組織のポリシーに基づいている、請求項8に記載の方法。
【請求項12】
前記制御要件を実装するための前記アクションは、前記展開プラットフォームに固有のものである、請求項8に記載の方法。
【請求項13】
前記アプリケーションへの前記制御要件の前記実装を追跡するステップ、
をさらに含む、請求項8に記載の方法。
【請求項14】
モデルベースのアプリケーション制御フレームワークを実装するためのシステムであって、
アプリケーションをホストするための環境であって、アクションについて前記アプリケーションを監視する監視エージェントを含む、環境と、
複数の制御要件を含むデータベースと、
少なくとも1つのコンピュータプロセッサを含む電子デバイスと、
を含み、
前記電子デバイスは、
前記監視エージェントによって特定されたアクションに応答して、
前記アプリケーションを複数のモジュールに分割するステップであって、各モジュールは、独立して実行可能な前記アプリケーションのコンポーネントを含む、ステップと、
前記モジュールのそれぞれについて複数の属性を決定するステップと、
各モジュールについて展開プラットフォームを特定するステップと、
前記モジュール、前記属性、および前記展開プラットフォーム
を特定する、前記アプリケーションの属性モデルを構築するステップと、
前記属性モデルのための前記データベース内の制御要件を特定するステップと、
前記制御要件を実装するためのアクションを特定するステップと、
前記制御要件を実装するための前記アクションを前記アプリケーション
上で実行するステップと、
を実行する、システム。
【請求項15】
前記属性は、OSタイプ、データ分類、および外部インターフェースのうちの少なくとも1つを含む、請求項14に記載のシステム。
【請求項16】
前記電子デバイスは、前記属性を絞り込むために、質問連鎖で複数の質問をさらに適用する、請求項14に記載のシステム。
【請求項17】
前記属性は、コードスキャン、インベントリシステム、およびサーバスキャンのうちの少なくとも1つを使用して自動的に特定される、請求項14に記載のシステム。
【請求項18】
前記制御要件は、組織のポリシーに基づいている、請求項14に記載のシステム。
【請求項19】
前記制御要件を実装するための前記アクションは、前記展開プラットフォームに固有のものである、請求項14に記載のシステム。
【請求項20】
前記環境は、開発環境または本番環境である、請求項14に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本発明は、一般に、モデルベースのアプリケーション制御フレームワークを実装するためのシステムおよび方法に関する。
【背景技術】
【0002】
[0002]本技術の領域分野は広大であるが、たとえば、地理的な場所および/または展開のタイプ(オンプレミスとクラウドなど)によっては非常に特殊になり、技術者はどのような管理(たとえば、技術ガバナンスリスクおよびコンプライアンス、技術戦略およびポートフォリオ管理、技術資産管理、識別およびアクセス管理、データ保護、セキュリティ設定、脆弱性管理、セキュリティ運用、技術開発、技術運用、インシデントおよびイベント管理、技術回復力など)が適用されるかを理解し、これら適用が確実にこれらの管理に準拠するようにすることは不可能である。
【発明の概要】
【課題を解決するための手段】
【0003】
[0003]モデルベースのアプリケーション制御フレームワークを実装するためのシステムおよび方法が開示されている。一実施形態では、少なくとも1つのコンピュータプロセッサを備える情報処理装置において、モデルベースのアプリケーション制御フレームワークを実装するための方法は、(1)アプリケーションを複数のモジュールに分割するステップであって、各モジュールは、独立して実行可能なアプリケーションのコンポーネントを含む、ステップと、(2)モジュールのそれぞれについて複数の属性を決定するステップと、(3)各モジュールについて展開プラットフォーム(deployment platform)を特定するステップと、(4)モジュール、属性、および展開プラットフォームに基づいて、アプリケーションの属性モデルを構築するステップと、(5)属性モデルの制御要件を特定するステップと、(6)制御要件を実装するためのアクションを特定するステップと、(7)制御要件を実装するためのアクションをアプリケーションに展開するステップと、を含んでもよい。
【0004】
[0004]一実施形態では、属性は、OSタイプ、データ分類、および外部インターフェースのうちの少なくとも1つを含んでもよい。
[0005]一実施形態では、本方法は、属性を絞り込むために、質問連鎖(question chain)で複数の質問を適用するステップをさらに含んでもよい。
【0005】
[0006]一実施形態では、属性は、コードスキャン、インベントリシステム(inventory system)、およびサーバスキャンのうちの少なくとも1つを使用して自動的に特定されてもよい。
【0006】
[0007]一実施形態では、制御要件は、組織のポリシーに基づいていてもよい。
[0008]一実施形態では、制御要件を実装するためのアクションは、展開プラットフォームに固有のものであってもよい。
【0007】
[0009]一実施形態では、本方法は、アプリケーションへの制御要件の実装を追跡するステップをさらに含んでもよい。
[0010]別の実施形態によれば、少なくとも1つのコンピュータプロセッサを備える情報処理装置において、モデルベースのアプリケーション制御フレームワークを実装するための方法は、(1)アプリケーションを複数のモジュールに分割するステップであって、各モジュールは、独立して実行可能なアプリケーションのコンポーネントを含む、ステップと、(2)モジュールのそれぞれについて複数の属性を決定するステップと、(3)各モジュールについて展開プラットフォームを特定するステップと、(4)モジュールの1つ、モジュールの属性、およびモジュールの展開プラットフォームに関連するデザインパターンを特定するステップと、(5)デザインパターンに対する制御要件を特定するステップと、(6)制御要件を実装するためのアクションを特定するステップと、(7)制御要件を実装するためのアクションをアプリケーションに展開するステップと、を含んでもよい。
【0008】
[0011]一実施形態では、属性は、OSタイプ、データ分類、および外部インターフェースのうちの少なくとも1つを含んでもよい。
[0012]一実施形態では、属性は、コードスキャン、インベントリシステム、およびサーバスキャンのうちの少なくとも1つを使用して自動的に特定されてもよい。
【0009】
[0013]一実施形態では、制御要件は、組織のポリシーに基づいていてもよい。
[0014]一実施形態では、制御要件を実装するためのアクションは、展開プラットフォームに固有のものであってもよい。
【0010】
[0015]一実施形態では、本方法は、アプリケーションへの制御要件の実装を追跡するステップをさらに含んでもよい。
[0016]別の実施形態によれば、モデルベースのアプリケーション制御フレームワークを実装するためのシステムは、アプリケーションをホストするための環境であって、アクションについてアプリケーションを監視する監視エージェントを含む、環境と、複数の制御要件を含むデータベースと、少なくとも1つのコンピュータプロセッサを含む電子デバイスと、を備えてもよい。監視エージェントによって特定されたアクションに応答して、電子デバイスは、アプリケーションを複数のモジュールに分割するステップであって、各モジュールは、独立して実行可能なアプリケーションのコンポーネントを含む、ステップと、モジュールのそれぞれについて複数の属性を決定するステップと、各モジュールについて展開プラットフォームを特定するステップと、モジュール、属性、および展開プラットフォームに基づいて、アプリケーションの属性モデルを構築するステップと、属性モデルのためのデータベース内の制御要件を特定するステップと、制御要件を実装するためのアクションを特定するステップと、制御要件を実装するためのアクションをアプリケーションに展開するステップと、を実行してもよい。
【0011】
[0017]一実施形態では、属性は、OSタイプ、データ分類、および外部インターフェースのうちの少なくとも1つを含んでもよい。
[0018]一実施形態では、電子デバイスは、属性を絞り込むために、質問連鎖で複数の質問を適用してもよい。
【0012】
[0019]一実施形態では、属性は、コードスキャン、インベントリシステム、およびサーバスキャンのうちの少なくとも1つを使用して自動的に特定されてもよい。
[0020]一実施形態では、制御要件は、組織のポリシーに基づいていてもよい。
【0013】
[0021]一実施形態では、制御要件を実装するためのアクションは、展開プラットフォームに固有のものであってもよい。
[0022]一実施形態では、環境は、開発環境または本番環境であってもよい。
【0014】
[0023]本発明、その目的および利点をより完全に理解するために、添付の図面を参照しながら以下の説明を行う。
【図面の簡単な説明】
【0015】
【
図1】[0024]一実施形態によるモデルベースのアプリケーション制御フレームワークを実装するためのシステムを示す図である。
【
図2】[0025]一実施形態によるモデルベースのアプリケーション制御フレームワークを実装するための方法を示す図である。
【
図3】[0026]一実施形態による、関連するパターンを使用してモデルベースのアプリケーション制御フレームワークを実装するための方法を示す図である。
【発明を実施するための形態】
【0016】
[0027]本明細書で開示する実施形態は、モデルベースのアプリケーション制御フレームワークを実装するためのシステムおよび方法に関するものである。
[0028]
図1を参照すると、一実施形態によるモデルベースのアプリケーション制御フレームワークを実装するためのシステムが開示されている。システム100は、開発プラットフォーム110、制御データベース120、コンピュータプログラム/アプリケーション135を実行するサーバ130、および本番環境(production environment)140を含むことができる。
【0017】
[0029]一実施形態では、開発環境110は、ソフトウェアアプリケーションが開発され得る環境であってもよい。一実施形態では、開発環境110は、プログラム/アプリケーションリポジトリ(図示せず)、コードデータベース(図示せず)、ソフトウェア開発/管理システム(図示せず)などを含んでもよい。
【0018】
[0030]一実施形態では、開発環境110は、開発環境110内のソフトウェア、プログラム、アプリケーションなどを監視し、特定の閾値またはトリガ(たとえば、変更など)が満たされたときに制御要件レビュープロセスを開始することができる監視エージェント115を含んでいてもよいし、備えていてもよい。
【0019】
[0031]制御データベース120は、開発環境110で開発されているアプリケーションに適用可能な制御を格納することができる。制御の例には、技術ガバナンスリスクおよびコンプライアンス制御、技術戦略およびポートフォリオ管理制御、技術資産管理制御、識別およびアクセス管理制御、データ保護制御、セキュリティ設定制御、脆弱性管理制御、セキュリティ運用制御、技術開発制御、技術運用制御、インシデントおよびイベント管理制御、技術回復力制御などの、リスク管理およびセキュリティ制御が含まれる。これらの制御は例示的なものにすぎず、制御は、アプリケーションの種類および/またはアプリケーションが実行される環境に依存する場合がある。
【0020】
[0032]電子デバイス130は、サーバ、ワークステーション、デスクトップコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、クラウドコンテナなどを含む、任意の適切な電子デバイスであってもよい。電子デバイス130は、モデルベースのアプリケーション制御フレームワークを実装することができるコンピュータプログラム/アプリケーション135を実行することができる。
【0021】
[0033]一実施形態では、ユーザ150は、コンピュータプログラム/アプリケーション135にアクセスすることができる。一実施形態では、ユーザ150は、制御要件の定義または表示、属性および/またはモジュールの更新、デザインパターンの採用などを行うことができる。一実施形態では、ユーザ150は、要求に応答する必要がある開発者、技術者、情報セキュリティ管理者などであってもよい。たとえば、情報セキュリティ管理者は、特定のアプリケーションにどのような制御が適用されるか、また、存在するギャップについての見解を求めることができる。
【0022】
[0034]本番環境140は、制御が実施された後にアプリケーションが展開される環境であってもよい。一実施形態では、本番環境は、オンプレミス(たとえば、サーバ)、オフプレミス(たとえば、パブリッククラウド、プライベートクラウド)、仮想サーバ内であってもよい。
【0023】
[0035]一実施形態では、本番環境140は、テスト環境などのサブ環境をさらに含んでもよい。
[0036]一実施形態では、本番環境140は、本番環境140内のソフトウェア、プログラム、アプリケーションなどを監視し、特定の閾値またはトリガ(たとえば、変更など)が満たされたときに制御要件レビュープロセスを開始することができる監視エージェント145を含んでいてもよいし、備えていてもよい。
【0024】
[0037]一実施形態では、単一の監視エージェント115または145が、開発環境110および本番環境140の両方に提供されてもよい。
[0038]
図2を参照すると、一実施形態によるモデルベースのアプリケーション制御フレームワークを実装する方法が開示されている。
【0025】
[0039]ステップ205では、アプリケーションをその構成部分、またはモジュールに分割してもよい。一実施形態では、アプリケーションは開発中であってもよく、完成しているが展開されていないものであってもよい。一実施形態では、構成部分、またはモジュールは、それ自体で実行可能であってもよい。モジュールの例としては、モノリシックパーツ、データストア、マイクロサービス、ユーザインターフェース、モバイルパーツ、ロボットパーツなどがある。必要および/または所望に応じて、他の任意の適切なモジュールまたはモジュールタイプを使用してもよい。
【0026】
[0040]一実施形態では、人間の入力を用いてモジュールを特定してもよい。別の実施形態では、モジュールを特定するための自動化された方法が使用されてもよい。たとえば、コード分析、インフラストラクチャスキャンなどが、モジュールを特定するために使用されてもよい。
【0027】
[0041]ステップ210では、各モジュールおよび/またはアプリケーションの1つまたは複数の属性を決定してもよい。例示的な属性は、モジュールのOSタイプ、データ分類、外部インターフェースなどを含んでもよい。必要および/または所望に応じて、任意の適切な属性を使用してもよい。
【0028】
[0042]一実施形態では、必要に応じて、属性を絞り込むために、属性に質問連鎖を適用してもよい。たとえば、属性がPIIデータを示す場合、PIIデータのタイプ、PIIデータのソース、または必要および/または所望の他の情報を決定するために質問連鎖を提示してもよい。
【0029】
[0043]一実施形態において、質問連鎖は、属性に対してタグ付けされる可能性のあるツリーベースのアプローチを提供してもよく、属性をさらに絞り込むことができる。
[0044]一実施形態では、質問連鎖は、新しいアプリケーションで使用されてもよい。
【0030】
[0045]別の実施形態では、属性は、たとえば、コードスキャン、インベントリシステム、サーバスキャンなどを使用して自動的に特定してもよい。一実施形態では、自動化されたシステムを既存のプログラムで使用してもよい。
【0031】
[0046]一実施形態では、必要および/または所望に応じて、手動(たとえば、質問ベース)および自動化システムの組合せを使用してもよい。
[0047]ステップ215では、各モジュールおよび/またはアプリケーションの展開プラットフォームを決定してもよい。例示的な展開プラットフォームは、プライベートクラウド、パブリッククラウド、物理サーバ、仮想サーバなどを含む。
【0032】
[0048]一実施形態では、展開プラットフォームは、上述のステップ210において属性として特定されてもよい。
[0049]ステップ220では、モジュール、属性、および展開プラットフォームに基づいて、属性モデルを構築してもよい。たとえば、属性モデルは、制御を必要とする場合がある属性、展開プラットフォームなどを特定してもよい。
【0033】
[0050]ステップ225では、属性モデルに基づいてアプリケーションの制御要件が特定されてもよく、制御要件は要件システムに割り当てられてもよい。たとえば、バックアップは、データベースに対して適用可能であるが、異なるデータベースに対してバックアップを実施する方法は、展開場所、他の属性等に応じて異なる場合がある。
【0034】
[0051]一実施形態では、組織のポリシーを属性モデルに適用して、制御要件を特定してもよい。
[0052]ステップ230では、制御要件を実装するためのアクションが特定され、開発者、ビルドシステム(build system)などに提供されてもよい。一実施形態では、アクションは、実装すべき制御要件を特定してもよいし、アプリケーションに実装されるべき制御要件を提供してもよい。一実施形態では、特定のアクションは、展開プラットフォームに基づいていてもよい。
【0035】
[0053]ステップ235では、制御がアプリケーションに実装されたことを検証するために、アプリケーションの開発を追跡してもよい。たとえば、アプリケーションをテストするためのテスト基準が提供されてもよい。別の実施形態では、開発者が、アプリケーションにおける制御の実装を証明してもよい。制御の実装を検証するための他の方法を、必要および/または所望に応じて使用してもよい。
【0036】
[0054]別の実施形態では、多くの制御要件に整合する自動化機構を提供してもよい。たとえば、デザインパターンが選択されるか、さもなければ特定される場合、デザインパターンに関連する個々の制御要件が適用されてもよい。
【0037】
[0055]
図3を参照すると、別の実施形態によるモデルベースのアプリケーション制御フレームワークを実装する方法が開示されている。
[0056]ステップ305において、アプリケーションは、その構成部分、またはモジュールに分割されてもよい。これは、上述のステップ205と同様であってもよい。
【0038】
[0057]ステップ310では、モジュールの属性が特定されてもよい。これは、上述のステップ210と同様であってもよい。
[0058]ステップ315では、各モジュールおよび/またはアプリケーションの展開プラットフォームが決定されてもよい。これは、上述のステップ215と同様であってもよい。
【0039】
[0059]ステップ320において、モジュール、属性、および展開プラットフォームに基づく属性モデルが生成されてもよく、ステップ325において、モジュール、属性、および展開プラットフォームに基づくデザインパターンが特定されてもよい。たとえば、デザインパターンは、承認された制御要件のセットを特定してもよい。
【0040】
[0060]一実施形態では、デザインパターンは、機械学習を用いて定義されてもよく、モジュール、属性、および展開プラットフォームに適用される事前の制御要件に基づいていてもよい。
【0041】
[0061]ステップ330では、特定されたパターンを適用してもよい。
[0062]ステップ335において、制御要件を実装するための残りのアクション(すなわち、デザインパターンが適用された後に残っているアクション)が特定されてもよく、開発者、ビルドシステムなどに提供されてもよい。これは、上述のステップ230と同様であってもよい。
【0042】
[0063]ステップ340では、制御がアプリケーションに実装されたことを検証するために、アプリケーションの開発を追跡してもよい。これは、上述のステップ235と同様であってもよい。
【0043】
[0064]一実施形態では、モジュールの制御要件を特定するために、属性特定とデザインパターンマッチングの組み合わせを使用してもよい。たとえば、デザインパターンが特定されても、属性モデルの使用を選んでデザインパターンを拒否してもよい。別の実施形態では、同じアプリケーションは、属性モデルを使用して制御要件を特定するモジュールと、デザインパターンを使用して制御要件を特定するモジュールを含んでいてもよい。
【0044】
[0065]以下、本発明のシステムおよび方法の実施の一般的な態様を説明する。
[0066]本発明のシステムまたは本発明のシステムの一部は、たとえば、汎用コンピュータなどの「プロセシングマシン(processing machine)」の形態であり得る。本明細書で使用される場合、「プロセシングマシン」という用語は、少なくとも1つのメモリを使用する少なくとも1つのプロセッサを含むと理解されるべきである。少なくとも1つのメモリは、命令のセットを格納する。命令は、永続的または一時的に、プロセシングマシンの1つまたは複数のメモリに格納され得る。プロセッサは、データを処理するために、1つまたは複数のメモリに格納されている命令を実行する。命令のセットは、上記のタスクなど、特定の1つまたは複数のタスクを実行する様々な命令を含み得る。特定のタスクを実行するためのそのような命令のセットは、プログラム、ソフトウェアプログラム、または単にソフトウェアとして特徴付けられ得る。
【0045】
[0067]1つの実施形態では、プロセシングマシンは、特殊なプロセッサであり得る。
[0068]上記のように、プロセシングマシンは、データを処理するために1つまたは複数のメモリに格納されている命令を実行する。データのこの処理は、たとえば、別のプロセシングマシンによる要求および/または他の入力に応答して、前の処理に応答して、自動化されたスケジューリングから、プロセシングマシンの1人または複数のユーザによるコマンドに応答し得る。
【0046】
[0069]上記のように、本発明を実施するために使用されるプロセシングマシンは、汎用コンピュータであり得る。しかしながら、上記のプロセシングマシンはまた、特殊用途コンピュータと、たとえば、マイクロコンピュータ、ミニコンピュータまたはメインフレームを含むコンピュータシステムと、プログラムされたマイクロプロセッサと、マイクロコントローラと、周辺集積回路素子と、CSIC(カスタマ向け集積回路)またはASIC(特定用途向け集積回路)または他の集積回路と、論理回路と、デジタル信号プロセッサと、FPGA、PLD、PLA、またはPALなどのプログラマブル論理デバイスと、または、本発明の処理のステップを実施できる他の任意のデバイスまたはデバイスの構成とを含む多種多様な他の技術のうちのいずれかをも利用し得る。
【0047】
[0070]本発明を実施するために使用されるプロセシングマシンは、適切なオペレーティングシステムを利用し得る。したがって、本発明の実施形態は、iOSオペレーティングシステム、OS Xオペレーティングシステム、Androidオペレーティングシステム、Microsoft Windows(商標)オペレーティングシステム、Unixオペレーティングシステム、Linux(登録商標)オペレーティングシステム、Xenixオペレーティングシステム、IBM AIX(商標)オペレーティングシステム、Hewlett-Packard UX(商標)オペレーティングシステム、Novell Netware(商標)オペレーティングシステム、Sun Microsystems Solaris(商標)オペレーティングシステム、OS/2(商標)オペレーティングシステム、BeOS(商標)オペレーティングシステム、Macintoshオペレーティングシステム、Apacheオペレーティングシステム、OpenStep(商標)オペレーティングシステム、または別のオペレーティングシステムまたはプラットフォームを実行するプロセシングマシンを含み得る。
【0048】
[0071]上記のような本発明の方法を実践するために、プロセシングマシンのプロセッサおよび/またはメモリが、物理的に同じ地理的場所に配置される必要はないことが認識される。すなわち、プロセシングマシンによって使用されるプロセッサおよびメモリのおのおのは、地理的に異なる位置に配置され、任意の適切な方式で通信するように接続され得る。それに加えて、プロセッサおよび/またはメモリのおのおのは、異なる物理的な機器から構成され得ることが認識される。したがって、プロセッサが、1つの位置にある単一の機器である必要も、メモリが、別の位置にある別の単一の機器である必要もない。すなわち、プロセッサは、2つの異なる物理的位置にある2つの機器であり得ることが考慮される。2つの異なる機器は、任意の適切な方式で接続され得る。それに加えて、メモリは、2つ以上の物理的位置に、メモリの2つ以上の部分を含み得る。
【0049】
[0072]さらに説明すると、上記のように、処理は、様々な構成要素および様々なメモリによって実行される。しかしながら、本発明のさらなる実施形態によれば、上記のような2つの異なる構成要素によって実行される処理は、単一の構成要素によって実行され得ることが認識される。さらに、上記のように1つの異なる構成要素によって実行される処理は、2つの異なる構成要素によって実行され得る。同様の方式で、上記の2つの異なるメモリ部分によって実行されるメモリストレージは、本発明のさらなる実施形態によれば、単一のメモリ部分によって実行され得る。さらに、上記のように1つの異なるメモリ部分によって実行されるメモリストレージは、2つのメモリ部分によって実行され得る。
【0050】
[0073]さらに、様々な技術を使用して、様々なプロセッサおよび/またはメモリ間の通信を提供し、ならびに本発明のプロセッサおよび/またはメモリが、他の任意のエンティティと通信できるように、すなわち、たとえば、追加の命令を取得したり、リモートメモリストアにアクセスして使用できるようにすることができる。そのような通信を提供するために使用されるそのような技術は、たとえば、ネットワークと、インターネットと、イントラネットと、エクストラネットと、LANと、イーサネットと、セルタワーまたは衛星を介したワイヤレス通信と、または、通信を提供する任意のクライアントサーバシステムとを含み得る。そのような通信技術は、たとえば、TCP/IP、UDP、またはOSIなどの任意の適切なプロトコルを使用し得る。
【0051】
[0074]上記のように、命令のセットが、本発明の処理において使用され得る。命令のセットは、プログラムまたはソフトウェアのフォーマットの形態であり得る。ソフトウェアは、たとえば、システムソフトウェアまたはアプリケーションソフトウェアの形態であり得る。ソフトウェアは、たとえば、別々のプログラムの集合、より大きなプログラム内のプログラムモジュール、またはプログラムモジュールの一部の形態であり得る。使用されるソフトウェアは、オブジェクト指向プログラミングの形態のモジュール式プログラミングも含み得る。ソフトウェアは、処理中のデータをどう処理するかをプロセシングマシンに指示する。
【0052】
[0075]さらに、本発明の実施および操作で使用される命令または命令のセットは、プロセシングマシンが命令を読み取ることができるような、適切な形態であり得ることが認識される。たとえば、プログラムを形成する命令は、マシン語またはオブジェクトコードに変換されて、1つまたは複数のプロセッサが命令を読み取れるようにする適切なプログラミング言語の形態であり得る。つまり、特定のプログラミング言語で記述されたプログラミングコードまたはソースコードの行は、コンパイラ、アセンブラ、またはインタプリタを使用してマシン語に変換される。マシン語は、特定のタイプのプロセシングマシン、すなわち、たとえば、特定のタイプのコンピュータに固有の、バイナリコード化されたマシン命令である。コンピュータは、マシン語を理解する。
【0053】
[0076]本発明の様々な実施形態によれば、任意の適切なプログラミング言語が使用され得る。例示的に、使用されるプログラミング言語は、たとえば、アセンブリ言語、Ada、APL、Basic、C、C++、COBOL、dBase、Forth、Fortran、Java、Modula-2、Pascal、Prolog、REXX、Visual Basic、および/またはJavaScript、Phytonを含み得る。さらに、本発明のシステムおよび方法の動作に関連して、単一のタイプの命令または単一のプログラミング言語を利用する必要はない。むしろ、必要な場合、および/または、所望される場合、任意の数の異なるプログラミング言語が利用され得る。
【0054】
[0077]また、本発明の実践において使用される命令および/またはデータは、必要に応じて、任意の圧縮または暗号化技術またはアルゴリズムを利用し得る。データを暗号化するために、暗号化モジュールが使用され得る。さらに、ファイルまたは他のデータは、たとえば、適切な復号モジュールを使用して復号され得る。
【0055】
[0078]上記のように、本発明は、たとえば、少なくとも1つのメモリを含む、コンピュータまたはコンピュータシステムを含むプロセシングマシンの形態で例示的に具体化され得る。たとえば、コンピュータオペレーティングシステムが、上記の操作を実行することを可能にする命令のセット、すなわち、ソフトウェアは、必要に応じて、多種多様な1つまたは複数の媒体のいずれかに含まれ得ることが認識されるべきである。さらに、命令のセットによって処理されるデータは、多種多様な1つまたは複数の媒体のいずれかに含まれ得る。すなわち、本発明で使用される命令および/またはデータのセットを保有するために利用される特定の媒体、すなわちプロセシングマシンのメモリは、たとえば、様々な物理的形態または伝送のいずれかを呈し得る。例示的に、媒体は、紙、紙の透明材、コンパクトディスク、DVD、集積回路、ハードディスク、フロッピーディスク、光ディスク、磁気テープ、RAM、ROM、PROM、EPROM、ワイヤ、ケーブル、ファイバ、通信チャネル、衛星伝送、メモリカード、SIMカード、または他のリモート伝送、および、本発明のプロセッサによって読み取られ得る他の任意の媒体またはデータソースの形態であり得る。
【0056】
[0079]さらに、本発明を実施するプロセシングマシンで使用される1つまたは複数のメモリは、メモリが、必要に応じて、命令、データ、または他の情報を保有できるようにするために、多種多様な形態のいずれかであり得る。したがって、メモリは、データを保有するためのデータベースの形態であり得る。データベースは、たとえば、フラットファイル構成や、またはリレーショナルデータベース構成など、任意の所望されるファイル構成を使用し得る。
【0057】
[0080]本発明のシステムおよび方法では、様々な「ユーザインターフェース」を利用して、ユーザが、本発明を実施するために使用される1つまたは複数のプロセシングマシンとインターフェースすることを可能にすることができる。本明細書で使用される場合、ユーザインターフェースは、ユーザがプロセシングマシンとインタラクトすることを可能にする、プロセシングマシンによって使用される任意のハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組合せを含む。ユーザインターフェースは、たとえば、ダイアログ画面の形態であり得る。ユーザインターフェースは、マウス、タッチスクリーン、キーボード、キーパッド、音声リーダ、音声認識器、ダイアログ画面、メニューボックス、リスト、チェックボックス、トグルスイッチ、押しボタン、または、プロセシングマシンが命令のセットを処理するとき、ユーザが、プロセシングマシンの動作に関する情報を受信できるようにする、および/または、プロセシングマシンに情報を提供する他の任意のデバイス、のうちのいずれかを含み得る。したがって、ユーザインターフェースは、ユーザとプロセシングマシンとの間の通信を提供する任意のデバイスである。ユーザインターフェースを介して、ユーザによって、プロセシングマシンに提供される情報は、たとえば、コマンド、データの選択、または他の何らかの入力の形態であり得る。
【0058】
[0081]上記で論じたように、ユーザインターフェースは、プロセシングマシンがユーザのためにデータを処理できるように、命令のセットを実行するプロセシングマシンによって利用される。ユーザインターフェースは、通常、情報を伝達するため、またはユーザから情報を受信するために、ユーザとインタラクトするために、プロセシングマシンによって使用される。しかしながら、本発明のシステムおよび方法のいくつかの実施形態によれば、人間のユーザが、本発明のプロセシングマシンによって使用されるユーザインターフェースと実際にインタラクトする必要はないことを認識されたい。むしろ、本発明のユーザインターフェースは、人間のユーザではなく、別のプロセシングマシンとインタラクトする、すなわち、情報を伝達および受信し得ることも考慮される。したがって、他のプロセシングマシンは、ユーザとして特徴付けられ得る。さらに、本発明のシステムおよび方法において利用されるユーザインターフェースは、人間のユーザとも部分的にインタラクトしながら、別の1つまたは複数のプロセシングマシンと部分的にインタラクトし得ることが考慮される。
【0059】
[0082]本発明が幅広い有用性および用途に影響を受けやすいことは、当業者によって容易に理解されるであろう。本明細書に記載のもの以外の本発明の多くの実施形態および適合、ならびに多くの変形、修正、および同等の構成は、本発明の内容または範囲から逸脱することなく、本発明およびその前述の説明から明らかであるか、または合理的に示唆される。
【0060】
[0083]したがって、本発明は、その例示的な実施形態に関して本明細書で詳細に説明されたが、本開示は、本発明の例示的かつ例示的なものにすぎず、本発明の可能な開示を提供するように作られていることを理解されたい。したがって、前述の開示は、本発明を解釈または限定すること、あるいは他のそのような実施形態、適合、変形、修正または同等の構成を除外することは意図されていない。