Refactoring of Programs and Specifications

Refactoring is a new name for a transformational approach to iterative software development. Originally focused on class diagrams, it is now commonly associated with object-oriented programming languages like Java. In this article, we trace some of the conceptual roots and the ideas behind refactoring, and sketch its relation to other techniques, such as behavioral and structural refinement or compiler optimization. Based on these observations, we argue that improved and adapted refactoring techniques will belong to the methodical tool set of tomorrow’s software engineers.

[1]  Alexander Pretschner,et al.  Model based testing in evolutionary software development , 2001, Proceedings 12th International Workshop on Rapid System Prototyping. RSP 2001.

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

[3]  Bernhard Rumpe,et al.  Refinement of Pipe-and-Filter Architectures , 1999, World Congress on Formal Methods.

[4]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[5]  Bernhard Rumpe,et al.  Refinement of information flow architectures , 1997, First IEEE International Conference on Formal Engineering Methods.

[6]  Manfred Broy,et al.  The Specification of System Components by State Transition Diagrams , 2003 .

[7]  B Boehm A spiral model of software development and enhancement , 1986, SOEN.

[8]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[9]  Pretschner,et al.  Model Based Testing with Constraint Logic Programming: First Results and Challenges , 2001 .

[10]  Michael A. Jackson,et al.  Software requirements and specifications - a lexicon of practice, principles and prejudices , 1995 .

[11]  M. Fowler Improving the Design of Existing Code , 2000 .

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

[13]  Jan Philipps,et al.  Step by Step to Histories , 2000, AMAST.

[14]  J. Dieudonne Mathematics-- the music of reason , 1992 .

[15]  Manfred Broy,et al.  Specification and Development of Interactive Systems , 2001, Monographs in Computer Science.

[16]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[17]  Haim Kilov,et al.  Business Models: A Guide for Business and IT , 2002 .

[18]  Bernhard Rumpe,et al.  Formale Methodik des Entwurfs verteilter objektorientierter Systeme , 1996, Datenbank Rundbr..

[19]  José Meseguer,et al.  Principles of OBJ2 , 1985, POPL.

[20]  Alexander L. Wolf,et al.  Software architecture , 2001 .

[21]  Friedrich L. Bauer,et al.  Algorithmic Language and Program Development , 1982, Texts and Monographs in Computer Science.

[22]  Nancy A. Lynch,et al.  An introduction to input/output automata , 1989 .

[23]  P. J. Veerkamp On the development of an artifact and design description language , 1990 .

[24]  S. Jones,et al.  A Transformation-Based Optimiser for Haskell , 1998, Sci. Comput. Program..

[25]  Jos Warmer,et al.  The object constraint language , 1998 .

[26]  Charles E. Leiserson,et al.  Retiming synchronous circuitry , 1988, Algorithmica.

[27]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[28]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .