(57)【要約】  コンポーネント間のインタフェース定義によらず、アプリケーション実行時に、指定のコンポーネント間の内部処理同士を接続し、新たな処理を実行する。プログラム処理装置（１００）は、ルーティング部（２０１）とコネクタ部（３０１）とを生成し、起動されているプログラムを構成しているコンポーネント（２００）とコンポーネント（３００）の夫々にルーティング部（２０１）とコネクタ部（３０１）とを適用するアスペクト適用部（１０２）と、コンポーネント（２００）に適用されたルーティング部（２０１）と、コンポーネント（３００）に適用されたコネクタ部（３０１）の間で通信接続を確立させ、コンポーネント（３００）内の処理インストラクションの処理結果を、確立された通信接続を介してコンポーネント（２００）に送出させる構成管理部（１０１）と、を備える。
2011121873.tif 000002
【特許請求の範囲】
【請求項１】
複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用し、
前記複数の部品のうちの一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立し、
前記確立された通信接続を介して、前記一の部品内の第一処理の処理結果を、前記他の部品に送出する、
ことを含む、少なくとも１つの装置によって実行されるプログラム処理方法。
【請求項２】
請求項１に記載のプログラム処理方法であって、
前記第一処理の処理結果を送出することは、
前記他の部品に適用された前記接続要素が、前記第一処理に処理要求を送出し、
前記一の部品に適用された前記接続要素が、前記送出された処理要求に応じて前記第一処理を前記一の部品に実行させ、前記第一処理の処理結果を前記通信接続を介して前記他の部品に送出することを含むプログラム処理方法。
【請求項３】
請求項２に記載のプログラム処理方法であって、
前記送出された処理結果を用いて、前記他の部品内の第二処理を実行することを更に含むプログラム処理方法。
【請求項４】
請求項１乃至３いずれか一項に記載のプログラム処理方法であって、
前記起動されているプログラムに含まれる前記複数の部品のうち少なくとも一つに、当該部品に係るパラメータを計測するモニタ要素を適用し、
前記適用されたモニタ要素によって計測された前記パラメータの値に応じて、前記モニタ要素が適用された前記複数の部品の少なくとも１つの変更要求を送出する、ことを更に含み、
前記接続要素を適用することは、
前記送出された変更要求に応じて、当該変更要求で特定された部品を含む前記複数の部品に前記接続要素を適用することを特徴とするプログラム処理方法。
【請求項５】
請求項４に記載のプログラム処理方法であって、
前記接続要素を適用することは、前記変更要求で特定された前記部品を含む、少なくとも三つの部品に前記接続要素を適用し、
前記通信接続を確立することは、前記変更要求で特定された前記部品に適用された前記接続要素と通信接続を確立する他の接続要素を、前記モニタ要素によって計測された前記パラメータの値に応じて選択することを特徴とするプログラム処理方法。
【請求項６】
請求項４または５に記載のプログラム処理方法であって、
前記モニタ要素が計測する前記パラメータは、当該モニタ要素が適用された前記部品内の処理に係る負荷情報であることを特徴とするプログラム処理方法。
【請求項７】
請求項１乃至６いずれか一項に記載のプログラム処理方法であって、
前記接続要素を適用することは、一の装置で起動されている第一プログラムを構成している第一部品と、前記一の装置とネットワーク機器を介して接続する他の装置で起動されている第二プログラムを構成している第二部品と、に前記接続要素を適用し、
さらに、前記通信接続を確立する前に、前記第一部品に適用された前記接続要素と、前記第二部品に適用された前記接続要素とが通信接続可能な設定を前記ネットワーク機器に要求することを更に含むプログラム処理方法。
【請求項８】
請求項１乃至７いずれか一項に記載のプログラム処理方法であって、
前記プログラムはアスペクト指向性のプログラムであり、
前記接続要素を適用することは、前記接続要素を組み込んだアスペクトを用いて、前記部品に前記接続要素を適用することを特徴とするプログラム処理方法。
【請求項９】
複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用手段と、
前記適用手段によって、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理手段と、
を備えることを特徴とするプログラム処理装置。
【請求項１０】
コンピュータが読み出し可能な記憶媒体に格納されたコンピュータプログラムであって、
複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用処理と、
前記適用処理で、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理処理と、
を前記コンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム処理方法、プログラム処理装置、およびコンピュータプログラムに関する。特に、複数の部品から構成されるプログラムの実行時に、当該プログラムが動作するシステムの状況により当該プログラムを最適な構成に変更するプログラム処理方法、プログラム処理装置、およびコンピュータプログラムに関する。
【背景技術】
【０００２】
一般的なアプリケーションの構成方法では、アプリケーション設計の段階で特定のタスクを処理可能な比較的小さな機能単位に分割し、それらの小さな機能単位ごとにプログラムを作成する。これらのプログラムは、最終的に、プログラムのコンパイルとリンク操作によって結合され、一つのアプリケーションプログラムとなる。【０００３】
上記の方法では、アプリケーションをコンパイル、リンクする際にその構成が決定される。つまり、該当アプリケーションを実行するシステムの環境、状況が確定している前提で、システムへのアプリケーション投入前に構成を確定させるアプローチである。このような方法は、例えばアプリケーションが要求する外部機能が、オペレーティングシステム（Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ、Ｌｉｎｕｘなど）が持つ機能に限定され、かつ、アプリケーションの動作に含まれる操作が一定時間内に終了するなどの性能要件がない場合には有効な方法である。【０００４】
近年は、上記リンク操作の一部をアプリケーションの起動時に実施するためのアプローチが発明されている。これは、アプリケーションの構成を定義ファイルとして記述しておき、実行時にこの定義ファイルの記述内容に基づき機能単位間の結合を行うものである。従って、アプリケーションを実行環境へ配備（デプロイ）する時点では、アプリケーションの構成が確定されておらず、個々の機能単位が独立して存在していることになる。【０００５】
上記の方法では、アプリケーションを実行する環境によって、アプリケーションの構成を設定ファイルを用いて変更できることから、事前にリンクして構成を確定してしまう手法と比較して、比較的容易に構成を変更することが可能となる。【０００６】
特許文献１（特表２００６−５２６２０９号公報）においては、上記のアプリケーションの構成を定義する設定ファイルをメタデータとして定義し、かつ機能部品間のインタフェースの整合を調整するためにグルーコードを適用する手法が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００６−５２６２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述の一般的なアプリケーションの構成方法で構成されたアプリケーションに新たな機能を追加する場合、既存機能に係るプログラム（部品）と、新規機能に係るプログラム（部品）とのインタフェースを検証し、新たに定義する必要がある。アプリケーションの構成が複雑であるほど、新規機能追加に伴う新たなインタフェース定義に費やされる時間的コストまたは人的コストは、増大する。【０００９】
また、特許文献１に記載の方法においても、コンポーネント指向のアプリケーション構成技術であるＤｅｐｅｎｄｅｎｃｙ  Ｉｎｊｅｃｔｉｏｎ技術のように、あらかじめコンポーネントと呼ばれる機能部品の境界が特定のインタフェースによって定義されている必要がある。つまり、他コンポーネントと接続し得るインタフェースがクライアントコンポーネント、サーバコンポーネントにおいてコンポーネントの設計段階で決定される。【００１０】
従って、予めコンポーネント境界の定義されていないコンポーネント間の接続を要するアプリケーションの変更を行う場合は、コンポーネント境界の定義を見直す必要がある。【００１１】
本発明は、コンポーネント（部品）間のインタフェース定義によらず、アプリケーション（プログラム）実行時に、指定のコンポーネント間の内部処理同士を接続し、新たな処理を実行することを目的とする。
【課題を解決するための手段】
【００１２】
本発明によれば、複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用し、前記複数の部品のうちの一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立し、前記確立された通信接続を介して、前記一の部品内の第一処理の処理結果を、前記他の部品に送出する、ことを含む、少なくとも１つの装置によって実行されるプログラム処理方法が提供される。【００１３】
また、本発明によれば、複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用手段と、前記適用手段によって、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理手段と、を備えることを特徴とするプログラム処理装置が提供される。【００１４】
さらに、本発明によれば、コンピュータが読み出し可能な記憶媒体に格納されたコンピュータプログラムであって、複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用処理と、前記適用処理で、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理処理と、を前記コンピュータに実行させることを特徴とするコンピュータプログラムが提供される。
【発明の効果】
【００１５】
本発明は、コンポーネント（部品）間のインタフェース定義によらず、アプリケーション（プログラム）実行時に、指定のコンポーネント間の内部処理同士を接続し、新たな処理を実行することができる。
【図面の簡単な説明】
【００１６】
上述した目的及びその他の目的、特徴及び利点は、以下に述べる好適な実施の形態及びそれに付随する以下の図面によってさらに明らかになる。【００１７】
【図１】第１の実施形態に係るプログラム処理装置の機能ブロック図である。
【図２】ルーティング部とコネクタ部とを各コンポーネントに適用する動作を表すフローチャートである。
【図３】ルーティング部を設定する動作を表すフローチャートである。
【図４】アプリケーションに対して実行処理要求があった時の動作を示すフローチャートである。
【図５】第３の実施形態に係るプログラム処理装置と各サーバとを示す機能ブロック図である。
【図６】アプリケーションにモニタ機能を組み込む動作を示すフローチャートである。
【図７】コンポーネントの複製を複数のサーバに配備する動作を示すフローチャートである。
【図８】第４の実施形態に係るプログラム処理装置と各サーバとの機能ブロック図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００１９】
〔第１の実施形態〕
本発明を実施するための第１の実施形態は、プログラム処理装置１００で運用中のアプリケーションのコンポーネントのある処理の内容を別の処理に置き替える場合の実施形態である。例えば、入力された文字列の文字数をカウントしていた元の処理を、文字列のバイト数をカウントする新たな処理に変更するような場合である。
【００２０】
（構成の説明）
図１は、第１の実施形態に係るプログラム処理装置１００の機能ブロック図である。図１に示されるように、プログラム処理装置１００は、構成管理部１０１と、アスペクト適用部１０２と、コンポーネント２００と、コンポーネント３００と、を備える。
【００２１】
プログラム処理装置１００が備える各構成はいずれも、コンピュータプログラムによって実現される。具体的には、プログラム処理装置１００に内蔵されているプロセッサ（図示せず）が、不揮発性メモリなどの記録媒体（図示せず）に格納されているコンピュータプログラム（アプリケーションプログラム含む）を読み出し実行することによって、図１に図示されている各構成を実現する。
【００２２】
コンポーネント２００とコンポーネント３００は、プログラム処理装置１００によって起動されているアプリケーションプログラムを構成している部品である。
【００２３】
本実施形態において、コンポーネント２００は、初期状態、つまりコンポーネント内の一部処理の置き替え実行前から、プログラム処理装置１００内で起動されているアプリケーションのコンポーネントである。また、コンポーネント３００は、コンポーネント２００の一部処理を置き替える対象となるコンポーネントである。ここで部品とは、プログラムを構成する機能単位を表わし、コンポーネントの他にも、モジュール、クラス等も包含する概念である。
【００２４】
なお、本実施形態で起動されているプログラムは、アスペクト指向性のプログラム（ＡＯＰ：Ａｓｐｅｃｔ  Ｏｒｉｅｎｔｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ）とする。また、アスペクトとは、ＡＯＰで用いられる、プログラムに対して横断的に処理割り込みを実施するための定義である。ＡＯＰを実現したフレームワークとしてＪａｖａ（登録商標）言語におけるアスペクトＪや、Ｃ＃言語におけるアスペクトＳｈａｒｐなどがある。
【００２５】
構成管理部１０１は、各コンポーネントの配備や構成を管理する機能を有する。さらに言えば、構成管理部１０１は、ルーティング部２０１とコネクタ部３０１との間で通信接続を確立させ、コンポーネント３００内の特定の処理の処理結果を、確立された通信接続を介してコンポーネント２００に送出させる機能を有する。
【００２６】
アスペクト適用部１０２は、各コンポーネントに対してアスペクトを用いてルーティング部２０１またはコネクタ部３０１を適用する機能を有する。さらに言えば、アスペクト適用部１０２は、ルーティング部２０１とコネクタ部３０１とを生成し、コンポーネント２００及びコンポーネント３００の夫々にルーティング部２０１とコネクタ部３０１とを適用する機能を有する。
【００２７】
ここで通信接続を確立するとは、複数のコンポーネント間でデータやプログラム等の授受が可能な状態にすることである。本実施形態のように単一の装置（プログラム処理装置１００）内のローカルな接続であってもよいし、通信ネットワークを介した接続であってもよい。また、通信接続を介して送出するとは、当該通信接続を介してデータやプログラム等を送る処理のことである。以下では、個々の処理に応じて「送信する」「返却する」「転送する」等と使い分けているが、それらの用語は全て「送出する」の意に包含される。
【００２８】
図１においては、既にアスペクト適用部１０２によってコンポーネント２００にルーティング部２０１が適用され、コンポーネント３００にコネクタ部３０１が適用されている。この処理については、詳細に後述する。
【００２９】
ルーティング部２０１は、コンポーネント２００内の特定の処理の実行に割り込み、設定に従ってコンポーネント３００内の特定の処理に処理要求を送出する機能を有する。
【００３０】
コネクタ部３０１は、コンポーネント２００に組み込まれたルーティング部２０１から送出された処理要求に応じて、コンポーネント３００に特定の処理を実行させ、その処理結果をコンポーネント２００に送出する機能を有する。なお、コンポーネント２００とコンポーネント３００とは、同一プロセスで実行するか、ネットワークを利用してリモートで接続するかは問わない。
【００３１】
（動作の説明）
図２、図３及び、図４を用いて第１の実施形態におけるプログラム処理装置１００の動作を説明する。図２は、ルーティング部２０１とコネクタ部３０１とを各コンポーネントに適用する動作を表すフローチャートである。
【００３２】
まず、構成管理部１０１へアプリケーションの構成変更内容を入力する（ステップＳ１００）。この構成変更内容には、少なくとも以下の情報が含まれる。
・変更対象であるコンポーネント（本実施形態においてはコンポーネント２００）の処理インストラクションを特定する変更情報
・変更後に接続するコンポーネント（本実施形態においてはコンポーネント３００）の接続先処理インストラクションを特定する接続先情報
・接続に利用するルーティング部品（本実施形態においてはルーティング部２０１）を特定するルーティング情報
・接続に利用するコネクタ部品（本実施形態においてはコネクタ部３０１）を特定するコネクタ情報
【００３３】
ここで、処理インストラクションを特定する情報は、その実装言語により異なるが、一般的なオブジェクト指向言語においては、該当インストラクションが実行されるクラス及び、メソッドシグネチャ又は特定の変数への参照、変更を表わす識別子を含む。
【００３４】
次に、構成管理部１０１は、ステップＳ１００で得た構成変更内容のうち、コンポーネント２００に関する構成変更内容である、上記の変更情報及びルーティング情報を送出し、コンポーネント２００に対してルーティング部２０１を適用するアスペクトの生成をアスペクト適用部１０２に要求する（ステップＳ１０１）。
【００３５】
次に、アスペクト適用部１０２は、コンポーネント２００に関する構成変更内容を受信する（ステップＳ１０２）。
【００３６】
次に、アスペクト適用部１０２は、ステップＳ１０２で受信したコンポーネント２００に関する構成変更内容を元に、ルーティング部２０１を組み込んだアスペクトを生成する（ステップＳ１０３）。
【００３７】
次に、アスペクト適用部１０２は、ステップＳ１０３で生成したアスペクトをコンポーネント２００に適用することにより、コンポーネント２００にルーティング部２０１を適用する（ステップＳ１０４）。
【００３８】
次に、構成管理部１０１は、構成変更後に接続される接続先処理インストラクションを有するコンポーネント３００を配備する（ステップＳ１０５）。
【００３９】
次に、構成管理部１０１は、ステップＳ１００で入力された構成変更内容のうちコンポーネント３００に関する構成変更内容である、上記の接続先情報及びコネクタ情報を送出し、コンポーネント３００に対してコネクタ部３０１を適用するアスペクトの生成をアスペクト適用部１０２に要求する（ステップＳ１０６）。
【００４０】
次に、アスペクト適用部１０２は、コンポーネント３００に関する構成変更内容を受信する（ステップＳ１０７）。
【００４１】
次に、アスペクト適用部１０２は、ステップＳ１０７で受信したコンポーネント３００に関する構成変更内容を元に、コネクタ部３０１を組み込んだアスペクトを生成する（ステップＳ１０８）。
【００４２】
次に、アスペクト適用部１０２は、ステップＳ１０８で生成したアスペクトをコンポーネント３００に適用することにより、コンポーネント３００にコネクタ部３０１を適用する（ステップＳ１０９）。
【００４３】
図３は、ルーティング部２０１を設定する動作を表すフローチャートである。まず、構成管理部１０１は、ルーティング部２０１がコネクタ部３０１に接続するようルーティング部２０１に接続要求を送信する（ステップＳ２００）。ここで、送信する接続要求には、上記のコネクタ情報が含まれる。
【００４４】
次に、ルーティング部２０１は、ステップＳ２００で送信された接続要求を受信する（ステップＳ２０１）。
【００４５】
次に、ルーティング部２０１は、ステップＳ２０１で受信した接続要求を元に、コネクタ部３０１と接続するようにルーティングを設定する（ステップＳ２０２）。
【００４６】
ここでルーティングを設定するとは、コンポーネント２００及びコンポーネント３００が同一プロセスで動作しているような場合には、ローカルでコネクタ部３０１を呼び出すようにルーティング部２０１の処理内容を設定することであり、コンポーネント２００及びコンポーネント３００が別プロセスで動作しているような場合には、通信機能を利用してコンポーネント３００を呼び出すようにルーティング部２０１の処理内容を設定することである。
【００４７】
なお、ここで説明した設定は、ルーティング部２０１の実行インスタンスのパラメータに対して設定するか、もしくは、ルーティング部２０１が処理実行時に参照するファイルに設定することによって実現できる。また、本実施形態とは異なるが、コンポーネント２００とコンポーネント３００がネットワーク的に離れた環境で動作しているような場合には、互いに別プロセスで動作することになるので、後者のようにルーティング部２０１を設定する。
【００４８】
図４は、アプリケーション動作時、つまりアプリケーションに対して実行処理要求が送られた時の動作を示すフローチャートである。
【００４９】
まず、ルーティング部２０１は、コンポーネント２００に対する処理要求の延長で、ステップＳ１０４で適用されたアスペクトに応じてアスペクト実行フレームワークを介して処理要求を受信する（ステップＳ３００）。
【００５０】
次に、ルーティング部２０１は、ステップＳ２０２で設定したルーティング設定に従い、コネクタ部３０１に接続する（通信接続を確立する）（ステップＳ３０１）。
【００５１】
次に、ルーティング部２０１は、コネクタ部３０１に処理要求を転送する（ステップＳ３０２）。
【００５２】
次に、コネクタ部３０１は、ステップＳ３０２で転送された処理要求を受信する（ステップＳ３０３）。
【００５３】
次に、コネクタ部３０１は、ステップＳ１０６で受信した接続先情報で指定されたコンポーネント３００の処理インストラクションを実行する（ステップＳ３０４）。
【００５４】
次に、コンポーネント３００は、ステップＳ３０４で実行された処理インストラクションの処理結果をコネクタ部３０１に返却する（ステップＳ３０５）。ここで処理結果とは、一般的な処理言語においては、関数の返り値である。
【００５５】
次に、コネクタ部３０１は、ステップＳ３０５で受信した処理結果をルーティング部２０１に返却する（ステップＳ３０６）。
【００５６】
次に、ルーティング部２０１は、ステップＳ３０６で受信した処理結果をコンポーネント２００に返却する（ステップＳ３０７）。この時、本来コンポーネント２００で実行されるはずであった処理インストラクションは実行せずに、該当処理インストラクションを要求した処理に、処理結果を返却する。
【００５７】
（効果の説明）
第１の実施形態では、ＡＯＰを利用してコンポーネント間を接続するルーティング部２０１及び、コネクタ部３０１を各コンポーネントに組み込む。これにより、コンポーネントの設計時点での外部インタフェースによらず特定の内部インタフェースの機能を置換することが可能となる。従って、アプリケーションの軽微な仕様変更や、一時的なバグの修正を短時間に実行することが可能となり、システムを常に健全な状態に保つことができる。
【００５８】
また、アプリケーションプログラムが動作している状況下で、その時の環境に応じてアプリケーションプログラムの構成を変更することができる。
【００５９】
さらに、運用中にアプリケーションプログラムを容易に変更できるので、アプリケーション開発の人的コストや時間的コストが縮小する。
【００６０】
〔第２の実施形態〕
本発明を実施するための第２の実施形態は、プログラム処理装置１００で運用中のアプリケーションプログラムのコンポーネント内の特定の処理に新たな処理を追加することにより、当該アプリケーションプログラムに備わっていなかった機能を追加する場合の実施形態である。例えば、第２の実施形態は、特定の処理実行時の処理要求に含まれる特定の情報によって、実行優先度を制御する機能、いわゆるキューを追加するような場合に適用される。
【００６１】
（構成の説明）
本実施形態のプログラム処理装置１００の構成は、第１の実施形態と同様であり、すなわち図１に示される構成である。
【００６２】
（動作の説明）
また、本実施形態のプログラム処理装置１００の動作については、第１の実施形態のうち以下の手順において異なる。
【００６３】
図４のステップＳ３０７の後に、コンポーネント３００（コネクタ部３０１）から返却された処理結果を用いて、本来コンポーネント２００で実行されるはずであったコンポーネント２００内の処理インストラクションを実行する点で異なる。このとき、コンポーネント３００から返却された処理結果を上記処理インストラクションの入力とする。但し、ここで処理結果とは第１の実施形態と異なり、ステップＳ３００で受信した上記処理インストラクションへの処理要求に含まれる情報が、コンポーネント３００によって編集されたものを指し、返り値ではない。
【００６４】
（効果の説明）
第２の実施形態では、コンポーネントに他のコンポーネントを接続させることにより、コンポーネントに備わっていなかった新たな機能を追加できる。これにより、例えば特定の処理インストラクションに対してアクセス制御の仕組みを組み込むことや、優先度制御の機能や、処理要求に含まれる情報のチェック機能等を組み込むことが可能となる。また、これらの機能をアプリケーションコンポーネントの実装に改変を加えることなく適用できる効果がある。
【００６５】
〔第３の実施形態〕
本発明を実施するための第３の実施形態は、運用中のアプリケーションのコンポーネントの複製を複数のサーバに配備し、それら複製コンポーネント群と元コンポーネントを接続することによりアプリケーションのスケールアウトを実現するような場合に適用される実施形態である。
【００６６】
（構成の説明）
図５は、第３の実施形態に係るプログラム処理装置１１０と各サーバ１２０、１３０、１４０とを示す機能ブロック図である。
【００６７】
本実施形態のコンポーネント２００は、ルーティング部２０１に加えて、さらにモニタ部２０２が適用されている。この適用に関する動作については、図６を用いて詳細に後述する。
【００６８】
モニタ部２０２は、適用されたコンポーネント２００に係るパラメータを計測する。なお、図５においては、コンポーネント２００にのみモニタ部２０２を適用しているが、複数のコンポーネントに同等のモニタ部を適用することによって、これらのコンポーネントから成るアプリケーション全体の状態を計測することも可能である。モニタ部２０２によって計測されたパラメータは、変更判断部１０３に送信される。なおモニタ部２０２から変更判断部１０３にパラメータを送信する処理は、逐次処理であってもよいしバッチ処理であってもよい。
【００６９】
本実施形態のプログラム処理装置１１０は、第１の実施形態のプログラム処理装置１００と比べて、変更判断部１０３が追加された点と、コンポーネント２００、コンポーネント３００が自機内に存在しない点とにおいて異なる。第３の実施形態の構成は、第１の実施形態の構成に加えて以下の構成が追加される点が異なる。
【００７０】
変更判断部１０３は、システムの状況からアプリケーションの構成を変更すべきか判断し、当該判断に応じてアプリケーションの変更を要求する機能を有する。より詳細には、変更判断部１０３は、モニタ部２０２によって計測されたパラメータの値に応じて、モニタ部２０２が適用されたコンポーネント２００の変更要求を送出する。そして、アスペクト適用部１０２は、送出された当該変更要求に応じ、当該変更要求で特定されたコンポーネント２００と他のコンポーネント（本実施形態ではコンポーネント３００、またはコンポーネント４００）にルーティング部またはコネクタ部を適用する。
【００７１】
なお、図５においては、各々のコンポーネント２００、３００、４００は、既に各サーバ１２０、１３０、１４０に配備されている。この配備に関する動作については、図７を用いて詳細に後述する。
【００７２】
（動作の説明）
図３、図４、図６及び図７を用いて第３の実施形態における動作を説明する。
【００７３】
図６は、アプリケーションにモニタ機能を組み込む動作を示すフローチャートである。
【００７４】
まず、変更判断部１０３は、コンポーネント２００に対してモニタ部２０２を適用するアスペクトの生成をアスペクト適用部１０２に要求する（ステップＳ４００）。ここで、コンポーネント２００のどのインストラクションにモニタ部２０２を適用するかについては、コンポーネント２００の全ての内部インストラクションを指定する。但し、プログラム言語的、アプリケーションアーキテクチャ的に意味を持たないインストラクションであることが明らかな場合は、それを適用対象のインストラクションから除外してもよい。
【００７５】
次に、アスペクト適用部１０２は、ステップＳ４００で要求されたアスペクト生成要求を受信する（ステップＳ４０１）。
【００７６】
次に、アスペクト適用部１０２は、指定されたインストラクションにモニタ部２０２を組み込むアスペクトを生成する（ステップＳ４０２）。
【００７７】
次に、アスペクト適用部１０２は、生成したアスペクトをコンポーネント２００に適用する（ステップＳ４０３）。
【００７８】
図７は、コンポーネント２００の複製を複数のサーバに配備する動作を示すフローチャートである。
【００７９】
まず、モニタ部２０２は、システムの状態をモニタし、負荷情報等のパラメータを計測、記録する（ステップＳ５００）。
【００８０】
次に、モニタ部２０２は、記録したパラメータを変更判断部１０３に送信する（ステップＳ５０１）。ここで、負荷情報とはモニタ部２０２が適用されたコンポーネント２００の処理負荷を示す情報であって、例えば、一定期間内に受信した処理要求の量、処理の要した時間などが挙げられる。
【００８１】
次に、変更判断部１０３は、ステップＳ５０１で送信されたパラメータを受信する（ステップＳ５０２）。
【００８２】
次に、変更判断部１０３は、モニタ部２０２から送信されたパラメータの値を分析し、コンポーネント２００内のいずれの処理インストラクションを変更すべきか判断する。（ステップＳ５０３）。本実施形態においては、パラメータに含まれる負荷情報が示す処理負荷が所定の値より高い（大きい）処理インストラクションを、変更すべき処理インストラクションとする。
【００８３】
次に、変更判断部１０３は、変更すべき処理インストラクションを有するコンポーネント２００に対してルーティング部２０１を適用するアスペクトの生成要求をアスペクト適用部１０２に要求する（ステップＳ５０４）。
【００８４】
続く、ステップＳ５０５、ステップＳ５０６及び、ステップＳ５０７は、それぞれ図２のステップＳ１０２、ステップＳ１０３及び、ステップＳ１０４と同様の動作であるため、ここでの説明は割愛する。
【００８５】
次に、構成管理部１０１は、コンポーネント２００の複製であるコンポーネント３００、コンポーネント４００を複数のサーバ１３０、１４０に配備する（ステップＳ５０８）。ステップＳ５０８は、第１の実施形態のステップＳ１０５において、配備するコンポーネントがコンポーネント２００の複製である点、配備先が複数のサーバ１３０、１４０である点が異なるのみで、動作は同じである。
【００８６】
次に、変更判断部１０３は、コネクタ部３０１またはコネクタ部４０１を適用するアスペクトの生成をアスペクト適用部１０２に要求する（ステップＳ５０９）。続くステップＳ５１０及び、ステップＳ５１１は、第１の実施形態におけるステップＳ１０７及びステップＳ１０８と同じ動作である。
【００８７】
次に、アスペクト適用部１０２は、ステップＳ５１１で生成したアスペクトを、コンポーネント３００及びコンポーネント４００に適用する（ステップＳ５１２）。これは、第１の実施形態におけるステップＳ１０９で適用先がコンポーネント３００及びコンポーネント４００となった点を除いて、動作は同様である。
【００８８】
続いて、ルーティング部２０１を設定するが、これについては、図３を用いて説明した動作と以下の点を除いて同様である。
【００８９】
まず、ステップＳ２００で、ルーティング部２０１に送信する設定の内容が、ルーティング部２０１がコネクタ部３０１又はコネクタ部４０１に接続するように設定される点が異なる。これは、ルーティング部２０１が受信した処理要求をコネクタ部３０１もしくはコネクタ部４０１に分散させて転送させる設定である。このためステップＳ２０２でルーティング部２０１に設定されるルーティング設定も、コネクタ部３０１又はコネクタ部４０１に接続する設定となる点が異なる。
【００９０】
続く手順は、図４を用いて説明した動作、つまりアプリケーションに対して実行処理要求があった時の動作と、以下の点を除いて同様である。
【００９１】
ステップＳ３０１で、ルーティング部２０１の接続先がコネクタ部３０１又はコネクタ部４０１に設定されているため、コネクタ部３０１又はコネクタ部４０１のいずれにも接続できる点が異なる。従って以降のステップＳ３０２からステップＳ３０６についても、コンポーネント３００及びコネクタ部３０１と記載している部分が、それぞれコンポーネント４００及びコネクタ部４０１となる場合がある点が第１の実施形態における動作と異なる。
【００９２】
コネクタ部３０１またはコネクタ部４０１のいずれに接続するかの判断については、以下のような場合が考えられる。最も単純な方法としては、処理要求を受信するたびに接続先を順番に変更するラウンドロビン法などがある。
【００９３】
また、図５では図示しないが、コンポーネント３００とコンポーネント４００にもモニタ部２０２と同等の要素を適用しているのであれば、次のように判断することも考えられる。構成管理部１０１は、コンポーネント３００とコンポーネント４００に係るパラメータ（負荷情報）を取得し、取得されたパラメータの値に応じて、コネクタ部３０１またはコネクタ部４０１のいずれに接続するか選択してもよい。例えば、処理負荷が低いコンポーネントに適用されたコネクタ部とルーティング部２０１との接続を確立してもよい。
【００９４】
（効果の説明）
第３の実施形態には、コンポーネント２００の接続先を複数用意し、またコンポーネント２００と同じコンポーネントを接続先とすることにより、アプリケーションの高負荷時に処理を分散する効果がある。これにより、アプリケーション設計時には想定していなかったコンポーネント内の特定処理の性能問題を、短時間で回避する仕組みを提供できる。
【００９５】
また、リアルタイムなシステムの状況をモニタリングし、システムの状況の変化によってアプリケーションの構成を変更することができるので、システムを常に最適な状態に保つことが可能となる。
【００９６】
〔第４の実施形態〕
本発明を実施するための第４の実施形態は、第３の実施形態において、分散配備されるコンポーネントを、ネットワーク的に分断されているサーバに配備する場合で、ルータ等のネットワーク機器への設定が必要な場合の実施形態である。例えば、ＶＬＡＮなどを利用しており、ルータハードウェアに対して設定変更を実施するような場合である。
【００９７】
（構成の説明）
図８は、第４の実施形態に係るプログラム処理装置１１０と各サーバ１２０、１３０、１４０との機能ブロック図である。
【００９８】
図８の構成は、図５の構成に加えて、プログラム処理装置１１０と各サーバ１２０、１３０、１４０とがネットワーク機器１５０を介して接続されている点において異なる。すなわち、サーバ１２０で起動しているプログラムを構成しているコンポーネント２００にルーティング部２０１を適用している。また、サーバ１２０とネットワーク機器１５０を介して接続しているサーバ１３０（または１４０）で起動しているプログラムを構成するコンポーネント３００（または４００）にコネクタ部３０１（または４０１）を適用している。ここで、ネットワーク機器１５０は、例えばルータである。
【００９９】
（動作の説明）
本実施形態の動作については、ルーティング部２０１とコネクタ部３０１（または４０１）との間で通信接続を確立する前に、当該通信接続を可能とする設定をネットワーク機器１５０に要求する点において、第３の実施形態の動作手順と異なる。
【０１００】
より詳細には、図７のステップＳ５０８に先だち、コンポーネント２００が動作するサーバ１２０から、コンポーネント３００（またはコンポーネント４００）が動作するサーバ１３０（または１４０）へ接続可能となるように、ネットワーク機器１５０にネットワーク設定を要求する。
【０１０１】
設定要求を受信したネットワーク機器１５０は、受信した設定内容を適用し、コンポーネント２００が動作するサーバ１２０から、コンポーネント３００（またはコンポーネント４００）が動作するサーバ１３０（または１４０）への接続を有効にする。
【０１０２】
（効果の説明）
第４の実施形態によれば、複製したコンポーネントの配備に合わせてネットワーク機器の設定を実施することにより、例えば遠隔のシステムへ処理を分散させることが可能となる。これは、近年発展しつづけているクラウド環境を利用した、分散処理システムの自動構築を可能とする。
【０１０３】
以上、図面を参照して本発明の実施形態について述べたが、これらは例示であり、上記以外の様々な構成を採用することもできる。
【０１０４】
上記の実施形態では、本発明の接続要素を、ルーティング部とコネクタ部として説明した。各実施形態の説明において、ルーティング部とコネクタ部とは、別々の機能を有するように説明したが、これに限らなくてもよい。すなわち、双方の機能を併せ持つ接続要素を適用し、状況に応じてルーティング部として機能させたり、コネクタ部として機能させたりしてもよい。
【０１０５】
上記実施形態ではプログラム処理装置の各部がコンピュータプログラムにより各種機能として論理的に実現されることを例示した。しかし、このような各部の各々を固有のハードウェアとして形成することもでき、ソフトウェアとハードウェアとの組み合わせとして実現することもできる。
【０１０６】
また、上記実施形態の説明には、複数のフローチャートを用いており、それぞれに複数のステップを順番に記載してあるが、その記載の順番は、本発明のプログラム処理方法のステップを実行する順番を限定するものではない。このため、本発明のプログラム処理方法を実行するときには、その複数のステップの順番は内容的に支障しない範囲で変更することができる。
【０１０７】
なお、当然ながら、上述した実施の形態は、その内容が相反しない範囲で組み合わせることができる。また、上述した実施の形態では、各構成要素の機能などを具体的に説明したが、その機能などは本願発明を満足する範囲で各種に変更することができる。
【０１０８】
本発明は、アプリケーションのメンテナンス、アプリケーションのスケーラビリティの確保に利用可能であり、大規模なシステムにおけるアプリケーションの自動構成基盤として利用できる。
【０１０９】
この出願は、２０１０年３月３０日に出願された日本出願特願２０１０−０７９２２６号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2011121873.tif 000003
【図２】
2011121873.tif 000004
【図３】
2011121873.tif 000005
【図４】
2011121873.tif 000006
【図５】
2011121873.tif 000007
【図６】
2011121873.tif 000008
【図７】
2011121873.tif 000009
【図８】
2011121873.tif 000010
【国際調査報告】
2011121873.tif 000011
2011121873.tif 000012
2011121873.tif 000013
2011121873.tif 000014