DR-tools code health : uma abordagem para priorização de smells para apoiar a manutenção e evolução de software

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, engloband...

ver descrição completa

Detalhes bibliográficos
Autor: Lacerda, Guilherme Silva de
Formato: tesis doctoral
Estado:Versión publicada
Fecha de publicación:2024
País:Brasil
Recursos:Universidade Federal do Rio Grande do Sul (UFRGS)
Repositorio:Biblioteca Digital de Teses e Dissertações da UFRGS
Idioma:inglés
OAI Identifier:oai:www.lume.ufrgs.br:10183/280749
Acesso em linha:http://hdl.handle.net/10183/280749
Access Level:acceso abierto
Palavra-chave:Qualidade de software
Manutencao : Software
Refatoração
Dívida técnica
Code smells
Design smells
Prioritization approach
Software quality
Soft ware maintenance and evolution
Design issues
Descrição
Resumo: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.