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

Detalhes bibliográficos
Autor(a) principal: LOLI, Samuel Bristot
Data de Publicação: 2020
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFPE
Texto Completo: https://repositorio.ufpe.br/handle/123456789/38791
Resumo: 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.
id UFPE_6c588a2cecac2ef6babbc40e4fdd43c7
oai_identifier_str oai:repositorio.ufpe.br:123456789/38791
network_acronym_str UFPE
network_name_str Repositório Institucional da UFPE
repository_id_str 2221
spelling LOLI, Samuel Bristothttp://lattes.cnpq.br/6906525639794139http://lattes.cnpq.br/2117651910340729http://lattes.cnpq.br/3125607007070020TEIXEIRA, Leopoldo MottaCARTAXO, Bruno Falcão de Souza2020-11-26T19:05:46Z2020-11-26T19:05:46Z2020-09-11LOLI, Samuel Bristot. Code smells no contexto de mapeamento objeto-relacional em projetos Java: um catálogo e uma ferramenta de detecção. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Pernambuco, Recife, 2020.https://repositorio.ufpe.br/handle/123456789/38791Má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.Bad choices during software development might lead to maintenance and performance issues. Code smells are typically used to indicate such problems. A number of smells have been proposed, usually focused on generic code problems. In this work, we focus on the specifics of Object-Relational Mapping (ORM) code in Java. Developers use ORM frameworks to abstract the complexity of accessing a database. However, when poorly used, frameworks can lead to problems that might affect maintenance and overall performance of the system. Therefore, we present a catalog of eight smells extracted from the state of research and practice, through a combination of rapid review and grey literature review. For each smell, we also present a suggested solution and rationale. To evaluate the catalog, we conducted a survey with 84 respondents. The majority of the respondents agree both that the code smells are a problem, as well as that the suggested solution is adequate. In addition to the catalog, we present a tool to detect and suggest solutions in four code smells through static code analysis. We evaluated the tool for precision and recall using a small reference application developed with some examples of smells and after using real projects extracted from Github and GitLab from the Federal Institute of Santa Catarina (IFSC). The tool will also be applied in 379 projects to analyze the general diffusion of ORM code smells detecting 2829 smells in 75% of the analyzed projects. In conclusion, this work contributes with a systematic way of describing ORM code smells and an initial catalog, which can be useful for researchers and practitioners, positively evaluated by our initial results. In addition, we present a tool that detects ORM code smells through static code analysis in an automated way.porUniversidade Federal de PernambucoPrograma de Pos Graduacao em Ciencia da ComputacaoUFPEBrasilAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessEngenharia da ComputaçãoORMCode smellsJavaCode smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecçãoinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesismestradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPEORIGINALDISSERTAÇÃO Samuel Bristot Loli.pdfDISSERTAÇÃO Samuel Bristot Loli.pdfapplication/pdf3404647https://repositorio.ufpe.br/bitstream/123456789/38791/1/DISSERTA%c3%87%c3%83O%20Samuel%20Bristot%20Loli.pdfec0fe3a8cf23313198842147d40a92ccMD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufpe.br/bitstream/123456789/38791/2/license_rdfe39d27027a6cc9cb039ad269a5db8e34MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82310https://repositorio.ufpe.br/bitstream/123456789/38791/3/license.txtbd573a5ca8288eb7272482765f819534MD53TEXTDISSERTAÇÃO Samuel Bristot Loli.pdf.txtDISSERTAÇÃO Samuel Bristot Loli.pdf.txtExtracted texttext/plain235088https://repositorio.ufpe.br/bitstream/123456789/38791/4/DISSERTA%c3%87%c3%83O%20Samuel%20Bristot%20Loli.pdf.txtb37cf8d0cee9c49aaaf703452d2f0ceaMD54THUMBNAILDISSERTAÇÃO Samuel Bristot Loli.pdf.jpgDISSERTAÇÃO Samuel Bristot Loli.pdf.jpgGenerated Thumbnailimage/jpeg1227https://repositorio.ufpe.br/bitstream/123456789/38791/5/DISSERTA%c3%87%c3%83O%20Samuel%20Bristot%20Loli.pdf.jpg15267979cbb129ed89c587081508833aMD55123456789/387912020-11-27 02:11:45.111oai:repositorio.ufpe.br:123456789/38791TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLCBkZWNsYXJhIHF1ZSBjdW1wcml1IHF1YWlzcXVlciBvYnJpZ2HDp8O1ZXMgZXhpZ2lkYXMgcGVsbyByZXNwZWN0aXZvIGNvbnRyYXRvIG91IGFjb3Jkby4KCkEgVUZQRSBpZGVudGlmaWNhcsOhIGNsYXJhbWVudGUgbyhzKSBub21lKHMpIGRvKHMpIGF1dG9yIChlcykgZG9zIGRpcmVpdG9zIGRvIGRvY3VtZW50byBlbnRyZWd1ZSBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZG8gcHJldmlzdG8gbmEgYWzDrW5lYSBjKS4KRepositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212020-11-27T05:11:45Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false
dc.title.pt_BR.fl_str_mv Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
title Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
spellingShingle Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
LOLI, Samuel Bristot
Engenharia da Computação
ORM
Code smells
Java
title_short Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
title_full Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
title_fullStr Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
title_full_unstemmed Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
title_sort Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
author LOLI, Samuel Bristot
author_facet LOLI, Samuel Bristot
author_role author
dc.contributor.authorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/6906525639794139
dc.contributor.advisorLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/2117651910340729
dc.contributor.advisor-coLattes.pt_BR.fl_str_mv http://lattes.cnpq.br/3125607007070020
dc.contributor.author.fl_str_mv LOLI, Samuel Bristot
dc.contributor.advisor1.fl_str_mv TEIXEIRA, Leopoldo Motta
dc.contributor.advisor-co1.fl_str_mv CARTAXO, Bruno Falcão de Souza
contributor_str_mv TEIXEIRA, Leopoldo Motta
CARTAXO, Bruno Falcão de Souza
dc.subject.por.fl_str_mv Engenharia da Computação
ORM
Code smells
Java
topic Engenharia da Computação
ORM
Code smells
Java
description 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.
publishDate 2020
dc.date.accessioned.fl_str_mv 2020-11-26T19:05:46Z
dc.date.available.fl_str_mv 2020-11-26T19:05:46Z
dc.date.issued.fl_str_mv 2020-09-11
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv LOLI, Samuel Bristot. Code smells no contexto de mapeamento objeto-relacional em projetos Java: um catálogo e uma ferramenta de detecção. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Pernambuco, Recife, 2020.
dc.identifier.uri.fl_str_mv https://repositorio.ufpe.br/handle/123456789/38791
identifier_str_mv LOLI, Samuel Bristot. Code smells no contexto de mapeamento objeto-relacional em projetos Java: um catálogo e uma ferramenta de detecção. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Pernambuco, Recife, 2020.
url https://repositorio.ufpe.br/handle/123456789/38791
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Attribution-NonCommercial-NoDerivs 3.0 Brazil
http://creativecommons.org/licenses/by-nc-nd/3.0/br/
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.publisher.program.fl_str_mv Programa de Pos Graduacao em Ciencia da Computacao
dc.publisher.initials.fl_str_mv UFPE
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Pernambuco
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFPE
instname:Universidade Federal de Pernambuco (UFPE)
instacron:UFPE
instname_str Universidade Federal de Pernambuco (UFPE)
instacron_str UFPE
institution UFPE
reponame_str Repositório Institucional da UFPE
collection Repositório Institucional da UFPE
bitstream.url.fl_str_mv https://repositorio.ufpe.br/bitstream/123456789/38791/1/DISSERTA%c3%87%c3%83O%20Samuel%20Bristot%20Loli.pdf
https://repositorio.ufpe.br/bitstream/123456789/38791/2/license_rdf
https://repositorio.ufpe.br/bitstream/123456789/38791/3/license.txt
https://repositorio.ufpe.br/bitstream/123456789/38791/4/DISSERTA%c3%87%c3%83O%20Samuel%20Bristot%20Loli.pdf.txt
https://repositorio.ufpe.br/bitstream/123456789/38791/5/DISSERTA%c3%87%c3%83O%20Samuel%20Bristot%20Loli.pdf.jpg
bitstream.checksum.fl_str_mv ec0fe3a8cf23313198842147d40a92cc
e39d27027a6cc9cb039ad269a5db8e34
bd573a5ca8288eb7272482765f819534
b37cf8d0cee9c49aaaf703452d2f0cea
15267979cbb129ed89c587081508833a
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)
repository.mail.fl_str_mv attena@ufpe.br
_version_ 1802310774081716224