Investigando a incidência de code smells em métodos de padrões de projeto

Detalhes bibliográficos
Ano de defesa: 2021
Autor(a) principal: Assunção, Ederson dos Santos lattes
Orientador(a): Souza, Rodrigo Rocha Gomes e lattes
Banca de defesa: Souza, Rodrigo Rocha Gomes e lattes, Villela, Ricardo Terra Nunes Bueno lattes, Sant'Anna, Cláudio Nogueira
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal da Bahia
Programa de Pós-Graduação: Programa de Pós-Graduação em Ciência da Computação (PGCOMP) 
Departamento: Instituto de Matemática
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://repositorio.ufba.br/handle/ri/34648
Resumo: Padrões de projeto são soluções reutilizáveis que podem ser aplicadas para resolver problemas específicos em projetos de software. No entanto, tais padrões podem ser mal aplicados e dar origem a code smells. Code smells ou smells são fragmentos no código-fonte que indicam possíveis falhas de design. Existem situações em que os padrões de projeto podem coocorrer com code smells dentro do mesmo módulo de código (e.g., arquivos .java de projetos Java). Esse fenômeno, caso ocorra com frequência, pode resultar em uma oportunidade para avaliar se existe algum desvio ou má prática de aplicação dos padrões que possam ser evitados. Possivelmente, ao refinar a forma como os padrões são adicionados a projetos, o surgimento e existência de smells possam ser mitigados. Este trabalho apresenta dois estudos experimentais com o objetivo de investigar as relações de coocorrência entre padrões de projeto e smells. Ambos demandaram a aplicação de ferramentas de detecção automatizadas de padrões de projeto e smells em sistemas de código-fonte aberto desenvolvidos na linguagem Java. No primeiro estudo busca-se compreender com que frequência os code smells coocorrem com padrões de projeto, bem como determinar as coocorrências mais comuns. Para esse fim, fora identificadas instâncias de smells em métodos de padrões de projeto de 25 sistemas. Também foram manualmente inspecionados fragmentos do código-fonte dos projetos para obter informações sobre a relação entre pares específicos padrão-smell. Entre outras descobertas, este estudo revelou que os métodos que fazem parte do padrão Adapter são mais propensos a conter smells, especialmente o Feature Envy. O segundo estudo é aplicado sobre o histórico de versão proveniente de repositórios de software Open Source. Essa análise consiste em entender a relação entre as duas variáveis (padrões de projeto e code smells) ao longo da evolução do software. Os resultados encontrados sugerem que o padrão Template Method está mais propenso a ser introduzido simultaneamente com smells ao longo do tempo.