- Software Product Lines (SPLs): I develop techniques to help developers maintain their SPLs, or highly configurable systems (e.g., find configuration-related bugs). I also develop techniques to help developers migrate similar existing systems into an SPL.
- Application Programming Interfaces (APIs): My goal is to improve software reuse by helping developers use existing software libraries more effectively. I conduct empirical studies to understand the problems developers have when using APIs and the kind of information that helps them make better decisions. I then design automated techniques to solve these problems, such as recommending relevant code snippets or detecting API misuses.
Note to prospective students: please read the information on my students page before contacting me.