Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFPE |
dARK ID: | ark:/64986/001300000gq8w |
Texto Completo: | https://repositorio.ufpe.br/handle/123456789/37903 |
Resumo: | A refatoração ou refactoring, é a atividade de melhorar o código fonte sem afetar o comportamento observável do software, com vistas a reuso, legibilidade e facilidade de manutenção. A refatoração é útil para transformação de trechos de código com baixa qualidade e que se enxerga uma oportunidade de melhoria. Estes trechos também são conhecidos como code smells (código com “cheiro”) ou bad smells (código que “cheira mal”). Observamos como projetos de software evoluíram a partir da relação entre as refatorações e code smells, sob a perspectiva das medidas de software ao longo do ciclo de evolução do software. Desenvolvemos a ferramenta RefactoringLink a fim de identificar code smells que foram introduzidos ao longo do desenvolvimento, bem como aqueles que desapareceram. Outra funcionalidade da ferramenta é a de capturar as refatorações que ocorreram entre as versões de um software, com a finalidade de identificar quais foram os recursos afetados por essas transformações e assim criar uma associação entre a refatoração e o code smell. Investigamos 11.593 versões em 427 projetos Java/Android, hospedados em repositórios de software público. Em nossos achados, foi possível detectar 4.555.351 code smells e um total de 197.525 refatorações. Identificamos que apenas 2.3% (4.508) das refatorações resultaram em correção direta de 0.13% (5.354) dos code smells. Coletamos 37 medidas de software para cada classe de cada versão dos projetos analisados. Analisamos cinco medidas de software específicas de orientação a objetos em três cenários para observar o reflexo nas medidas quando na existência ou não de refatoração ou code smell. Os achados indicam que as medidas de software podem sofrer variações em razão da inclusão de novas funcionalidades ou manutenção do código que é realizada ao longo da evolução do software, indo além de mudanças advindas de refatorações. Apresentamos um comparativo das medidas em 15 classes de projetos distintos que tiveram a presença de refatoração, code smell e da correção de code smell a partir de uma refatoração. |
id |
UFPE_0b2ac58f7e9dd6acf4cf6313df704db6 |
---|---|
oai_identifier_str |
oai:repositorio.ufpe.br:123456789/37903 |
network_acronym_str |
UFPE |
network_name_str |
Repositório Institucional da UFPE |
repository_id_str |
2221 |
spelling |
OLIVEIRA, Everton Rennê Barros dehttp://lattes.cnpq.br/3146076518372108http://lattes.cnpq.br/3776948564582273CORNÉLIO, Márcio Lopes2020-09-10T19:18:59Z2020-09-10T19:18:59Z2020-02-14OLIVEIRA, Everton Rennê Barros de. Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Pernambuco, Recife, 2020.https://repositorio.ufpe.br/handle/123456789/37903ark:/64986/001300000gq8wA refatoração ou refactoring, é a atividade de melhorar o código fonte sem afetar o comportamento observável do software, com vistas a reuso, legibilidade e facilidade de manutenção. A refatoração é útil para transformação de trechos de código com baixa qualidade e que se enxerga uma oportunidade de melhoria. Estes trechos também são conhecidos como code smells (código com “cheiro”) ou bad smells (código que “cheira mal”). Observamos como projetos de software evoluíram a partir da relação entre as refatorações e code smells, sob a perspectiva das medidas de software ao longo do ciclo de evolução do software. Desenvolvemos a ferramenta RefactoringLink a fim de identificar code smells que foram introduzidos ao longo do desenvolvimento, bem como aqueles que desapareceram. Outra funcionalidade da ferramenta é a de capturar as refatorações que ocorreram entre as versões de um software, com a finalidade de identificar quais foram os recursos afetados por essas transformações e assim criar uma associação entre a refatoração e o code smell. Investigamos 11.593 versões em 427 projetos Java/Android, hospedados em repositórios de software público. Em nossos achados, foi possível detectar 4.555.351 code smells e um total de 197.525 refatorações. Identificamos que apenas 2.3% (4.508) das refatorações resultaram em correção direta de 0.13% (5.354) dos code smells. Coletamos 37 medidas de software para cada classe de cada versão dos projetos analisados. Analisamos cinco medidas de software específicas de orientação a objetos em três cenários para observar o reflexo nas medidas quando na existência ou não de refatoração ou code smell. Os achados indicam que as medidas de software podem sofrer variações em razão da inclusão de novas funcionalidades ou manutenção do código que é realizada ao longo da evolução do software, indo além de mudanças advindas de refatorações. Apresentamos um comparativo das medidas em 15 classes de projetos distintos que tiveram a presença de refatoração, code smell e da correção de code smell a partir de uma refatoração.Refactoring is the activity of improving the source code without affecting the observable behavior of the software, with a view to reuse, readability, and maintenance. Refactoring is useful to change low-quality code snippets that there is an opportunity for improvement. This code is also known as code smells or bad smells (code that looks strange and almost smells bad). We observed how software projects evolved from the relationship between refactorings and code smells, from the perspective of software metric throughout the software evolution history. We developed the RefactoringLink tool in order to identify code smells that were introduced during development, as well as those that disappeared. Another feature of the tool is to capture the refactorings that occurred between versions in order to identify which resources were affected by these transformations and thus create a link between refactoring and code smell. We investigated 11,593 versions in 427 Java/Android projects, hosted on public software repositories. In our findings, it was possible to detect 4,555,351 code smells and a total of 197,525 refactorings. We found that only 2.3% (4,508) of refactorings resulted in a direct correction of code smells, this means that we only detected that 0.13% (5,354) of code smells were fixed by a refactoring action, intentional or not. We collected 37 software metrics for each class of each version of the analyzed projects. We analyzed five specific object-oriented software metrics in three scenarios to observe the reflection in the measures when refactoring or code smell exists or not. The findings indicate that the software metrics may suffer variations due to the addition of new features or maintenance of the code. It's natural for software to be evolved beyond changes resulting from refactorings. We present a comparison of the measures in 15 classes of different projects that had the presence of refactoring, code smell and the correction of code smell from refactoring.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 de softwareMedidas de softwareRelação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de softwareinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesismestradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPELICENSElicense.txtlicense.txttext/plain; charset=utf-82310https://repositorio.ufpe.br/bitstream/123456789/37903/3/license.txtbd573a5ca8288eb7272482765f819534MD53ORIGINALDISSERTAÇÃO Everton Rennê Barros de Oliveira.pdfDISSERTAÇÃO Everton Rennê Barros de Oliveira.pdfapplication/pdf14023892https://repositorio.ufpe.br/bitstream/123456789/37903/1/DISSERTA%c3%87%c3%83O%20Everton%20Renn%c3%aa%20Barros%20de%20Oliveira.pdf6a83d83a6859c00ad3603b075773913aMD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufpe.br/bitstream/123456789/37903/2/license_rdfe39d27027a6cc9cb039ad269a5db8e34MD52TEXTDISSERTAÇÃO Everton Rennê Barros de Oliveira.pdf.txtDISSERTAÇÃO Everton Rennê Barros de Oliveira.pdf.txtExtracted texttext/plain197098https://repositorio.ufpe.br/bitstream/123456789/37903/4/DISSERTA%c3%87%c3%83O%20Everton%20Renn%c3%aa%20Barros%20de%20Oliveira.pdf.txtf037813cfc1df03c92f57ba094ad33b6MD54THUMBNAILDISSERTAÇÃO Everton Rennê Barros de Oliveira.pdf.jpgDISSERTAÇÃO Everton Rennê Barros de Oliveira.pdf.jpgGenerated Thumbnailimage/jpeg1407https://repositorio.ufpe.br/bitstream/123456789/37903/5/DISSERTA%c3%87%c3%83O%20Everton%20Renn%c3%aa%20Barros%20de%20Oliveira.pdf.jpgf225ff59bf4f306eb785c71b6edfc1d6MD55123456789/379032020-09-11 02:10:37.085oai:repositorio.ufpe.br:123456789/37903TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLCBkZWNsYXJhIHF1ZSBjdW1wcml1IHF1YWlzcXVlciBvYnJpZ2HDp8O1ZXMgZXhpZ2lkYXMgcGVsbyByZXNwZWN0aXZvIGNvbnRyYXRvIG91IGFjb3Jkby4KCkEgVUZQRSBpZGVudGlmaWNhcsOhIGNsYXJhbWVudGUgbyhzKSBub21lKHMpIGRvKHMpIGF1dG9yIChlcykgZG9zIGRpcmVpdG9zIGRvIGRvY3VtZW50byBlbnRyZWd1ZSBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZG8gcHJldmlzdG8gbmEgYWzDrW5lYSBjKS4KRepositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212020-09-11T05:10:37Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false |
dc.title.pt_BR.fl_str_mv |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software |
title |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software |
spellingShingle |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software OLIVEIRA, Everton Rennê Barros de Engenharia de software Medidas de software |
title_short |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software |
title_full |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software |
title_fullStr |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software |
title_full_unstemmed |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software |
title_sort |
Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software |
author |
OLIVEIRA, Everton Rennê Barros de |
author_facet |
OLIVEIRA, Everton Rennê Barros de |
author_role |
author |
dc.contributor.authorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/3146076518372108 |
dc.contributor.advisorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/3776948564582273 |
dc.contributor.author.fl_str_mv |
OLIVEIRA, Everton Rennê Barros de |
dc.contributor.advisor1.fl_str_mv |
CORNÉLIO, Márcio Lopes |
contributor_str_mv |
CORNÉLIO, Márcio Lopes |
dc.subject.por.fl_str_mv |
Engenharia de software Medidas de software |
topic |
Engenharia de software Medidas de software |
description |
A refatoração ou refactoring, é a atividade de melhorar o código fonte sem afetar o comportamento observável do software, com vistas a reuso, legibilidade e facilidade de manutenção. A refatoração é útil para transformação de trechos de código com baixa qualidade e que se enxerga uma oportunidade de melhoria. Estes trechos também são conhecidos como code smells (código com “cheiro”) ou bad smells (código que “cheira mal”). Observamos como projetos de software evoluíram a partir da relação entre as refatorações e code smells, sob a perspectiva das medidas de software ao longo do ciclo de evolução do software. Desenvolvemos a ferramenta RefactoringLink a fim de identificar code smells que foram introduzidos ao longo do desenvolvimento, bem como aqueles que desapareceram. Outra funcionalidade da ferramenta é a de capturar as refatorações que ocorreram entre as versões de um software, com a finalidade de identificar quais foram os recursos afetados por essas transformações e assim criar uma associação entre a refatoração e o code smell. Investigamos 11.593 versões em 427 projetos Java/Android, hospedados em repositórios de software público. Em nossos achados, foi possível detectar 4.555.351 code smells e um total de 197.525 refatorações. Identificamos que apenas 2.3% (4.508) das refatorações resultaram em correção direta de 0.13% (5.354) dos code smells. Coletamos 37 medidas de software para cada classe de cada versão dos projetos analisados. Analisamos cinco medidas de software específicas de orientação a objetos em três cenários para observar o reflexo nas medidas quando na existência ou não de refatoração ou code smell. Os achados indicam que as medidas de software podem sofrer variações em razão da inclusão de novas funcionalidades ou manutenção do código que é realizada ao longo da evolução do software, indo além de mudanças advindas de refatorações. Apresentamos um comparativo das medidas em 15 classes de projetos distintos que tiveram a presença de refatoração, code smell e da correção de code smell a partir de uma refatoração. |
publishDate |
2020 |
dc.date.accessioned.fl_str_mv |
2020-09-10T19:18:59Z |
dc.date.available.fl_str_mv |
2020-09-10T19:18:59Z |
dc.date.issued.fl_str_mv |
2020-02-14 |
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 |
OLIVEIRA, Everton Rennê Barros de. Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software. 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/37903 |
dc.identifier.dark.fl_str_mv |
ark:/64986/001300000gq8w |
identifier_str_mv |
OLIVEIRA, Everton Rennê Barros de. Relação entre refatorações e code smells na evolução de projetos de software e seu reflexo em medidas de software. 2020. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Pernambuco, Recife, 2020. ark:/64986/001300000gq8w |
url |
https://repositorio.ufpe.br/handle/123456789/37903 |
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/37903/3/license.txt https://repositorio.ufpe.br/bitstream/123456789/37903/1/DISSERTA%c3%87%c3%83O%20Everton%20Renn%c3%aa%20Barros%20de%20Oliveira.pdf https://repositorio.ufpe.br/bitstream/123456789/37903/2/license_rdf https://repositorio.ufpe.br/bitstream/123456789/37903/4/DISSERTA%c3%87%c3%83O%20Everton%20Renn%c3%aa%20Barros%20de%20Oliveira.pdf.txt https://repositorio.ufpe.br/bitstream/123456789/37903/5/DISSERTA%c3%87%c3%83O%20Everton%20Renn%c3%aa%20Barros%20de%20Oliveira.pdf.jpg |
bitstream.checksum.fl_str_mv |
bd573a5ca8288eb7272482765f819534 6a83d83a6859c00ad3603b075773913a e39d27027a6cc9cb039ad269a5db8e34 f037813cfc1df03c92f57ba094ad33b6 f225ff59bf4f306eb785c71b6edfc1d6 |
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_ |
1815172820265598976 |