説明

変化するベースシステムへとアスペクトをウィービングする方法および装置

ウィーバを用いてベースシステムへとウィービングされるべきアスペクトを実行するアスペクトシステムを含むアスペクト指向プログラミング環境におけるベースシステム内の変化に適応する方法であって、前記ベースシステム内のある変化に応じて、前記ベースシステム内の前記変化の重要性を評価するステップと、前記評価により前記変化に重要性があると判明した場合、前記変化を補償するために適応動作を行うステップとを含む方法である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はアスペクト指向プログラミング(AOP)に関し、特に変化するベースシステムにアスペクトをウィービング(weaving)する方法および装置に関する。
【背景技術】
【0002】
本発明は、アスペクト指向プログラミング(AOP)の分野に関する。AOPは、「アスペクト(aspect)」と呼ばれる新しいモジュール構造を使用する。
アスペクトは、ソフトウェアシステムの主要なモジュール化をクロスカットする要素を提供する。アスペクト指向のプログラミング言語またはシステムは、システムのプログラミングアスペクトの要素を用いて従来のプログラミング言語およびシステムを拡張する。このような要素は、少数の特別なプログラムモジュールに関連する部分のクロスカットの実行をローカライズすることができ、主要なプログラムモジュール全体に関して実行するわけではない。
【0003】
アスペクトのクロスカット性をとらえるために、この特別なプログラムモジュールは、カプセル化についての従来からのルールを決まりに従ったやり方で変化させる。これら特別なプログラムモジュールは、主要なモジュールの明確な同意がなくても主要なモジュールの実行に影響を与えることができる。さらに、それらは幾つかの主要なモジュールに対して同時に影響を与えることができる。
【0004】
アスペクト指向プログラミング(AOP)は、プログラムが利用できる表現機能を拡張するため、多くの設計上の決定を局所的に表現することができる。AOPのプログラマは、基本となるプログラムを従来のプログラミング言語で記述し、さらにアスペクトコードの一部を記述する。その各々は、ベースプログラムのある部分に記述されている実行に影響する。
【0005】
このようにしてアスペクトコードは、幾つかのモジュールにおいて幾つかの設計要素を実行することができるものであり、これらのパターンのフィールドおよび方法をクラス全体に広げるわけではない。その次に例えば、幾つかのモジュールの中の複合システムのためのトレーシング、デバッギングおよび組み込みの支援を取り込み、単一モジュール内の幾つかのクラスを含むエラー処理プロトコルを取り込み、クラス全体にわたって絡む複数のコードの一部としてではなく、単一モジュール内の幾つかのクラスを含むアルゴリズムを共有するリソースを得ることができる。
【0006】
プログラミングアスペクトに対する特別なプログラムモジュールは、クラスなどのより伝統的なモジュール方式の構成体のモジュールを合理的にクロスカットすることによって、これを可能にする。従って、これらの特別なプログラムモジュールの1つは、クリーンである決まりに従ったやり方で幾つかのクラス(または単一のクラスの中の幾つかの方法)の実行に影響することがある。アスペクトとオブジェクトの相互作用は、オブジェクトとオブジェクトの相互作用および他の従来のプログラミングの実例とは異なる。その相違点は、従来の方式においてオブジェクトの全ての動作は、オブジェクトクラスの定義の中の直接的な実行、または他のオブジェクトの動作(例えば、メソッド呼出し)を使用するためにオブジェクトクラスの定義の中でコード化された要求、または他のオブジェクトクラスの実行を再利用(例えば、継承)するためにオブジェクトクラスの定義の中の要求のうちのいずれかとして、オブジェクト自身の中にカプセル化されるということである。このため、これらの従来の方法では、オブジェクト動作の全ての制御は、オブジェクト自身に依存する。他方でAOPの環境においては、オブジェクト動作の一部は、オブジェクトが多少なりとも動作を要求することなく、オブジェクトの外部のアスペクトの中で定義することができる。そのためオブジェクト動作の一部は、アスペクトによりオブジェクトに対して透過的に強制されると言うことができる。さらに、1つのアスペクトがことによると異なるクラスの複数のオブジェクトに対してその動作を強制できるという点で、アスペクトはより全体的な効果を有する。
【0007】
アスペクト指向プログラミング(AOP)は、非特許文献1において紹介されている。AOPは、論理的にはある問題に属するものの、基本となるプログラミング言語および環境の限定された構成機構のためにモジュール化できないコード部分を処理する。結果として得られるコードは、極めて複雑に入り組んでいて散漫なものである。そのように複雑になってしまう原因となる問題は、クロスカット問題(crosscutting concerns)と呼ばれている。アスペクト指向は、アスペクトと呼ばれる異なるモジュールへとクロスカット問題をモジュール化することに関するものである。
【0008】
アスペクトモジュールをアプリケーションと一体化するための機構は、ウィービングと呼ばれている。ウィーバは、全てのアスペクトをアプリケーションに加える役割がある。そのような一体化を規定するために、アスペクト指向はジョインポイント(join point)と呼ばれる概念を利用する。Kiczalesらの文献(非特許文献1)では、ジョインポイントはプログラムの実行における合理的なポイントとして導入されている。ジョインポイントの典型的な例は、メソッド呼出しである。
【0009】
従来、ウィービング処理は、開発者によって、ある所定の時点で、一体化されるべき複数のアスペクトについて開始される。さらにウィービング処理は、ランタイムにおいて潜在的にまたは確実にアスペクト特有のコードを実行する必要があるジョインポイントを表すベースシステム内の全ての位置を決定し、それに適応する。ランタイム中にジョインポイントを表す、適応された位置は、ジョインポイントシャドーと呼ばれる。あるジョインポイントシャドーに適応するということは、ある修正が実行されることを意味する。この修正により、ジョインポイントシャドーに到達すると、アドバイスコードの呼出しまたは実行が可能になる。これは、実際にこの位置で実行されるコード(「アドバイスコード」)を挿入、または「ラッパ(wrapper)」を用いることによって行うことができる。このラッパは、アスペクトによって与えられた「アドバイス」を検討または実行するように、ラッピングされた方法(wrapped method)を動作させる。ジョインポイントがジョインポイントシャドーへとこのように「適応(adaptation)」することは、ウィービング処理によって行われる。
【0010】
アスペクト自体は、実行されるアドバイスコードおよび一連のジョインポイント記述の組合せから成る。このジョインポイント記述は、ベースシステム(アスペクトなしのシステム)内のジョインポイントを、アドバイスコードを実行すべきベースシステム内のポイントとして表している。一連のジョインポイント記述は、「ポイントカット」と呼ぶことができる。次に、特殊な編集処理と見なすことができるウィービング処理は、アドバイスコードの実行が一旦それに関連付けられたジョインポイントに到達すると可能になるようにベースシステムを修正する。このことは、アスペクトのベースシステムへのウィービング、「アスペクトのインストール」、または「アドバイスのインストール」と呼ばれることもある。ランタイム中にアスペクトに対して特異的なコードを実行することがウィーバによって可能となっている位置は、ジョインポイントシャドーと呼ばれる。アスペクトをベースシステムへとウィービングすることにより、ウィービング処理は、ジョインポイントシャドーにおけるアドバイスコードの呼出しを可能にする。
【0011】
従来、ウィービング処理は、アスペクトがウィービングされるべきベースシステムが変化する可能性を考慮していない。従来のウィービングに対するアプローチにおいて、ウィービングされるアスペクトに関連付けられる一連のジョインポイントシャドーは、ベースシステムのある構成を有するある時間(アスペクトをウィービングする時間)で一旦決定され、次にアスペクトおよびベースシステムの持続時間と同じ間存続する。これは、ウィービングの後、アスペクトに対して特異的なコードを実行しうるものであるそのアプリケーションの中の全てのシャドーが、ベースシステム内のいかなる変化も考慮せずにアスペクトがベースシステムの中にウィービングされたときの特定の構成を持つベースシステムに適応されることを意味する。
【0012】
【非特許文献1】Kiczales,G.、Lamping,J.、Mendhekar,A.、Maeda,C.、Lopes,C.、Loingtier,J.−M.、Irwing,J.、「Aspect−Oriented Programming」、Proceedings of European Conference on Object−Oriented Programming (ECOOP)、LNCS 1241、 Springer−Verlag、1996年、p.220−242
【発明の開示】
【発明が解決しようとする課題】
【0013】
従って、本発明の目的は、アスペクト指向プログラミングの環境に適していて、1つ以上のアスペクトがウィービングされているベースシステム内の動的な変化を処理することができる方法および装置を提供することである。
【課題を解決する手段】
【0014】
本発明の1つの実施形態によれば、ウィーバを用いてベースシステムの中にウィービングされるべきアスペクトを実行するアスペクトシステムを含むアスペクト指向プログラミング環境の中で前記ベースシステム内の変化に適応させる方法が提供される。前記方法には、前記ベースシステム内の変化に応じて、前記ベースシステム内の前記変化の重要性を評価するステップと、前記変化に対する前記評価が、重要性があると判明すれば、前記変化を補償するために適応動作を行うステップとが含まれる。
【0015】
システムの変化を評価し、必要な場合にはアスペクトの構成システムについて適応動作を行うことによって、基礎となるベースシステムはベースシステム内のどのような変化にも柔軟に対処することができる。このため、ベースシステムの変化から生じたアスペクトとベースシステムとの間の不整合を補償し解決するように、ベースシステム内の変化(要素の変更、追加または除去)を補償することができる。
【0016】
1つの実施形態によれば、重要性の評価には、ベースシステム内の変化の前のジョインポイントまたはジョインポイントシャドーが、ベースシステム内の変化の後のこれらのものと異なっているかどうかを、ベースシステム内の変化の後で決定するステップが含まれている。これにより、システムの変化の前にベースシステムへとウィービングされるアスペクトにより生じる構成システム内のジョインポイントまたはジョインポイントシャドーが、修正されたベースシステムに対して実行するウィービング処理から結果として生ずるものと異なっているかどうかを、ベースシステム内の変化の後で決定することができる。このことは、例えば、システムの変化の前後のアスペクトおよびアドバイスに対するポイントカットを比較することによって行うことができ、それらが異なっている場合は、その変化は重要性があると判明する。この比較は、システムの変化の前後のポイントカットまたは一連のジョインポイントもしくはジョインポイントシャドーを直接比較することによって行うことができる。1つの実施形態によれば、2つの一連のものは、それらの要素の数を単に比較して行い、その数が異なる場合は重要な変化があると判断することができる。別の実施形態によれば、一連の要素を個別に、すなわちシステムの変化の前の全てのジョインポイントまたはジョインポイントシャドーをシステムの変化の後のものと比較することによって比較を行うことができ、この個々の比較が異なることが判明すると、ベースシステムの中で重要性がある変化が発生していると決定できる。
【0017】
1つの実施形態によれば、前記アスペクト指向プログラミングの環境は、前記ベースシステムおよび前記アスペクトシステムに加えて、適応システムを含む。ここで、前記適応システム、前記ベースシステムおよび前記アスペクトシステムは別個の存在であり、互いに独立して修正および実行を行うことができる。これにより、適応システムに加えてアスペクトシステムにも大きな柔軟性を持たせることができるため、システム全体を同様により柔軟に設計することができる。
【0018】
1つの実施形態によれば、前記ベースシステム、前記アスペクトシステムおよび前記適応システムは、例えば機能呼出し、メソッド呼出し、メッセージの送信などの直接または間接の呼出しを通して互いに作用する。これにより、システム全体のこれら3つの部分は互いに独立となる。
【0019】
1つの実施形態によれば、適応動作には、下記、すなわち全体的または部分的に前記アスペクトを前記ベースシステムの中に再ウィービングする動作、前記アスペクトに関連付けられたアドバイスを全体的または部分的に再ウィービングする動作、全体的または部分的に前記アスペクトをアンウィービングする動作、または前記アスペクトに関連付けられたアドバイスを全体的または部分的にアンウィービングする動作の中の1つ以上の動作が含まれる。
【0020】
本発明の実施形態による方法には、ベースシステムの中で変化が生じた場合、ベースシステムおよびアスペクトを含む全体的なシステムの要素にベースシステム内の変化を通知するステップが含まれ、前記要素が下記のステップ、すなわち、ベースシステムの変化の評価を開始するステップと、ベースシステムの変化を評価するステップと、前記評価に基づいて、適応動作を開始するステップと、前記評価に基づいて、適応動作を実行するステップとのうち1つ以上のステップを行うことができる。
【0021】
システムの要素に通知することにより、システムの変化を評価した後で、適切な動作が確実に行われるようになる。通知されたシステムの要素は、ベースシステムおよびアスペクト、アドバイスから分離された要素とすることができる。システムの変化に関する通知を受け取り、次にこの変化の評価を開始することを委託することができる。このシステムの要素が評価を実行するように設計し、または評価を実行するように他の要素をトリガまたは駆動し、これによって評価を開始することができる。
【0022】
評価に基づいて、システムの要素はこの時、比較結果に鑑みて必要な適応動作をそれ自体が実行するか、または可能ないずれかの他のシステムの要素がそのような動作を行うことを開始させることができる。そのために、システムの要素はいずれかの別のシステムの要素にメッセージを送って、評価結果に鑑みて、行うことが必要であるとシステムの要素が認めた適応動作をトリガすることができる。
【0023】
システムの変化を受け取り、評価の開始と実行とのうちのいずれかまたは両方を行い、適応動作の開始と実行とのうちいずれかまたは両方を行うことを担うシステムの要素は、アスペクト、アドバイス、ポイントカット、ウィーバ、または通知を評価して適応動作を開始するための他の(別個の)要素のうちの1つとすることができる。
【0024】
ある実施形態によれば、前記要素に対してベースシステム内の変化を通知するステップには、ベースシステムの中に変化が生じた場合、対応する通知を前記要素に送ることにより自動的に前記要素に通知するステップと、ベースシステムの中に何らかの変化が発生しているかどうかに関して前記ベースシステムを観察するために前記要素が前記ベースシステムをポーリングするステップとのうちのいずれかまたは両方が含まれる。
【0025】
1つの実施形態によれば、アドバイス、ポイントカットまたはアスペクト自身などのアスペクトシステムの1つ以上の要素は、ベースシステム内の何らかの変化について通知を受けるように登録される。これにより、これらの登録されたアスペクト、アドバイスまたはポイントカットは、システムの変化を確実に通知される。この登録方式により、そのような通知を受け取るように登録されていないシステムの要素には通知しないことによって、効率の良い通知が可能になる。
【0026】
ある実施形態によれば、前記評価には、前記変化の後のあるアスペクトについて一連の全てのジョインポイントとジョインポイントシャドーとのうちのいずれかまたは両方を決定するステップが含まれる。これにより、あるアスペクトまたはアドバイスに対するシステムの変化の重要性を確認できる。
【0027】
ある実施形態によれば、この方法は、前記変化の後に決定された一連のジョインポイントとジョインポイントシャドーとのうちのいずれかまたは両方を前記変化の前の対応する一連のものと比較するステップと、前記一連のものが異なる場合に前記変化を補償するために適応動作を利用するステップとをさらに含む。これにより、この比較結果に基づいて、一群の可能な適応動作の中から1つを適切に選択する可能性が与えられる。これにより、システムの変更の後に備えるべき全てのジョインポイントシャドーが実際に備えているか否かを検査できるようになる。次に、結果に応じて、複数の可能な適応動作のうちの1つが選択される。評価に重要性があると認められたアスペクトまたはアドバイスに関連した適応動作のみを利用することによって、すなわち評価によって適応動作が必要であると認められたこれらのアスペクトのみを再ウィービングまたはアンウィービングすることによって、適応動作を効率的に実行することができる。
【0028】
1つの実施形態によれば、本発明には、前記評価結果に基づいて、前記適応動作のどれを利用すべきかが決定される一連のルールを評価するステップが含まれる。これにより、評価結果が確実そして適切に考慮されるようになり、また特定のシステムの変化に適当な適応動作が確実に選択できるようになる。このルールは、ランタイム、例えばユーザとの対話または任意の機能またはモジュールを評価する間に発生する事象または状態をも考慮に入れる。
【0029】
ある実施形態によれば、前記ベースシステムの変化には、下記すなわちベースシステムの要素の追加、除去または修正の中の1つ以上が含まれる。
【0030】
ある実施形態によれば、本発明の実施形態の1つに基づいて方法を実行するためのコンピュータが実行可能なコードを含むコンピュータプログラムが提供される。
【0031】
さらに別の実施形態によれば、ウィーバを用いてベースシステムへとウィービングされるべきアスペクトを実行するアスペクトシステムを含むアスペクト指向プログラミングの環境において前記ベースシステム内の変化に適応する装置が提供され、この装置は、前記ベースシステム内の変化に応じて、前記ベースシステム内の前記変化の重要性を評価する手段と、前記評価により前記変化に重要性があると判明すると、前記変化を補償するために適応動作を行うための手段とを備える。
【0032】
このような装置は、ソフトウェアまたはハードウェアまたは両方の組合せとして実現することができる。さらに別の実施形態によれば、本発明は、本発明の実施形態による方法で定義されている機能を実現する手段を備える。そのような手段は、ソフトウェアまたはハードウェアまたは両方の組合せとして実現することができる。
【発明を実施するための最良の形態】
【0033】
図1Aは、個別のモジュールM1,M2,M3,...,Mnを含むベースシステム100を概略的に表している。これらのモジュールは、ソフトウェアモジュール、特定のソフトウェアモジュールに関連したハードウェアモジュール(例えば、ハードウェア用のドライバ)などとすることができる。例えばネットワークの場合では、要素M1〜Mnは、端末、ルータ、スイッチ、それらの対応するドライバ部品などネットワークの個々のハードウェア部品を示す。しかしながら、要素は、例えば全体のシステム、またはユーザに与えられた特定の機能などのある種の機能性を表すまたは可能にするソフトウェア部品とすることもできる。
【0034】
図1Aの右側に、アスペクトA1〜Akが円110として概略的に示されている。「アスペクト」という用語は本明細書では、アスペクト指向プログラミングの環境において使用するアスペクトのことを指すもの、すなわちベースシステムの中でクロスカットを実行するために使用する特定のモジュールとして理解する必要がある。このために、これらのアスペクトはウィーバ(weaver)120によってベースシステム100にウィービングされ、雲(cloud)130として概略的に示されているようにベースシステムのランタイム構造を生み出す。この雲130では、特定のジョインポイントシャドー、すなわち図1Aで点として示されるいわゆる適応されたジョインポイントシャドーにおいて、1つ以上のアスペクトA1〜Akに関連付けられたアドバイスコードが呼び出される。適応されるべきジョインポイントシャドーは、それぞれアスペクトA1〜Akに関連付けられ、またベースシステム100内で適応動作が行われる一連のジョインポイントシャドーを意味するポイントカット(ベースシステム100内のジョインポイント記述)に依存している。適応されるべきジョインポイントシャドーを記述することによって、いわゆる適応されたジョインポイントシャドーにおいてアドバイスコードが呼び出されてベースシステム内でクロスカット問題をインプリメントするように実行されるように、ポイントカットによりウィーバがベースシステムを修正できるようになる。このことは、図1Aでは雲130として概略的に示されている構成されたシステム130(ウィービング後のシステム)を結果として生ずる。この図では、適応されたジョインポイントシャドーは点として示されている。ベースシステム100が変化する場合に何が起こるかを説明するために、次に図1Bを参照する。
【0035】
図1Bの場合、ベースシステム100の1つの要素すなわち要素M2が、ベースシステムから取り除かれている。これは、特定のソフトウェアモジュールまたはネットワーク内の端末などの特定のハードウェア要素を外すことを示している。さらに、(新しい)モジュールMn+1が図1Bのベースシステムに加えられている。
【0036】
ここで、それぞれのアスペクトA1〜Akはそれぞれ、ベースシステムの中で自身のそれぞれのポイントカットを通るジョインポイント(対応するジョインポイントシャドーを意味する)と呼ばれることに注意しなければならない。しかしながら、ここでモジュールM2を取り外すことは、ベースシステムに存在していたモジュールが削除されたため、幾つかのジョインポイントがベースシステムには実際にはもはや存在しないという事実をもたらす。これが事実の場合、図1Aのランタイム構成130は、もはや実際に存在しないベースシステム内の要素(この実施例ではモジュールM2)を表す適応されたジョインポイントシャドーを含む。このことは、図1Bでランタイムシステム130’の中で除かれている適応されたジョインポイントシャドーによって概略的に示されている。これらのジョインポイントシャドーは、ベースシステム内の対応するモジュール(モジュールM2)がベースシステムから取り除かれているという事実によって不要になったものである。
【0037】
さらに、新しいモジュールMn+1をベースシステム100に加えることにより、アスペクトA1〜Akが、新たに加えられたモジュールMn+1に対応する付加的な適応されたジョインポイントシャドーを実際に含むべきランタイム構成130’に対応するという事実がもたらされる。しかしながら、ウィービングを行うときにはモジュールMn+1はベースシステムには存在しないので、このモジュールに対応するジョインポイントシャドーはウィービング時には適用されておらず、このモジュールMn+1は実際には存在しない。このことは、図1Bの要素130’内の空円によって概略的に図示されている。これは、特定の時点で構成されたウィービングシステムは、システムの変化がベースシステム内で発生すると、実際のベースシステムおよびその対応するアスペクトを対応するジョインポイントおよびジョインポイントシャドーを用いても、もはや正確には反映できないことを意味する。これは、システム全体の実行時および動作時に不整合またはエラーをもたらす可能性がある。
【0038】
この欠点を克服するために、図2に関連して例示した本発明の1つの実施形態を提供する。図2は、本発明の1つの実施形態による方法を例示するフローチャートを示している。ステップ200では、ベースシステムの中に何らかの変化、すなわち図1Aおよび図1Bに関連して例示したような変化が発生する。そのような変化に基づいて、ステップ210では、ベースシステムへとウィービングされている1つ以上のアスペクトについてこの変化についての重要性を評価する。次に、その後のステップ220では、ステップ210で評価されたシステムの変化の重要性に基づいてシステムの変化に適応させるために適応動作が行われる。
【0039】
ベースシステム内のシステムの変化の重要性を評価する動作210には、例えばあるアスペクトおよびそのポイントカット(またはそのジョインポイント記述)について、システムの変化の後でこのアスペクトにより追加され参照されたジョインポイントまたはジョインポイントシャドーにおいて変化があるかどうかを評価することから成る。これは、図3に関連してさらに説明するように行うことができる。
【0040】
図3は、本発明のさらに別の実施形態によるフローチャートを概略的に示している。図3では、特定のアスペクトが特定の時点でベースシステムの中にウィービングされる(ステップ300)。次に、ステップ310において、図1Aおよび図1Bに関連して既に前に説明したようなシステムの変化が発生する。次に、動作320において、システムの変化の後のアスペクトおよびベースシステムの組合せに対応する一連のジョインポイントとジョインポイントシャドーのうちのいずれかまたは両方が計算または決定される。これは各アスペクトについて、アスペクトが確実に正しくベースシステムへとウィービングされるために適応動作を行う必要がある一連のジョインポイントとジョインポイントシャドーとのうちのいずれかまたは両方を結果として生ずる。次にステップ330において、特定のアスペクトについて、ステップ320で生じた一連のものを、アスペクトがウィービングされた時点で決定または計算された同じ一連のジョインポイントまたはジョインポイントシャドーと比較する。換言すると、システムの変化の前の一連のものとシステムの変化の後の一連のものとを比較する。次に動作340において、2つの一連のものが異なると判断した場合、システムの変化がこのアスペクトについて重要であり、またシステムの変化およびそのアスペクトに対する影響を補償するために、何らかの適応動作(ステップ350)を行う必要がある。適応動作を行う1つの方法は、アスペクトを再ウィービングすること、換言すると動作300に戻ってアスペクトをもう一度、今変化したベースシステムへとウィービングすることである。しかしながら、ステップ340でベースシステムには実際にはもはや存在しない(対応しない)ジョインポイントまたはジョインポイントシャドーをアスペクトが参照することがわかった場合、ベースシステム内のアスペクトを再ウィービングする(再インストールする)代わりに、このアスペクトを削除する(withdraw)(取り外す(deinstall)またはアンウィービングする)ことができる。その結果、この場合に行われる適応動作は、このアスペクトを(部分的または全体的に)削除、取り外しまたはアンウィービングすることである。
【0041】
一連のものの比較(ステップ330)は各アスペクトについて実行され、その結果に基づいて幾つかのアスペクトが再ウィービングされ、幾つかはアンウィービングされ、また幾つかについてはいかなる操作も行う必要がない。
【0042】
図4を参照して、本発明の実施形態によるシステムの変化に関する通知について説明する。ベースシステム400が変化すると、システムの変化に関する通知が、好ましくは自動的にシステム要素410に送られる。要素410は、システムの変化を評価し適切な適応動作を開始できるような任意の要素とすることができる。1つの特定の実施形態によれば、システムの要素410は、任意のベースシステムに関連付けられアスペクトまたはアドバイスがベースシステム内の何らかの変化に関して通知されるような、ベースシステムに登録されたアスペクトまたはアドバイスとすることができる。通知を受けるためのこのような登録は、例えばプログラミング言語であるスモールトーク言語で容易に実行できる。このプログラミング言語スモールトークは、システムが変化する場合に通知を受けるために、ベースシステムに登録するためのフレームワークを提供する。その結果そのような情報に関係しているとして自身が登録されているアスペクトまたはアドバイスが通知され、次にそのポイントカットを再評価して、既に前に説明したように一連のジョインポイントまたはジョインポイントシャドーを決定し、システムの変化の前の一連のジョインポイントまたはジョインポイントシャドーとの相違が判明すると、アスペクトまたはアドバイスは適応動作、例えばアスペクトまたはアドバイスの再ウィービングを開始する。ある実施形態によれば、アスペクトについて関係する特定の変化(システムの特定の部品またはモジュールにおける変化)などのシステムの変化についてアスペクトまたはアドバイスを登録することは、一般的なものまたは特定のものとすることができる。
【0043】
しかしながら、要素410は、アスペクトをベースシステムへとウィービングする役割を果たすウィーバとすることもできる。このウィーバは次に、システムの変化がそれに重要性があるかどうかを評価し、重要性があると判明すると、1つ以上のアスペクトまたはアドバイスを再ウィービングするなどの適応動作を開始する。
【0044】
しかしながら、要素410は、通知を受け取り(ことによると最初だけ)評価を行う役割を果たすような特定のシステム要素によって形成することもできる。次に、この要素は、どのアスペクトまたはアドバイスがシステムの変化によって影響を受けるかを決定し、次に適応動作を開始するためにアスペクトおよびアドバイスとウィーバとのうちのいずれかまたは両方にメッセージを送る。
【0045】
システム要素410に対する(自動的な)通知は、「プッシュモデル」と見なすことができるが、システム要素が何らかの変化が起こっているかどうかについて積極的にベースシステムをポーリングすることもできる。これは、「プルモデル」と見なすことができる。そのようなプルモデルの1つの具体的な実施形態が、図5に概略的に示されている。ベースシステムは、ベースシステムの中にインストール、ウィービングまたは構成されている1つ以上のアスペクトに関連付けられた一連のジョインポイントまたはジョインポイントシャドーを変化させる可能性があるシステム要素を追加、取外しまたは修正するようなシステムの変化が発生しているかどうかを(連続的に)監視またはポーリングする(図2のステップ200)。ステップ510において、これが認められると、システム要素400(図4を参照のこと)に通知される。一旦、システム要素(これはアスペクト、アドバイス、特定の要素またはウィーバとすることができる)が通知を受けると、システム全体のそれぞれのアスペクトまたはアドバイスについて別個に、システムの変化の重要性に関する評価(ステップ430)を実行する。システムの変化に重要性があると判明すると、既に前述されたように適応動作が行われる。システムの変化が発生する場合は、変化の通知に関係するこれらの要素がシステムの変化について自動的に通知されるように、ベースシステムの監視が行われる(ステップ400〜420)。これは「プッシュモデル」と見なすことができる。この場合、アスペクトは何らかのシステムの変化について通知されるようにシステムに登録する。または別のいわゆる「プルモデル」を用いる場合は、アスペクトは何らかのシステムの変化を見つけるためにベースシステムを能動的にポーリング(poll)する。プッシュモデルとプルモデルとの任意の組合せも考えることができる。
【0046】
1つの特定の実施形態によれば、本発明は、コンピュータ言語「スモールトーク(Smalltalk)」またはその方言の1つで「スクウィーク(Squeak)」と呼ばれる言語を用いて実行することができる。この言語「スクウィーク」を用いるアスペクト指向プログラミングの説明は、例えばR.Hirschfeld、「AspectS − Aspect−oriented programming with Squeak」、Aksit、Mezini、Unlandらによる「Objects, Components, Architectures, Services, and Applications for a Networked World」、LNCS 2591、Springer−Verlag、2003年に記載されている。
【0047】
前述したように、言語スクウィークまたはスモールトークは、実行されるベースシステム内のアスペクトおよびその対応するジョインポイントまたはジョインポイントシャドーに影響する可能性がある何らかのシステムの変化の監視を比較的容易に行うために使用できるシステムの変化および変化の通知を行うためのインフラストラクチャーを提供する。そのために、アスペクトに関連付けられたアドバイスは、種類または方法の追加、修正または取外しなどのシステムの変化の事象に対して登録することができる。
【0048】
変化が生ずると、こうした変化を通知するように登録されたアドバイス、アスペクト、ウィーバ、ポイントカットまたはシステム全体の他の任意の要素などのシステム要素は、この変化に関して通知される。前述の実施例では、情報は種類または方法の追加、修正または取外しにのみ関係している。1つの実施形態によれば、通知はシステムの変化が発生する「直前」に行うこともできる。
【0049】
既に前述したように、システムの変化に関する情報により特定のアスペクトについてシステムの変化の重要性を評価することがトリガされ、重要性があることが判明すると、適応動作が前述したように実行される。
【0050】
システムの変化の重要性を確認するために、1つの実施形態によれば、システムの変化の後のアスペクトまたはアドバイスの一連のジョインポイントまたはジョインポイントシャドーを、アスペクトが最初にインストールし、ウィービングし、組み立てが行われたときまたは以前の重要な変化の事象に応じて前に適応動作が行われたときの一連のものとの比較が実行される。換言すると、システムの変化の後の新しい一連のジョインポイントまたはジョインポイントシャドーが、アスペクトに現在関連付けられている一連のジョインポイントまたはジョインポイントシャドーと比較される。実際にアスペクトと関連付けられた一連のジョインポイントシャドーが実際にアスペクトとに関連付けられる必要がある一連のものと異なっているように、この比較が両方のリストすなわち一連のものが相違しているという結果に至った場合は、適応動作が行われる。
【0051】
1つの実施形態によれば、重要性があると判明したシステムの変化が生じた場合に行われる適応動作には、代わりにまたは組み合わせて行う幾つかの動作が含まれる。このような動作には、ソフトウェアのインストールまたはアンインストール、コンポーネントの起動と停止とのうちのいずれかまたは両方、モジュールのロードとアンロードとのうちのいずれかまたは両方、または交換、およびアスペクトとアドバイスとのうちのいずれかまたは両方の再ウィービングまたはアンウィービングが含まれる。
【0052】
本発明による実施形態のさらに別の実施例は、図6A〜図6Dに関連して説明する。図6Aは、特定の言語すなわちスクウィークで実行され、AspectSと呼ばれるスクウィークを用いるアスペクト指向プログラミングに対する一般的な方式による、従来のアスペクトのウィービングを概略的に示している。この言語を用いるアスペクト指向プログラミングの詳細については、R. Hirschfeldによる前述した文献を参照されたい。その中に、図6Aのさらに詳細な説明も記載されている。
【0053】
AspectSの方法によれば、アスペクトには1つ以上のアドバイスが含まれている。アドバイスはそれぞれ1つ以上のポイントカットを含み、ポイントカット自身はベースシステムの中にジョインポイントを設定するためのジョインポイント記述を含む。ジョインポイント記述子は、セレクタ(方法)およびジョインポイントを定義するためにセレクタを実行する(受信機の)クラスを(アドバイスを受信するクラスとして)特定する。アドバイスは1つ以上のアドバイス識別子をさらに含み、これにより、アドバイスに関連したポイントカットの動的な属性を記述できるようになる。さらにアスペクトは、アドバイスを実行するためのコードを含む。このため、AspectSは、アドバイスを実行するためのコードを表すクラスブロックコンテキストのインスタンスであるブロックを使用する。図6Aの上半分は、AspectSの環境におけるアスペクトを概略的に示しており、図6Aの中央には、ウィーバが概略的に示されている。このウィーバは、図6Aの上半分に例示されたアスペクトを、ベースシステム(図示せず)にウィービングする。アスペクトをベースシステムの中にウィービングするために、AspectSはいわゆるブロックメソッドラッパの位置を、アスペクトによってアドバイスされた様々なジョインポイントの中に記載された受信機のクラスのメソッドディクショナリの中に置く。これは、図6Aの下半分に概略的に例示されている。これにより、図6Aのボトムラインに示しているようにウィーバは、アスペクトがベースシステムへとウィービングされている構成システムを生み出す。AspectSは、アスペクトによってアドバイスされた種々のジョインポイントの中で記載された受信機のクラスのメソッドディクショナリの中にブロックメソッドラッパを配置する。
【0054】
ウィーバによって構成された構成システムのランタイムと同等なものが、図6Bに概略的に示されている。アドバイス、ポイントカットおよびその関連付けられたジョインポイント記述子に基づいて、メソッドラッパが使用され、対応するブロックコンテクスト計算によってアドバイスコードの実行が可能になる。前述した内容のより詳細な説明は、上記のR. Hirschfeldの文献の中にある。
【0055】
AspectSに関する従来の方式を説明したので、ここで例えばAspectSを実行する場合の本発明による実施形態を、図6Cおよび図6Dを参照して説明する。図6Cは、本発明に基づいて、どのようにアスペクトおよびその対応するアドバイスがベースシステム内の変化に対処するように修正されるかについて概略的に示している。図6Cからわかるように、アドバイス識別子は適応動作ストラテジー(これは、ブロックコンテクストの実行にも対応する)を参照する。これにより、前述したように、本発明による実施形態の動作が実行される。適応動作ストラテジーには、何らかのシステムの変化について評価するステップと、行うべき適切な動作を決定するステップと、そのような動作を開始するステップとが含まれる。環境(システムの変化に対する評価)に基づいて、図6Cに概略的に示されているように、アスペクトもしくはアドバイスの再ウィービング、またはアスペクトもしくはアドバイスの削除などの種々の反応を実行できる。
【0056】
システムの変化を評価し必要な場合に適応動作をトリガするために、既にウィービングされた(「アクティブな」)システムの中で使用および実行されるような、一連のジョインポイントまたはジョインポイントシャドーに対応し、またはそれらを反映する「アクティブなポイントカット」が提供される。システムの変化が発生した後で、変化したシステムに対する(新しい)ポイントカットまたは対応する一連のジョインポイントまたはジョインポイントシャドーが評価され、既に存在するポイントカット(「有効なポイントカット」)またはその対応する一連のジョインポイントまたはジョインポイントシャドーと比較される。(重要性がある)相違が存在すると判明すると、適切な適応動作が行われる。
【0057】
このことは、図6Dに示されているブロック図の中でさらに詳細に説明する。この図6Dでは図6Cに加えて、本発明の実施形態に基づいて実行する個々のステップも示されている。システムの変化(事象a)に関するアドバイスが通知される。アスペクトまたはアドバイスの代わりに、図6Dのa*で示されているようにアスペクト以外の他のシステム要素も同様または代わりに通知される。通知されるシステム要素は、重要性の確認および適応動作のいずれかを実行できる要素である必要があり、または重要性の確認および適応動作を開始できなければならない。ここで、図4および対応する要素410を説明する。
【0058】
次に、システム要素は、変化と重要性がありそうなアスペクトまたはアドバイスに通知する。次に、重要性の確認および修正の開始が行われる(ステップb)。これにより、次に、一連のジョインポイント、ジョインポイントシャドーとしてポイントカットの計算を開始する(ステップc)。次に結果が、実際に動作中のポイントカット、すなわちシステムの変化の前、または現在の(ウィービングされた)システムの中で使用されているようなポイントカットまたはその対応する一連のジョインポイント、ジョインポイントシャドーと比較される(ステップd)。動作中のポイントカットとシステムの変化の後の新しいポイントカットとの間に何らかの相違が存在すると判明すると、適応動作ストラテジーが呼び出されて(ステップe)、これによりシステムの変化に対処またはそれを補償するために適応動作が行われる。
【0059】
以下、本発明による実施形態の特定の具体例の実施例を説明する。この例証的な具体例は、スモールトークの方言であって当業者には周知のプログラミング言語であるスクウィークに基づいている。スクウィークによるアスペクト指向プログラミングの概念に関する説明は、上記のR. Hirschfeldによる文献の中にある。
【0060】
図7は、プログラムコードの要素であるC01、C02およびC03を示している。C01およびC02はそれぞれ、「adviceMouseEnter」および「adviceMouseLeave」と名付けられている、マウスの動きに関係するアスペクトに対応したアドバイス用のプログラムコードを示している。C01は、マウスが入力されたときに実行するアドバイス用のプログラムコードを定義し、C02は、マウスが放置されたときにアドバイスを実行するためのプログラムコードを示している(それぞれマウスを入力することまたは放置することに対応するマウスの事象の場合)。ポイントカットには、モーフ(Morph)(例示的なクラス)および全てのそのサブクラスにおいて、方法(またはセレクタ)「mouseEnter」(adviceMouseEnterの場合)および「mouseLeave」(adviceMouseLeaveの場合)が実行される位置などのジョインポイント記述が含まれる。
【0061】
C03は、AsMorphicMousingAspectと呼ばれるこれら2つのアドバイスに属するアスペクトをウィービングするための例示的なコードを示している。
【0062】
実施例C01およびC02で示されているプログラムコードは、マウスの入力およびマウスの放置に対してアドバイスを実行する従来の実施例である。C01およびC02は、根底にあるベースシステムにおけるどのようなシステムの変化にも対処できない。
【0063】
ブロックC04に示しているプログラムコードは、このアドバイスによって実行されるベースシステム内のどのような変化も処理することができるアドバイスの実施例を与えている。C04はマウスの入力イベントに対するプログラムコードの実施例を与え、C05はマウスの放置に関連したアドバイスに対するプログラムコードの実施例を与えている。
【0064】
アドバイスが識別子を含むことが分かる。このような識別子により、アドバイスまたはアスペクトに関連したジョインポイントまたはジョインポイントシャドーの組の動的な属性の記述(例えば、ポイントカットによって記述される)が可能になる。このような識別子の機能に関するより詳細な説明は、上記のR. Hirschfeldによる文献の中にある。ブロックC04およびC05の識別子は従来のコードのものとは異なり、すなわち、それらは適応動作モジュール(「アダプテーション」と呼ばれる)およびアドバイスを再インストールするモジュール(「アドバイスの再インストール」と呼ばれる)を参照することを含むことが分かる。
【0065】
「アダプテーション」は、システムの変化に関してシステムを監視し、これらのシステムの変化を評価するためにシステム要素を参照して、このシステムの変化に重要性があると判明すると、「アドバイスの再インストール」を実行するコードまたは要素が変化に対処するために呼び出される。この識別子を用いて、ブロックC04およびC05で与えられるアドバイスは、システムの変化の後に、必要な場合、アドバイスを再インストールすることによってどのようなシステムの変化にも対処することができる。
【0066】
本発明の1つの実施形態によれば、本発明に基づいてシステムを実行するために3つの異なるエンティティーがある。1つのエンティティーはベースシステムであり、これはベースシステムを形成するモジュールまたは要素を備えている。アスペクトモデル(これはアスペクト要素またはアスペクトシステムと呼ばれることもある)は、ベースシステムとは異なり、それから分離している。このアスペクトモデルは、アスペクト、アドバイスまたはポイントカットなどを実行する要素またはモジュールによって形成され、またはそれらを備えることができる。ベースシステムとともにアスペクトモデルまたはアスペクトシステムは、ベースシステムおよびクロスカットの問題をベースシステムの中で実行するアスペクトモデルまたはアスペクトシステムによって形成される全体のシステムを形成する。
【0067】
全体のシステムの一部を形成する第3のエンティティーは、ベースシステム内の変化に適応的な方法で反応する可能性を提供する適応システムまたは適応動作要素である。
【0068】
3つのシステム(ベースシステム、アスペクトシステム、適応システム)は別個のものであり、各システムが分離したエンティティーであるという意味で互いに切り離されている。1つの実施形態に基づいた各エンティティーは、そのエンティティーを実行または設計するルールおよび対応する表現(プログラミング言語など)のフレームワークを用いて構築される。各エンティティー(ベースシステム、アスペクトシステム、適応システム)は、個別のモジュールまたは要素を備えている。このことは、図8に概略的に示されている。この図では、ベースシステムがボックス810として概略的に示されている。この図のベースシステムは、図1Aにも示されたベースシステムに対応しており、1つの実施形態では、より汎用的なコンピュータ言語スモールトークの方言であるコンピュータ言語スクウィークの中で実行することができる。
【0069】
ベースシステムに加えて、異なった別のエンティティーとして別のモデル、アスペクトシステム820(図8を参照のこと)が存在する。1つの実施形態では、このアスペクトシステム820は、アドバイスコードを呼び出す必要がある、ベースシステム810の中のジョインポイントシャドーを選択するアドバイス要素(図示せず)およびポイントカット(図示せず)を含むアスペクト825を備えている。
【0070】
アスペクトシステムは、別個のエンティティーであり、またベースシステムに関係なく実行および修正することができるという意味で、ベースシステムから分離されている。
【0071】
ウィーバ835を通して、アスペクトシステムの中で定義されたアスペクトまたはアドバイスはベースシステム810の中にウィービングされ、これにより実行の準備ができた構成システム840を形成する。本発明の実施形態によれば、構成システム(またはベースシステムまたはアスペクトシステム)の中のどのような変化にも適応することが必要となる。
【0072】
システムの変化に適応できるようにするために、全体的なシステムのさらなる要素(第3の要素)、適応システム860が提供される。1つの実施形態による適応システムは、ベースシステム内の何らかの変化に関する通知を受け取り、次にその変化を評価する要素を含む。アダプテーションシステムはさらに、1つの実施形態に基づいて、動作の選択を実行するアクションセレクタを備える。このアクションセレクタは、どの種類のシステムの変化またはどの種類の評価結果がどの種類の行うべき適応動作に導く必要があるかを定義するための一連のルールである。それはさらに、アクションセレクタによってなされた決定に基づいて必要であることが判明した適応動作を開始または実行のいずれかを行うための要素を備える。次に、適応システムは、適応動作を実行するために、ウィーバに動作を行わせることができる。これには、アスペクトシステム820のアスペクトまたはアドバイスの再ウィービングが含まれ、またアスペクトまたはアドバイスのアンウィービングも含まれる。
【0073】
前述したように、ベースシステム、アスペクトシステムおよび適応システムは別個のエンティティーである。これらのエンティティーは、適当なインターフェース、一般的には手順、方法または機能の直接または間接呼出しを通して相互作用を行う。これにより、これら3つのエンティティーを互いに独立に実行および修正することが可能となるため、大きな柔軟性が得られる。
【0074】
適応システム900について、図9を参照しながらさらに説明する。オブザーバ910は、ベースシステム内の変化に関する通知を受け取る。次に、オブザーバに接続されたエバリュエータ920は、システムの変化に重要性があるかどうかを評価する。重要性がある場合は、アクションセレクタ930がどの適応動作を実際に行う必要があるかを決定または選択する。そのために、アクションセレクタ930は、評価結果に基づいて、それがどのように決定されるかまたどの適応動作を行うべきか(「適応動作ストラテジー」と呼ばれることもある)を定義するために一連のルールを実行する。次に、アクションセレクタは、全体的または部分的な再ウィービング、全体的または部分的なアンウィービングなどの複数の可能な適応動作ストラテジーがあるプール950から、この動作すなわち適応動作ストラテジーを選択する。次に、選択された適応動作ストラテジーは転送されて、実行するウィーバ960によって使用される。これにより、結果として変化された構成モデル970が生ずる。構成モデルまたはベースシステム内に何らかの別の変化が生じる場合、オブザーバ910から始まる全体の手順を再度トリガすることになることは容易に理解されよう。
【0075】
ここで、別の実施形態によるシステムの変化に関する評価について、さらに詳細に説明する。エバリュエータ920は、ベースシステム内の変化に関する通知をオブザーバ910から受け取る。前述したように、これは次に評価され、幾つかの可能な評価結果の1つをもたらす。この結果は例えば、システムの変化の後で、システムモジュールを追加する場合は、より多くのジョインポイントシャドーをウィーバがウィービングするべきであり、システムモジュールを取り外す場合は、より少ないジョインポイントシャドーをウィーバがウィービングするべきであるとポイントカットにより示される。このことは、前の実施形態に関連して既に説明したものである。
【0076】
評価結果に基づいて、アクションセレクタ930は次に、どの動作(適応動作ストラテジー)を実際に行う必要があるかを決定する。下記の特定のルールによって、アクションセレクタ930は、使用すべき適応動作ストラテジーを決定する。例えば、システムの変化の後でより多くのジョインポイントシャドーをウィービングする必要がある場合は、可能な方法のプール950から選択された適応動作ストラテジーは、アスペクトをベースシステムへとウィービングするということである。
【0077】
別の場合、評価の結果は、システムの変化の後で、より少ないジョインポイントシャドーをウィービングする必要があるということである。このとき、適応動作ストラテジーに基づいて選択される動作は、アスペクトがベースシステムからアンウィービングされることである。次に、ウィーバは、適応モジュールによってアンウィービングが実行されると通知される。
【0078】
ベースシステム、アスペクトモデルおよび適応動作モデルが3つの別個のエンティティーであることは、前に説明した。しかしながら、特定の実施形態によれば、適応システムの幾つかの部分は、アスペクトモデルの要素または部分として実行することができる。例えば、オブザーバ910は、既に前に説明したように、例えばシステムの変化についてアスペクト、アドバイスを登録することによって、アスペクトまたはアドバイスの一部として実行することができる。ここで、アスペクト、アドバイスがシステムの変化に関する通知を受け取ると、それは評価を開始するか(例えば、機能呼出しによって)または自分で評価を実行する。アスペクト、アドバイスが特定のポイントカットに関連付けられているため、この特定のアスペクト、アドバイスについてシステムの変化に重要性があるかどうかを確認することができる。このことは、前述したように、システムの変化の前後のポイントカットを評価することによって行うことができる。これにより、特に個々のアスペクト、アドバイスに対する評価を実行することが可能になる。ベースシステム内のある種の変化は全てのアスペクト、アドバイスについて必ずしも重要性があるというわけではないため、これは好都合である。機能または手順の呼出しを通してアスペクト、アドバイス自体が実行した評価の後で、アクションセレクタが次に呼び出されて、適当な適応動作ストラテジーを決定する。この実施形態では、オブザーバおよびエバリュエータがアスペクトシステムの一部として実行され、次に適当な適応動作ストラテジーを選択して実行を開始するために、アスペクトシステムは評価の後に適応システムを呼び出す。
【0079】
前の実施形態によれば、オブザーバおよびエバリュエータ(図9内の要素910および920)はアスペクトシステムの一部であるが、別の実施形態によれば、これらの要素はその代わりにウィーバの一部を形成する。例えば、ウィーバはシステムの変化に関する通知を受けて、そのシステムの変化を評価するか、または(機能呼出しを通して)評価を開始する。ウィーバ自身がシステムの変化を評価する場合、ウィーバは評価結果を適応システムに転送する。適応システムのアクションセレクタは、適応動作を選択する役割があるため、適当な適応動作を選択してその実行を開始する。
【0080】
このため、前の実施形態によれば、図9に示したオブザーバ910およびエバリュエータ920は、適応システムの一部ではなくてアスペクトシステムまたはウィーバの一部である。ここでも適応システム、アスペクトシステムおよびベースシステムは、直接または間接呼出しを通して通信する3つの別個のエンティティーのままである。
【0081】
前述したように、アクションセレクタの中で実行される適応ルールは、システムの変化またはそれらの評価と行う必要がある適応動作(選択された適応動作ストラテジー)との間の対応関係を反映する。プログラマが例えばプログラミング時に、例えばどのシステムの変化が行うべき特定の適応動作(デフォルトの適応動作)をもたらすかを定義することによって、この対応関係を定義することができる。別の実施形態によれば、適応動作を行うという決定は、その決定が例えば他のモジュールまたは機能の評価、またはユーザの入力内容(ランタイムの間の)の評価などの、ランタイムの間に決定されるパラメータに依存するように実行される。例えば、新しいシステム要素を追加する場合は、このシステム要素を例えばロギングまたは追跡手順によって観察する必要があるかどうかをユーザは尋ねられ、その必要がある場合は、ユーザの肯定応答に反応して、適切な適応動作ストラテジーが選択され、これは例えば再ウィービングが実行されることを意味する。
【0082】
適応動作ストラテジーの選択は、アクションセレクタで実行されるルールを参照することによって、一般にランタイムの間に行われ、またこれらのルールは、望ましい適応動作能力を実現するために設計者の好みに基づいて実行することができる。
【0083】
上記の実施形態に関連して本発明を説明してきたが、これらは具体例の目的のみに使用されるものであり、本発明を限定すると解釈するべきではなく、また本発明の精神および範囲から逸脱することなく修正することができることは、当業者は容易に理解されよう。特に、本発明はソフトウェア、ハードウェア、または両方の組合せの中で実行できることは明らかである。本発明の要素は、ハードウェア、ソフトウェアまたは両方の組合せによって実現できる。説明の中で特定のプログラミング言語について言及したが、任意の好適なコンピュータおよび任意の好適なプログラミング言語を使用して本発明を実現できることを理解されたい。さらに、例示的なプログラムコードは、本発明の原理を説明するためにのみ例示的に使用されると理解すべきであり、このため本発明を限定すると理解してはならない。本発明の実施形態は、ソフトウェア、ハードウェア、または両方の組合せの中で実現することができる。
【0084】
例えば、ある実施形態によれば、本発明の実施形態を実行する装置は、本発明の前の実施形態に関連して説明した機能を実行できるように適応動作が行われ、またコンピュータまたはコンピュータシステムに取り付けられるウィーバを備えている。別の実施形態によれば、本発明の実施形態を実行する装置は、本発明の以前の実施形態に関連して説明された機能を実行できるように適応動作が行われ、またコンピュータまたはコンピュータシステムに取り付けられるアスペクトシステムを備えている。本発明のさらに別の実施形態によれば、本発明の実施形態を実現する装置は、本発明の1つ以上の前述の実施形態に関連して説明したように、コンピュータまたはコンピュータシステムが機能できるようにするソフトウェアが組み込まれている任意のコンピュータまたはコンピュータシステムとすることができる。
【図面の簡単な説明】
【0085】
【図1A】従来技術に基づいて、ウィーバを用いるアスペクトおよびベースシステムの構成を概略的に示す図である。
【図1B】従来技術のシステムでシステムの変化が生じた場合に生じる可能性がある問題を概略的に示す図である。
【図2】本発明の実施形態による方法を概略的に示す図である。
【図3】本発明のさらに別の実施形態による方法を概略的に示す図である。
【図4】本発明の実施形態に基づいて、通知を行うための基本的な構成を概略的に示す図である。
【図5】本発明の実施形態による別の方法を概略的に示す図である。
【図6】本発明のさらに別の実施形態によるシステムを概略的に示す図である。
【図7】本発明による実施形態を実行するためのプログラムコードの典型的な実施例を示す図である。
【図8】本発明の実施形態によるシステムを概略的に示す図である。
【図9】本発明のさらに別の実施形態による方法を概略的に示す図である。

