I will be presenting on some of my ongoing, joint work on the assisted evolution of Aspect-Oriented Programs next Thursday in Namm room 921 from 1-2pm. Please find more information about the talk below. I hope to see you there!
Title: Fraglight: Shedding Light on Broken Pointcuts in Evolving Aspect-Oriented Software
Abstract: Aspect-Oriented Programming can help modularize software by localizing code that would otherwise be scattered and tangled with many other modules. We say that such code implements crosscutting concerns, i.e., factors that the software must deal with across a variety of heterogeneous modules. While providing benefits in this area, however, Aspect-Oriented programs can experience other complications as the software evolves. For example, pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken because of changes made to the base-code is a daunting venture, especially in large and complex systems.
In this talk, I first introduce the basic concepts of Aspect-Oriented Programming, and, in particular, how those concepts are manifested in AspectJ, an Aspect-Oriented extension of Java. I review essential AspectJ constructs, such as advice, join points, pointcuts, and aspects, as well as several weaving models, i.e., how aspect code is woven with the underlying system (the base-code) to produce the final program. I then go on to discuss the pros and cons of Aspect-Orientation, particularly in the context of software evolution. Finally, I present ongoing, joint work on an automated approach that recommends a set of pointcuts that are likely to require modification due to a certain base code change. Our hypothesis is that join points captured by a pointcut exhibit common structural characteristics. We use patterns describing such commonality to recommend pointcuts that have potentially broken to the developer, as well as point the developer in a direction in which the pointcut should be altered. We implemented our approach as an extension to the popular Mylyn Eclipse Integrated Development Environment plugin, which maintains focused contexts of entities relevant to the task at hand.