White Papers and Presentations
News:
April 16, 2008: Updated my longer introduction to Aquarium, called Aquarium: Aspect-Oriented Programming for Ruby (PDF), to reflect API changes since the original version was made.
April 3, 2008: Added a short presentation on Aquarium, called Aquarium: AOP for Ruby (PDF) that I gave at the AOSD 2008 Conference today.
Aquarium
Aquarium: AOP for Ruby (PDF)
This short talk (30 minutes) presented Aquarium to the aspect-oriented programming research community at the Aspect-Oriented Software Development 2008 Conference, in Brussels. It assumes some familiarity with aspects. See the next, longer presentation if you are new to AOP/AOSD. The talk was based on my Industry Track paper.
Aquarium: Aspect-Oriented Programming for Ruby (PDF)
This talk introduces Aquarium, an AOP framework for ruby. I gave this talk at the Chicago Ruby User's Group (Chirb), Oct. 1, 2007 (Updated: April 16, 2008). I discuss how Aquarium works and why AOP is interesting for Ruby. For example, I show a simple example of refactoring Rails code to improve it's clarity when Aquarium is used vs. using metaprogramming (e.g., class_eval and alias_method). There are a few exercises that go with the talk: Aquarium_RubyAOP_exercises.zip
General AOSD
AOP in Academia and Industry (PDF)
I discuss some of the academic research and industry trends that led to the creation of AOP, the current state of things, and how both can contribute to the future development of AOP and emerging technologies that might use it.
Aspect-Oriented Programming and Design for Java and AspectJ (PDF)
This is an introduction to AOP, given as a presentation at the Chicago Java User's Group, Sept. 6, 2007. I discuss why AOP is interesting, what problems it solves, followed by a look at how aspects can be implemented in AspectJ and Spring AOP. I then look at several object-oriented design principles adapted to aspects and, along the way, demonstrate fine-grained separation of concerns using AspectJ.
I tried to follow the Takahashi Method of presentation design, which is especially challenging when you present code. Some of the slides look a bit busy, but only because the PDF doesn't show you the builds that I use in the live presentation. Any feedback on the presentation is welcome!
Aspect-Oriented Design Principles: Lessons from Object-Oriented Design (PDF on the AOSD 2007 Conference web site).
An examination of 11, well-established OOD principles and how they apply to AOD. The main objective of this paper is to address pragmatic issues of designing production-quality aspect-based software. In today's world, aspects won't prosper unless they promote agility, reusability, and maintainability. The 11 OOD principles discussed have proven to be effective design tools that promote these qualities (especially in languages like Java, C#, C/C++, etc.). I discuss how the principles apply to aspect software, how AOD refines them, and how they lead to new aspect-specific extensions that promote better aspect design. This paper is part of the Industry Track at AOSD 2007 in Vancouver, BC.
Contract4J
AOP@Work: Component Design with Contract4J
(IBM developerWorks).
An introduction to Contract4J and how to use it. The article also briefly discusses some emerging ideas about the nature of interfaces in Aspect-Oriented Design, and how Contract4J demonstrates some of those ideas.
The Challenges of Writing Reusable and Portable Aspects in AspectJ: Lessons from Contract4J (PDF).
Writing Contract4J revealed many of the challenges faced when trying to write generic, reusable aspects in AspectJ. This paper discusses those challenges, how they were addressed, and offers suggestions for improvements to AspectJ and our concepts of AOD that will make it easier to write reusable aspects. Presented at the Industry Track, AOSD 2006, Bonn Germany, March 22, 2006 (Click here to get all the Industry Track papers).
Contract4J for Design by Contract in Java: Design Pattern-Like Protocols and Aspect Interfaces (PDF)
Contract4J comes in two forms; an implementation where contract tests are defined using Java 5 annotations and a more experimental implementation where the tests are defined as regular Java methods with a JavaBeans-like naming convention. This paper discusses how these two forms define a protocol with two different syntaxes that allow aspects to advice objects with minimal coupling, in the spirit of interface design. Presented at the ACP4IS Workshop at AOSD 2006, Bonn Germany, March 21, 2006.
Older Papers
The Future of AOP (PDF)
Predictions about the likely future of AOSD, based on the history of OOP. The basis for this comparison is the conceptual parallels between the two technologies. The presentation also has a brief description of AOP itself. It ends with an appraisal of the current state of AOP and offers some recommendations for how to begin working with it today.
Use Cases as Aspects V0.1 (PDF)
Some preliminary work on Ivar Jacobson's idea of considering Use Case-oriented software development as a form of AOSD.
AOP and MDA (PDF)
An examination of how AOSD addresses some technical challenges in OMG's Model Driven-Architecture (MDA).

