[ANN] AspectS (0.4.1)
robert.hirschfeld at gmx.net
Tue Apr 30 19:38:23 UTC 2002
> It was mentioned on this list that AspectS can be an excellent
> tool for modularizing Squeak, would you like to comment on this
> suggestion ?
AspectS supports 'aspects' as units of modularity to localize
implementations of crosscutting concerns. With that, AspectS
would be of use to modularize tangled code that crosscuts several
modules of a system but should belong to a specific/dedicated one.
> In your paper, you said 'crosscutting is inherent to complex
> systems [Kicz+97].'
> Do you think that AspectS itself is a complex system ?
> If so, do you think that AspectS can be improved if you use
> AspectS to 'aspectize' AspectS itself ?
I don't think of AspectS as a complex system, and applying AspectS
to itself would require a bootstrapping mechanism I haven't thought
> This brings to the question, how would you bootstrap AspectS
> with some builtin features in Squeak to make AspectS itself more modular
> (?) or bringing the benefit of Aspect to earlier objects. BTW, do you
> plan to support module, make AspectS module aware ?
I haven't had a closer look at our new modules work and so I can't
really say anything about that. What would you expect from aspects
that are module aware?
> In your document you said:
> 'in its current implementation, AspectS is realized
> without changing neither Smalltalk's syntax nor its virtual machine.
> AspectS shows great flexibility by not relying on code transformations
> (neither source nor byte code) but making use of metaobject composition
> Does this imply that AspectS can be implemented differently by
> modification in Squeak's syntax and/or its virtual machine.
In an advice, one states what code (via a block) has to be executed
where (via the pointcut) and when (via the advice qualifier). Of course
there are a couple of ways to compose such an advice into the system.
Examples are lightweight classes (see AOP/ST by Kai Boellert), LMP
(see Andrew by Kris Gybels), source or byte code transformations etc.
After experimenting with different approaches, I found John Brant's
MethodWrappers a very elegant approach that solved most of
my problems. With them, code composition is almost entirely
reduced to meta object composition :)
> I can see the power and elegance of AspectS based on an existing
> image. Say, if the GNU Smalltalk people want to add support for AspectS,
> what would be the best approach they should take as far as the compiler
> and builtin primitives are concerned. Is 'MethodWrapper' the core of
> AspectS ?
I have to admit that I'm not familiar with GNU Smalltalk...
More information about the Squeak-dev