Refactoring by Transformation

In this paper we present how refactoring of object-oriented programs can be accomplished by using refinement. Our approach is based on algebraic laws of an object-oriented language for refinement similar to Java. We follow a strategy involving data and algorithmic refinement of classes.

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

[2]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[3]  Jonathan P. Bowen,et al.  ZB 2002:Formal Specification and Development in Z and B , 2002, Lecture Notes in Computer Science.

[4]  Augusto Sampaio,et al.  An Inconsistency in Procedures, Parameters, and Substitution in the Refinement Calculus , 1999, Sci. Comput. Program..

[5]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

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

[7]  Augusto Sampaio,et al.  Formal Bytecode Generation for a ROOL Virtual Machine , 2001 .

[8]  Ana Cavalcanti,et al.  A Weakest Precondition Semantics for Refinement of Object-Oriented Programs , 2000, IEEE Trans. Software Eng..

[9]  Ana Cavalcanti,et al.  A Weakest Precondition Semantics for an Object-Oriented Language of Refinement , 1999, World Congress on Formal Methods.

[10]  Don S. Batory,et al.  Evolving object-oriented designs with refactorings , 1999, 14th IEEE International Conference on Automated Software Engineering.

[11]  Don Roberts,et al.  Practical analysis for refactoring , 1999 .

[12]  Augusto Sampaio,et al.  Basic Laws of ROOL: an object-oriented language , 2000, RITA.

[13]  Ralph-Johan Back,et al.  Software Construction by Stepwise Feature Introduction , 2002, ZB.

[14]  Carroll Morgan,et al.  Programming from specifications , 1990, Prentice Hall International Series in computer science.