http://repositorio.unb.br/handle/10482/42344
File | Description | Size | Format | |
---|---|---|---|---|
2021_MarcosCesardeOliveira.pdf | 1,36 MB | Adobe PDF | View/Open |
Title: | Applying fine-grained co-change dependencies to identify refactoring opportunities |
Authors: | Oliveira, Marcos César de |
Orientador(es):: | Almeida, Rodrigo Bonifácio de |
Assunto:: | Refactoração Dependências de co-mudança Remodularização Clusterização Arquitetura - qualidade |
Issue Date: | 9-Nov-2021 |
Data de defesa:: | 21-May-2021 |
Citation: | OLIVEIRA, Marcos César de. Applying fine-grained co-change dependencies to identify refactoring opportunities. 2021., 126 f., il. Tese (Doutorado em Informática)—Universidade de Brasília, Brasília, 2021. |
Abstract: | Uma dependência de co-mudança de granularidade fina surge quando duas entidades de código fonte de granularidade fina, por exemplo, um método, mudam frequentemente juntas. Esse tipo de dependência é relevante ao considerar esforços de remodularização (por exemplo, para manter métodos que mudam frequentemente em uma mesma classe). Trabalhos de pesquisa existentes sugerem que dependências de co-mudança estão corre- lacionadas com problemas de design. Contudo, as atuais abordagens de recomendação de refatoramento que alteram a decomposição do software (tal como um move method) não exploram o uso de dependências de co-mudança de granularidade fina. Nessa tese apre- sentamos uma nova abordagem (chamada Draco) que recomenda refatoramentos de move method e move field, que remove dependências de co-mudança e evolutionary smells, um tipo particular de dependência que surge quando entidade de granularidade fina que per- tencem a classes diferentes são alteradas juntas com frequência. Primeiramento avaliamos nossa abordagem usando 47 projetos Java open-source. Draco revelou 8,405 evolutionary smells e recomendou 4,844 refatoramentos que removem dependências de co-change—sem introduzir outros tipos de dependências. Uma avaliação quantitativa revelou que Draco supera outras abordagens existentes (por exemplo, REsolution e JDeodorant) ao reco- mendar refatoramentos quando se lida com dependências de co-mudança. Também ava- liamos nossa abordagem submetendo pull-requests com as recomendações produzidas por nossa técnica, além das recomendações de outras ferramentas (REsolution, JDeodorant e JMove), no contexto de um sistema Java grande e dois de tamanho médio. Uma avali- ação qualitativa mostrou que nossa abordagem é efetiva, não somente para recomendar refatoramentos mas também para revelar oportunidades de melhorias de design. Outro resultado dessa tese é que os resultados de ambas avaliações (quantitativa e qualitativa) sugerem que Draco pode complementar outras abordagens, já que suas recomendações não se sobrepõem. |
Abstract: | A fine-grained co-change dependency arises when two fine-grained source-code entities, e.g., a method, change frequently together. This kind of dependency is relevant when con- sidering remodularization orts (e.g., to keep methods that change together in the same class). Existing research suggests that co-change dependencies are correlated with de- sign problems. However, existing approaches for recommending refactorings that change software decomposition (such as a move method) do not explore the use of fine-grained co-change dependencies. In this thesis we present a novel approach (named Draco) for rec- ommending move method and move field refactorings, which removes co-change dependen- cies and evolutionary smells, a particular type of dependency that arise when fine-grained entities that belong to di erent classes frequently change together. We first evaluated our approach using 47 open-source Java projects. Draco revealed 8,405 evolutionary smells and recommended 4,844 refactorings that remove co-change dependencies—without in- troducing other types of dependencies. A quantitative assessment reveals that Draco outperforms existing approaches (e.g., REsolution and JDeodorant) for recommending refactorings when dealing with co-change dependencies. We also evaluate our approach by submitting pull-requests with the recommendations of our technique, in addition to the recommendations from other tools (REsolution, JDeodorant, and JMove), in the con- text of one large and two medium size proprietary Java systems. A qualitative evaluation shows that our approach is eective, not only for recommending refactorings but also to reveal opportunities of design improvements. Another outcome of this thesis is that the results of both assessments (quantitative and qualitative) suggest that Draco can complement other approaches, since their refactoring recommendations do not overlap. |
metadata.dc.description.unidade: | Instituto de Ciências Exatas (IE) Departamento de Ciência da Computação (IE CIC) |
Description: | Tese (doutorado)—Universidade de Brasília, Instituto de Ciências Exatas, Departamento de Ciência da Computação, 2021. |
metadata.dc.description.ppg: | Programa de Pós-Graduação em Informática |
Licença:: | A concessão da licença deste item refere-se ao termo de autorização impresso assinado pelo autor com as seguintes condições: Na qualidade de titular dos direitos de autor da publicação, autorizo a Universidade de Brasília e o IBICT a disponibilizar por meio dos sites www.bce.unb.br, www.ibict.br, http://hercules.vtls.com/cgi-bin/ndltd/chameleon?lng=pt&skin=ndltd sem ressarcimento dos direitos autorais, de acordo com a Lei nº 9610/98, o texto integral da obra disponibilizada, conforme permissões assinaladas, para fins de leitura, impressão e/ou download, a título de divulgação da produção científica brasileira, a partir desta data. |
Appears in Collections: | Teses, dissertações e produtos pós-doutorado |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.