Uma abordagem para apoio à decisão de refatoração em sistemas de software
Autor(a) principal: | |
---|---|
Data de Publicação: | 2017 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFU |
Texto Completo: | https://repositorio.ufu.br/handle/123456789/21178 http://dx.doi.org/10.14393/ufu.di.2017.85 |
Resumo: | A falta de modularização é um dos principais problemas encontrados em sistemas de software. Diversos estudos abordam esse problema apresentando soluções que visam aumentar a qualidade da modularização. Contudo, ainda não existe uma solução definitiva que possa ser aplicada em qualquer situação na qual esse problema ocorre. Uma situação específica diz respeito à falta de coesão entre os métodos de uma classe em sistemas orientados a objetos. Para essa situação, uma solução apropriada seria aplicar a refatoração de classes. O processo de refatoração de classes tem como objetivo melhorar a modularização de um sistema sem altear suas funcionalidades. Contudo, esse processo pode ser extremamente complexo e difícil de ser executado, pois existem efeitos colaterais que podem ser provocados por alterações indevidas. Nesse contexto, ainda existe uma lacuna por melhores sistemas de apoio à refatoração visando o aumento de coesão entre métodos das classes e uma melhor modularização do sistema. Assim, este trabalho tem como objetivo propor uma abordagem para fornecer informações de apoio à refatoração. Tais informações foram obtidas a partir de uma análise dos impactos gerados pelas refatorações aplicadas em 8 sistemas desenvolvidos na linguagem Java. O impacto dessas refatorações foram identificados e medidos através da análise da evolução das métricas de coesão. Foi realizada uma análise qualitativa sobre as refatorações identificadas com o objetivo de determinar qual tipo de estratégia foi adotada em cada situação. A partir dessa análise foi possível propor guias de refatoração que foram apresentadas aos desenvolvedores dos 8 sistemas através de um survey. O estudo obteve resultados positivos onde a partir de discussões realizadas com os desenvolvedores foram observadas situações nas quais as guias propostas claramente ajudariam no processo de refatoração. Também foram constatadas situações nas quais as recomendações podem ser adotadas como novas práticas com o objetivo de evitar perdas de modularização. |
id |
UFU_11bcb41d0d597e80beb9903a355dcaef |
---|---|
oai_identifier_str |
oai:repositorio.ufu.br:123456789/21178 |
network_acronym_str |
UFU |
network_name_str |
Repositório Institucional da UFU |
repository_id_str |
|
spelling |
2018-04-17T20:11:24Z2018-04-17T20:11:24Z2017-08-28MACHADO, João Paulo Lemes; MAIA, Marcelo de Almeida. Uma abordagem para apoio à decisão de refatoração em sistemas de software. 2017. 77 f. Dissertação (Mestrado) - Curso de Ciência da Computação, Universidade Federal de Uberlândia, Uberlândia, 2017.https://repositorio.ufu.br/handle/123456789/21178http://dx.doi.org/10.14393/ufu.di.2017.85A falta de modularização é um dos principais problemas encontrados em sistemas de software. Diversos estudos abordam esse problema apresentando soluções que visam aumentar a qualidade da modularização. Contudo, ainda não existe uma solução definitiva que possa ser aplicada em qualquer situação na qual esse problema ocorre. Uma situação específica diz respeito à falta de coesão entre os métodos de uma classe em sistemas orientados a objetos. Para essa situação, uma solução apropriada seria aplicar a refatoração de classes. O processo de refatoração de classes tem como objetivo melhorar a modularização de um sistema sem altear suas funcionalidades. Contudo, esse processo pode ser extremamente complexo e difícil de ser executado, pois existem efeitos colaterais que podem ser provocados por alterações indevidas. Nesse contexto, ainda existe uma lacuna por melhores sistemas de apoio à refatoração visando o aumento de coesão entre métodos das classes e uma melhor modularização do sistema. Assim, este trabalho tem como objetivo propor uma abordagem para fornecer informações de apoio à refatoração. Tais informações foram obtidas a partir de uma análise dos impactos gerados pelas refatorações aplicadas em 8 sistemas desenvolvidos na linguagem Java. O impacto dessas refatorações foram identificados e medidos através da análise da evolução das métricas de coesão. Foi realizada uma análise qualitativa sobre as refatorações identificadas com o objetivo de determinar qual tipo de estratégia foi adotada em cada situação. A partir dessa análise foi possível propor guias de refatoração que foram apresentadas aos desenvolvedores dos 8 sistemas através de um survey. O estudo obteve resultados positivos onde a partir de discussões realizadas com os desenvolvedores foram observadas situações nas quais as guias propostas claramente ajudariam no processo de refatoração. Também foram constatadas situações nas quais as recomendações podem ser adotadas como novas práticas com o objetivo de evitar perdas de modularização.The lack of modularization is one of the main problems encountered in software systems. Several studies address this problem by presenting solutions that aim to increase the modularization quality. However, there is still no definitive solution that can be applied in any situation in which this problem occurs. A specific situation concerns the lack of cohesion among methods of a class in object-oriented systems. In this situation, an appropriate solution would be to apply a class refactoring. The class refactoring process aims at improving the modularization of a system without changing its functionalities. However, this process can be complex and difficult to execute because of the side effects that can be caused by improper changes. In this context, better systems for supporting refactoring are still lacking, so the cohesion between class methods and a better modularization of the system could be achieved. This work proposes an approach to provide information to support of refactoring. This information was obtained from an analysis of the impacts generated by the refactorings applied in 8 systems developed in Java language. The impact of these refactorings was identified and measured by analyzing the evolution of cohesion metrics. A qualitative analysis was performed on the refactorings identified with the objective of determining what type of strategy was adopted in each situation. From this analysis it was possible to propose refactoring guides that were presented to the developers of the 8 systems through a survey. The study found positive results in which discussions with the developers led to situations in which the proposed guidelines would clearly help the refactoring process. It was also observed situations in which the recommendations can be adopted as new practices in order to avoid losses of modularization.Dissertação (Mestrado)porUniversidade Federal de UberlândiaPrograma de Pós-graduação em Ciência da ComputaçãoBrasilCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWAREModularizaçãoModularizationRefatoraçãoRefactoringCoesãoCohesionUma abordagem para apoio à decisão de refatoração em sistemas de softwareClass-splitting refactoring based on temporal analysis of cohesioninfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisMaia, Marcelo de Almeidahttp://lattes.cnpq.br/4915659948263445Macedo, AutranFigueiredo, Eduardohttps://wwws.cnpq.br/cvlattesweb/PKG_MENU.menu?f_cod=F8B7AEF53A491E2E1072745EE4B9D043#Machado, João Paulo Lemes77cfc6af78-95df-434f-8cba-ff3aa9588d23info:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFUinstname:Universidade Federal de Uberlândia (UFU)instacron:UFUTEXTAbordagemApoioDecisão.pdf.txtAbordagemApoioDecisão.pdf.txtExtracted texttext/plain120840https://repositorio.ufu.br/bitstream/123456789/21178/4/AbordagemApoioDecis%c3%a3o.pdf.txt9ffb437fca3d2227c9269c334d84d01dMD54THUMBNAILAbordagemApoioDecisão.pdf.jpgAbordagemApoioDecisão.pdf.jpgGenerated Thumbnailimage/jpeg1350https://repositorio.ufu.br/bitstream/123456789/21178/5/AbordagemApoioDecis%c3%a3o.pdf.jpg464be22ec7748c753b879f319e8846deMD55LICENSElicense.txtlicense.txttext/plain; charset=utf-81792https://repositorio.ufu.br/bitstream/123456789/21178/2/license.txt48ded82ce41b8d2426af12aed6b3cbf3MD52ORIGINALAbordagemApoioDecisão.pdfAbordagemApoioDecisão.pdfapplication/pdf821101https://repositorio.ufu.br/bitstream/123456789/21178/3/AbordagemApoioDecis%c3%a3o.pdfb0377f7a1b7a9cdce0f87191c0ef95a1MD53123456789/211782021-09-21 16:40:05.743oai:repositorio.ufu.br:123456789/21178w4kgbmVjZXNzw6FyaW8gY29uY29yZGFyIGNvbSBhIGxpY2Vuw6dhIGRlIGRpc3RyaWJ1acOnw6NvIG7Do28tZXhjbHVzaXZhLCBhbnRlcyBxdWUgbyBkb2N1bWVudG8gcG9zc2EgYXBhcmVjZXIgbm8gUmVwb3NpdMOzcmlvLiBQb3IgZmF2b3IsIGxlaWEgYSBsaWNlbsOnYSBhdGVudGFtZW50ZS4gQ2FzbyBuZWNlc3NpdGUgZGUgYWxndW0gZXNjbGFyZWNpbWVudG8gZW50cmUgZW0gY29udGF0byBhdHJhdsOpcyBkbyBlLW1haWwgIHJlcG9zaXRvcmlvQHVmdS5ici4KCkxJQ0VOw4dBIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCgpBbyBhc3NpbmFyIGUgZW50cmVnYXIgZXN0YSBsaWNlbsOnYSwgby9hIFNyLi9TcmEuIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpOgoKYSkgQ29uY2VkZSDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSBvIGRpcmVpdG8gbsOjby1leGNsdXNpdm8gZGUgcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIgbyBkb2N1bWVudG8gZW50cmVndWUgKGluY2x1aW5kbyBvIHJlc3Vtby9hYnN0cmFjdCkgZW0gZm9ybWF0byBkaWdpdGFsIG91IGltcHJlc3NvIGUgZW0gcXVhbHF1ZXIgbWVpby4KCmIpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50byBsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UgZW50aWRhZGUuCgpjKSBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSBjb250w6ltIG1hdGVyaWFsIGRvIHF1YWwgbsOjbyBkZXTDqW0gb3MgZGlyZWl0b3MgZGUgYXV0b3IsIGRlY2xhcmEgcXVlIG9idGV2ZSBhdXRvcml6YcOnw6NvIGRvIGRldGVudG9yIGRvcyBkaXJlaXRvcyBkZSBhdXRvciBwYXJhIGNvbmNlZGVyIMOgIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MgZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbyBubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLgoKU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSwgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIgb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgpBIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIGlkZW50aWZpY2Fyw6EgY2xhcmFtZW50ZSBvKHMpIHNldShzKSBub21lKHMpIGNvbW8gbyhzKSBhdXRvcihlcykgb3UgZGV0ZW50b3IgKGVzKSBkb3MgZGlyZWl0b3MgZG8gZG9jdW1lbnRvIGVudHJlZ3VlLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZGFzIHBlcm1pdGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EuCg==Repositório InstitucionalONGhttp://repositorio.ufu.br/oai/requestdiinf@dirbi.ufu.bropendoar:2021-09-21T19:40:05Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)false |
dc.title.pt_BR.fl_str_mv |
Uma abordagem para apoio à decisão de refatoração em sistemas de software |
dc.title.alternative.pt_BR.fl_str_mv |
Class-splitting refactoring based on temporal analysis of cohesion |
title |
Uma abordagem para apoio à decisão de refatoração em sistemas de software |
spellingShingle |
Uma abordagem para apoio à decisão de refatoração em sistemas de software Machado, João Paulo Lemes CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE Modularização Modularization Refatoração Refactoring Coesão Cohesion |
title_short |
Uma abordagem para apoio à decisão de refatoração em sistemas de software |
title_full |
Uma abordagem para apoio à decisão de refatoração em sistemas de software |
title_fullStr |
Uma abordagem para apoio à decisão de refatoração em sistemas de software |
title_full_unstemmed |
Uma abordagem para apoio à decisão de refatoração em sistemas de software |
title_sort |
Uma abordagem para apoio à decisão de refatoração em sistemas de software |
author |
Machado, João Paulo Lemes |
author_facet |
Machado, João Paulo Lemes |
author_role |
author |
dc.contributor.advisor1.fl_str_mv |
Maia, Marcelo de Almeida |
dc.contributor.advisor1Lattes.fl_str_mv |
http://lattes.cnpq.br/4915659948263445 |
dc.contributor.referee1.fl_str_mv |
Macedo, Autran |
dc.contributor.referee2.fl_str_mv |
Figueiredo, Eduardo |
dc.contributor.authorLattes.fl_str_mv |
https://wwws.cnpq.br/cvlattesweb/PKG_MENU.menu?f_cod=F8B7AEF53A491E2E1072745EE4B9D043# |
dc.contributor.author.fl_str_mv |
Machado, João Paulo Lemes |
contributor_str_mv |
Maia, Marcelo de Almeida Macedo, Autran Figueiredo, Eduardo |
dc.subject.cnpq.fl_str_mv |
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE |
topic |
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE Modularização Modularization Refatoração Refactoring Coesão Cohesion |
dc.subject.por.fl_str_mv |
Modularização Modularization Refatoração Refactoring Coesão Cohesion |
description |
A falta de modularização é um dos principais problemas encontrados em sistemas de software. Diversos estudos abordam esse problema apresentando soluções que visam aumentar a qualidade da modularização. Contudo, ainda não existe uma solução definitiva que possa ser aplicada em qualquer situação na qual esse problema ocorre. Uma situação específica diz respeito à falta de coesão entre os métodos de uma classe em sistemas orientados a objetos. Para essa situação, uma solução apropriada seria aplicar a refatoração de classes. O processo de refatoração de classes tem como objetivo melhorar a modularização de um sistema sem altear suas funcionalidades. Contudo, esse processo pode ser extremamente complexo e difícil de ser executado, pois existem efeitos colaterais que podem ser provocados por alterações indevidas. Nesse contexto, ainda existe uma lacuna por melhores sistemas de apoio à refatoração visando o aumento de coesão entre métodos das classes e uma melhor modularização do sistema. Assim, este trabalho tem como objetivo propor uma abordagem para fornecer informações de apoio à refatoração. Tais informações foram obtidas a partir de uma análise dos impactos gerados pelas refatorações aplicadas em 8 sistemas desenvolvidos na linguagem Java. O impacto dessas refatorações foram identificados e medidos através da análise da evolução das métricas de coesão. Foi realizada uma análise qualitativa sobre as refatorações identificadas com o objetivo de determinar qual tipo de estratégia foi adotada em cada situação. A partir dessa análise foi possível propor guias de refatoração que foram apresentadas aos desenvolvedores dos 8 sistemas através de um survey. O estudo obteve resultados positivos onde a partir de discussões realizadas com os desenvolvedores foram observadas situações nas quais as guias propostas claramente ajudariam no processo de refatoração. Também foram constatadas situações nas quais as recomendações podem ser adotadas como novas práticas com o objetivo de evitar perdas de modularização. |
publishDate |
2017 |
dc.date.issued.fl_str_mv |
2017-08-28 |
dc.date.accessioned.fl_str_mv |
2018-04-17T20:11:24Z |
dc.date.available.fl_str_mv |
2018-04-17T20:11:24Z |
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 |
MACHADO, João Paulo Lemes; MAIA, Marcelo de Almeida. Uma abordagem para apoio à decisão de refatoração em sistemas de software. 2017. 77 f. Dissertação (Mestrado) - Curso de Ciência da Computação, Universidade Federal de Uberlândia, Uberlândia, 2017. |
dc.identifier.uri.fl_str_mv |
https://repositorio.ufu.br/handle/123456789/21178 |
dc.identifier.doi.pt_BR.fl_str_mv |
http://dx.doi.org/10.14393/ufu.di.2017.85 |
identifier_str_mv |
MACHADO, João Paulo Lemes; MAIA, Marcelo de Almeida. Uma abordagem para apoio à decisão de refatoração em sistemas de software. 2017. 77 f. Dissertação (Mestrado) - Curso de Ciência da Computação, Universidade Federal de Uberlândia, Uberlândia, 2017. |
url |
https://repositorio.ufu.br/handle/123456789/21178 http://dx.doi.org/10.14393/ufu.di.2017.85 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal de Uberlândia |
dc.publisher.program.fl_str_mv |
Programa de Pós-graduação em Ciência da Computação |
dc.publisher.country.fl_str_mv |
Brasil |
publisher.none.fl_str_mv |
Universidade Federal de Uberlândia |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFU instname:Universidade Federal de Uberlândia (UFU) instacron:UFU |
instname_str |
Universidade Federal de Uberlândia (UFU) |
instacron_str |
UFU |
institution |
UFU |
reponame_str |
Repositório Institucional da UFU |
collection |
Repositório Institucional da UFU |
bitstream.url.fl_str_mv |
https://repositorio.ufu.br/bitstream/123456789/21178/4/AbordagemApoioDecis%c3%a3o.pdf.txt https://repositorio.ufu.br/bitstream/123456789/21178/5/AbordagemApoioDecis%c3%a3o.pdf.jpg https://repositorio.ufu.br/bitstream/123456789/21178/2/license.txt https://repositorio.ufu.br/bitstream/123456789/21178/3/AbordagemApoioDecis%c3%a3o.pdf |
bitstream.checksum.fl_str_mv |
9ffb437fca3d2227c9269c334d84d01d 464be22ec7748c753b879f319e8846de 48ded82ce41b8d2426af12aed6b3cbf3 b0377f7a1b7a9cdce0f87191c0ef95a1 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU) |
repository.mail.fl_str_mv |
diinf@dirbi.ufu.br |
_version_ |
1802110361803948032 |