Refactoring via Program Slicing and Sliding

This short paper is a summary of my doctoral research, which was conducted under Oege de Moor's supervision at the University of Oxford, starting October 2001. The thesis was submitted on September 29, 2006, and defended on January 18, 2007. The final version was submitted, after minor corrections, on June 15, 2007.

[1]  Ralph-Johan Back,et al.  A calculus of refinements for program derivations , 1988, Acta Informatica.

[2]  Marcio Lopes Cornelio Refactoring as formal refinements , 2004 .

[3]  Jeremy Gibbons,et al.  Fission for Program Comprehension , 2006, MPC.

[4]  Ralph-Johan Back,et al.  Correctness preserving program refinements: Proof theory and applications , 1980 .

[5]  James Gosling,et al.  The Java Language Specification, 3rd Edition , 2005 .

[6]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[7]  Frank Tip,et al.  Dynamic dependence in term rewriting systems and its application to program slicing , 1994, Inf. Softw. Technol..

[8]  David W. Binkley,et al.  The application of program slicing to regression testing , 1998, Inf. Softw. Technol..

[9]  Oege de Moor,et al.  JunGL: a scripting language for refactoring , 2006, ICSE.

[10]  Thomas W. Reps,et al.  Integrating non-intering versions of programs , 1988, POPL '88.

[11]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[12]  Lynette I. Millett,et al.  Slicing Promela and its Applications to Model Checking, Simulation, and Protocol Understanding , 2002 .

[13]  Ivar Jacobson,et al.  The Unified Software Development Process , 1999 .

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

[15]  Edsger W. Dijkstra,et al.  Predicate Calculus and Program Semantics , 1989, Texts and Monographs in Computer Science.

[16]  Sudhir P. Mudur,et al.  3D visualization techniques to support slicing-based program comprehension , 2005, Comput. Graph..

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

[18]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[19]  Mark Weiser,et al.  Reconstructing Sequential Behavior from Parallel Behavior Projections , 1983, Inf. Process. Lett..

[20]  Frank Tip,et al.  Parametric program slicing , 1995, POPL '95.

[21]  Stephen Drape,et al.  Obfuscation of abstract data-types , 2004 .

[22]  Juergen Rilling,et al.  Identifying comprehension bottlenecks using program slicing and cognitive complexity metrics , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[23]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[24]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[25]  Thomas Ball,et al.  Slicing Programs with Arbitrary Control-flow , 1993, AADEBUG.

[26]  Hussein Zedan,et al.  Conditioned semantic slicing via abstraction and refinement in FermaT , 2005, Ninth European Conference on Software Maintenance and Reengineering.

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

[28]  Carroll Morgan,et al.  Programming from specifications (2nd ed.) , 1994 .

[29]  Susan Horwitz,et al.  Semantics-preserving procedure extraction , 2000, POPL '00.

[30]  Matthew B. Dwyer,et al.  Evaluating the Effectiveness of Slicing for Model Reduction of Concurrent Object-Oriented Programs , 2006, TACAS.

[31]  Aniello Cimitile,et al.  Identifying reusable functions using specification driven program slicing: a case study , 1995, Proceedings of International Conference on Software Maintenance.

[32]  Mark Harman,et al.  Using program slicing to simplify testing , 1995, Softw. Test. Verification Reliab..

[33]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[34]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[35]  Mark Harman,et al.  Amorphous procedure extraction , 2004 .

[36]  Mark Harman,et al.  Amorphous program slicing , 2003, J. Syst. Softw..

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

[38]  Giuseppe Visaggio,et al.  Extracting Reusable Funtions by Flow Graph-Based Program Slicing , 1997, IEEE Trans. Software Eng..

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

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

[41]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[42]  Katsuhisa Maruyama,et al.  Automated method-extraction refactoring by using block-based slicing , 2001, SSR '01.

[43]  Martin Ward Proving program refinements and transformations , 1986 .

[44]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[45]  Mark Harman,et al.  An empirical study of amorphous slicing as a program comprehension support tool , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[46]  Martin P. Ward Program slicing via FermaT transformations , 2002, Proceedings 26th Annual International Computer Software and Applications.

[47]  Ran Ettinger,et al.  Untangling: a slice extraction refactoring , 2004, AOSD '04.

[48]  Susan Horwitz,et al.  Automated duplicated code detection and procedure extraction , 2003 .

[49]  Arun Lakhotia,et al.  Restructuring programs by tucking statements into functions , 1998, Inf. Softw. Technol..

[50]  David W. Binkley,et al.  Slice-based cohesion metrics and software intervention , 2004, 11th Working Conference on Reverse Engineering.

[51]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[52]  Susan Horwitz,et al.  Effective, automatic procedure extraction , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[53]  Martin P. Ward Pigs from sausages? Reengineering from assembler to C via FermaT transformations , 2004, Sci. Comput. Program..

[54]  Jeremy Singer,et al.  Static program analysis based on virtual register renaming , 2006 .

[55]  Michael D. Ernst,et al.  Value dependence graphs: representation without taxation , 1994, POPL '94.

[56]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[57]  John Hatcliff,et al.  Kaveri: Delivering the Indus Java Program Slicer to Eclipse , 2005, FASE.

[58]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[59]  Michael D. Ernst Practical Fine-Grained Static Slicing of Optimized Code , 1994 .

[60]  Mark Weiser,et al.  Minimizing Communication for Synchronizing Parallel Dataflow Programs , 1988, International Conference on Parallel Processing.

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

[62]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..