DR-tools code health : uma abordagem para priorização de smells para apoiar a manutenção e evolução de software - Lacerda, Guilherme Silva de (2024)
Durante a manutenção e evolução do software, a dívida técnica é uma questão recorrente, já que modificações no software tendem a adicionar problemas aparentes de design, como falta de testes, problemas arquiteturais e um grande número de code smells, levando à degradação do código. Smells, englobando problemas de software a nível de código e falhas de princípios de design, impactam negativamente a qualidade e manutenção do software. Para monitorar e acompanhar esses smells, a priorização é uma estratégia eficaz, permitindo que desenvolvedores identifiquem e mitiguem problemas críticos de forma tática. Apesar de ser essencial na gestão da dívida técnica, a priorização de smells ainda carece de um conjunto sólido, validado e amplamente usado de modelos e ferramentas, permanecendo um campo aberto e relevante de pesquisa. O objetivo desta tese é investigar a importância da priorização de smells para o desenvolvimento e manutenção de software e propor o DR-Tools Code Health, uma nova abordagem para priorização de smells. Esta abordagem engloba a definição e detecção de mais de smell em um mesmo elemento de código, além da classificação e filtragem destes smells, permitindo que os desenvolvedores identifiquem no código as partes mais problemáticas e que necessitam de atenção, e as tornem candidatas prioritárias para refatorações, ma nutenção e evolução de software. O método proposto é inspirado no Método de Hanlon, amplamente usado para priorização de problemas de saúde em países em desenvolvi mento. Dois experimentos foram realizados: o primeiro avalia a percepção dos profissionais da indústria, revelando eficácia na identificação de problemas de código com alta concordância nas análises de métodos e classes, embora muitos desenvolvedores não tenham percebido mudanças, sugerindo a necessidade de melhorias na comunicação dos resultados. No segundo experimento, foram investigados 5 projetos open-source quanto à priorização e impacto dos smells em atributos de qualidade. Observou-se um padrão de aumento gradual ou constante dos smells, alinhado a estudos anteriores. O conceito de smell churn rate foi destacado, com o projeto JetUML mostrando redução significativa de smells entre versões. A estratégia de priorização baseou-se em melhorias oportunis tas, com modularidade e manutenibilidade sendo os atributos de qualidade mais afetados pelos smells. As principais contribuições deste trabalho incluem a i) abordagem multicritério para pri orização de smells, ii) um método para contabilizar adições/remoções dos smells entre duas versões e iii) duas ferramentas open-source, uma que dá suporte ao uso do método proposto e outra que implementa o método de inserções/remoções dos smells.