Automatic decomposition of code review changesets in open source software projects.
| Ano de defesa: | 2016 |
|---|---|
| Autor(a) principal: | |
| Orientador(a): | , |
| Banca de defesa: | |
| Tipo de documento: | Dissertação |
| Tipo de acesso: | Acesso aberto |
| Idioma: | eng |
| Instituição de defesa: |
Universidade Federal de Campina Grande
|
| Programa de Pós-Graduação: |
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
|
| Departamento: |
Centro de Engenharia Elétrica e Informática - CEEI
|
| País: |
Brasil
|
| Palavras-chave em Português: | |
| Área do conhecimento CNPq: | |
| Link de acesso: | https://dspace.sti.ufcg.edu.br/handle/riufcg/765 |
Resumo: | Revisão de código é uma atividade amplamente utilizada para garantia da qualidade de código-fonte. Como uma típica atividade de revisão, revisão de código depende fortemente da habilidade dos desenvolvedores de entenderem o código sendo revisado. Como consequência, a presença de conjuntos de mudanças grandes contendo várias modificações independentes (e.g. consertos de bugs, refatoramentos, adições de funcionalidades, etc) pode afetar negativamente a eficácia da revisão de código. Para lidar com esse problema, Barnett et al. desenvolveram ClusterChanges — uma técnica de análise estática leve para decompor conjuntos de mudanças em partições diferentes que podem ser revisadas independentementes. Eles descobriram que ClusterChanges pode, de fato, criar partições diferentes para modificações independentes dentro do mesmo conjunto de mudança e que desenvolvedores concordam com sua decomposição. Porém, a implementação dos autores de ClusterChanges não está disponível publicamente e eles restringiram sua análise da técnica a projetos de software que são: i) de código fechado, (ii) escritos em C# e iii) desenvolvidos por uma única organização. Portanto, ainda há evidência empírica limitada da aplicabilidade de ClusterChanges para contextos diferentes. Para resolver essa situação, nós criamos JClusterChanges, uma implementação livre e de código aberto (FOSS) de ClusterChanges para software Java, e replicamos o estudo original de Barnett et al. usando uma amostra de 1000 pull requests oriundos de projetos de código aberto escritos em Java e armazenados do GitHub. Ao fazer isso, nós descobrimos que conjuntos de mudanças de código aberto também podem ser grandes e conter várias modificações independentes semelhantemente aos changesets do estudo original. Assim, nossa pesquisa confirma que o problema é tanto real quanto relevante para outros ambientes além do da Microsoft, aumenta o corpo de conhecimento sobre esse assunto e prove uma implementação FOSS de ClusterChanges que mostra que é possível implementar a técnica para outros contextos e que pode ser usada para auxiliar pesquisa futura nesse assunto. |
| id |
UFCG_34e0f1a274a0574d4ba97236a67bb942 |
|---|---|
| oai_identifier_str |
oai:dspace.sti.ufcg.edu.br:riufcg/765 |
| network_acronym_str |
UFCG |
| network_name_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
| repository_id_str |
|
| spelling |
FIGUEIREDO, Jorge Cesar Abrantes de.FIGUEIREDO, J. C. A.http://lattes.cnpq.br/1424808046858622MONTEIRO, João Arthur Brunet.BRUNET, J. A. M.http://lattes.cnpq.br/7892247821251194http://lattes.cnpq.br/5451570808284186FREIRE, Victor da Cunha Luna.Revisão de código é uma atividade amplamente utilizada para garantia da qualidade de código-fonte. Como uma típica atividade de revisão, revisão de código depende fortemente da habilidade dos desenvolvedores de entenderem o código sendo revisado. Como consequência, a presença de conjuntos de mudanças grandes contendo várias modificações independentes (e.g. consertos de bugs, refatoramentos, adições de funcionalidades, etc) pode afetar negativamente a eficácia da revisão de código. Para lidar com esse problema, Barnett et al. desenvolveram ClusterChanges — uma técnica de análise estática leve para decompor conjuntos de mudanças em partições diferentes que podem ser revisadas independentementes. Eles descobriram que ClusterChanges pode, de fato, criar partições diferentes para modificações independentes dentro do mesmo conjunto de mudança e que desenvolvedores concordam com sua decomposição. Porém, a implementação dos autores de ClusterChanges não está disponível publicamente e eles restringiram sua análise da técnica a projetos de software que são: i) de código fechado, (ii) escritos em C# e iii) desenvolvidos por uma única organização. Portanto, ainda há evidência empírica limitada da aplicabilidade de ClusterChanges para contextos diferentes. Para resolver essa situação, nós criamos JClusterChanges, uma implementação livre e de código aberto (FOSS) de ClusterChanges para software Java, e replicamos o estudo original de Barnett et al. usando uma amostra de 1000 pull requests oriundos de projetos de código aberto escritos em Java e armazenados do GitHub. Ao fazer isso, nós descobrimos que conjuntos de mudanças de código aberto também podem ser grandes e conter várias modificações independentes semelhantemente aos changesets do estudo original. Assim, nossa pesquisa confirma que o problema é tanto real quanto relevante para outros ambientes além do da Microsoft, aumenta o corpo de conhecimento sobre esse assunto e prove uma implementação FOSS de ClusterChanges que mostra que é possível implementar a técnica para outros contextos e que pode ser usada para auxiliar pesquisa futura nesse assunto.Code review is a widely used activity for source code quality assurance. As a typical review activity, code review is strongly dependent on developers’ ability to understand the code under revision. As a consequence, the presence of large changesets containing several independent modifications (e. g. bug fixes, refactoring, features additions etc) can negatively affect the efficacy of code review. To cope with this problem, Barnett et al. developed ClusterChanges — a lightweight static analysis technique for decomposing changesets in different partitions that can be reviewed independently. They have found that ClusterChanges can indeed create different partitions for independent changes within the same changeset and that developers agree with their decomposition. However, the authors’ implementation of ClusterChanges is not publicly available and they restricted their analysis of the technique to software projects thatare: i) closed source, ii) writtenin C#and iii) developed by a single organization. Therefore, there is still limited empirical evidence of ClusterChanges’ applicability to different contexts. To address this situation, we created JClusterChanges, a free and open source implementation (FOSS) of ClusterChanges for Java software, and replicated the original Barnett et. al. study on a sample of 1000 pull requests from Java open source projects hosted on GitHub. By doing so, we found that open source changesets can also be large and contain several independent changes similarly to the changesets of the original study. Thus,our research confirms that the problem is both real and relevant to other environments besides Microsoft’s, increases the body of knowledge about this subject and provides a FOSS implementation of ClusterChanges that shows that it is possible to implement the technique for other contexts and can be used to help future research on this subject.Submitted by Maria Medeiros (maria.dilva1@ufcg.edu.br) on 2018-05-22T11:23:25Z No. of bitstreams: 1 VICTOR DA CUNHA LUNA FREIRE - DISSERTAÇÃO (PPGCC) 2016.pdf: 1754894 bytes, checksum: 909db10b5000214961d54e54bebb5038 (MD5)Made available in DSpace on 2018-05-22T11:23:25Z (GMT). No. of bitstreams: 1 VICTOR DA CUNHA LUNA FREIRE - DISSERTAÇÃO (PPGCC) 2016.pdf: 1754894 bytes, checksum: 909db10b5000214961d54e54bebb5038 (MD5) Previous issue date: 2016CapesUniversidade Federal de Campina GrandePÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃOUFCGBrasilCentro de Engenharia Elétrica e Informática - CEEICiênciasCiência da ComputaçãoEngenharia de SoftwareRevisão de CódigoDecomposição de Conjunto de MudançaAutomatic decomposition of code review changesets in open source software projects.20162018-05-22T11:23:25Z2018-05-222018-05-22T11:23:25Zhttps://dspace.sti.ufcg.edu.br/handle/riufcg/765FREIRE, V. da C. L. Automatic decomposition of code review changesets in open source software projects. 2016. 59 f. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2016. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/765info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisenginfo:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFCGinstname:Universidade Federal de Campina Grande (UFCG)instacron:UFCGTEXTVICTOR DA CUNHA LUNA FREIRE - DISSERTAÇÃO (PPGCC) 2016.pdf.txtVICTOR DA CUNHA LUNA FREIRE - DISSERTAÇÃO (PPGCC) 2016.pdf.txttext/plain87972https://dspace.sti.ufcg.edu.br/bitstream/riufcg/765/4/VICTOR+DA+CUNHA+LUNA+FREIRE+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2016.pdf.txtae2d1e7fbf798791f9d98b24a883142eMD54ORIGINALVICTOR DA CUNHA LUNA FREIRE - DISSERTAÇÃO (PPGCC) 2016.pdfVICTOR DA CUNHA LUNA FREIRE - DISSERTAÇÃO (PPGCC) 2016.pdfapplication/pdf1232992https://dspace.sti.ufcg.edu.br/bitstream/riufcg/765/3/VICTOR+DA+CUNHA+LUNA+FREIRE+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2016.pdf51bdc159c4d94d38dd4b9cf4066aef82MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-81748https://dspace.sti.ufcg.edu.br/bitstream/riufcg/765/2/license.txt8a4605be74aa9ea9d79846c1fba20a33MD52riufcg/7652025-07-24 03:09:26.792oai:dspace.sti.ufcg.edu.br:riufcg/765Tk9URTogUExBQ0UgWU9VUiBPV04gTElDRU5TRSBIRVJFClRoaXMgc2FtcGxlIGxpY2Vuc2UgaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seS4KCk5PTi1FWENMVVNJVkUgRElTVFJJQlVUSU9OIExJQ0VOU0UKCkJ5IHNpZ25pbmcgYW5kIHN1Ym1pdHRpbmcgdGhpcyBsaWNlbnNlLCB5b3UgKHRoZSBhdXRob3Iocykgb3IgY29weXJpZ2h0Cm93bmVyKSBncmFudHMgdG8gRFNwYWNlIFVuaXZlcnNpdHkgKERTVSkgdGhlIG5vbi1leGNsdXNpdmUgcmlnaHQgdG8gcmVwcm9kdWNlLAp0cmFuc2xhdGUgKGFzIGRlZmluZWQgYmVsb3cpLCBhbmQvb3IgZGlzdHJpYnV0ZSB5b3VyIHN1Ym1pc3Npb24gKGluY2x1ZGluZwp0aGUgYWJzdHJhY3QpIHdvcmxkd2lkZSBpbiBwcmludCBhbmQgZWxlY3Ryb25pYyBmb3JtYXQgYW5kIGluIGFueSBtZWRpdW0sCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYXVkaW8gb3IgdmlkZW8uCgpZb3UgYWdyZWUgdGhhdCBEU1UgbWF5LCB3aXRob3V0IGNoYW5naW5nIHRoZSBjb250ZW50LCB0cmFuc2xhdGUgdGhlCnN1Ym1pc3Npb24gdG8gYW55IG1lZGl1bSBvciBmb3JtYXQgZm9yIHRoZSBwdXJwb3NlIG9mIHByZXNlcnZhdGlvbi4KCllvdSBhbHNvIGFncmVlIHRoYXQgRFNVIG1heSBrZWVwIG1vcmUgdGhhbiBvbmUgY29weSBvZiB0aGlzIHN1Ym1pc3Npb24gZm9yCnB1cnBvc2VzIG9mIHNlY3VyaXR5LCBiYWNrLXVwIGFuZCBwcmVzZXJ2YXRpb24uCgpZb3UgcmVwcmVzZW50IHRoYXQgdGhlIHN1Ym1pc3Npb24gaXMgeW91ciBvcmlnaW5hbCB3b3JrLCBhbmQgdGhhdCB5b3UgaGF2ZQp0aGUgcmlnaHQgdG8gZ3JhbnQgdGhlIHJpZ2h0cyBjb250YWluZWQgaW4gdGhpcyBsaWNlbnNlLiBZb3UgYWxzbyByZXByZXNlbnQKdGhhdCB5b3VyIHN1Ym1pc3Npb24gZG9lcyBub3QsIHRvIHRoZSBiZXN0IG9mIHlvdXIga25vd2xlZGdlLCBpbmZyaW5nZSB1cG9uCmFueW9uZSdzIGNvcHlyaWdodC4KCklmIHRoZSBzdWJtaXNzaW9uIGNvbnRhaW5zIG1hdGVyaWFsIGZvciB3aGljaCB5b3UgZG8gbm90IGhvbGQgY29weXJpZ2h0LAp5b3UgcmVwcmVzZW50IHRoYXQgeW91IGhhdmUgb2J0YWluZWQgdGhlIHVucmVzdHJpY3RlZCBwZXJtaXNzaW9uIG9mIHRoZQpjb3B5cmlnaHQgb3duZXIgdG8gZ3JhbnQgRFNVIHRoZSByaWdodHMgcmVxdWlyZWQgYnkgdGhpcyBsaWNlbnNlLCBhbmQgdGhhdApzdWNoIHRoaXJkLXBhcnR5IG93bmVkIG1hdGVyaWFsIGlzIGNsZWFybHkgaWRlbnRpZmllZCBhbmQgYWNrbm93bGVkZ2VkCndpdGhpbiB0aGUgdGV4dCBvciBjb250ZW50IG9mIHRoZSBzdWJtaXNzaW9uLgoKSUYgVEhFIFNVQk1JU1NJT04gSVMgQkFTRUQgVVBPTiBXT1JLIFRIQVQgSEFTIEJFRU4gU1BPTlNPUkVEIE9SIFNVUFBPUlRFRApCWSBBTiBBR0VOQ1kgT1IgT1JHQU5JWkFUSU9OIE9USEVSIFRIQU4gRFNVLCBZT1UgUkVQUkVTRU5UIFRIQVQgWU9VIEhBVkUKRlVMRklMTEVEIEFOWSBSSUdIVCBPRiBSRVZJRVcgT1IgT1RIRVIgT0JMSUdBVElPTlMgUkVRVUlSRUQgQlkgU1VDSApDT05UUkFDVCBPUiBBR1JFRU1FTlQuCgpEU1Ugd2lsbCBjbGVhcmx5IGlkZW50aWZ5IHlvdXIgbmFtZShzKSBhcyB0aGUgYXV0aG9yKHMpIG9yIG93bmVyKHMpIG9mIHRoZQpzdWJtaXNzaW9uLCBhbmQgd2lsbCBub3QgbWFrZSBhbnkgYWx0ZXJhdGlvbiwgb3RoZXIgdGhhbiBhcyBhbGxvd2VkIGJ5IHRoaXMKbGljZW5zZSwgdG8geW91ciBzdWJtaXNzaW9uLgo=Biblioteca Digital de Teses e Dissertaçõeshttp://bdtd.ufcg.edu.br/PUBhttp://dspace.sti.ufcg.edu.br:8080/oai/requestbdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.bropendoar:48512025-07-24T06:09:26Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG)false |
| dc.title.pt_BR.fl_str_mv |
Automatic decomposition of code review changesets in open source software projects. |
| title |
Automatic decomposition of code review changesets in open source software projects. |
| spellingShingle |
Automatic decomposition of code review changesets in open source software projects. FREIRE, Victor da Cunha Luna. Ciências Ciência da Computação Engenharia de Software Revisão de Código Decomposição de Conjunto de Mudança |
| title_short |
Automatic decomposition of code review changesets in open source software projects. |
| title_full |
Automatic decomposition of code review changesets in open source software projects. |
| title_fullStr |
Automatic decomposition of code review changesets in open source software projects. |
| title_full_unstemmed |
Automatic decomposition of code review changesets in open source software projects. |
| title_sort |
Automatic decomposition of code review changesets in open source software projects. |
| author |
FREIRE, Victor da Cunha Luna. |
| author_facet |
FREIRE, Victor da Cunha Luna. |
| author_role |
author |
| dc.contributor.advisor2ID.pt_BR.fl_str_mv |
BRUNET, J. A. M. |
| dc.contributor.advisor1.fl_str_mv |
FIGUEIREDO, Jorge Cesar Abrantes de. |
| dc.contributor.advisor1ID.fl_str_mv |
FIGUEIREDO, J. C. A. |
| dc.contributor.advisor1Lattes.fl_str_mv |
http://lattes.cnpq.br/1424808046858622 |
| dc.contributor.advisor2.fl_str_mv |
MONTEIRO, João Arthur Brunet. |
| dc.contributor.advisor2Lattes.fl_str_mv |
http://lattes.cnpq.br/7892247821251194 |
| dc.contributor.authorLattes.fl_str_mv |
http://lattes.cnpq.br/5451570808284186 |
| dc.contributor.author.fl_str_mv |
FREIRE, Victor da Cunha Luna. |
| contributor_str_mv |
FIGUEIREDO, Jorge Cesar Abrantes de. MONTEIRO, João Arthur Brunet. |
| dc.subject.cnpq.fl_str_mv |
Ciências Ciência da Computação |
| topic |
Ciências Ciência da Computação Engenharia de Software Revisão de Código Decomposição de Conjunto de Mudança |
| dc.subject.por.fl_str_mv |
Engenharia de Software Revisão de Código Decomposição de Conjunto de Mudança |
| description |
Revisão de código é uma atividade amplamente utilizada para garantia da qualidade de código-fonte. Como uma típica atividade de revisão, revisão de código depende fortemente da habilidade dos desenvolvedores de entenderem o código sendo revisado. Como consequência, a presença de conjuntos de mudanças grandes contendo várias modificações independentes (e.g. consertos de bugs, refatoramentos, adições de funcionalidades, etc) pode afetar negativamente a eficácia da revisão de código. Para lidar com esse problema, Barnett et al. desenvolveram ClusterChanges — uma técnica de análise estática leve para decompor conjuntos de mudanças em partições diferentes que podem ser revisadas independentementes. Eles descobriram que ClusterChanges pode, de fato, criar partições diferentes para modificações independentes dentro do mesmo conjunto de mudança e que desenvolvedores concordam com sua decomposição. Porém, a implementação dos autores de ClusterChanges não está disponível publicamente e eles restringiram sua análise da técnica a projetos de software que são: i) de código fechado, (ii) escritos em C# e iii) desenvolvidos por uma única organização. Portanto, ainda há evidência empírica limitada da aplicabilidade de ClusterChanges para contextos diferentes. Para resolver essa situação, nós criamos JClusterChanges, uma implementação livre e de código aberto (FOSS) de ClusterChanges para software Java, e replicamos o estudo original de Barnett et al. usando uma amostra de 1000 pull requests oriundos de projetos de código aberto escritos em Java e armazenados do GitHub. Ao fazer isso, nós descobrimos que conjuntos de mudanças de código aberto também podem ser grandes e conter várias modificações independentes semelhantemente aos changesets do estudo original. Assim, nossa pesquisa confirma que o problema é tanto real quanto relevante para outros ambientes além do da Microsoft, aumenta o corpo de conhecimento sobre esse assunto e prove uma implementação FOSS de ClusterChanges que mostra que é possível implementar a técnica para outros contextos e que pode ser usada para auxiliar pesquisa futura nesse assunto. |
| publishDate |
2016 |
| dc.date.issued.fl_str_mv |
2016 |
| dc.date.accessioned.fl_str_mv |
2018-05-22T11:23:25Z |
| dc.date.available.fl_str_mv |
2018-05-22 2018-05-22T11:23:25Z |
| 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.uri.fl_str_mv |
https://dspace.sti.ufcg.edu.br/handle/riufcg/765 |
| dc.identifier.citation.fl_str_mv |
FREIRE, V. da C. L. Automatic decomposition of code review changesets in open source software projects. 2016. 59 f. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2016. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/765 |
| url |
https://dspace.sti.ufcg.edu.br/handle/riufcg/765 |
| identifier_str_mv |
FREIRE, V. da C. L. Automatic decomposition of code review changesets in open source software projects. 2016. 59 f. Dissertação (Mestrado em Ciência da Computação) – Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2016. Disponível em: https://dspace.sti.ufcg.edu.br/handle/riufcg/765 |
| 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 Campina Grande |
| dc.publisher.program.fl_str_mv |
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO |
| dc.publisher.initials.fl_str_mv |
UFCG |
| dc.publisher.country.fl_str_mv |
Brasil |
| dc.publisher.department.fl_str_mv |
Centro de Engenharia Elétrica e Informática - CEEI |
| publisher.none.fl_str_mv |
Universidade Federal de Campina Grande |
| dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFCG instname:Universidade Federal de Campina Grande (UFCG) instacron:UFCG |
| instname_str |
Universidade Federal de Campina Grande (UFCG) |
| instacron_str |
UFCG |
| institution |
UFCG |
| reponame_str |
Biblioteca Digital de Teses e Dissertações da UFCG |
| collection |
Biblioteca Digital de Teses e Dissertações da UFCG |
| bitstream.url.fl_str_mv |
https://dspace.sti.ufcg.edu.br/bitstream/riufcg/765/4/VICTOR+DA+CUNHA+LUNA+FREIRE+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2016.pdf.txt https://dspace.sti.ufcg.edu.br/bitstream/riufcg/765/3/VICTOR+DA+CUNHA+LUNA+FREIRE+-+DISSERTA%C3%87%C3%83O+%28PPGCC%29+2016.pdf https://dspace.sti.ufcg.edu.br/bitstream/riufcg/765/2/license.txt |
| bitstream.checksum.fl_str_mv |
ae2d1e7fbf798791f9d98b24a883142e 51bdc159c4d94d38dd4b9cf4066aef82 8a4605be74aa9ea9d79846c1fba20a33 |
| bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
| repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFCG - Universidade Federal de Campina Grande (UFCG) |
| repository.mail.fl_str_mv |
bdtd@setor.ufcg.edu.br || bdtd@setor.ufcg.edu.br |
| _version_ |
1863363381014036480 |