See Also
RAM Models 
Overview of AspectOptima

AspectOptima is an aspect-oriented framework that uses aspect-oriented technology to decompose transaction models and their implementations into many individually reusable aspects.

Based on the aspectual decomposition offered by AspectOptima, it is possible to compare transaction models, or create new models by applying features of one model to another one. Also, transaction system implementations can be analyzed to identify common functionality shared between concurrency control and recovery strategies.

The main goal of AspectOptima however is to serve as a case study for the aspect-oriented community. The individual aspects of AspectOptima are simple, yet they have complex dependencies among each other. They can be composed in different ways, depending on the needs of the application. This composition however is delicate: some aspects conflict with each other or require a specific invocation ordering, others have to be reconfigured in order to provide correct functionality in the presence of other aspects. We believe that the above, and the fact that AspectOptima has not been invented to promote a particular aspect-oriented system, makes it an ideal challenge case study for the aspect-oriented community. In particular, it can be used to evaluate:

  1. Aspect-Oriented Software Development Processes: We performed our decomposition into aspects based on our previous implementation experience. How does an AOSD process perform when applied to this case study? Is the resulting decomposition equally simple, modular, and reusable? Can the process identify aspect dependencies and conflicts?

  2. Aspect-Oriented Modeling Notations: Can an AOM notation capture the complex structural and behavioral dependencies of the aspects in this case study? Are the resulting models easy to understand? Are the models reusable? Can aspect dependencies and conflicts be expressed?

  3. Aspect-Oriented Validation and Verification: Can AO formal methods and AO testing techniques be used to individually validate and verify each aspect in a stand-alone way? Can these methods detect conflicts between aspects?

  4. Aspect-Oriented Programming Implementations: How do different AOP implementations compare with respect to performance and memory footprint? How do they compare to standard OO implementations? Is run-time weaving to implement dynamic AOP faster than static weaving with run-time checks?

  5. Aspect-Oriented Language Features: What are the features that an AO programming language must provide in order to implement this case study? What features can promote good software engineering properties such as encapsulation, modularization, testability, maintainability, and reusability? What features are required to support aspect dependencies and resolution of conflicts in a reusable way?

Reusable Aspect Models of AspectOptima

Click here to see how we applied our Reusable Aspect Models multi-view modeling approach to model the design of parts of the AspectOptima framework.

AspectOptima Implementation

Click here to download the implementation of AspectOptima in AspectJ.

Publications on AspectOptima Implementation

  1. Jörg Kienzle. Ekwa Duala-Ekoko, Samuel Gélineau: “AspectOptima: A Case Study on Aspect Dependencies and Interactions”, Transactions on Aspect-Oriented Software Development, Springer Verlag.

  2. Jörg Kienzle, Samuel Gélineau: “AO Challenge: Implementing the ACID Properties of Transactional Objects”, Proceedings of the 5th International Conference on Aspect-Oriented Software Development - AOSD’06, ACM Press, March 2006, p. 202 - 213.

Last modified: March 17, 2009, Jörg Kienzle