My Research Areas
Program Comprehension and Textual Analysis
There is a strong relationship between the natural language (e.g., found in identifiers) and behavior of source code; developers use this relationship to understand the code they read daily. We explore this relationship by studying rename refactorings, grammar patterns, and static source code analysis. Our goal is to support stronger techniques to automate identifier naming as well as support developers in reading and comprehending code more quickly.
Program Transformation
Program transformations allow us to modify code programmatically. It is important to ensure these techniques are safe, customizable, and easily integrated with today's software development processes such that developers can, for example, migrate APIs or refactor. We support transformtions both through our research on identifier naming and through the creation of flexible, easy-to-use techniques for creating and applying program transformations.
Static Source Code Analysis
A lot of our work relies on static analysis techniques, and most frequently I make use of the srcML Framework to normalize, transform, and analyze source code. On the whole, one of my favorite things to do is explore code, searching for patterns that can be used to improve and support software development using automated tools, visualization, and modeling.