AOP in Squeak
Aspect-Oriented Programming in Squeak
People
- Supervision: Marcus Denker
- Developer: Anselm Strauss
Code
http://www.squeaksource.com/DynamicAspects
This Page
- Validate HTML, CSS
- Check Links
- Stylesheet
Web
- Reflectivity at IAM UniBE
- Aspect-Oriented Software Development
- AspectJ
- Rewriting with the Refactoring Browser
- Context-Oriented Programming at Uni Potsdam
- ALIA at Uni Darmstadt
Todo
- Cannot get "instead" working on methods done
- Properly update colors in aspect browser done
- Proper updating for: pointcut add/remove/change, advice add/remove done
- How to distinguish AOP links from other Geppetto links? -> Use properties in links done
- Selectively activate/install advices? no
- Adapt aspects to code changes? future work ...
- Automatically reinstall aspect on changes done
- Optimize category/class/method filtering (use existing collections, don't create new ones) done
- How to combine block conditions? (Non-literal creation of blocks?) done
- Specify reifications for block conditions separately? done
- Method execution pointcuts only apply where method is defined, not subclasses done
- Pointcut/Advice visibility in aspect browser done
- Aspect overview browser future work
- Convenience stuff in DAPointcut constructors
- Aspects are not properly installed after first loading of code done
- Improve aspect browser button state done
- Problems when installing aspects on empty methods (not when using directly gplinks) done
- Executing method instead with operation reification does somehow produce inconsistency between reflective and compiled method (link is present in compiled method but not in reflective method) done
- Updating: Aspects do not update when pointucts/advices are removed (difficult to check if method once really was a pointcut or advice), update on original code changes untested
- Caching: make use of caches in DAPointcut and DAJoinPoint future work
- Handle Seaside dependencies in examples done
- Use pragmas instead of ugly advice names done
- Easy "disabled by default" method done
- Disable test aspects, install/uninstall during tests partially
- Reread all source code comments, add important class comments on usage
- Updating does not consider inheritance
Caveats
- Pointcuts and join points are always reevaluated
- Meta classes are treated as having the same category as their instance
- Implementation currently doesn't respect traits
- Flow pointcut: after should always execute when before did (link conditions can change)