Uma abordagem para atualização de forks frente ao projeto original

Detalhes bibliográficos
Ano de defesa: 2021
Autor(a) principal: Marcondes, Arthur Roberto lattes
Orientador(a): Villela, Ricardo Terra Nunes Bueno
Banca de defesa: André Gustavo Duarte de Almeida, Costa, Heitor Augustus Xavier, Souza, Mauricio Ronny de Almeida
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
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/46129
Resumo: Diversos projetos de software se iniciam a partir de um projeto já existente. Essa prática, no ecossistema de Sistemas de Controle de Versão (Version Control Systems – VCS), é denominada fork. Por exemplo, o projeto Bootstrap, inicialmente desenvolvido no Twitter, possui em dezembro de 2020 mais de 71 mil forks, o que indica que vários projetos se iniciaram a partir do código-fonte do Bootstrap em um certo instante e estão sendo customizados. O problema se dá quando tais projetos customizados querem obter as atualizações do projeto original, i.e., novas features, correção de bugs, etc. Essa mesclagem do código-fonte do projeto original com o projeto customizado normalmente gera conflitos que necessitam de intervenção humana para resolução. Mais importante, a resolução desses conflitos pode não ser trivial e representar uma tarefa árdua para desenvolvedores. Esta dissertação de mestrado, portanto, propõe uma abordagem para atualização de forks frente ao projeto original onde features são modularizadas, documentadas, rastreáveis e podem ser reutilizadas. Afirma-se que essa tarefa não pode mais ser realizada de uma forma ad hoc. A abordagem permite a atualização desses sistemas de uma forma não invasiva, preservando a independência do projeto customizado e não exigindo intervenções diretas no projeto original. Para tanto, baseia-se na descrição de features em alto nível através de uma DSL (Domain Specific Language – Linguagem de Domínio Específico). De forma sucinta, ao invés de alterar o corpo de um método foo do projeto original, o desenvolvedor o implementa localmente e especifica, por meio de uma das onze instruções da DSL proposta, algo como “substitua o método foo pela implementação local”. Uma ferramenta que automatiza a abordagem proposta foi desenvolvida para conduzir uma avaliação real em um projeto de software frequentemente atualizado frente ao seu projeto original. Por meio dessa avaliação constatou-se que a abordagem aplica-se a cenários reais e evita conflitos de mesclagem. Avaliou-se também a perspectiva de desenvolvedores desse projeto quanto à abordagem proposta, que se mostrou positiva e contribuiu no planejamento de trabalhos futuros.
id UFLA_ffdf9a32d5ca9b3daa226a90c6a09ca7
oai_identifier_str oai:repositorio.ufla.br:1/46129
network_acronym_str UFLA
network_name_str Repositório Institucional da UFLA
repository_id_str
spelling 2021-02-22T16:49:27Z2021-02-22T16:49:27Z2021-02-222021-01-22MARCONDES, A. R. Uma abordagem para atualização de forks frente ao projeto original. 2021. 103 p. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Lavras, Lavras, 2021.https://repositorio.ufla.br/handle/1/46129Diversos projetos de software se iniciam a partir de um projeto já existente. Essa prática, no ecossistema de Sistemas de Controle de Versão (Version Control Systems – VCS), é denominada fork. Por exemplo, o projeto Bootstrap, inicialmente desenvolvido no Twitter, possui em dezembro de 2020 mais de 71 mil forks, o que indica que vários projetos se iniciaram a partir do código-fonte do Bootstrap em um certo instante e estão sendo customizados. O problema se dá quando tais projetos customizados querem obter as atualizações do projeto original, i.e., novas features, correção de bugs, etc. Essa mesclagem do código-fonte do projeto original com o projeto customizado normalmente gera conflitos que necessitam de intervenção humana para resolução. Mais importante, a resolução desses conflitos pode não ser trivial e representar uma tarefa árdua para desenvolvedores. Esta dissertação de mestrado, portanto, propõe uma abordagem para atualização de forks frente ao projeto original onde features são modularizadas, documentadas, rastreáveis e podem ser reutilizadas. Afirma-se que essa tarefa não pode mais ser realizada de uma forma ad hoc. A abordagem permite a atualização desses sistemas de uma forma não invasiva, preservando a independência do projeto customizado e não exigindo intervenções diretas no projeto original. Para tanto, baseia-se na descrição de features em alto nível através de uma DSL (Domain Specific Language – Linguagem de Domínio Específico). De forma sucinta, ao invés de alterar o corpo de um método foo do projeto original, o desenvolvedor o implementa localmente e especifica, por meio de uma das onze instruções da DSL proposta, algo como “substitua o método foo pela implementação local”. Uma ferramenta que automatiza a abordagem proposta foi desenvolvida para conduzir uma avaliação real em um projeto de software frequentemente atualizado frente ao seu projeto original. Por meio dessa avaliação constatou-se que a abordagem aplica-se a cenários reais e evita conflitos de mesclagem. Avaliou-se também a perspectiva de desenvolvedores desse projeto quanto à abordagem proposta, que se mostrou positiva e contribuiu no planejamento de trabalhos futuros.Several software projects start from an existing project. This practice, in the VCS ecosystem, is called fork. For instance, the Bootstrap project, initially developed on Twitter, has in December 2020 more than 68,000 forks, which indicates that several projects started from the Bootstrap source code at a certain moment and are being customized. The problem occurs when customized projects want to obtain updates from the original project, i.e., new features, bug fixes, etc. The merge of the source code between the original and the customized projects usually generates conflicts that need human resolution. More important, the resolution of those conflicts might not be trivial and poses an arduous task for developers. This dissertation, therefore, proposes an approach for updating forks against the original project where features are modularized, documented, traceable, and can be reused. We claim that the such task can no longer be carried out on an ad hoc basis. The approach updates those systems in a non-invasive way, which preserves the independence of the customized project does not requires direct interventions in the original project. For this purpose, it specifies features on a high level using a DSL (Domain Specific Language). In a nutshell, instead of modify the method foo from the original project, the developer implements it locally and specifies, using one of the eleven instructions of the proposed DSL, something like “replace the foo method with local implementation”. We developed a tool that automates the approach and conduced an evaluation on a real-world project that is regularly updated against your original project. Through this evaluation we found that the approach applies to real scenarios and avoids merging conflicts. We also evaluated the perspective of the developers of this project regarding the proposed approach, which proved to be positive and contributed to the planning of future work.Universidade Federal de LavrasPrograma de Pós-Graduação em Ciência da ComputaçãoUFLAbrasilDepartamento de Ciência da ComputaçãoCiência da ComputaçãoEvolução de softwareAtualização de forkConflitos de mesclagemSoftware evolutionFork updateMerge conflictsUma abordagem para atualização de forks frente ao projeto originalAn approach for updating forks against the original projectinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisVillela, Ricardo Terra Nunes BuenoAndré Gustavo Duarte de AlmeidaCosta, Heitor Augustus XavierSouza, Mauricio Ronny de Almeidahttp://lattes.cnpq.br/3621080350846846Marcondes, Arthur Robertoinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFLAinstname:Universidade Federal de Lavras (UFLA)instacron:UFLAORIGINALDISSERTAÇÃO_Uma abordagem para atualização de forks frente ao projeto original.pdfDISSERTAÇÃO_Uma abordagem para atualização de forks frente ao projeto original.pdfapplication/pdf1853101https://repositorio.ufla.br/bitstreams/4c922ff2-e9e3-4e1e-9c2b-9410aa8c1146/downloadfbc2dc6442c83c19d6712a34537c4671MD51trueAnonymousREADLICENSElicense.txtlicense.txttext/plain; charset=utf-8953https://repositorio.ufla.br/bitstreams/57b0a3b7-c66b-4309-90ce-6870b33413a6/download760884c1e72224de569e74f79eb87ce3MD52falseAnonymousREADTEXTDISSERTAÇÃO_Uma abordagem para atualização de forks frente ao projeto original.pdf.txtDISSERTAÇÃO_Uma abordagem para atualização de forks frente ao projeto original.pdf.txtExtracted texttext/plain103595https://repositorio.ufla.br/bitstreams/96f51a4f-c2ea-4e0e-a7c6-e92cbebd180a/download45f9cf6aa17fb07a77334312467f9948MD53falseAnonymousREADTHUMBNAILDISSERTAÇÃO_Uma abordagem para atualização de forks frente ao projeto original.pdf.jpgDISSERTAÇÃO_Uma abordagem para atualização de forks frente ao projeto original.pdf.jpgGenerated Thumbnailimage/jpeg3037https://repositorio.ufla.br/bitstreams/1275f0ec-59b1-4a54-b4cc-0a0c9b020348/download404404f19e8783812f0bfdd2fe02c9efMD54falseAnonymousREAD1/461292025-08-06 11:17:39.991open.accessoai:repositorio.ufla.br:1/46129https://repositorio.ufla.brRepositório InstitucionalPUBhttps://repositorio.ufla.br/server/oai/requestnivaldo@ufla.br || repositorio.biblioteca@ufla.bropendoar:2025-08-06T14:17:39Repositório Institucional da UFLA - Universidade Federal de Lavras (UFLA)falseREVDTEFSQcOHw4NPIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCk8gcmVmZXJpZG8gYXV0b3I6CmEpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUKZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4KRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50bwpsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UKZW50aWRhZGUuCmIpIFNlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIGNvbnTDqW0gbWF0ZXJpYWwgZG8gcXVhbCBuw6NvIGRldMOpbSBvcwpkaXJlaXRvcyBkZSBhdXRvciwgZGVjbGFyYSBxdWUgb2J0ZXZlIGF1dG9yaXphw6fDo28gZG8gZGV0ZW50b3IgZG9zCmRpcmVpdG9zIGRlIGF1dG9yIHBhcmEgY29uY2VkZXIgw6AgVW5pdmVyc2lkYWRlIEZlZGVyYWwgZGUgTGF2cmFzIG9zCmRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MKZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbwpubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLiBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqQpiYXNlYWRvIGVtIHRyYWJhbGhvIGZpbmFuY2lhZG8gb3UgYXBvaWFkbyBwb3Igb3V0cmEgaW5zdGl0dWnDp8OjbyBxdWUKbsOjbyBhIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIExhdnJhcywgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIKb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgo=
dc.title.pt_BR.fl_str_mv Uma abordagem para atualização de forks frente ao projeto original
dc.title.alternative.pt_BR.fl_str_mv An approach for updating forks against the original project
title Uma abordagem para atualização de forks frente ao projeto original
spellingShingle Uma abordagem para atualização de forks frente ao projeto original
Marcondes, Arthur Roberto
Ciência da Computação
Evolução de software
Atualização de fork
Conflitos de mesclagem
Software evolution
Fork update
Merge conflicts
title_short Uma abordagem para atualização de forks frente ao projeto original
title_full Uma abordagem para atualização de forks frente ao projeto original
title_fullStr Uma abordagem para atualização de forks frente ao projeto original
title_full_unstemmed Uma abordagem para atualização de forks frente ao projeto original
title_sort Uma abordagem para atualização de forks frente ao projeto original
author Marcondes, Arthur Roberto
author_facet Marcondes, Arthur Roberto
author_role author
dc.contributor.advisor1.fl_str_mv Villela, Ricardo Terra Nunes Bueno
dc.contributor.referee1.fl_str_mv André Gustavo Duarte de Almeida
dc.contributor.referee2.fl_str_mv Costa, Heitor Augustus Xavier
dc.contributor.referee3.fl_str_mv Souza, Mauricio Ronny de Almeida
dc.contributor.authorLattes.fl_str_mv http://lattes.cnpq.br/3621080350846846
dc.contributor.author.fl_str_mv Marcondes, Arthur Roberto
contributor_str_mv Villela, Ricardo Terra Nunes Bueno
André Gustavo Duarte de Almeida
Costa, Heitor Augustus Xavier
Souza, Mauricio Ronny de Almeida
dc.subject.cnpq.fl_str_mv Ciência da Computação
topic Ciência da Computação
Evolução de software
Atualização de fork
Conflitos de mesclagem
Software evolution
Fork update
Merge conflicts
dc.subject.por.fl_str_mv Evolução de software
Atualização de fork
Conflitos de mesclagem
Software evolution
Fork update
Merge conflicts
description Diversos projetos de software se iniciam a partir de um projeto já existente. Essa prática, no ecossistema de Sistemas de Controle de Versão (Version Control Systems – VCS), é denominada fork. Por exemplo, o projeto Bootstrap, inicialmente desenvolvido no Twitter, possui em dezembro de 2020 mais de 71 mil forks, o que indica que vários projetos se iniciaram a partir do código-fonte do Bootstrap em um certo instante e estão sendo customizados. O problema se dá quando tais projetos customizados querem obter as atualizações do projeto original, i.e., novas features, correção de bugs, etc. Essa mesclagem do código-fonte do projeto original com o projeto customizado normalmente gera conflitos que necessitam de intervenção humana para resolução. Mais importante, a resolução desses conflitos pode não ser trivial e representar uma tarefa árdua para desenvolvedores. Esta dissertação de mestrado, portanto, propõe uma abordagem para atualização de forks frente ao projeto original onde features são modularizadas, documentadas, rastreáveis e podem ser reutilizadas. Afirma-se que essa tarefa não pode mais ser realizada de uma forma ad hoc. A abordagem permite a atualização desses sistemas de uma forma não invasiva, preservando a independência do projeto customizado e não exigindo intervenções diretas no projeto original. Para tanto, baseia-se na descrição de features em alto nível através de uma DSL (Domain Specific Language – Linguagem de Domínio Específico). De forma sucinta, ao invés de alterar o corpo de um método foo do projeto original, o desenvolvedor o implementa localmente e especifica, por meio de uma das onze instruções da DSL proposta, algo como “substitua o método foo pela implementação local”. Uma ferramenta que automatiza a abordagem proposta foi desenvolvida para conduzir uma avaliação real em um projeto de software frequentemente atualizado frente ao seu projeto original. Por meio dessa avaliação constatou-se que a abordagem aplica-se a cenários reais e evita conflitos de mesclagem. Avaliou-se também a perspectiva de desenvolvedores desse projeto quanto à abordagem proposta, que se mostrou positiva e contribuiu no planejamento de trabalhos futuros.
publishDate 2021
dc.date.submitted.none.fl_str_mv 2021-01-22
dc.date.accessioned.fl_str_mv 2021-02-22T16:49:27Z
dc.date.available.fl_str_mv 2021-02-22T16:49:27Z
dc.date.issued.fl_str_mv 2021-02-22
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 MARCONDES, A. R. Uma abordagem para atualização de forks frente ao projeto original. 2021. 103 p. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Lavras, Lavras, 2021.
dc.identifier.uri.fl_str_mv https://repositorio.ufla.br/handle/1/46129
identifier_str_mv MARCONDES, A. R. Uma abordagem para atualização de forks frente ao projeto original. 2021. 103 p. Dissertação (Mestrado em Ciência da Computação) – Universidade Federal de Lavras, Lavras, 2021.
url https://repositorio.ufla.br/handle/1/46129
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 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/4c922ff2-e9e3-4e1e-9c2b-9410aa8c1146/download
https://repositorio.ufla.br/bitstreams/57b0a3b7-c66b-4309-90ce-6870b33413a6/download
https://repositorio.ufla.br/bitstreams/96f51a4f-c2ea-4e0e-a7c6-e92cbebd180a/download
https://repositorio.ufla.br/bitstreams/1275f0ec-59b1-4a54-b4cc-0a0c9b020348/download
bitstream.checksum.fl_str_mv fbc2dc6442c83c19d6712a34537c4671
760884c1e72224de569e74f79eb87ce3
45f9cf6aa17fb07a77334312467f9948
404404f19e8783812f0bfdd2fe02c9ef
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_ 1854947727052374016