Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1109/ICSM.2015.7332467guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Scripting parametric refactorings in Java to retrofit design patterns

Published: 29 September 2015 Publication History

Abstract

Retrofitting design patterns into a program by hand is tedious and error-prone. A programmer must distinguish refactorings that are provided by an Integrated Development Environment (IDE) from those that must be realized manually, determine a precise sequence of refactorings to apply, and perform this sequence repetitively to a laborious degree. We designed, implemented, and evaluated Reflective Refactoring (R2), a Java package to automate the creation of classical design patterns (Visitor, Abstract Factory, etc.), their inverses, and variants. We encoded 18 out of 23 Gang-of-Four design patterns as R2 scripts and explain why the remaining are inappropriate for refactoring engines. We evaluate the productivity and scalability of R2 with a case study of 6 real-world applications. In one case, R2 automatically created a Visitor with 276 visit methods by invoking 554 Eclipse refactorings in 10 minutes - an achievement that could not be done manually. R2 also sheds light on why refactoring correctness, expressiveness, and speed are critical issues for scripting in next-generation refactoring engines.

Cited By

View all
  • (2024)A Lightweight Polyglot Code Transformation LanguageProceedings of the ACM on Programming Languages10.1145/36564298:PLDI(1288-1312)Online publication date: 20-Jun-2024
  • (2024)Challenges of Processing Data Clumps within Plugin Architectures of Integrated Development EnvironmentProceedings of the 1st ACM/IEEE Workshop on Integrated Development Environments10.1145/3643796.3648444(7-11)Online publication date: 20-Apr-2024
  • (2023)Search Mechanism for Encapsulate Classes with Factory Refactoring OpportunitiesProceedings of the 17th Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3622748.3622752(31-40)Online publication date: 25-Sep-2023
  • Show More Cited By

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
ICSME '15: Proceedings of the 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME)
September 2015
611 pages
ISBN:9781467375320

Publisher

IEEE Computer Society

United States

Publication History

Published: 29 September 2015

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 22 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)A Lightweight Polyglot Code Transformation LanguageProceedings of the ACM on Programming Languages10.1145/36564298:PLDI(1288-1312)Online publication date: 20-Jun-2024
  • (2024)Challenges of Processing Data Clumps within Plugin Architectures of Integrated Development EnvironmentProceedings of the 1st ACM/IEEE Workshop on Integrated Development Environments10.1145/3643796.3648444(7-11)Online publication date: 20-Apr-2024
  • (2023)Search Mechanism for Encapsulate Classes with Factory Refactoring OpportunitiesProceedings of the 17th Brazilian Symposium on Software Components, Architectures, and Reuse10.1145/3622748.3622752(31-40)Online publication date: 25-Sep-2023
  • (2022)IntelliTCProceedings of the ACM/IEEE 44th International Conference on Software Engineering: Companion Proceedings10.1145/3510454.3516851(115-119)Online publication date: 21-May-2022
  • (2022)Inferring and applying type changesProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510115(1206-1218)Online publication date: 21-May-2022
  • (2018)Identifying refactoring opportunities for replacing type code with subclass and stateProceedings of the ACM on Programming Languages10.1145/32765082:OOPSLA(1-28)Online publication date: 24-Oct-2018
  • (2018)A metamodel for the specification and verification of model refactoring actionsProceedings of the 2nd International Workshop on Refactoring10.1145/3242163.3242167(14-21)Online publication date: 4-Sep-2018
  • (2018)A Systematic Mapping of Literature on Software Refactoring ToolsProceedings of the XIV Brazilian Symposium on Information Systems10.1145/3229345.3229357(1-8)Online publication date: 4-Jun-2018
  • (2018)Towards refactoring-aware regression test selectionProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180254(233-244)Online publication date: 27-May-2018
  • (2017)Refactoring Java Software Product LinesProceedings of the 21st International Systems and Software Product Line Conference - Volume A10.1145/3106195.3106201(59-68)Online publication date: 25-Sep-2017
  • Show More Cited By

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media