Microsoft Research hosted a one-and-a-half-day AOP Goes .NET workshop on Monday, November 14, 2005 and Tuesday, November 15, 2005 in Redmond, Washington. The topic of the workshop was aspect-oriented programming (AOP) with a focus on the Microsoft .NET platform. The workshop brought together academic and industrial researchers who are working on this topic. The goals for the meeting were to exchange knowledge on AOP in the .NET context, analyze and compare existing solutions, identify open problems and share challenges, describe ongoing work to address open problems, and combine efforts by increasing joint work. |
|

(Click
to view a larger image.) |
|
Monday,
November 14, 2005 |
8:30–9:15 |
Breakfast |
9:15–9:30 |
Welcome |
9:30–10:30 |
Session 1: General Presentations |
9:30–10:00 |
Aspect-Oriented Programming: The Past, Present, and the Future
Mehmet Aksit, University of Twente
This talk will first give some industrial examples to motivate the applicability of Aspect Oriented Programming (AOP) techniques in practice. Second, an overview will be given on the evolution of AOP languages during the last decade. Third, based on the overview, AOP language models and concepts will be defined. Next, the Composition Filters model will be positioned in this context. This talk will be concluded by identifying some open research issues. |
10:00–10:30 |
Modular Programming with Crosscut Programming Interfaces (XPIs)
Kevin J. Sullivan, University of Virginia
Aspect-oriented languages, such as AspectJ and Eos, provide new mechanisms for decomposing systems into modules and composing modules
into systems. Today, common ways of using these mechanisms result in aspects that are tightly coupled to complex and changeable implementation details. Wide-scale deployment of AOP to the .NET community requires a
more modular approach to AOP. We introduce the concept of the crosscut programming interface (XPI) as a practical solution. This work is joint with William Griswold (UCSD) and our students. |
10:30–11:00 |
Break |
11:00–12:30 |
Session 2: Specific Approaches |
11:00–11:30 |
Phx.Morph
Marc Eaddy, Columbia University
We extended Phoenix, Microsofts industrial-strength
back-end compiler framework, to create Phx.Morph, a
static byte-code weaver that enables Open Classes and
Aspect-Oriented Programming. We describe how the
development of the Phoenix project itself, a large
application in its own right, helped motivate and
validate our work. We discuss how Open Classes can
improve the separation of concerns in Phoenix, including
how it can provide a superior solution for client
extensibility over traditional object-oriented
solutions. We also describe how Phoenix provides a
framework for building powerful program transformation
tools. |
11:30–12:00 |
Rapier-LOOM.NET A Dynamic Aspect Weaver for .NET
Andreas Polze and Wolfgang Schult, Potsdam University
This presentation addresses dynamic updates on running
applications. Such updates require mechanisms to bring
applications into a reconfigurable state. Existing
solutions typically use special frameworks, tools, or
both,
introducing new programming paradigms and rules. This
complicates the software development process. The usage
of dynamic aspect weaving enables us to perform updates
transparently during runtime without additional
compilation steps or programming constraints in the
software development process, even in multithreaded
environments. Runtime reconfiguration of software can be
modularized as a cross-cutting concern. We demonstrate
how our approach can be applied to an existing
application by using our dynamic aspect weaving solution,
Rapier-LOOM.NET.
|
12:00–12:30 |
Eos
Hridesh Rajan, Iowa State University
In this talk, I will discuss the implementation of Eos,
an aspect-oriented extension of C# for .NET Framework.
The key features of Eos include a unified language
model, support for aspect-instantiation under program
control, instance-level advising, advising as a
generalized alternative to object-oriented method
invocation and overriding, and provision of separate
join point method binding construct.
|
12:30–13:30 |
Lunch |
13:30–15:00 |
Session 3: Concepts |
13:30–14:00 |
The Design of the Compose* Language Implementation for the .NET
Platform
Lodewijk Bergmans, University of Twente
In this presentation we will address some of the
challenges and design considerations regarding the
implementation of the Compose* language for the .NET
platform. Some of the key issues that will be addressed
are: a language-agnostic aspect language, about the
weaving model, the challenge of handling method
introductions and other interface extensions, maximizing
platform-independence, the extensible, repository-based,
compile-time architecture and the flexible,
interpreter-based, run-time architecture. |
14:00–14:20 |
SetPoint
Alan Cyment, University of Buenos Aires
SetPoint has semantic pointcuts at the core of its structure. In opposition to
what we call syntax-based pointcuts, SetPoint aims at
making everyday AOP usage a little more intuitive by
giving the developer the chance to write her pointcuts
based on the different perspectives the system
architect, analyst, or herself originally devised. Its
main ideas are based on concepts heavily used by the
Semantic Web, MDA, ADLs and, obviously, existing AOP
projects.
|
14:20–14:40 |
Design Rules for Modularity
Eric Wohlstadter, University of British Columbia
This work investigates an extension to the AspectJ
pointcut language to allow developers to express design
rules for modularity. The language allows the detection
of patterns that constitute symptoms of bad modularity
and code smells. We are developing a toolset
that
leverages the static analyses provided by the Microsoft
Phoenix compiler. |
14:40–15:00 |
A Language Extension for Compile-Time Reflection
Manuel Fahndrich, Microsoft Research
In this talk, I will present a relatively small extension
to C# supporting the construction of program transforms.
Program transforms allow programmers to generate code
and other declarations in a simple declarative manner at
compile-time. The transforms consist of a pattern and a
template. When the pattern matches, the template
produces new declarations and code in the context of the
pattern match. The goal of the work is to provide a
limited form of generative programming without the need
for a reflection API and complicated code emission
through MSIL. Instead, both patterns and templates are
written as C# with meta-variables connecting matched
artifacts in the patterns and templates. The templates
can be type checked prior to their application and the
resulting code should always be type correct.
|
15:00–15:30 |
Break |
15:30–16:00 |
Discussion: Categorization and Assessment |
16:00–17:00 |
Session 4: Technology |
16:00–16:15 |
AspectDNG A Static Aspect Weaver
Jean-Baptiste Evain, ESSAIM, France
AspectDNG is an Open Source aspect weaver targeting the
.net framework. Its development started more than two
years ago and we are now close to a 1.0 stable version.
AspectDNG is built upon Mono.Cecil, a .NET assembly
manipulation library.
|
16:15–16:30 |
The Orthogonal Weaving Model
Husein Armouti, Allstate Insurance Company
The Orthogonal Weaving Model (OWM) is a dynamic framework by which .NET developers can implement aspects. OWM does not add any language extensions and as such does not require any special source code parsing or attribute programming. Core functionality and aspect are both native .NET classes; advice can be any method of any class in any assembly. Weaving rules are configured in an XML file or programmatically. Weaving is done dynamically upon calling the AspectWeaver.NewInstance() function on a type for the first time; System.CodeDom and System.Reflection namespaces are utilized to generate an in-memory assembly to host the woven class,
which acts as interceptor. OWM provides state-dependent advice activation where advice methods are conditionally activated. Componentized aspects eliminate the need to redeploy or shutdown the system when a change is required; a file system watcher monitors the weaving rules file for changes.
|
16:30–16:45 |
XL-AOFAn Extensible Lightweight Aspect-Oriented Framework for Distributed Applications
Fabian Schmied, Vienna University of Technology
In distributed application development, a high number of
cross-cutting concerns can be found. AOP is an excellent
paradigm to capture requirements like transaction
safety, security, or persistence. Unfortunately, the
adoption of AOP for distributed applications is often
hampered by technological necessities, for example, special
compilers or platforms, difficult application
deployment, or new programming languages. Our approach
is therefore to provide a lightweight aspect environment
for the .NET platform. By using existing language and
runtime concepts, such as custom attributes, code
generation, and anonymous methods, we build an
aspect-oriented environment that is easily adoptable,
but powerful enough to facilitate distributed
application development.
|
16:45–17:00 |
Debugging Support for AOP
Mike Stall, Microsoft
We present some relevant parts of the CLR Debugging
Services. In particular, we discuss what debugging
technologies are available for enabling AOP .NET
debugging scenarios. That is, we discuss the
debuggability of different CLR technologies for
rewriting IL, restrictions on the PDBs, and the split
between the platform API and the debugger application. |
17:00–17:30 |
Break |
17:30–18:30 |
Panel: Are We Ready for AOP in the .NET Platform?
Panelists: Mehmet Aksit, University of Twente;
Edward Jezierski, Microsoft; Lars Mehrmann, Siemens; Kevin J. Sullivan, University of
Virginia; Pierre van de Laar, Philips; Allen Wirfs-Brock,
Microsoft
Moderator: Ralf Lammel, Microsoft
The panelists and the audience will
engage in a discussion about Aspect-Oriented Programming
(AOP) and the .NET platform. In particular, we hope to
cover questions like the following:
- What’s the
potential of AOP if it became more mainstream in .NET?
- What .NET features and capabilities are readily
related to AOP?
- Why is AOP technology currently not yet an integral
part of the .NET platform?
- What is the technical and conceptual maturity level
of existing approaches?
- How would .NET need to develop to become a strong AOP platform?
- What are the risks, if any, of adding AOP support
to .NET?
The panelists are expected to bring forward the
various — sometimes contrarian — views on these
questions. The audience is asked to challenge the
panelists by means of controversial questions. |
19:00 |
Bus departs |
19:30 |
Dinner |
|
|
|
Tuesday,
November 15, 2005 |
8:30–9:15 |
Breakfast |
9:15–10:15 |
Walkaround Demonstrations |
10:15–10:30 |
Form Breakout Groups |
10:30–11:00 |
Break |
11:00–12:00 |
Breakout Groups
Topic examples: Survey or comparison of technology,
survey or comparison of language concepts, barriers or
research agenda of future work |
12:00–12:15 |
Report from Breakout Groups |
12:15–12:30 |
Workshop Wrap-up |
Workshop Location
Microsoft Corporation
West Campus, Building 113, Room 1021
14870 N.E. 31st Way
Redmond, WA 98052
|