I am an Assistant Professor in the Department of Computing Science at the University of Alberta, where I lead the Software Maintenance and Reuse (SMR) Lab. I also hold a Canada Research Chair in Software Reuse. My research focuses on software maintenance and reuse in two directions:
- 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.
- 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.