Most of my work centers around software engineering tools and techniques. In general, I focus on two aspects of software engineering: bug prevention and bug detection. I have developed tools to help novice programmers understand new frameworks and libraries as well as to detect problems with their code. I believe that proper engineering techniques incorporated with a solid software design can significantly reduce software bugs. Nevertheless, a good static checker serves as a strong weapon for attacking structural as well as behavioral inconsistencies in a program. My research is primarily focused on developing tools to incorporate both structural and behavioral analysis of a program. In doing so, I also try to incorporate domain-specific semantics of software frameworks to checkers. This approach not only helps increase the performance of checking but also significantly reduces false positives and helps derive meaningful suggestions to users.
A complete list of peer-reviewed publication can be found on the Software Engineering Research Group’s (SERG) publication page.