Aspect Oriented Logic Meta Programming in Smalltalk

Page last updated on Wednesday, April 3, 2002 21:37


The Logic Meta Programming (LMP) approach to AOP is a framework, that allows users to define, implement, combine and use their own aspect-specific aspect languages. Aspect-specific languages allow a more intuitive and concise description of the aspect. In our approach, the implementation of aspect-specific languages (ASLs) is eased because weavers for ASLs do not have to be implemented from scratch. The basic idea is that each aspect-specifc language is embedded in a logic programming language. This means that the aspect-specific notations can be implemented in terms of more general notations using logic rules that deduce general-purpose aspect declarations from more specific ones. The result is that each weaver for an aspect-specific language transforms the aspect declarations in his ASL into aspect declarations of a more low-level ASL. As such, one can build a tower of weavers. Furthermore, because all aspect-specific languages are embedded in a logic language, aspect combinations between aspects in different languages can be implemented.

LMP has already been demonstrated as a technology to support a better separation of concerns [DeVolder99]. In this research, the TyRuBa LMP-language is used as an open-ended aspect weaver.The SOUL/Aop aspect weaver uses the same basic LMP-ideas but uses the SOUL LMP-language as a logic inference engine. SOUL allows code generation as well as reasoning about object-oriented base programs. Because the logic language in SOUL lives in symbiosis with the object-oriented base-language (Smalltalk), logic reasoning as well as procedural programming can be used. More importantly, SOUL's library of logic rules to reason about code (LiCoR) provides an easy mechanism to specify user-defined joinpoints and primitive pointcuts. Another important difference between TyRuBa and SOUL/Aop is that the SOUL/Aop aspectweaver is not based on the generation of source-code but supports integrated weaving in the Smalltalk environment.

The SOUL/Aop tool is used as a researchtool at the Programming Technology Lab to focus on the following subjects:


Johan Brichau, Kim Mens, Kris De Volder, Building Composable Aspect-specifc Languages with Logic Metaprogramming, submitted to the GSCE/SAIG 2002 Conference.

Online manual (A first draft)


Soul/Aop is implemented in Visualworks 5i4.You must first load the latest Soul version and methodwrappers.

SOUL/Aop 0.6