[ANN] AspectS (0.4.1)

Robert Hirschfeld robert.hirschfeld at gmx.net
Tue Apr 30 19:38:23 UTC 2002

Hi PhiHo,

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

>         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
> instead.'
>         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 mailing list