Modularizing communication middleware concerns using aspects
Journal of the Brazilian Computer Society volume 13, pages 81–94 (2007)
Software engineers often rely on communication middleware platforms to design and implement distributed systems. However, middleware functionality is usually invasive, pervasive and tangled with business-specific concerns. In this paper, we describe an aspect-oriented distributed programming system that encapsulates middleware services provided by Java RMI and Java IDL. The proposed system, called DAJ, handles the basic service provided by such object-oriented middleware platforms, i.e., synchronous remote calls using call by-serialization and call by-remote-reference semantics. The paper documents our experience in using DAJ to modularize middleware concerns from three legacy distributed systems.
Gustavo Alonso, Fabio Casati, Harumi Kuno, and Vijay Machiraju.Web Services: Concepts, Architecture and Applications. Springer Verlag, 2004.
Apache Axis. http://ws.apache.org/axis/.
Jon Bentley. Programming pearls: little languages.Communications ACM, 29(8):711–721, 1986.
Lionel C. Briand, Yvan Labiche, and Johanne Leduc. Toward the reverse engineering of UML sequence diagrams for distributed Java software.IEEE Transactions on Software Engineering, 32(9):642–663, 2006.
Mariano Ceccato and Paolo Tonella. Adding distribution to existing applications by means of aspect oriented programming. In4th IEEE International Workshop on Source Code Analysis and Manipulation, pages 107–116. IEEE Computer Society, 2004.
Shigeru Chiba and Rei Ishikawa. Aspect-oriented programming beyond dependency injection. In 19thEuropean Conference on Object-Oriented Programming, volume 3586 ofLecture Notes in Computer Science, pages 121–143. Springer, 2005.
Adrian Colyer and Andrew Clement. Large-scale AOSD for middleware. In3rd International Conference on Aspect-Oriented Software Development, pages 56–65. ACM Press, 2004.
Krysztof Czarnecki and Ulrich Eisenecker.Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000.
Markus Dahm. Bytecode engeeniering with the BCEL API. Technical report, Freie Universitt — Institut fur Informatik, 2001.
Marco Tulio de Oliveira Valente, Fabio Tirelo, Diana Campos Leao, and Rodrigo Palhares. An aspectoriented communication middleware system. InInternational Symposium on Distributed Objects and Applications, volume 3761 ofLNCS, pages 1115–1132. Springer-Verlag, October 2005.
Frantisek Plasil and Michael Stal. An architectural view of distributed objects and components in CORBA, Java RMI and COM/DCOM.Software Concepts and Tools, 19(1):14–28, 1998.
Sudipto Ghosh, Robert B. France, Devon M. Simmonds, Abhijit Bare, Brahmila Kamalakar, Roopashree P. Shankar, Gagan Tandon, Peter Vile, and Shuxin Yin. A middleware transparent approach to developing distributed applications.Software Practice and Experience, 35(12):1131–1154, October 2005.
Aniruddha S. Gokhale, Douglas C. Schmidt, Balachandran Natarajan, and Nanbor Wang. Applying model-integrated computing to component middleware and enterprise applications.Communications of the ACM, 45(10):65–70, 2002.
Java IDL. http://java.sun.com/products/jdk/idl.
Gregor Kiczales, Erik Hilsdale, Jim Hugunin, Mik Kersten, Jeffrey Palm, andWilliam G. Griswold. An overview of AspectJ. In15th European Conference on Object-Oriented Programming (ECOOP), volume 2072 ofLNCS pages 327–355. Springer Verlag, 2001.
Gregor Kiczales, John Lamping, Anurag Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier, and John Irwin. Aspect-oriented programming. In11th European Conference on Object-Oriented Programming (ECOOP), volume 1241 ofLNCS, pages 220–242. Springer Verlag, 1997.
Fabio Kon, Fábio Costa, Roy Campbell, and Gordon Blair. The case for reflective middleware.Communications of the ACM, 45(6):33–38, June 2002.
Uirá Kulesza, Cláudio Sant’Anna, Alessandro Garcia, Roberta Coelho, Arndt von Staa, and Carlos José Pereira de Lucena. Quantifying the effects of aspect-oriented programming: A maintenance study. In22nd IEEE International Conference on Software Maintenance, pages 223–233, 2006.
Ramnivas Laddad.AspectJ in Action Practical Aspect-Oriented Programming. Manning, 2003.
Geoffrey Lewis, Steven Barber, and Ellen Siegel.Programming with Java IDL. John Wiley & Sons, 1997.
Cristina Videira Lopes.D: A Language Framework for Distributed Programming. PhD thesis, College of Computer Science, Northeastern University, December 1997.
Neil Loughran, Lionel Seinturier Geoff Coulson, Renaud Pawlak, Eddy Truyen, Frans Sanen, Maarten Bynens, Wouter Joosen, Andrew Jackson, Siobhan Clarke, Neil Hatton, Monica Pinto, Lidia Fuentes, Mercedes Amor, Tal Cohen, Adrian Colyer, and Christa Schwanninger. Requirements and definition of aspect-oriented middleware reference architecture. Technical report, AOSD Europe, oct 2005.
Cristiano Amaral Maffort and Marco Tulio de Oliveira Valente. Aspectos para construção de aplicações distribuídas. InXX Simpósio Brasileiro de Engenharia de Software, pages 271–286, 2006.
Martin Fowler. Inversion of control containers and the dependency injection pattern. http://www.martinfowler.com/articles/injection.html.
OMG Model Driven Architecture. http://www.omg.org/mda.
Carlos O’Ryan, Fred Kuhns, Douglas C. Schmidt, Ossama Othman, and Jeff Parsons. The design and performance of a pluggable protocols framework for real-time distributed object computing middleware. InInternational Middleware Conference, volume 1795 of Lecture Notes in Computer Science, pages 372–395. Springer, 2000.
Manuel Román, Fabio Kon, and Roy Campbell. Reflective middleware: From your desk to your hand.Distributed Systems Online, 2(5), July 2001.
Sergio Soares, Paulo Borba, and Eduardo Laureano. Distribution and persistence as aspects.Software Practice and Experience, 36(7):711–759, 2006.
Sergio Soares, Eduardo Laureano, and Paulo Borba. Implementing distribution and persistence aspects with AspectJ. In17th ACM Conference on Object-Oriented programming systems, languages, and applications, pages 174–190. ACM Press, 2002.
Friedrich Steimann. The paradoxical success of aspectoriented programming. In21st Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), pages 481–497, 2006.
Eli Tilevich, Stephan Urbanski, Yannis Smaragdakis, and Marc Fleury. Aspectizing server-side distribution. InAutomated Software Engineering Conference, pages 130–141. IEEE Press, October 2003.
Arie van Deursen, Paul Klint, and Joost Visser. Domainspecific languages: an annotated bibliography.ACM SIGPLAN Notices, 35(6):26–36, 2000.
Steve Vinoski. CORBA: integrating diverse applications within distributed heterogeneous environments.IEEE Communications Magazine, 14(2), 1997.
MitchellWand. Understanding aspects: extended abstract. In8th International Conference on Functional Programming, pages 299–300. ACM Press, August 2003.
AnnWollrath, Roger Riggs, and JimWaldo:. A distributed object model for the Java system. In2nd Conference on Object-Oriented Technologies & Systems, pages 219–232, 1996.
Charles Zhang and Hans-Arno Jacobsen. Refactoring middleware with aspects.IEEE Transactions Parallel and Distributed Systems, 14(11):1058–1073, 2003.
Charles Zhang and Hans-Arno Jacobsen. Resolving feature convolution in middleware systems. In19th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, pages 188–205. ACM Press, 2004.