JPWO2011121873A1 - プログラム処理方法、プログラム処理装置、およびコンピュータプログラム - Google Patents

プログラム処理方法、プログラム処理装置、およびコンピュータプログラム Download PDF

Info

Publication number
JPWO2011121873A1
JPWO2011121873A1 JP2012508038A JP2012508038A JPWO2011121873A1 JP WO2011121873 A1 JPWO2011121873 A1 JP WO2011121873A1 JP 2012508038 A JP2012508038 A JP 2012508038A JP 2012508038 A JP2012508038 A JP 2012508038A JP WO2011121873 A1 JPWO2011121873 A1 JP WO2011121873A1
Authority
JP
Japan
Prior art keywords
program
component
connection
unit
connection element
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.)
Granted
Application number
JP2012508038A
Other languages
English (en)
Other versions
JP5713007B2 (ja
Inventor
賢司 副島
賢司 副島
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2012508038A priority Critical patent/JP5713007B2/ja
Publication of JPWO2011121873A1 publication Critical patent/JPWO2011121873A1/ja
Application granted granted Critical
Publication of JP5713007B2 publication Critical patent/JP5713007B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/316Aspect-oriented programming techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

コンポーネント間のインタフェース定義によらず、アプリケーション実行時に、指定のコンポーネント間の内部処理同士を接続し、新たな処理を実行する。プログラム処理装置(100)は、ルーティング部(201)とコネクタ部(301)とを生成し、起動されているプログラムを構成しているコンポーネント(200)とコンポーネント(300)の夫々にルーティング部(201)とコネクタ部(301)とを適用するアスペクト適用部(102)と、コンポーネント(200)に適用されたルーティング部(201)と、コンポーネント(300)に適用されたコネクタ部(301)の間で通信接続を確立させ、コンポーネント(300)内の処理インストラクションの処理結果を、確立された通信接続を介してコンポーネント(200)に送出させる構成管理部(101)と、を備える。

Description

本発明は、プログラム処理方法、プログラム処理装置、およびコンピュータプログラムに関する。特に、複数の部品から構成されるプログラムの実行時に、当該プログラムが動作するシステムの状況により当該プログラムを最適な構成に変更するプログラム処理方法、プログラム処理装置、およびコンピュータプログラムに関する。
一般的なアプリケーションの構成方法では、アプリケーション設計の段階で特定のタスクを処理可能な比較的小さな機能単位に分割し、それらの小さな機能単位ごとにプログラムを作成する。これらのプログラムは、最終的に、プログラムのコンパイルとリンク操作によって結合され、一つのアプリケーションプログラムとなる。
上記の方法では、アプリケーションをコンパイル、リンクする際にその構成が決定される。つまり、該当アプリケーションを実行するシステムの環境、状況が確定している前提で、システムへのアプリケーション投入前に構成を確定させるアプローチである。このような方法は、例えばアプリケーションが要求する外部機能が、オペレーティングシステム(Windows(登録商標)、MacOS、Linuxなど)が持つ機能に限定され、かつ、アプリケーションの動作に含まれる操作が一定時間内に終了するなどの性能要件がない場合には有効な方法である。
近年は、上記リンク操作の一部をアプリケーションの起動時に実施するためのアプローチが発明されている。これは、アプリケーションの構成を定義ファイルとして記述しておき、実行時にこの定義ファイルの記述内容に基づき機能単位間の結合を行うものである。従って、アプリケーションを実行環境へ配備(デプロイ)する時点では、アプリケーションの構成が確定されておらず、個々の機能単位が独立して存在していることになる。
上記の方法では、アプリケーションを実行する環境によって、アプリケーションの構成を設定ファイルを用いて変更できることから、事前にリンクして構成を確定してしまう手法と比較して、比較的容易に構成を変更することが可能となる。
特許文献1(特表2006−526209号公報)においては、上記のアプリケーションの構成を定義する設定ファイルをメタデータとして定義し、かつ機能部品間のインタフェースの整合を調整するためにグルーコードを適用する手法が提案されている。
特表2006−526209号公報
上述の一般的なアプリケーションの構成方法で構成されたアプリケーションに新たな機能を追加する場合、既存機能に係るプログラム(部品)と、新規機能に係るプログラム(部品)とのインタフェースを検証し、新たに定義する必要がある。アプリケーションの構成が複雑であるほど、新規機能追加に伴う新たなインタフェース定義に費やされる時間的コストまたは人的コストは、増大する。
また、特許文献1に記載の方法においても、コンポーネント指向のアプリケーション構成技術であるDependency Injection技術のように、あらかじめコンポーネントと呼ばれる機能部品の境界が特定のインタフェースによって定義されている必要がある。つまり、他コンポーネントと接続し得るインタフェースがクライアントコンポーネント、サーバコンポーネントにおいてコンポーネントの設計段階で決定される。
従って、予めコンポーネント境界の定義されていないコンポーネント間の接続を要するアプリケーションの変更を行う場合は、コンポーネント境界の定義を見直す必要がある。
本発明は、コンポーネント(部品)間のインタフェース定義によらず、アプリケーション(プログラム)実行時に、指定のコンポーネント間の内部処理同士を接続し、新たな処理を実行することを目的とする。
本発明によれば、複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用し、前記複数の部品のうちの一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立し、前記確立された通信接続を介して、前記一の部品内の第一処理の処理結果を、前記他の部品に送出する、ことを含む、少なくとも1つの装置によって実行されるプログラム処理方法が提供される。
また、本発明によれば、複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用手段と、前記適用手段によって、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理手段と、を備えることを特徴とするプログラム処理装置が提供される。
さらに、本発明によれば、コンピュータが読み出し可能な記憶媒体に格納されたコンピュータプログラムであって、複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用処理と、前記適用処理で、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理処理と、を前記コンピュータに実行させることを特徴とするコンピュータプログラムが提供される。
本発明は、コンポーネント(部品)間のインタフェース定義によらず、アプリケーション(プログラム)実行時に、指定のコンポーネント間の内部処理同士を接続し、新たな処理を実行することができる。
上述した目的及びその他の目的、特徴及び利点は、以下に述べる好適な実施の形態及びそれに付随する以下の図面によってさらに明らかになる。
第1の実施形態に係るプログラム処理装置の機能ブロック図である。 ルーティング部とコネクタ部とを各コンポーネントに適用する動作を表すフローチャートである。 ルーティング部を設定する動作を表すフローチャートである。 アプリケーションに対して実行処理要求があった時の動作を示すフローチャートである。 第3の実施形態に係るプログラム処理装置と各サーバとを示す機能ブロック図である。 アプリケーションにモニタ機能を組み込む動作を示すフローチャートである。 コンポーネントの複製を複数のサーバに配備する動作を示すフローチャートである。 第4の実施形態に係るプログラム処理装置と各サーバとの機能ブロック図である。
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
〔第1の実施形態〕
本発明を実施するための第1の実施形態は、プログラム処理装置100で運用中のアプリケーションのコンポーネントのある処理の内容を別の処理に置き替える場合の実施形態である。例えば、入力された文字列の文字数をカウントしていた元の処理を、文字列のバイト数をカウントする新たな処理に変更するような場合である。
(構成の説明)
図1は、第1の実施形態に係るプログラム処理装置100の機能ブロック図である。図1に示されるように、プログラム処理装置100は、構成管理部101と、アスペクト適用部102と、コンポーネント200と、コンポーネント300と、を備える。
プログラム処理装置100が備える各構成はいずれも、コンピュータプログラムによって実現される。具体的には、プログラム処理装置100に内蔵されているプロセッサ(図示せず)が、不揮発性メモリなどの記録媒体(図示せず)に格納されているコンピュータプログラム(アプリケーションプログラム含む)を読み出し実行することによって、図1に図示されている各構成を実現する。
コンポーネント200とコンポーネント300は、プログラム処理装置100によって起動されているアプリケーションプログラムを構成している部品である。
本実施形態において、コンポーネント200は、初期状態、つまりコンポーネント内の一部処理の置き替え実行前から、プログラム処理装置100内で起動されているアプリケーションのコンポーネントである。また、コンポーネント300は、コンポーネント200の一部処理を置き替える対象となるコンポーネントである。ここで部品とは、プログラムを構成する機能単位を表わし、コンポーネントの他にも、モジュール、クラス等も包含する概念である。
なお、本実施形態で起動されているプログラムは、アスペクト指向性のプログラム(AOP:Aspect Oriented Programming)とする。また、アスペクトとは、AOPで用いられる、プログラムに対して横断的に処理割り込みを実施するための定義である。AOPを実現したフレームワークとしてJava(登録商標)言語におけるアスペクトJや、C#言語におけるアスペクトSharpなどがある。
構成管理部101は、各コンポーネントの配備や構成を管理する機能を有する。さらに言えば、構成管理部101は、ルーティング部201とコネクタ部301との間で通信接続を確立させ、コンポーネント300内の特定の処理の処理結果を、確立された通信接続を介してコンポーネント200に送出させる機能を有する。
アスペクト適用部102は、各コンポーネントに対してアスペクトを用いてルーティング部201またはコネクタ部301を適用する機能を有する。さらに言えば、アスペクト適用部102は、ルーティング部201とコネクタ部301とを生成し、コンポーネント200及びコンポーネント300の夫々にルーティング部201とコネクタ部301とを適用する機能を有する。
ここで通信接続を確立するとは、複数のコンポーネント間でデータやプログラム等の授受が可能な状態にすることである。本実施形態のように単一の装置(プログラム処理装置100)内のローカルな接続であってもよいし、通信ネットワークを介した接続であってもよい。また、通信接続を介して送出するとは、当該通信接続を介してデータやプログラム等を送る処理のことである。以下では、個々の処理に応じて「送信する」「返却する」「転送する」等と使い分けているが、それらの用語は全て「送出する」の意に包含される。
図1においては、既にアスペクト適用部102によってコンポーネント200にルーティング部201が適用され、コンポーネント300にコネクタ部301が適用されている。この処理については、詳細に後述する。
ルーティング部201は、コンポーネント200内の特定の処理の実行に割り込み、設定に従ってコンポーネント300内の特定の処理に処理要求を送出する機能を有する。
コネクタ部301は、コンポーネント200に組み込まれたルーティング部201から送出された処理要求に応じて、コンポーネント300に特定の処理を実行させ、その処理結果をコンポーネント200に送出する機能を有する。なお、コンポーネント200とコンポーネント300とは、同一プロセスで実行するか、ネットワークを利用してリモートで接続するかは問わない。
(動作の説明)
図2、図3及び、図4を用いて第1の実施形態におけるプログラム処理装置100の動作を説明する。図2は、ルーティング部201とコネクタ部301とを各コンポーネントに適用する動作を表すフローチャートである。
まず、構成管理部101へアプリケーションの構成変更内容を入力する(ステップS100)。この構成変更内容には、少なくとも以下の情報が含まれる。
・変更対象であるコンポーネント(本実施形態においてはコンポーネント200)の処理インストラクションを特定する変更情報
・変更後に接続するコンポーネント(本実施形態においてはコンポーネント300)の接続先処理インストラクションを特定する接続先情報
・接続に利用するルーティング部品(本実施形態においてはルーティング部201)を特定するルーティング情報
・接続に利用するコネクタ部品(本実施形態においてはコネクタ部301)を特定するコネクタ情報
ここで、処理インストラクションを特定する情報は、その実装言語により異なるが、一般的なオブジェクト指向言語においては、該当インストラクションが実行されるクラス及び、メソッドシグネチャ又は特定の変数への参照、変更を表わす識別子を含む。
次に、構成管理部101は、ステップS100で得た構成変更内容のうち、コンポーネント200に関する構成変更内容である、上記の変更情報及びルーティング情報を送出し、コンポーネント200に対してルーティング部201を適用するアスペクトの生成をアスペクト適用部102に要求する(ステップS101)。
次に、アスペクト適用部102は、コンポーネント200に関する構成変更内容を受信する(ステップS102)。
次に、アスペクト適用部102は、ステップS102で受信したコンポーネント200に関する構成変更内容を元に、ルーティング部201を組み込んだアスペクトを生成する(ステップS103)。
次に、アスペクト適用部102は、ステップS103で生成したアスペクトをコンポーネント200に適用することにより、コンポーネント200にルーティング部201を適用する(ステップS104)。
次に、構成管理部101は、構成変更後に接続される接続先処理インストラクションを有するコンポーネント300を配備する(ステップS105)。
次に、構成管理部101は、ステップS100で入力された構成変更内容のうちコンポーネント300に関する構成変更内容である、上記の接続先情報及びコネクタ情報を送出し、コンポーネント300に対してコネクタ部301を適用するアスペクトの生成をアスペクト適用部102に要求する(ステップS106)。
次に、アスペクト適用部102は、コンポーネント300に関する構成変更内容を受信する(ステップS107)。
次に、アスペクト適用部102は、ステップS107で受信したコンポーネント300に関する構成変更内容を元に、コネクタ部301を組み込んだアスペクトを生成する(ステップS108)。
次に、アスペクト適用部102は、ステップS108で生成したアスペクトをコンポーネント300に適用することにより、コンポーネント300にコネクタ部301を適用する(ステップS109)。
図3は、ルーティング部201を設定する動作を表すフローチャートである。まず、構成管理部101は、ルーティング部201がコネクタ部301に接続するようルーティング部201に接続要求を送信する(ステップS200)。ここで、送信する接続要求には、上記のコネクタ情報が含まれる。
次に、ルーティング部201は、ステップS200で送信された接続要求を受信する(ステップS201)。
次に、ルーティング部201は、ステップS201で受信した接続要求を元に、コネクタ部301と接続するようにルーティングを設定する(ステップS202)。
ここでルーティングを設定するとは、コンポーネント200及びコンポーネント300が同一プロセスで動作しているような場合には、ローカルでコネクタ部301を呼び出すようにルーティング部201の処理内容を設定することであり、コンポーネント200及びコンポーネント300が別プロセスで動作しているような場合には、通信機能を利用してコンポーネント300を呼び出すようにルーティング部201の処理内容を設定することである。
なお、ここで説明した設定は、ルーティング部201の実行インスタンスのパラメータに対して設定するか、もしくは、ルーティング部201が処理実行時に参照するファイルに設定することによって実現できる。また、本実施形態とは異なるが、コンポーネント200とコンポーネント300がネットワーク的に離れた環境で動作しているような場合には、互いに別プロセスで動作することになるので、後者のようにルーティング部201を設定する。
図4は、アプリケーション動作時、つまりアプリケーションに対して実行処理要求が送られた時の動作を示すフローチャートである。
まず、ルーティング部201は、コンポーネント200に対する処理要求の延長で、ステップS104で適用されたアスペクトに応じてアスペクト実行フレームワークを介して処理要求を受信する(ステップS300)。
次に、ルーティング部201は、ステップS202で設定したルーティング設定に従い、コネクタ部301に接続する(通信接続を確立する)(ステップS301)。
次に、ルーティング部201は、コネクタ部301に処理要求を転送する(ステップS302)。
次に、コネクタ部301は、ステップS302で転送された処理要求を受信する(ステップS303)。
次に、コネクタ部301は、ステップS106で受信した接続先情報で指定されたコンポーネント300の処理インストラクションを実行する(ステップS304)。
次に、コンポーネント300は、ステップS304で実行された処理インストラクションの処理結果をコネクタ部301に返却する(ステップS305)。ここで処理結果とは、一般的な処理言語においては、関数の返り値である。
次に、コネクタ部301は、ステップS305で受信した処理結果をルーティング部201に返却する(ステップS306)。
次に、ルーティング部201は、ステップS306で受信した処理結果をコンポーネント200に返却する(ステップS307)。この時、本来コンポーネント200で実行されるはずであった処理インストラクションは実行せずに、該当処理インストラクションを要求した処理に、処理結果を返却する。
(効果の説明)
第1の実施形態では、AOPを利用してコンポーネント間を接続するルーティング部201及び、コネクタ部301を各コンポーネントに組み込む。これにより、コンポーネントの設計時点での外部インタフェースによらず特定の内部インタフェースの機能を置換することが可能となる。従って、アプリケーションの軽微な仕様変更や、一時的なバグの修正を短時間に実行することが可能となり、システムを常に健全な状態に保つことができる。
また、アプリケーションプログラムが動作している状況下で、その時の環境に応じてアプリケーションプログラムの構成を変更することができる。
さらに、運用中にアプリケーションプログラムを容易に変更できるので、アプリケーション開発の人的コストや時間的コストが縮小する。
〔第2の実施形態〕
本発明を実施するための第2の実施形態は、プログラム処理装置100で運用中のアプリケーションプログラムのコンポーネント内の特定の処理に新たな処理を追加することにより、当該アプリケーションプログラムに備わっていなかった機能を追加する場合の実施形態である。例えば、第2の実施形態は、特定の処理実行時の処理要求に含まれる特定の情報によって、実行優先度を制御する機能、いわゆるキューを追加するような場合に適用される。
(構成の説明)
本実施形態のプログラム処理装置100の構成は、第1の実施形態と同様であり、すなわち図1に示される構成である。
(動作の説明)
また、本実施形態のプログラム処理装置100の動作については、第1の実施形態のうち以下の手順において異なる。
図4のステップS307の後に、コンポーネント300(コネクタ部301)から返却された処理結果を用いて、本来コンポーネント200で実行されるはずであったコンポーネント200内の処理インストラクションを実行する点で異なる。このとき、コンポーネント300から返却された処理結果を上記処理インストラクションの入力とする。但し、ここで処理結果とは第1の実施形態と異なり、ステップS300で受信した上記処理インストラクションへの処理要求に含まれる情報が、コンポーネント300によって編集されたものを指し、返り値ではない。
(効果の説明)
第2の実施形態では、コンポーネントに他のコンポーネントを接続させることにより、コンポーネントに備わっていなかった新たな機能を追加できる。これにより、例えば特定の処理インストラクションに対してアクセス制御の仕組みを組み込むことや、優先度制御の機能や、処理要求に含まれる情報のチェック機能等を組み込むことが可能となる。また、これらの機能をアプリケーションコンポーネントの実装に改変を加えることなく適用できる効果がある。
〔第3の実施形態〕
本発明を実施するための第3の実施形態は、運用中のアプリケーションのコンポーネントの複製を複数のサーバに配備し、それら複製コンポーネント群と元コンポーネントを接続することによりアプリケーションのスケールアウトを実現するような場合に適用される実施形態である。
(構成の説明)
図5は、第3の実施形態に係るプログラム処理装置110と各サーバ120、130、140とを示す機能ブロック図である。
本実施形態のコンポーネント200は、ルーティング部201に加えて、さらにモニタ部202が適用されている。この適用に関する動作については、図6を用いて詳細に後述する。
モニタ部202は、適用されたコンポーネント200に係るパラメータを計測する。なお、図5においては、コンポーネント200にのみモニタ部202を適用しているが、複数のコンポーネントに同等のモニタ部を適用することによって、これらのコンポーネントから成るアプリケーション全体の状態を計測することも可能である。モニタ部202によって計測されたパラメータは、変更判断部103に送信される。なおモニタ部202から変更判断部103にパラメータを送信する処理は、逐次処理であってもよいしバッチ処理であってもよい。
本実施形態のプログラム処理装置110は、第1の実施形態のプログラム処理装置100と比べて、変更判断部103が追加された点と、コンポーネント200、コンポーネント300が自機内に存在しない点とにおいて異なる。第3の実施形態の構成は、第1の実施形態の構成に加えて以下の構成が追加される点が異なる。
変更判断部103は、システムの状況からアプリケーションの構成を変更すべきか判断し、当該判断に応じてアプリケーションの変更を要求する機能を有する。より詳細には、変更判断部103は、モニタ部202によって計測されたパラメータの値に応じて、モニタ部202が適用されたコンポーネント200の変更要求を送出する。そして、アスペクト適用部102は、送出された当該変更要求に応じ、当該変更要求で特定されたコンポーネント200と他のコンポーネント(本実施形態ではコンポーネント300、またはコンポーネント400)にルーティング部またはコネクタ部を適用する。
なお、図5においては、各々のコンポーネント200、300、400は、既に各サーバ120、130、140に配備されている。この配備に関する動作については、図7を用いて詳細に後述する。
(動作の説明)
図3、図4、図6及び図7を用いて第3の実施形態における動作を説明する。
図6は、アプリケーションにモニタ機能を組み込む動作を示すフローチャートである。
まず、変更判断部103は、コンポーネント200に対してモニタ部202を適用するアスペクトの生成をアスペクト適用部102に要求する(ステップS400)。ここで、コンポーネント200のどのインストラクションにモニタ部202を適用するかについては、コンポーネント200の全ての内部インストラクションを指定する。但し、プログラム言語的、アプリケーションアーキテクチャ的に意味を持たないインストラクションであることが明らかな場合は、それを適用対象のインストラクションから除外してもよい。
次に、アスペクト適用部102は、ステップS400で要求されたアスペクト生成要求を受信する(ステップS401)。
次に、アスペクト適用部102は、指定されたインストラクションにモニタ部202を組み込むアスペクトを生成する(ステップS402)。
次に、アスペクト適用部102は、生成したアスペクトをコンポーネント200に適用する(ステップS403)。
図7は、コンポーネント200の複製を複数のサーバに配備する動作を示すフローチャートである。
まず、モニタ部202は、システムの状態をモニタし、負荷情報等のパラメータを計測、記録する(ステップS500)。
次に、モニタ部202は、記録したパラメータを変更判断部103に送信する(ステップS501)。ここで、負荷情報とはモニタ部202が適用されたコンポーネント200の処理負荷を示す情報であって、例えば、一定期間内に受信した処理要求の量、処理の要した時間などが挙げられる。
次に、変更判断部103は、ステップS501で送信されたパラメータを受信する(ステップS502)。
次に、変更判断部103は、モニタ部202から送信されたパラメータの値を分析し、コンポーネント200内のいずれの処理インストラクションを変更すべきか判断する。(ステップS503)。本実施形態においては、パラメータに含まれる負荷情報が示す処理負荷が所定の値より高い(大きい)処理インストラクションを、変更すべき処理インストラクションとする。
次に、変更判断部103は、変更すべき処理インストラクションを有するコンポーネント200に対してルーティング部201を適用するアスペクトの生成要求をアスペクト適用部102に要求する(ステップS504)。
続く、ステップS505、ステップS506及び、ステップS507は、それぞれ図2のステップS102、ステップS103及び、ステップS104と同様の動作であるため、ここでの説明は割愛する。
次に、構成管理部101は、コンポーネント200の複製であるコンポーネント300、コンポーネント400を複数のサーバ130、140に配備する(ステップS508)。ステップS508は、第1の実施形態のステップS105において、配備するコンポーネントがコンポーネント200の複製である点、配備先が複数のサーバ130、140である点が異なるのみで、動作は同じである。
次に、変更判断部103は、コネクタ部301またはコネクタ部401を適用するアスペクトの生成をアスペクト適用部102に要求する(ステップS509)。続くステップS510及び、ステップS511は、第1の実施形態におけるステップS107及びステップS108と同じ動作である。
次に、アスペクト適用部102は、ステップS511で生成したアスペクトを、コンポーネント300及びコンポーネント400に適用する(ステップS512)。これは、第1の実施形態におけるステップS109で適用先がコンポーネント300及びコンポーネント400となった点を除いて、動作は同様である。
続いて、ルーティング部201を設定するが、これについては、図3を用いて説明した動作と以下の点を除いて同様である。
まず、ステップS200で、ルーティング部201に送信する設定の内容が、ルーティング部201がコネクタ部301又はコネクタ部401に接続するように設定される点が異なる。これは、ルーティング部201が受信した処理要求をコネクタ部301もしくはコネクタ部401に分散させて転送させる設定である。このためステップS202でルーティング部201に設定されるルーティング設定も、コネクタ部301又はコネクタ部401に接続する設定となる点が異なる。
続く手順は、図4を用いて説明した動作、つまりアプリケーションに対して実行処理要求があった時の動作と、以下の点を除いて同様である。
ステップS301で、ルーティング部201の接続先がコネクタ部301又はコネクタ部401に設定されているため、コネクタ部301又はコネクタ部401のいずれにも接続できる点が異なる。従って以降のステップS302からステップS306についても、コンポーネント300及びコネクタ部301と記載している部分が、それぞれコンポーネント400及びコネクタ部401となる場合がある点が第1の実施形態における動作と異なる。
コネクタ部301またはコネクタ部401のいずれに接続するかの判断については、以下のような場合が考えられる。最も単純な方法としては、処理要求を受信するたびに接続先を順番に変更するラウンドロビン法などがある。
また、図5では図示しないが、コンポーネント300とコンポーネント400にもモニタ部202と同等の要素を適用しているのであれば、次のように判断することも考えられる。構成管理部101は、コンポーネント300とコンポーネント400に係るパラメータ(負荷情報)を取得し、取得されたパラメータの値に応じて、コネクタ部301またはコネクタ部401のいずれに接続するか選択してもよい。例えば、処理負荷が低いコンポーネントに適用されたコネクタ部とルーティング部201との接続を確立してもよい。
(効果の説明)
第3の実施形態には、コンポーネント200の接続先を複数用意し、またコンポーネント200と同じコンポーネントを接続先とすることにより、アプリケーションの高負荷時に処理を分散する効果がある。これにより、アプリケーション設計時には想定していなかったコンポーネント内の特定処理の性能問題を、短時間で回避する仕組みを提供できる。
また、リアルタイムなシステムの状況をモニタリングし、システムの状況の変化によってアプリケーションの構成を変更することができるので、システムを常に最適な状態に保つことが可能となる。
〔第4の実施形態〕
本発明を実施するための第4の実施形態は、第3の実施形態において、分散配備されるコンポーネントを、ネットワーク的に分断されているサーバに配備する場合で、ルータ等のネットワーク機器への設定が必要な場合の実施形態である。例えば、VLANなどを利用しており、ルータハードウェアに対して設定変更を実施するような場合である。
(構成の説明)
図8は、第4の実施形態に係るプログラム処理装置110と各サーバ120、130、140との機能ブロック図である。
図8の構成は、図5の構成に加えて、プログラム処理装置110と各サーバ120、130、140とがネットワーク機器150を介して接続されている点において異なる。すなわち、サーバ120で起動しているプログラムを構成しているコンポーネント200にルーティング部201を適用している。また、サーバ120とネットワーク機器150を介して接続しているサーバ130(または140)で起動しているプログラムを構成するコンポーネント300(または400)にコネクタ部301(または401)を適用している。ここで、ネットワーク機器150は、例えばルータである。
(動作の説明)
本実施形態の動作については、ルーティング部201とコネクタ部301(または401)との間で通信接続を確立する前に、当該通信接続を可能とする設定をネットワーク機器150に要求する点において、第3の実施形態の動作手順と異なる。
より詳細には、図7のステップS508に先だち、コンポーネント200が動作するサーバ120から、コンポーネント300(またはコンポーネント400)が動作するサーバ130(または140)へ接続可能となるように、ネットワーク機器150にネットワーク設定を要求する。
設定要求を受信したネットワーク機器150は、受信した設定内容を適用し、コンポーネント200が動作するサーバ120から、コンポーネント300(またはコンポーネント400)が動作するサーバ130(または140)への接続を有効にする。
(効果の説明)
第4の実施形態によれば、複製したコンポーネントの配備に合わせてネットワーク機器の設定を実施することにより、例えば遠隔のシステムへ処理を分散させることが可能となる。これは、近年発展しつづけているクラウド環境を利用した、分散処理システムの自動構築を可能とする。
以上、図面を参照して本発明の実施形態について述べたが、これらは例示であり、上記以外の様々な構成を採用することもできる。
上記の実施形態では、本発明の接続要素を、ルーティング部とコネクタ部として説明した。各実施形態の説明において、ルーティング部とコネクタ部とは、別々の機能を有するように説明したが、これに限らなくてもよい。すなわち、双方の機能を併せ持つ接続要素を適用し、状況に応じてルーティング部として機能させたり、コネクタ部として機能させたりしてもよい。
上記実施形態ではプログラム処理装置の各部がコンピュータプログラムにより各種機能として論理的に実現されることを例示した。しかし、このような各部の各々を固有のハードウェアとして形成することもでき、ソフトウェアとハードウェアとの組み合わせとして実現することもできる。
また、上記実施形態の説明には、複数のフローチャートを用いており、それぞれに複数のステップを順番に記載してあるが、その記載の順番は、本発明のプログラム処理方法のステップを実行する順番を限定するものではない。このため、本発明のプログラム処理方法を実行するときには、その複数のステップの順番は内容的に支障しない範囲で変更することができる。
なお、当然ながら、上述した実施の形態は、その内容が相反しない範囲で組み合わせることができる。また、上述した実施の形態では、各構成要素の機能などを具体的に説明したが、その機能などは本願発明を満足する範囲で各種に変更することができる。
本発明は、アプリケーションのメンテナンス、アプリケーションのスケーラビリティの確保に利用可能であり、大規模なシステムにおけるアプリケーションの自動構成基盤として利用できる。
この出願は、2010年3月30日に出願された日本出願特願2010−079226号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (10)

  1. 複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用し、
    前記複数の部品のうちの一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立し、
    前記確立された通信接続を介して、前記一の部品内の第一処理の処理結果を、前記他の部品に送出する、
    ことを含む、少なくとも1つの装置によって実行されるプログラム処理方法。
  2. 請求項1に記載のプログラム処理方法であって、
    前記第一処理の処理結果を送出することは、
    前記他の部品に適用された前記接続要素が、前記第一処理に処理要求を送出し、
    前記一の部品に適用された前記接続要素が、前記送出された処理要求に応じて前記第一処理を前記一の部品に実行させ、前記第一処理の処理結果を前記通信接続を介して前記他の部品に送出することを含むプログラム処理方法。
  3. 請求項2に記載のプログラム処理方法であって、
    前記送出された処理結果を用いて、前記他の部品内の第二処理を実行することを更に含むプログラム処理方法。
  4. 請求項1乃至3いずれか一項に記載のプログラム処理方法であって、
    前記起動されているプログラムに含まれる前記複数の部品のうち少なくとも一つに、当該部品に係るパラメータを計測するモニタ要素を適用し、
    前記適用されたモニタ要素によって計測された前記パラメータの値に応じて、前記モニタ要素が適用された前記複数の部品の少なくとも1つの変更要求を送出する、ことを更に含み、
    前記接続要素を適用することは、
    前記送出された変更要求に応じて、当該変更要求で特定された部品を含む前記複数の部品に前記接続要素を適用することを特徴とするプログラム処理方法。
  5. 請求項4に記載のプログラム処理方法であって、
    前記接続要素を適用することは、前記変更要求で特定された前記部品を含む、少なくとも三つの部品に前記接続要素を適用し、
    前記通信接続を確立することは、前記変更要求で特定された前記部品に適用された前記接続要素と通信接続を確立する他の接続要素を、前記モニタ要素によって計測された前記パラメータの値に応じて選択することを特徴とするプログラム処理方法。
  6. 請求項4または5に記載のプログラム処理方法であって、
    前記モニタ要素が計測する前記パラメータは、当該モニタ要素が適用された前記部品内の処理に係る負荷情報であることを特徴とするプログラム処理方法。
  7. 請求項1乃至6いずれか一項に記載のプログラム処理方法であって、
    前記接続要素を適用することは、一の装置で起動されている第一プログラムを構成している第一部品と、前記一の装置とネットワーク機器を介して接続する他の装置で起動されている第二プログラムを構成している第二部品と、に前記接続要素を適用し、
    さらに、前記通信接続を確立する前に、前記第一部品に適用された前記接続要素と、前記第二部品に適用された前記接続要素とが通信接続可能な設定を前記ネットワーク機器に要求することを更に含むプログラム処理方法。
  8. 請求項1乃至7いずれか一項に記載のプログラム処理方法であって、
    前記プログラムはアスペクト指向性のプログラムであり、
    前記接続要素を適用することは、前記接続要素を組み込んだアスペクトを用いて、前記部品に前記接続要素を適用することを特徴とするプログラム処理方法。
  9. 複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用手段と、
    前記適用手段によって、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理手段と、
    を備えることを特徴とするプログラム処理装置。
  10. コンピュータが読み出し可能な記憶媒体に格納されたコンピュータプログラムであって、
    複数の接続要素を生成し、起動されているプログラムを構成している複数の部品のうち少なくとも二つの夫々に前記接続要素を適用する適用処理と、
    前記適用処理で、一の部品に適用された前記接続要素と、他の部品に適用された前記接続要素との間で通信接続を確立させ、前記一の部品内の第一処理の処理結果を、確立された前記通信接続を介して前記他の部品に送出させる構成管理処理と、
    を前記コンピュータに実行させることを特徴とするコンピュータプログラム。
JP2012508038A 2010-03-30 2011-02-02 プログラム処理方法、プログラム処理装置、およびコンピュータプログラム Active JP5713007B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012508038A JP5713007B2 (ja) 2010-03-30 2011-02-02 プログラム処理方法、プログラム処理装置、およびコンピュータプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010079226 2010-03-30
JP2010079226 2010-03-30
JP2012508038A JP5713007B2 (ja) 2010-03-30 2011-02-02 プログラム処理方法、プログラム処理装置、およびコンピュータプログラム
PCT/JP2011/000578 WO2011121873A1 (ja) 2010-03-30 2011-02-02 プログラム処理方法、プログラム処理装置、およびコンピュータプログラム

Publications (2)

Publication Number Publication Date
JPWO2011121873A1 true JPWO2011121873A1 (ja) 2013-07-04
JP5713007B2 JP5713007B2 (ja) 2015-05-07

Family

ID=44711645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012508038A Active JP5713007B2 (ja) 2010-03-30 2011-02-02 プログラム処理方法、プログラム処理装置、およびコンピュータプログラム

Country Status (4)

Country Link
US (1) US9342382B2 (ja)
JP (1) JP5713007B2 (ja)
CN (1) CN102834810A (ja)
WO (1) WO2011121873A1 (ja)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000207213A (ja) * 1999-01-14 2000-07-28 Nec Corp 分散オブジェクト実行環境の生成装置
US7441232B2 (en) * 1999-11-08 2008-10-21 British Telecommunications Public Limited Company Task management
JP2001222436A (ja) 1999-12-30 2001-08-17 Internatl Business Mach Corp <Ibm> リソースの自動化管理をサポートする方法、そのシステム、およびその記録媒体
JP2003256391A (ja) * 2002-03-04 2003-09-12 Nippon Telegr & Teleph Corp <Ntt> サービス探索方法、サービス実行方法、それらのプログラム及び該プログラムを記録した記録媒体
JP2006526209A (ja) * 2003-05-12 2006-11-16 アン モ ジェオン, コンポーネント基盤環境下で拡張されたメタデータを利用したソフトウェア開発方法及びその開発システム
KR20050076924A (ko) * 2004-01-26 2005-07-29 삼성전자주식회사 양방향 통신이 가능한 i2c 통신시스템 및 그 방법
US20070050756A1 (en) * 2005-08-24 2007-03-01 Nokia Corporation Component architecture
JP2007213487A (ja) * 2006-02-13 2007-08-23 Hitachi Software Eng Co Ltd アスペクト生成方法及び装置
KR100881419B1 (ko) * 2006-11-02 2009-02-05 한국전자통신연구원 Sca 기반 시스템의 애플리케이션 컴포넌트 통신 장치 및방법
US8020143B2 (en) * 2007-01-10 2011-09-13 International Business Machines Corporation Remote aspect advising for an aspect-oriented program
US8001519B2 (en) * 2007-06-27 2011-08-16 International Business Machines Corporation Model driven development including aspect integration tool
JP2009042951A (ja) * 2007-08-08 2009-02-26 Hitachi Consulting Co Ltd プログラム中のデータ抽出方法及び装置
US8347278B2 (en) * 2007-11-02 2013-01-01 International Business Machines Corporation Instrumenting a compiled software routine for augmentation
US9619304B2 (en) * 2008-02-05 2017-04-11 Adobe Systems Incorporated Automatic connections between application components
US7890298B2 (en) * 2008-06-12 2011-02-15 Oracle America, Inc. Managing the performance of a computer system

Also Published As

Publication number Publication date
JP5713007B2 (ja) 2015-05-07
CN102834810A (zh) 2012-12-19
US20130111498A1 (en) 2013-05-02
WO2011121873A1 (ja) 2011-10-06
US9342382B2 (en) 2016-05-17

Similar Documents

Publication Publication Date Title
US20120192175A1 (en) Method and System to Accelerate Copying of Virtual Machine Images
US20130117064A1 (en) Business process analysis combining modeling, simulation and collaboration with web and cloud delivery
JP2007041720A (ja) ジョブステップ実行プログラムおよびジョブステップ実行方法
CN102202078A (zh) 用于远程呈现会话服务器场的集中式管理工具
WO2014171130A1 (ja) 情報処理システム、配備方法、処理装置、及び、配備装置
KR20130061734A (ko) 클라우드 공용형 리소스 제공시스템
CN113382077B (zh) 微服务调度方法、装置、计算机设备和存储介质
JP2011118587A (ja) 複数サーバによる連携サービス実行システム
CN114730305A (zh) 控制应用和服务器之间的事务请求
JP6207163B2 (ja) クライアント、サーバー、管理システム及びその方法
JP5377231B2 (ja) ジョブネット制御プログラムおよびジョブネット制御装置
JP2017027367A (ja) 画像形成装置、リソース管理装置、リソース管理方法、画像形成装置およびプログラム
US20100122261A1 (en) Application level placement scheduler in a multiprocessor computing environment
JP5713007B2 (ja) プログラム処理方法、プログラム処理装置、およびコンピュータプログラム
JP2010152846A (ja) ファイル共有方法、計算機システム及びジョブスケジューラ
JP6540287B2 (ja) 情報処理システム、情報処理方法、及び、プログラム
JP4918411B2 (ja) グリッドコンピューティングシステム
WO2019097811A1 (ja) 仮想リソース提供装置、仮想ネットワーク機能提供システム、仮想リソース提供方法及びプログラム
JP7392823B2 (ja) 検証制御装置、システム、方法及び検証制御プログラム
JP5481845B2 (ja) 情報処理システム、サービス提供方法、装置及びプログラム
WO2024084582A1 (ja) 連成システム、連成方法および連成プログラム
JP2009211413A (ja) ファイル管理システム、ファイル管理方法、及びファイル管理プログラム
Sarwar Network Management Using an Ethereum Blockchain
Pawar Managing High-Availability and Elasticity in a Cluster Environment
KR20230067224A (ko) 다중 엣지 서버 환경에서 클러스터 장치들 간의 서비스 데이터의 이동 및 배치를 제어할 수 있는 컨테이너 오케스트레이션 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150120

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150210

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150223

R150 Certificate of patent or registration of utility model

Ref document number: 5713007

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150