I am the Canada Research Chair in Software Reuse and an Assistant Professor in the Department of Computing Science at the University of Alberta. My research is in the area of software maintenance and reuse, where I focus on two directions:
- 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.