Modular Aspect-oriented Programming

New: student positions available!

Overview

The goal of aspect-oriented programming is to provide a cleaner separation of concerns, enabling programmers to reason about and evolve programs more effectively. Many language constructs have been proposed to enable better separation of concerns, and a number seem to be promising ways to improve the way software development is done. However, a number of open problems remain, including understanding the formal foundations of aspects, supporting aspect encapsulation, automated and human reasoning about aspect-oriented programs, and studying the practical consequences of the technology.

The goal of the modular aspect-oriented programming project is to move aspect-oriented programming towards the mainstream of both language design and engineering practice. Our work focuses on a number of research questions:
So far, we have built TinyAspect, a formal model of aspect-oriented programming. We have used this model to study Open Modules, a new module system that preserves the extensibility of aspects along with a strong encapsulation property, and can be used to benefit the reasoning benefits of aspect-oriented programming tools. Finally we have studied aspect-oriented error-handling techniques.
In the future, we hope to build on this work, further investigating modularity but also exploring the other questions described above.  Eventually, we hope to design and implement a concrete aspect-oriented programming language based on insights from current research in AOSD.

Papers

People

Contact Jonathan Aldrich (jonathan.aldrich@cs.cmu.edu)