I will be giving a talk at Tokyo Tech on June 2, 2015 entitled “Open Problems in Automatically Refactoring Legacy Java Software to use New Features in Java 8“. More information can be found on the Dept. of Mathematical and Computing Sciences website.
Category Archives: Research
Creating Your Own Plugin in Eclipse
This article explains how to create a simple Eclipse plugin. To understand plugins, the easiest thing to do is to use the built-in wizard in Eclipse. You need the JDT to have the wizard I believe (you can also download a RCP distribution of Eclipse). Here are the steps:
Two accepted students to Google Summer of Code 2015 for Eclipse
I am happy to announce that I will serve as a mentor for two Google Summer of Code 2015 Eclipse projects, namely, Convert to a lambda expression Java 8 refactoring/quick fixes by Md Arefin (poster), and JDT UI: Adding New Refactoring Features and Improving Code Completion by Gábor Kövesdán. Google Summer of Code is a global program that offers students stipends to write code for open source projects. Congrats to Md and Gábor!
New Student: Md Arefin
Tokyo Institute of Technology Research Abroad and Invitational Program for the Promotion of International Joint Research
I am happy to announce that I have been awarded a visiting faculty position at Tokyo Tech via the Tokyo Institute of Technology Research Abroad and Invitational Program for the Promotion of International Joint Research. I will be traveling to Japan this summer to visit Prof. Masuhara‘s lab at Tokyo Tech for two weeks.
Google Summer of Code 2015 Ideas – Eclipsepedia
I have been accepted as an official GSoC mentor for the Eclipse project. I will be proposing some refactoring projects. Please let me know if any students are interested in applying and working on Eclipse for Google Summer of Code. All Eclipse GSoC proposals are listed at the Google Summer of Code 2015 Ideas – Eclipsepedia web page.
Call for Applications: Emerging Scholars, Spring 2015
I am currently seeking students interested in becoming “emerging scholars” this Spring semester and who are interested in programming languages and/or software engineering research.
The research would involve static analysis and program transformation to help maintain existing software systems. The work is normally yields developer tools that are plug-ins to popular IDEs like Eclipse and NetBeans. More information can be found on my research page and, particularly, my software page, which has some examples of previous tools. I would be interested in continuing some work on the open source Convert Constants to Enum Eclipse plug-in, which has several open issues, or starting on a new, similar refactoring tool. The advantage of working on the first tool would be to obtain some background on refactoring and code analysis in general. In either case, there may be some background reading required, depending on the previous experience of the candidate. Working on Eclipse plug-ins would also be a good experience as there are job postings that explicitly require candidates to have prior Eclipse knowledge and would also benefit someone who would want to continue research in graduate school.
The application deadline is February 19. Please complete this form if you are interested in applying.
Student Researchers Wanted for Research in Programming Languages and Software Engineering
I am currently looking for students to work with on research projects. Please contact me if you are interested in programming languages and software engineering research. My research interests lie in Object-Oriented (particularly Java) and Aspect-Oriented (particularly AspectJ) languages. There’s also a possibility where students may receive credits for research and independent study. For more information, check out my ad on ScholarBridge.
Fraglight: Shedding Light on Broken Pointcuts in Evolving Aspect-Oriented Software
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.