|
|
WICCA
Marc Eaddy (eaddy@cs.columbia.edu)
http://www.columbia.edu/~me133
Columbia University EXTENDED ABSTRACT
We present Wicca, a research prototype for experimenting with techniques for
modularizing programs. Wicca extends our work on the Phx.Morph project, which
was built using Phoenix, Microsoft’s industrial-strength backend compiler, to
enable static and dynamic aspect-oriented programming and open classes. Wicca is
the first to allow annotations to be attached to individual program statements,
enabling fine-grained statement-level and instance-level advising. Wicca is the
first weaver to leverage the .NET 2.0 Debugging APIs to support dynamic AOP, and
to support a novel noninvasive breakpoint weaving approach that allows advice to
be invoked in-process and to have access to join point context.
Open classes allows a developer to modify class definitions at post-compile
time. For example, a developer may wish to extend a class by adding a new field
or method. This provides a powerful composition mechanism that provides a
greater separation of concerns then what is available with composition
mechanisms provided by traditional object-oriented programming languages. Our
open classes solution allows any class in a .NET assembly to be extended.
Because our implementation is based on assembly rewriting using the Phoenix
backend compiler, we can extend assemblies written in any .NET language without
requiring access to source code. This makes our solution particularly suitable
for extending assemblies developed by third parties.
Aspect-oriented programming (AOP) [1] allows a developer to instrument methods
by injecting code or modifying control flow. The developer specifies how to
select code for injection (pointcuts) and what code is injected (advice). Advice
code can be injected before a pointcut (before advice) and after a pointcut
(after advice).
References
[1] G. Kiczales, J. Irwin, J. Lamping, J.-M. Loingtier, C. V. Lopes, C. Maeda,
and A. Mendhekar, "Aspect-oriented programming," ACM Computing Surveys,
28(4es):154, 1996.
More information
For more information view the
Presentation,
Diagrams or visit
http://www.cs.columbia.edu/~eaddy/wicca. |