Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1007/978-3-642-03013-0_18guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Program Metamorphosis

Published: 30 July 2009 Publication History

Abstract

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.

References

[1]
Arsac, J.J.: Syntactic source to source transforms and program manipulation. Commun. ACM 22(1), 43-54 (1979).
[2]
Beck, K.: eXtreme Programming eXplained, Embrace Change. Addison-Wesley, Reading (2000).
[3]
Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9(3), 319-349 (1987).
[4]
Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading (1999).
[5]
Griswold, W.G., Notkin, D.: Program Restructuring as an Aid to Software Maintenance. Technical report, Univ. of Wash (1990).
[6]
Kiezun, A., Fuhrer, R.M., Keller, M.: Advanced Refactoring in Eclipse: Past, Present and Future. In: First Workshop on Refactoring Tools, Berlin (2007), https://netfiles.uiuc.edu/dig/RefactoringWorkshop/Presentations/ AdvancedRefactoringInEclipse.pdf
[7]
Kniesel, G., Koch, H.: Static composition of refactorings. Sci. Comput. Program. 52(1-3), 9-51 (2004).
[8]
Li, H., Reinke, C., Thompson, S.: Tool Support for Refactoring Functional Programs. In: Jeuring, J. (ed.) ACM Sigplan Haskell Workshop, pp. 27-38 (2003).
[9]
Mens, T., Tourwe, T.: A survey of software refactoring. IEEE Trans. Softw. Eng. 30(2), 126-139 (2004).
[10]
Mytkowicz, T., Sweeney, P.F., Hauswirth, M., Diwan, A.: Time interpolation: So many metrics, so few registers. In: MICRO 2007: Proceedings of the 40th Annual IEEE/ACM International Symposium on Microarchitecture, Washington, DC, USA, pp. 286-300. IEEE Computer Society Press, Los Alamitos (2007).
[11]
Reichenbach, C., Diwan, A.: Program Metamorphosis. Technical Report CU-CS- 1036-07, University of Colorado at Boulder (2007).
[12]
Russell, S., Norvig, P.: Artificial Intelligence: A Modern Approach, 2nd edn. Prentice-Hall, Englewood Cliffs (2003).
[13]
Schäfer, M., Ekman, T., de Moor, O.: Sound and Extensible Renaming for Java. In: Kiczales, G. (ed.) 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2008). ACM Press, New York (2008).
[14]
Shavor, S., D'Anjou, J., Fairbrother, S., Kehn, D., Kellerman, J., McCarthy, P.: The Java Developers Guide to Eclipse. Addison-Wesley, Reading (2003).
[15]
Taneja, K., Dig, D., Xie, T.: Automated detection of API refactorings in libraries. In: ASE 2007: Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering, pp. 377-380. ACM Press, New York (2007).
[16]
Wadler, P.: Deforestation: Transforming programs to eliminate trees. Theoretical Computer Science 73, 344-358 (1990).
[17]
Ward, M.P., Zedan, H.: MetaWSL and Meta-Transformations in the FermaT Transformation System. In: COMPSAC (1), pp. 233-238 (2005).

Cited By

View all
  • (2020)Refactoring operations Grounded in manual code changesProceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings10.1145/3377812.3381395(182-185)Online publication date: 27-Jun-2020
  • (2018)DeuceProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180165(654-664)Online publication date: 27-May-2018
  • (2017)Interactive data representation migration: exploiting program dependence to aid program transformationProceedings of the 2017 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation10.1145/3018882.3018890(47-58)Online publication date: 2-Jan-2017
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
Genoa: Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
July 2009
629 pages
ISBN:9783642030123
  • Editor:
  • Sophia Drossopoulou

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 30 July 2009

Author Tags

  1. Program Evolution
  2. Refactoring

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 10 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2020)Refactoring operations Grounded in manual code changesProceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Companion Proceedings10.1145/3377812.3381395(182-185)Online publication date: 27-Jun-2020
  • (2018)DeuceProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180165(654-664)Online publication date: 27-May-2018
  • (2017)Interactive data representation migration: exploiting program dependence to aid program transformationProceedings of the 2017 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation10.1145/3018882.3018890(47-58)Online publication date: 2-Jan-2017
  • (2015)Copy and paste redeemedProceedings of the 30th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE.2015.39(630-640)Online publication date: 9-Nov-2015
  • (2014)Residual InvestigationACM Transactions on Software Engineering and Methodology10.1145/265620124:2(1-32)Online publication date: 23-Dec-2014
  • (2013)Refactoring with synthesisACM SIGPLAN Notices10.1145/2544173.250954448:10(339-354)Online publication date: 29-Oct-2013
  • (2013)Refactoring with synthesisProceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications10.1145/2509136.2509544(339-354)Online publication date: 29-Oct-2013
  • (2012)A framework for the checking and refactoring of crosscutting conceptsACM Transactions on Software Engineering and Methodology10.1145/2211616.221161821:3(1-47)Online publication date: 3-Jul-2012
  • (2011)An empirical investigation into the role of API-level refactorings during software evolutionProceedings of the 33rd International Conference on Software Engineering10.1145/1985793.1985815(151-160)Online publication date: 21-May-2011
  • (2011)Refactoring Java programs for flexible lockingProceedings of the 33rd International Conference on Software Engineering10.1145/1985793.1985804(71-80)Online publication date: 21-May-2011
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media