Lambda the Ultimate

inactiveTopic Aspect-Oriented Programming for Distributed Systems
started 5/15/2004; 1:20:01 PM - last post 5/19/2004; 2:36:40 PM
Peter Van Roy - Aspect-Oriented Programming for Distributed Systems  blueArrow
5/15/2004; 1:20:01 PM (reads: 11931, responses: 4)
Aspect-Oriented Programming for Distributed Systems
This is a talk that I gave to a Belgian Aspect-Oriented Programming workshop a few weeks ago. It made a bit of a stir.

Building distributed applications involves many different concerns, for example application functionality, distribution structure, tolerance for partial failure, and security. Instead of trying to build a generic tool that could handle all these concerns, we will treat each concern in depth (solve it completely) before going to the next. We consider each aspect as a partial specification, and the full specification as the conjunction of all these partial specifications. The crucial property is independence: each new partial specification that is added should not invalidate the previous ones. We have been following this approach for almost a decade now in our work on the Oz language and the Mozart system. In this talk I will give some examples of how it works for real applications and then conclude with some lessons we have learned.

A first lesson is that language design is an important part of the solution: keeping independence imposes strong conditions on the language. A second lesson is that to make each aspect work in realistic conditions, we have to change the application architecture. Simple source transformations are not enough. In hindsight this is obvious, since we have no automatic technique for going from specification to program. A final lesson is regarding the limits of aspect-oriented programming. Even with the best possible AOP, complexity increases because of the large number of aspects, each of which requires changes in the application architecture. At some point we need to go beyond AOP. We propose a simple and time-honored solution: to find "good enough" solutions for certain aspects and then to hide them inside abstraction layers. We finish the talk by summarizing what we have realized in Oz and Mozart and outlining the large amount of work that still has to be done.
Posted to Software-Eng by Peter Van Roy on 5/15/04; 2:10:56 PM

Alex Tibbles - Re: Aspect-Oriented Programming for Distributed Systems  blueArrow
5/17/2004; 3:35:15 AM (reads: 319, responses: 0)
I'd be very interested to read about what "made a bit of a stir". Could you please elaborate? Was it that application architecture had to change?

Chris Rathman - Re: Aspect-Oriented Programming for Distributed Systems  blueArrow
5/17/2004; 4:53:43 PM (reads: 247, responses: 0)
Based purely on speculation of who would likely attend an AOP conference, I'd conjecture that the idea that AOP increases complexity and that it was not sufficient.... Well, at least you know that if it was a choir, PVR was probably preaching from a different denomination. :-)

Peter Van Roy - Re: Aspect-Oriented Programming for Distributed Systems  blueArrow
5/19/2004; 6:52:42 AM (reads: 145, responses: 0)
what "made a bit of a stir": One typical reaction was: "But you're not really doing AOP!" I said that I thought I was. If you take AOP seriously, it should start from a program's specification and not be just a way of specifying certain kinds of source transformations.

Paul Snively - Re: Aspect-Oriented Programming for Distributed Systems  blueArrow
5/19/2004; 2:36:40 PM (reads: 128, responses: 0)
Peter Van Roy: One typical reaction was: "But you're not really doing AOP!" I said that I thought I was. If you take AOP seriously, it should start from a program's specification and not be just a way of specifying certain kinds of source transformations.

I expected this, because Aspect-Oriented Programming is the Artificial Intelligence of software engineering. Once you can crystalize what you are doing, particularly well enough that it gets absorbed as a linguistic abstraction, It Isn't AOP Anymore, just as once you can crystalize some algorithms and data structures adequately, you aren't doing Artificial Intelligence anymore, cf. the chess program at your favorite software store.