少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに結合されたメモリと、前記メモリに常駐する複合アプリケーションであって、前記複合アプリケーションは、複数の異なるプログラミング言語で書かれた複数のコンポーネントを含む、複合アプリケーションと、前記メモリに常駐する複数のコンポーネント相互関係規則であって、前記コンポーネント相互関係規則の各々は、異なるプログラミング言語のコンポーネント間の少なくとも1つの条件と前記少なくとも1つの条件が満たされるかどうかに応じて行われる少なくとも1つのアクションとを含む、複数のコンポーネント相互関係規則と、前記メモリに常駐し、前記少なくとも1つのプロセッサによって実行されるアプリケーション分析機構であって、前記アプリケーション分析機構は、前記複合アプリケーションのアプリケーションモデルを生成し、前記複数のコンポーネント相互関係規則への適合性について前記アプリケーションモデルを分析し、前記複数のコンポーネント相互関係規則への適合性について前記アプリケーションモデルを分析した結果を出力する、アプリケーション分析機構と、を含む装置。前記少なくとも1つのアクションは、前記結果に警告を付加することを含む、請求項1に記載の装置。前記結果は、前記複合アプリケーションについての統計情報と少なくとも1つの警告とを含む、請求項1に記載の装置。前記アプリケーションモデルは、プログラミング言語に従って複数のカテゴリに分離された前記複合アプリケーション内の前記複数のコンポーネントを含む、請求項1に記載の装置。前記アプリケーションモデルは、前記複数のカテゴリのうちの第1のカテゴリにおけるコンポーネントと前記複数のカテゴリのうちの第2のカテゴリにおけるコンポーネントとの間の相互関係を記述するメタデータをさらに含む、請求項4に記載の装置。前記少なくとも1つの条件は、2つのプログラミング言語と前記2つのプログラミング言語の間の相互関係とを指定する、請求項1に記載の装置。複数の異なるプログラミング言語で書かれた複数のコンポーネントを含む複合アプリケーションを分析するためのコンピュータ実装方法であって、前記方法は、少なくとも1つのプロセッサを準備するステップと、前記少なくとも1つのプロセッサに結合されたメモリを準備するステップと、前記メモリに常駐する複数のコンポーネント相互関係規則を準備するステップであって、前記コンポーネント相互関係規則の各々は、異なるプログラミング言語のコンポーネント間の少なくとも1つの条件と前記少なくとも1つの条件が満たされるかどうかに応じて行われる少なくとも1つのアクションとを含む、ステップと、を含み、前記少なくとも1つのプロセッサは、前記複合アプリケーションを受信するステップと、前記複合アプリケーションのアプリケーションモデルを生成するステップと、前記複数のコンポーネント相互関係規則への適合性について前記アプリケーションモデルを分析するステップと、前記複数のコンポーネント相互関係規則への適合性について前記アプリケーションモデルを分析した結果を出力するステップと、を行う、方法。前記少なくとも1つのアクションは、前記結果に警告を付加することを含む、請求項7に記載の方法。前記結果は、前記複合アプリケーションについての統計情報と少なくとも1つの警告とを含む、請求項7に記載の方法。前記アプリケーションモデルは、プログラミング言語に従って複数のカテゴリに分離された前記複合アプリケーション内の前記複数のコンポーネントを含む、請求項7に記載の方法。前記アプリケーションモデルは、前記複数のカテゴリのうちの第1のカテゴリにおけるコンポーネントと前記複数のカテゴリのうちの第2のカテゴリにおけるコンポーネントとの間の相互関係を記述するメタデータをさらに含む、請求項10に記載の方法。前記少なくとも1つの条件は、2つのプログラミング言語と前記2つのプログラミング言語の間の相互関係とを指定する、請求項7に記載の方法。複数の異なるプログラミング言語で書かれた複数のコンポーネントを含む複合アプリケーションを分析するためのコンピュータ実装方法であって、前記方法は、少なくとも1つのプロセッサを準備するステップと、前記少なくとも1つのプロセッサに結合されたメモリを準備するステップと、前記メモリに常駐する複数のコンポーネント相互関係規則を準備するステップであって、前記コンポーネント相互関係規則の各々は、異なるプログラミング言語のコンポーネント間の少なくとも1つの条件と前記少なくとも1つの条件が満たされるかどうかに応じて行われる少なくとも1つのアクションとを含む、ステップと、を含み、前記少なくとも1つのプロセッサは、前記複合アプリケーションを受信するステップと、プログラミング言語に従って複数のカテゴリに分離された前記複合アプリケーション内の前記複数のコンポーネントを含む、前記複合アプリケーションのアプリケーションモデルを生成するステップであって、前記複数のカテゴリの各々は、異なるカテゴリにおけるコンポーネント間の相互関係を記述するメタデータを含む、ステップと、前記複数のコンポーネント相互関係規則への適合性について前記アプリケーションモデルを分析するステップと、前記複数のコンポーネント相互関係規則への適合性について前記アプリケーションモデルを分析した結果を出力するステップであって、前記結果は、前記複合アプリケーションについての統計情報と少なくとも1つの警告とを含む、ステップと、を行う、方法。有形のストレージ媒体上に格納されるソフトウェアであって、複数の異なるプログラミング言語で書かれた複数のコンポーネントを含む複合アプリケーションのアプリケーションモデルを生成し、異なるプログラミング言語のコンポーネント間の少なくとも1つの条件と前記少なくとも1つの条件が満たされるかどうかに応じて行われる少なくとも1つのアクションとを各々が含む複数のコンポーネント相互関係規則への適合性について、前記アプリケーションモデルを分析し、前記複数のコンポーネント相互関係規則への適合性について前記アプリケーションモデルを分析した結果を出力する、アプリケーション分析機構、を含むソフトウェア。前記少なくとも1つのアクションは、前記結果に警告を付加することを含む、請求項14に記載のソフトウェア。前記結果は、前記複合アプリケーションについての統計情報と少なくとも1つの警告とを含む、請求項14に記載のソフトウェア。前記アプリケーションモデルは、プログラミング言語に従って複数のカテゴリに分離された前記複合アプリケーション内の前記複数のコンポーネントを含む、請求項14に記載のソフトウェア。前記アプリケーションモデルは、前記複数のカテゴリのうちの第1のカテゴリにおけるコンポーネントと前記複数のカテゴリのうちの第2のカテゴリにおけるコンポーネントとの間の相互関係を記述するメタデータをさらに含む、請求項17に記載のソフトウェア。前記少なくとも1つの条件は、2つのプログラミング言語と前記2つのプログラミング言語の間の相互関係とを指定する、請求項14に記載のソフトウェア。SCAアプリケーションのような複合アプリケーションを分析するステップは、現在のところ、アプリケーションをWebSphereツールに取り込むことによって行われている。次いで、プログラマが、認められる最良の形態bestpractice及び最悪の形態worstpracticeについてアプリケーションのコンポーネントを手作業で調べ、調査結果を顧客に報告する。人間の性質上、重要な詳細が隠されたり完全に見落とされたりして、顧客に提供されるサポートに悪影響を与える場合がある。この手作業のプロセスによって生じる結果はまた、時間の経過に伴って矛盾したものとなる可能性があり、新たな規則が作成されると、こうした努力に関する労働コストのため、初期の結果が再現されない。ソフトウェア分析のための既知のツールは、単一言語で書かれたコンピュータプログラムの静的な分析を行うことができるようにするが、異なるプログラミング言語で書かれた複数のコンポーネントを有する複合アプリケーションの分析をサポートするものではない。複合アプリケーションの分析を自動化する手段がなければ、現在の手作業によるプロセスは、誤りを起こしやすく非効率なものであり続けることになる。アプリケーション分析機構が、異なる言語で書かれたコンポーネント間で満たされるべき1つ又は複数の条件と条件の分析に応じて行われるアクションとを定めるコンポーネント相互関係規則の組への適合性について、複合アプリケーションを分析する。コンポーネント相互関係規則が定められると、複合アプリケーションが受信される。次に、複合アプリケーションのコンポーネントを用いられるプログラミング言語に基づくカテゴリに分離し、コンポーネント間の相互関係を記述するためのメタデータを含む、複合アプリケーションのモデルが構築される。次いで、複合アプリケーションのモデルに対して、コンポーネント相互関係規則の組が実行される。次いで、分析の結果が出力される。複合アプリケーションの自動分析は、人的誤りを起こしやすいプロセスの大部分を取り除き、複合アプリケーションを分析するための効率的且つ一貫した手法を提供して、異なるプログラミング言語で書かれたコンポーネント間の相互関係がコンポーネント相互関係規則を満たすことを保証する。上記の及び他の特徴及び利点は、添付図面において示される、以下のより具体的な説明から明らかとなるであろう。本開示は、同様の記号表示が同様の要素を示す添付図面とともに説明される。特許請求の範囲及び本明細書における開示は、コンポーネント相互関係規則の組への適合性について複合アプリケーションを自動的に分析するアプリケーション分析機構を提供する。規則は、異なるプログラミング言語で書かれたコンポーネント間の相互関係を定める。複合アプリケーションが受信されて、プログラミング言語に応じてコンポーネントを複数のカテゴリに分離し、かつ、カテゴリ間の相互関係を記述するメタデータを提供する、複合アプリケーションのモデルが生成される。次いで、モデルに対して規則が実行され、分析の結果がユーザに出力される。結果は、統計情報及び警告を含むことがある。結果として、コンポーネント相互関係規則への適合性について複合アプリケーションを自動的に分析するソフトウェアツールが得られる。例1図1を参照すると、コンピュータシステム100は、アプリケーション分析機構を含むコンピュータシステムの1つの適切な実装形態である。コンピュータシステム100は、IBMeServerSystemiコンピュータシステムである。しかしながら、当業者であれば、本明細書における開示は、コンピュータシステムが複雑なマルチユーザ用コンピューティング装置であるか、シングルユーザ用ワークステーションであるか、又は内蔵式制御システムであるかどうかに関わりなく、あらゆるコンピュータシステムに等しく適用されることが分かるであろう。図1に示されるように、コンピュータシステム100は、1つ又は複数のプロセッサ110、メインメモリ120、大容量ストレージインターフェース130、ディスプレイインターフェース140、及びネットワークインターフェース150を含む。これらのシステムコンポーネントは、システムバス160を用いることによって相互接続される。大容量ストレージインターフェース130は、直接アクセスストレージ装置155などの大容量ストレージ装置をコンピュータシステム100に接続するのに用いられる。直接アクセスストレージ装置155の1つの具体的なタイプは、読み出し及び書き込み可能CD-RWドライブであり、これは、CD-RW195との間でデータの格納及びデータの読み出しを行うことができる。メインメモリ120は、好ましくは、データ121、オペレーティングシステム122、複合アプリケーション123、及びアプリケーション分析機構124を含む。データ121は、コンピュータシステム100内のいずれかのプログラムからの入力又はいずれかのプログラムへの出力としての役割を果たすいずれかのデータを表す。オペレーティングシステム122は、マルチタスク型オペレーティングシステムである。複合アプリケーション123は、異なるプログラミング言語で書かれた複数のコンポーネントを含むアプリケーションである。アプリケーション分析機構124は、モデル生成機構125、コンポーネント相互関係規則127、及び規則分析機構128を含む。モデル生成機構125は、複合アプリケーション123を受信し、複合アプリケーションからアプリケーションモデル126を生成する。アプリケーションモデル126は、好ましくは、プログラミング言語に応じてコンポーネントをグループ化し、コンポーネント間の相互関係の最良の形態及び最悪の形態を記述するメタデータを含む。コンポーネント相互関係規則127は、満たされるべきコンポーネント間の1つ又は複数の条件と共に、その条件が満たされない場合に行う1つ又は複数のアクションを指定する。規則分析機構128は、コンポーネント相互関係規則127をアプリケーションモデル126に対して実行し、結果129を出力する。結果129は、統計情報及び警告を含むことがあり、ユーザのディスプレイに出力するか、又はメモリ内若しくは物理媒体上に何らかの電子的形態で格納することができる。結果として、コンポーネント相互関係規則への適合性について複合アプリケーションを自動的に分析するアプリケーション分析機構124が得られる。コンピュータシステム100は、コンピュータシステム100のプログラムが、メインメモリ120及びDASDデバイス155のような複数のより小容量のストレージエンティティにアクセスする代わりに、大容量で単一のストレージエンティティのみにアクセスするように振舞うことを可能にする、周知の仮想アドレス指定機構を利用する。したがって、データ121、オペレーティングシステム122、複合アプリケーション123、及びアプリケーション分析機構124がメインメモリ120内に常駐するように示されているが、当業者であれば、これらのアイテムが必ずしも全て同時にメインメモリ120内に完全に含まれている必要はないことが分かるであろう。メモリという用語は、本明細書において、コンピュータシステム100の仮想メモリ全体を総称的に指すのに用いられており、コンピュータシステム100に結合された他のコンピュータシステムの仮想メモリを含んでもよいことにもまた留意すべきである。プロセッサ110は、1つ又は複数のマイクロプロセッサ及び/又は集積回路によって構築することができる。プロセッサ110は、メインメモリ120に格納されたプログラム命令を実行する。メインメモリ120は、プロセッサ110がアクセスすることができるプログラム及びデータを格納する。コンピュータシステム100が起動したときには、プロセッサ110は最初に、オペレーティングシステム122を構成するプログラム命令を実行する。プロセッサ110は、アプリケーション分析機構124も実行する。コンピュータシステム100は、単一のプロセッサ及び単一のシステムバスのみを含むように示されているが、当業者であれば、複数のプロセッサ及び/又は複数のバスを有するコンピュータシステムを用いてアプリケーション分析機構を実施できることが分かるであろう。さらに、用いられるインターフェースは、各々が、プロセッサ110から計算集約的な処理の負荷を軽減するのに用いられる完全にプログラムされた別個のマイクロプロセッサを含むことが好ましい。しかしながら、当業者であれば、I/Oアダプタを用いてこれらの機能を同様に行うことができることが分かるであろう。ディスプレイインターフェース140は、1つ又は複数のディスプレイ165をコンピュータシステム100に直接接続するのに用いられる。非インテリジェント型即ちデータ処理能力のない端末又は完全にプログラム可能なワークステーションとすることができるこれらのディスプレイ165は、システム管理者及びユーザにコンピュータシステム100と通信する能力を提供するのに用いられる。しかしながら、ディスプレイインターフェース140は1つ又は複数のディスプレイ165との通信をサポートするために設けられているが、ユーザ及び他のプロセスとの必要な相互関係は全てネットワークインターフェース150を介して行うことができるため、コンピュータシステム100は、必ずしもディスプレイ165を必要としないことに留意されたい。ネットワークインターフェース150は、ネットワーク170を介してコンピュータシステム100を他のコンピュータシステム又はワークステーション175に接続するのに用いられる。ネットワークインターフェース150は、ネットワーク170が現在のアナログ及び/又はデジタル技術を含むのか又は将来の何らかのネットワーク機構を介するのかに関わりなく、電子デバイスを相互接続するためのいずれかの適切な手段を広範に表す。ネットワークインターフェース150は、好ましくは、ネットワーク170上での通信を可能にするハードウェアとソフトウェアとの組み合わせを含む。ネットワークインターフェース150のソフトウェアは、好ましくは、適切なネットワークプロトコルを用いた他のコンピュータシステム175とのネットワーク170経由の通信を管理する通信マネージャを含む。多くの異なるネットワークプロトコルを用いて、ネットワークを実装することができる。これらのプロトコルは、コンピュータがネットワーク上で通信することを可能にする専用コンピュータプログラムである。TCP/IPTransmissionProtocol/InternetProtocolは、ネットワークインターフェース150内の通信マネージャが用いることができる適切なネットワークプロトコルの一例である。当業者によって認識されるように、本発明の態様は、システム、方法又はコンピュータプログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコード等を含む、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においては、これらは全て、一般的に、回路、モジュール又はシステムと呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ使用可能プログラムコードを有する、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータプログラム製品の形を取ることができる。1つ又は複数のコンピュータ可読媒体のいずれの組み合わせも利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、機器若しくは装置、又はこれらのいずれかの適切な組み合わせとすることができるが、これらに限定されるものではない。コンピュータ可読ストレージ媒体のより具体的な例非網羅的なリストとして、以下のもの、即ち、1つ又は複数の配線を有する電気的接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み出し専用メモリROM、消去可能なプログラム可能読み出し専用メモリEPROM又はフラッシュメモリ、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリCD-ROM、光記憶装置、磁気記憶装置、又はこれらのいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、機器若しくは装置によって又はそれらと関連して用いるためのプログラムを収容又は格納することが可能ないずれかの有形媒体とすることができる。コンピュータ可読信号媒体は、例えばベースバンドに、又は搬送波の一部として、コンピュータ可読プログラムコードが組み入れられた伝搬データ信号を含むことができる。このような伝搬信号は、電磁気、光又はそれらのいずれかの適切な組み合わせを含むがこれらに限定されない、種々の異なる形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、機器若しくは装置によって又はこれらと関連して用いるためのプログラムを通信し、伝搬し又は搬送することができる、いずれかのコンピュータ可読媒体とすることができる。コンピュータ可読媒体上に具体化されたプログラムコードは、無線、有線、光ファイバケーブル、RF等、又はこれらのいずれかの適切な組み合わせを含むがこれらに限定されるものではないいずれかの適切な媒体を用いて、伝送することができる。本発明の態様についての操作を実行するためのコンピュータプログラムコードは、Java、SmallTalk、C等のようなオブジェクト指向型プログラミング言語、及び、Cプログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで書くことができる。プログラムコードは、完全にユーザのコンピュータ上で実行されるか、一部がユーザのコンピュータ上で、独立型ソフトウェアパッケージとして実行されるか、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行されるか、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合がある。最後のシナリオにおいては、遠隔コンピュータは、ローカルエリアネットワークLAN若しくは広域ネットワークWANを含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続されるか、又は、例えば、インターネットサービスプロバイダを用いたインターネットを通じて外部コンピュータへの接続がなされる場合がある。本発明の態様は、本明細書において、本発明の実施形態による方法、機器システム及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装できることが理解されるであろう。これらのコンピュータプログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するための手段を生成するようになる。これらのコンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他の装置を特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、その結果、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようになる。コンピュータプログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他の装置上にロードして、そのコンピュータ、他のプログラム可能データ処理装置、又は他の装置上で行われる一連の動作ステップによりコンピュータ実装プロセスを生成し、その結果、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するためのプロセスをもたらすようになる。図2を参照すると、複合アプリケーション123についての実装例が、言語1のコンポーネント210A、言語2のコンポーネント210B、...、言語Nのコンポーネント210Nとして図2に示される、複数のプログラミング言語で書かれた複数のコンポーネントを含む。複合アプリケーション123は、異なるプログラミング言語のコンポーネントを含むため、既知の静的な分析ツールは、複合アプリケーション123のコンポーネント間の相互関係を分析するには不適当である。図3を参照すると、アプリケーションモデル126についての実装例は、複数の言語カテゴリを含むものであり、各々のコンポーネントは、コンポーネントのプログラミング言語に従ってカテゴリ内に配置され、各々のカテゴリは、コンポーネントタイプ間の相互関係の最良の形態及び最悪の形態を記述するメタデータを含む。相互関係の最良の形態及び最悪の形態を記述するメタデータは、いずれかの適切なソースからのものとすることができるが、好ましくは、ServiceComponentDefinitionLanguageSCDLから提供される。このように、アプリケーションモデル126は、好ましくは、図3において言語1310A、言語2310B、...、言語N310Nとして示される複数の言語カテゴリを含む。各々の言語カテゴリは、その言語で書かれた対応するコンポーネントと共に、そのカテゴリ内のコンポーネントと1つ又は複数の異なるカテゴリ内のコンポーネントとの間の相互関係を記述する適切なメタデータを含む。したがって、言語1310Aは1つ又は複数の対応するコンポーネント320A及びメタデータ330Aを含み、言語2310Bは1つ又は複数の対応するコンポーネント320B及びメタデータ330Bを含み、以下同様に、1つ又は複数の対応するコンポーネント320N及びメタデータ330Nを含む言語N310Nまで続く。アプリケーションモデル126の1つの具体的な例が、図4においてアプリケーションモデル126Aとして示される。この特定のアプリケーションモデルには、6つの異なるカテゴリが存在し、その各々は異なるプログラミング言語に対応する。図4に示される6つのカテゴリは、BusinessProcessExecutionLanguageBPEL410、Java420、MediationFlowControlMedFlow430、WebServiceDefinitionLanguageWSDL440、eXtensibleMarkupLanguageXMLSchemaDocumentXSD450、及びMonitorModel460を含む。アプリケーションモデル126Aは、示される6つのカテゴリの全てを含む複合アプリケーションのモデルである。図4において示される6つのカテゴリの各々410、420、430、440、450、及び460は、図3において310A、310B、...、310Nとして示される言語の適切な例である。複合アプリケーション内のコンポーネントの各々は、そのコンポーネントのプログラミング言語に従って、カテゴリの1つに割り当てられることになる。さらに、各々のカテゴリは、カテゴリ内のコンポーネントと1つ又は複数の異なるカテゴリ内のコンポーネントとの間の相互関係を記述するメタデータを含む。図5は、図1に示されるコンポーネント相互関係規則127について1つの適切な実装形態を示す。コンポーネント相互関係規則127は、好ましくは、その各々が条件と対応するアクションとを指定する複数の規則を含む。したがって、規則1510Aは条件520A及びアクション530Aを含み、規則2510Bは条件520B及びアクション530Bを含み、以下同様に、条件520N及び対応するアクション530Nを含む規則N510Nまで続く。各々の規則についての対応するアクションは、分析の結果に警告を付加することを含む場合がある。図5に示される条件520Aなどの条件の1つの適切な実装形態が図6に示される。条件520Aは、好ましくは、第1の言語610と、第2の言語620と、言語間の何らかの相互関係630とを指定する。1つの具体的な実装形態においては、相互関係630は望ましい相互関係最良の形態であり、条件520Aが満たされない場合には、コンポーネント間の望ましい相互関係が存在しなかったことを示す警告が分析結果に付加されることになる。代替的な実装形態においては、相互関係630は望ましくない相互関係最悪の形態であり、条件520が満たされる場合には、コンポーネント間の望ましくない相互関係が存在することを示す警告が分析結果に付加されることになる。図5及び図6において示されるコンポーネント相互関係規則並びにその対応する条件及びアクションの例は、一例として示されており、限定的なものではない。本明細書における本開示及び特許請求の範囲は、複合アプリケーションに対応するアプリケーションモデルに対して実行することができる、あらゆる適切なコンポーネント相互関係規則にまで明確に及ぶ。図7を参照すると、方法700は、好ましくは、1つ又は複数のプロセッサ110によって実行されたときに、アプリケーション分析機構124によって行われる。最初に、コンポーネント相互関係規則が定められるステップ710。1つの特定の実装形態においては、コンポーネント相互関係規則はユーザである人間によって定められる。しかしながら、コンポーネント相互関係規則はソフトウェアによって定めることもできる。例えば、規則生成機構が、証明済みのロバストな複合アプリケーションのコンポーネント間の相互関係を分析して、1つ又は複数のコンポーネント相互関係規則を自動的に生成することができる。コンポーネント相互関係規則は、ユーザである人間によって定められる規則とコンピュータプロセスによって自動的に生成される規則の両方にまで明確に及ぶ。ステップ710において規則が定められると、複合アプリケーションが受信されるステップ720。次いで複合アプリケーションのモデルが生成されるステップ730。図3及び図4を参照して上述されたように、アプリケーションモデルは、好ましくは、各々が異なるプログラミング言語に対応する複数のカテゴリを含み、各コンポーネントは、コンポーネントのプログラミング言語に従ってカテゴリ内に配置され、それと共に、各カテゴリは、そのカテゴリ内のコンポーネントと1つ又は複数の異なるカテゴリ内のコンポーネントとの間の相互関係を記述するメタデータを含む。次いで、コンポーネント相互関係規則が選択されるステップ740。選択されたコンポーネント相互関係規則がモデルに対して実行されるステップ750。結果が生成されるステップ760。処理する規則がさらに存在するときステップ770=はいには、方法700は、再びステップ740に戻り、処理する規則がそれ以上存在しなくなるまで続きステップ770=いいえ、存在しなくなった時点で結果が出力されステップ780、方法700は完了する。ステップ760において生成される結果及び/又はステップ780において出力される結果は、複合アプリケーションについての統計情報と警告とを含むことができることに留意されたい。適切なコンポーネント相互関係規則の具体的な例が図8-図10に示される。図8-図10におけるコンポーネント相互関係規則810、910、及び1010は、図1及び図5において示されるコンポーネント相互関係規則127の具体的な例である。図8において示されるコンポーネント相互関係規則810は、遅延結合に関し、これは最良の形態を表す。第1行820はプログラミング構造をSCDLで指定し、一方、第2行830はビジネスプロセスをBPELで指定している。行840における条件が満たされたときに、行850においてプール変数setEarlyBoundがtrueにセットされ、行860において、BPELの新しいバージョンが自動的にピックアップされていないことの警告が結果に付加される。例2適切なコンポーネント相互関係規則の別の例910が図9に示されており、これは呼び出し問題を扱うものである。第1行920はSCDLのComponentステートメントであり、一方、第2行930はBPELファイルを呼び出すJavaステートメントである。行940及び950は、条件が満たされるかどうかを調べるテストを行い、満たされる場合には、行960において第1の警告を付加することができ、行970において第2の警告を付加することができる。この規則の論理は、JavaファイルがBPELコンポーネントを呼び出す場合には、そのBPELコンポーネントとは実行時に非同期的に対話すべきであることと、エラーが発生した場合には、バックエンドシステムが、外部からの修復を要する不整合状態になっている可能性があり、従って、適切な警告が結果に付加されることを示している。例3適切なコンポーネント相互関係規則の第3の例1010が図10に示されており、これは呼び出し形式を扱うものである。この規則は、同じ言語、即ちSCDLによって定められた2つのコンポーネントを有するが、いずれもXMLを用いて定められた2つの異なるスキーマ、即ちComponent及びImportに従うものであることに留意されたい。行1020は各コンポーネントを取得することを指定し、行1030においてそのコンポーネントについての実装タイプがJavaである場合には、行1040においてインポートが選択され、行1050における各々のインポートについて、行1060においてそのインポートがトランザクションを結合しない場合には、バックエンドシステムが最終的に矛盾した状態になる可能性があるため、行1070において警告が付加される。図7のステップ760において生成され、ステップ780において出力される例示的な結果Resultsが、例示的な複合アプリケーションについて、図11及び図12における1100として示される。結果には、図11に示されるように、複合アプリケーションに関する多くの異なるパラメータの明細事項が含まれる。結果には、図12に示されるように、複合アプリケーションを特徴付ける統計情報Statisticsを含むこともできる。図12に示される具体的な統計情報は、WSDL当たりの平均演算数、WSDL当たりの平均障害数、演算当たりの平均障害数、XSD毎の平均フィールド数、XSD当たりの平均ビジネスオブジェクトBO数、BO当たりの平均フィールド数、及びBPEL当たりの平均アクティビティ数を含む。結果には、図12に示されるように、1つ又は複数の警告Warningsが含まれることもある。種々の警告は、コンポーネント相互関係規則内の条件が結果に警告を付加することを指定しているときに、結果に付加される。図11及び図12における結果1100は、好ましくは、人であるプログラマに対して表示され、プログラマは、統計情報及び警告を用いて、複合アプリケーションが予測される通りに動作するかどうかを判断することができる。当然のことながら、統計情報及び警告はまた、コンポーネント相互関係規則に適合するようにコンポーネントの特定の変更を推奨することができる自動化されたプロセスによって、用いることもできる。本開示及び特許請求の範囲は、異なる言語で書かれたコンポーネント間で満たされるべき1つ又は複数の条件と条件の分析に応じて行われるアクションとを定めるコンポーネント相互関係規則の組への適合性について、異なるプログラミング言語で書かれたコンポーネントを含む複合アプリケーションを自動的に分析する手法を開示する。複合アプリケーションのモデルが生成され、そのモデルに対して規則が実行される。複合アプリケーションについての統計情報及び警告を含むことがある結果が出力される。複合アプリケーションの自動分析は、人的誤りを起こしやすいプロセスの大部分を取り除き、複合アプリケーションを分析するための一貫した手法を提供して、異なるプログラミング言語で書かれたコンポーネント間の相互関係がコンポーネント相互関係規則を満たすことを保証する。当業者であれば、特許請求の範囲内で多くのバリエーションが可能であることを認識するであろう。従って、本開示は、上記で具体的に示され説明されたが、当業者であれば、添付の特許請求の真意及び範囲から逸脱することなく形態及び細部におけるこれらの変更及び他の変更を本開示に対して為し得ることが理解されるであろう。