(57)【要約】【課題】ソフトウェア・コンテナ中のソフトウェアの識別を決定するための方法、システム、およびプログラムを提供する。【解決手段】１つまたは複数のプロセッサが、第１のソフトウェア・コンテナ・テンプレートに関連する第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別を求めて、第１のソフトウェア・コンテナ・テンプレートを走査する。１つまたは複数のプロセッサが、第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別のマップを生成する。第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別は、第１のソフトウェア・コンテナ・テンプレートの識別子、および第１のソフトウェア・コンテナ・テンプレートに関連する第１のソフトウェア・コンテナの識別子、のうちの一方または両方でマッピングされる。【選択図】図３
2017107555.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッサによって、第１のソフトウェア・コンテナ・テンプレートに関連する第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別を求めて前記第１のソフトウェア・コンテナ・テンプレートを走査することと、
前記１つまたは複数のプロセッサによって、前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別のマップを生成することであって、前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別が、前記第１のソフトウェア・コンテナ・テンプレートの識別子、および前記第１のソフトウェア・コンテナ・テンプレートに関連する前記第１のソフトウェア・コンテナの識別子、のうちの一方または両方でマッピングされる、前記生成することと
を含む方法。
【請求項２】
前記１つまたは複数のプロセッサによって、第１のソフトウェア・コンテナ・テンプレート・イメージを第１のソフトウェア・コンテナ・テンプレート・リポジトリから取り出すことと、
前記１つまたは複数のプロセッサによって、前記第１のソフトウェア・コンテナ・テンプレート・イメージをインスタンス化することと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記１つまたは複数のプロセッサによって、前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別の前記マップで、テンプレート／ソフトウェア・マップ・データベースを更新することをさらに含む、請求項１に記載の方法。
【請求項４】
前記１つまたは複数のプロセッサによって、ソフトウェア資産管理プログラムによって読み取れるフォーマットでソフトウェア目録報告を生成することをさらに含む、請求項１に記載の方法。
【請求項５】
前記第１のソフトウェア・コンテナ・テンプレートに関連する前記第１のソフトウェア・コンテナの作成における最後のステップ、および前記第１のソフトウェア・コンテナ・テンプレートをソフトウェア・コンテナ・テンプレート・リポジトリ中に発行すること、のうちの一方または両方の前に、前記１つまたは複数のプロセッサによって、ソフトウェア資産管理ツール走査を前記第１のソフトウェア・コンテナ・テンプレートにインジェクトすることをさらに含む、請求項１に記載の方法。
【請求項６】
１つまたは複数のプロセッサによって、ソフトウェア・コンテナ・エンジンによって生成された１つまたは複数のイベントにサブスクライブすることをさらに含む、請求項１に記載の方法。
【請求項７】
前記１つまたは複数のイベントが、第２のソフトウェア・コンテナの新しいインスタンスの作成と、第３のソフトウェア・コンテナの既存のインスタンスの再構成と、既存のソフトウェア・コンテナのデプロビジョニングと、のうちの１つまたは複数を含む、請求項６に記載の方法。
【請求項８】
コンピュータに、
第１のソフトウェア・コンテナ・テンプレートに関連する第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別を求めて前記第１のソフトウェア・コンテナ・テンプレートを走査する手順と、
前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別のマップを生成する手順であって、前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別が、前記第１のソフトウェア・コンテナ・テンプレートの識別子、および前記第１のソフトウェア・コンテナ・テンプレートに関連する前記第１のソフトウェア・コンテナの識別子、のうちの一方または両方でマッピングされる、手順と
を実行させるためのコンピュータ・プログラム。
【請求項９】
前記コンピュータに、
第１のソフトウェア・コンテナ・テンプレート・イメージを第１のソフトウェア・コンテナ・テンプレート・リポジトリから取り出す手順と、
前記第１のソフトウェア・コンテナ・テンプレート・イメージをインスタンス化する手順とをさらに実行させるための、請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記コンピュータに、前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別の前記マップで、テンプレート／ソフトウェア・マップ・データベースを更新する手順をさらに実行させるための、請求項８に記載のコンピュータ・プログラム。
【請求項１１】
前記コンピュータに、ソフトウェア資産管理プログラムによって読み取れるフォーマットでソフトウェア目録報告を生成する手順をさらに実行させるための、請求項８に記載のコンピュータ・プログラム。
【請求項１２】
前記コンピュータに、前記第１のソフトウェア・コンテナ・テンプレートに関連する前記第１のソフトウェア・コンテナの作成における最後のステップ、および前記第１のソフトウェア・コンテナ・テンプレートをソフトウェア・コンテナ・テンプレート・リポジトリ中に発行すること、のうちの一方または両方の前に、ソフトウェア資産管理ツール走査を前記第１のソフトウェア・コンテナ・テンプレートにインジェクトする手順をさらに実行させるための、請求項８に記載のコンピュータ・プログラム。
【請求項１３】
前記コンピュータに、ソフトウェア・コンテナ・エンジンによって生成された１つまたは複数のイベントにサブスクライブする手順をさらに実行させるための、請求項８に記載のコンピュータ・プログラム。
【請求項１４】
前記１つまたは複数のイベントが、第２のソフトウェア・コンテナの新しいインスタンスの作成と、第３のソフトウェア・コンテナの既存のインスタンスの再構成と、既存のソフトウェア・コンテナのデプロビジョニングと、のうちの１つまたは複数を含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
コンピュータ・システムであって、
１つまたは複数のコンピュータ・プロセッサと、
１つまたは複数のコンピュータ可読ストレージ媒体と、
前記１つまたは複数のプロセッサの少なくとも１つによって実行されるように前記１つまたは複数のコンピュータ可読ストレージ媒体の少なくとも１つに記憶されたプログラム命令とを備え、前記プログラム命令が、
第１のソフトウェア・コンテナ・テンプレートに関連する第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別を求めて前記第１のソフトウェア・コンテナ・テンプレートを走査するためのプログラム命令と、
前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別のマップを生成するためのプログラム命令であって、前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別が、前記第１のソフトウェア・コンテナ・テンプレートの識別子、および前記第１のソフトウェア・コンテナ・テンプレートに関連する前記第１のソフトウェア・コンテナの識別子、のうちの一方または両方でマッピングされる、前記プログラム命令と
を含む、コンピュータ・システム。
【請求項１６】
第１のソフトウェア・コンテナ・テンプレート・イメージを第１のソフトウェア・コンテナ・テンプレート・リポジトリから取り出すためのプログラム命令と、
前記第１のソフトウェア・コンテナ・テンプレート・イメージをインスタンス化するためのプログラム命令と
をさらに含む、請求項１５に記載のコンピュータ・システム。
【請求項１７】
前記第１のソフトウェア・コンテナ上に存在するソフトウェアの前記１つまたは複数の識別の前記マップで、テンプレート／ソフトウェア・マップ・データベースを更新するためのプログラム命令をさらに含む、請求項１５に記載のコンピュータ・システム。
【請求項１８】
ソフトウェア資産管理プログラムによって読み取れるフォーマットでソフトウェア目録報告を生成するためのプログラム命令をさらに含む、請求項１５に記載のコンピュータ・システム。
【請求項１９】
前記第１のソフトウェア・コンテナ・テンプレートに関連する前記第１のソフトウェア・コンテナの作成における最後のステップ、および前記第１のソフトウェア・コンテナ・テンプレートをソフトウェア・コンテナ・テンプレート・リポジトリ中に発行すること、のうちの一方または両方の前に、ソフトウェア資産管理ツール走査を前記第１のソフトウェア・コンテナ・テンプレートにインジェクトするためのプログラム命令をさらに含む、請求項１５に記載のコンピュータ・システム。
【請求項２０】
ソフトウェア・コンテナ・エンジンによって生成された１つまたは複数のイベントにサブスクライブするためのプログラム命令をさらに含む、請求項１５に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、ソフトウェア識別決定の分野に関し、より詳細には、ソフトウェア・コンテナ中でのソフトウェア識別決定に関する。
【背景技術】
【０００２】
ソフトウェア・コンテナは、完全なランタイム環境からなり、すなわち、アプリケーションと、そのすべての依存物、ライブラリ、および他のバイナリ、ならびにその実行に必要な構成ファイルとからなり、これらは１つのパッケージにバンドルされる。アプリケーション・プラットフォームおよびその依存物を「コンテナ化」することによって、オペレーティング・システム（ＯＳ）配布および基礎をなすインフラストラクチャにおける違いが抽象化されて隠される。
【０００３】
一般に、ソフトウェア・コンテナは、バーチャル・マシン（ＶＭ）と比較して「軽量」であると考えられる。ＶＭは、ソフトウェア・コンテナとは異なり、ＯＳ全体ならびにアプリケーションを含む。例えば、３つのＶＭを実行する物理サーバは、ハイパーバイザと、その最上部で実行される３つの別々のＯＳとを有することになる。対照的に、別の例では、３つのコンテナ化されたアプリケーションを実行するサーバは、単一のＯＳカーネルを実行し、この単一のＯＳカーネルを各ソフトウェア・コンテナが他のソフトウェア・コンテナと共有する。ＯＳの共有部分は読取専用であり、各ソフトウェア・コンテナは、書込みのためにそれ自体のマウント（すなわち、ソフトウェア・コンテナにアクセスする方法）を有する。このことは、ソフトウェア・コンテナが、ＶＭよりも、必要とされるソフトウェアのコード量またはタイプの点でより軽量であり、使用するリソースが少ないことを意味する。例えば、ソフトウェア・コンテナは数十メガバイトのサイズでしかないことがあるが、ＶＭは、それ自体のＯＳ全体を有し、数ギガバイトのサイズであることがある。したがって、単一のサーバが、ＶＭよりもはるかに多くのソフトウェア・コンテナをホストすることができる。さらに、ＶＭは、それらがホストするアプリケーションの実行を開始するためにそれらのＯＳをブートアップするのに、数分を要することがある。対照的に、コンテナ化されたアプリケーションは、ほぼ即座に開始されることが可能である。
【０００４】
ソフトウェア・コンテナは、その軽量性質および敏捷性により、ますます一般的になってきている。例えば、ＤＯＣＫＥＲ（Ｒ）は、ＬＩＮＵＸ（Ｒ）上でＯＳレベル仮想化の抽象化および自動化の追加レイヤを提供することによってソフトウェア・コンテナ内部でのアプリケーションの実装（デプロイメント）を自動化する、オープンソース・プロジェクトである。ｃｇｒｏｕｐｓ（コントロール・グループとしても知られる）は、いくつかのプロセス（実際にはプロセス・グループ）のリソース使用を制限、監視、制御、および計上するのにしばしば使用される、ＬＩＮＵＸカーネルの機能である。ＤＯＣＫＥＲは、ｃｇｒｏｕｐｓやカーネル名前空間など、ＬＩＮＵＸカーネルのリソース隔離機能を使用して、独立したＬＩＮＵＸソフトウェア・コンテナ（ＬＸＣ）が単一のＬＩＮＵＸインスタンス内で実行されるのを可能にする。
【０００５】
ＤＯＣＫＥＲは、ソフトウェア・コンテナ・ベースのクラウド・システムのための、台頭しつつあるトレンドの例である。これは、ソフトウェア・コンテナをクラウド・システム中で実装、実行、および移行するのが迅速だからである。ソフトウェア・コンテナ・ベースのクラウド・システムのセキュリティは、ソフトウェア・コンテナが、その名前が含意するように、密閉されていることにかかっている。ＬＸＣは、ｃｇｒｏｕｐｓを活用して、ＣＰＵ、メモリ、ファイル／ブロックＩ／Ｏ、およびネットワーク・リソースを隔離する。ＬＸＣはまた、名前空間を使用して、アプリケーションをオペレーティング・システムから隔離し、プロセス・ツリー、ネットワーク・アクセス、ユーザＩＤ、およびファイル・アクセスを分離する。ＬＸＣは、セキュリティの点で、ｃｈｒｏｏｔとＶＭとの間に入る技法と考えられる。ｃｈｒｏｏｔは、現在実行中のプロセスおよびそれらの子について、見かけ上のルート・ディレクトリを変更する操作である。このような修正された環境で実行されるプログラムは、その環境ディレクトリ・ツリーの外部のファイルおよびコマンドにアクセスすることはできない。ルートの変更は一般に、ブーティングまたはログインあるいはその両方がもはや可能でないシステムに対して、システム保守を実行するために行われる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施形態は、ソフトウェア・コンテナ中のソフトウェアの識別を決定するための方法、システム、およびプログラムを提供する。
【課題を解決するための手段】
【０００７】
１つまたは複数のプロセッサが、第１のソフトウェア・コンテナ・テンプレートに関連する第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別を求めて、第１のソフトウェア・コンテナ・テンプレートを走査する。１つまたは複数のプロセッサが、第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別のマップを生成するが、ここで、第１のソフトウェア・コンテナ上に存在するソフトウェアの１つまたは複数の識別は、第１のソフトウェア・コンテナ・テンプレートの識別子、および第１のソフトウェア・コンテナ・テンプレートに関連する第１のソフトウェア・コンテナの識別子、のうちの一方または両方でマッピングされる。
【図面の簡単な説明】
【０００８】
【図１】本発明の例示的な一実施形態による、第１のソフトウェア発見環境を示す第１の機能ブロック図である。
【図２】本発明の例示的な一実施形態による、第２のソフトウェア発見環境を示す第２の機能ブロック図である。
【図３】本発明の例示的な一実施形態による、図１および２の環境内のコンピューティング・デバイス上での、ソフトウェア・コンテナ上で実行されるソフトウェアを発見、マッピング、および報告するための動作プロセスの第１の例を示す図である。
【図４】本発明の例示的な一実施形態による、図１および２の環境内のコンピューティング・デバイス上での、ソフトウェア・コンテナ上で実行されるソフトウェアを発見およびマッピングするための動作プロセスの第２の例を示す図である。
【図５】本発明の例示的な一実施形態による、それぞれ図１および２の環境内のコンピューティング・デバイス上のアダプタおよびプラグイン・プログラム内のモジュールによって実施される動作プロセスを示す図である。
【図６】本発明の一実施形態によるクラウド・コンピューティング環境を描いた図である。
【図７】本発明の一実施形態による抽象化モデル・レイヤを描いた図である。
【図８】本発明の例示的な実施形態による、コンテナ・エンジン・プログラムを実行するコンピューティング・デバイスのコンポーネントのブロック図である。
【発明を実施するための形態】
【０００９】
クラウド・システムのサイズ、およびソフトウェア・コンテナの密閉性質は、ソフトウェア・コンテナ・ベースのクラウド・システムにおけるソフトウェアの管理に関する多くのタイプの困難を提示する可能性がある。効果的なソフトウェア資産管理（ＳＡＭ）は、ソフトウェアの存在および使用が、頑強な信頼できる方式で決定されることを必要とする。ソフトウェアの発見はしばしば複雑である。というのは、走査対象であるシステムのインストール・レジストリまたはファイル・システム内容をくまなく検索することを必要とするからである。このような手法には、いくつかの欠点がある。第１に、このような走査は通常、高価なファイル・システム走査を実行する必要のあるエージェントの実装を必要とする。ソフトウェアの存在および使用を決定するのに使用されるファイル・システム走査の結果として、作業負荷の高い動的な環境において作業負荷の混乱がしばしば生じる。さらに、エージェントは、走査対象であるシステムがプロビジョニングされた後すぐに、かつデプロビジョニングされる前に、走査を実行する必要がある。加えて、ソフトウェア・コンテナの密閉性質は、次のことを意味する。すなわち、高価なファイル・システム走査を実行することが許容可能だとしても、現在の技術を使用するソフトウェア・コンテナ・ベースのクラウド・システム中では可能でない場合がある。
【００１０】
ソフトウェア・コンテナは、ソフトウェア・コンテナ・エンジンによって管理される。言い換えれば、ソフトウェア・コンテナ・エンジンが、ソフトウェア・コンテナを構築および実行する。ソフトウェア・コンテナを構築するプロセスにおいて、ソフトウェア・コンテナ・エンジンは、ソフトウェア・コンテナのテンプレートを作成する。ソフトウェア・コンテナ・エンジンがソフトウェア・コンテナの構築を終えたとき、ソフトウェア・コンテナ・エンジンは、テンプレートをイメージとしてテンプレート・リポジトリ中に発行し、ソフトウェア・コンテナはインスタンス化される。テンプレートが発行された後は、テンプレートをさらに修正することはできないことに留意されたい。同様に、ソフトウェア・コンテナがインスタンス化された後は、ソフトウェア・コンテナをソフトウェア内容の点でさらに修正することもまたできない。ソフトウェア・コンテナ上で実行される１つまたは複数のアプリケーション中で新しい機能が望まれ、これらの新しい機能が追加のソフトウェアを必要とする場合は、新しいソフトウェア・コンテナが、新しいソース・テンプレートと共に作成されなければならない。
【００１１】
ソフトウェア・コンテナをプロビジョニングするプロセスにおいて、ソフトウェア・コンテナ・エンジンは、ソフトウェア実装アーチファクトなどのメタデータを、ソフトウェア・コンテナに関連するテンプレートに記憶する。このメタデータは、ソフトウェア・コンテナにインストールされたソフトウェアの識別（アイデンティティ）に関する情報を含む。ソース・テンプレート上に存在するメタデータを走査または分析できるツールを提供することによって、任意のソフトウェア・コンテナ上に存在するソフトウェアの識別を決定することができる。インスタンス化されたテンプレート上に存在するメタデータを分析することは、ソフトウェア・コンテナのインストール・レジストリまたはファイル・システム内容をくまなく検索することと比較すると、必要とするコンピューティング・リソースは少ない。
【００１２】
本発明の実施形態は、ソフトウェア・コンテナ・エンジンが、それが構築するあらゆるソフトウェア・コンテナにつきテンプレートを作成することを認識する。本発明の実施形態は、ソフトウェア・コンテナをプロビジョニングするのに使用されるソフトウェアに関する情報が、そのソフトウェア・コンテナのソース・テンプレート上に存在することを認識する。本発明の実施形態は、ソフトウェア・コンテナ・エンジン中でテンプレート・リポジトリを検索するための方法、コンピュータ・プログラム、およびコンピュータ・システムを提供する。本発明の実施形態は、テンプレート・リポジトリ内の１つまたは複数のテンプレート・イメージから、１つまたは複数の対応するソフトウェア・コンテナのソフトウェア内容を識別するデータを抽出するための方法、コンピュータ・プログラム、およびコンピュータ・システムを提供する。
【００１３】
本開示はクラウド・コンピューティングに関する詳細な記述を含むが、本明細書で列挙される教示の実現はクラウド・コンピューティング環境に限定されないことを、あらかじめ理解されたい。そうではなく、本発明の実施形態は、現在知られているかまたは後に開発される他の任意のタイプのコンピューティング環境と共に実現されることが可能である。
【００１４】
クラウド・コンピューティングは、最小限の管理労力で、またはサービスのプロバイダとの最小限の対話で迅速にプロビジョニングできリリースできる構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、バーチャル・マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするための、サービス送達のモデルである。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つの実装モデルを含むことができる。
【００１５】
特徴は次のとおりである。
【００１６】
１）オンデマンド・セルフサービス：クラウド消費者は、必要に応じて、サービスのプロバイダとの人的な対話を必要とすることなく自動的に、サーバ時間やネットワーク・ストレージなどのコンピューティング能力を単独でプロビジョニングすることができる。
【００１７】
２）幅広いネットワーク・アクセス：能力はネットワークを介して利用可能であり、能力はまた、異種シンまたはシック・クライアント・プラットフォーム（例えば、モバイルフォン、ラップトップ、およびＰＤＡ）による使用を促進する標準的なメカニズムを介してアクセスされる。
【００１８】
３）リソース・プーリング：プロバイダのコンピューティング・リソースは、マルチテナント・モデルを使用する複数の消費者に役立つようにプールされ、異なる複数の物理および仮想リソースが、需要に従って動的に割当ておよび再割当てされる。消費者は一般に、提供されるリソースの正確な場所に関して制御も知識も有しないが、より高い抽象化レベル（例えば、国、州、またはデータセンタ）で場所を指定することはできる場合があるという点で、ある意味での場所独立性がある。
【００１９】
４）迅速な弾力性：能力を迅速かつ弾力的に、場合によっては自動的にプロビジョニングして素早くスケールアウトし、迅速に解放して素早くスケールインすることができる。消費者にとっては、プロビジョニングのために利用可能な能力はしばしば無限に見え、いつでもどんな量でも購入することができる。
【００２０】
５）計測されるサービス：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント）に適した何らかの抽象化レベルで計測能力を活用することによって、リソース使用を自動的に制御および最適化する。リソース使用は、監視、制御、および報告することができ、これにより、利用されるサービスのプロバイダと消費者の両方にとってのトランスペアレンシがもたらされる。
【００２１】
サービス・モデルは次のとおりである。
【００２２】
１）ソフトウェア・アズ・ア・サービス（ＳａａＳ）：消費者に提供される能力は、クラウド・インフラストラクチャ上で実行されている、プロバイダのアプリケーションを使用することである。アプリケーションへのアクセスは、ウェブ・ブラウザなどのシン・クライアント・インタフェースを介して様々なクライアント・デバイスから可能である（例えば、ウェブベースの電子メール）。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション能力をも含めた、基礎をなすクラウド・インフラストラクチャを管理することも制御することもしないが、限られたユーザ特有アプリケーション構成設定については例外である可能性がある。
【００２３】
２）プラットフォーム・アズ・ア・サービス（ＰａａＳ）：消費者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者によって作成または取得されたアプリケーションを、クラウド・インフラストラクチャ上に実装することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含めた、基礎をなすクラウド・インフラストラクチャを管理することも制御することもしないが、実装されたアプリケーションに対する制御、およびおそらくはアプリケーション・ホスティング環境構成に対する制御を有する。
【００２４】
３）インフラストラクチャ・アズ・ア・サービス（ＩａａＳ）：消費者に提供される能力は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングすることであり、この場合、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを実装および実行することができる。消費者は、基礎をなすクラウド・インフラストラクチャを管理することも制御することもしないが、オペレーティング・システム、ストレージ、実装されたアプリケーションに対する制御、およびおそらくは、精選されたネットワーキング・コンポーネント（例えばホスト・ファイアウォール）の限られた制御を有する。
【００２５】
実装モデルは次のとおりである。
【００２６】
１）プライベート・クラウド：クラウド・インフラストラクチャは、組織のためにのみ運用される。この組織またはサード・パーティによって管理されてよく、構内または構外に存在してよい。
【００２７】
２）コミュニティ・クラウド：クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有の関心事（例えば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス考慮事項）を有する特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理されてよく、構内または構外に存在してよい。
【００２８】
３）パブリック・クラウド：クラウド・インフラストラクチャは、一般大衆または大規模な業界団体が利用できるようにされ、クラウド・サービスを販売する組織によって所有される。
【００２９】
４）ハイブリッド・クラウド：クラウド・インフラストラクチャは、２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合物である。これらのクラウドは、独自のエンティティのままだが、データおよびアプリケーションの可搬性を可能にする標準化された技術またはプロプラエタリ技術によって１つにまとめられる（例えば、クラウド間の負荷平衡のためのクラウド・バースティング）。
【００３０】
クラウド・コンピューティング環境はサービス指向であり、その焦点は、ステートレス性、低結合、モジュール性、およびセマンティックな相互運用性に合わせられる。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【００３１】
次に、図を参照しながら本発明について詳細に述べる。
【００３２】
図１は、本発明の一実施形態による、１００で一般に示される第１のソフトウェア発見環境を示す第１の機能ブロック図である。ソフトウェア発見環境１００は、ネットワーク１０１を介して接続された、ソフトウェア・コンテナ・サーバ１０２およびソフトウェア資産管理（ＳＡＭ）サーバ１０４を含む。ソフトウェア・コンテナ・サーバ１０２は、ソフトウェア・コンテナ・エンジン１０６を備える。ソフトウェア・コンテナ・エンジン１０６は、テンプレート・リポジトリ１０８およびソフトウェア・コンテナ１１０を備える。テンプレート・リポジトリ１０８は、テンプレート・イメージ１１２を備える。ＳＡＭサーバ１０４は、コンテナ・エンジン・アダプタ（ＣＥＡ）プログラム１１４、およびテンプレート／ソフトウェア・マップ（ＴＳＭ）データベース１１６を備える。
【００３３】
本発明の様々な実施形態で、ソフトウェア・コンテナ・サーバ１０２およびＳＡＭサーバ１０４は、コンピューティング・デバイスであり、これらの一方または両方は、スタンドアロン・デバイス、サーバ、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ（ＰＣ）、またはデスクトップ・コンピュータであってよい。別の実施形態では、ソフトウェア・コンテナ・サーバ１０２とＳＡＭサーバ１０４の一方または両方は、クラスタ化されたコンピュータおよびコンポーネントを利用してシームレスなリソースの単一プールとして働く、コンピューティング・システムを表す。一般に、ソフトウェア・コンテナ・サーバ１０２とＳＡＭサーバ１０４の一方または両方は、ソフトウェア・コンテナ・エンジン１０６、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、ＣＥＡプログラム１１４、およびＴＳＭデータベース１１６へのアクセスを有しＣＥＡプログラム１１４を実行できる、任意のコンピューティング・デバイス、またはデバイスの組合せであってよい。ソフトウェア・コンテナ・サーバ１０２およびＳＡＭサーバ１０４は、図８に関してさらに詳細に図示および記述される内部および外部ハードウェア・コンポーネントを備えることができる。
【００３４】
この例示的な実施形態では、ソフトウェア・コンテナ・エンジン１０６、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、およびテンプレート・イメージ１１２は、ソフトウェア・コンテナ・サーバ１０２に記憶される。ＣＥＡプログラム１１４およびＴＳＭデータベース１１６は、ＳＡＭサーバ１０４に記憶される。しかし、他の実施形態では、ソフトウェア・コンテナ・エンジン１０６、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、ＣＥＡプログラム１１４、およびＴＳＭデータベース１１６は、外部に記憶されて、ネットワーク１０１などの通信ネットワークを介してアクセスされてもよい。ネットワーク１０１は、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、インターネットなどのワイド・エリア・ネットワーク（ＷＡＮ）、またはこの２つの組合せであってよく、有線、ワイヤレス、光ファイバ、または当技術分野で知られている他の任意の接続を含むことができる。一般に、ネットワーク１０１は、本発明の好ましい実施形態による、ソフトウェア・コンテナ・サーバ１０２、ＳＡＭサーバ１０４、ソフトウェア・コンテナ・エンジン１０６、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、ＣＥＡプログラム１１４、およびＴＳＭデータベース１１６の間の通信をサポートすることになる接続およびプロトコルの、任意の組合せであってよい。
【００３５】
例示的な実施形態では、ソフトウェア・コンテナ・エンジン１０６は、ソフトウェア・コンテナ１１０の構築および実行を管理する。ソフトウェア・コンテナ１１０を構築するプロセスの間、ソフトウェア・コンテナ・エンジン１０６は、各ソフトウェア・コンテナにつきテンプレートを作成する。ソフトウェア・コンテナ・エンジン１０６がソフトウェア・コンテナ１１０の構築を終えたとき、ソフトウェア・コンテナ・エンジン１０６は、テンプレートをテンプレート・イメージ１１２としてテンプレート・リポジトリ１０８中に発行し、ソフトウェア・コンテナ１１０はインスタンス化される。いくつかの実施形態では、ソフトウェア・コンテナ・エンジン１０６は、ソフトウェア・コンテナ・ベースのクラウド・システムの一部である。
【００３６】
例示的な実施形態では、テンプレート・リポジトリ１０８は、ソフトウェア・コンテナ・エンジン１０６によって作成されたテンプレート・イメージ１１２のリポジトリである。言い換えれば、テンプレート・リポジトリ１０８は、ソフトウェア・コンテナ１１０上のソフトウェア内容に関する情報を含むデータのための記憶場所である。いくつかの実施形態では、テンプレート・リポジトリ１０８は、ソフトウェア・コンテナ・ベースのクラウド・システムの一部である。
【００３７】
例示的な実施形態では、ソフトウェア・コンテナ１１０はそれぞれ、完全なランタイム環境を含み、すなわち、１つまたは複数のアプリケーションと、そのすべての依存性、ライブラリ、および他のバイナリ、ならびにアプリケーションの実行に必要な構成ファイルを含み、これらは１つのパッケージにバンドルされる。いくつかの実施形態では、ソフトウェア・コンテナ１１０は、ソフトウェア・コンテナ・ベースのクラウド・システムの一部である。
【００３８】
例示的な実施形態では、テンプレート・イメージ１１２は、ソフトウェア・コンテナ・エンジン１０６によって作成されてテンプレート・リポジトリ１０８に記憶されたテンプレートのイメージである。テンプレート・リポジトリ１０８中の各テンプレート・イメージは、ソフトウェア・コンテナ１１０中の１つのソフトウェア・コンテナに関するデータを含む。このデータには、ソフトウェア実装アーチファクトなどのメタデータが含まれ、このソフトウェア実装アーチファクトは、そのソフトウェア・コンテナにどのようなソフトウェアがインストールされたかを示す。テンプレート・イメージ１１２によって表されるテンプレート上に存在するデータへのアクセスは、テンプレート・イメージ１１２をインスタンス化することによって行われる。
【００３９】
例示的な実施形態では、ＣＥＡプログラム１１４は、ソフトウェア・コンテナ・サーバ１０２中でソフトウェア・コンテナ・エンジン１０６を検索するアダプタ（すなわちソフトウェア・アダプタ）である。したがって、ＣＥＡプログラム１１４は、ソフトウェア・コンテナ・エンジン１０６中でテンプレート・リポジトリ１０８を検索する。ＣＥＡプログラム１１４は、テンプレート・イメージ１１２を取り出し、テンプレート・イメージ１１２をインスタンス化する。ＣＥＡプログラム１１４は、インスタンス化されたテンプレート・イメージ１１２を分析して、ソフトウェア・コンテナ１１０中のどのソフトウェア・コンテナがテンプレート・イメージ１１２中の所与のインスタンス化済みテンプレート・イメージによって表されるかを決定する。ＣＥＡプログラムは、ソフトウェア・コンテナ１１０中の対応するソフトウェア・コンテナ上で実行されるソフトウェア・プログラムの識別を求めて、インスタンス化済みテンプレート・イメージ１１２中の各インスタンス化済みテンプレート・イメージの内容を走査する。次いで、ＣＥＡプログラム１１４は、ソフトウェア・コンテナ１１０中のソフトウェア・コンテナ上のソフトウェア内容と、テンプレート・イメージ１１２中の対応するテンプレート・イメージとのマッピングを含むデータで、ＴＳＭデータベース１１６を作成または更新する。ＣＥＡプログラム１１４はソフトウェア資産管理機能も含み、この機能は、ソフトウェア目録（インベントリ）報告を作成するために、新たに開始されたソフトウェア・コンテナを走査してＴＳＭデータベース１１６を読み取る機能を含む。
【００４０】
例示的な実施形態では、ＴＳＭデータベース１１６は、ソフトウェア・コンテナ１１０内の１つまたは複数のソフトウェア・コンテナ上で実行されるソフトウェア内容を識別するデータを含む。ＴＳＭデータベース１１６上のデータは、テンプレート・イメージ１１２からの１つまたは複数のインスタンス化済みテンプレート・イメージを識別するテンプレート識別子を含む。ＴＳＭデータベース１１６は、テンプレート識別子を、テンプレート・イメージ１１２からの１つまたは複数のインスタンス化済みテンプレート・イメージによって記述されるソフトウェア・コンテナ１１０内の１つまたは複数のソフトウェア・コンテナの識別子と相関させる。ＴＳＭデータベース１１６はまた、ソフトウェア・コンテナ１１０内の１つまたは複数のソフトウェア・コンテナに組み込まれたソフトウェアの識別も含む。というのは、このデータは、１つまたは複数のソフトウェア・コンテナに対応するテンプレート・イメージ１１２からの１つまたは複数のインスタンス化済みテンプレート・イメージから走査されるからである。
【００４１】
図２は、本発明の別の実施形態による、２００で一般に示される第２のソフトウェア発見環境を示す第２の機能ブロック図である。ソフトウェア発見環境２００は、ネットワーク１０１を介して接続された、ソフトウェア・コンテナ・サーバ２０２およびソフトウェア資産管理（ＳＡＭ）サーバ２０４を含む。ソフトウェア・コンテナ・サーバ２０２は、ソフトウェア・コンテナ・エンジン２０６を備える。ソフトウェア・コンテナ・エンジン２０６は、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、およびコンテナ・エンジン・プラグイン（ＣＥＰ）プログラム２０８を備える。テンプレート・リポジトリ１０８は、やはりテンプレート・イメージ１１２を備える。ＳＡＭサーバ２０４は、テンプレート／ソフトウェア・マップ（ＴＳＭ）データベース１１６を備える。
【００４２】
本発明の様々な実施形態で、ソフトウェア・コンテナ・サーバ２０２およびＳＡＭサーバ２０４は、コンピューティング・デバイスであり、これらの一方または両方は、スタンドアロン・デバイス、サーバ、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ（ＰＣ）、またはデスクトップ・コンピュータであってよい。別の実施形態では、ソフトウェア・コンテナ・サーバ２０２とＳＡＭサーバ２０４の一方または両方は、クラスタ化されたコンピュータおよびコンポーネントを利用してシームレスなリソースの単一プールとして働く、コンピューティング・システムを表す。一般に、ソフトウェア・コンテナ・サーバ２０２とＳＡＭサーバ２０４の一方または両方は、ソフトウェア・コンテナ・エンジン２０６、ＣＥＰプログラム２０８、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、およびＴＳＭデータベース１１６へのアクセスを有しＣＥＰプログラム２０８を実行できる、任意のコンピューティング・デバイス、またはデバイスの組合せであってよい。ソフトウェア・コンテナ・サーバ２０２およびＳＡＭサーバ２０４は、図８に関してさらに詳細に図示および記述される内部および外部ハードウェア・コンポーネントを備えることができる。
【００４３】
この例示的な実施形態では、ソフトウェア・コンテナ・エンジン２０６、ＣＥＰプログラム２０８、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、およびテンプレート・イメージ１１２は、ソフトウェア・コンテナ・サーバ２０２に記憶され、ＴＳＭデータベース１１６は、ＳＡＭサーバ２０４に記憶される。しかし、他の実施形態では、ソフトウェア・コンテナ・エンジン２０６、ＣＥＰプログラム２０８、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、およびＴＳＭデータベース１１６は、外部に記憶されて、ネットワーク１０１などの通信ネットワークを介してアクセスされてもよい。図１で述べたように、ネットワーク１０１は、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、インターネットなどのワイド・エリア・ネットワーク（ＷＡＮ）、またはこの２つの組合せであってよく、有線、ワイヤレス、光ファイバ、または当技術分野で知られている他の任意の接続を含むことができる。一般に、ネットワーク１０１は、本発明の好ましい実施形態による、ソフトウェア・コンテナ・サーバ２０２、ＳＡＭサーバ２０４、ソフトウェア・コンテナ・エンジン２０６、ＣＥＰプログラム２０８、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、およびＴＳＭデータベース１１６の間の通信をサポートすることになる接続およびプロトコルの、任意の組合せであってよい。
【００４４】
例示的な実施形態では、また図１における類似の実施形態で述べたように、ソフトウェア・コンテナ・エンジン２０６は、ソフトウェア・コンテナ１１０の構築および実行を管理する。ソフトウェア・コンテナ１１０を構築するプロセスの間、ソフトウェア・コンテナ・エンジン２０６は、各ソフトウェア・コンテナにつきテンプレートを作成する。ソフトウェア・コンテナ・エンジン２０６がソフトウェア・コンテナ１１０の構築を終えたとき、ソフトウェア・コンテナ・エンジン２０６は、テンプレートをテンプレート・イメージ１１２としてテンプレート・リポジトリ１０８中に発行し、ソフトウェア・コンテナ１１０はインスタンス化される。いくつかの実施形態では、ソフトウェア・コンテナ・エンジン２０６は、ソフトウェア・コンテナ・ベースのクラウド・システムの一部である。
【００４５】
例示的な実施形態では、ＣＥＰプログラム２０８は、ソフトウェア・コンテナ・エンジン２０６中でテンプレート・リポジトリ１０８を検索するプラグインである。ＣＥＰプログラム２０８は、テンプレート・イメージ１１２を取り出し、テンプレート・イメージ１１２をインスタンス化する。ＣＥＰプログラム２０８は、インスタンス化されたテンプレート・イメージ１１２を分析して、ソフトウェア・コンテナ１１０中のどのソフトウェア・コンテナがテンプレート・イメージ１１２中の所与のインスタンス化済みテンプレート・イメージによって表されるかを決定する。ＣＥＰプログラム２０８は、ソフトウェア・コンテナ１１０中の対応するソフトウェア・コンテナ上で実行されるソフトウェア・プログラムの識別を求めて、インスタンス化済みテンプレート・イメージ１１２中の各インスタンス化済みテンプレート・イメージの内容を走査する。次いで、ＣＥＰプログラム２０８は、ソフトウェア・コンテナ１１０中のソフトウェア・コンテナ上のソフトウェア内容と、テンプレート・イメージ１１２中の対応するテンプレート・イメージとのマッピングを含むデータで、ＴＳＭデータベース１１６を作成または更新する。ＣＥＰプログラム２０８はソフトウェア資産管理機能も含み、この機能は、ソフトウェア目録報告を作成するために、新たに開始されたソフトウェア・コンテナを走査してＴＳＭデータベース１１６を読み取る機能を含む。
【００４６】
図３に、本発明の例示的な一実施形態による、それぞれ図１および２の環境内のＳＡＭサーバ１０４およびソフトウェア・コンテナ・サーバ２０２上での、ソフトウェア・コンテナ１１０上で実行されるソフトウェアを発見、マッピング、および報告するための動作プロセスの第１の例３００を示す。
【００４７】
明確さ、ならびに簡潔さの理由で、動作プロセス３００において詳述するステップは、ＣＥＡプログラム１１４がソフトウェア発見環境１００（図１）に関するプロセス・ステップを実施すること、およびＣＥＰプログラム２０８がソフトウェア発見環境２００（図２）に関するプロセス・ステップを実施することを示すために、「ＣＥＡプログラム１１４／ＣＥＰプログラム２０８」によって実施されるものとして述べる。
【００４８】
ステップ３０２で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、現在のテンプレート・イメージ１１２についてテンプレート・リポジトリ１０８を分析し、１つまたは複数の利用可能なテンプレート・イメージ１１２を取り出す。１つまたは複数の利用可能なテンプレート・イメージ１１２は、メタデータ内容を分析するために、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８によってインスタンス化される。
【００４９】
ステップ３０４で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、ソフトウェア実装アーチファクトを求めて、１つまたは複数のインスタンス化済みテンプレート・イメージ１１２内のテンプレート・メタデータを走査する。一実施形態では、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８によって使用される発見方法は、１つまたは複数のインスタンス化済みテンプレート・イメージ１１２の標準的なファイル・システム走査を含む。別の実施形態では、１つまたは複数のインスタンス化済みテンプレート・イメージ１１２のソフトウェア発見の方法は、ソフトウェア・インストール・レジストリ走査を含む。さらに別の実施形態では、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、１つまたは複数のインスタンス化済みテンプレート・イメージ１１２に対するソフトウェア発見の方法として、ソフトウェア・タグ走査を使用する。様々な実施形態で、インスタンス化済みテンプレート・イメージ１１２を走査するためのＣＥＡプログラム１１４／ＣＥＰプログラム２０８のソフトウェア発見方法は、標準的なファイル・システム走査、ソフトウェア・インストール・レジストリ走査、およびソフトウェア・タグ走査、のうちの１つまたは複数を含む。
【００５０】
ステップ３０６で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、１つまたは複数のテンプレート（すなわち、インスタンス化済みテンプレート・イメージ１１２）と、１つまたは複数のテンプレートに関連する１つまたは複数のソフトウェア・コンテナ１１０と、１つまたは複数のテンプレートに関連する１つまたは複数のソフトウェア・コンテナ１１０上に存在するソフトウェアと、の間の結びつきを示すマップを生成し記憶する。次いで、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、ＴＳＭデータベース１１６を作成するか、または、ＴＳＭデータベースがすでに作成されている場合はＴＳＭデータベース１１６を更新する。図１の実施形態では、ＣＥＡプログラム１１４は、ＴＳＭデータベース１１６をＳＡＭサーバ１０４に記憶する。図２の実施形態では、ＣＥＰプログラム２０８は、ＴＳＭデータベース１１６をＳＡＭサーバ２０４に記憶する。図示されない他の実施形態では、ＣＥＡプログラム１１４は、ＴＳＭデータベース１１６をＣＥＡプログラム１１４のメモリに記憶し、ＣＥＰプログラム２０８は、ＴＳＭデータベース１１６をＣＥＰプログラム２０８のメモリに記憶する。
【００５１】
様々な実施形態で、ＴＳＭデータベースは、例えば、テンプレート・イメージ１１２の識別子フィールド、またはインスタンス化済みテンプレート・イメージ１１２の識別子を有するフィールドと、ソフトウェア・コンテナ１１０の識別子を含むフィールドと、ソフトウェア識別を含むフィールドと、を含む。様々な実施形態で、これらのフィールドは、１つまたは複数のテーブルに構成され、それにより、テンプレート・イメージ１１２の識別子（またはインスタンス化済みテンプレート・イメージ１１２の識別子）は、対応するソフトウェア・コンテナ１１０の識別子に関連付けられる。これらの実施形態では、関連付けは、インスタンス化済みテンプレートが、そのインスタンス化済みテンプレートに関連するソフトウェア・コンテナ上のソフトウェア内容を記述するデータを含むことを示す。ソフトウェア識別フィールドは、同様にしてインスタンス化済みテンプレートに関連付けられたソフトウェア識別を含み、ソフトウェア・コンテナ１１０中のどのようなソフトウェア・コンテナがそのソフトウェアを実行しているかを示す。
【００５２】
ステップ３０８で、ＣＥＡプログラム１１４およびＣＥＰプログラム２０８は、ソフトウェア・コンテナ・エンジン１０６および２０６によってそれぞれ生成されたイベントにサブスクライブする。様々な実施形態で、イベントのタイプは、以下の１つまたは複数を含む。
１．特定のテンプレートに基づく、ソフトウェア・コンテナの新しいインスタンスの作成。このイベントは、コンテナのＣＰＵ容量や、ソフトウェア・コンテナの構成済みＲＡＭまたはストレージなど、ＳＡＭ関連属性を含む。
２．修正されつつある属性（例えば、ＣＰＵ容量、およびＲＡＭまたはストレージ）のリストを含む、ソフトウェア・コンテナの既存のインスタンスの再構成
３．既存のソフトウェア・コンテナのデプロビジョニング
【００５３】
ステップ３１０で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、ＳＡＭ許容可能なフォーマットで出力を生成する。様々な実施形態で、出力は、ソフトウェア・コンテナ１１０上で実行されているソフトウェアについての、リアルタイムの正確なソフトウェア発見データを含む。出力のためのＳＡＭ許容可能なフォーマットは、ＩＳＯ１９７７０−２およびＩＳＯ１９７７０−４  ＸＭＬファイルを含むが、これらに限定されない。いくつかの実施形態では、特定のＳＡＭツールに対して最適化された、特殊化された出力フォーマットが使用される。
【００５４】
図４に、本発明の例示的な一実施形態による、それぞれ図１および２の環境内のコンピューティング・デバイス１０４および２０２上での、ソフトウェア・コンテナ１１０上で実行されるソフトウェアを発見およびマッピングするための動作プロセスの第２の例４００を示す。
【００５５】
明確さ、ならびに簡潔さの理由で、動作プロセス４００において詳述するステップは、ＣＥＡプログラム１１４がソフトウェア発見環境１００（図１）に関するプロセス・ステップを実施すること、およびＣＥＰプログラム２０８がソフトウェア発見環境２００（図２）に関するプロセス・ステップを実施することを示すために、「ＣＥＡプログラム１１４／ＣＥＰプログラム２０８」によって実施されるものとして述べる。
【００５６】
ステップ４０２で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、「フック」メカニズムに従って、テンプレート・イメージ１１２の作成プロセスの間にＳＡＭツール走査のインジェクションを準備する。フック・メカニズムまたは「フッキング」は、関数呼出し、メッセージ、またはイベントをインターセプトすることによって、ＯＳ、アプリケーション、または他のソフトウェア・コンポーネントの改変または増強を可能にするソフトウェアを指す。このようなインターセプトされる関数呼出しを扱うコードは、「フック」と呼ばれる。ステップ４０２では、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、２つのタイプのフックをインストールする。第１のタイプのフックは、「テンプレート・コミット」フックである。様々な実施形態で、テンプレート・コミット・フックは、ＤＯＣＫＥＲＦＩＬＥＳを使用したソフトウェア・コンテナ１１０の作成など、自動化されたプロセスによるソフトウェア・コンテナ１１０の作成中に、最後のステップが発生するときにトリガされ、ＤＯＣＫＥＲＦＩＬＥＳは、ソフトウェアのコンパイリング、リンキング、およびパッケージングのプロセスを自動化するのに使用される「ｍａｋｅ」ファイルと類似する。他の実施形態では、テンプレート・コミット・フックは、ソフトウェア・コンテナ・テンプレートがテンプレート・リポジトリ１０８中に手動で「プッシュ」（すなわち発行）されてテンプレート・イメージ１１２として表されるときにトリガされる。手動プッシュ・ステップは、アプリケーションの手動追加および除去や構成ファイルの変更などを伴う、ソフトウェア・コンテナ１１０の新しいインスタンスの作成に続いて発生する。
【００５７】
第２のタイプのフックは、「テンプレート・リムーブ」フックである。テンプレート・リムーブ・フックは、１つまたは複数のテンプレート・イメージ１１２がテンプレート・リポジトリ１０８から除去されるときに発生する。すなわち、テンプレートと、テンプレートに対応するソフトウェア・コンテナとが、除去される、言い換えれば削除されるときに発生する。
【００５８】
ステップ４０４で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、テンプレートに対するフックがテンプレート・コミット・フックを登録するときに、ＳＡＭツール走査をこのテンプレートにインジェクトする。ＳＡＭツール走査は、テンプレートが作成された対象であるソフトウェア・コンテナに組み込まれたソフトウェアを求めて、テンプレートを走査する。ＳＡＭツール走査は、テンプレートがテンプレート・リポジトリ１０８に移動してテンプレート・イメージ１１２中のテンプレート・イメージになる前に、このテンプレートを走査する。結果的な走査は、走査されたテンプレートに対応するソフトウェア・コンテナ１１０中のソフトウェア・コンテナについての、ソフトウェア目録を提供する。走査はまた、走査対象であるテンプレートのテンプレート識別子を決定し、このテンプレート識別子を、テンプレート／テンプレート・イメージに対応するソフトウェア・コンテナ識別子に関連付ける。
【００５９】
ステップ４０６で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、ＴＳＭデータベース１１６を作成することによって（ＴＳＭデータベースがまだ作成されていない場合）、またはＴＳＭデータベース１１６を更新することによって（前のテンプレートに対するインジェクト済みＳＡＭツール走査による前の走査からＴＳＭデータベースがすでに作成されている場合）、走査結果をマッピングする。
【００６０】
ステップ４０８で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、ソフトウェア・コンテナ１１０中のソフトウェア・コンテナに対応するテンプレート、またはこのテンプレートに対応するテンプレート・イメージが、テンプレート・リポジトリ１０８から除去済みであるときに、このテンプレートについてのマッピング済み走査データをＴＳＭデータベース１１６から除去する。様々な実施形態で、このイベントは、テンプレートと、ソフトウェア・コンテナ１１０中の対応するソフトウェア・コンテナとが、削除、置換、またはデプロビジョニングされたことを示す。
【００６１】
図５に、本発明の例示的な一実施形態による、それぞれ図１および２の環境内の、それぞれＳＡＭサーバ１０４およびソフトウェア・コンテナ・サーバ２０２上のＣＥＡプログラム１１４およびＣＥＰプログラム２０８内のモジュールによって実施される動作プロセス５００を示す。
【００６２】
明確さ、ならびに簡潔さの理由で、動作プロセス５００において詳述するステップは、ＣＥＡプログラム１１４がソフトウェア発見環境１００（図１）に関するプロセス・ステップを実施すること、およびＣＥＰプログラム２０８がソフトウェア発見環境２００（図２）に関するプロセス・ステップを実施することを示すために、「ＣＥＡプログラム１１４／ＣＥＰプログラム２０８」によって実施されるものとして述べる。
【００６３】
ステップ５０２で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、テンプレート・スキャナ・モジュール５０１を使用して、テンプレート・リポジトリ１０８上のテンプレート・イメージ１１２から、１つまたは複数のテンプレート・イメージを取り出す。
【００６４】
ステップ５０４で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、テンプレート・スキャナ・モジュール５０１を使用して、テンプレート・イメージ１１２から取り出された１つまたは複数のテンプレート・イメージをインスタンス化する。
【００６５】
ステップ５０６で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、スキャナ・モジュール５０１を使用して、テンプレート・イメージ１１２から取り出された１つまたは複数のテンプレート・インスタンスを走査し、ＴＳＭデータベース１１６を作成して記憶するかまたはＴＳＭデータベース１１６を更新する。図１の実施形態では、ＣＥＡプログラム１１４は、ＴＳＭデータベース１１６をＳＡＭサーバ１０４に記憶する。図２の実施形態では、ＣＥＰプログラム２０８は、ＴＳＭデータベース１１６をＳＡＭサーバ２０４に記憶する。図示されない他の実施形態では、ＣＥＡプログラム１１４は、ＴＳＭデータベース１１６をＣＥＡプログラム１１４のメモリに記憶し、ＣＥＰプログラム２０８は、ＴＳＭデータベース１１６をＣＥＰプログラム２０８のメモリに記憶する。
【００６６】
他の実施形態では、テンプレート・スキャナ・モジュール５０１は、テンプレートに対するフックがテンプレート・コミット・フックを登録するときに、ＳＡＭツール走査をこのテンプレートにインジェクトする。ＳＡＭツール走査は、テンプレートが作成された対象であるソフトウェア・コンテナに組み込まれたソフトウェアを求めて、テンプレートを走査する。ＳＡＭツール走査は、テンプレートがテンプレート・リポジトリ１０８に移動してテンプレート・イメージ１１２中のテンプレート・イメージになる前に、このテンプレートを走査する。結果的な走査は、走査されたテンプレートに対応するソフトウェア・コンテナ１１０中のソフトウェア・コンテナについての、ソフトウェア目録を提供する。走査はまた、走査対象であるテンプレートのテンプレート識別子を決定し、このテンプレート識別子を、テンプレート／テンプレート・イメージに対応するソフトウェア・コンテナ識別子に関連付ける。
【００６７】
ステップ５０８で、ＣＥＡプログラム１１４／ＣＥＰプログラム２０８は、ＳＡＭスキャナ／モニタ・モジュール５０３を使用して、ソフトウェア目録報告を生成するために、新たに開始されたソフトウェア・コンテナ１１０を監視してＴＳＭデータベース１１６を読み取る。様々な実施形態で、ＳＡＭスキャナ／モニタ・モジュール５０３は、ソフトウェア・コンテナ・エンジン１０６および２０６によってそれぞれ生成されたイベントに加入する。イベントのタイプは、以下の１つまたは複数を含む。
１．特定のテンプレートに基づく、ソフトウェア・コンテナの新しいインスタンスの作成。このイベントは、コンテナのＣＰＵ容量や、ソフトウェア・コンテナの構成済みＲＡＭまたはストレージなど、ＳＡＭ関連属性を含む。
２．修正されつつある属性（例えば、ＣＰＵ容量、およびＲＡＭまたはストレージ）のリストを含む、ソフトウェア・コンテナの既存のインスタンスの再構成
３．既存のソフトウェア・コンテナのデプロビジョニング
【００６８】
様々な実施形態で、ＳＡＭスキャナ／モニタ・モジュール５０３は、ＳＡＭ許容可能なフォーマットで出力を生成する。出力は、ソフトウェア・コンテナ１１０上で実行されているソフトウェアについての、リアルタイムの正確なソフトウェア発見データを含む。出力のためのＳＡＭ許容可能なフォーマットは、ＩＳＯ１９７７０−２およびＩＳＯ１９７７０−４  ＸＭＬファイルを含むが、これらに限定されない。いくつかの実施形態では、特定のＳＡＭツールに対して最適化された、特殊化された出力フォーマットが使用される。
【００６９】
次に図６を参照すると、例証的なクラウド・コンピューティング環境５０が描かれている。図示のように、クラウド・コンピューティング環境５０は、１つまたは複数のクラウド・コンピューティング・ノード１０を含み、クラウド消費者によって使用されるローカル・コンピューティング・デバイス、例えば、パーソナル・ディジタル・アシスタント（ＰＤＡ）もしくはセルラー電話機５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはそれらの組合せなどが、クラウド・コンピューティング・ノード１０と通信することができる。ノード１０は、相互に通信することができる。ノード１０は、前述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはこれらの組合せなど、１つまたは複数のネットワーク中で、物理的または仮想的にグループ化されてよい（図示せず）。これにより、クラウド・コンピューティング環境５０は、クラウド消費者がリソースをローカル・コンピューティング・デバイス上で維持する必要のない、インフラストラクチャ、プラットフォーム、またはソフトウェア・アズ・ア・サービス、あるいはそれらの組合せを提供することができる。図６に示されるコンピューティング・デバイス５４Ａ〜Ｎのタイプは例証に過ぎないものとし、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意のタイプのネットワークまたはネットワーク対応可能接続あるいはその両方を介して（例えばウェブ・ブラウザを使用して）、任意のタイプのコンピュータ化デバイスと通信することができることを理解されたい。
【００７０】
次に図７を参照すると、クラウド・コンピューティング環境５０（図６）によって提供される一組の機能的抽象化レイヤが示されている。図７に示されるコンポーネント、レイヤ、および機能は例証に過ぎないものとし、本発明の実施形態はこれらに限定されないことを、あらかじめ理解されたい。図示のように、以下のレイヤおよび対応する機能が提供される。
【００７１】
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム６１、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびに、ネットワークおよびネットワーキング・コンポーネント６６が挙げられる。いくつかの実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【００７２】
仮想化レイヤ７０は、仮想エンティティの以下の例、すなわち、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、ならびに仮想クライアント７５、を提供できる元となる抽象化レイヤを提供する。
【００７３】
一例では、管理レイヤ８０は、以下に述べる機能を提供することができる。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内でタスクを実施するのに利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。ソフトウェア資産管理（ＳＡＭ）８２は、クラウド・コンピューティング環境内でリソースが利用されるのに伴うコスト追跡と、これらのリソースの消費に対する課金または送り状送付とを提供する。一例では、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含む場合がある。セキュリティが、クラウド消費者およびタスクに対する識別検証、ならびに、データおよび他のリソースのための保護を提供する。ユーザ・ポータル８３は、クラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス・レベル管理８４は、必要とされるサービス・レベルが満たされるように、クラウド・コンピューティング・リソース割振りおよび管理を提供する。サービス・レベル・アグリーメント（ＳＬＡ）プランニングおよび履行８５は、ＳＬＡに従って、将来必要とされることが予期されるクラウド・コンピューティング・リソースの事前構成および調達を提供する。
【００７４】
ワークロード・レイヤ９０は、クラウド・コンピューティング環境を利用できる対象となる機能の例を提供する。このレイヤから提供できるワークロードおよび機能の例としては、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想教室教育の送達９３、データ分析処理９４、トランザクション処理９５、ならびにモバイル・デスクトップ９６が挙げられる。
【００７５】
図８に、本発明の例証的な一実施形態による、本発明の例証的な実施形態を提供したコンピューティング・デバイス（例えば、ソフトウェア・コンテナ・サーバ１０２、ＳＡＭサーバ１０４、ソフトウェア・コンテナ・サーバ２０２、およびＳＡＭサーバ２０４）のコンポーネントのブロック図８００を示す。図８は、一実装形態の例証を提供するに過ぎず、種々の実施形態を実現できる環境に関するどのような限定も含意しないことを理解されたい。図示の環境に対する多くの修正を加えることができる。
【００７６】
図８に描かれるコンピューティング・デバイスのコンポーネントは、通信ファブリック８０２を備え、通信ファブリック８０２は、コンピュータ・プロセッサ８０４、メモリ８０６、永続ストレージ８０８、通信ユニット８１０、および１つまたは複数の入出力（Ｉ／Ｏ）インタフェース８１２の間の通信を提供する。通信ファブリック８０２は、プロセッサ（マイクロプロセッサ、通信およびネットワーク・プロセッサなど）、システム・メモリ、周辺デバイス、ならびにシステム内の他の任意のハードウェア・コンポーネントの間で、データまたは制御情報あるいはその両方を渡すために設計された、任意のアーキテクチャを用いて実現されてよい。例えば、通信ファブリック８０２は、１つまたは複数のバスを用いて実現されてよい。
【００７７】
メモリ８０６および永続ストレージ８０８は、コンピュータ可読ストレージ媒体である。この実施形態では、メモリ８０６は、ランダム・アクセス・メモリ（ＲＡＭ）８１４およびキャッシュ・メモリ８１６を含む。一般に、メモリ８０６は、任意の適切な揮発性または不揮発性コンピュータ可読ストレージ媒体を含むことができる。
【００７８】
永続ストレージ８０８には、メモリ８０６のうちの１つまたは複数のメモリを介してそれぞれのコンピュータ・プロセッサ８０４の１つまたは複数によって実行またはアクセスあるいはその両方が行われるように、ソフトウェア・コンテナ・エンジン１０６、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、ＣＥＡプログラム１１４、ＴＳＭデータベース１１６、ソフトウェア・コンテナ・エンジン２０６、およびＣＥＰプログラム２０８が記憶される。この実施形態では、永続ストレージ８０８は、磁気ハード・ディスク・ドライブを含む。別法として、または磁気ハード・ディスク・ドライブに加えて、永続ストレージ８０８は、固体ハード・ドライブ、半導体ストレージ・デバイス、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能な読取専用メモリ（ＥＰＲＯＭ）、フラッシュ・メモリ、または、プログラム命令もしくはディジタル情報を記憶できる他の任意のコンピュータ可読ストレージ媒体、を含むことができる。
【００７９】
永続ストレージ８０８によって使用される媒体は、取外し可能であってもよい。例えば、取外し可能ハード・ドライブが永続ストレージ８０８に使用されてよい。他の例としては、光学および磁気ディスク、サム・ドライブ、ならびにスマート・カードが挙げられるが、これらは、やはり永続ストレージ８０８の一部である別のコンピュータ可読ストレージ媒体への転送のために、ドライブに挿入される。
【００８０】
通信ユニット８１０は、これらの例では、ネットワーク１０１のリソースを含めた他のデータ処理システムまたはデバイスとの通信を可能にする。これらの例では、通信ユニット８１０は、１つまたは複数のネットワーク・インタフェース・カードを含む。通信ユニット８１０は、物理通信リンクとワイヤレス通信リンクのいずれかまたは両方の使用を介して、通信を提供することができる。ソフトウェア・コンテナ・エンジン１０６、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、ＣＥＡプログラム１１４、ＴＳＭデータベース１１６、ソフトウェア・コンテナ・エンジン２０６、およびＣＥＰプログラム２０８は、通信ユニット８１０を介して永続ストレージ８０８にダウンロードされてよい。
【００８１】
Ｉ／Ｏインタフェース８１２は、本発明の例証的な実施形態を提供したコンピューティング・デバイス（例えば、ソフトウェア・コンテナ・サーバ１０２、ＳＡＭサーバ１０４、ソフトウェア・コンテナ・サーバ２０２、およびＳＡＭサーバ２０４）に接続される可能性のある他のデバイスとの、データの入出力を可能にする。例えば、Ｉ／Ｏインタフェース８１２は、キーボード、キーパッド、タッチ・スクリーン、または他の何らかの適した入力デバイス、あるいはそれらの組合せなど、外部デバイス８１８への接続を提供することができる。外部デバイス８１８はまた、例えば、サム・ドライブ、ポータブル光学または磁気ディスク、およびメモリ・カードなど、ポータブル・コンピュータ可読ストレージ媒体を含むこともできる。本発明の実施形態を実践するのに使用されるソフトウェアおよびデータ、例えば、ソフトウェア・コンテナ・エンジン１０６、テンプレート・リポジトリ１０８、ソフトウェア・コンテナ１１０、テンプレート・イメージ１１２、ＣＥＡプログラム１１４、ＴＳＭデータベース１１６、ソフトウェア・コンテナ・エンジン２０６、およびＣＥＰプログラム２０８は、このようなポータブル・コンピュータ可読ストレージ媒体に記憶されてよく、Ｉ／Ｏインタフェース８１２を介して永続ストレージ８０８にロードされてよい。Ｉ／Ｏインタフェース８１２はまた、ディスプレイ８２０に接続する。
【００８２】
ディスプレイ８２０は、データをユーザに対して表示するためのメカニズムを提供し、例えば、コンピュータ・モニタまたはテレビジョン画面であってよい。
【００８３】
本発明は、システム、方法、またはコンピュータ・プログラム、あるいはそれらの組合せとすることができる。コンピュータ・プログラムは、本発明の態様をプロセッサに遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体に含むことができる。
【００８４】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用される命令を保持および記憶できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または上記の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能な読取専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、ディジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、機械的にエンコードされたデバイス（命令が記録された、パンチカード、または溝の中の隆起構造など）、および上記の任意の適切な組合せを含む。本明細書におけるコンピュータ可読ストレージ媒体は、電波もしくは他の自由伝搬する電磁波、導波管もしくは他の伝送媒体を介して伝搬する電磁波（例えば、光ファイバ・ケーブルの中を通る光パルス）、またはワイヤを介して伝送される電気信号など、一時的な信号自体であると解釈されるべきではない。
【００８５】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスにダウンロードされてよく、あるいは、ネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくはワイヤレス・ネットワーク、またはそれらの組合せ）を介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされてよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含むことができる。各コンピューティング／処理デバイス中の、ネットワーク・アダプタ・カードまたはネットワーク・インタフェースが、コンピュータ可読プログラム命令をネットワークから受け取り、これらのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に記憶するように転送する。
【００８６】
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データであってよく、または、Ｓｍａｌｌｔａｌｋ（Ｒ）やＣ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語や類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、１つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードとオブジェクト・コードとのいずれかであってよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されるか、スタンドアロンソフトウェアパッケージとして部分的にユーザのコンピュータ上で実行されるか、部分的にユーザのコンピュータ上で実行され部分的にリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行される場合がある。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または、接続は、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネット経由で）行われてもよい。いくつかの実施形態では、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル・ロジック・アレイ（ＰＬＡ）を例えば含む、電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【００８７】
本明細書では、本発明の態様を、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラムの、フローチャート説明またはブロック図あるいはその両方に関して述べている。フローチャート説明またはブロック図あるいはその両方の各ブロック、ならびに、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ可読プログラム命令によって実現できることは理解されるであろう。
【００８８】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実現する手段をもたらすように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて、マシンを生み出すものであってよい。これらのコンピュータ可読プログラム命令はまた、命令が記憶されたコンピュータ可読ストレージ媒体が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為の態様を実現する命令を含む製造品を含むように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組合せに、特定の方式で機能するよう指示することができるものであってもよい。
【００８９】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実現するように、コンピュータ実装プロセスが生み出すべく、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００９０】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図の中の各ブロックは、モジュール、セグメント、または命令の一部を表すことができ、これは、指定される論理機能を実現するための１つまたは複数の実行可能命令を含む。いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合がある。例えば、関連する機能に応じて、連続して示される２つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施するかまたは専用ハードウェアとコンピュータ命令との組合せを遂行する、専用ハードウェアベースのシステムによって実現できることにも気付くであろう。
【００９１】
本明細書に記載のプログラムは、本発明の特定の実施形態でこれらのプログラムが実現される応用例に基づいて、識別される。しかし、本明細書におけるどのような特定のプログラム術語も便宜的に使用されるに過ぎず、したがって本発明は、そのような術語によって識別されるかまたは含意されるかあるいはその両方がなされるいずれか特定の応用例のみにおける使用に限定されるべきではないことを理解されたい。
【００９２】
「Ｓｍａｌｌｔａｌｋ（Ｒ）」、ＬＩＮＵＸ、ＤＯＣＫＥＲなどの用語は、世界中の様々な司法管轄区における商標権に従うことを条件とする場合があり、これらの用語は、ここでは、そのような商標権が存在できる範囲まで、商標によって適正に称される製品またはサービスに関してのみ使用されることに留意されたい。
【符号の説明】
【００９３】
１００  第１のソフトウェア発見環境
１０１  ネットワーク
１０２  ソフトウェア・コンテナ・サーバ
１０４  ソフトウェア資産管理（ＳＡＭ）サーバ
１０６  ソフトウェア・コンテナ・サーバ
１０８  テンプレート・リポジトリ
１１０  ソフトウェア・コンテナ
１１２  テンプレート・イメージ
１１４  コンテナ・エンジン・アダプタ（ＣＥＡ）プログラム
１１６  テンプレート／ソフトウェア・マップ（ＴＳＭ）データベース
２００  第２のソフトウェア発見環境
２０２  ソフトウェア・コンテナ・サーバ
２０４  ソフトウェア資産管理（ＳＡＭ）サーバ
２０６  ソフトウェア・コンテナ・エンジン
２０８  コンテナ・エンジン・プラグイン（ＣＥＰ）プログラム
５０１  テンプレート・スキャナ・モジュール
５０３  ＳＡＭスキャナ／モニタ・モジュール
１０  クラウド・コンピューティング・ノード
５０  クラウド・コンピューティング環境
５４Ａ  パーソナル・ディジタル・アシスタント（ＰＤＡ）もしくはセルラー電話機
５４Ｂ  デスクトップ・コンピュータ
５４Ｃ  ラップトップ・コンピュータ
５４Ｎ  自動車コンピュータ・システム
６０  ハードウェアおよびソフトウェア・レイヤ
６１  メインフレーム
６２  ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャベースのサーバ
６３  サーバ
６４  ブレード・サーバ
６５  ストレージ・デバイス
６６  ネットワークおよびネットワーキング・コンポーネント
６７  ネットワーク・アプリケーション・ソフトウェア
６８  データベース・ソフトウェア
７０  仮想化レイヤ
７１  仮想サーバ
７２  仮想ストレージ
７３  仮想プライベート・ネットワークを含む仮想ネットワーク
７４  仮想アプリケーションおよびオペレーティング・システム
７５  仮想クライアント
８０  管理レイヤ
８１  リソース・プロビジョニング
８２  ソフトウェア資産管理（ＳＡＭ）
８３  ユーザ・ポータル
８４  サービス・レベル管理
８５  プランニングおよび履行
９０  ワークロード・レイヤ
９１  マッピングおよびナビゲーション
９２  ソフトウェア開発およびライフサイクル管理
９３  仮想教室教育の送達
９４  データ分析処理
９５  トランザクション処理
９６  モバイル・デスクトップ
８０２  通信ファブリック
８０４  コンピュータ・プロセッサ
８０６  メモリ
８０８  永続ストレージ
８１０  通信ユニット
８１２  入出力（Ｉ／Ｏ）インタフェース
８１４  ランダム・アクセス・メモリ（ＲＡＭ）
８１６  キャッシュ・メモリ
８１８  外部デバイス
８２０  ディスプレイ
【図１】
2017107555.tif 000003
【図２】
2017107555.tif 000004
【図３】
2017107555.tif 000005
【図４】
2017107555.tif 000006
【図５】
2017107555.tif 000007
【図６】
2017107555.tif 000008
【図７】
2017107555.tif 000009
【図８】
2017107555.tif 000010