InfoQ

Interview

Adrian Colyer on Domain Specific Aspects

Interview with Adrian Colyer on Apr 09, 2007 06:00 PM

Community
Java
Topics
AOP
Tags
AspectJ ,
Spring
Summary
AspectJ lead and AOP expert Adrian Colyer briefly talks about Domain Specific Aspects, where business rules and policies and can map to an aspect like solution. Adrian also discusses using AOP to implement design patterns such as Observer/Observable, and AOP adoption.

Bio
Adrian Colyer is the leader of the AspectJ project and a well-known industry expert on AOP. He is a co-author of the book "Eclipse AspectJ : AOP in Eclipse with AspectJ and AJDT," and has also published numerous book chapters, articles and published papers. Adrian is Chief Scientist at Interface21, providers of the Spring Framework.
Can you tell us a bit about yourself and what you're involved in?
Where are we now in the option cycle for Aspects?
What kind of requirements can map to domain specific aspects?
Can you talk more about the e-commerce example? How are the Aspects used for pricing and what objects could they be intercepting?
What about using Aspects for complex event processing? Could Aspects replace the Observer/Observable pattern?
You've moved to Interface21, the company that puts out Spring. What are you doing there and how does that impact on your role in the Aspect world?
show all  show all
Using domain aspects by Rickard Öberg Posted Apr 10, 2007 4:41 AM
Re: Using domain aspects by Floyd Marinescu Posted Apr 10, 2007 11:34 AM
Re: Using domain aspects by Rickard Öberg Posted Apr 12, 2007 10:08 AM
When was the interview? by Twice Tshwenyane Posted Apr 12, 2007 7:55 AM
Re: When was the interview? by Floyd Marinescu Posted Apr 12, 2007 9:34 AM
  1. Back to top

    Using domain aspects

    Apr 10, 2007 4:41 AM by Rickard Öberg

    Great interview, and it's good to hear that there is more discussion around domain aspects. We've been using AOP and domain aspects since 2002, and have nothing but good experiences with it. Also, I must say that doing the opposite of what Adrian talks about, i.e. plunging into using AOP all-out instead of just using the "simple" parts, allowed us to exploit the advantages of it more fully, and in a less schizofrenic way. So there are certainly benefits to going "all in". But, at the same time it *IS* important to consider if a team have the skillz and experience needed to do so. With great advantages comes great risk, so it's (as usual) a tradeoff.

  2. Back to top

    Re: Using domain aspects

    Apr 10, 2007 11:34 AM by Floyd Marinescu

    Rickard, Adrian mentioned business policies that apply in a number of places as an example use of Aspects for domain logic. What were some of yours?

  3. Back to top

    When was the interview?

    Apr 12, 2007 7:55 AM by Twice Tshwenyane

    When was this interview carried out? Most of the things in the last paragraph seem dated.

  4. Back to top

    Re: When was the interview?

    Apr 12, 2007 9:34 AM by Floyd Marinescu

    It was about a year ago, we tried to edit out anything dated, sorry if we missed anything.

  5. Back to top

    Re: Using domain aspects

    Apr 12, 2007 10:08 AM by Rickard Öberg

    The majority of our interceptor aspects apply only to one "place" (=mixin), BUT the vast majority if mixins are reused in a number of places, which means that the interceptor aspects are then consequently ALSO reused in many objects. E.g. if I add a child to a container there's an interceptor which ensures that the child->container is properly set. The interceptor applies to only one place (=the Container.addChild method), but the Container mixin applies to some twenty places in our domain model. This allows for highly focused and specific aspects which are still highly reusable, when combined with mixins. So the interceptors are usually very specific in terms of methods that they apply to, but those methods/mixins can then be reused quite a lot in a number of different classes. The way I think about aspects changed quite a bit when I started using mixins in our domain model extensively, since as in the above case it allows the interceptor aspects to be very specific to a particular mixin, but the mixins are usually highly reusable.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.