【特許請求の範囲】
【請求項1】
ウィーバを用いてベースシステムへとウィービングされるべきアスペクトを実行するアスペクトシステムを含むアスペクト指向プログラミング環境におけるベースシステム内の変化に適応する方法であって、
前記ベースシステム内のある変化に応じて、前記ベースシステム内の前記変化の重要性を評価するステップと、
前記評価により前記変化に重要性があると判明した場合、前記変化を補償するために適応動作を行うステップと
を含む方法。
【請求項2】
前記変化の重要性を評価するステップは、
前記ベースシステム内の変化の後、前記ベースシステム内の変化前のジョインポイントまたはジョインポイントシャドーが、前記ベースシステム内の変化後のものと異なっているかどうかを決定するステップ
を含むものである、請求項1に記載の方法。
【請求項3】
あるアスペクトまたはアドバイスについて前記重要性の評価を個々に実行するステップと、
前記変化に重要性があると判明した前記あるアスペクトまたはアドバイスについて個々に適応動作を行うステップと
をさらに含む請求項1または2に記載の方法。
【請求項4】
前記適応動作は、
あるアスペクトを前記ベースシステムに全体的または部分的に再ウィービングするステップと、
あるアスペクトに関連付けられたアドバイスを全体的または部分的に再ウィービングするステップと、
あるアスペクトを全体的または部分的にアンウィービングするステップと、
あるアスペクトに関連付けられたアドバイスを全体的または部分的にアンウィービングするステップと
のうちの2つ以上を含む複数の適応動作から選択されるものである、請求項1〜3のいずれか一項に記載の方法。
【請求項5】
前記アスペクト指向プログラミング環境は、前記ベースシステムおよび前記アスペクトシステムに加えて適応システムを含むものであり、
前記適応システム、前記ベースシステムおよび前記アスペクトシステムは、互いに独立して修正および実行できる別個のエンティティーである、
請求項1〜4のいずれか一項に記載の方法。
【請求項6】
前記ベースシステム、前記アスペクトシステムおよび前記適応システムは、直接または間接呼出しを通して相互に作用するものである、請求項1〜5のいずれか一項に記載の方法。
【請求項7】
前記ベースシステム内に変化が生じた場合、前記ベースシステム、前記アスペクトシステムおよび前記適応システムを含んだ全体的なシステムの要素に対し、前記ベースシステム内の変化を通知するステップをさらに含むものであって、前記要素は、
前記ベースシステムの変化に関する評価を開始することと、
前記ベースシステムの変化を評価することと、
前記評価に基づいて適応動作を開始することと、
前記評価に基づいて適応動作を実行することと
のうちの1つ以上を行うことができるものである、
請求項1〜6のいずれか一項に記載の方法。
【請求項8】
前記要素は、
アスペクトと、
アドバイスと、
ウィーバと、
ポイントカットと、
全体的なシステムの任意の他の要素と
のうちの1つである、請求項7に記載の方法。
【請求項9】
前記要素に前記ベースシステム内の変化を通知するステップは、
前記ベースシステム内に変化が生じた場合、対応する通知を前記要素に送ることにより前記要素に自動的に通知するステップと、
前記ベースシステム内に何らかの変化が発生しているかどうかについて前記ベースシステムを監視するために、前記要素により前記ベースシステムをポーリングするステップと
のうちのいずれかまたは両方を含むものである、請求項7または8に記載の方法。
【請求項10】
前記ベースシステム内の何らかの変化に関する通知を受けるために、前記アスペクトシステムの1つ以上の要素を登録するステップを含む請求項1〜9のいずれか一項に記載の方法。
【請求項11】
前記ベースシステムの変化を評価するステップは、
前記変化の後、あるアスペクトとアドバイスとのうちのいずれかまたは両方について、一連の全てのジョインポイントと一連の全てのジョインポイントシャドーとのうちのいずれかまたは両方を決定するステップ
を含むものである、請求項1〜10のいずれか一項に記載の方法。
【請求項12】
前記変化の後に決定された前記一連のジョインポイントと前記一連のジョインポイントシャドーとのうちのいずれかまたは両方を、前記変化の前の対応する一連のものと比較するステップと、
前記一連のものが異なる場合、前記変化を補償するために適応動作を行うステップと
をさらに含む請求項1〜11のいずれか一項に記載の方法。
【請求項13】
行われる適応動作ストラテジーとして複数の可能な適応動作を提供するステップと、
前記評価に応じて、前記複数の適応動作から1つ以上を選択するステップと
をさらに含む請求項1〜12のいずれか一項に記載の方法。
【請求項14】
前記重要性を評価するステップは、
前記評価結果に基づいて、前記適応動作のいずれを行うべきかを決定する一連のルールを評価するステップ
をさらに含むものである、請求項1〜13のいずれか一項に記載の方法。
【請求項15】
前記重要性を評価するステップは、ランタイム中に発生する事象または動作を考慮に入れるものであり、
前記事象または相互作用は、
ユーザとの対話と、
ランタイム中の機能またはモジュールの評価と
のうちの1つ以上である、
請求項1〜14のいずれか一項に記載の方法。
【請求項16】
前記ベースシステムの変化は、前記ベースシステムの要素の追加、取外しまたは修正のうちの1つ以上を含むものである、請求項1〜15のいずれか一項に記載の方法。
【請求項17】
請求項1〜16のいずれか一項に記載の方法を実行するためのコンピュータ実行可能なコードを含むコンピュータプログラム。
【請求項18】
請求項17に記載のコンピュータプログラムを含み、または具体化するデータ記憶媒体。
【請求項19】
ウィーバを用いてベースシステムへとウィービングされるべきアスペクトを実行するアスペクトシステムを含むアスペクト指向プログラミング環境におけるベースシステム内の変化に適応する装置であって、
前記ベースシステム内のある変化に応じて、前記ベースシステム内の前記変化の重要性を評価する手段と、
前記評価により前記変化に重要性があると判明した場合、前記変化を補償するために適応動作を行うための手段と
を備える装置。
【請求項20】
前記変化の重要性を評価する手段は、
前記ベースシステム内の変化の後、前記ベースシステム内の変化前のジョインポイントまたはジョインポイントシャドーが、前記ベースシステム内の変化後のものと異なっているかどうかを決定する手段
を備えるものである、請求項19に記載の装置。
【請求項21】
あるアスペクトまたはアドバイスについて前記重要性の評価を個々に実行する手段と、
前記変化に重要性があると判明した前記あるアスペクトまたはアドバイスについて個々に適応動作を行うための手段と
をさらに備える請求項19または20に記載の装置。
【請求項22】
前記適応動作は、
あるアスペクトを前記ベースシステムに全体的または部分的に再ウィービングするステップと、
あるアスペクトに関連付けられたアドバイスを全体的または部分的に再ウィービングするステップと、
あるアスペクトを全体的または部分的にアンウィービングするステップと、
あるアスペクトに関連付けられたアドバイスを全体的または部分的にアンウィービングするステップと
のうちの2つ以上を含む複数の適応動作から選択されるものである、請求項19〜21のいずれか一項に記載の装置。
【請求項23】
前記アスペクト指向プログラミング環境は、前記ベースシステムおよび前記アスペクトシステムに加えて適応システムを含むものであり、
前記適応システム、前記ベースシステムおよび前記アスペクトシステムは、互いに独立して修正および実行できる別個のエンティティーである、
請求項19〜22のいずれか一項に記載の装置。
【請求項24】
前記ベースシステム、前記アスペクトシステムおよび前記適応システムは、直接または間接呼出しを通して相互に作用するものである、請求項19〜23のいずれか一項に記載の装置。
【請求項25】
前記ベースシステム内に変化が生じた場合、前記ベースシステム、前記アスペクトシステムおよび前記適応システムを含んだ全体的なシステムの要素に対し、前記ベースシステム内の変化を通知する手段をさらに備えるものであって、前記要素は、
前記ベースシステムの変化に関する評価を開始することと、
前記ベースシステムの変化を評価することと、
前記評価に基づいて適応動作を開始することと、
前記評価に基づいて適応動作を実行することと
のうちの1つ以上を行うことができるものである、
請求項19〜24のいずれか一項に記載の装置。
【請求項26】
前記要素は、
アスペクトと、
アドバイスと、
ウィーバと、
ポイントカットと、
全体的なシステムの任意の他の要素と
のうちの1つである、請求項19〜25のいずれか一項に記載の装置。
【請求項27】
前記要素に前記ベースシステム内の変化を通知する手段は、
前記ベースシステム内に変化が生じた場合、対応する通知を前記要素に送ることにより前記要素に自動的に通知する手段と、
前記ベースシステム内に何らかの変化が発生しているかどうかについて前記ベースシステムを監視するために、前記要素により前記ベースシステムをポーリングする手段と
のうちのいずれかまたは両方を備えるものである、請求項25または26に記載の装置。
【請求項28】
前記ベースシステム内の何らかの変化に関する通知を受けるために、前記アスペクトシステムの1つ以上の要素を登録する手段を備える請求項19〜27のいずれか一項に記載の装置。
【請求項29】
前記ベースシステムの変化を評価する手段は、
前記変化の後、あるアスペクトとアドバイスとのうちのいずれかまたは両方について、一連の全てのジョインポイントと一連の全てのジョインポイントシャドーとのうちのいずれかまたは両方を決定する手段
を備えるものである、請求項19〜28のいずれか一項に記載の装置。
【請求項30】
前記変化の後に決定された前記一連のジョインポイントと前記一連のジョインポイントシャドーとのうちのいずれかまたは両方を、前記変化の前の対応する一連のものと比較する手段と、
前記一連のものが異なる場合、前記変化を補償するために適応動作を行うための手段と
をさらに備える請求項19〜29のいずれか一項に記載の装置。
【請求項31】
行われる適応動作ストラテジーとして複数の可能な適応動作を提供する手段と、
前記評価に応じて、前記複数の適応動作から1つ以上を選択する手段と
をさらに備える請求項19〜30のいずれか一項に記載の装置。
【請求項32】
前記重要性を評価する手段は、
前記評価結果に基づいて、前記適応動作のいずれを行うべきかを決定する一連のルールを評価する手段
をさらに備えるものである、請求項19〜31のいずれか一項に記載の装置。
【請求項33】
前記重要性を評価する手段は、ランタイム中に発生する事象または動作を考慮に入れるものであり、
前記事象または相互作用は、
ユーザとの対話と、
ランタイム中の機能またはモジュールの評価と
のうちの1つ以上である、
請求項19〜32のいずれか一項に記載の装置。
【請求項34】
前記ベースシステムの変化は、前記ベースシステムの要素の追加、取外しまたは修正のうちの1つ以上を含むものである、請求項19〜22のいずれか一項に記載の装置。

【図1A】
image rotate

【図1B】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate

【図6D】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2007−529799(P2007−529799A)
【公表日】平成19年10月25日(2007.10.25)
【国際特許分類】
【出願番号】特願2007−503202(P2007−503202)
【出願日】平成16年3月19日(2004.3.19)
【国際出願番号】PCT/EP2004/050337
【国際公開番号】WO2005/096146
【国際公開日】平成17年10月13日(2005.10.13)
【出願人】(392026693)株式会社エヌ・ティ・ティ・ドコモ (5,876)
【出願人】(506313383)ウニヴェルジテート・デュイスブルク‐エッセン (3)
【Fターム(参考)】