Liskov Substitution Principle in Aspectual Polymorphism

タイトルの英語ウソくせえけど、、、

Aspectual Polymorphism が何かは、ちょっと色々議論がありそうなテーマだと思うけど、雰囲気的には、オブジェクトの振る舞いが実際のオブジェクトの型(クラス)に
によって変わるように、オブジェクトの振る舞いは、どのアスペクトがデプロイされているかの状況によっても変化する、みたいな感じだと思う(詳しいことはリソースを参照)。


Liskov Substitution Principle (LSP) は、ラフにいうと、サブクラスは、スーパークラスに置き換え可能でなければならない(or 置き換え可能であるようにクラスを実装しなければならない)、みたいな感じ(だと思う)。正確な定義はここでは関係ないので無視するけど、、、この原則は、Aspectual Polymorphism を考えたときには、どう関係するんだろうか?


あるいは、Java とかでは、継承(or サブタイプ)関係がなないクラスを、別のクラスとして扱おうとするのは、コンパイル時にチェックされる。Aspectual Polymorphism を考えたときには、どのような制約を課すことが適切なんだろうか? アスペクトがデプロイされるコンテキストにおける制約とは、何かあるんだろうか?


たとえば、Caesar では、deploy には、どんなアスペクトでも渡せたはず:


deploy(myAspect) {
//
}
型レベルでの制約を課すには、たとえば:

deploy( getLoggingAspect(type) ) {
//
}

LoggingAspect getLoggingAspect(String type) {
if (...) return new ConsoleLogging();
if (...) return new FileLogging();
...
return ...;
}

しかし、これでチェックできるのは、型だけであって、振る舞いの制約ではない、と思う。Aspectual Polymorphism を考えたときに、ある状況におけるなんらかの制約は存在するのだろうか? あるとしたら、どうやってそれを書く?

リソース:
Aspectual Polymorphisn については:

Erik Ernst and David H. Lorenz.
Aspects and Polymorphism in AspectJ.
In Proceedings of the 2nd International Conference on Aspect-Oriented Software Development. (2003)

DL: http://www.ccs.neu.edu/home/lorenz/papers/aosd2003polyspect/

M. Haupt, C. Bockisch, M. Mezini, K. Ostermann.
Towards Aspect-Aware Execution Models.
Technical Report TUD-ST-2003-01.

DL: http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp

M. Mezini and K.Ostermann.
Conquering Aspects with Caesar.
the 2nd International Conference on Aspect-Oriented Software Development.(2003)

DL: http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp

Jurgen Hallpap.
Towards Caesar: Dynamic Deployment and Aspectual Polymorphism
Diploma Thesis, Technische Universit¨at Darmstadt, Germany.(2003)

DL: http://www.st.informatik.tu-darmstadt.de/public/AllTheses.jsp

Roman Pichler, Klaus Ostermann, Mira Mezini.
On Aspectualizing Component Models.
In "Software Practice and Experience", Volume 33, Issue 10, pp. 957-974, Wiley Publishers, 2003.

DL: http://www.st.informatik.tu-darmstadt.de/public/Publications.jsp
Contextual Polymorphisn については:

Rainer Burgstaller and Siemens AG.
Hot-Deployment of Aspects.
Dynamic Aspects Workshop (DAW04).

DL: http://aosd.net/2004/workshops/daw/papers.html