Understanding confusion in code reviews
Autor(a) principal: | |
---|---|
Data de Publicação: | 2019 |
Tipo de documento: | Tese |
Idioma: | eng |
Título da fonte: | Repositório Institucional da UFPE |
dARK ID: | ark:/64986/0013000015jfm |
Texto Completo: | https://repositorio.ufpe.br/handle/123456789/33481 |
Resumo: | LIMA FILHO, Fernando José Castor de, também é conhecido(a) em citações bibliográficas por: CASTOR FILHO, Fernando |
id |
UFPE_8d8def5c1728f86408590356300e0810 |
---|---|
oai_identifier_str |
oai:repositorio.ufpe.br:123456789/33481 |
network_acronym_str |
UFPE |
network_name_str |
Repositório Institucional da UFPE |
repository_id_str |
2221 |
spelling |
EBERT, Felipehttp://lattes.cnpq.br/8344951848205980http://lattes.cnpq.br/7310046838140771LIMA FILHO, Fernando José Castor deSEREBRENIK, Alexander2019-09-23T18:00:43Z2019-09-23T18:00:43Z2019-02-15https://repositorio.ufpe.br/handle/123456789/33481ark:/64986/0013000015jfmLIMA FILHO, Fernando José Castor de, também é conhecido(a) em citações bibliográficas por: CASTOR FILHO, FernandoCode review is a technique of systematic examination of a code change. It is an important practice for software quality assurance. The benefits of code reviews are well-known, such as decreasing the number of defects, improving software quality, and knowledge transfer. Nevertheless, they can also incur costs on software development projects as they can delay the merge of a code change and, consequently, slow down the overall development process. Furthermore, performing a code review might not be such an easy task, it will probably require developers’ knowledge about the code change and the context of the system. Hence, the merge of a code change can be further delayed if reviewers experience difficulties in understanding the change. In fact, understanding the code change and its context is one of the main issues reviewers face during a code review. In this thesis, we tackle two important problems related to confusion in code reviews: the lack of knowledge in the research community about confusion in code reviews; and the lack of tools for confusion identification in code review comments. In the first study, we address the first problem: we create an understanding of what constitutes confusion by building a definition of confusion, and a confusion coding scheme. Then, we manually annotate several code review comments and build an automated approach for detecting confusion to address the second problem. Our classifiers present a considerable performance on the classification of confusion. Moreover, to improve the current understanding on confusion in code reviews, we conduct a second study aiming at identifying the reasons for confusion, its impacts, and how developers cope with confusion. As such, we re-annotate the aforementioned code review comments and conduct a survey of developers. Based on our findings, we provide a model of confusion in context with 30 reasons for confusion, 14 impacts, and 13 coping strategies. The most frequent reasons for confusion are: missing rationale, and discussion of non-functional requirements of the solution. The most popular impacts of confusion are: the delay on the merge decision, and the decrease on the review quality. The most common strategies developers adopt to cope with confusion are: requesting information, and improving familiarity with existing code. During the former studies, we observe that identification of confusion in questions is a challenging task and that communicative intentions are one of the reasons for confusion. Hence, we decided to conduct an in-depth analysis of the communicative intention of developers’ questions in code reviews in the third study. We categorise 499 questions into 12 different categories of intentions. Even though the majority of questions actually serve information seeking goals, they still represent fewer than half of the annotated sample. These results suggest that questions are actually used by developers in code review to serve a wider variety of communicative purposes, including suggestions, requests for action, and criticism.CAPESFACEPEA revisão de código é uma técnica de verificação sistemática realizada em uma alteração de código. Esta é uma importante prática para a garantia de qualidade de software. Os benefícios das revisões de código são bem conhecidos, podemos citar, a redução no número de defeitos, a melhora na qualidade do software e a transferência de conhecimento. Entretanto, as revisões de código também podem gerar custos em projetos de desenvolvimento de software, pois, elas podem atrasar a integração da alteração e, consequentemente, retardar o processo de desenvolvimento. Além disso, revisar código pode não ser uma tarefa tão fácil, pois, provavelmente será exigido dos desenvolvedores o conhecimento sobre a alteração e o contexto do sistema. Assim, a integração desta alteração pode ser ainda mais retardada caso os revisores enfrentem dificuldades em compreender a alteração. De fato, entender uma alteração e o seu contexto é um dos principais problemas que os revisores enfrentam durante uma revisão de código. Nesta tese, abordamos dois importantes problemas relacionados à confusão em revisões de código: a falta de conhecimento na comunidade científica sobre confusão em revisões de código; e a falta de ferramentas para a identificação de confusão em comentários de revisão de código. No primeiro estudo, abordandamos o primeiro problema: criamos um entendimento sobre o que constitui confusão através da construção de uma definição de confusão e de um esquema de codificação de confusão. Em seguida, classificamos manualmente diversos comentários de revisões de código e criamos uma abordagem automática para detectar confusão, para abordar o segundo problema. Nossos classificadores apresentam performance considerável para a classificação de confusão. Complementarmente, para melhorar o entendimento atual sobre confusão em revisões de código, conduzimos um segundo estudo com o objetivo de identificar as razões da confusão, seus impactos e como os desenvolvedores lidam ela. Para isto, classificamos novamente os comentários de revisão de código e realizamos um questionário com desenvolvedores. Com base em nossos resultados, desenvolvemos um modelo de confusão em contexto com 30 razões para confusão, 14 impactos e 13 estratégias. As principais razões de confusão são: motivação ausente da alteração e discussão dos requisitos não funcionais da solução. Os principais impactos da confusão são: o atraso na integração da alteração e a diminuição na qualidade da revisão. As estratégias mais comuns para lidar com a confusão são: solicitar informação e melhorar a familiaridade com o código existente. Durante estes estudos, observamos que a identificação de confusão em perguntas é uma tarefa desafiadora e que as intenções comunicativas são uma das razões de confusão. Assim, decidimos realizar uma análise aprofundada da intenção comunicativa das perguntas dos desenvolvedores em revisões de código em nosso terceiro estudo. Nós categorizamos 499 perguntas em 12 diferentes categorias de intenções. Apesar da maioria das perguntas atender aos objetivos de solicitação de informação, estas ainda representam menos da metade das perguntas categorizadas. Estes resultados sugerem que as perguntas são realmente usadas pelos desenvolvedores em revisões de código para atender a uma variedade mais ampla de propósitos comunicativos, incluindo sugestões, solicitação de ações e criticismo.engUniversidade Federal de PernambucoPrograma de Pos Graduacao em Ciencia da ComputacaoUFPEBrasilAttribution-NonCommercial-NoDerivs 3.0 Brazilhttp://creativecommons.org/licenses/by-nc-nd/3.0/br/info:eu-repo/semantics/openAccessEngenharia de softwareRevisão de códigoUnderstanding confusion in code reviewsinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisdoutoradoreponame:Repositório Institucional da UFPEinstname:Universidade Federal de Pernambuco (UFPE)instacron:UFPETHUMBNAILTESE Felipe Ebert.pdf.jpgTESE Felipe Ebert.pdf.jpgGenerated Thumbnailimage/jpeg1213https://repositorio.ufpe.br/bitstream/123456789/33481/5/TESE%20Felipe%20Ebert.pdf.jpg9920968da7c60885a0d5f7454f4539b0MD55ORIGINALTESE Felipe Ebert.pdfTESE Felipe Ebert.pdfapplication/pdf4120877https://repositorio.ufpe.br/bitstream/123456789/33481/1/TESE%20Felipe%20Ebert.pdfd8ec94b04a3bc8e1b88c6852c7ba233bMD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repositorio.ufpe.br/bitstream/123456789/33481/2/license_rdfe39d27027a6cc9cb039ad269a5db8e34MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-82310https://repositorio.ufpe.br/bitstream/123456789/33481/3/license.txtbd573a5ca8288eb7272482765f819534MD53TEXTTESE Felipe Ebert.pdf.txtTESE Felipe Ebert.pdf.txtExtracted texttext/plain300031https://repositorio.ufpe.br/bitstream/123456789/33481/4/TESE%20Felipe%20Ebert.pdf.txtd70c5ac7721973ec61092d9144fb58ceMD54123456789/334812019-10-25 08:34:21.954oai:repositorio.ufpe.br:123456789/33481TGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKClRvZG8gZGVwb3NpdGFudGUgZGUgbWF0ZXJpYWwgbm8gUmVwb3NpdMOzcmlvIEluc3RpdHVjaW9uYWwgKFJJKSBkZXZlIGNvbmNlZGVyLCDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBQZXJuYW1idWNvIChVRlBFKSwgdW1hIExpY2Vuw6dhIGRlIERpc3RyaWJ1acOnw6NvIE7Do28gRXhjbHVzaXZhIHBhcmEgbWFudGVyIGUgdG9ybmFyIGFjZXNzw612ZWlzIG9zIHNldXMgZG9jdW1lbnRvcywgZW0gZm9ybWF0byBkaWdpdGFsLCBuZXN0ZSByZXBvc2l0w7NyaW8uCgpDb20gYSBjb25jZXNzw6NvIGRlc3RhIGxpY2Vuw6dhIG7Do28gZXhjbHVzaXZhLCBvIGRlcG9zaXRhbnRlIG1hbnTDqW0gdG9kb3Mgb3MgZGlyZWl0b3MgZGUgYXV0b3IuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTGljZW7Dp2EgZGUgRGlzdHJpYnVpw6fDo28gTsOjbyBFeGNsdXNpdmEKCkFvIGNvbmNvcmRhciBjb20gZXN0YSBsaWNlbsOnYSBlIGFjZWl0w6EtbGEsIHZvY8OqIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgYXV0b3JhaXMpOgoKYSkgRGVjbGFyYSBxdWUgY29uaGVjZSBhIHBvbMOtdGljYSBkZSBjb3B5cmlnaHQgZGEgZWRpdG9yYSBkbyBzZXUgZG9jdW1lbnRvOwpiKSBEZWNsYXJhIHF1ZSBjb25oZWNlIGUgYWNlaXRhIGFzIERpcmV0cml6ZXMgcGFyYSBvIFJlcG9zaXTDs3JpbyBJbnN0aXR1Y2lvbmFsIGRhIFVGUEU7CmMpIENvbmNlZGUgw6AgVUZQRSBvIGRpcmVpdG8gbsOjbyBleGNsdXNpdm8gZGUgYXJxdWl2YXIsIHJlcHJvZHV6aXIsIGNvbnZlcnRlciAoY29tbyBkZWZpbmlkbyBhIHNlZ3VpciksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIsIG5vIFJJLCBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vL2Fic3RyYWN0KSBlbSBmb3JtYXRvIGRpZ2l0YWwgb3UgcG9yIG91dHJvIG1laW87CmQpIERlY2xhcmEgcXVlIGF1dG9yaXphIGEgVUZQRSBhIGFycXVpdmFyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXN0ZSBkb2N1bWVudG8gZSBjb252ZXJ0w6otbG8sIHNlbSBhbHRlcmFyIG8gc2V1IGNvbnRlw7pkbywgcGFyYSBxdWFscXVlciBmb3JtYXRvIGRlIGZpY2hlaXJvLCBtZWlvIG91IHN1cG9ydGUsIHBhcmEgZWZlaXRvcyBkZSBzZWd1cmFuw6dhLCBwcmVzZXJ2YcOnw6NvIChiYWNrdXApIGUgYWNlc3NvOwplKSBEZWNsYXJhIHF1ZSBvIGRvY3VtZW50byBzdWJtZXRpZG8gw6kgbyBzZXUgdHJhYmFsaG8gb3JpZ2luYWwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBhIHRlcmNlaXJvcyBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2Ugb3MgZGlyZWl0b3MgZGUgb3V0cmEgcGVzc29hIG91IGVudGlkYWRlOwpmKSBEZWNsYXJhIHF1ZSwgbm8gY2FzbyBkbyBkb2N1bWVudG8gc3VibWV0aWRvIGNvbnRlciBtYXRlcmlhbCBkbyBxdWFsIG7Do28gZGV0w6ltIG9zIGRpcmVpdG9zIGRlCmF1dG9yLCBvYnRldmUgYSBhdXRvcml6YcOnw6NvIGlycmVzdHJpdGEgZG8gcmVzcGVjdGl2byBkZXRlbnRvciBkZXNzZXMgZGlyZWl0b3MgcGFyYSBjZWRlciDDoApVRlBFIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgTGljZW7Dp2EgZSBhdXRvcml6YXIgYSB1bml2ZXJzaWRhZGUgYSB1dGlsaXrDoS1sb3MgbGVnYWxtZW50ZS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBlc3NlIG1hdGVyaWFsIGN1am9zIGRpcmVpdG9zIHPDo28gZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRvIGRvY3VtZW50byBlbnRyZWd1ZTsKZykgU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVRlBFLCBkZWNsYXJhIHF1ZSBjdW1wcml1IHF1YWlzcXVlciBvYnJpZ2HDp8O1ZXMgZXhpZ2lkYXMgcGVsbyByZXNwZWN0aXZvIGNvbnRyYXRvIG91IGFjb3Jkby4KCkEgVUZQRSBpZGVudGlmaWNhcsOhIGNsYXJhbWVudGUgbyhzKSBub21lKHMpIGRvKHMpIGF1dG9yIChlcykgZG9zIGRpcmVpdG9zIGRvIGRvY3VtZW50byBlbnRyZWd1ZSBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZG8gcHJldmlzdG8gbmEgYWzDrW5lYSBjKS4KRepositório InstitucionalPUBhttps://repositorio.ufpe.br/oai/requestattena@ufpe.bropendoar:22212019-10-25T11:34:21Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE)false |
dc.title.pt_BR.fl_str_mv |
Understanding confusion in code reviews |
title |
Understanding confusion in code reviews |
spellingShingle |
Understanding confusion in code reviews EBERT, Felipe Engenharia de software Revisão de código |
title_short |
Understanding confusion in code reviews |
title_full |
Understanding confusion in code reviews |
title_fullStr |
Understanding confusion in code reviews |
title_full_unstemmed |
Understanding confusion in code reviews |
title_sort |
Understanding confusion in code reviews |
author |
EBERT, Felipe |
author_facet |
EBERT, Felipe |
author_role |
author |
dc.contributor.authorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/8344951848205980 |
dc.contributor.advisorLattes.pt_BR.fl_str_mv |
http://lattes.cnpq.br/7310046838140771 |
dc.contributor.author.fl_str_mv |
EBERT, Felipe |
dc.contributor.advisor1.fl_str_mv |
LIMA FILHO, Fernando José Castor de |
dc.contributor.advisor-co1.fl_str_mv |
SEREBRENIK, Alexander |
contributor_str_mv |
LIMA FILHO, Fernando José Castor de SEREBRENIK, Alexander |
dc.subject.por.fl_str_mv |
Engenharia de software Revisão de código |
topic |
Engenharia de software Revisão de código |
description |
LIMA FILHO, Fernando José Castor de, também é conhecido(a) em citações bibliográficas por: CASTOR FILHO, Fernando |
publishDate |
2019 |
dc.date.accessioned.fl_str_mv |
2019-09-23T18:00:43Z |
dc.date.available.fl_str_mv |
2019-09-23T18:00:43Z |
dc.date.issued.fl_str_mv |
2019-02-15 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/doctoralThesis |
format |
doctoralThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://repositorio.ufpe.br/handle/123456789/33481 |
dc.identifier.dark.fl_str_mv |
ark:/64986/0013000015jfm |
url |
https://repositorio.ufpe.br/handle/123456789/33481 |
identifier_str_mv |
ark:/64986/0013000015jfm |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
Attribution-NonCommercial-NoDerivs 3.0 Brazil http://creativecommons.org/licenses/by-nc-nd/3.0/br/ info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
Attribution-NonCommercial-NoDerivs 3.0 Brazil http://creativecommons.org/licenses/by-nc-nd/3.0/br/ |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal de Pernambuco |
dc.publisher.program.fl_str_mv |
Programa de Pos Graduacao em Ciencia da Computacao |
dc.publisher.initials.fl_str_mv |
UFPE |
dc.publisher.country.fl_str_mv |
Brasil |
publisher.none.fl_str_mv |
Universidade Federal de Pernambuco |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFPE instname:Universidade Federal de Pernambuco (UFPE) instacron:UFPE |
instname_str |
Universidade Federal de Pernambuco (UFPE) |
instacron_str |
UFPE |
institution |
UFPE |
reponame_str |
Repositório Institucional da UFPE |
collection |
Repositório Institucional da UFPE |
bitstream.url.fl_str_mv |
https://repositorio.ufpe.br/bitstream/123456789/33481/5/TESE%20Felipe%20Ebert.pdf.jpg https://repositorio.ufpe.br/bitstream/123456789/33481/1/TESE%20Felipe%20Ebert.pdf https://repositorio.ufpe.br/bitstream/123456789/33481/2/license_rdf https://repositorio.ufpe.br/bitstream/123456789/33481/3/license.txt https://repositorio.ufpe.br/bitstream/123456789/33481/4/TESE%20Felipe%20Ebert.pdf.txt |
bitstream.checksum.fl_str_mv |
9920968da7c60885a0d5f7454f4539b0 d8ec94b04a3bc8e1b88c6852c7ba233b e39d27027a6cc9cb039ad269a5db8e34 bd573a5ca8288eb7272482765f819534 d70c5ac7721973ec61092d9144fb58ce |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFPE - Universidade Federal de Pernambuco (UFPE) |
repository.mail.fl_str_mv |
attena@ufpe.br |
_version_ |
1815173010378719232 |