The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Syntactic source to source transforms and program manipulation
Communications of the ACM
Artificial Intelligence: A Modern Approach
Artificial Intelligence: A Modern Approach
The Java Developer's Guide to Eclipse
The Java Developer's Guide to Eclipse
Tool support for refactoring functional programs
Haskell '03 Proceedings of the 2003 ACM SIGPLAN workshop on Haskell
A Survey of Software Refactoring
IEEE Transactions on Software Engineering
Static composition of refactorings
Science of Computer Programming - Special issue on program transformation
MetaWSL and Meta-Transformations in the FermaT Transformation System
COMPSAC '05 Proceedings of the 29th Annual International Computer Software and Applications Conference - Volume 01
Automated detection of api refactorings in libraries
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Time Interpolation: So Many Metrics, So Few Registers
Proceedings of the 40th Annual IEEE/ACM International Symposium on Microarchitecture
Sound and extensible renaming for java
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Refactoring Java programs for flexible locking
Proceedings of the 33rd International Conference on Software Engineering
An empirical investigation into the role of API-level refactorings during software evolution
Proceedings of the 33rd International Conference on Software Engineering
Differential precondition checking: A lightweight, reusable analysis for refactoring tools
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
A framework for the checking and refactoring of crosscutting concepts
ACM Transactions on Software Engineering and Methodology (TOSEM)
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Hi-index | 0.00 |
Modern development environments support refactoring by providing atomically behaviour-preserving transformations. While useful, these transformations are limited in three ways: (i) atomicity forces transformations to be complex and opaque, (ii) the behaviour preservation requirement disallows deliberate behaviour evolution, and (iii) atomicity limits code reuse opportunities for refactoring implementers. We present `program metamorphosis', a novel approach for program evolution and refactoring that addresses the above limitations by breaking refactorings into smaller steps that need not preserve behaviour individually. Instead, we ensure that sequences of transformations preserve behaviour together, and simultaneously permit selective behavioural change. To evaluate program metamorphosis, we have implemented a prototype plugin for Eclipse. Our analysis and experiments show that (1) our plugin provides correctness guarantees on par with those of Eclipse's own refactorings, (2) both our plugin and our approach address the aforementioned limitations, and (3) our approach fully subsumes traditional refactoring.