Please use this identifier to cite or link to this item: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/29470
Title: Evaluating the impact of refactorings on the code comprehension of novices with eye tracking.
Other Titles: Avaliando o impacto de refatorações na compreensão de código de novatos com eye tracking.
Evaluación del impacto de las refactorizaciones en la comprensión de código de los novatos con seguimiento ocular.
???metadata.dc.creator???: COSTA, José Aldo Silva da.
???metadata.dc.contributor.advisor1???: GHEYI, Rohit.
???metadata.dc.contributor.referee1???: MASSONI, Tiago Lima.
???metadata.dc.contributor.referee2???: ALMEIDA, Hyggo Oliveira de.
???metadata.dc.contributor.referee3???: ALVES, Vander Ramos.
???metadata.dc.contributor.referee4???: LIMA FILHO, Fernando José Castor de.
Keywords: Refatoramentos;Compreensão de código;Eye tracking;Comprensión de código;Seguimiento ocular;Refatorações;Rastreamento ocular
Issue Date: 13-Dec-2022
Publisher: Universidade Federal de Campina Grande
Citation: COSTA, José Aldo Silva da. Evaluating the impact of refactorings on the code comprehension of novices with eye tracking. 2023. 222 fl. Tese (Doutorado 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, Campina Grande, Paraíba, Brasil, 2023. Disponível em: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/29470
???metadata.dc.description.resumo???: A compreensao do código é fundamental para a manutenção e evolução do software, por em, pode ser prejudicada por problemas estruturais no código. Para resolver os problemas es- truturais no código e torna-lo mais fácil de ler e entender, os desenvolvedores costumam usar refatoramentos. Um refatoramento e uma técnica disciplinada de reestruturação do código que visa melhorar sua estrutura interna preservando seu comportamento. No entanto, o estado-da-arte sobre o entendimento do impacto de refatoramentos na compreensao do ̃ código necessita de resultados conclusivos e detalhes quantitativos/qualitativos sobre como ́ e o porque de possıveis correlações. Enquanto alguns estudos encontraram um impacto di- ̃ vergente de refatoramentos na compreensão do código, outro descobriu que certos refatora- ́ mentos levaram a introdução de mais problemas estruturais. Com o objetivo de investigar o impacto das refatoramentos na compreensão do código, realizamos três estudos controlados com rastreio ocular: o primeiro sobre o impacto de atomos de confusão clarificados com 32 novatos em Python, o segundo sobre o impacto do refatoramento Extrair Metodo com 32 no- vatos em Java, e o terceiro sobre o impacto das anotac ̧oes ̃ #ifdef com 64 majoritariamente novatos na linguagem C. Alem de usar varios criterios como tempo, numero de tentativas ́ e opiniões, medimos o esforço visual dos sujeitos com rastreamento ocular por meio da ̃ duração da fixação, contagem de fixações e contagem de regressões. Em nossos resultados, ̃ a versão de código clarificada de um dos átomos reduziu o tempo em 38,6% e o número ́ de tentativas de resposta em 28%. Alem disso, observamos 47,3% menos regressões hori- zontais na região do átomo facilitando sua leitura. O uso do refatoramento Extrair Método apresentou uma redução significativa no tempo de duas tarefas, que variou de 70% a 78,8%. Observamos um aumento na acuracia de três tarefas, que variou de 20% a 34,4%. Os su- jeitos resolveram essas tarefas com o Extrair Método voltando visualmente no código com ́ 74,4% a 84,6 % menos frequência comparado ao Inline Método. No contexto das anotações #ifdef, um dos refatoramentos adiciona uma variável extra e duas linhas extras de código, o que e apenas um pequeno impacto na métrica Linhas de Código (LOC), mas apresentou reduções na região modificada em 46,9% no tempo, 44,7% na duração da fixação, 48,4% na contagem de fixação e 60,5% na contagem de regressões. Esses resultados contribuem para conscientizar educadores sobre certos refatoramentos e seu potencial para facilitar ou difi- cultar a compreensão de código de novatos em Python, Java e C. Praticantes e designers de linguagem de programação devem ser mais cuidadosos ao usar ou propor refatoramentos que possam prejudicar a capacidade dos novatos de entender o código. Para os pesquisadores, esses resultados mostram o potencial das métricas visuais para revelar um impacto de refa- toramentos que não podem ser capturados por métricas estáticas de código. linguagem de programação devem ser mais cuidadosos ao usar ou propor refatoramentos que possam perjudicar a capacidade dos novatos de entender o código. Para los pesquisadores, esses resultados mostram o potencial das métricas visuais para revelar um impacto de refa- toramentos que não podem ser capturados por métricas estáticas de código.
Abstract: Code comprehension is crucial for software maintenance and evolution, however, it can be hindered by structural problems in the code. To address the structural problems in the code and make it easier to read and understand, developers often use refactorings. Refactoring is a disciplined technique for restructuring the code that aims to improve its internal structure preserving its behavior. However, the state-of-the-art on understanding the impact of refac- torings on code comprehension lacks conclusive results and quantitative/qualitative details on how and why of possible correlations. While some studies found a divergent impact of refactorings on code comprehension, another found that certain refactorings led to the intro- duction of more structural problems. Aiming to further investigate the impact of refactorings on code comprehension, we conduct three controlled studies with eye tracking: the first one on the impact of clarified atoms of confusion with 32 novices in Python, the second one on the impact of Extract Method refactoring with 32 novices in Java, and the third one on the impact of #ifdef annotations with 64 majoritarily novices in the C language. Besides using multiple criteria such as time, the number of attempts, and opinions, we measured the visual effort of the subjects with eye tracking through fixation duration, fixations count, and regressions count. In our results, the clarified version of the code with an atom reduced the time to the extent of 38.6% and the number of answer attempts by 28%. In addition, we observed 47.3% fewer horizontal regressions count in the atom region, making its reading easier. The use of the Extract Method refactoring presented a significant reduction in the time of two tasks, which varied from 70% to 78.8%. We observed an increase in the accu- racy of three tasks, which varied from 20% to 34.4%. The subjects solved these tasks with the Extract Method going back visually in the code 74.4% to 84.6% less often compared to the Inline Method. In the context of #ifdef annotations, one of the refactorings adds one extra variable and two extra lines of code, which is only a small impact on the metric Lines of Code (LOC), but it presented reductions in the modified region by 46.9% in the time, 44.7% in the fixation duration, 48.4% in the fixation count, and 60.5% in the regressions count. These results raise educators’ awareness about certain refactorings and their potential to ease or hinder the code comprehension for novices in Python, Java, and C. Practitioners and language designers should be more careful when using or proposing refactorings that could possibly impair the novices’ abilities to understand the code. For researchers, these results show the potential of visual metrics to reveal an impact of refactorings that cannot be captured by static code metrics.
???metadata.dc.description.resumen???: La comprensión del código es fundamental para la manutención y la evolución del software, por ejemplo, pode ser perjudicado por problemas estruturais no código. Para resolver os problemas es- truturais no código e torna-lo mais fácil de ler e entender, os desenvolvedores costumam usar refatoramentos. Um refatoramento e uma técnica disciplinada de reestruturação do código que visa melhorar sua estrutura interna preservando seu comportamento. No entanto, o estado-da-arte sobre o entendimento do impacto de refatoramentos na compreensao do ̃ código necessita de resultados conclusivos e detalhes quantitativos/qualitativos sobre como ́ e o porque de possıveis correlações. Enquanto alguns estudos encontraram um impacto di- ̃ vergente de refatoramentos na comprensão do código, outro descobriu que certos refatora- ́ mentos levaram a introducção de mais problemas estruturais. Como objetivo de investigar impacto das refatoramentos na comprensão do código, realizamos três estudos controlados com rastreio ocular: o primeiro sobre o impact of atomos de confusão clarificados com 32 novatos em Python, o segundo sobre o impacto do refatoramento Extrair Metodo com 32 no- vatos em Java, e o tercero sobre el impacto das anotac ̧oes ̃ #ifdef com 64 mayoritariamente novatos na linguagem C. Alem de usar varios criterios como tempo, numero de tentativas ́ e opiniões, medimos o esforço visual dos sujeitos com rastreamento ocular por meio da ̃ duração da fixação, contagem de fixações y contagem de regressões. Em nossos resultados, ̃ a versão de código clarificada de um dos ́ atomos reduziu o tempo em 38,6% e o número ́ de tentativas de respuesta em 28%. Alem disso, observamos 47,3% menos regressões hori- zontais na região do atomo facilitando sua leitura. O uso do refatoramento Extrair Método apresentou uma redução significativa no tempo de duas tarefas, que variou de 70% a 78,8%. Observamos um aumento na acuracia de três tarefas, que variou de 20% a 34,4%. Os su- jeitos resolveram essas tarefas com o Extrair Método voltando visualmente no código com ́ 74,4% a 84,6 % menos frecuencia comparada con Inline Método. No contexto das anotações #ifdef, um dos refatoramentos adiciona uma variável extra e duas linhas extras de código, o que apenas tiene un pequeño impacto en las líneas de código métricas (LOC), más presente reducciones en la región modificada en 46,9% sin tempo, 44,7% sobre la duración de la fijación, 48,4% sobre Contagem de fixação y 60,5% na contagem de regressões. Esses resultados contribuyen para conscientizar educadores sobre certos refatoramentos y seu potencial para facilitar ou difi- cultar una comprensión de código de novatos en Python, Java y C. Praticantes y diseñadores de linguagem de programação devem ser mais cuidadosos ao usar ou propor refatoramentos que possam perjudicar a capacidade dos novatos de entender o código. Para los pesquisadores, esses resultados mostram o potencial das métricas visuais para revelar um impacto de refa- toramentos que não podem ser capturados por métricas estáticas de código.
Keywords: Refatoramentos
Compreensão de código
Eye tracking
Comprensión de código
Seguimiento ocular
Refatorações
Rastreamento ocular
???metadata.dc.subject.cnpq???: Ciência da Computação
URI: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/29470
Appears in Collections:Doutorado em Ciência da Computação.

Files in This Item:
File Description SizeFormat 
JOSÉ ALDO SILVA DA COSTA - TESE PPGCC 2022.pdfJosé Aldo Silva da Costa - TESE PPGCC 20233.52 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.