JP2006216028A - 分散システムのためのベースラインアーキテクチャ・モニタアプリケーション - Google Patents

分散システムのためのベースラインアーキテクチャ・モニタアプリケーション Download PDF

Info

Publication number
JP2006216028A
JP2006216028A JP2006010231A JP2006010231A JP2006216028A JP 2006216028 A JP2006216028 A JP 2006216028A JP 2006010231 A JP2006010231 A JP 2006010231A JP 2006010231 A JP2006010231 A JP 2006010231A JP 2006216028 A JP2006216028 A JP 2006216028A
Authority
JP
Japan
Prior art keywords
pattern
computing
components
component
computing system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006010231A
Other languages
English (en)
Inventor
David N Trowbridge
エヌ.トローブリッジ デビッド
Edward R Lafferty
アール.ラファティ エドワード
Howard G Cunningham
ジー.カニンガム ハワード
Jonathan J Wanagel
ジェイ.ワナゲル ジョナサン
Lawrence A Brader
エー.ブレイダー ローレンス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006216028A publication Critical patent/JP2006216028A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Image Generation (AREA)
  • Multi Processors (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】コンピューティングシステムの視覚表現を提示するシステムを提供すること。
【解決手段】このシステムは、構成可能な設計要素として用いることができるパターンのデータストアにアクセスし、コンピューティングシステムのコンポーネントをパターンにマッピングするマッチングエンジンを備える。このシステムは、マッチングエンジンがマッピングしたパターンのグラフィック表現を提示するビジュアライザをさらに備える。
【選択図】図1

Description

本発明は、分散システムのためのベースラインアーキテクチャ・モニタアプリケーションに関し、より詳細には、基礎となるアーキテクチャのグラフィック表現を提示する分散システムのためのベースラインアーキテクチャ・モニタアプリケーションに関する。
ビジネスコンピューティングシステム、特に分散システムの設計や実装はますます複雑な作業となっている。これらの作業に内在する複雑性に対処するために、高級プログラミング言語やパターンなどのさまざまなツールが開発されてきた。高級プログラミング言語によって、演算命令を人間が読める形式で作成および表示することが一様に可能となる。また、通常、パターンは、指定問題解決方式といわれ、典型的な設計原理を体系化する。このパターンは、高級プログラミング言語を用いて実装されるのが一般的である。
分散ビジネスシステムの開発者は、時間や費用などの多大なリソースをつぎ込んで開発に取り組んでいる。一般的に、システムの他のコンポーネントを構築する土台となるベースラインアーキテクチャの完成が、開発におけるマイルストーンとなる。このベースラインアーキテクチャを構築する主な目的は、開発リスクの軽減とそこに含まれるメカニズムの検証である。このようなシステムのアーキテクチャは、そのシステムを十分に記述するために、高級プログラミング言語やパターンに重い負担をかけ、その限界を超えてしまうことも多い。従って、システムやアーキテクチャコンポーネントを、適度なアブストラクションレベルで、かつ容易に理解できるタームで適切に表現できるシステムが求められている。
基本的な理解を可能にするために、以下に概要を簡単に示す。この概要は、詳しく全体について述べるものではない。これは、本発明の主要な要素または重要な要素を特定する事を意図するものではなく、発明の範囲を描くことを意図するものでもない。後に提示するより詳細な説明に対する前置きとして、簡単な形で一部の概念を提示することが、この概要の唯一の目的である。さらに、本明細書で用いる各セクションのタイトルは、単に便宜上設けられたものであって、決して限定するものとして捉えてはならない。
基礎となるアーキテクチャのグラフィック表現を提示するシステムおよび方法を提供する。このシステムおよび方法は、システムの多種多様なビューに、ソースコードを含む、基礎となるコンポーネントへのリンクを提供する。このビューは、パターンベースのレベルを含むさまざまなアブストラクションレベルで提示される。
パターンを構成可能な設計要素として用いるためのシステムおよび方法を提示する。このシステムおよび方法は、パターンをコンピューティングシステム用のビルディングブロックとして用いることによって、このシステムを設計し、構築する機能を提供する。
ここで開示して説明するコンポーネントおよび方法は、以下で十分に説明する特徴、ならびに特に請求項で指摘する特徴を備える。以下の説明および添付の図面に、いくつかの図示実施例を詳細に記載する。しかしながら、この実施例は、開示し、説明するコンポーネントおよび方法を実装できる多くの方法のごく一部を表したものにすぎない。開示して説明するコンポーネントおよび方法は、そのような実施例およびその実施例と等価なもの全てを含むように意図されている。他の実施例および実施例に対するわずかな修正形態も、以下の詳細な説明を図面と併用して考慮すれば明らかになろう。
本出願で用いられる「コンポーネント」、「システム」、「モジュール」などの用語は、ハードウェア、(例えば、実行時の)ソフトウェア、および/またはファームウェア等のコンピュータに関連したエンティティを述べるためのものである。例えば、コンポーネントは、プロセッサ上で実行するプロセス、プロセッサ、オブジェクト、実行ファイル、プログラム、および/またはコンピュータでもよい。また、サーバで実行するアプリケーション、およびサーバ自身をコンポーネントとしてもよい。1つまたは複数のコンポーネントが、1つのプロセス内に存在してもよい。コンポーネントは、1つのコンピュータに局在してもよいし、2台以上のコンピュータに分散してもよい。
ここで開示するコンポーネントおよび方法については、図面を参照して説明し、また、全ての図面を通して、同じ構成要素を指す場合には同じ参照番号を用いる。以下の記載では、開示する内容を完全に理解できるように、数多くの具体的な詳細を説明目的で記述する。しかし、当然のことながら、具体的な実装では、この数多くの具体的な詳細の一部を省略してもよいし、または他と組み合わせてもよい。他の実施例では、説明を容易にするために、特定の構造および装置をブロック図形式で示す。さらに、記載された具体的な実施例では、クライアント/サーバ・アーキテクチャに一致した専門用語を用いる場合もあり、またはクライアント/サーバの実装例である場合さえあるが、当業者には当然のことながら、ここで開示して説明するコンポーネントおよび方法の精神または範囲から逸脱することなく、クライアントとサーバの役割を入れ替えてもよいし、また、ここで開示して説明するコンポーネントおよび方法は、クライアント/サーバ・アーキテクチャに限定するものではなく、特に、ピア・ツー・ピア(P2P)アーキテクチャを含む他のアーキテクチャでの使用に容易に適用できる。さらに、本明細書で提示する具体的な実施例は、具体的なコンポーネントを含み、または参照するが、本明細書で開示して説明するコンポーネントおよび方法は、必ずしもその具体的なコンポーネントに限定されるわけではなく、他の状況で用いられてもよい。
モニタアプリケーションは、特にベースラインアーキテクチャを含むシステムアーキテクチャの記述を提示する際の支援のために、グラフィカルユーザインタフェース(GUI)コンポーネントを含んでいてもよい。本文書で用いられるベースラインアーキテクチャ、または簡単にアーキテクチャという用語は、同義的に用いられ、また、このベースラインアーキテクチャだけではなく、他のコンポーネントを備えたベースラインアーキテクチャを記述するためにも用いられる。モニタアプリケーションのGUIは、構成可能な設計要素として用いられているパターンを視覚化し、実行中のシステムを構築および図示する。また、モニタアプリケーションを用いて、システムのバイナリコードまたはソースコードよりも高いアブストラクションレベルで、システムのフローを描写する要素としてのパターンを提示することができる。
図1は、ベースラインアーキテクチャ・モニタアプリケーションシステム100のシステムブロック図である。このベースラインアーキテクチャ・モニタアプリケーションシステム100を用いて、その基礎をなすコンピューティングシステムのハードウェアコンポーネントおよびソフトウェアコンポーネントの両方を発見し、発見したシステムの視覚化を行って、さまざまなアブストラクションレベルでそのシステムを表現することができる。なお、このさまざまなアブストラクションレベルには、ハードウェアコンポーネント、ソフトウェアコンポーネント、またはその両方を表現できるパターンレベルのアブストラクションが含まれる。また、このベースラインアーキテクチャ・モニタアプリケーションシステム100は、モニタ110を含む。このモニタ110は、コンピューティングシステム120のコンポーネントにアクセスできる。このコンピューティングシステム120は、ハードウェアコンポーネントおよびソフトウェアコンポーネントのいずれも含む多種多様なコンポーネントを含むことができる。このハードウェアコンポーネントおよびソフトウェアコンポーネントは、広範囲に相互接続された機械やネットワークにわたって分散することができ、ビジネス環境では、通常はそうなっている。
モニタ110は、コンピューティングシステム120のコンポーネントを検証し、そのコンポーネントの存在と機能とを発見することができる。ハードウェアコンポーネントの場合、モニタ110は、バスや接続ポートなどの接続ハードウェアをポーリングすることで、モニタに直接接続されたコンポーネントの位置を見つけることができる。このポーリングの細部は、具体的な接続装置に適用可能な細部とプロトコルとに部分的に依存する。例えば、ユニバーサルシリアルバス(USB)接続を用いて接続する装置は、USBプロトコルが記述する技術とシステムとを用いて発見することができる。同様に、他の種類の接続方法を用いて接続する装置は、それぞれの接続方法が用いるプロトコルで記述される技術とシステムとを用いて発見することができる。
他のコンポーネントを介して相互接続されるリモートハードウェアコンポーネントの場合は、このリモートハードウェアコンポーネントを、モニタ110が直接ポーリングしてもよいし、またはしなくてもよい。リモートハードウェアコンポーネントを直接ポーリングできない場合は、モニタ110は、このモニタ110の代わりに、リモートハードウェアコンポーネントが存在するか否かを、他のハードウェアコンポーネントにポーリングさせることができる。このポーリングを行うハードウェアコンポーネントは、次に、位置が見つかったリモートハードウェアコンポーネント全てに関する情報を、モニタ110に伝える。ローカルハードウェアコンポーネントおよびリモートハードウェアコンポーネントを発見するために、他の方法を用いてもよい。
ソフトウェアコンポーネントを発見しようとしている場合は、モニタ110は、複数の手法を用いて、ソフトウェアアプリケーションの存在およびこのアプリケーションが提供するサービスを発見することができる。まず、モニタ110は、位置が見つかったハードウェアコンポーネントの種類とアイデンティティとを評価し、この位置が見つかったハードウェアコンポーネントが、あるソフトウェアを実行すると知られている、またはあるサービスを提供すると知られている種類であるか否かを判定する。例えば、発見したハードウェアコンポーネントがプリンタである場合は、このプリンタが、ある印刷管理機能とともに印刷サービスを提供すると仮定することができる。
発見したハードウェアコンポーネントがコンピュータである場合は、モニタ110は、そのコンピュータのオペレーティングシステムにリクエストを送信し、インストールされているアプリケーションの全て、または実行しているプロセスの全てのリストをモニタ110に提供するようにそのオペレーティングシステムに求める。次に、このモニタ110は、各アプリケーションまたは各プロセスにメッセージを送信し、この各アプリケーションまたは各プロセスが提供できるサービスについての記述を入手することができる。これに加えて、またはこの代わりに、このモニタ110は、アプリケーションまたはプロセスのリストを用いて、各アプリケーションまたはプロセスによって提供されることが分かっているサービスを調べることができる。アプリケーション、プロセス、またはサービスを発見するために、他の方法を用いてもよい。
モニタ110は、アーキテクチャデータストア130に接続できる。このアーキテクチャデータストア130は、1つまたは複数のアーキテクチャパターンを含むことができる。アーキテクチャパターンは、コンピューティングシステム120などのコンピューティングシステムのアーキテクチャレベルでのコンポーネントのアブストラクションである。アーキテクチャパターンを含むパターンは、4つの情報を特定することで記述できる。まず、このパターンに名前を与える。次に、このパターンを広く適用する問題の記述を与える。3番目に、パターンの特徴の定義を与える。そして、最後に、設計パターンの適用結果を与える。
設計パターン名は、特に、パターンの適用性と目的とに関する情報を含むかなりの量の情報を伝えることができるアブストラクションである。問題の記述は、設計パターンの適用に適切な環境および状態に関する情報を提供する。パターンの特徴は、さまざまな問題に適用するのに、このパターンを用いることが可能となるように調整することができるパターンの設計の一部として記述される。パターンの使用結果は、設計決定の派生的影響に関する情報を提供する。
多種多様な情報のデータ構造を用いて、設計パターンを表現することができる。このようなデータ構造の選択または設計は、概して、具体的な実装に依存した問題である。これに対応して、多種多様なデータストアを用いて、アーキテクチャデータストア130を実装することができる。この利用可能な考えうるデータストアとしては、データベース、テキストファイル、拡張マークアップ言語(XML)の仕様に従ってフォーマットされたファイルなどの構造化テキストファイル、オブジェクト、または他の適切なデータ記憶フォーマットがある。
モニタ110は、発見したハードウェアアーキテクチャまたはソフトウェアアーキテクチャに関する情報を、視覚化コンポーネント140に送信できる。この視覚化コンポーネント140は、モニタ110から情報を入手し、発見したコンポーネント間の接続を示すグラフィカルフォーマットでこの情報をユーザに提供することができる。実質的には、この視覚化コンポーネント140は、モニタ110から情報を入手し、その情報を用いてコンピューティングシステム120などのコンピューティングシステムの図面を描くことができる。但し、この図面は、ある選択したアブストラクションレベルでコンピューティングシステムを図示するために描かれる。
例えば、視覚化コンポーネント140は、コンピューティングシステム120のハードウェアコンポーネントに関するシステムブロック図を提示することができる。また、この視覚化コンポーネント140は、システム内で協力し合う相互接続されたパターンのシステムとしてコンピューティングシステム120を記述するパターン図を作成することもできる。さらに、この視覚化コンポーネント140は、コンピューティングシステム120を機能レベルで表現することができ、またコンピューティングシステム120の図面を、相互に関連して協力し合う機能またはサービスのシステムとして提供することができる。さらに、(パターンレベル以外のレベルの表現を含む)他のパターンベースの表現と共に、コンピューティングシステムを実装するために用いる基礎となる技術とは無関係なコンピューティングシステムデータのビューを提供することもできる。
図2は、モニタコンポーネント200のシステムブロック図である。このモニタコンポーネント200を用いて、分散コンピューティングシステムを含むコンピューティングシステムのハードウェアコンポーネントおよびソフトウェアコンポーネントを発見することができる。分散コンピューティングシステムは、コンピュータ、ネットワーク装置、記憶装置、および関連周辺装置、さらに他のコンポーネントを含むことができる。
モニタコンポーネント200は、ハードウェアポーリングモジュール210を含む。このハードウェアポーリングモジュール210は、モニタコンポーネントが実行しているハードウェアプラットフォームに直接接続されたハードウェアコンポーネントに関するクエリを行うことができる。この例では、モニタコンポーネント200に関し、処理装置を含むあるハードウェアプラットフォーム上で実行中のソフトウェアとして述べるが、モニタコンポーネント200、および本明細書で開示して説明する他のコンポーネントとは、ハードウェアとしても実装できることに留意されたい。
ハードウェアポーリングモジュール210は、他のコンポーネントに指示し、モニタコンポーネント200が実行しているハードウェアプラットフォームに、直接的に、または間接的に接続された新たなハードウェアコンポーネントに関するポーリングを行わせることもできる。このような指示は、モニタコンポーネント200が実行しているハードウェアから、複数のハードウェア層を隔てて位置するコンポーネントにルーティングすることができる。また、ハードウェアポーリングモジュール210は、USB、イーサネット(登録商標)、または他の標準的な接続を含む標準接続技術を用いる装置に適用できるポーリング技術などの標準的なポーリング技術を用いて、相互接続されたハードウェアコンポーネントを発見することができる。
モニタコンポーネント200は、サービスポーリングモジュール220も含む。このサービスポーリングモジュール220は、ハードウェアポーリングモジュール210によって検出されたコンポーネントが提供できる既存のサービスに関するクエリを行うことができる。この情報を、モニタコンポーネント200が用い、ハードウェアポーリングモジュール210およびサービスポーリングモジュール220が発見したハードウェアおよびソフトウェアのアブストラクションを提供する。このようなアブストラクションは、1つまたは複数のパターンを含むことができる。
サービスポーリングモジュール220は、さまざまな方法で既存のサービスを発見することができる。一部のコンポーネントと共に、コンポーネントにクエリを行い、コンポーネントが提供できるサービスのリストを入手することができる。例えば、サービスポーリングモジュール220は、コンポーネント上で実行するプロセスにメッセージを送信し、あらゆるスレッドおよびサブプロセスのアイデンティティとともに、プロセスのアイデンティティを発見する。プロセスのアイデンティティから、そのプロセスが提供できる既知のサービスリストを特定することができる。これに加えて、またはこの代わりに、このプロセスは、それ自身のサービスリストをサービスポーリングモジュール220に提供することができる。さらに、他の方法および手順を用いて、サービスの存在を発見することもできる。
このシステムにより、パターンを用いて、基礎となるコンピューティングシステムにビューを提供することが可能になる。また、このパターンによって、それまで不可能であったアブストラクションレベルで、実際の動作時にシステムを表現することが可能になる。さまざまなアブストラクションレベルで、ビューを介してナビゲートすることによって、ユーザは基礎となるシステムのアーキテクチャおよび機能に関するより完全な認識と理解を得ることができる。
図3は、アーキテクチャマッピングシステム300のシステムブロック図である。図1と共に説明した視覚化モジュール140などの視覚化モジュールの一部として、このアーキテクチャマッピングシステム300を用いることができる。また、このアーキテクチャマッピングシステム300を用いて、図1を参照して説明したコンピューティングシステム120等のシステムの、パターンと実際のコンポーネントとの差異を識別することができる。さらに、このアーキテクチャマッピングシステム300は、ソースコードをパターンと比較し、このソースコードのパターンベースのマップを生成することができる。
このアーキテクチャマッピングシステム300は、比較モジュール310を含む。この比較モジュール310は、コンポーネントデータストア320にアクセスできる。このコンポーネントデータストア320は、コンピューティングシステムのハードウェアコンポーネントおよびソフトウェアコンポーネントの表現を含むことができる。コンポーネントデータストア320に含まれるハードウェアコンポーネントおよびソフトウェアコンポーネントの表現は、必ずしもすでに実行しているシステム内で検出されたコンポーネントの表現である必要はないということに留意されたい。これに加えて、またはこの代わりに、ハードウェアコンポーネントおよびソフトウェアコンポーネントの表現は、コンピューティングシステム内に存在することが可能な正規化した、または標準コンポーネントの理想化した表現とすることもできる。このような表現の細目を決めるのは、主として、特定の実装またはコンポーネントの役目である。
比較モジュール310は、パターンデータストア330にもアクセスできる。このパターンデータストア330は、コンピューティングシステムのさまざまなコンポーネントを記述できるパターンの表現を含むことができる。コンポーネントデータストア320と同様に、このパターンデータストア330は、必ずしも現在のシステム内で検出されたコンポーネントの表現を含む必要はなく、これに加えて、またはこの代わりに、他のコンポーネントを記述するのに用いることができるパターンを含むこともできる。開発者が、ある特徴または機能を組み込むのに利用する一貫性のあるコンポーネントまたはコンポーネント群を各パターンが表現するように、パターンデータストア330内のパターンを正規化することができる。パターンの正規化は、一般化および特殊化構成を含むことができ、さらにサブシステム、プロセス、スレッド、またはオブジェクトレベルで、構成可能な設計要素としてこれらのパターンを用いることを可能にする集約化も含むことができる。
コードデータストア340にも、比較モジュール310はアクセスすることができる。このコードデータストア340は、パターンデータストア330に含まれるパターンにリンクできるソフトウェアコード、またはこのパターンが表現するソフトウェアコードを含むことができる。このコードデータストア340に含まれるコードは、C、C++、Java(登録商標)、または他の高級プログラミング言語等の高級プログラミング言語を用いて作成されるコンピュータコードが可能である。また、このコードデータストア340は、数あるなかで、コンパイルされたバイナリバージョンのコード、またはオブジェクトコード、または完全にコンパイルされたスタンドアロンのアプリケーションでさえ格納することができる。
マップジェネレータ350は、比較モジュール310とパターンデータストア330にアクセスし、図1を参照して上記で説明したコンピューティングシステム120などのコンピューティングシステムのマップを作成することができる。このマップは、このようなコンポーネント間の相互接続に関する表現を含む、コンピューティングシステムのコンポーネントの表現であってよい。このマップ表現を、特に、グラフ、有向グラフ、または連結リストなどのさまざまな方法で実装することができる。マップジェネレータ350の実装の詳細は、具体的なデータ構造またはコンピューティングシステムを表現するために選択された表現の種類に依存しうる。
レンダリングモジュール360は、マップジェネレータ350が作成したマップにアクセスして、マップのグラフィック表現を提供することができる。具体的には、アイコン、ピクチャ、または他のグラフィカルインジケータを、マップの1つまたは複数のコンポーネントに対応させることができる。このレンダリングモジュール360は、不適切なレベルの、またはあらかじめ選択したレベルのアブストラクションであるマップが表現するコンピューティングシステムのビューを表示する1組の相互に接続された、または相互に関連したグラフィカルインジケータとして、マップを表示させることができる。この実施例では、説明するアブストラクションレベルはパターンレベルである。しかし、機能レベル、または本明細書で説明する他のあらゆるレベル等、他のアブストラクションレベルを用いてもよい。
図4は、パターンベースの開発環境400のシステムブロック図である。このパターンベースの開発環境400を用いて、パターンを開発環境における構成可能な設計要素として取り扱うことによって、ソフトウェアおよびシステムを開発することができる。パターンを構成可能な要素として取り扱うことによって、システム開発者は、パターングループを集め、整理し、さらにアセンブルし、分散コンピューティングシステムを含む頑強なコンピューティングシステムを作成することができる。
パターンベースの開発環境400は、パターンデータストア410を含む。このパターンデータストア410は、システム開発時のビルディングブロックとして用いることができる設計パターンの表現を含む。パターンデータストアに含まれるパターンは、コンポーネントレスポンシビリティコラボレータ(component responsibility collaborator:CRC)設計原理と関連付けられた具体化したパターンでもよい。この具体化されたパターンは、パターンベースの抽象構文グラフ内でコラボレータ(collaborator)を探すために用いることができる実行可能なCRCインタフェースを含むことができる。責任テスト駆動設計(responsibility test−driven design)を用いてシステム設計の責任を検証しながら、この具体化したパターンを用いることができる。
コードデータストア420は、機械読取可能コンピュータコードを含むことができる。この機械読取可能コンピュータコードを、パターンのうちの1つまたは複数に関連付けることができ、パターンデータストア410に含むことができる。図3とともに説明したコードデータストア340と同様に、このコードデータストア420は、さまざまな種類の中でも特に、高級プログラミング言語のうちの機械読取可能コード、オブジェクトコード、バイナリコード、またはスタンドアロンのアプリケーションを含むことができる。パターンデータストア410およびコードデータストア420のどちらも、データベース、オブジェクト、テキストファイル、構造化テキストファイル、または他の方法を含む、あらゆる適切な方法で実装することができる。
コンポーザ430は、パターンデータストア410およびコードデータストア420にアクセスできる。このコンポーザ430は、パターンデータストア410からのパターン、およびコードデータストア420からこのパターンに関連付けられたコードを操作して結合して、統合した表現、またはコードブロックをそれぞれ作成する。コンポーザ430を実装することに関わる細部は、パターンデータストア410のパターンに関して選択した特定の表現フォーマット、およびコードデータストア420に含まれるコードに関して選択した種類や表現などの要因に依存する。一般に、コンポーザ430は、パターンデータストア410のパターンに関連付けられたデータをコードデータストア420から入手し、そのコードを、他のパターンに関連する他のコードと統合することができる。
開発環境440は、開発者が、代表するシステムに複数のパターンを統合するためのプラットフォームの機能を果たすことができる。この開発環境440は、コンパイラ、文法および構文チェッカ、さらに他の代表的なソフトウェア開発ツールなどのコンポーネントを含むことができる。また、この開発環境440は、論理的な方法で互いに正しく接続されたシステムに対して、ビルディングブロックとして用いられるパターンを保証することができる。例えば、開発環境440は、相互にインタフェースで直接接続を行うことができないパターンに開発者がリンクしたか否かを調べて、開発者が修正措置を取ることが可能な状況を識別することができる。
ユーザインタフェース450は、開発環境440と対話し、開発環境440に便利で有用なインタフェースを提供することができる。このユーザインタフェース450は、コマンドラインまたは他のテキスト駆動インタフェースなどの人間とコンピュータとの間のあらゆるインタフェースであってよい。グラフィカルユーザインタフェース(GUI)は、関連するグラフィカルインジケータを有するパターンを取り扱う際に、とりわけ有用である。この例では、開発者は、パターンベースの開発環境400のユーザインタフェース450を用いて、システムを構築するためにパターンのグラフィック描写を操作することができる。例えば、開発者は、マウスまたは他のポインティングデバイスを用いて、パターンのグラフィカルインジケータを、そのようなインジケータ群を含むパレットからつかみ、構成ペインにドラッグして、ペイン内にドロップし、構築中のシステムの一部としてのパターンを用いることができる。
図5は、ユースケース駆動(use case−driven)開発環境500のシステムブロック図である。このユースケース駆動開発環境500を用いて、ユースケースが定義する機能レベルでオブジェクトを操作することによって、コンピューティングシステムを作成することができる。開発者は、システム内に含むユースケースの表現を選択することによってシステムを構築できるため、要求書などのシステム設計文書によって要求された機能性が、間違いなく完成したシステムに含まれるようにすることができる。
ユースケースは、ユーザがどのようにコンピューティングシステムと対話するかに関する記述である。この記述は、ユーザが行うタスクまたは機能に関する情報、ユーザが入手して作り出し、または変更できるシステム情報の定義または仕様、ユーザが外部環境での変更に関してシステムに通知するか否かに関するインジケータ、ユーザがシステムから入手を望む情報の定義または仕様、および予想される変更に関してユーザに通知する必要があるか否かに関する仕様を含むことができる。ユースケースの記述は、さまざまなデータフォーマットで表現することが可能であり、主として実装が決めるものである。
ユースケースの表現を、ユースケースデータストア510に格納することができる。このユースケースデータストア510は、コードデータストア520に関連付けることができる。このコードデータストア520は、数ある種類の中で、高級プログラミング言語のうちの機械読取可能コード、オブジェクトコード、バイナリコード、またはスタンドアロンのアプリケーションを含むことができる。コードデータストア520にある個別のコードは、ユースケースデータストア510にあるユースケースの表現に関連付けることができる。
ユースケース駆動開発環境500は、コンポーザ530も含む。このコンポーザ530は、ユースケースデータストア510およびコードデータストア520にアクセスし、ユースケースおよびこのユースケースに関連付けられたコードを操作して結合し、それぞれ統合した表現、またはコードブロックを作成することができる。また、コンポーザ530を実装することに関する細部は、主として、ユースケースデータストア510のユースケースに関して選ばれた具体的な表現フォーマット、およびコードデータストア520にあるコンテンツのフォーマットなどの要因に依存する。通常、コンポーザ530は、ユースケースデータストア510のユースケースに関連付けられたコードを、コードデータストア520から入手することができる。次に、このコンポーザ530は、コードデータストア520から入手したコードを、ユースケースに関連する他のコードセグメントと統合し、統合したブロックを作成することができる。
開発環境540は、複数のユースケースを組み合わせて結合力のあるシステムに統合するためのプラットフォームを開発者に提供することができる。また、この開発環境540は、コンパイラ、文法チェッカ、構文チェッカ、および他の代表的なソフトウェア開発ツールなどのサブコンポーネントを含むことができる。さらに、この開発環境540は、開発者が統合システム構築に使用中のユースケースが、開発者の指定した方法で互いに正確にリンクできているか否かを判定することもできる。例えば、開発環境540は、2つの連結したユースケースが互いに直接リンクできるか否か、または1つまたは複数の中間ユースケースを、元の2つのユースケースの間に挟む必要があるか、または挟まなければならないかを確認することができる。
ユースケース駆動開発環境500は、開発者によるシステムへのアクセスを提供するユーザインタフェース550を含む。このユーザインタフェース550は、コマンドライン駆動インタフェースまたは他のテキスト駆動インタフェースを含む、人間とコンピュータとの間の適切なインタフェースでもよい。グラフィカルユーザインタフェースは、関連するグラフィカルインジケータまたは識別子を有するユースケースを開発者が操作しているときには、とりわけ有用である。そのような状況では、開発者は、マウスまたは他のポインティングデバイスを用いて、ユースケースに関連付けられたグラフィカルインジケータを選択し、そのグラフィカルインジケータを構成ペインにドラッグすることができる。また、開発者は、ユースケースに関連付けられたグラフィカルインジケータを、構成ペインにドラッグ・アンド・ドロップし、このグラフィカルインジケータを互いに連結して、完全なシステムを設計、構築することによって、システムを構築することができる。
図6は、文法機能を含む開発環境600のシステムブロック図である。この開発環境600は、パターンデータストア610を含む。このパターンデータストア610は、システム設計およびシステム構築のための構成可能なビルディングブロックとして用いることができる正規化したパターンを含む。確立した規則に従ってシステムを構築するために、パターン自身を用いることができるように、上記のパターン群を解析して配置し、ある種の高級コンピューティング言語を作ることができる。そのような方法で構築された高級コンピューティング言語は、その言語に関する構築規則を実施するために用いることができる文法と構文とを有することができる。この文法は、入力にパターンを使用する事ができる文脈自由文法であってよい。この言語は、実行可能な要素からなる構造に翻訳することができる。
例えば、パターンデータストア610は、A、B、およびCという指定された3つのパターンを含むことができる。このA、B、およびCを含む言語の規則は、Aは決してCのすぐ前にくることはできない、という場合もある。文法モジュール620は、開発者が作成した表現の構文解析を行い、この規則への遵守を保証することができる。また、この文法モジュール620は、パターンデータストア610にアクセスできる設計モジュール630にアクセスすることができる。文法モジュール620からの入力を用いて、設計モジュール630がパターンを互いにリンクさせることができ、このリンクが、言語の文法規則に必ず従うようにする。リンクしたパターンは、コンピューティングシステム全体を形成する実行可能な要素である。
パターンは、コンピューティングシステムの開発におけるある知識の状態を表す。この知識を、協力し合う要素に基づくシステムの設計にさまざまな方法で適用することができる。その1つは、パターンを要素として含む抽象構文木を構築することによる方法である。テンプレート法を用いてこの抽象構文木の各ノードにアクセスし、またこの各ノードを展開して、抽象構文木を抽象構文グラフに変換することができる。次に、この抽象構文グラフを、本明細書で説明する方法を含むさまざまな方法で用いることができる。
図7は、メタモデル開発システム700のシステムブロック図である。このメタモデル開発システム700を、さまざまなシステム開発活動時に用いて、パターンベースのコンピューティングシステムの作成を支援することができる。具体的には、このメタモデル開発システム700は、システムの完全性および正確性のために、評価およびテストを受けることが可能なコンピューティングシステムのメタモデルを作成する事ができる。
このメタモデル開発システム700は、パターンデータストア710を含む。このパターンデータストア710は、システム構築において構成可能な設計要素として用いることが可能な一群のパターンを含むことができる。メタモデルクリエータ720が、パターンデータストア710のパターンにアクセスし、このパターンに関する情報を開発環境730に供給することができる。この開発環境730は、開発者がパターンデータストア710からのパターンを操作して、コンピューティングシステムを設計し、および構築することが可能なプラットフォームを提供できる。また、メタモデルクリエータは、開発環境730からの設計をその設計に含まれるパターンから生じる情報と共に用いて、コンピューティングシステムのメタモデルを作成することができる。このメタモデルは、次に、概念テストまたは視覚化の基礎としての機能を果たすことができる。
図8は、マルチレベルテストシステム800のシステムブロック図である。このマルチレベルテストシステム800を用いて、コンピューティングシステムを、設計プロセス時、および実装後にさまざまなレベルでテストすることができる。このテストは、設計プロセス時の設計の欠陥またはエラーの発生を識別する際に、または発生が生じないようにする際に役立つ。新たに設計したコンピューティングシステムを配備する前に、実装エラーの識別および修正を行うこともできる。
マルチレベルテストシステム800は、パターンデータストア810を含む。このパターンデータストア810は、コンピューティングシステムに対する構成可能なビルディングブロックとして用いることができる一群の正規化パターンを含む。テストモジュール820は、パターンデータストア810のパターンを用いて、システムコンポーネントの評価、および設計エラーまたは実装エラーの識別を行うことができる。また、このテストモジュール820は、テストスクリプトを実行して、各アクセスレベルでコンポーネントを介して実行した際のスレッドを追跡できる。テストスクリプトの実行時における実行エラーを記録してもよいし、または後に修正を行うために識別してもよい。
さらに、このテストモジュール820は、アーキテクチャレベル830にアクセスできる。このアーキテクチャレベル830は、アーキテクチャレベルでのシステム表現、またはコンピューティングシステムを表現するアーキテクチャレベルでのビューを含む。設計レベル840は、設計レベルでのシステム表現、またはコンピューティングシステムを表現する設計レベルでのビューを含む。実装レベルでのコンピューティングシステムの表現、またはコンピューティングシステムを表現する実装レベルでのビューは、実装レベル850に含まれる。
テストモジュール820は、アーキテクチャレベル830に加えて、設計レベル840と実装レベル850とにアクセスできる。テストモジュール820は、設計レベルまたは実装レベルで実行されるべきテストスクリプト設計を実行し、設計エラーまたは実装エラーを識別することができる。このようなマルチレベルテストは、新たに設計したシステムを実際に配備する前に、より完璧なシステムを目的として、このシステムのさまざまな側面を徹底的にテストすることができる。開発プロセス時のさまざまなマイルストーンでこのテストを実行することができる、また、開発中に、並行してこのテストを実行し、1つのレベルでの設計活動が他のレベルで予期せぬ結果をもたらさないようにすることもできる。
図9は、メトリックベースのテストシステム900のシステムブロック図である。このメトリックベースのテストシステム900を用いて、コンピューティングシステムの動作上のさまざまな態様をテストすることができる。このテスト機能は、新たに設計したシステムに伴う動作上の問題を識別するのに特に有用で、その結果、その問題を修正することができる。これに加えて、またはこの代わりに、メトリックベースのテストシステム900を用いて、システムコンポーネントを識別するための動作上のメトリックスを入手し、それに基づいて、そのシステムコンポーネントを最適化または改良することができる。
メトリックベースのテストシステム900は、メトリックモジュール910を含む。このメトリックモジュール910は、コンピューティングシステム920のコンポーネントにアクセスでき、コンポーネントのさまざまな動作パラメータを具体的に測定する。例えば、メトリックモジュール910は、データベースにアクセスし、クエリへの応答時間を測定し、そのデータベースに対して実行するクエリへの平均応答時間を求めることができる。適切なメトリックスの選択と測定とは、実装に依存する。
パターンデータストア930は、構成可能な設計要素として用いることができるパターンに関する情報を、メトリックモジュール910に供給することができる。このメトリックモジュール910は、その情報を用いて、測定したメトリックスのグループ化または集約を行い、そのメトリックスを特定のパターンに関連付けることができる。関連付けられたメトリックスは、あるパターンレベルで提示されて、コンピューティングシステムのパターンベースのコンポーネントに対する性能インジケータを与えることができる。
テストモジュール940は、パターンレベルのメトリックスへのアクセス、およびそのメトリックスの解析を行って、潜在的な実装問題に関する正確で深い理解を提供する事ができる。例えば、このテストモジュール940は、メトリックモジュール910からの測定したメトリックスを、そのコンポーネントに対する期待値または理想値と比較することができる。この比較は、正常値または期待値の範囲を比較する際に用いるような確率ベースの比較であってもよいし、または、他の確率ベースの比較を用いてパターンベースのコンポーネントの性能を評価してもよい。期待範囲外のメトリック値は、ソフトウェアまたはハードウェアレベルでのパターンの実装に伴う潜在的な問題を示している可能性がある。ソフトウェアレベルでは、性能指数が低ければ、コーディングエラーまたはプロセスアルゴリズムを改良する必要性を示している可能性がある。また、ハードウェアレベルでは、性能指数が低ければ、実装に用いられているハードウェアベースのコンピューティングリソースが不十分であることを示している可能性がある。性能メトリックスが、期待される範囲よりも高ければ、最適化がうまく行われた、予期せぬ効率が得られた、またはコンピューティングリソースが多すぎるということを示す。他にも原因や影響が考えられ、それは当業者には明らかであろう。
図10は、セキュリティテストシステム1000のシステムブロック図である。このセキュリティテストシステム1000は、新たに設計したシステムに存在するセキュリティ上の欠陥を識別し、除去するための基礎を提供することができる。セキュリティテストは、設計段階および実装の初期段階で特に有効であり得る。セキュリティを念頭において設計されたシステムは、実装後のテスト、およびセキュリティ問題に対処するためにパッチを当てることのみに依存する他のシステムよりも、セキュリティ上の欠陥は少ない可能性がある。
セキュリティテストシステム1000は、パターンデータストア1010を含む。このパターンデータストア1010は、構成可能な設計要素として用いることができる一群の正規化パターンを含む。セキュリティモジュール1020が、基礎となるコンピューティングシステム1030にアクセスし、このコンピューティングシステム1030を構築するのに用いられるパターンデータストア1010内のパターンを識別することができる。この識別されたパターンは、既知の、または存在しうるセキュリティ上の欠陥を詳しく調べるセキュリティテストの対象となり得る。
例えば、パターンは、指定データの入力を求めることができる。ある入力に伴う一般的なセキュリティ上の欠陥は、バッファオーバフローを許す無限のバッファであり、その結果、開発者が意図しない勝手なコードを実行するコンピューティングシステムとなる。セキュリティモジュール1020は、パターンの使用に伴う潜在的な問題を識別し、任意の実行データでバッファのオーバフローを試みることによって問題の存在をテストすることができる。識別されたパターンに伴う潜在的な問題の各々に対して、セキュリティテストのシナリオを作成してもよい。
セキュリティモジュール1020は、試みた結果をテストモジュール1040に送信できる。このテストモジュール1040は、セキュリティ情報を、他のテスト情報と統合して、開発者に結果を提示することもできる。このようなセキュリティテストは、実装していない状態のコンピューティングシステムで行われてもよいし、同様に、すでに実装されて実行中のシステムにおいて行われてもよいことは留意されるべきである。
図11は、ビューシステム1100のシステムブロック図である。このビューシステム1100を用いて、コンピューティングシステムのさまざまな態様を、開発者またはユーザに提示することができる。また、このビューシステム1100は、ビューモジュール1110を含む。このビューモジュール1110は、分散コンピューティングシステム1120のさまざまなコンポーネントの表現にアクセスできる。具体的には、このビューモジュール1110は、分散コンピューティングシステム1120のコンポーネントのアーキテクチャレベルでの表現を含むアーキテクチャデータストア1130にアクセスすることができる。サービスデータストア1140は、分散コンピューティングシステム1120が提供するサービスの表現を含むことができる。また、パターンデータストア1150は、分散コンピューティングシステム1120を構成するパターンの表現を含むことができる。
ビューモジュール1110では、これらのデータストアにアクセスし、ユーザに対する分散コンピューティングシステム1120全体の表現方法に関する情報を入手できる。ユーザは、特に、アーキテクチャビュー、サービスビュー、またはパターンビューなどのさまざまなビューの中から選択し、分散コンピューティングシステム1120の設計、構築、またはオペレーションに関するさらに正確で深い知識を得る事ができる。このようなビューを作成するために、ビューモジュール1110は、分散コンピューティングシステム1120内に含まれるさまざまなデータストアから利用可能なコンポーネントを、そのコンポーネントのグラフィカルインジケータにマッピングすることができる。そして、ビューモジュール1110は、このグラフィカルインジケータを、分散コンピューティングシステム1120のビューとしてユーザに提示できる。
図12は、変換システム1200のシステムブロック図である。この変換システム1200を用いて、システムの1つの表現から、そのシステムのアーキテクチャのベースラインに変換することができる。また、この変換システム1200は、ユースケースマッピングデータストア1210を含む。このユースケースマッピングデータストア1210は、コンピューティングシステムを設計するのに用いられるユースケースから、そのシステムを実装するのに用いることができるアーキテクチャ上のコンポーネントへのいくつかのマッピングを含むことができる。また、サービスマッピングデータストア1220は、サービスから、このサービスを提供できるアーキテクチャのコンポーネントへのマッピングを含むことができる。さらに、パターンマッピングデータストア1230は、パターンから、このパターンを実装するために用いることができるコンポーネントへのマッピングを含むことができる。
変換モジュール1240は、上記のマッピングデータストアにアクセスし、マッピングをアーキテクチャコンポーネントに変換できる。また、この変換モジュール1240は、一群のアーキテクチャコンポーネントを集約してアセンブルし、ベースラインアーキテクチャ1250を作成することができる。このベースラインアーキテクチャ1250は、完成したシステムの最初の実装を表現する。必要に応じて、このアーキテクチャを、検討し、テストし、修正し、または拡張してもよい。
本明細書で開示して説明するコンポーネントは、例えば、検出タスクまたは識別タスクと関連して、さまざまなタスクを実行するために人工知能ベースのさまざまなスキームを用いることができる。例えば、ソースコードレベルの機能のパターンへのマッピングは、自動分類器システムおよびプロセスを用いる事によって容易にすることができる。さらに、自動分類器システムを用いて、ハードウェアコンポーネントまたはソフトウェアコンポーネントを、ユースケースまたはパターンの一部として識別することができる。
分類器は、入力属性ベクトルX=(x1,x2,x3,x4,・・・xn)を、あるクラスにその入力が属するという確からしさにマッピングする関数、つまり、f(X)=confidence(class)である。このような分類は、確率的および/または統計的な(たとえば、解析ユーティリティやコストを考慮に入れている)解析を用いて、ユーザが自動的に行われることを望むアクションを予知し、または推測することができる。本明細書で説明するシステムの場合は、分類器は、パターン照合、および確率的比較または評価を含む機能において特に有用となる。
サポートベクトルマシン(SVM)は、利用可能な分類器の例である。このSVMは、考えうる入力空間において、トリガとなる閾値を、ノントリガイベントから分けようとする超曲面を探し出すことによって動作する。直感的に、これは、トレーニングデータに近いが同一ではないテストデータのために分類を修正する。他の方向性および非方向性のモデル分類手法には、例えば、ナイーブベイズ、ベイジアンネットワーク、決定ツリー、および独立したさまざまなパターンを提供する確率的分類モデルが含まれる。本明細書で用いられる分類は、優先的なモデルを開発するために利用する統計的回帰も含む。
本明細書から容易にわかるように、本明細書で開示して説明するコンポーネントは、(例えば、一般的なトレーニングデータによって)明示的にトレーニングされた分類器、さらに(例えば、ユーザの振る舞いを観察したり、外部の情報を受け取ったりすることで)暗示的にトレーニングされた分類器を用いることができる。例えば、SVMは、分類器コンストラクタおよび機能選択モジュール内での学習フェーズまたはトレーニングフェーズによって構成される。このように、分類器を用いて、機能が正しくパターンにマッピングされたか否かの判定を含むが、それに限定される事のない、数多くの機能を自動的に行うことができる。
図13〜図20を参照すると、フロー図が提示されている。説明を簡単にするために、本明細書で示す1つまたは複数の方法は、例えばフロー図の形式で示され、一連の動作として説明されるが、当然のことながら、ここで開示して説明するコンポーネントおよび方法は、本明細書で示して説明する順番とは異なる順番で一部の動作を行ってもよいし、他の動作と同時に行ってもよいし、あるいはその両方を行ってもよいように、動作の順番によって限定されるものではない。例えば、当業者には当然のことながら、状態図のように、一連の相関する状態またはイベントとして方法を表す場合もある。さらに、図示したすべての行為が、方法を実装するために必須であるというわけではない。
図13は、本明細書で開示して説明するコンポーネントとともに用いることができる方法1300の処理を描いたフロー図である。この方法1300を用いて、コンピューティングシステムの視覚化を実現することができる。次に、この視覚化を、コンピューティングシステムをより深く解析するために用いることができる。
この方法1300の処理は、STARTブロック1310で開始し、処理ブロック1320に続く。この処理ブロック1320では、コンピューティングシステムのハードウェアコンポーネントを詳しく調べる。この処理は、次の処理ブロック1330に続き、ここで、コンピューティングシステムにあるソフトウェアアプリケーションを発見する。処理ブロック1340では、コンピューティングシステムの各コンポーネントからの、利用可能なソフトウェアサービスまたは他のサービスを発見する。
処理は、処理ボックス1350へと進み、ここで、コンピューティングコンポーネント間の相互接続をマッピングする。処理ブロック1360では、コンピューティングコンポーネントのマッピングで発見したパターンを、テンプレートパターンにマッチさせる。このマッチングは、正規化パターンまたは理想パターンに対する近似フィッティングまたは最適フィッティングとして行うことができる。処理ブロック1370では、パターンマップを作成する。さらに、処理ブロック1380では、このパターンマップを観察するためにレンダリングする。最後に、この処理は、ENDブロック1390で終了する。
図14は、本発明の別の態様に従って用いることができる方法1400の処理を描いたフロー図である。この方法1400を用いて、コンピューティングシステムのコンポーネントを識別または発見することができる。このコンポーネントは、具体的には、ハードウェア、ソフトウェア、サービス、またはコンピューティングシステムの他の識別可能な特徴を含むことができる。この方法によって生成した情報を、以降の設計活動または開発活動に用いることができる。
この方法1400の実行は、STARTブロック1410で開始し、処理ブロック1420に続く。この処理ブロック1420では、ポーリングを行い、システム内の付属ハードウエアコンポーネント全ての位置を探す。このポーリングについては、位置が見つかったハードウェアコンポーネントに、そのすでに位置が見つかったコンポーネントに接続されている追加のコンポーネントに関してポーリングを行わせることによって、再帰的に実行することが可能である。処理は、次の処理ブロック1430に続き、ここで、パターンを用いたハードウェアのグラフを生成し、ポーリングの際に発見したハードウェアコンポーネントを表現する。処理ブロック1440では、位置が見つかった各ハードウェアにあるソフトウェアまたはアプリケーションのリストを入手する。
各ソフトウェアまたはアプリケーションが提供できるサービスを、処理ブロック1450で識別する。この識別は、ソフトウェアまたはアプリケーションに直接クエリを実行して行ってもよいし、ソフトウェアまたはアプリケーションが提供することが分かっているサービスリストにアクセスして行ってもよいし、この2つの方法を組み合わせて行ってもよいし、または全く別の適当な方法で行ってもよい。処理ブロック1460では、パターンをグラフの基礎として用いて、サービスのグラフを生成する。処理ブロック1470では、ユーザのために、作成したグラフの視覚化をレンダリングする。この処理は、ENDブロック1480で終了する。
図15は、本明細書で開示して説明するコンポーネントとともに用いることができる方法1500のフロー図である。この方法1500は、コンピューティングシステムを構築する際に構成可能な設計要素として用いるパターンを参照して、ソフトウェアコードを生成またはアセンブルするためのハイレベルな処理フローである。このソフトウェアコードのアセンブリは、エンドユーザからは見えないプロセスとして行われる場合もある。
方法1500の実行は、STARTブロック1510で開始する。処理は、処理ブロック1520へと続き、ここで、設計したシステムのコンポーネントに関するコンポーネントのグラフを入手する。コンポーネントは、ハードウェア、ソフトウェア、サービス、または他の識別可能なコンポーネントを含むことができる。このコンポーネントのグラフを、処理ブロック1530でパターンと比較する。この比較については、確率的に行ってもよいし、最適フィッティング手順として行ってもよい。処理ブロック1540では、コンポーネントのグラフまたはサブグラフとマッチするパターンを選択する。
処理は、処理ブロック1550へと続き、ここで、パターンのグラフを作成する。このパターンのグラフは、設計しているコンピューティングシステムのパターンレベルでの表現である。処理ブロック1560では、パターンのグラフのパターンにリンクするコードを、このパターンのグラフに従ってアセンブルする。処理は、ENDブロック1570で終了する。
図16は、本明細書で開示して説明するコンポーネントとともに用いることができる方法1600のフロー図である。この方法1600を用いて、正規化設計パターンを作成することができる。そして、この正規化設計パターンを、システム設計の構成可能な設計要素として用いることができる。
この方法1600の処理は、開始ブロック1610で開始する。処理は、処理ブロック1620へと続き、ここで、設計パターンを具象化する。この具象化は、データ構造、またはコンピュータが実装する設計パターンに関する他の表現の作成を含むことができる。処理ブロック1630では、実行可能なコンポーネントレスポンシビリティコラボレータ(CRC)インタフェースを作成し、設計パターンに適用する。
処理は、処理ブロック1640へと続き、ここでコンポーネントレスポンシビリティコラボレータを用いてコラボレータを探す。システムデザインの責任を、処理ブロック1650で検証する。この方法1600の処理は、ENDブロック1660で終了する。
図17は、本明細書で開示して説明するコンポーネントとともに用いることができる方法1700のフロー図である。この方法1700を用いて、パターンから組版言語(composition language)を作成することができる。そして、この言語を、パターンベースのコンピューティングシステムを構築するための一部として用いることができる。
この方法1700の処理は、STARTブロック1710で開始する。処理ブロック1720では、パターン記述子を作成する。この記述子は、広範囲の形式をとることができる。この例では、記述子を、組版言語を形成することができるアルファベットとして用いることができる。処理は、処理ブロック1730へと続き、ここで、パターン記述子をベースラインのアルファベットとして確立する。また、処理ブロック1740では、このアルファベットを用いる文法を確立する。さらに、処理ブロック1750では、言語構文を確立する。この処理は、ENDブロック1760で終了する。
図18は、本明細書で開示して説明するコンポーネントとともに用いることができる方法1800のフロー図である。この方法1800を用いて、設計したパターンベースのコンピューティングシステムを、複数のレベルでテストすることができる。このテストで、アーキテクチャの配置、ソフトウェア設計、または実装における欠陥を、潜在的に識別することができる。方法1800の処理は、開始ブロック1810で開始する。この処理は、処理ブロック1820へと続き、ここで、構成可能な設計要素として用いることができるパターンにアクセスする。処理ブロック1830では、アーキテクチャレベルで、一連のテストスクリプトをコンピューティングシステムの表現において実行する。このテストスクリプトは、アーキテクチャ上のコンポーネント間の考えうる全ての相互接続を用いるように設計される。
処理ブロック1840では、設計レベルで、テストスクリプトをコンピューティングシステムの表現において実行することによって処理は継続する。アーキテクチャレベルで実行するテストスクリプトと同様に、設計レベルのテストスクリプトは、設計レベルでの全ての接続を潜在的に検証する。処理は、処理ブロック1850で継続し、ここでは、コンピューティングシステムの実装レベルにおいて、テストスクリプトを実行する。このテストスクリプトは、実際の実装上の問題を修正することができるように、この問題を識別することができる。この方法1800は、ENDブロック1860で終了する。
図19は、本明細書で開示して説明するコンポーネントとともに用いることができる方法1900のフロー図である。この方法1900を用いて、実装したシステムの性能面を評価できる。この性能評価または性能メトリックスを用いて、最適化を行うために注目すべき実装上の課題または領域を識別することができる。
この方法1900の処理は、開始ブロック1910で開始し、処理ブロック1920へと続く。この処理ブロック1920では、コンピューティングシステムの性能メトリックスを入手する。この入手した性能メトリックスを、処理ブロック1930で、構成可能な設計要素として用いることができるパターンにマッチさせる。処理ブロック1940では、入手した性能メトリックスを、期待する性能メトリックス、または理想的な性能メトリックスに照らして評価する。この評価は、あるベンチマーク手順ベース確率、またはベンチマーク手順に従った確率としてもよい。処理は、処理ブロック1950で継続し、ここでは、各パターンに関連付けられたメトリックスを表示する。この処理は、ENDブロック1960で終了する。
図20は、本明細書で開示して説明するコンポーネントとともに用いることができる方法2000のフロー図である。この方法2000を用いて、パターンベースのコンピューティングシステムに対する全体的なセキュリティ状態を評価できる。次に、この評価を用いて、セキュリティ上の欠陥を修正し、コンピューティングシステムの全体的なセキュリティを向上させることができる。
この方法2000の処理は、開始ブロック2010で開始する。処理は、処理ブロック2020へと続き、ここで認識したセキュリティ上の課題を、構成可能な設計要素として用いることができるパターンにマッチさせる。また、処理ブロック2030では、そのパターン上で、セキュリティテストスクリプトを実行する。処理ブロック2040で、セキュリティ上の欠陥を確認する。さらに、このセキュリティ上の欠陥を、処理ブロック2050で、それぞれのパターンに関連付けて表示する。この処理は、ENDブロック2060で終了する。
図21は、アーキテクチャの視覚化に関するある態様を、モニタプログラムを介して描写するGUI2100の図である。ここで提示する実施例は、分かりやすくするために、Global Bankとよぶ銀行業務アプリケーションに基づいたものである。このGUI2100は、視覚化ペイン2110とユースケースペイン2120とを含む。また、視覚化ペイン2110は、複数のタブ2130を含む。例えば、マウス駆動ポインタでクリックすることなどによって各タブ2130をアクティブにし、異なる機能性を提供することができる。ここで提示する実施例では、Applicationタブ2140がアクティブとして示され、視覚化ペイン2110が、一般的なウエルカム画面またはログイン画面を描写している。
ユースケースペイン2120は、統一モデリング言語(UML)スキームに用いられるユースケースタイプなどのユースケースのリストを含む。このユースケースのリストは、各ユースケース名を、そのユースケースの簡単な説明とともに含む。ドロップダウンメニュー、コントロールボタン、チェックボックスなどの画面上のコントロールをユーザが選択し、そのユースケースペインに関連付けられた機能をアクティブにする、または修正することができる。
図22は、System Viewタブ2210がアクティブとなったGUI2200を描写する。アプリケーションまたはアーキテクチャの骨組みのビューが、左側のペインに描写される。また、ユースケースに関する一組の説明2230が、右側のペインに描写される。具体的には、ドロップダウンメニュー2240で、ユースケースであるView Scheduled Paymentsがリストされる。このView Scheduled Paymentsユースケースのサブケースが、テーブル形式でユースケースペイン内にリストされる。
アーキテクチャ2220を参照すると、ユースケースであるView Scheduled Paymentsに関与するコンポーネントが、相互関係とともに示されている。具体的には、上から下に向かって、外部パートナーおよび顧客が、ファイアウォールを介して、SMTPサーバ、統合サーバ、およびウェブサーバを含むイーサネット(登録商標)ネットワークに接続される。このイーサネット(登録商標)ネットワークは、次に、第2のファイアウォールを介して、統合サーバ、関連データストアを備えた支払いコンポーネント、関連データストアを備えたCRMコンポーネント、ディレクトリサービスコンポーネント、およびゲートウェイサービスを含む第2のイーサネット(登録商標)ネットワークに接続される。このゲートウェイサービスは、第3のファイアウォールを介して、メインフレームコンピュータのゲートウェイコンポーネントに接続される。また、第2の統合サーバは、ネットワーク化された2つの銀行システムを含むリモートデータセンタに接続される。ペイン2220内の各コンポーネントは、対応するシステムコンポーネントのアブストラクションを表現するアイコンで描写されている。このようなコンポーネントの図形描写によって、容易に理解できるように、または直感的にアーキテクチャの説明がなされる。
図23は、Services Viewタブ2310がアクティブとなったGUI2300の図である。Services Viewタブ2310がアクティブになると、視覚化ペイン2320に描写されるアーキテクチャは、各々が複数のサービスを提供する可能性のあるコンポーネントそれ自身が提示するのではなく、システムのコンポーネントが提供する機能に基づいて、一組の接続されたアブストラクションとして提示される。ユースケースペイン2330内で選択されたユースケースのコンポーネントは、視覚化ペイン2320内に図形描写される。GUI2300の全体的な効果は、選択されたユースケースを介して、ユーザに各ステップを図示することである。
図24は、アクティブ状態のPattern Viewタブ2410を含むGUI2400を描写する。この例のユースケースおよびサブコンポーネントは、先に示した図のGUIの提示と同様な方法でユースケースペイン2420内に描写される。パターンビュータブ2410がアクティブになると、アブストラクションのパターンレベルで、システムコンポーネントの図形描写2430がユーザに提示される。ユーザは、例えば、マウス駆動ポインタを用いて右クリックすることによって、図形描写2430の個々のコンポーネントを選択し、かつアクティブ化して、表現されたシステムの更なる詳細を入手することができる。この更なる詳細には、パターンの説明、および基礎となるソースコードのビューが含まれていてもよい。
図25は、アクティブ状態のTestsタブ2510を含むGUI2500を描写する。先に示した例と同様に、ユースケースペイン2520は、先に説明した形式でユースケースを描写する。表示ペイン(presentation pane)2530は、選択したユースケースに関連付けられたコンポーネントに対して規定されたテストリストを含む。追加のタブ2540によって、ユーザは追加の機能にアクセスできる。ここで提示する例では、データアクセステストおよびネットワーク接続テストを含む一群のテストが示される。
さまざまなコンポーネントまたは方法を実装するための追加のコンテキストを設けるために、図26、27、および以下の説明は、適切なコンピューティング環境に関する簡単で一般的な説明を提供することを目的とする。これまでに開示したコンポーネントおよび方法は、ローカルコンピュータおよび/またはリモートコンピュータ上で実行するコンピュータプログラムのコンピュータ実行可能命令に関する一般的な関係で上記に説明してきたが、当業者には当然のことながら、このコンポーネントおよび方法を、他のプログラムモジュールと組み合わせて実装してもよい。通常、プログラムモジュールは、特定のタスクを行い、および/または特定のアブストラクトデータ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。
さらに、当業者には当然のことながら、ここで開示して説明したコンポーネントおよび方法を、シングルプロセッサまたはマルチプロセッサのコンピューティングシステム、ミニコンピュータ、およびメインフレームコンピュータ、さらに、パーソナルコンピュータ、ハンドヘルドコンピューティング装置、マイクロプロセッサベースおよび/またはプログラム可能な民生用製品などを含む、他の1つまたは複数の関連装置と有効に通信できる他のコンピュータシステム構成で実装してもよい。また、ある種のタスクを通信ネットワークを介してリンクするリモート処理装置で行う分散コンピューティング環境で、新たな実装を行うことができる。しかし、全部ではないとしても、本明細書で開示して説明するコンポーネントおよび方法の中には、スタンドアロンコンピュータ上で行うことが可能なものもある。分散コンピューティング環境では、プログラムモジュールは、ローカルおよび/またはリモートメモリ記憶装置に配置してもよい。
図26は、コンピューティング環境2600の実施例を概略的に示すブロック図である。このシステム2600は、1つまたは複数のクライアント2610を含む。このクライアント2610は、ハードウェアでもよいし、ソフトウェアでもよいし、あるいはその両方でもよい(例えば、スレッド、プロセス、コンピューティング装置など)。また、このシステム2600は、1つまたは複数のサーバ2620も含む。このサーバ2620は、ハードウェアでもよいし、ソフトウェアでもよいし、あるいはその両方でもよい(例えば、スレッド、プロセス、コンピューティング装置など)。また、このサーバ2620は、スレッドまたはプロセスを内蔵して、例えば、本発明を用いることによって変換を行う。
クライアント2610とサーバ2620との間での考え得る通信手段の1つは、複数のコンピュータプロセス間で伝送されるようになっているデータパケットの形態をとることである。このシステム2600は、クライアント2610とサーバ2620間での通信を容易にするために用いることができる通信フレームワーク2640を含む。クライアント2610は、ローカルからクライアント2610への情報を格納するために用いることができる1つまたは複数のクライアントデータストア2650に、動作可能に接続される。同様に、サーバ2620は、ローカルからサーバ2640への情報を格納するために用いることができる1つまたは複数のサーバデータストア2630に、動作可能に接続される。
図27を参照すると、例示的環境2700は、コンピュータ2712を含む。このコンピュータ2712は、処理装置2714、システムメモリ2716、およびシステムバス2718を含む。システムバス2718は、システムメモリ2716から処理装置2714までを含むが、これに限定されることのないシステムコンポーネントを結合する。処理装置2714は、各種利用可能なプロセッサのいずれでもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを処理装置2714として用いてもよい。
システムバス2718は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および/または各種利用可能なバスアーキテクチャを用いたローカルバスを含むいずれの種類のバス構造でもよい。この各種利用可能なバスアーキテクチャには、ISA(業界標準アーキテクチャ)、MCA(マイクロチャネルアーキテクチャ)、EISA(拡張ISA)、IDE(インテリジェントドライブエレクトロニクス)、VLB(VESAローカルバス)、PCI(周辺コンポーネント相互接続)、カードバス、USB(ユニバーサルシリアルバス)、AGP(アドバンストグラフィックスポート)、PCMCIA(パーソナルコンピュータメモリカード国際協会)バス、IEEE 1394(ファイヤワイヤ)、およびSCSI(小型コンピュータ用周辺機器インタフェース)が含まれるが、これに限定されるわけではない。
システムメモリ2716は、揮発性メモリ2720と不揮発性メモリ2722を含む。例えば、起動時などに、コンピュータ2712内の要素間で情報を転送するための基本ルーチンを含む基本入出力システム(BIOS)は、不揮発性メモリ2722に格納される。この不揮発性メモリ2722は、限定するわけではないが例として、リードオンリメモリ(ROM)、プログラム可能なROM(PROM)、電気的にプログラム可能なROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュメモリを含むことができる。揮発性メモリ2720は、外部キャッシュメモリの機能を果たすランダムアクセスメモリ(RAM)を含む。このRAMは、限定するわけではないが例として、シンクロナスRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、およびダイレクトラムバスRAM(DRRAM)などの多くの形で利用可能である。
コンピュータ2712は、取り外し可能/固定であり、また揮発性/不揮発性のコンピュータ記憶媒体も含む。例えば、図27は、ディスク記憶装置2724を示す。このディスク記憶装置2724は、限定するわけではないが、磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、またはメモリスティックなどの装置を含む。さらに、ディスク記憶装置2724は、記憶装置を単独で含むこともできれば、コンパクトディスクROM装置(CD−ROM)、追記型CDドライブ(CD−Rドライブ)、書き換え可能CDドライブ(CD−RWドライブ)、またはデジタル多用途ディスクROMドライブ(DVD−ROMドライブ)などの光学ディスクドライブを含み、これに限定されない他の記憶媒体と組み合わせた記憶媒体を含むこともできる。ディスク記憶装置2724のシステムバス2718への接続を容易にするために、インタフェース2726などの取り外し可能インタフェースまたは取り外し不可能インタフェースが通常は用いられる。
当然のことながら、図27には、ユーザと、適切な動作環境2700で記述される基本コンピュータリソースとの間の媒介として動作するソフトウェアが示されている。このソフトウェアには、オペレーティングシステム2728が含まれる。このオペレーティングシステム2728は、ディスク記憶装置2724に格納することもでき、コンピュータシステム2712のリソースを制御し、かつ割り当てる機能を果たす。システムアプリケーション2730は、システムメモリ2716またはディスク記憶装置2724のいずれかに格納されるプログラムモジュール2732およびプログラムデータ2734を用いて、オペレーティングシステム2728が管理するリソースを利用する。当然のことながら、ここで開示して説明するコンポーネントおよび方法を、さまざまなオペレーティングシステムを用いて、またはさまざまなオペレーティングシステムを組み合わせて実装してもよい。
ユーザは、コマンドまたは情報を、入力装置2736を用いてコンピュータ2712に入力する。この入力装置2736は、限定するわけではないが、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、TVチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどを含む。これらの入力装置は、インタフェースポート2738を介して、システムバス2718経由で処理装置2714に接続する。このインタフェースポート2738は、例えば、シリアルポート、パラレルポート、ゲームポート、およびUSB(ユニバーサルシリアルバス)を含む。出力装置2740は、入力装置2736と同じ種類のポートの一部を用いる。従って、例えば、USBポートを用いて、コンピュータ2712への入力を提供し、かつコンピュータ2712からの情報を出力装置2740に出力してもよい。出力アダプタ2742は、数ある出力装置2740の中には、特別なアダプタを必要とするモニタ、スピーカ、およびプリンタなどのような出力装置2740もあるということを図示するために提供されている。この出力アダプタ2742は、限定するわけではないが例として、出力装置2740とシステムバス2718との間の接続手段を提供するビデオカードおよびサウンドカードを含む。リモートコンピュータ2744など他の装置および/または装置システムも入出力機能を提供することに留意されたい。
コンピュータ2712は、リモートコンピュータ2744などの1つまたは複数のリモートコンピュータへの論理接続を用いたネットワーク環境下で動作できる。このリモートコンピュータ2744は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの機器、ピア装置、または他の一般的なネットワークノードなどでもよく、通常は、コンピュータ2712に関連して記述される要素の多くまたはすべてを含む。話を簡単にするために、メモリ記憶装置2746のみを、リモートコンピュータ2744とともに図示する。このリモートコンピュータ2744は、まずネットワークインタフェース2748を介して論理的に、次に通信接続2750を介して物理的にコンピュータ2712に接続される。ネットワークインタフェース2748は、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)などの有線および/または無線通信ネットワークを包含する。LANの技術には、FDDI(Fiber Distributed Data Interface)、CDDI(Copper Distributed Data Interface)、イーサネット(登録商標)、トークンリングなどが含まれる。一方、WANの技術には、限定するわけではないが、ポイントツーポイントリンク、ISDN(総合サービスデジタル通信網)およびこの変形形態などの回路交換網、パケット交換ネットワーク、およびデジタル加入者回線が含まれる。
通信接続2750は、ネットワークインタフェース2748をバス2718に接続するために用いるハードウェア/ソフトウェアのことを言う。図面上明確にするために、通信接続2750をコンピュータ2712内に示したが、コンピュータ2712の外部にあってもよい。ネットワークインタフェース2748に接続するために必要なハードウェア/ソフトウェアは、例示だけを目的として示すならば、標準電話級モデム、ケーブルモデム、およびDSLモデムを含むモデム、ISDNアダプタ、およびイーサネット(登録商標)カードなどの内蔵技術および外付け技術を含む。
以上説明してきた内容は、開示して説明したコンポーネントおよび方法に関する実施例を含むものである。当然ながら、コンポーネントまたは方法に関する考えうるすべての組合せを説明することは不可能であるが、当業者であれば、本発明に関するより多くの組合せや順序が可能であることは理解されよう。従って、ここで示した実施例は、添付の請求項の精神と範囲に入るすべての代替形態、修正形態、および変形形態を包含することを意図したものである。
特に、上記のコンポーネント、装置、回路、システムなどが行うさまざまな機能に関して、そのようなコンポーネントを説明するために用いた用語(「手段(means)」に対する言及も含む)は、特に指示がなければ、たとえ本明細書で示した実施例の機能を行う開示した構造と構造的に等しくなくても、説明したコンポーネントの具体的な機能を行うあらゆるコンポーネント(例えば、機能的に等価なコンポーネント)に対応することを意図している。この点において、当然のことながら、システムばかりではなく、コンポーネントを構成するコンピュータ実行可能命令、または本明細書で開示して説明したさまざまな方法の動作および/またはイベントを行うコンピュータ実行可能命令を含むコンピュータ読取可能媒体も本発明には含まれる。
なお、本発明の特定の特徴を、いくつかある実装のうちのただ1つに関して開示したとしても、この特徴は、必要に応じて、またあらゆる所定のアプリケーション、または特定のアプリケーションに有利であれば、他の実装の1つまたは複数の特徴と組み合わせてもよい。さらに、用語「含む(include)」、「含めて(including)」、およびその他の活用形が、詳細な説明または請求項で用いられる限りは、これらの用語は、用語「備えて(comprising)」と同様の考え方で、包含的であることを意図したものである。
ベースラインアーキテクチャ・モニタアプリケーションシステムのシステムブロック図である。 モニタコンポーネントのシステムブロック図である。 アーキテクチャマッピングシステムのシステムブロック図である。 パターンベースの開発環境のシステムブロック図である。 ユースケース駆動開発環境のシステムブロック図である。 文法機能を含む開発環境のシステムブロック図である。 メタモデル開発システムのシステムブロック図である。 マルチレベルテストシステムのシステムブロック図である。 メトリックベースのテストシステムのシステムブロック図である。 セキュリティテストシステムのシステムブロック図である。 ビューシステムのシステムブロック図である。 変換システムのシステムブロック図である。 使用可能な方法の処理を示すフロー図である。 使用可能な方法の処理を示すフロー図である。 使用可能な方法の処理を示すフロー図である。 使用可能な方法の処理を示すフロー図である。 方法の処理を示すフロー図である。 方法の処理を示すフロー図である。 方法の処理を示すフロー図である。 方法の処理を示すフロー図である。 グラフィカルユーザインタフェースの図である。 グラフィカルユーザインタフェースの図である。 グラフィカルユーザインタフェースの図である。 グラフィカルユーザインタフェースの図である。 グラフィカルユーザインタフェースの図である。 例示的動作環境のシステムブロック図である。 例示的コンピューティングプラットフォームのシステムブロック図である。
符号の説明
2110、2320 視覚化ペイン
2120、2330、2420、2520 ユースケースペイン
2220 アーキテクチャ
2230 ユースケースに関する説明
2240 ドロップダウンメニュー
2430 図形描写
2530 表示ペイン
2540 追加のタブ

