Quantifying the Effects of Refactorings on Bad Smells
Resumo
Refactoring aims to remove bad smells and increase software maintainability by improving the software structure without changing its behavior. Even with the existence of tools to assist refactoring, many developers do not trust in their solutions, claiming that some studies show that refactoring may even introduce new bad smells into the source code. However, we do not find a complete catalog that states when this may occur. To investigate this subject deeply, the goal of this dissertation is to evaluate the effects of refactoring on the detection of bad smells. Specifically, we want to know if and what refactoring removes bad smells or introduces them. To achieve our goal, we plan to conduct empirical studies to provide a catalog showing these situations.
Palavras-chave:
Bad Smell, Refactoring, Impacts of Refactoring
Referências
Bavota, G., De Lucia, A., Di Penta, M., Oliveto, R., and Palomba, F. (2015). An experimental investigation on the innate relationship between quality and refactoring. Journal of Systems and Software, pages 1–14.
Boussaa, M., Kessentini, W., Kessentini, M., Bechikh, S., and Chikha, S. B. (2013). Competitive coevolutionary code-smells detection. International Symposium on Search Based Software Engineering, pages 50–65.
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. Proceedings of the 11th Joint Meeting on Foundations of Software Engineering, pages 465–475.
de Paulo Sobrinho, E. V., De Lucia, A., and de Almeida Maia, M. (2018). A systematic literature review on bad smells—5 w’s: which, when, what, who, where. IEEE Transactions on Software Engineering.
Du Bois, B. and Mens, T. (2003). Describing the impact of refactoring on internal program quality. International Workshop on Evolution of Large-scale Industrial Software Applications, pages 37–48.
Fernandes, E., Oliveira, J., Vale, G., Paiva, T., and Figueiredo, E. (2016). A review-based comparative study of bad smell detection tools. 20th International Conference on Evaluation and Assessment in Software Engineering, pages 1–12.
Fokaefs, M., Tsantalis, N., Stroulia, E., and Chatzigeorgiou, A. (2011). Jdeodorant: identification and application of extract class refactorings. 33rd International Conference on Software Engineering (ICSE), pages 1037–1039.
Fontana, F. A. and Spinelli, S. (2011). Impact of refactoring on quality code evaluation. Proceedings of the 4th Workshop on Refactoring Tools, pages 37–40.
Fowler, M., Beck, K., Brant, J., and Opdyke, W. (1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley.
Kataoka, Y., Imai, T., Andou, H., and Fukaya, T. (2002). A quantitative evaluation of maintainability enhancement by refactoring. International Conference on Software Maintenance, pages 576–585.
Kessentini, M., Vaucher, S., and Sahraoui, H. (2010). Deviance from perfection is a better criterion than closeness to evil when identifying risky code. Proceedings of the IEEE/ACM Int. Conference on Automated Software Engineering, pages 113–122.
Mkaouer, M. W., Kessentini, M., Bechikh, S., Cinnéide, M. Ó., and Deb, K. (2016). On the use of many quality attributes for software refactoring: a many-objective search-based software engineering approach. Empirical Soft. Eng., pages 2503–2545.
Moha, N., Gueheneuc, Y.-G., Duchien, L., and Le Meur, A.-F. (2009). Decor: A method for the specification and detection of code and design smells. IEEE Transactions on Software Engineering, pages 20–36.
Moser, R., Sillitti, A., Abrahamsson, P., and Succi, G. (2006). Does refactoring improve reusability? International Conference on Software Reuse, pages 287–297.
Pietrzak, B. and Walter, B. (2006). Leveraging code smell detection with inter-smell relations. International Conference on Extreme Programming and Agile Processes in Software Engineering, pages 75–84.
Tavares, C., Bigonha, M., and Figueiredo, E. (Accepted in 2020a). Analyzing the impact of refactoring on bad smells. Proceedings of the XXXIV Brazilian Symposium on Software Engineering (SBES).
Tavares, C. S., Ferreira, F., and Figueiredo, E. (2018). A systematic mapping of literature on software refactoring tools. Proceedings of the XIV Brazilian Symposium on Information Systems, page 11.
Tavares, C. S., Santana, A., Figueiredo, E., and Bigonha, M. A. S. (Accepted in 2020b). Revisiting the bad smell and refactoring relationship: A systematic literature review. Experimental Software Engineering (ESELAW).
Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., and Noble, J. (2010). Qualitas corpus: A curated collection of java code for empirical studies. Asia Pacific Software Engineering Conference (APSEC), pages 336–345.
Tsantalis, N. and Chatzigeorgiou, A. (2009). Identification of move method refactoring opportunities. IEEE Transactions on Software Engineering, pages 347–367.
Boussaa, M., Kessentini, W., Kessentini, M., Bechikh, S., and Chikha, S. B. (2013). Competitive coevolutionary code-smells detection. International Symposium on Search Based Software Engineering, pages 50–65.
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. Proceedings of the 11th Joint Meeting on Foundations of Software Engineering, pages 465–475.
de Paulo Sobrinho, E. V., De Lucia, A., and de Almeida Maia, M. (2018). A systematic literature review on bad smells—5 w’s: which, when, what, who, where. IEEE Transactions on Software Engineering.
Du Bois, B. and Mens, T. (2003). Describing the impact of refactoring on internal program quality. International Workshop on Evolution of Large-scale Industrial Software Applications, pages 37–48.
Fernandes, E., Oliveira, J., Vale, G., Paiva, T., and Figueiredo, E. (2016). A review-based comparative study of bad smell detection tools. 20th International Conference on Evaluation and Assessment in Software Engineering, pages 1–12.
Fokaefs, M., Tsantalis, N., Stroulia, E., and Chatzigeorgiou, A. (2011). Jdeodorant: identification and application of extract class refactorings. 33rd International Conference on Software Engineering (ICSE), pages 1037–1039.
Fontana, F. A. and Spinelli, S. (2011). Impact of refactoring on quality code evaluation. Proceedings of the 4th Workshop on Refactoring Tools, pages 37–40.
Fowler, M., Beck, K., Brant, J., and Opdyke, W. (1999). Refactoring: Improving the Design of Existing Code. Addison-Wesley.
Kataoka, Y., Imai, T., Andou, H., and Fukaya, T. (2002). A quantitative evaluation of maintainability enhancement by refactoring. International Conference on Software Maintenance, pages 576–585.
Kessentini, M., Vaucher, S., and Sahraoui, H. (2010). Deviance from perfection is a better criterion than closeness to evil when identifying risky code. Proceedings of the IEEE/ACM Int. Conference on Automated Software Engineering, pages 113–122.
Mkaouer, M. W., Kessentini, M., Bechikh, S., Cinnéide, M. Ó., and Deb, K. (2016). On the use of many quality attributes for software refactoring: a many-objective search-based software engineering approach. Empirical Soft. Eng., pages 2503–2545.
Moha, N., Gueheneuc, Y.-G., Duchien, L., and Le Meur, A.-F. (2009). Decor: A method for the specification and detection of code and design smells. IEEE Transactions on Software Engineering, pages 20–36.
Moser, R., Sillitti, A., Abrahamsson, P., and Succi, G. (2006). Does refactoring improve reusability? International Conference on Software Reuse, pages 287–297.
Pietrzak, B. and Walter, B. (2006). Leveraging code smell detection with inter-smell relations. International Conference on Extreme Programming and Agile Processes in Software Engineering, pages 75–84.
Tavares, C., Bigonha, M., and Figueiredo, E. (Accepted in 2020a). Analyzing the impact of refactoring on bad smells. Proceedings of the XXXIV Brazilian Symposium on Software Engineering (SBES).
Tavares, C. S., Ferreira, F., and Figueiredo, E. (2018). A systematic mapping of literature on software refactoring tools. Proceedings of the XIV Brazilian Symposium on Information Systems, page 11.
Tavares, C. S., Santana, A., Figueiredo, E., and Bigonha, M. A. S. (Accepted in 2020b). Revisiting the bad smell and refactoring relationship: A systematic literature review. Experimental Software Engineering (ESELAW).
Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., and Noble, J. (2010). Qualitas corpus: A curated collection of java code for empirical studies. Asia Pacific Software Engineering Conference (APSEC), pages 336–345.
Tsantalis, N. and Chatzigeorgiou, A. (2009). Identification of move method refactoring opportunities. IEEE Transactions on Software Engineering, pages 347–367.
Publicado
19/10/2020
Como Citar
TAVARES, Cleiton Silva; BIGONHA, Mariza A. S.; FIGUEIREDO, Eduardo.
Quantifying the Effects of Refactorings on Bad Smells. In: WORKSHOP DE TESES E DISSERTAÇÕES (WTDSOFT) - CONGRESSO BRASILEIRO DE SOFTWARE: TEORIA E PRÁTICA (CBSOFT), 11. , 2020, Evento Online.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2020
.
p. 100-106.
DOI: https://doi.org/10.5753/cbsoft_estendido.2020.14615.