Quick Links |Home|Worldwide
Microsoft

Search:
   
 

DR. ALFRED AHO
Lawrence Gussman Professor of Computer Science and Vice Chair for Undergraduate Education in Computer Science
Columbia University

Email: aho@cs.columbia.edu
Home page: http://www1.cs.columbia.edu/~aho/

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.

 

Research Highlights


©2007 Microsoft Corporation. All rights reserved. Terms of Use |Trademarks |Privacy Statement