www.BrettDaniel.com

Publication

Last Monday I passed an important milestone in my graduate career: I submitted my first paper for publication. It is called "Automated Testing of Refactoring Engines", and we submitted it to FSE 2007. The project website contains our bug reports and experimental data.

I am very excited about this paper. Not only is it the culmination of the work I have been doing since last August, but I was fortunate enough to be first author. I feel we have some very strong results and a great point from which to continue future work. Now we need to forget about this submission and concentrate on the next conference.

Update

The paper was accepted!

2 Comments

Mohsen Vakilian Says:

I read your paper. Its results are amazing!
I have a suggestion and that is to provide a DSL for your framework so that the tests could be described in an easier manner and it could be easily used for other languages.
And a question: Is your framework easily scalable to other kinds of refactorings? I guess so, as it creates the test inputs in a very systematic way.

Congratulations for your good work!

Brett Says:

Thanks for the comment, Mohsen. I hope the reviewers feel the same way.

It is interesting that you mention domain-specific languages. We could certainly streamline parts of the framework using scripts of some sort, but then we would sacrifice some of the power that Java gives us. The deeper framework—that is, the one “below” ASTGen that handles non-AST-specific stuff—has an interesting DSL used to specify how generators are linked together. The Cartesian product of two generators is not the only type of link that we have implemented. I hope to write about that and some other general framework stuff in a future paper.

It is very easy to extend the framework to other kinds of refactorings. I implemented PushDownField, ChangeSignature, and MoveToTop all within the last two weeks before the deadline. Creating a new refactoring amounts to extending a class and providing implementations for the abstract methods that define the refactoring to perform and the generator to use. Building generators takes up the majority of the time, but even that goes very quickly when one has a library of reusable parts. Like I mentioned in the paper, the MethodReference and MethodParameterReference generators together took only about two days to write.

Comments are closed.