Re: can you have interception w/o aop?

"Kevin Sullivan" <[email protected]>
Newsgroups gmane.comp.programming.aspect.general
Message-ID <[email protected]>
Argh, typo, fixed below:

On 4/6/06, Kevin Sullivan <[email protected]> wrote:
>
> I see AOP as currently discussed addressing *two* general goals.
>
> 1. better accommodate the fact that concerns are crosscutting, in general,
> and hierarchical decomposition is therefore inadequate
> 2. better accommodate the fact that modularization can complicate
> evolution in the face of unanticipated changes in specification
>
> I believe there are benefits in thinking about and in addressing these
> issues separately (separation of concerns). In particular, we've shown that
> it's possible to use AOP mechanisms to address #1 without necessarily buying
> into some of the more controversial policies by which AOP typically
> addresses #2: namely policies that demand non-enforceability of
> abstractions. The idea here is that a range of program and execution details
> must unrestrictably remain open to subsequent advising by aspect modules, on
> the assumption that because one can't anticipate what downstream clients
> will need, one is best served by leaving open a broad and detail-rich
> interface for them to exploit. The XPI notion we've discussed here recently,
> for example, reconciles traditional notions of information hiding modularity
> and integral, explicit, abstract interfaces with the need to represent
> crosscutting behaviors, but it does this without committing to the
> hypothesis that evolution is best accommodated by radical openness. In other
> words, it addresses #1 without taking a stance on #2. I tend to think we're
> on much more solid ground today with respect to #1 ("modularization of
> crosscutting concerns") than with #2 (a form of "obliviousness"). On #2,
>

Here I meant #1 -- modularization of crosscutting concerns (as opposed to
obliviousness)

we will find, I believe, that AOP contributes both to our understanding of
> the need to consider forms of modularity in design that transcend the forms
> that you get by practicing OOD/OOP in traditional/straightforward ways, and
> to our toolkit of mechanisms for achiving better forms of modularity. Of
> course there are other and earlier mechanisms and approaches addressing
> related problems. Eventually I think we'll end up with a coherent set of
> mechanisms and a better software engineering understanding of how to achieve
> more appropriate modularity in software design, perhaps leading to what will
> look like an enhanced form of OOP/OOD with a more balanced emphasis on
> "objects," on the one hand, and "crosscutting behaviors," on the other. My
> sense is thus that we're now well on the way to having a good handle on #1.
> As far as #2, I think it remains a very interesting area for research. I
> personally do not believe that it's realistic to open up details of all of
> the modules of complex systems to downstream advising without the
> stabilizing influence of intervening design rules / interfaces. A good
> example: If a very large operating system vendor were to allow
> indiscriminate advising of its library code (whether in source or object
> form) then it would never again be able to release new library
> implementations without breaking the applications of thousands, perhaps
> millions, of application developers. That's just not a model that seems
> realistic. On the other hand, there is simply no question that
> modularization  incurs opportunity costs. Nor do I believe we yet have a
> theory of modularity in design adequate to help designers understand when
> and how to modularize for greatest ( e.g., business) advantage. So,
> although I'm somewhat pessimistic about policies of radical openness, I do
> think that the larger question of when and how to modularize, based on the
> ability to model the costs and benefits
>

of

modularity, remains an important area for research. Notions of open
> implementations, obliviousness in AOP, and so forth do call into question
> somewhat settled but still arguably inadequate notions of modularity, and so
> can help to spur such research. In that way, at a minimum, I think, they
> make a valuable contribution to the research enterprise. We've just got a
> longer way to go on #2 than on #1 for a profitable transition to practice.
>
> Kevin
>
>
> On 4/6/06, Pascal Costanza <[email protected]> wrote:
> >
> >
> > On 6 Apr 2006, at 11:27, Roger Johansson wrote:
> >
> > > Hi, thanks for the sample.
> > > what would it take in order to make that sample AOP?
> > >
> > > Im just trying to find a clear definition on when something is AOP
> > > and when its not.
> >
> > It seems to me that two characterizations are currently typically
> > used. One describes the goal, and the other describes what seems to
> > be common to all approaches considered AOP.
> >
> > - The goal-oriented characterization: Aspects are modularizations of
> > crosscutting concerns.
> >
> > - The technical characterization: An approach supports AOP when it
> > provides a join point model, a pointcut language and advices.
> >
> > In my perspective, the goal-oriented characterization is too weak.
> > There are approaches to modularize crosscutting concerns that are
> > typically not considered to be AOP, like metaobject protocols or code
> > transformation frameworks. So at least, the goal-oriented
> > characterization alone is not enough.
> >
> > My impression is that the technical characterization indeed captures
> > what most people think of when they talk about AOP. At least, when I
> > talk to people from the AOP community, they tend to discuss issues
> > wrt pointcut languages sooner or later. Since a join point model
> > without a pointcut language doesn't make a lot of sense, and since
> > advice were already around before the advent, I think this boils down
> > to the notion that you have AOP when you have a (dedicated) pointcut
> > language.
> >
> > > you have " (let ((fib (lambda (x)" which i guess is similair to a
> > > pointcut of the function "fib" ?
> >
> > The (lambda (x) ...) part creates a (nameless) function. The (let
> > ((fib ...)) ...) part binds that function to the variable fib.
> >
> > It's not really a pointcut, since the new binding for the local fib
> > is by default unrelated to the global fib binding. In other words,
> > these are name that just "happen" to be the same. The connection
> > between those two definitions of fib is only there because the local
> > fib eventually calls the global fib in its definition.
> >
> > > you have the redefined body of the function which i guess is
> > > similair to the advice / interceptor
> >
> > Yes, it's similar, but not the same. There is no pointcut and/or
> > advice involved here. It's "just" a very simplified example for
> > intercession.
> >
> > > what fundamental parts are that sample missing in order to be aop?
> >
> > It's hard to demonstrate "AOPishness" on such a simple example
> > because there's only one function that is wrapped by another one that
> > provides a kind of before advice. In the general case, pointcuts
> > crosscut the program structure, so they pick out several (more than
> > one) join points. So in order to turn this example into something
> > "AOPish", you need more functions and a way to pick out a meaningful
> > subset of those functions.
> >
> > It's probably a good idea to read http://www.cs.ubc.ca/~gregor/papers/<http://www.cs.ubc.ca/%7Egregor/papers/>
> > masuhara-ECOOP2003.pdf
> >
> >
> > Pascal
> >
> > --
> > Pascal Costanza, mailto: [email protected], http://p-cos.net
> > Vrije Universiteit Brussel, Programming Technology Lab
> > Pleinlaan 2, B-1050 Brussel, Belgium
> >
> >
> >
> >
> >
> > __________________________________________________
> > AOSD Discuss mailing list    -    [email protected]
> > To unsubscribe go to http://aosd.net
> >
> > Check out the AOSD.net Wiki: http://aosd.net/wiki
> >
>
>
>
> --
> Kevin Sullivan
>



--
Kevin Sullivan

__________________________________________________
AOSD Discuss mailing list    -    [email protected]
To unsubscribe go to http://aosd.net

Check out the AOSD.net Wiki: http://aosd.net/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.