Claims (20)

  1. 構成可能な設計要素として用いることができるパターンのデータストアにアクセスして、コンピューティングシステムのコンポーネントをパターンにマッピングするマッチングエンジンと、
    前記マッチングエンジンがマッピングした前記パターンのグラフィック表現を提示するビジュアライザと
    を備えたことを特徴とするコンピューティングシステムの視覚表現を提示するシステム。
  2. 前記コンピューティングシステムの前記コンポーネントを発見するモニタエンジンをさらに備えたことを特徴とする請求項1に記載のシステム。
  3. 機械が解釈できるコードを前記パターンにマッチさせるコードマッチングエンジンをさらに備えたことを特徴とする請求項2に記載のシステム。
  4. 前記パターンに基づくコンピューティングコンポーネントの構築を可能にする構成エンジンをさらに備えたことを特徴とする請求項3に記載のシステム。
  5. 構築されたパターンベースのコンピューティングコンポーネントをテストするテストモジュールをさらに備えたことを特徴とする請求項4に記載のシステム。
  6. 前記構築されたパターンベースのコンピューティングコンポーネントのセキュリティ面をテストするセキュリティモジュールをさらに備えたことを特徴とする請求項5に記載のシステム。
  7. 前記構築されたパターンベースのコンピューティングコンポーネントに対するメトリックスを収集する測定モジュールをさらに備えたことを特徴とする請求項6に記載のシステム。
  8. 前記構築されたパターンベースのコンピューティングコンポーネントのビューを、アーキテクチャビュー、サービスビュー、およびパターンビューのうちの少なくとも1つに基づいて提供するビューモジュールをさらに備えたことを特徴とする請求項7に記載のシステム。
  9. コンピューティングシステムのコンポーネントにパターン定義をマッチさせるステップと、
    ユーザに提示するために、前記マッチさせたパターン定義の表現をグラフィカルに描写するステップと
    を有することを特徴とするコンピューティングシステムのコンポーネントを視覚的に表現する方法。
  10. 前記パターン定義にマッチさせることができる前記コンピューティングシステムのコンポーネントを発見するステップをさらに有することを特徴とする請求項9に記載の方法。
  11. ソースコードを前記パターンにマッチさせるステップをさらに有することを特徴とする請求項10に記載の方法。
  12. 第2のコンピューティングコンポーネントを、構成可能な設計要素として第2のパターン定義を用いることによって構築するステップをさらに有することを特徴とする請求項11に記載の方法。
  13. 前記第2のコンピューティングコンポーネントをテストするステップをさらに有することを特徴とする請求項12に記載の方法。
  14. 前記第2のコンピューティングコンポーネントのセキュリティ面を評価するステップをさらに有することを特徴とする請求項13に記載の方法。
  15. パターン定義をコンピューティングシステムのコンポーネントにマッチさせる手段と、
    ユーザに提示するために、前記マッチさせたパターン定義の表現をグラフィカルに描写する手段と
    を備えたことを特徴とするコンピューティングシステムのコンポーネントを視覚的に表現するシステム。
  16. 前記コンピューティングシステムのコンポーネントを発見する手段をさらに備えたことを特徴とする請求項15に記載のシステム。
  17. ソースコードを前記パターンにマッチさせる手段をさらに備えたことを特徴とする請求項16に記載のシステム。
  18. 第2のコンピューティングコンポーネントを、構成可能な設計要素として第2のパターン定義を用いることによって構築する手段をさらに備えたことを特徴とする請求項17に記載のシステム。
  19. 前記第2のコンピューティングコンポーネントをテストする手段をさらに備えたことを特徴とする請求項18に記載のシステム。
  20. 前記第2のコンピューティングコンポーネントのセキュリティ面を評価する手段をさらに備えたことを特徴とする請求項19に記載のシステム。
