A quality-oriented approach to recommend move method refactoring

Detalhes bibliográficos
Ano de defesa: 2018
Autor(a) principal: Couto, Christian Marlon Souza lattes
Orientador(a): Villela, Ricardo Terra Nunes Bueno
Banca de defesa: Rocha, Henrique Santos Camargos, Parreira Junior, Paulo Afonso
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Lavras
Programa de Pós-Graduação: Programa de Pós-graduação em Ciência da Computação
Departamento: Departamento de Ciência da Computação
País: brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: https://repositorio.ufla.br/handle/1/31521
Resumo: O termo "move method" foi mantido no título alternativo em português
id UFLA_6947aa9fa2191e82eed2f768b32ac52e
oai_identifier_str oai:repositorio.ufla.br:1/31521
network_acronym_str UFLA
network_name_str Repositório Institucional da UFLA
repository_id_str
spelling 2018-10-31T18:34:40Z2018-10-31T18:34:40Z2018-10-312018-08-23COUTO, C. M. S. A quality-oriented approach to recommend move method refactoring. 2018. 64 p. Dissertação (Mestrado em Ciência da Computação)–Universidade Federal de Lavras, Lavras, 2018.https://repositorio.ufla.br/handle/1/31521O termo "move method" foi mantido no título alternativo em portuguêsProcessos de refatoração são comuns em sistemas de software de grande porte, principalmente quando desenvolvedores negligenciam o processo de erosão arquitetural por longos períodos. Embora existam uma ampla gama de processos de refatoração, poucos são automatizados e levam em consideração os impactos na qualidade do software resultante. Diante desse cenário, esta dissertação de mestrado propõe uma abordagem de refatoração de sistemas de software orientada a métricas de qualidade de software. Com base no modelo QMOOD (Quality Model for Object Oriented Design), a ideia central é mover métodos entre classes de forma a maximizar os valores das métricas de qualidade. Utilizando uma notação formal, o problema pode ser descrito da seguinte forma. Dado um sistema de software S, a abordagem recomenda uma sequência de refatorações R1; R2; ... ; Rn que resulta em versões do sistema S1; S2; ... ; Sn, onde qualidade(Si+1) > qualidade(Si). Uma calibração empírica foi conduzida utilizando quatro sistemas de código aberto, de modo a encontrar o melhor critério para medir a melhora da qualidade. Dentre dez estratégias diferentes, foi escolhida a que alcançou uma média de recall de 57%, cujo critério é comparar as métricas pela porcentagem de melhora da soma dos atributos de qualidade QMOOD. Três tipos de avaliações foram realizadas para verificar a utilidade da ferramenta implementada, chamada QMove. Primeiro, a abordagem proposta foi aplicada em 13 sistemas de código aberto que foram modificados movendo aleatoriamente um subconjunto de seus métodos para outras classes, verificando posteriormente se a abordagem proposta recomendaria que esses métodos movidos retornassem ao seu local original, e foi alcançado 84% de recall. Segundo, foi realizada uma comparação do QMove com duas ferramentas de refatoração do estado-da-arte (JMove e JDeodorant) nos 13 sistemas previamente avaliados, e QMove demonstrou melhor valor de recall (84%) que os outros dois (30% e 29%, respectivamente). Terceiro e último, foi feita a mesma comparação utilizando QMove, JMove e JDeodorant em dois sistemas proprietários onde desenvolvedores experientes avaliaram a qualidade das recomendações. QMove obteve oito recomendações avaliadas positivamente pelos desenvolvedores, contra duas e nenhuma do JMove e JDeodorant, respectivamente.Refactoring processes are common in large software systems, especially when developers neglect architectural erosion process for long periods. Even though there are many refactoring approaches, very few consider the refactoring impact on the software quality. Given this scenario, this master dissertation proposes a refactoring approach to software systems oriented to software quality metrics. Based on the QMOOD (Quality Model for Object Oriented Design), the main idea is to move methods between classes in order to maximize the values of the quality metrics. Using a formal notation, we describe the problem as follows. Given a software system S, our approach recommends a sequence of refactorings R1; R2; ... ; Rn that result in system versions S1; S2; ... ; Sn, where quality(Si+1) > quality(Si). We empirically calibrated our approach, using four open-source systems, to find the best criteria to measure the quality improvement. By testing ten different strategies, we chose the one that achieved a recall average of 57.5%, whose criterion is to compare the metrics by improvement percentage of the sum of QMOOD quality attributes. We performed three types of evaluation to verify the usefulness of our implemented tool, called QMove. First, we applied our approach on 13 open-source systems that we modified by randomly moving a subset of its methods to other classes, then checking if our ap-proach would recommend the moved methods to return to their original place, and we achieve 84% recall, on average. Second, we compared QMove against two state-of-art refactoring tools (JMove and JDeodorant) on the 13 previously evaluated systems, and QMove showed better recall value (84%) than the other two (30% and 29%, respectively). Third, we con-ducted the same comparison among QMove, JMove, and JDeodorant applied in two proprietary systems where experts evaluated the quality of the recommendations. QMove obtained eight positively evaluated recommendations from the experts, against two and none of JMove and JDeodorant, respectively.Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES)Universidade Federal de LavrasPrograma de Pós-graduação em Ciência da ComputaçãoUFLAbrasilDepartamento de Ciência da ComputaçãoEngenharia de SoftwareArquitetura de softwareRefatoraçãoMétricas de qualidadeSoftware architectureRefactoringQuality metricsA quality-oriented approach to recommend move method refactoringUma abordagem orientada a qualidade para recomendar refatorações move methodinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisVillela, Ricardo Terra Nunes BuenoRocha, Henrique Santos CamargosParreira Junior, Paulo Afonsohttp://lattes.cnpq.br/6653395571696713Couto, Christian Marlon Souzainfo:eu-repo/semantics/openAccessengreponame:Repositório Institucional da UFLAinstname:Universidade Federal de Lavras (UFLA)instacron:UFLAORIGINALDISSERTAÇÃO_A quality-oriented approach to recommend move method refactoring.pdfDISSERTAÇÃO_A quality-oriented approach to recommend move method refactoring.pdfapplication/pdf1450921https://repositorio.ufla.br/bitstreams/ffb57a3f-2ce7-4c53-a166-fda66d1c8017/downloadcacb985a571e9b618df92a563d0581aeMD51trueAnonymousREADLICENSElicense.txtlicense.txttext/plain; charset=utf-8953https://repositorio.ufla.br/bitstreams/120b973e-5315-4c48-9dd7-676182477aa9/download760884c1e72224de569e74f79eb87ce3MD52falseAnonymousREADTEXTDISSERTAÇÃO_A quality-oriented approach to recommend move method refactoring.pdf.txtDISSERTAÇÃO_A quality-oriented approach to recommend move method refactoring.pdf.txtExtracted texttext/plain100594https://repositorio.ufla.br/bitstreams/37fc49d2-34bb-4032-ac7f-15b3f9861504/downloadd9f65e3fe7d950737c241dc52e57e3f9MD53falseAnonymousREADTHUMBNAILDISSERTAÇÃO_A quality-oriented approach to recommend move method refactoring.pdf.jpgDISSERTAÇÃO_A quality-oriented approach to recommend move method refactoring.pdf.jpgGenerated Thumbnailimage/jpeg3103https://repositorio.ufla.br/bitstreams/491c6d02-7e07-453c-872d-d525c84f47d1/download7df871d09449f32f997f29e7a3d32534MD54falseAnonymousREAD1/315212025-08-06 11:13:26.948open.accessoai:repositorio.ufla.br:1/31521https://repositorio.ufla.brRepositório InstitucionalPUBhttps://repositorio.ufla.br/server/oai/requestnivaldo@ufla.br || repositorio.biblioteca@ufla.bropendoar:2025-08-06T14:13:26Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)falseREVDTEFSQcOHw4NPIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCk8gcmVmZXJpZG8gYXV0b3I6CmEpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUKZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4KRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50bwpsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UKZW50aWRhZGUuCmIpIFNlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIGNvbnTDqW0gbWF0ZXJpYWwgZG8gcXVhbCBuw6NvIGRldMOpbSBvcwpkaXJlaXRvcyBkZSBhdXRvciwgZGVjbGFyYSBxdWUgb2J0ZXZlIGF1dG9yaXphw6fDo28gZG8gZGV0ZW50b3IgZG9zCmRpcmVpdG9zIGRlIGF1dG9yIHBhcmEgY29uY2VkZXIgw6AgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGUgTGF2cmFzIG9zCmRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MKZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbwpubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLiBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqQpiYXNlYWRvIGVtIHRyYWJhbGhvIGZpbmFuY2lhZG8gb3UgYXBvaWFkbyBwb3Igb3V0cmEgaW5zdGl0dWnDp8OjbyBxdWUKbsOjbyBhIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIExhdnJhcywgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIKb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgo=
dc.title.pt_BR.fl_str_mv A quality-oriented approach to recommend move method refactoring
dc.title.alternative.pt_BR.fl_str_mv Uma abordagem orientada a qualidade para recomendar refatorações move method
title A quality-oriented approach to recommend move method refactoring
spellingShingle A quality-oriented approach to recommend move method refactoring
Couto, Christian Marlon Souza
Engenharia de Software
Arquitetura de software
Refatoração
Métricas de qualidade
Software architecture
Refactoring
Quality metrics
title_short A quality-oriented approach to recommend move method refactoring
title_full A quality-oriented approach to recommend move method refactoring
title_fullStr A quality-oriented approach to recommend move method refactoring
title_full_unstemmed A quality-oriented approach to recommend move method refactoring
title_sort A quality-oriented approach to recommend move method refactoring
author Couto, Christian Marlon Souza
author_facet Couto, Christian Marlon Souza
author_role author
dc.contributor.advisor1.fl_str_mv Villela, Ricardo Terra Nunes Bueno
dc.contributor.referee1.fl_str_mv Rocha, Henrique Santos Camargos
dc.contributor.referee2.fl_str_mv Parreira Junior, Paulo Afonso
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/6653395571696713
dc.contributor.author.fl_str_mv Couto, Christian Marlon Souza
contributor_str_mv Villela, Ricardo Terra Nunes Bueno
Rocha, Henrique Santos Camargos
Parreira Junior, Paulo Afonso
dc.subject.cnpq.fl_str_mv Engenharia de Software
topic Engenharia de Software
Arquitetura de software
Refatoração
Métricas de qualidade
Software architecture
Refactoring
Quality metrics
dc.subject.por.fl_str_mv Arquitetura de software
Refatoração
Métricas de qualidade
Software architecture
Refactoring
Quality metrics
description O termo "move method" foi mantido no título alternativo em português
publishDate 2018
dc.date.submitted.none.fl_str_mv 2018-08-23
dc.date.accessioned.fl_str_mv 2018-10-31T18:34:40Z
dc.date.available.fl_str_mv 2018-10-31T18:34:40Z
dc.date.issued.fl_str_mv 2018-10-31
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 COUTO, C. M. S. A quality-oriented approach to recommend move method refactoring. 2018. 64 p. Dissertação (Mestrado em Ciência da Computação)–Universidade Federal de Lavras, Lavras, 2018.
dc.identifier.uri.fl_str_mv https://repositorio.ufla.br/handle/1/31521
identifier_str_mv COUTO, C. M. S. A quality-oriented approach to recommend move method refactoring. 2018. 64 p. Dissertação (Mestrado em Ciência da Computação)–Universidade Federal de Lavras, Lavras, 2018.
url https://repositorio.ufla.br/handle/1/31521
dc.language.iso.fl_str_mv eng
language eng
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 Lavras
dc.publisher.program.fl_str_mv Programa de Pós-graduação em Ciência da Computação
dc.publisher.initials.fl_str_mv UFLA
dc.publisher.country.fl_str_mv brasil
dc.publisher.department.fl_str_mv Departamento de Ciência da Computação
publisher.none.fl_str_mv Universidade Federal de Lavras
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFLA
instname:Universidade Federal de Lavras (UFLA)
instacron:UFLA
instname_str Universidade Federal de Lavras (UFLA)
instacron_str UFLA
institution UFLA
reponame_str Repositório Institucional da UFLA
collection Repositório Institucional da UFLA
bitstream.url.fl_str_mv https://repositorio.ufla.br/bitstreams/ffb57a3f-2ce7-4c53-a166-fda66d1c8017/download
https://repositorio.ufla.br/bitstreams/120b973e-5315-4c48-9dd7-676182477aa9/download
https://repositorio.ufla.br/bitstreams/37fc49d2-34bb-4032-ac7f-15b3f9861504/download
https://repositorio.ufla.br/bitstreams/491c6d02-7e07-453c-872d-d525c84f47d1/download
bitstream.checksum.fl_str_mv cacb985a571e9b618df92a563d0581ae
760884c1e72224de569e74f79eb87ce3
d9f65e3fe7d950737c241dc52e57e3f9
7df871d09449f32f997f29e7a3d32534
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)
repository.mail.fl_str_mv nivaldo@ufla.br || repositorio.biblioteca@ufla.br
_version_ 1854947682884255744