A Large-Scale Study on Recommendations of Composite Refactorings in Practice

  • Ana Carla Bibiano PUC-Rio
  • Alessandro Garcia PUC-Rio
  • Wesley K. G. Assunção North Carolina State University

Resumo


A refatoração é uma atividade não-trivial de manutenção de software. Desenvolvedores gastam muito tempo e esforço refatorando o código para remover problemas estruturais, tais como anomalias de código. Estudos recentes indicaram que desenvolvedores frequentemente aplicam refatoração composta, ou seja, duas ou mais refatorações inter-relacionadas. No entanto, estudos anteriores revelaram que apenas 10% das refatorações compostas em projetos de software são consideradas completas, ou seja, aquelas que removem completamente as anomalies de código. Ademais, a literatura é escassa quanto ao catálogo de refatorações completas mais comuns e seus efeitos colaterais. Objetivo: Para preencher essas lacunas, realizamos um estudo de métodos mistos para criar um catálogo de refatorações compostas completas derivadas do conhecimento prático. Método: Coletamos empiricamente as refatorações completas mais comuns e seus efeitos colaterais aplicados em 42 projetos de código aberto e fechado, gerando um catálogo de recomendações de refatorações com postas completas. Em seguida, as recomendações do nosso catálogo foram avaliadas por 21 desenvolvedores de software. Resultados: O catálogo derivado inclui quatro recomendações para remover completamente múltiplas anomalias de código, minimizando possíveis efeitos colaterais. A avaliação indica que 85% dos desenvolvedores relataram que suas próprias soluções poderiam ter efeitos colaterais piores sem nossas recomendações, aumentando o esforço para remover anomalias de código. Conclusão: Nosso catálogo pode orientar desenvolvedores e pesquisadores sobre como combinar melhor refatorações compostas que reduzam efetivamente os efeitos colaterais na prática.

Referências

Baabad, A., Zulzalil, H. B., Hassan, S., and Baharom, S. B. (2020). Software architecture degradation in open source software: A systematic literature review. IEEE Access, 8:173681–173709.

Bibiano, A. C. (2023a). Catalog of complete composites. page [link].

Bibiano, A. C. (2023b). Composite refactoring - replication package. page [link].

Bibiano, A. C., Assunçao, W., Coutinho, D., Santos, K., Soares, V., Gheyi, R., Garcia, A., Fonseca, B., Ribeiro, M., Oliveira, D., et al. (2021). Look ahead! revealing complete composite refactorings and their smelliness effects. In 37th International Conference on Software Maintenance and Evolution (ICSME).

Bibiano, A. C., Fernandes, E., Oliveira, D., Garcia, A., Kalinowski, M., Fonseca, B., Oliveira, R., Oliveira, A., and Cedrim, D. (2019). A quantitative study on characteristics and effect of batch refactoring on code smells. In 13th International Symposium on Empirical Software Engineering and Measurement (ESEM), pages 1–11.

Bibiano, A. C. and Garcia, A. (2020). On the characterization, detection and impact of batch refactoring in practice. In 34th Brazilian Symposium on Software Engineering Software Engineering - Doctoral and Master Theses Competition (SBES-CTD), pages 165–179, Porto Alegre, RS, Brasil. SBC.

Bibiano, A. C., Soares, V., Coutinho, D., Fernandes, E., Correia, J., Santos, K., Oliveira, A., Garcia, A., Gheyi, R., Fonseca, B., Ribeiro, M., Barbosa, C., and Oliveira, D. (2020). How does incomplete composite refactoring affect internal quality attributes? In 28th International Conference on Program Comprehension (ICPC).

Bibiano, A. C., Uchôa, A., Assunção, W. K., Tenório, D., Colanzi, T. E., Vergilio, S. R., and Garcia, A. (2023). Composite refactoring: Representations, characteristics and effects on software projects. Information and Software Technology, 156:107134.

Brito, A., Hora, A., and Valente, M. T. (2019). Refactoring graphs: Assessing refactoring over time. In 26th Conference on Software Analysis, Evolution and Reengineering (SANER), pages 504–507.

Brito, A., Hora, A., and Valente, M. T. (2022). Towards a catalog of composite refactorings. Journal of Software: Evolution and Process.

Cedrim, D., Garcia, A., Mongiovi, M., Gheyi, R., Sousa, L., de Mello, R., Fonseca, B., Ribeiro, M., and Chávez, A. (2017). Understanding the impact of refactoring on smells: A longitudinal study of 23 software projects. In 11th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), pages 465–475.

