Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software - OLIVEIRA, Everton Rennê Barros de (2020)
A refatoração ou refactoring, é a atividade de melhorar o código fonte sem afetar o comportamento observável do software, com vistas a reuso, legibilidade e facilidade de manutenção. A refatoração é útil para transformação de trechos de código com baixa qualidade e que se enxerga uma oportunidade de melhoria. Estes trechos também são conhecidos como code smells (código com “cheiro”) ou bad smells (código que “cheira mal”). Observamos como projetos de software evoluíram a partir da relação entre as refatorações e code smells, sob a perspectiva das medidas de software ao longo do ciclo de evolução do software. Desenvolvemos a ferramenta RefactoringLink a fim de identificar code smells que foram introduzidos ao longo do desenvolvimento, bem como aqueles que desapareceram. Outra funcionalidade da ferramenta é a de capturar as refatorações que ocorreram entre as versões de um software, com a finalidade de identificar quais foram os recursos afetados por essas transformações e assim criar uma associação entre a refatoração e o code smell. Investigamos 11.593 versões em 427 projetos Java/Android, hospedados em repositórios de software público. Em nossos achados, foi possível detectar 4.555.351 code smells e um total de 197.525 refatorações. Identificamos que apenas 2.3% (4.508) das refatorações resultaram em correção direta de 0.13% (5.354) dos code smells. Coletamos 37 medidas de software para cada classe de cada versão dos projetos analisados. Analisamos cinco medidas de software específicas de orientação a objetos em três cenários para observar o reflexo nas medidas quando na existência ou não de refatoração ou code smell. Os achados indicam que as medidas de software podem sofrer variações em razão da inclusão de novas funcionalidades ou manutenção do código que é realizada ao longo da evolução do software, indo além de mudanças advindas de refatorações. Apresentamos um comparativo das medidas em 15 classes de projetos distintos que tiveram a presença de refatoração, code smell e da correção de code smell a partir de uma refatoração.