JP2006010231A 2005-02-07 2006-01-18 分散システムのためのベースラインアーキテクチャ・モニタアプリケーション Pending JP2006216028A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65077405P 2005-02-07 2005-02-07
US11/146,713 US20060178858A1 (en) 2005-02-07 2005-06-07 Baseline architecture monitor application for distributed systems

Publications (1)

Publication Number Publication Date
JP2006216028A true JP2006216028A (ja) 2006-08-17

Family

ID=36642768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006010231A Pending JP2006216028A (ja) 2005-02-07 2006-01-18 分散システムのためのベースラインアーキテクチャ・モニタアプリケーション

Country Status (8)

Country Link
US (1) US20060178858A1 (ja)
EP (1) EP1688829A3 (ja)
JP (1) JP2006216028A (ja)
KR (1) KR20060093004A (ja)
AU (1) AU2005242149A1 (ja)
BR (1) BRPI0600634A (ja)
CA (1) CA2532329A1 (ja)
RU (1) RU2005140021A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011086201A (ja) * 2009-10-16 2011-04-28 Fujitsu Ltd テストプログラム、テスト方法、およびテスト装置
JP2019160284A (ja) * 2018-03-08 2019-09-19 富士通株式会社 抽象コードグラフを用いたソフトウェアの表現

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120026173A1 (en) * 2006-08-04 2012-02-02 Gabbert Adam K Transitioning Between Different Views of a Diagram of a System
GB0624168D0 (en) * 2006-12-04 2007-01-10 Axiom Systems Ltd Service assembly and delivery
US20080140468A1 (en) * 2006-12-06 2008-06-12 International Business Machines Corporation Complex exponential smoothing for identifying patterns in business data
US8782525B2 (en) * 2011-07-28 2014-07-15 National Insturments Corporation Displaying physical signal routing in a diagram of a system
WO2013157008A2 (en) * 2012-04-18 2013-10-24 Gizmox Ltd. Code migration systems and methods and an online solutions store
US9237463B2 (en) * 2013-11-20 2016-01-12 Verizon Patent And Licensing Inc. Performance pattern correlation
US9529702B2 (en) * 2015-01-13 2016-12-27 Oracle International Corporation System to enable multi-tenancy testing of business data and validation logic on the cloud
US10536349B1 (en) * 2015-12-31 2020-01-14 VCE IP Holding Company LLC Configuration system and method for an integrated computing system
US10467360B1 (en) * 2019-01-02 2019-11-05 Fmr Llc System and method for dynamically determining availability of a computing resource

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09237240A (ja) * 1996-02-29 1997-09-09 Hitachi Ltd システム管理/ネットワーク対応表示方法
JPH10232843A (ja) * 1997-02-20 1998-09-02 Hitachi Ltd ネットワーク管理ツール
JPH1195990A (ja) * 1997-09-22 1999-04-09 Nippon Telegr & Teleph Corp <Ntt> プログラム構造表示方法および装置
JP2002149514A (ja) * 2000-11-10 2002-05-24 Canon Inc サーバ装置およびデータ処理装置およびデータ処理方法および記憶媒体
JP2002366356A (ja) * 2001-06-12 2002-12-20 Toshiba Corp ソフトウェア開発支援システム、その方法およびソフトウェア開発支援プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185590B1 (en) * 1996-10-18 2001-02-06 Imagination Software Process and architecture for use on stand-alone machine and in distributed computer architecture for client server and/or intranet and/or internet operating environments
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6615166B1 (en) * 1999-05-27 2003-09-02 Accenture Llp Prioritizing components of a network framework required for implementation of technology
US6615199B1 (en) * 1999-08-31 2003-09-02 Accenture, Llp Abstraction factory in a base services pattern environment
WO2001093031A1 (en) * 2000-03-20 2001-12-06 Phoenix Technologies Ltd. A software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation
US6950802B1 (en) * 2000-07-25 2005-09-27 International Business Machines Corporation System and method for systems integration
EP1205841A1 (en) * 2000-10-26 2002-05-15 Ebeon Research &amp; Development Limited Software development processes
US7325252B2 (en) * 2001-05-18 2008-01-29 Achilles Guard Inc. Network security testing
WO2003081389A2 (en) * 2002-03-20 2003-10-02 Gameworld.Com Visual application development system and method
FR2843213B1 (fr) * 2002-07-30 2004-12-24 Bull Sa Procede et systeme d'etablissement automatique d'un modele global de simulation d'une architecture
US7240325B2 (en) * 2002-09-11 2007-07-03 International Business Machines Corporation Methods and apparatus for topology discovery and representation of distributed applications and services
US7324931B1 (en) * 2003-11-17 2008-01-29 The Mathworks, Inc. Conversion of model components into references
US7346888B1 (en) * 2004-03-01 2008-03-18 Sprint Communications Company L.P. Use case integration

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09237240A (ja) * 1996-02-29 1997-09-09 Hitachi Ltd システム管理/ネットワーク対応表示方法
JPH10232843A (ja) * 1997-02-20 1998-09-02 Hitachi Ltd ネットワーク管理ツール
JPH1195990A (ja) * 1997-09-22 1999-04-09 Nippon Telegr & Teleph Corp <Ntt> プログラム構造表示方法および装置
JP2002149514A (ja) * 2000-11-10 2002-05-24 Canon Inc サーバ装置およびデータ処理装置およびデータ処理方法および記憶媒体
JP2002366356A (ja) * 2001-06-12 2002-12-20 Toshiba Corp ソフトウェア開発支援システム、その方法およびソフトウェア開発支援プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011086201A (ja) * 2009-10-16 2011-04-28 Fujitsu Ltd テストプログラム、テスト方法、およびテスト装置
JP2019160284A (ja) * 2018-03-08 2019-09-19 富士通株式会社 抽象コードグラフを用いたソフトウェアの表現
JP7172435B2 (ja) 2018-03-08 2022-11-16 富士通株式会社 抽象コードグラフを用いたソフトウェアの表現