Cinnéide, M. and Nixon, P. (2000). Composite refactorings for java programs. In 14th ECOOP (2000), pages 129–135.

de Mello, R., Oliveira, R., Uchôa, A., Oizumi, W., Garcia, A., Fonseca, B., and de Mello, F. (2022). Recommendations for developers identifying code smells. IEEE Software.

Fernandes, E., Vale, G., Sousa, L., Figueiredo, E., Garcia, A., and Lee, J. (2017). No code anomaly is an island: Anomaly agglomeration as sign of product line instabilities. In 16th International Conference on Software Reuse (ICSR), pages 48–64.

Fowler, M. (1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, 1 edition.

Galin, D. (2018). Software quality: concepts and practice. John Wiley & Sons.

Kim, M., Zimmermann, T., and Nagappan, N. (2014). An empirical study of refactoring: Challenges and benefits at Microsoft. IEEE Transactions on Software Engineering (TSE), 40(7):633–649.

Laporte, C. Y. and April, A. (2018). Software quality assurance. John Wiley & Sons.

Murphy-Hill, E., Parnin, C., and Black, A. (2012). How we refactor, and how we know it. IEEE Transactions on Software Engineering (TSE), 38(1):5–18.

Oizumi, W., Bibiano, A. C., Cedrim, D., Oliveira, A., Sousa, L., Garcia, A., and Oliveira, D. (2020). Recommending composite refactorings for smell removal: Heuristics and evaluation. In 34th Brazilian Symposium on Software Engineering (SBES), pages 72–81.

Oizumi, W., Garcia, A., Sousa, L., Cafeo, B., and Zhao, Y. (2016). Code anomalies flock together: Exploring code anomaly agglomerations for locating design problems. In 38th International Conference on Software Engineering (ICSE), pages 440–451.

Oizumi, W., Sousa, L., Oliveira, A., Carvalho, L., Garcia, A., Colanzi, T., and Oliveira, R. (2019). On the density and diversity of degradation symptoms in refactored classes: A multi-case study. In IEEE 30th International Symposium on Software Reliability Engineering (ISSRE), pages 346–357.

PMD, W. (2022). Pmd website. page [link].

Sousa, L., Cedrim, D., Garcia, A., Oizumi, W., Bibiano, A. C., Tenorio, D., Kim, M., and Oliveira, A. (2020). Characterizing and identifying composite refactorings: Concepts, heuristics and patterns. In 17th International Conference on Mining Software Repositories (MSR).

Szőke, G., Antal, G., Nagy, C., Ferenc, R., and Gyimóthy, T. (2017). Empirical study on refactoring large-scale industrial systems and its effects on maintainability. Journal of Systems and Software (JSS), 129:107–126.

Tenorio, D., Bibiano, A. C., and Garcia, A. (2019). On the customization of batch refactoring. In 3rd International Workshop on Refactoring, co-alocated International Conference on Software Engineering (IWoR-ICSE), pages 13–16. IEEE Press.

Tsantalis, N., Ketkar, A., and Dig, D. (2020). Refactoringminer 2.0. IEEE Transactions on Software Engineering (TSE).

Tsantalis, N., Mansouri, M., Eshkevari, L., Mazinanian, D., and Dig, D. (2018). Accurate and efficient refactoring detection in commit history. In 40th International Conference on Software Engineering (ICSE), pages 483–494.

Uchôa, A., Barbosa, C., Oizumi, W., Blenilio, P., Lima, R., Garcia, A., and Bezerra, C. (2020). How does modern code review impact software design degradation? an in-depth empirical study. In 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME), pages 511–522. IEEE.
Publicado
30/09/2024
BIBIANO, Ana Carla; GARCIA, Alessandro; ASSUNÇÃO, Wesley K. G.. A Large-Scale Study on Recommendations of Composite Refactorings in Practice. In: CONCURSO DE TESES E DISSERTAÇÕES EM ENGENHARIA DE SOFTWARE (DOUTORADO) - CONGRESSO BRASILEIRO DE SOFTWARE: TEORIA E PRÁTICA (CBSOFT), 15. , 2024, Curitiba/PR. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2024 . p. 22-36. DOI: https://doi.org/10.5753/cbsoft_estendido.2024.4116.