The Birth of Refactoring: A Retrospective on the Nature of High-Impact Software Engineering Research

Software refactoring was independently invented in the late '80s by two students in two research groups: Ralph Johnson's group at the University of Illinois and David Notkin's group at the University of Washington. This article provides a retrospective of the birth of refactoring, reflecting on how the ideas came about and were developed in those two students' doctoral dissertations. The analysis provides useful insights for both researchers and practitioners seeking high impact in their work. This article is part of a special issue on Refactoring.

[1]  Frederick P. Brooks,et al.  No Silver Bullet: Essence and Accidents of Software Engineering , 1987 .

[2]  William G. Griswold,et al.  Automated support for encapsulating abstract data types , 1994, SIGSOFT '94.

[3]  William G. Griswold,et al.  Enhancement through extension: the extension interpreter , 1987, SIGPLAN '87.

[4]  L. P. Deutsch,et al.  Design reuse and frameworks in the smalltalk-80 system , 1989 .

[5]  James R. Larus,et al.  Restructuring Lisp programs for concurrent execution , 1988, PPEALS '88.

[6]  William G. Griswold,et al.  WitchDoctor: IDE support for real-time auto-completion of refactorings , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[7]  G GriswoldWilliam,et al.  Architectural Tradeoffs for a Meaning-Preserving Program Restructuring Tool , 1995 .

[8]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[9]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[10]  Emerson R. Murphy-Hill,et al.  Reconciling manual and automatic refactoring , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[11]  C. A. R. Hoare,et al.  Laws of programming , 1987, CACM.

[12]  William G. Griswold Program restructuring as an aid to software maintenance , 1992 .

[13]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[14]  Eduardo Casais,et al.  An Incremental Class Reorganization Approach , 1992, ECOOP.

[15]  William G. Griswold,et al.  Automated assistance for program restructuring , 1993, TSEM.

[16]  Oege de Moor,et al.  Specifying and implementing refactorings , 2010, OOPSLA.

[17]  William G. Griswold,et al.  Direct update of data flow representations for a meaning-preserving program restructuring tool , 1993, SIGSOFT '93.

[18]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[19]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[20]  Andrew P. Black,et al.  How we refactor, and how we know it , 2009, 2009 IEEE 31st International Conference on Software Engineering.