Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção

Más escolhas durante o desenvolvimento de software podem causar futuros problemas de manutenção e desempenho. Code smells são tipicamente utilizados como indicadores de tais problemas. Vários code smells foram propostos anteriormente com foco no código genérico. Neste trabalho, focamos nas especific...

Descripción completa

Detalles Bibliográficos
Autor: LOLI, Samuel Bristot
Tipo de recurso: tesis de maestría
Estado:Versión publicada
Fecha de publicación:2020
País:Brasil
Institución:Universidade Federal de Pernambuco (UFPE)
Repositorio:Repositório Institucional da UFPE
Idioma:portugués
OAI Identifier:oai:repositorio.ufpe.br:123456789/38791
Acceso en línea:https://repositorio.ufpe.br/handle/123456789/38791
Access Level:acceso abierto
Palabra clave:Engenharia da Computação
ORM
Code smells
Java
Descripción
Sumario:Más escolhas durante o desenvolvimento de software podem causar futuros problemas de manutenção e desempenho. Code smells são tipicamente utilizados como indicadores de tais problemas. Vários code smells foram propostos anteriormente com foco no código genérico. Neste trabalho, focamos nas especificidades do código Object Relational Mapping (ORM) em Java. Desenvolvedores normalmente utilizam frameworks ORM para abstrair a complexidade de acesso ao banco de dados. No entanto, quando mal utilizados podem causar problemas que afetam a manutenção e o desempenho geral do sistema. Isto posto, apresentamos um catálogo contendo oito code smells ORM extraídos do estado de pesquisa e da prática, por meio de uma combinação de Rapid Review RR e Grey Literature Review (GLR). Para cada smell, também apresentamos uma solução sugerida e discussão a cerca do tema. Para avaliar o catálogo, realizamos uma pesquisa com 84 participantes. A maioria dos participantes concorda que os code smells ORM são um problema e que as soluções sugeridas são adequadas. Além do catálogo, apresentamos uma ferramenta para detectar e sugerir soluções em quatro code smells por meio de análise estática do código. Avaliamos a ferramenta quanto à precisão e revocação utilizando uma pequena aplicação de referência desenvolvida com exemplos de smells e posteriormente em quatro projetos reais extraídos do Github e do GitLab do Instituto Federal de Santa Catarina (IFSC). Aplicamos a ferramenta também em 379 projetos para análise da difusão geral dos code smells ORM, detectando 2829 smells em 75% dos projetos analisados. Em conclusão, este trabalho contribui com uma maneira sistemática de descrever os code smells ORM em um catálogo inicial, que pode ser útil tanto para pesquisadores quanto para profissionais, avaliado positivamente pelos nossos resultados iniciais, além de uma ferramenta para detecção automática por meio de análise estática do código de um subconjunto dos smells definidos.