Code smells no contexto de mapeamento objeto-relacional em projetos Java : um catálogo e uma ferramenta de detecção
Autor(a) principal: | |
---|---|
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 |