8. Fraglight: Raffi Khatchadourian, Assistant Professor, City College of Technology, CUNY. It’s not a party if you don’t invite the computer scientists. Pointcut fragility is a 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 due to changes made to the base code can be a daunting task, especially in complex systems.“Fraglight helps developers change Aspect-Oriented programs by analyzing their code and correspondingly predicting which pointcuts, or queries over the program execution, break as a result of their changes, bringing these pointcuts to the developer’s attention,” says Khatchadourian, an Assistant Professor in the Department of Computer Systems Technology at New York City College of Technology, part of CUNY, who developed the project with a team of collaborators.
The camera-ready version of our SPLASH 2015 tool demonstration on Fraglight is now available.
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.