Aspect-oriented software development aims at improving the handling of crosscutting concerns by capturing them explicitly in well-modularised entities, called aspects. In this way, it tries to improve the overall quality of an application, since improved modularisation should lead to better evolvability, maintainability, understandability, reusability, and so on.
A large body of research exists on the development of aspect-oriented programming languages and mechanisms. As this research starts to mature, AOSD techniques are adopted in many new applications. Much less attention is paid, however, to how already existing applications can be improved by adopting these techniques. In particular, we should study how applications developed without AOSD techniques can be migrated into aspect-oriented applications. Additionally, even applications using AOSD from their inception might need to be re-engineered because concern code becomes less well-organised over time and because opportunities for aspects might not be apparent when different developers are working on the same code base independently.
The subject of aspect reverse engineering thus raises several interesting issues and questions:
How can we identify aspects in the source code? Can we automate this process? Which techniques can we apply?
How can we extract aspects from the source code? How do we define appropriate, understandable and high-quality aspects? What criteria should we use to determine the quality of an aspect?
When should we prefer an aspect-oriented solution over an object-oriented solution?
How can we restructure the ordinary source code so that the aspects are removed from it?
What is the impact of the aspect language on the extraction process? Should specific aspect languages be developed, or do general aspect languages as they exist today suffice?
How can we ensure the behaviour of the original applications is preserved after the migration? Can we use existing tests to ensure this, or do we need other kinds of tests?
Will aspect-oriented techniques improve the overall quality of applications? How can we measure this quality improvement?
Do these techniques scale up to applications spanning multiple millions of lines of code?
The goal of this workshop is to address these questions, identify possible other relevant and important issues in this domain and bring together researchers interested in and working on the subject.
You might also want to take a look at the Aspect
Identification and Refactoring Portal (AIRPort), where links to all research
groups and people interested in the relationship between AOSD and evolution are
centralised.
We invite prospective participants to submit a short position paper (max. 5 pages), addressing one or several of the issues mentioned above, or other issues that they deem relevant. Based on these position papers, we will identify interesting topics to be discussed at the workshop.