(57)【要約】【課題】コンピューティングシステムの視覚表現を提示するシステムを提供すること。【解決手段】このシステムは、構成可能な設計要素として用いることができるパターンのデータストアにアクセスし、コンピューティングシステムのコンポーネントをパターンにマッピングするマッチングエンジンを備える。このシステムは、マッチングエンジンがマッピングしたパターンのグラフィック表現を提示するビジュアライザをさらに備える。【選択図】図１
2006216028.tif 000002
【特許請求の範囲】
【請求項１】
構成可能な設計要素として用いることができるパターンのデータストアにアクセスして、コンピューティングシステムのコンポーネントをパターンにマッピングするマッチングエンジンと、
前記マッチングエンジンがマッピングした前記パターンのグラフィック表現を提示するビジュアライザと
を備えたことを特徴とするコンピューティングシステムの視覚表現を提示するシステム。
【請求項２】
前記コンピューティングシステムの前記コンポーネントを発見するモニタエンジンをさらに備えたことを特徴とする請求項１に記載のシステム。
【請求項３】
機械が解釈できるコードを前記パターンにマッチさせるコードマッチングエンジンをさらに備えたことを特徴とする請求項２に記載のシステム。
【請求項４】
前記パターンに基づくコンピューティングコンポーネントの構築を可能にする構成エンジンをさらに備えたことを特徴とする請求項３に記載のシステム。
【請求項５】
構築されたパターンベースのコンピューティングコンポーネントをテストするテストモジュールをさらに備えたことを特徴とする請求項４に記載のシステム。
【請求項６】
前記構築されたパターンベースのコンピューティングコンポーネントのセキュリティ面をテストするセキュリティモジュールをさらに備えたことを特徴とする請求項５に記載のシステム。
【請求項７】
前記構築されたパターンベースのコンピューティングコンポーネントに対するメトリックスを収集する測定モジュールをさらに備えたことを特徴とする請求項６に記載のシステム。
【請求項８】
前記構築されたパターンベースのコンピューティングコンポーネントのビューを、アーキテクチャビュー、サービスビュー、およびパターンビューのうちの少なくとも１つに基づいて提供するビューモジュールをさらに備えたことを特徴とする請求項７に記載のシステム。
【請求項９】
コンピューティングシステムのコンポーネントにパターン定義をマッチさせるステップと、
ユーザに提示するために、前記マッチさせたパターン定義の表現をグラフィカルに描写するステップと
を有することを特徴とするコンピューティングシステムのコンポーネントを視覚的に表現する方法。
【請求項１０】
前記パターン定義にマッチさせることができる前記コンピューティングシステムのコンポーネントを発見するステップをさらに有することを特徴とする請求項９に記載の方法。
【請求項１１】
ソースコードを前記パターンにマッチさせるステップをさらに有することを特徴とする請求項１０に記載の方法。
【請求項１２】
第２のコンピューティングコンポーネントを、構成可能な設計要素として第２のパターン定義を用いることによって構築するステップをさらに有することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記第２のコンピューティングコンポーネントをテストするステップをさらに有することを特徴とする請求項１２に記載の方法。
【請求項１４】
前記第２のコンピューティングコンポーネントのセキュリティ面を評価するステップをさらに有することを特徴とする請求項１３に記載の方法。
【請求項１５】
パターン定義をコンピューティングシステムのコンポーネントにマッチさせる手段と、
ユーザに提示するために、前記マッチさせたパターン定義の表現をグラフィカルに描写する手段と
を備えたことを特徴とするコンピューティングシステムのコンポーネントを視覚的に表現するシステム。
【請求項１６】
前記コンピューティングシステムのコンポーネントを発見する手段をさらに備えたことを特徴とする請求項１５に記載のシステム。
【請求項１７】
ソースコードを前記パターンにマッチさせる手段をさらに備えたことを特徴とする請求項１６に記載のシステム。
【請求項１８】
第２のコンピューティングコンポーネントを、構成可能な設計要素として第２のパターン定義を用いることによって構築する手段をさらに備えたことを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記第２のコンピューティングコンポーネントをテストする手段をさらに備えたことを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記第２のコンピューティングコンポーネントのセキュリティ面を評価する手段をさらに備えたことを特徴とする請求項１９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散システムのためのベースラインアーキテクチャ・モニタアプリケーションに関し、より詳細には、基礎となるアーキテクチャのグラフィック表現を提示する分散システムのためのベースラインアーキテクチャ・モニタアプリケーションに関する。
【背景技術】
【０００２】
ビジネスコンピューティングシステム、特に分散システムの設計や実装はますます複雑な作業となっている。これらの作業に内在する複雑性に対処するために、高級プログラミング言語やパターンなどのさまざまなツールが開発されてきた。高級プログラミング言語によって、演算命令を人間が読める形式で作成および表示することが一様に可能となる。また、通常、パターンは、指定問題解決方式といわれ、典型的な設計原理を体系化する。このパターンは、高級プログラミング言語を用いて実装されるのが一般的である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
分散ビジネスシステムの開発者は、時間や費用などの多大なリソースをつぎ込んで開発に取り組んでいる。一般的に、システムの他のコンポーネントを構築する土台となるベースラインアーキテクチャの完成が、開発におけるマイルストーンとなる。このベースラインアーキテクチャを構築する主な目的は、開発リスクの軽減とそこに含まれるメカニズムの検証である。このようなシステムのアーキテクチャは、そのシステムを十分に記述するために、高級プログラミング言語やパターンに重い負担をかけ、その限界を超えてしまうことも多い。従って、システムやアーキテクチャコンポーネントを、適度なアブストラクションレベルで、かつ容易に理解できるタームで適切に表現できるシステムが求められている。
【課題を解決するための手段】
【０００４】
基本的な理解を可能にするために、以下に概要を簡単に示す。この概要は、詳しく全体について述べるものではない。これは、本発明の主要な要素または重要な要素を特定する事を意図するものではなく、発明の範囲を描くことを意図するものでもない。後に提示するより詳細な説明に対する前置きとして、簡単な形で一部の概念を提示することが、この概要の唯一の目的である。さらに、本明細書で用いる各セクションのタイトルは、単に便宜上設けられたものであって、決して限定するものとして捉えてはならない。
【０００５】
基礎となるアーキテクチャのグラフィック表現を提示するシステムおよび方法を提供する。このシステムおよび方法は、システムの多種多様なビューに、ソースコードを含む、基礎となるコンポーネントへのリンクを提供する。このビューは、パターンベースのレベルを含むさまざまなアブストラクションレベルで提示される。
【０００６】
パターンを構成可能な設計要素として用いるためのシステムおよび方法を提示する。このシステムおよび方法は、パターンをコンピューティングシステム用のビルディングブロックとして用いることによって、このシステムを設計し、構築する機能を提供する。
【０００７】
ここで開示して説明するコンポーネントおよび方法は、以下で十分に説明する特徴、ならびに特に請求項で指摘する特徴を備える。以下の説明および添付の図面に、いくつかの図示実施例を詳細に記載する。しかしながら、この実施例は、開示し、説明するコンポーネントおよび方法を実装できる多くの方法のごく一部を表したものにすぎない。開示して説明するコンポーネントおよび方法は、そのような実施例およびその実施例と等価なもの全てを含むように意図されている。他の実施例および実施例に対するわずかな修正形態も、以下の詳細な説明を図面と併用して考慮すれば明らかになろう。
【発明を実施するための最良の形態】
【０００８】
本出願で用いられる「コンポーネント」、「システム」、「モジュール」などの用語は、ハードウェア、(例えば、実行時の)ソフトウェア、および／またはファームウェア等のコンピュータに関連したエンティティを述べるためのものである。例えば、コンポーネントは、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行ファイル、プログラム、および／またはコンピュータでもよい。また、サーバで実行するアプリケーション、およびサーバ自身をコンポーネントとしてもよい。１つまたは複数のコンポーネントが、１つのプロセス内に存在してもよい。コンポーネントは、１つのコンピュータに局在してもよいし、２台以上のコンピュータに分散してもよい。
【０００９】
ここで開示するコンポーネントおよび方法については、図面を参照して説明し、また、全ての図面を通して、同じ構成要素を指す場合には同じ参照番号を用いる。以下の記載では、開示する内容を完全に理解できるように、数多くの具体的な詳細を説明目的で記述する。しかし、当然のことながら、具体的な実装では、この数多くの具体的な詳細の一部を省略してもよいし、または他と組み合わせてもよい。他の実施例では、説明を容易にするために、特定の構造および装置をブロック図形式で示す。さらに、記載された具体的な実施例では、クライアント／サーバ・アーキテクチャに一致した専門用語を用いる場合もあり、またはクライアント／サーバの実装例である場合さえあるが、当業者には当然のことながら、ここで開示して説明するコンポーネントおよび方法の精神または範囲から逸脱することなく、クライアントとサーバの役割を入れ替えてもよいし、また、ここで開示して説明するコンポーネントおよび方法は、クライアント／サーバ・アーキテクチャに限定するものではなく、特に、ピア・ツー・ピア（Ｐ２Ｐ）アーキテクチャを含む他のアーキテクチャでの使用に容易に適用できる。さらに、本明細書で提示する具体的な実施例は、具体的なコンポーネントを含み、または参照するが、本明細書で開示して説明するコンポーネントおよび方法は、必ずしもその具体的なコンポーネントに限定されるわけではなく、他の状況で用いられてもよい。
【００１０】
モニタアプリケーションは、特にベースラインアーキテクチャを含むシステムアーキテクチャの記述を提示する際の支援のために、グラフィカルユーザインタフェース（ＧＵＩ）コンポーネントを含んでいてもよい。本文書で用いられるベースラインアーキテクチャ、または簡単にアーキテクチャという用語は、同義的に用いられ、また、このベースラインアーキテクチャだけではなく、他のコンポーネントを備えたベースラインアーキテクチャを記述するためにも用いられる。モニタアプリケーションのＧＵＩは、構成可能な設計要素として用いられているパターンを視覚化し、実行中のシステムを構築および図示する。また、モニタアプリケーションを用いて、システムのバイナリコードまたはソースコードよりも高いアブストラクションレベルで、システムのフローを描写する要素としてのパターンを提示することができる。
【００１１】
図１は、ベースラインアーキテクチャ・モニタアプリケーションシステム１００のシステムブロック図である。このベースラインアーキテクチャ・モニタアプリケーションシステム１００を用いて、その基礎をなすコンピューティングシステムのハードウェアコンポーネントおよびソフトウェアコンポーネントの両方を発見し、発見したシステムの視覚化を行って、さまざまなアブストラクションレベルでそのシステムを表現することができる。なお、このさまざまなアブストラクションレベルには、ハードウェアコンポーネント、ソフトウェアコンポーネント、またはその両方を表現できるパターンレベルのアブストラクションが含まれる。また、このベースラインアーキテクチャ・モニタアプリケーションシステム１００は、モニタ１１０を含む。このモニタ１１０は、コンピューティングシステム１２０のコンポーネントにアクセスできる。このコンピューティングシステム１２０は、ハードウェアコンポーネントおよびソフトウェアコンポーネントのいずれも含む多種多様なコンポーネントを含むことができる。このハードウェアコンポーネントおよびソフトウェアコンポーネントは、広範囲に相互接続された機械やネットワークにわたって分散することができ、ビジネス環境では、通常はそうなっている。
【００１２】
モニタ１１０は、コンピューティングシステム１２０のコンポーネントを検証し、そのコンポーネントの存在と機能とを発見することができる。ハードウェアコンポーネントの場合、モニタ１１０は、バスや接続ポートなどの接続ハードウェアをポーリングすることで、モニタに直接接続されたコンポーネントの位置を見つけることができる。このポーリングの細部は、具体的な接続装置に適用可能な細部とプロトコルとに部分的に依存する。例えば、ユニバーサルシリアルバス（ＵＳＢ）接続を用いて接続する装置は、ＵＳＢプロトコルが記述する技術とシステムとを用いて発見することができる。同様に、他の種類の接続方法を用いて接続する装置は、それぞれの接続方法が用いるプロトコルで記述される技術とシステムとを用いて発見することができる。
【００１３】
他のコンポーネントを介して相互接続されるリモートハードウェアコンポーネントの場合は、このリモートハードウェアコンポーネントを、モニタ１１０が直接ポーリングしてもよいし、またはしなくてもよい。リモートハードウェアコンポーネントを直接ポーリングできない場合は、モニタ１１０は、このモニタ１１０の代わりに、リモートハードウェアコンポーネントが存在するか否かを、他のハードウェアコンポーネントにポーリングさせることができる。このポーリングを行うハードウェアコンポーネントは、次に、位置が見つかったリモートハードウェアコンポーネント全てに関する情報を、モニタ１１０に伝える。ローカルハードウェアコンポーネントおよびリモートハードウェアコンポーネントを発見するために、他の方法を用いてもよい。
【００１４】
ソフトウェアコンポーネントを発見しようとしている場合は、モニタ１１０は、複数の手法を用いて、ソフトウェアアプリケーションの存在およびこのアプリケーションが提供するサービスを発見することができる。まず、モニタ１１０は、位置が見つかったハードウェアコンポーネントの種類とアイデンティティとを評価し、この位置が見つかったハードウェアコンポーネントが、あるソフトウェアを実行すると知られている、またはあるサービスを提供すると知られている種類であるか否かを判定する。例えば、発見したハードウェアコンポーネントがプリンタである場合は、このプリンタが、ある印刷管理機能とともに印刷サービスを提供すると仮定することができる。
【００１５】
発見したハードウェアコンポーネントがコンピュータである場合は、モニタ１１０は、そのコンピュータのオペレーティングシステムにリクエストを送信し、インストールされているアプリケーションの全て、または実行しているプロセスの全てのリストをモニタ１１０に提供するようにそのオペレーティングシステムに求める。次に、このモニタ１１０は、各アプリケーションまたは各プロセスにメッセージを送信し、この各アプリケーションまたは各プロセスが提供できるサービスについての記述を入手することができる。これに加えて、またはこの代わりに、このモニタ１１０は、アプリケーションまたはプロセスのリストを用いて、各アプリケーションまたはプロセスによって提供されることが分かっているサービスを調べることができる。アプリケーション、プロセス、またはサービスを発見するために、他の方法を用いてもよい。
【００１６】
モニタ１１０は、アーキテクチャデータストア１３０に接続できる。このアーキテクチャデータストア１３０は、１つまたは複数のアーキテクチャパターンを含むことができる。アーキテクチャパターンは、コンピューティングシステム１２０などのコンピューティングシステムのアーキテクチャレベルでのコンポーネントのアブストラクションである。アーキテクチャパターンを含むパターンは、４つの情報を特定することで記述できる。まず、このパターンに名前を与える。次に、このパターンを広く適用する問題の記述を与える。３番目に、パターンの特徴の定義を与える。そして、最後に、設計パターンの適用結果を与える。
【００１７】
設計パターン名は、特に、パターンの適用性と目的とに関する情報を含むかなりの量の情報を伝えることができるアブストラクションである。問題の記述は、設計パターンの適用に適切な環境および状態に関する情報を提供する。パターンの特徴は、さまざまな問題に適用するのに、このパターンを用いることが可能となるように調整することができるパターンの設計の一部として記述される。パターンの使用結果は、設計決定の派生的影響に関する情報を提供する。
【００１８】
多種多様な情報のデータ構造を用いて、設計パターンを表現することができる。このようなデータ構造の選択または設計は、概して、具体的な実装に依存した問題である。これに対応して、多種多様なデータストアを用いて、アーキテクチャデータストア１３０を実装することができる。この利用可能な考えうるデータストアとしては、データベース、テキストファイル、拡張マークアップ言語（ＸＭＬ）の仕様に従ってフォーマットされたファイルなどの構造化テキストファイル、オブジェクト、または他の適切なデータ記憶フォーマットがある。
【００１９】
モニタ１１０は、発見したハードウェアアーキテクチャまたはソフトウェアアーキテクチャに関する情報を、視覚化コンポーネント１４０に送信できる。この視覚化コンポーネント１４０は、モニタ１１０から情報を入手し、発見したコンポーネント間の接続を示すグラフィカルフォーマットでこの情報をユーザに提供することができる。実質的には、この視覚化コンポーネント１４０は、モニタ１１０から情報を入手し、その情報を用いてコンピューティングシステム１２０などのコンピューティングシステムの図面を描くことができる。但し、この図面は、ある選択したアブストラクションレベルでコンピューティングシステムを図示するために描かれる。
【００２０】
例えば、視覚化コンポーネント１４０は、コンピューティングシステム１２０のハードウェアコンポーネントに関するシステムブロック図を提示することができる。また、この視覚化コンポーネント１４０は、システム内で協力し合う相互接続されたパターンのシステムとしてコンピューティングシステム１２０を記述するパターン図を作成することもできる。さらに、この視覚化コンポーネント１４０は、コンピューティングシステム１２０を機能レベルで表現することができ、またコンピューティングシステム１２０の図面を、相互に関連して協力し合う機能またはサービスのシステムとして提供することができる。さらに、（パターンレベル以外のレベルの表現を含む）他のパターンベースの表現と共に、コンピューティングシステムを実装するために用いる基礎となる技術とは無関係なコンピューティングシステムデータのビューを提供することもできる。
【００２１】
図２は、モニタコンポーネント２００のシステムブロック図である。このモニタコンポーネント２００を用いて、分散コンピューティングシステムを含むコンピューティングシステムのハードウェアコンポーネントおよびソフトウェアコンポーネントを発見することができる。分散コンピューティングシステムは、コンピュータ、ネットワーク装置、記憶装置、および関連周辺装置、さらに他のコンポーネントを含むことができる。
【００２２】
モニタコンポーネント２００は、ハードウェアポーリングモジュール２１０を含む。このハードウェアポーリングモジュール２１０は、モニタコンポーネントが実行しているハードウェアプラットフォームに直接接続されたハードウェアコンポーネントに関するクエリを行うことができる。この例では、モニタコンポーネント２００に関し、処理装置を含むあるハードウェアプラットフォーム上で実行中のソフトウェアとして述べるが、モニタコンポーネント２００、および本明細書で開示して説明する他のコンポーネントとは、ハードウェアとしても実装できることに留意されたい。
【００２３】
ハードウェアポーリングモジュール２１０は、他のコンポーネントに指示し、モニタコンポーネント２００が実行しているハードウェアプラットフォームに、直接的に、または間接的に接続された新たなハードウェアコンポーネントに関するポーリングを行わせることもできる。このような指示は、モニタコンポーネント２００が実行しているハードウェアから、複数のハードウェア層を隔てて位置するコンポーネントにルーティングすることができる。また、ハードウェアポーリングモジュール２１０は、ＵＳＢ、イーサネット(登録商標)、または他の標準的な接続を含む標準接続技術を用いる装置に適用できるポーリング技術などの標準的なポーリング技術を用いて、相互接続されたハードウェアコンポーネントを発見することができる。
【００２４】
モニタコンポーネント２００は、サービスポーリングモジュール２２０も含む。このサービスポーリングモジュール２２０は、ハードウェアポーリングモジュール２１０によって検出されたコンポーネントが提供できる既存のサービスに関するクエリを行うことができる。この情報を、モニタコンポーネント２００が用い、ハードウェアポーリングモジュール２１０およびサービスポーリングモジュール２２０が発見したハードウェアおよびソフトウェアのアブストラクションを提供する。このようなアブストラクションは、１つまたは複数のパターンを含むことができる。
【００２５】
サービスポーリングモジュール２２０は、さまざまな方法で既存のサービスを発見することができる。一部のコンポーネントと共に、コンポーネントにクエリを行い、コンポーネントが提供できるサービスのリストを入手することができる。例えば、サービスポーリングモジュール２２０は、コンポーネント上で実行するプロセスにメッセージを送信し、あらゆるスレッドおよびサブプロセスのアイデンティティとともに、プロセスのアイデンティティを発見する。プロセスのアイデンティティから、そのプロセスが提供できる既知のサービスリストを特定することができる。これに加えて、またはこの代わりに、このプロセスは、それ自身のサービスリストをサービスポーリングモジュール２２０に提供することができる。さらに、他の方法および手順を用いて、サービスの存在を発見することもできる。
【００２６】
このシステムにより、パターンを用いて、基礎となるコンピューティングシステムにビューを提供することが可能になる。また、このパターンによって、それまで不可能であったアブストラクションレベルで、実際の動作時にシステムを表現することが可能になる。さまざまなアブストラクションレベルで、ビューを介してナビゲートすることによって、ユーザは基礎となるシステムのアーキテクチャおよび機能に関するより完全な認識と理解を得ることができる。
【００２７】
図３は、アーキテクチャマッピングシステム３００のシステムブロック図である。図１と共に説明した視覚化モジュール１４０などの視覚化モジュールの一部として、このアーキテクチャマッピングシステム３００を用いることができる。また、このアーキテクチャマッピングシステム３００を用いて、図１を参照して説明したコンピューティングシステム１２０等のシステムの、パターンと実際のコンポーネントとの差異を識別することができる。さらに、このアーキテクチャマッピングシステム３００は、ソースコードをパターンと比較し、このソースコードのパターンベースのマップを生成することができる。
【００２８】
このアーキテクチャマッピングシステム３００は、比較モジュール３１０を含む。この比較モジュール３１０は、コンポーネントデータストア３２０にアクセスできる。このコンポーネントデータストア３２０は、コンピューティングシステムのハードウェアコンポーネントおよびソフトウェアコンポーネントの表現を含むことができる。コンポーネントデータストア３２０に含まれるハードウェアコンポーネントおよびソフトウェアコンポーネントの表現は、必ずしもすでに実行しているシステム内で検出されたコンポーネントの表現である必要はないということに留意されたい。これに加えて、またはこの代わりに、ハードウェアコンポーネントおよびソフトウェアコンポーネントの表現は、コンピューティングシステム内に存在することが可能な正規化した、または標準コンポーネントの理想化した表現とすることもできる。このような表現の細目を決めるのは、主として、特定の実装またはコンポーネントの役目である。
【００２９】
比較モジュール３１０は、パターンデータストア３３０にもアクセスできる。このパターンデータストア３３０は、コンピューティングシステムのさまざまなコンポーネントを記述できるパターンの表現を含むことができる。コンポーネントデータストア３２０と同様に、このパターンデータストア３３０は、必ずしも現在のシステム内で検出されたコンポーネントの表現を含む必要はなく、これに加えて、またはこの代わりに、他のコンポーネントを記述するのに用いることができるパターンを含むこともできる。開発者が、ある特徴または機能を組み込むのに利用する一貫性のあるコンポーネントまたはコンポーネント群を各パターンが表現するように、パターンデータストア３３０内のパターンを正規化することができる。パターンの正規化は、一般化および特殊化構成を含むことができ、さらにサブシステム、プロセス、スレッド、またはオブジェクトレベルで、構成可能な設計要素としてこれらのパターンを用いることを可能にする集約化も含むことができる。
【００３０】
コードデータストア３４０にも、比較モジュール３１０はアクセスすることができる。このコードデータストア３４０は、パターンデータストア３３０に含まれるパターンにリンクできるソフトウェアコード、またはこのパターンが表現するソフトウェアコードを含むことができる。このコードデータストア３４０に含まれるコードは、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、または他の高級プログラミング言語等の高級プログラミング言語を用いて作成されるコンピュータコードが可能である。また、このコードデータストア３４０は、数あるなかで、コンパイルされたバイナリバージョンのコード、またはオブジェクトコード、または完全にコンパイルされたスタンドアロンのアプリケーションでさえ格納することができる。
【００３１】
マップジェネレータ３５０は、比較モジュール３１０とパターンデータストア３３０にアクセスし、図１を参照して上記で説明したコンピューティングシステム１２０などのコンピューティングシステムのマップを作成することができる。このマップは、このようなコンポーネント間の相互接続に関する表現を含む、コンピューティングシステムのコンポーネントの表現であってよい。このマップ表現を、特に、グラフ、有向グラフ、または連結リストなどのさまざまな方法で実装することができる。マップジェネレータ３５０の実装の詳細は、具体的なデータ構造またはコンピューティングシステムを表現するために選択された表現の種類に依存しうる。
【００３２】
レンダリングモジュール３６０は、マップジェネレータ３５０が作成したマップにアクセスして、マップのグラフィック表現を提供することができる。具体的には、アイコン、ピクチャ、または他のグラフィカルインジケータを、マップの１つまたは複数のコンポーネントに対応させることができる。このレンダリングモジュール３６０は、不適切なレベルの、またはあらかじめ選択したレベルのアブストラクションであるマップが表現するコンピューティングシステムのビューを表示する１組の相互に接続された、または相互に関連したグラフィカルインジケータとして、マップを表示させることができる。この実施例では、説明するアブストラクションレベルはパターンレベルである。しかし、機能レベル、または本明細書で説明する他のあらゆるレベル等、他のアブストラクションレベルを用いてもよい。
【００３３】
図４は、パターンベースの開発環境４００のシステムブロック図である。このパターンベースの開発環境４００を用いて、パターンを開発環境における構成可能な設計要素として取り扱うことによって、ソフトウェアおよびシステムを開発することができる。パターンを構成可能な要素として取り扱うことによって、システム開発者は、パターングループを集め、整理し、さらにアセンブルし、分散コンピューティングシステムを含む頑強なコンピューティングシステムを作成することができる。
【００３４】
パターンベースの開発環境４００は、パターンデータストア４１０を含む。このパターンデータストア４１０は、システム開発時のビルディングブロックとして用いることができる設計パターンの表現を含む。パターンデータストアに含まれるパターンは、コンポーネントレスポンシビリティコラボレータ（ｃｏｍｐｏｎｅｎｔ  ｒｅｓｐｏｎｓｉｂｉｌｉｔｙ  ｃｏｌｌａｂｏｒａｔｏｒ：ＣＲＣ）設計原理と関連付けられた具体化したパターンでもよい。この具体化されたパターンは、パターンベースの抽象構文グラフ内でコラボレータ（ｃｏｌｌａｂｏｒａｔｏｒ）を探すために用いることができる実行可能なＣＲＣインタフェースを含むことができる。責任テスト駆動設計（ｒｅｓｐｏｎｓｉｂｉｌｉｔｙ  ｔｅｓｔ−ｄｒｉｖｅｎ  ｄｅｓｉｇｎ）を用いてシステム設計の責任を検証しながら、この具体化したパターンを用いることができる。
【００３５】
コードデータストア４２０は、機械読取可能コンピュータコードを含むことができる。この機械読取可能コンピュータコードを、パターンのうちの１つまたは複数に関連付けることができ、パターンデータストア４１０に含むことができる。図３とともに説明したコードデータストア３４０と同様に、このコードデータストア４２０は、さまざまな種類の中でも特に、高級プログラミング言語のうちの機械読取可能コード、オブジェクトコード、バイナリコード、またはスタンドアロンのアプリケーションを含むことができる。パターンデータストア４１０およびコードデータストア４２０のどちらも、データベース、オブジェクト、テキストファイル、構造化テキストファイル、または他の方法を含む、あらゆる適切な方法で実装することができる。
【００３６】
コンポーザ４３０は、パターンデータストア４１０およびコードデータストア４２０にアクセスできる。このコンポーザ４３０は、パターンデータストア４１０からのパターン、およびコードデータストア４２０からこのパターンに関連付けられたコードを操作して結合して、統合した表現、またはコードブロックをそれぞれ作成する。コンポーザ４３０を実装することに関わる細部は、パターンデータストア４１０のパターンに関して選択した特定の表現フォーマット、およびコードデータストア４２０に含まれるコードに関して選択した種類や表現などの要因に依存する。一般に、コンポーザ４３０は、パターンデータストア４１０のパターンに関連付けられたデータをコードデータストア４２０から入手し、そのコードを、他のパターンに関連する他のコードと統合することができる。
【００３７】
開発環境４４０は、開発者が、代表するシステムに複数のパターンを統合するためのプラットフォームの機能を果たすことができる。この開発環境４４０は、コンパイラ、文法および構文チェッカ、さらに他の代表的なソフトウェア開発ツールなどのコンポーネントを含むことができる。また、この開発環境４４０は、論理的な方法で互いに正しく接続されたシステムに対して、ビルディングブロックとして用いられるパターンを保証することができる。例えば、開発環境４４０は、相互にインタフェースで直接接続を行うことができないパターンに開発者がリンクしたか否かを調べて、開発者が修正措置を取ることが可能な状況を識別することができる。
【００３８】
ユーザインタフェース４５０は、開発環境４４０と対話し、開発環境４４０に便利で有用なインタフェースを提供することができる。このユーザインタフェース４５０は、コマンドラインまたは他のテキスト駆動インタフェースなどの人間とコンピュータとの間のあらゆるインタフェースであってよい。グラフィカルユーザインタフェース（ＧＵＩ）は、関連するグラフィカルインジケータを有するパターンを取り扱う際に、とりわけ有用である。この例では、開発者は、パターンベースの開発環境４００のユーザインタフェース４５０を用いて、システムを構築するためにパターンのグラフィック描写を操作することができる。例えば、開発者は、マウスまたは他のポインティングデバイスを用いて、パターンのグラフィカルインジケータを、そのようなインジケータ群を含むパレットからつかみ、構成ペインにドラッグして、ペイン内にドロップし、構築中のシステムの一部としてのパターンを用いることができる。
【００３９】
図５は、ユースケース駆動（ｕｓｅ ｃａｓｅ−ｄｒｉｖｅｎ）開発環境５００のシステムブロック図である。このユースケース駆動開発環境５００を用いて、ユースケースが定義する機能レベルでオブジェクトを操作することによって、コンピューティングシステムを作成することができる。開発者は、システム内に含むユースケースの表現を選択することによってシステムを構築できるため、要求書などのシステム設計文書によって要求された機能性が、間違いなく完成したシステムに含まれるようにすることができる。
【００４０】
ユースケースは、ユーザがどのようにコンピューティングシステムと対話するかに関する記述である。この記述は、ユーザが行うタスクまたは機能に関する情報、ユーザが入手して作り出し、または変更できるシステム情報の定義または仕様、ユーザが外部環境での変更に関してシステムに通知するか否かに関するインジケータ、ユーザがシステムから入手を望む情報の定義または仕様、および予想される変更に関してユーザに通知する必要があるか否かに関する仕様を含むことができる。ユースケースの記述は、さまざまなデータフォーマットで表現することが可能であり、主として実装が決めるものである。
【００４１】
ユースケースの表現を、ユースケースデータストア５１０に格納することができる。このユースケースデータストア５１０は、コードデータストア５２０に関連付けることができる。このコードデータストア５２０は、数ある種類の中で、高級プログラミング言語のうちの機械読取可能コード、オブジェクトコード、バイナリコード、またはスタンドアロンのアプリケーションを含むことができる。コードデータストア５２０にある個別のコードは、ユースケースデータストア５１０にあるユースケースの表現に関連付けることができる。
【００４２】
ユースケース駆動開発環境５００は、コンポーザ５３０も含む。このコンポーザ５３０は、ユースケースデータストア５１０およびコードデータストア５２０にアクセスし、ユースケースおよびこのユースケースに関連付けられたコードを操作して結合し、それぞれ統合した表現、またはコードブロックを作成することができる。また、コンポーザ５３０を実装することに関する細部は、主として、ユースケースデータストア５１０のユースケースに関して選ばれた具体的な表現フォーマット、およびコードデータストア５２０にあるコンテンツのフォーマットなどの要因に依存する。通常、コンポーザ５３０は、ユースケースデータストア５１０のユースケースに関連付けられたコードを、コードデータストア５２０から入手することができる。次に、このコンポーザ５３０は、コードデータストア５２０から入手したコードを、ユースケースに関連する他のコードセグメントと統合し、統合したブロックを作成することができる。
【００４３】
開発環境５４０は、複数のユースケースを組み合わせて結合力のあるシステムに統合するためのプラットフォームを開発者に提供することができる。また、この開発環境５４０は、コンパイラ、文法チェッカ、構文チェッカ、および他の代表的なソフトウェア開発ツールなどのサブコンポーネントを含むことができる。さらに、この開発環境５４０は、開発者が統合システム構築に使用中のユースケースが、開発者の指定した方法で互いに正確にリンクできているか否かを判定することもできる。例えば、開発環境５４０は、２つの連結したユースケースが互いに直接リンクできるか否か、または１つまたは複数の中間ユースケースを、元の２つのユースケースの間に挟む必要があるか、または挟まなければならないかを確認することができる。
【００４４】
ユースケース駆動開発環境５００は、開発者によるシステムへのアクセスを提供するユーザインタフェース５５０を含む。このユーザインタフェース５５０は、コマンドライン駆動インタフェースまたは他のテキスト駆動インタフェースを含む、人間とコンピュータとの間の適切なインタフェースでもよい。グラフィカルユーザインタフェースは、関連するグラフィカルインジケータまたは識別子を有するユースケースを開発者が操作しているときには、とりわけ有用である。そのような状況では、開発者は、マウスまたは他のポインティングデバイスを用いて、ユースケースに関連付けられたグラフィカルインジケータを選択し、そのグラフィカルインジケータを構成ペインにドラッグすることができる。また、開発者は、ユースケースに関連付けられたグラフィカルインジケータを、構成ペインにドラッグ・アンド・ドロップし、このグラフィカルインジケータを互いに連結して、完全なシステムを設計、構築することによって、システムを構築することができる。
【００４５】
図６は、文法機能を含む開発環境６００のシステムブロック図である。この開発環境６００は、パターンデータストア６１０を含む。このパターンデータストア６１０は、システム設計およびシステム構築のための構成可能なビルディングブロックとして用いることができる正規化したパターンを含む。確立した規則に従ってシステムを構築するために、パターン自身を用いることができるように、上記のパターン群を解析して配置し、ある種の高級コンピューティング言語を作ることができる。そのような方法で構築された高級コンピューティング言語は、その言語に関する構築規則を実施するために用いることができる文法と構文とを有することができる。この文法は、入力にパターンを使用する事ができる文脈自由文法であってよい。この言語は、実行可能な要素からなる構造に翻訳することができる。
【００４６】
例えば、パターンデータストア６１０は、Ａ、Ｂ、およびＣという指定された３つのパターンを含むことができる。このＡ、Ｂ、およびＣを含む言語の規則は、Ａは決してＣのすぐ前にくることはできない、という場合もある。文法モジュール６２０は、開発者が作成した表現の構文解析を行い、この規則への遵守を保証することができる。また、この文法モジュール６２０は、パターンデータストア６１０にアクセスできる設計モジュール６３０にアクセスすることができる。文法モジュール６２０からの入力を用いて、設計モジュール６３０がパターンを互いにリンクさせることができ、このリンクが、言語の文法規則に必ず従うようにする。リンクしたパターンは、コンピューティングシステム全体を形成する実行可能な要素である。
【００４７】
パターンは、コンピューティングシステムの開発におけるある知識の状態を表す。この知識を、協力し合う要素に基づくシステムの設計にさまざまな方法で適用することができる。その１つは、パターンを要素として含む抽象構文木を構築することによる方法である。テンプレート法を用いてこの抽象構文木の各ノードにアクセスし、またこの各ノードを展開して、抽象構文木を抽象構文グラフに変換することができる。次に、この抽象構文グラフを、本明細書で説明する方法を含むさまざまな方法で用いることができる。
【００４８】
図７は、メタモデル開発システム７００のシステムブロック図である。このメタモデル開発システム７００を、さまざまなシステム開発活動時に用いて、パターンベースのコンピューティングシステムの作成を支援することができる。具体的には、このメタモデル開発システム７００は、システムの完全性および正確性のために、評価およびテストを受けることが可能なコンピューティングシステムのメタモデルを作成する事ができる。
【００４９】
このメタモデル開発システム７００は、パターンデータストア７１０を含む。このパターンデータストア７１０は、システム構築において構成可能な設計要素として用いることが可能な一群のパターンを含むことができる。メタモデルクリエータ７２０が、パターンデータストア７１０のパターンにアクセスし、このパターンに関する情報を開発環境７３０に供給することができる。この開発環境７３０は、開発者がパターンデータストア７１０からのパターンを操作して、コンピューティングシステムを設計し、および構築することが可能なプラットフォームを提供できる。また、メタモデルクリエータは、開発環境７３０からの設計をその設計に含まれるパターンから生じる情報と共に用いて、コンピューティングシステムのメタモデルを作成することができる。このメタモデルは、次に、概念テストまたは視覚化の基礎としての機能を果たすことができる。
【００５０】
図８は、マルチレベルテストシステム８００のシステムブロック図である。このマルチレベルテストシステム８００を用いて、コンピューティングシステムを、設計プロセス時、および実装後にさまざまなレベルでテストすることができる。このテストは、設計プロセス時の設計の欠陥またはエラーの発生を識別する際に、または発生が生じないようにする際に役立つ。新たに設計したコンピューティングシステムを配備する前に、実装エラーの識別および修正を行うこともできる。
【００５１】
マルチレベルテストシステム８００は、パターンデータストア８１０を含む。このパターンデータストア８１０は、コンピューティングシステムに対する構成可能なビルディングブロックとして用いることができる一群の正規化パターンを含む。テストモジュール８２０は、パターンデータストア８１０のパターンを用いて、システムコンポーネントの評価、および設計エラーまたは実装エラーの識別を行うことができる。また、このテストモジュール８２０は、テストスクリプトを実行して、各アクセスレベルでコンポーネントを介して実行した際のスレッドを追跡できる。テストスクリプトの実行時における実行エラーを記録してもよいし、または後に修正を行うために識別してもよい。
【００５２】
さらに、このテストモジュール８２０は、アーキテクチャレベル８３０にアクセスできる。このアーキテクチャレベル８３０は、アーキテクチャレベルでのシステム表現、またはコンピューティングシステムを表現するアーキテクチャレベルでのビューを含む。設計レベル８４０は、設計レベルでのシステム表現、またはコンピューティングシステムを表現する設計レベルでのビューを含む。実装レベルでのコンピューティングシステムの表現、またはコンピューティングシステムを表現する実装レベルでのビューは、実装レベル８５０に含まれる。
【００５３】
テストモジュール８２０は、アーキテクチャレベル８３０に加えて、設計レベル８４０と実装レベル８５０とにアクセスできる。テストモジュール８２０は、設計レベルまたは実装レベルで実行されるべきテストスクリプト設計を実行し、設計エラーまたは実装エラーを識別することができる。このようなマルチレベルテストは、新たに設計したシステムを実際に配備する前に、より完璧なシステムを目的として、このシステムのさまざまな側面を徹底的にテストすることができる。開発プロセス時のさまざまなマイルストーンでこのテストを実行することができる、また、開発中に、並行してこのテストを実行し、１つのレベルでの設計活動が他のレベルで予期せぬ結果をもたらさないようにすることもできる。
【００５４】
図９は、メトリックベースのテストシステム９００のシステムブロック図である。このメトリックベースのテストシステム９００を用いて、コンピューティングシステムの動作上のさまざまな態様をテストすることができる。このテスト機能は、新たに設計したシステムに伴う動作上の問題を識別するのに特に有用で、その結果、その問題を修正することができる。これに加えて、またはこの代わりに、メトリックベースのテストシステム９００を用いて、システムコンポーネントを識別するための動作上のメトリックスを入手し、それに基づいて、そのシステムコンポーネントを最適化または改良することができる。
【００５５】
メトリックベースのテストシステム９００は、メトリックモジュール９１０を含む。このメトリックモジュール９１０は、コンピューティングシステム９２０のコンポーネントにアクセスでき、コンポーネントのさまざまな動作パラメータを具体的に測定する。例えば、メトリックモジュール９１０は、データベースにアクセスし、クエリへの応答時間を測定し、そのデータベースに対して実行するクエリへの平均応答時間を求めることができる。適切なメトリックスの選択と測定とは、実装に依存する。
【００５６】
パターンデータストア９３０は、構成可能な設計要素として用いることができるパターンに関する情報を、メトリックモジュール９１０に供給することができる。このメトリックモジュール９１０は、その情報を用いて、測定したメトリックスのグループ化または集約を行い、そのメトリックスを特定のパターンに関連付けることができる。関連付けられたメトリックスは、あるパターンレベルで提示されて、コンピューティングシステムのパターンベースのコンポーネントに対する性能インジケータを与えることができる。
【００５７】
テストモジュール９４０は、パターンレベルのメトリックスへのアクセス、およびそのメトリックスの解析を行って、潜在的な実装問題に関する正確で深い理解を提供する事ができる。例えば、このテストモジュール９４０は、メトリックモジュール９１０からの測定したメトリックスを、そのコンポーネントに対する期待値または理想値と比較することができる。この比較は、正常値または期待値の範囲を比較する際に用いるような確率ベースの比較であってもよいし、または、他の確率ベースの比較を用いてパターンベースのコンポーネントの性能を評価してもよい。期待範囲外のメトリック値は、ソフトウェアまたはハードウェアレベルでのパターンの実装に伴う潜在的な問題を示している可能性がある。ソフトウェアレベルでは、性能指数が低ければ、コーディングエラーまたはプロセスアルゴリズムを改良する必要性を示している可能性がある。また、ハードウェアレベルでは、性能指数が低ければ、実装に用いられているハードウェアベースのコンピューティングリソースが不十分であることを示している可能性がある。性能メトリックスが、期待される範囲よりも高ければ、最適化がうまく行われた、予期せぬ効率が得られた、またはコンピューティングリソースが多すぎるということを示す。他にも原因や影響が考えられ、それは当業者には明らかであろう。
【００５８】
図１０は、セキュリティテストシステム１０００のシステムブロック図である。このセキュリティテストシステム１０００は、新たに設計したシステムに存在するセキュリティ上の欠陥を識別し、除去するための基礎を提供することができる。セキュリティテストは、設計段階および実装の初期段階で特に有効であり得る。セキュリティを念頭において設計されたシステムは、実装後のテスト、およびセキュリティ問題に対処するためにパッチを当てることのみに依存する他のシステムよりも、セキュリティ上の欠陥は少ない可能性がある。
【００５９】
セキュリティテストシステム１０００は、パターンデータストア１０１０を含む。このパターンデータストア１０１０は、構成可能な設計要素として用いることができる一群の正規化パターンを含む。セキュリティモジュール１０２０が、基礎となるコンピューティングシステム１０３０にアクセスし、このコンピューティングシステム１０３０を構築するのに用いられるパターンデータストア１０１０内のパターンを識別することができる。この識別されたパターンは、既知の、または存在しうるセキュリティ上の欠陥を詳しく調べるセキュリティテストの対象となり得る。
【００６０】
例えば、パターンは、指定データの入力を求めることができる。ある入力に伴う一般的なセキュリティ上の欠陥は、バッファオーバフローを許す無限のバッファであり、その結果、開発者が意図しない勝手なコードを実行するコンピューティングシステムとなる。セキュリティモジュール１０２０は、パターンの使用に伴う潜在的な問題を識別し、任意の実行データでバッファのオーバフローを試みることによって問題の存在をテストすることができる。識別されたパターンに伴う潜在的な問題の各々に対して、セキュリティテストのシナリオを作成してもよい。
【００６１】
セキュリティモジュール１０２０は、試みた結果をテストモジュール１０４０に送信できる。このテストモジュール１０４０は、セキュリティ情報を、他のテスト情報と統合して、開発者に結果を提示することもできる。このようなセキュリティテストは、実装していない状態のコンピューティングシステムで行われてもよいし、同様に、すでに実装されて実行中のシステムにおいて行われてもよいことは留意されるべきである。
【００６２】
図１１は、ビューシステム１１００のシステムブロック図である。このビューシステム１１００を用いて、コンピューティングシステムのさまざまな態様を、開発者またはユーザに提示することができる。また、このビューシステム１１００は、ビューモジュール１１１０を含む。このビューモジュール１１１０は、分散コンピューティングシステム１１２０のさまざまなコンポーネントの表現にアクセスできる。具体的には、このビューモジュール１１１０は、分散コンピューティングシステム１１２０のコンポーネントのアーキテクチャレベルでの表現を含むアーキテクチャデータストア１１３０にアクセスすることができる。サービスデータストア１１４０は、分散コンピューティングシステム１１２０が提供するサービスの表現を含むことができる。また、パターンデータストア１１５０は、分散コンピューティングシステム１１２０を構成するパターンの表現を含むことができる。
【００６３】
ビューモジュール１１１０では、これらのデータストアにアクセスし、ユーザに対する分散コンピューティングシステム１１２０全体の表現方法に関する情報を入手できる。ユーザは、特に、アーキテクチャビュー、サービスビュー、またはパターンビューなどのさまざまなビューの中から選択し、分散コンピューティングシステム１１２０の設計、構築、またはオペレーションに関するさらに正確で深い知識を得る事ができる。このようなビューを作成するために、ビューモジュール１１１０は、分散コンピューティングシステム１１２０内に含まれるさまざまなデータストアから利用可能なコンポーネントを、そのコンポーネントのグラフィカルインジケータにマッピングすることができる。そして、ビューモジュール１１１０は、このグラフィカルインジケータを、分散コンピューティングシステム１１２０のビューとしてユーザに提示できる。
【００６４】
図１２は、変換システム１２００のシステムブロック図である。この変換システム１２００を用いて、システムの１つの表現から、そのシステムのアーキテクチャのベースラインに変換することができる。また、この変換システム１２００は、ユースケースマッピングデータストア１２１０を含む。このユースケースマッピングデータストア１２１０は、コンピューティングシステムを設計するのに用いられるユースケースから、そのシステムを実装するのに用いることができるアーキテクチャ上のコンポーネントへのいくつかのマッピングを含むことができる。また、サービスマッピングデータストア１２２０は、サービスから、このサービスを提供できるアーキテクチャのコンポーネントへのマッピングを含むことができる。さらに、パターンマッピングデータストア１２３０は、パターンから、このパターンを実装するために用いることができるコンポーネントへのマッピングを含むことができる。
【００６５】
変換モジュール１２４０は、上記のマッピングデータストアにアクセスし、マッピングをアーキテクチャコンポーネントに変換できる。また、この変換モジュール１２４０は、一群のアーキテクチャコンポーネントを集約してアセンブルし、ベースラインアーキテクチャ１２５０を作成することができる。このベースラインアーキテクチャ１２５０は、完成したシステムの最初の実装を表現する。必要に応じて、このアーキテクチャを、検討し、テストし、修正し、または拡張してもよい。
【００６６】
本明細書で開示して説明するコンポーネントは、例えば、検出タスクまたは識別タスクと関連して、さまざまなタスクを実行するために人工知能ベースのさまざまなスキームを用いることができる。例えば、ソースコードレベルの機能のパターンへのマッピングは、自動分類器システムおよびプロセスを用いる事によって容易にすることができる。さらに、自動分類器システムを用いて、ハードウェアコンポーネントまたはソフトウェアコンポーネントを、ユースケースまたはパターンの一部として識別することができる。
【００６７】
分類器は、入力属性ベクトルＸ＝（ｘ1，ｘ2，ｘ3，ｘ4，・・・ｘn）を、あるクラスにその入力が属するという確からしさにマッピングする関数、つまり、ｆ（Ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）である。このような分類は、確率的および／または統計的な（たとえば、解析ユーティリティやコストを考慮に入れている）解析を用いて、ユーザが自動的に行われることを望むアクションを予知し、または推測することができる。本明細書で説明するシステムの場合は、分類器は、パターン照合、および確率的比較または評価を含む機能において特に有用となる。
【００６８】
サポートベクトルマシン（ＳＶＭ）は、利用可能な分類器の例である。このＳＶＭは、考えうる入力空間において、トリガとなる閾値を、ノントリガイベントから分けようとする超曲面を探し出すことによって動作する。直感的に、これは、トレーニングデータに近いが同一ではないテストデータのために分類を修正する。他の方向性および非方向性のモデル分類手法には、例えば、ナイーブベイズ、ベイジアンネットワーク、決定ツリー、および独立したさまざまなパターンを提供する確率的分類モデルが含まれる。本明細書で用いられる分類は、優先的なモデルを開発するために利用する統計的回帰も含む。
【００６９】
本明細書から容易にわかるように、本明細書で開示して説明するコンポーネントは、（例えば、一般的なトレーニングデータによって）明示的にトレーニングされた分類器、さらに（例えば、ユーザの振る舞いを観察したり、外部の情報を受け取ったりすることで）暗示的にトレーニングされた分類器を用いることができる。例えば、ＳＶＭは、分類器コンストラクタおよび機能選択モジュール内での学習フェーズまたはトレーニングフェーズによって構成される。このように、分類器を用いて、機能が正しくパターンにマッピングされたか否かの判定を含むが、それに限定される事のない、数多くの機能を自動的に行うことができる。
【００７０】
図１３〜図２０を参照すると、フロー図が提示されている。説明を簡単にするために、本明細書で示す１つまたは複数の方法は、例えばフロー図の形式で示され、一連の動作として説明されるが、当然のことながら、ここで開示して説明するコンポーネントおよび方法は、本明細書で示して説明する順番とは異なる順番で一部の動作を行ってもよいし、他の動作と同時に行ってもよいし、あるいはその両方を行ってもよいように、動作の順番によって限定されるものではない。例えば、当業者には当然のことながら、状態図のように、一連の相関する状態またはイベントとして方法を表す場合もある。さらに、図示したすべての行為が、方法を実装するために必須であるというわけではない。
【００７１】
図１３は、本明細書で開示して説明するコンポーネントとともに用いることができる方法１３００の処理を描いたフロー図である。この方法１３００を用いて、コンピューティングシステムの視覚化を実現することができる。次に、この視覚化を、コンピューティングシステムをより深く解析するために用いることができる。
【００７２】
この方法１３００の処理は、ＳＴＡＲＴブロック１３１０で開始し、処理ブロック１３２０に続く。この処理ブロック１３２０では、コンピューティングシステムのハードウェアコンポーネントを詳しく調べる。この処理は、次の処理ブロック１３３０に続き、ここで、コンピューティングシステムにあるソフトウェアアプリケーションを発見する。処理ブロック１３４０では、コンピューティングシステムの各コンポーネントからの、利用可能なソフトウェアサービスまたは他のサービスを発見する。
【００７３】
処理は、処理ボックス１３５０へと進み、ここで、コンピューティングコンポーネント間の相互接続をマッピングする。処理ブロック１３６０では、コンピューティングコンポーネントのマッピングで発見したパターンを、テンプレートパターンにマッチさせる。このマッチングは、正規化パターンまたは理想パターンに対する近似フィッティングまたは最適フィッティングとして行うことができる。処理ブロック１３７０では、パターンマップを作成する。さらに、処理ブロック１３８０では、このパターンマップを観察するためにレンダリングする。最後に、この処理は、ＥＮＤブロック１３９０で終了する。
【００７４】
図１４は、本発明の別の態様に従って用いることができる方法１４００の処理を描いたフロー図である。この方法１４００を用いて、コンピューティングシステムのコンポーネントを識別または発見することができる。このコンポーネントは、具体的には、ハードウェア、ソフトウェア、サービス、またはコンピューティングシステムの他の識別可能な特徴を含むことができる。この方法によって生成した情報を、以降の設計活動または開発活動に用いることができる。
【００７５】
この方法１４００の実行は、ＳＴＡＲＴブロック１４１０で開始し、処理ブロック１４２０に続く。この処理ブロック１４２０では、ポーリングを行い、システム内の付属ハードウエアコンポーネント全ての位置を探す。このポーリングについては、位置が見つかったハードウェアコンポーネントに、そのすでに位置が見つかったコンポーネントに接続されている追加のコンポーネントに関してポーリングを行わせることによって、再帰的に実行することが可能である。処理は、次の処理ブロック１４３０に続き、ここで、パターンを用いたハードウェアのグラフを生成し、ポーリングの際に発見したハードウェアコンポーネントを表現する。処理ブロック１４４０では、位置が見つかった各ハードウェアにあるソフトウェアまたはアプリケーションのリストを入手する。
【００７６】
各ソフトウェアまたはアプリケーションが提供できるサービスを、処理ブロック１４５０で識別する。この識別は、ソフトウェアまたはアプリケーションに直接クエリを実行して行ってもよいし、ソフトウェアまたはアプリケーションが提供することが分かっているサービスリストにアクセスして行ってもよいし、この２つの方法を組み合わせて行ってもよいし、または全く別の適当な方法で行ってもよい。処理ブロック１４６０では、パターンをグラフの基礎として用いて、サービスのグラフを生成する。処理ブロック１４７０では、ユーザのために、作成したグラフの視覚化をレンダリングする。この処理は、ＥＮＤブロック１４８０で終了する。
【００７７】
図１５は、本明細書で開示して説明するコンポーネントとともに用いることができる方法１５００のフロー図である。この方法１５００は、コンピューティングシステムを構築する際に構成可能な設計要素として用いるパターンを参照して、ソフトウェアコードを生成またはアセンブルするためのハイレベルな処理フローである。このソフトウェアコードのアセンブリは、エンドユーザからは見えないプロセスとして行われる場合もある。
【００７８】
方法１５００の実行は、ＳＴＡＲＴブロック１５１０で開始する。処理は、処理ブロック１５２０へと続き、ここで、設計したシステムのコンポーネントに関するコンポーネントのグラフを入手する。コンポーネントは、ハードウェア、ソフトウェア、サービス、または他の識別可能なコンポーネントを含むことができる。このコンポーネントのグラフを、処理ブロック１５３０でパターンと比較する。この比較については、確率的に行ってもよいし、最適フィッティング手順として行ってもよい。処理ブロック１５４０では、コンポーネントのグラフまたはサブグラフとマッチするパターンを選択する。
【００７９】
処理は、処理ブロック１５５０へと続き、ここで、パターンのグラフを作成する。このパターンのグラフは、設計しているコンピューティングシステムのパターンレベルでの表現である。処理ブロック１５６０では、パターンのグラフのパターンにリンクするコードを、このパターンのグラフに従ってアセンブルする。処理は、ＥＮＤブロック１５７０で終了する。
【００８０】
図１６は、本明細書で開示して説明するコンポーネントとともに用いることができる方法１６００のフロー図である。この方法１６００を用いて、正規化設計パターンを作成することができる。そして、この正規化設計パターンを、システム設計の構成可能な設計要素として用いることができる。
【００８１】
この方法１６００の処理は、開始ブロック１６１０で開始する。処理は、処理ブロック１６２０へと続き、ここで、設計パターンを具象化する。この具象化は、データ構造、またはコンピュータが実装する設計パターンに関する他の表現の作成を含むことができる。処理ブロック１６３０では、実行可能なコンポーネントレスポンシビリティコラボレータ（ＣＲＣ）インタフェースを作成し、設計パターンに適用する。
【００８２】
処理は、処理ブロック１６４０へと続き、ここでコンポーネントレスポンシビリティコラボレータを用いてコラボレータを探す。システムデザインの責任を、処理ブロック１６５０で検証する。この方法１６００の処理は、ＥＮＤブロック１６６０で終了する。
【００８３】
図１７は、本明細書で開示して説明するコンポーネントとともに用いることができる方法１７００のフロー図である。この方法１７００を用いて、パターンから組版言語(ｃｏｍｐｏｓｉｔｉｏｎ  ｌａｎｇｕａｇｅ)を作成することができる。そして、この言語を、パターンベースのコンピューティングシステムを構築するための一部として用いることができる。
【００８４】
この方法１７００の処理は、ＳＴＡＲＴブロック１７１０で開始する。処理ブロック１７２０では、パターン記述子を作成する。この記述子は、広範囲の形式をとることができる。この例では、記述子を、組版言語を形成することができるアルファベットとして用いることができる。処理は、処理ブロック１７３０へと続き、ここで、パターン記述子をベースラインのアルファベットとして確立する。また、処理ブロック１７４０では、このアルファベットを用いる文法を確立する。さらに、処理ブロック１７５０では、言語構文を確立する。この処理は、ＥＮＤブロック１７６０で終了する。
【００８５】
図１８は、本明細書で開示して説明するコンポーネントとともに用いることができる方法１８００のフロー図である。この方法１８００を用いて、設計したパターンベースのコンピューティングシステムを、複数のレベルでテストすることができる。このテストで、アーキテクチャの配置、ソフトウェア設計、または実装における欠陥を、潜在的に識別することができる。方法１８００の処理は、開始ブロック１８１０で開始する。この処理は、処理ブロック１８２０へと続き、ここで、構成可能な設計要素として用いることができるパターンにアクセスする。処理ブロック１８３０では、アーキテクチャレベルで、一連のテストスクリプトをコンピューティングシステムの表現において実行する。このテストスクリプトは、アーキテクチャ上のコンポーネント間の考えうる全ての相互接続を用いるように設計される。
【００８６】
処理ブロック１８４０では、設計レベルで、テストスクリプトをコンピューティングシステムの表現において実行することによって処理は継続する。アーキテクチャレベルで実行するテストスクリプトと同様に、設計レベルのテストスクリプトは、設計レベルでの全ての接続を潜在的に検証する。処理は、処理ブロック１８５０で継続し、ここでは、コンピューティングシステムの実装レベルにおいて、テストスクリプトを実行する。このテストスクリプトは、実際の実装上の問題を修正することができるように、この問題を識別することができる。この方法１８００は、ＥＮＤブロック１８６０で終了する。
【００８７】
図１９は、本明細書で開示して説明するコンポーネントとともに用いることができる方法１９００のフロー図である。この方法１９００を用いて、実装したシステムの性能面を評価できる。この性能評価または性能メトリックスを用いて、最適化を行うために注目すべき実装上の課題または領域を識別することができる。
【００８８】
この方法１９００の処理は、開始ブロック１９１０で開始し、処理ブロック１９２０へと続く。この処理ブロック１９２０では、コンピューティングシステムの性能メトリックスを入手する。この入手した性能メトリックスを、処理ブロック１９３０で、構成可能な設計要素として用いることができるパターンにマッチさせる。処理ブロック１９４０では、入手した性能メトリックスを、期待する性能メトリックス、または理想的な性能メトリックスに照らして評価する。この評価は、あるベンチマーク手順ベース確率、またはベンチマーク手順に従った確率としてもよい。処理は、処理ブロック１９５０で継続し、ここでは、各パターンに関連付けられたメトリックスを表示する。この処理は、ＥＮＤブロック１９６０で終了する。
【００８９】
図２０は、本明細書で開示して説明するコンポーネントとともに用いることができる方法２０００のフロー図である。この方法２０００を用いて、パターンベースのコンピューティングシステムに対する全体的なセキュリティ状態を評価できる。次に、この評価を用いて、セキュリティ上の欠陥を修正し、コンピューティングシステムの全体的なセキュリティを向上させることができる。
【００９０】
この方法２０００の処理は、開始ブロック２０１０で開始する。処理は、処理ブロック２０２０へと続き、ここで認識したセキュリティ上の課題を、構成可能な設計要素として用いることができるパターンにマッチさせる。また、処理ブロック２０３０では、そのパターン上で、セキュリティテストスクリプトを実行する。処理ブロック２０４０で、セキュリティ上の欠陥を確認する。さらに、このセキュリティ上の欠陥を、処理ブロック２０５０で、それぞれのパターンに関連付けて表示する。この処理は、ＥＮＤブロック２０６０で終了する。
【００９１】
図２１は、アーキテクチャの視覚化に関するある態様を、モニタプログラムを介して描写するＧＵＩ２１００の図である。ここで提示する実施例は、分かりやすくするために、Ｇｌｏｂａｌ  Ｂａｎｋとよぶ銀行業務アプリケーションに基づいたものである。このＧＵＩ２１００は、視覚化ペイン２１１０とユースケースペイン２１２０とを含む。また、視覚化ペイン２１１０は、複数のタブ２１３０を含む。例えば、マウス駆動ポインタでクリックすることなどによって各タブ２１３０をアクティブにし、異なる機能性を提供することができる。ここで提示する実施例では、Ａｐｐｌｉｃａｔｉｏｎタブ２１４０がアクティブとして示され、視覚化ペイン２１１０が、一般的なウエルカム画面またはログイン画面を描写している。
【００９２】
ユースケースペイン２１２０は、統一モデリング言語（ＵＭＬ）スキームに用いられるユースケースタイプなどのユースケースのリストを含む。このユースケースのリストは、各ユースケース名を、そのユースケースの簡単な説明とともに含む。ドロップダウンメニュー、コントロールボタン、チェックボックスなどの画面上のコントロールをユーザが選択し、そのユースケースペインに関連付けられた機能をアクティブにする、または修正することができる。
【００９３】
図２２は、Ｓｙｓｔｅｍ  Ｖｉｅｗタブ２２１０がアクティブとなったＧＵＩ２２００を描写する。アプリケーションまたはアーキテクチャの骨組みのビューが、左側のペインに描写される。また、ユースケースに関する一組の説明２２３０が、右側のペインに描写される。具体的には、ドロップダウンメニュー２２４０で、ユースケースであるＶｉｅｗ  Ｓｃｈｅｄｕｌｅｄ  Ｐａｙｍｅｎｔｓがリストされる。このＶｉｅｗ  Ｓｃｈｅｄｕｌｅｄ  Ｐａｙｍｅｎｔｓユースケースのサブケースが、テーブル形式でユースケースペイン内にリストされる。
【００９４】
アーキテクチャ２２２０を参照すると、ユースケースであるＶｉｅｗ  Ｓｃｈｅｄｕｌｅｄ  Ｐａｙｍｅｎｔｓに関与するコンポーネントが、相互関係とともに示されている。具体的には、上から下に向かって、外部パートナーおよび顧客が、ファイアウォールを介して、ＳＭＴＰサーバ、統合サーバ、およびウェブサーバを含むイーサネット(登録商標)ネットワークに接続される。このイーサネット(登録商標)ネットワークは、次に、第２のファイアウォールを介して、統合サーバ、関連データストアを備えた支払いコンポーネント、関連データストアを備えたＣＲＭコンポーネント、ディレクトリサービスコンポーネント、およびゲートウェイサービスを含む第２のイーサネット(登録商標)ネットワークに接続される。このゲートウェイサービスは、第３のファイアウォールを介して、メインフレームコンピュータのゲートウェイコンポーネントに接続される。また、第２の統合サーバは、ネットワーク化された２つの銀行システムを含むリモートデータセンタに接続される。ペイン２２２０内の各コンポーネントは、対応するシステムコンポーネントのアブストラクションを表現するアイコンで描写されている。このようなコンポーネントの図形描写によって、容易に理解できるように、または直感的にアーキテクチャの説明がなされる。
【００９５】
図２３は、Ｓｅｒｖｉｃｅｓ  Ｖｉｅｗタブ２３１０がアクティブとなったＧＵＩ２３００の図である。Ｓｅｒｖｉｃｅｓ  Ｖｉｅｗタブ２３１０がアクティブになると、視覚化ペイン２３２０に描写されるアーキテクチャは、各々が複数のサービスを提供する可能性のあるコンポーネントそれ自身が提示するのではなく、システムのコンポーネントが提供する機能に基づいて、一組の接続されたアブストラクションとして提示される。ユースケースペイン２３３０内で選択されたユースケースのコンポーネントは、視覚化ペイン２３２０内に図形描写される。ＧＵＩ２３００の全体的な効果は、選択されたユースケースを介して、ユーザに各ステップを図示することである。
【００９６】
図２４は、アクティブ状態のＰａｔｔｅｒｎ  Ｖｉｅｗタブ２４１０を含むＧＵＩ２４００を描写する。この例のユースケースおよびサブコンポーネントは、先に示した図のＧＵＩの提示と同様な方法でユースケースペイン２４２０内に描写される。パターンビュータブ２４１０がアクティブになると、アブストラクションのパターンレベルで、システムコンポーネントの図形描写２４３０がユーザに提示される。ユーザは、例えば、マウス駆動ポインタを用いて右クリックすることによって、図形描写２４３０の個々のコンポーネントを選択し、かつアクティブ化して、表現されたシステムの更なる詳細を入手することができる。この更なる詳細には、パターンの説明、および基礎となるソースコードのビューが含まれていてもよい。
【００９７】
図２５は、アクティブ状態のＴｅｓｔｓタブ２５１０を含むＧＵＩ２５００を描写する。先に示した例と同様に、ユースケースペイン２５２０は、先に説明した形式でユースケースを描写する。表示ペイン（ｐｒｅｓｅｎｔａｔｉｏｎ  ｐａｎｅ）２５３０は、選択したユースケースに関連付けられたコンポーネントに対して規定されたテストリストを含む。追加のタブ２５４０によって、ユーザは追加の機能にアクセスできる。ここで提示する例では、データアクセステストおよびネットワーク接続テストを含む一群のテストが示される。
【００９８】
さまざまなコンポーネントまたは方法を実装するための追加のコンテキストを設けるために、図２６、２７、および以下の説明は、適切なコンピューティング環境に関する簡単で一般的な説明を提供することを目的とする。これまでに開示したコンポーネントおよび方法は、ローカルコンピュータおよび／またはリモートコンピュータ上で実行するコンピュータプログラムのコンピュータ実行可能命令に関する一般的な関係で上記に説明してきたが、当業者には当然のことながら、このコンポーネントおよび方法を、他のプログラムモジュールと組み合わせて実装してもよい。通常、プログラムモジュールは、特定のタスクを行い、および／または特定のアブストラクトデータ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。
【００９９】
さらに、当業者には当然のことながら、ここで開示して説明したコンポーネントおよび方法を、シングルプロセッサまたはマルチプロセッサのコンピューティングシステム、ミニコンピュータ、およびメインフレームコンピュータ、さらに、パーソナルコンピュータ、ハンドヘルドコンピューティング装置、マイクロプロセッサベースおよび／またはプログラム可能な民生用製品などを含む、他の１つまたは複数の関連装置と有効に通信できる他のコンピュータシステム構成で実装してもよい。また、ある種のタスクを通信ネットワークを介してリンクするリモート処理装置で行う分散コンピューティング環境で、新たな実装を行うことができる。しかし、全部ではないとしても、本明細書で開示して説明するコンポーネントおよび方法の中には、スタンドアロンコンピュータ上で行うことが可能なものもある。分散コンピューティング環境では、プログラムモジュールは、ローカルおよび／またはリモートメモリ記憶装置に配置してもよい。
【０１００】
図２６は、コンピューティング環境２６００の実施例を概略的に示すブロック図である。このシステム２６００は、１つまたは複数のクライアント２６１０を含む。このクライアント２６１０は、ハードウェアでもよいし、ソフトウェアでもよいし、あるいはその両方でもよい（例えば、スレッド、プロセス、コンピューティング装置など）。また、このシステム２６００は、１つまたは複数のサーバ２６２０も含む。このサーバ２６２０は、ハードウェアでもよいし、ソフトウェアでもよいし、あるいはその両方でもよい（例えば、スレッド、プロセス、コンピューティング装置など）。また、このサーバ２６２０は、スレッドまたはプロセスを内蔵して、例えば、本発明を用いることによって変換を行う。
【０１０１】
クライアント２６１０とサーバ２６２０との間での考え得る通信手段の１つは、複数のコンピュータプロセス間で伝送されるようになっているデータパケットの形態をとることである。このシステム２６００は、クライアント２６１０とサーバ２６２０間での通信を容易にするために用いることができる通信フレームワーク２６４０を含む。クライアント２６１０は、ローカルからクライアント２６１０への情報を格納するために用いることができる１つまたは複数のクライアントデータストア２６５０に、動作可能に接続される。同様に、サーバ２６２０は、ローカルからサーバ２６４０への情報を格納するために用いることができる１つまたは複数のサーバデータストア２６３０に、動作可能に接続される。
【０１０２】
図２７を参照すると、例示的環境２７００は、コンピュータ２７１２を含む。このコンピュータ２７１２は、処理装置２７１４、システムメモリ２７１６、およびシステムバス２７１８を含む。システムバス２７１８は、システムメモリ２７１６から処理装置２７１４までを含むが、これに限定されることのないシステムコンポーネントを結合する。処理装置２７１４は、各種利用可能なプロセッサのいずれでもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを処理装置２７１４として用いてもよい。
【０１０３】
システムバス２７１８は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および／または各種利用可能なバスアーキテクチャを用いたローカルバスを含むいずれの種類のバス構造でもよい。この各種利用可能なバスアーキテクチャには、ＩＳＡ（業界標準アーキテクチャ）、ＭＣＡ（マイクロチャネルアーキテクチャ）、ＥＩＳＡ（拡張ＩＳＡ）、ＩＤＥ（インテリジェントドライブエレクトロニクス）、ＶＬＢ（ＶＥＳＡローカルバス）、ＰＣＩ（周辺コンポーネント相互接続）、カードバス、ＵＳＢ（ユニバーサルシリアルバス）、ＡＧＰ（アドバンストグラフィックスポート）、ＰＣＭＣＩＡ（パーソナルコンピュータメモリカード国際協会）バス、ＩＥＥＥ  １３９４（ファイヤワイヤ）、およびＳＣＳＩ（小型コンピュータ用周辺機器インタフェース）が含まれるが、これに限定されるわけではない。
【０１０４】
システムメモリ２７１６は、揮発性メモリ２７２０と不揮発性メモリ２７２２を含む。例えば、起動時などに、コンピュータ２７１２内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ２７２２に格納される。この不揮発性メモリ２７２２は、限定するわけではないが例として、リードオンリメモリ（ＲＯＭ）、プログラム可能なＲＯＭ（ＰＲＯＭ）、電気的にプログラム可能なＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含むことができる。揮発性メモリ２７２０は、外部キャッシュメモリの機能を果たすランダムアクセスメモリ（ＲＡＭ）を含む。このＲＡＭは、限定するわけではないが例として、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ（ＳＬＤＲＡＭ）、およびダイレクトラムバスＲＡＭ（ＤＲＲＡＭ）などの多くの形で利用可能である。
【０１０５】
コンピュータ２７１２は、取り外し可能／固定であり、また揮発性／不揮発性のコンピュータ記憶媒体も含む。例えば、図２７は、ディスク記憶装置２７２４を示す。このディスク記憶装置２７２４は、限定するわけではないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックなどの装置を含む。さらに、ディスク記憶装置２７２４は、記憶装置を単独で含むこともできれば、コンパクトディスクＲＯＭ装置（ＣＤ−ＲＯＭ）、追記型ＣＤドライブ（ＣＤ−Ｒドライブ）、書き換え可能ＣＤドライブ（ＣＤ−ＲＷドライブ）、またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭドライブ）などの光学ディスクドライブを含み、これに限定されない他の記憶媒体と組み合わせた記憶媒体を含むこともできる。ディスク記憶装置２７２４のシステムバス２７１８への接続を容易にするために、インタフェース２７２６などの取り外し可能インタフェースまたは取り外し不可能インタフェースが通常は用いられる。
【０１０６】
当然のことながら、図２７には、ユーザと、適切な動作環境２７００で記述される基本コンピュータリソースとの間の媒介として動作するソフトウェアが示されている。このソフトウェアには、オペレーティングシステム２７２８が含まれる。このオペレーティングシステム２７２８は、ディスク記憶装置２７２４に格納することもでき、コンピュータシステム２７１２のリソースを制御し、かつ割り当てる機能を果たす。システムアプリケーション２７３０は、システムメモリ２７１６またはディスク記憶装置２７２４のいずれかに格納されるプログラムモジュール２７３２およびプログラムデータ２７３４を用いて、オペレーティングシステム２７２８が管理するリソースを利用する。当然のことながら、ここで開示して説明するコンポーネントおよび方法を、さまざまなオペレーティングシステムを用いて、またはさまざまなオペレーティングシステムを組み合わせて実装してもよい。
【０１０７】
ユーザは、コマンドまたは情報を、入力装置２７３６を用いてコンピュータ２７１２に入力する。この入力装置２７３６は、限定するわけではないが、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどを含む。これらの入力装置は、インタフェースポート２７３８を介して、システムバス２７１８経由で処理装置２７１４に接続する。このインタフェースポート２７３８は、例えば、シリアルポート、パラレルポート、ゲームポート、およびＵＳＢ（ユニバーサルシリアルバス）を含む。出力装置２７４０は、入力装置２７３６と同じ種類のポートの一部を用いる。従って、例えば、ＵＳＢポートを用いて、コンピュータ２７１２への入力を提供し、かつコンピュータ２７１２からの情報を出力装置２７４０に出力してもよい。出力アダプタ２７４２は、数ある出力装置２７４０の中には、特別なアダプタを必要とするモニタ、スピーカ、およびプリンタなどのような出力装置２７４０もあるということを図示するために提供されている。この出力アダプタ２７４２は、限定するわけではないが例として、出力装置２７４０とシステムバス２７１８との間の接続手段を提供するビデオカードおよびサウンドカードを含む。リモートコンピュータ２７４４など他の装置および／または装置システムも入出力機能を提供することに留意されたい。
【０１０８】
コンピュータ２７１２は、リモートコンピュータ２７４４などの１つまたは複数のリモートコンピュータへの論理接続を用いたネットワーク環境下で動作できる。このリモートコンピュータ２７４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピア装置、または他の一般的なネットワークノードなどでもよく、通常は、コンピュータ２７１２に関連して記述される要素の多くまたはすべてを含む。話を簡単にするために、メモリ記憶装置２７４６のみを、リモートコンピュータ２７４４とともに図示する。このリモートコンピュータ２７４４は、まずネットワークインタフェース２７４８を介して論理的に、次に通信接続２７５０を介して物理的にコンピュータ２７１２に接続される。ネットワークインタフェース２７４８は、ローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）などの有線および／または無線通信ネットワークを包含する。ＬＡＮの技術には、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、ＣＤＤＩ（Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、イーサネット(登録商標)、トークンリングなどが含まれる。一方、ＷＡＮの技術には、限定するわけではないが、ポイントツーポイントリンク、ＩＳＤＮ（総合サービスデジタル通信網）およびこの変形形態などの回路交換網、パケット交換ネットワーク、およびデジタル加入者回線が含まれる。
【０１０９】
通信接続２７５０は、ネットワークインタフェース２７４８をバス２７１８に接続するために用いるハードウェア／ソフトウェアのことを言う。図面上明確にするために、通信接続２７５０をコンピュータ２７１２内に示したが、コンピュータ２７１２の外部にあってもよい。ネットワークインタフェース２７４８に接続するために必要なハードウェア／ソフトウェアは、例示だけを目的として示すならば、標準電話級モデム、ケーブルモデム、およびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、およびイーサネット(登録商標)カードなどの内蔵技術および外付け技術を含む。
【０１１０】
以上説明してきた内容は、開示して説明したコンポーネントおよび方法に関する実施例を含むものである。当然ながら、コンポーネントまたは方法に関する考えうるすべての組合せを説明することは不可能であるが、当業者であれば、本発明に関するより多くの組合せや順序が可能であることは理解されよう。従って、ここで示した実施例は、添付の請求項の精神と範囲に入るすべての代替形態、修正形態、および変形形態を包含することを意図したものである。
【０１１１】
特に、上記のコンポーネント、装置、回路、システムなどが行うさまざまな機能に関して、そのようなコンポーネントを説明するために用いた用語（「手段（ｍｅａｎｓ）」に対する言及も含む）は、特に指示がなければ、たとえ本明細書で示した実施例の機能を行う開示した構造と構造的に等しくなくても、説明したコンポーネントの具体的な機能を行うあらゆるコンポーネント（例えば、機能的に等価なコンポーネント）に対応することを意図している。この点において、当然のことながら、システムばかりではなく、コンポーネントを構成するコンピュータ実行可能命令、または本明細書で開示して説明したさまざまな方法の動作および／またはイベントを行うコンピュータ実行可能命令を含むコンピュータ読取可能媒体も本発明には含まれる。
【０１１２】
なお、本発明の特定の特徴を、いくつかある実装のうちのただ１つに関して開示したとしても、この特徴は、必要に応じて、またあらゆる所定のアプリケーション、または特定のアプリケーションに有利であれば、他の実装の１つまたは複数の特徴と組み合わせてもよい。さらに、用語「含む（ｉｎｃｌｕｄｅ）」、「含めて（ｉｎｃｌｕｄｉｎｇ）」、およびその他の活用形が、詳細な説明または請求項で用いられる限りは、これらの用語は、用語「備えて（ｃｏｍｐｒｉｓｉｎｇ）」と同様の考え方で、包含的であることを意図したものである。
【図面の簡単な説明】
【０１１３】
【図１】ベースラインアーキテクチャ・モニタアプリケーションシステムのシステムブロック図である。
【図２】モニタコンポーネントのシステムブロック図である。
【図３】アーキテクチャマッピングシステムのシステムブロック図である。
【図４】パターンベースの開発環境のシステムブロック図である。
【図５】ユースケース駆動開発環境のシステムブロック図である。
【図６】文法機能を含む開発環境のシステムブロック図である。
【図７】メタモデル開発システムのシステムブロック図である。
【図８】マルチレベルテストシステムのシステムブロック図である。
【図９】メトリックベースのテストシステムのシステムブロック図である。
【図１０】セキュリティテストシステムのシステムブロック図である。
【図１１】ビューシステムのシステムブロック図である。
【図１２】変換システムのシステムブロック図である。
【図１３】使用可能な方法の処理を示すフロー図である。
【図１４】使用可能な方法の処理を示すフロー図である。
【図１５】使用可能な方法の処理を示すフロー図である。
【図１６】使用可能な方法の処理を示すフロー図である。
【図１７】方法の処理を示すフロー図である。
【図１８】方法の処理を示すフロー図である。
【図１９】方法の処理を示すフロー図である。
【図２０】方法の処理を示すフロー図である。
【図２１】グラフィカルユーザインタフェースの図である。
【図２２】グラフィカルユーザインタフェースの図である。
【図２３】グラフィカルユーザインタフェースの図である。
【図２４】グラフィカルユーザインタフェースの図である。
【図２５】グラフィカルユーザインタフェースの図である。
【図２６】例示的動作環境のシステムブロック図である。
【図２７】例示的コンピューティングプラットフォームのシステムブロック図である。
【符号の説明】
【０１１４】
２１１０、２３２０  視覚化ペイン
２１２０、２３３０、２４２０、２５２０  ユースケースペイン
２２２０  アーキテクチャ
２２３０  ユースケースに関する説明
２２４０  ドロップダウンメニュー
２４３０  図形描写
２５３０  表示ペイン
２５４０  追加のタブ
【図１】
2006216028.tif 000003
【図２】
2006216028.tif 000004
【図３】
2006216028.tif 000005
【図４】
2006216028.tif 000006
【図５】
2006216028.tif 000007
【図６】
2006216028.tif 000008
【図７】
2006216028.tif 000009
【図８】
2006216028.tif 000010
【図９】
2006216028.tif 000011
【図１０】
2006216028.tif 000012
【図１１】
2006216028.tif 000013
【図１２】
2006216028.tif 000014
【図１３】
2006216028.tif 000015
【図１４】
2006216028.tif 000016
【図１５】
2006216028.tif 000017
【図１６】
2006216028.tif 000018
【図１７】
2006216028.tif 000019
【図１８】
2006216028.tif 000020
【図１９】
2006216028.tif 000021
【図２０】
2006216028.tif 000022
【図２１】
2006216028.tif 000023
【図２２】
2006216028.tif 000024
【図２３】
2006216028.tif 000025
【図２４】
2006216028.tif 000026
【図２５】
2006216028.tif 000027
【図２６】
2006216028.tif 000028
【図２７】
2006216028.tif 000029