which is unavailable. By this technique, we were
able to correct the behavior of OpenJPA and JDBC
drivers. Aspects can change the behavior, however,
leave the source code and original JARs intact. Thus,
the essential and novel value of our AO approach is a
method to address the challenges of integrating 3
rd
party software, keeping the original software
untouched and being able to manage the concerns of
migration in a maintainable manner.
It is AspectJ that let the migration succeed with
simple solutions in short time. Indeed, AspectJ is a
powerful language and we are simply using this
power to easily solve critical problems quickly.
Moreover, there is a lack of adequate alternative
solutions. The only alternative seems to patch the
source code explicitly – if available at all. The effort
for changing the source code, adding data exchange
between unrelated classes, and building the JAR
leads to more complexity, error proneness, and effort
than our AO-based approach. Moreover, we are
unsure whether the problems could be solved with
conventional techniques since the source code of
JDBC drivers is usually not available.
Another advantage becomes obvious. Although
we exchanged the solidDB JDBC driver twice and
switched from OpenJPA version 0.9.7 to 1.1.0, we
did not touch our aspects, they are stable and still
work correctly with the newer versions.
In future work, we want to apply AO for other
purposes in the project. For example, we currently
use a model-driven approach to generate code from
XML specifications, i.e., several Java classes are
generated by XSL-T transformations. We want to
investigate whether AspectJ could be an alternative.
We hope that such a solution could be easier to use,
better understandable, and evolvable.
REFERENCES
Aksit, M., 2003. Proc. of 2nd Int. Conf. on Aspect-
Oriented Software Development. AOSD 2003
Burke, B., 2005. Implementing Middleware Using AOP. In
Proc. 4th Conf. on Aspect-Oriented Software
Development. (AOSD), Chicago 2005
Coady, Y., Kiczales, G., 2003. Back to the Future: A
Retrospective Study of Aspect Evolution in Operating
System Code. In (Aksit, 2003)
Chapman, M., Vasseur, A., Kniesel, G., 2006. Proc. Of
Industry Track of 3rd Conf. on Aspect-Oriented
Software Development (AOSD), Bonn 2006
Duck, A., 2006. Implementation of AOP in Non-Academic
Projects. In (Chapman, Vasseur and Kniesel, 2006)
Elrad, T., Filman, R., Bader, A., 2001. Theme Section on
Aspect-Oriented Programming. CACM 44(10), 2001
Gamma, E., Helm, R., Johnson, R., Vlissides, J., 1995.
Design Patterns - Elements of Reusable Object-Oriented
Software. Addison-Wesley 1995
Hannemann, J., Kiczales, G., 2002. Design Pattern
Implementation in Java and AspectJ. In Proc. of the
17th Conf. on Object-Oriented Programming,
Systems, Languages, and Applications, OOPSLA
2002
Hohenstein U., 2006. Using Aspect-Orientation to
Manage Database Statistics. In: (Chapman, Vasseur
and Kniesel, 2006)
Joosen, W., Sanen, F., Truyen, E., 2006. Dissemination of
AOSD expertise support documentation. AOSD-
Europe Deliverable No.: AOSD-Europe-KUL-8
Kästner, C., Apel, S., Batory, D., 2007. A Case Study
Implementing Features Using AspectJ. In Proc. Int.
Software Product Line Conference (SPLC), Kyoto
2007, IEEE Computer Society
Kienzle, J., Gélineau, S., 2006. AO Challenge –
Implementing the ACID Properties for Transactional
Attributes. In Proc of 5th Int. Conf on Aspect-Oriented
Software Development. Bonn (Germany) 2006
Kiczales, G., 2005. Adopting AOP. In Proc. 4th Conf. on
Aspect-Oriented Software Development; AOSD 2005,
Chicago, ACM Press
Laddad, R., 2006. AOP@Work: Myths about AOP.
http://www-128.ibm.com/developerworks/java/library
/j-aopwork15
Laddad, R., 2008. AspectJ in Action: Practical Aspect-
Oriented Programming (2nd ed.), Manning,
Greenwich (2008)
Murphy, G., Walker, A., Robillard, M., 2001. Separating
Features in Source Code: An Exploratory Study. In
Proc. of 23rd Int. Conf. on Software Engineering 2001
Ostermann, K., Mezini, M., Bockisch, C., 2005.
Expressive Pointcuts for Increased Modularity. In
19th European Conf. on Object-Oriented Program-
ming (ECOOP05), Malaga (Spain) 2005, LNCS 3586
Rashid, A., 2004. Aspect-Oriented Database Systems.
Springer Berlin Heidelberg 2004
Rashid, A., Chitchyan, R., 2003. Persistence as an Aspect.
In (Aksit, 2003)
Soares, S., Borba, P, 2005. Implementing Modular and
Reusable Aspect-Oriented Concurrency Control with
AspectJ. In WASP05, Uberländia, Brazil
Strunk, W., 2007. The Symphonia Product-Line. Java and
Object-Oriented (JAOO) Conference, 2007
Vines, D., Sutter, K., 2007. Migrating legacy Hibernate
applications to OpenJPA and EJB 3.0. http:
//www.ibm.com/developerworks/websphere/techjourn
al/0708_vines/0708_vines.html
Wiese, D., Hohenstein, U., Meunier, R., 2007. How to
Convince Industry of Aspect-Orientation? Industry
Track of 6th Int. Conf. on Aspect-Oriented Software
Development, AOSD 2007, Vancouver
Wiese, D., Meunier, R., 2008. Large Scale Application of
AOP in the Healthcare Domain: A Case Study. In
Industry Track of 7th Int. Conf. on Aspect-Oriented
Software Development (AOSD), Brussels 2008
Zhang, C., Jacobsen, H.-A., 2003. Quantifying Aspects in
Middleware Platforms. In (Aksit, 2003).
USING ASPECT-ORIENTATION FOR SOFTWARE MIGRATION
39