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
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
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
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
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
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.
|
|
|
|