Also Published As

Publication number Publication date
EP1688829A2 (en) 2006-08-09
AU2005242149A1 (en) 2006-08-24
US20060178858A1 (en) 2006-08-10
KR20060093004A (ko) 2006-08-23
CA2532329A1 (en) 2006-08-07
BRPI0600634A (pt) 2006-10-03
RU2005140021A (ru) 2007-07-20
EP1688829A3 (en) 2010-06-02

Similar Documents

Publication Publication Date Title
JP2006216028A (ja) 分散システムのためのベースラインアーキテクチャ・モニタアプリケーション
Briand et al. Automating impact analysis and regression test selection based on UML designs
CN110928772B (zh) 一种测试方法及装置
Buijs Flexible evolutionary algorithms for mining structured process models
US7721252B2 (en) Apparatus and method for product-line architecture description and verification
US8365147B2 (en) Test script transformation architecture
Ovaska et al. Knowledge based quality-driven architecture design and evaluation
US9081595B1 (en) Displaying violated coding rules in source code
US9075544B2 (en) Integration and user story generation and requirements management
US20110016452A1 (en) Method and system for identifying regression test cases for a software
US20200201689A1 (en) System and method for determining a process flow of a software application and for automatically generating application testing code
US20120102458A1 (en) Generating documentation from tests
WO2008022223A2 (en) Methods and tools for creating and evaluating system blueprints
US20090276757A1 (en) Systems and methods for inference and management of software code architectures
WO2006115937A2 (en) System review toolset and method
Feitosa et al. Investigating the effect of design patterns on energy consumption
Vos et al. testar–scriptless testing through graphical user interface
US20140372988A1 (en) Using a Static Analysis for Configuring a Follow-On Dynamic Analysis for the Evaluation of Program Code
EP2105837B1 (en) Test script transformation analyzer with change guide engine
Zampetti et al. Using code reviews to automatically configure static analysis tools
Bandi et al. Clone swarm: A cloud based code-clone analysis tool
US20220137959A1 (en) Detecting duplicated code patterns in visual programming language code instances
Stoermer et al. Practice patterns for architecture reconstruction
Lenhard et al. Portability of executable service-oriented processes: metrics and validation
CN113986768A (zh) 应用程序稳定性测试方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120706