Professor Godfrey's research interests span several areas of empirical software engineering including software evolution, mining software repositories and software analytics, code clone analysis, software architecture recovery and modeling, and reverse engineering.
To better understand how and why software systems evolve over time, Professor Godfrey and his students have been developing theories, techniques, and tools for studying software change. This has included the study of emergent properties of software systems, analysis of code duplication (cloning), software artifact provenance, software architecture recovery and modelling, and tools for modeling and understanding changing systems.
Degrees and awards
BSc, MSc, PhD (UToronto)
Best Paper Awards, Working Conference on Reverse Engineering (2006, 2011, 2013)
David R. Cheriton Faculty Fellow, University of Waterloo (2014-2017)
NSERC/Nortel Networks Industrial Research Associate Chair in Telecommunications Software Engineering (2001-2006)
Industrial and sabbatical experience
Since returning to Canada in 1998, Professor Godfrey has been a co-PI in several NSERC-sponsored industrial research grants from Nortel Networks, Sun Microsystems, IBM, and CA.
During the academic year 2003-04, he spent a sabbatical as Visiting Researcher at Sun Microsystems Labs in Mountain View, California, where he worked on the Jackpot static analysis tool with James Gosling, and also co-designed and co-implemented the SALSA analysis tool for J2EE systems with John Crupi.
During the academic year 2011-2012, he spent a sabbatical as Distinguished Scientist at CWI in the Netherlands, working with the RASCAL program transformation group led by Jurgen Vinju and Paul Klint.
"No Issue Left Behind: Reducing Information Overload in Issue Tracking", Olga Baysal, Reid Holmes, and Michael W. Godfrey, Proc. of the ACM SIGSOFT Intl. Symposium on the Foundations of Software Engineering (FSE-14), 2014.
"Software Bertillonage: Determining the Provenance of Software Development Artifacts", Julius Davies, Daniel M. German, Michael W. Godfrey, and Abram Hindle, Empirical Software Engineering, 18(6), 2013.
"Automated Topic Naming: Supporting Cross-project Analysis of Software Maintenance", Abram Hindle, Neil A. Ernst, Michael W. Godfrey, and John Mylopoulos. Empirical Software Engineering, 18(6), 2013.
“The Past, Present, and Future of Software Evolution”, Michael W. Godfrey and Daniel M. German, (invited paper) Foundations of Software Maintenance track, IEEE Intl. Conference on Software Maintenance, 2008.
“Reading Beside the Lines: Using Indentation to Rank Revisions by Complexity”, Abram Hindle, Michael W. Godfrey, and Richard C. Holt, Science of Computer Programming, 74(7), 2008.
“‘Cloning Considered Harmful' Considered Harmful: Patterns of Cloning in Software”, Cory J. Kapser and Michael W. Godfrey, Empirical Software Engineering, 13(6), 2008.
“Using Origin Analysis to Detect Merging and Splitting of Source Code Entities”, Michael W. Godfrey and Lijie Zou, IEEE Trans. on Software Engineering, 31(2), 2005.
“Evolution in Open Source Software: A Case Study”, Michael W. Godfrey and Qiang Tu, IEEE Intl. Conference on Software Maintenance, 2000.