| Michael Godfrey
Associate Professor Joined School 1998 BSc (Toronto),
|
Professor Godfrey's research interests span several sub-areas of software engineering including software evolution, software clone analysis, software architecture recovery and modeling, program comprehension, and reverse engineering.
Large software systems are comprised of many complex components that evolve over time. Maintaining the “health” of such a system and its myriad components becomes more difficult as the system ages, as its architectural integrity decays, as it is used in ways for which it was not originally designed, as the complexity of the components themselves increase, and as experienced developers give way to new hires. Yet, as such a system ages and evolves, it often becomes increasingly important to its owners as more and more time, money, and intellectual effort are invested in it; that is, such a system becomes as expensive but brittle “asset” of the company that owns it. 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. These include planned and unplanned phenomena, emergent properties and after-the-fact abstractions, analysis of duplication (cloning) of system components over time, architecture recovery and modeling, program comprehension and tools for modeling and understanding changing systems, and design techniques for keeping evolving software systems healthy and agile.
Professor Godfrey's previous research in these areas has included several projects the creation of a set of techniques called origin analysis for reasoning about structural and architectural change; the design of a prototype framework called Beagle for analyzing, modeling, querying, and visualizing software evolution; the execution of case studies that examine the growth and evolution of several open source software systems (including the Linux kernel, the GCC compiler suite, and the vim text editor); and the proposal of the build-time software architecture view as a key intellectual tool for understanding large systems with interesting emergent design properties.
Best Paper Award, Working Conference on Reverse Engineering (2006); IBM CAS Faculty Fellow (2005); NSERC/Nortel Networks Industrial Research Associate Chair in Telecommunications Software Engineering (2001-2006)
Since returning to Canada in 1998, Professor Godfrey has been a co-PI in several NSERC-sponsored industrial research grants of the Consortium for Software Engineering Research (CSER), and has held grants from IBM, Sun Microsystems, Nortel Networks, and CA.
During the academic year 2003-04, Professor Godfrey spent a sabbatical at Sun Microsystems Research Labs in Mountain View, California. There 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.
Abram Hindle, Michael W. Godfrey and Richard C. Holt. Software Process Recovery Using Recovered Unified Process Views. IEEE International Conference on Software Maintenance, 2010.
Greg Wilson and Andy Oram (eds.) Copy-Paste as a principled engineering tool. Making Software: What Really Works and Why We Believe It, 2010.
Michael W. Godfrey and Daniel M. German. The Past, Present, and Future of Software Evolution. Invited paper, Foundations of Software Maintenance track, IEEE International Conference on Software Maintenance, 2008.
Abram Hindle, Michael W. Godfrey, and Richard C. Holt.. Reading beside the lines: Using indentation to rank revisions by complexity. Science of Computer Programming, 74(7)2008.
Cory J.Kapser and Michael W. Godfrey. `Cloning Considered Harmful' Considered Harmful: Patterns of Cloning in Software. Empirical Software Engineering, 13(6)2008.
Michael W. Godfrey and Lijie Zou. Using Origin Analysis to Detect Merging and Splitting of Source Code Entities. IEEE Transactions on Software Engineering, 31(2)2005.
Michael W. Godfrey and Qiang Tu. Evolution in Open Source Software: A Case Study. IEEE International Conference on Software Maintenance, 2000.

David R. Cheriton School of Computer Science
University of Waterloo
Waterloo, Ontario, Canada N2L 3G1
Tel: 519-888-4567 x33293
Fax: 519-885-1208
Contact | Feedback: cs-webmaster@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics