dc.creator.ID |
COSTA, J. A. S. |
pt_BR |
dc.creator.ID |
DA COSTA, JOSÉ ALDO SILVA. |
pt_BR |
dc.creator.ID |
DA COSTA, JOSÉ ALDO. |
pt_BR |
dc.creator.Lattes |
http://lattes.cnpq.br/3845232602852992 |
pt_BR |
dc.contributor.advisor1 |
GHEYI, Rohit. |
|
dc.contributor.advisor1ID |
GHEYI, R. |
pt_BR |
dc.contributor.advisor1ID |
Gheyi, Rohit. |
pt_BR |
dc.contributor.advisor1Lattes |
http://lattes.cnpq.br/2931270888717344 |
pt_BR |
dc.contributor.referee1 |
MASSONI, Tiago Lima. |
|
dc.contributor.referee1ID |
MASSONI, T. L. |
pt_BR |
dc.contributor.referee1ID |
Massoni, Tiago. |
pt_BR |
dc.contributor.referee1ID |
MASSONI, TIAGO LIMA. |
pt_BR |
dc.contributor.referee1Lattes |
http://lattes.cnpq.br/3563923906851611 |
pt_BR |
dc.contributor.referee2 |
ALMEIDA, Hyggo Oliveira de. |
|
dc.contributor.referee2ID |
ALMEIDA, Hyggo Oliveira de. |
pt_BR |
dc.contributor.referee2ID |
Almeida, Hyggo. |
pt_BR |
dc.contributor.referee2ID |
Almeida, Hyggo O. |
pt_BR |
dc.contributor.referee2Lattes |
http://lattes.cnpq.br/4993914550234923 |
pt_BR |
dc.contributor.referee3 |
ALVES, Vander Ramos. |
|
dc.contributor.referee3ID |
ALVES, Vander. |
pt_BR |
dc.contributor.referee3ID |
Alves, Vander. |
pt_BR |
dc.contributor.referee3ID |
ALVES, V. |
pt_BR |
dc.contributor.referee3Lattes |
http://lattes.cnpq.br/7500979195469357 |
pt_BR |
dc.contributor.referee4 |
LIMA FILHO, Fernando José Castor de. |
|
dc.contributor.referee4ID |
CASTOR FILHO, Fernando. |
pt_BR |
dc.contributor.referee4ID |
CASTOR, Fernando. |
pt_BR |
dc.contributor.referee4ID |
CASTORFILHO, F. |
pt_BR |
dc.contributor.referee4Lattes |
http://lattes.cnpq.br/7310046838140771 |
pt_BR |
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. |
pt_BR |
dc.publisher.country |
Brasil |
pt_BR |
dc.publisher.department |
Centro de Engenharia Elétrica e Informática - CEEI |
pt_BR |
dc.publisher.program |
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO |
pt_BR |
dc.publisher.initials |
UFCG |
pt_BR |
dc.subject.cnpq |
Ciência da Computação |
pt_BR |
dc.title |
Evaluating the impact of refactorings on the code comprehension of novices with eye tracking. |
pt_BR |
dc.date.issued |
2022-12-13 |
|
dc.description.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. |
pt_BR |
dc.identifier.uri |
http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/29470 |
|
dc.date.accessioned |
2023-04-25T14:29:51Z |
|
dc.date.available |
2023-04-25 |
|
dc.date.available |
2023-04-25T14:29:51Z |
|
dc.type |
Tese |
pt_BR |
dc.subject |
Refatoramentos |
pt_BR |
dc.subject |
Compreensão de código |
pt_BR |
dc.subject |
Eye tracking |
pt_BR |
dc.subject |
Comprensión de código |
pt_BR |
dc.subject |
Seguimiento ocular |
pt_BR |
dc.subject |
Refatorações |
pt_BR |
dc.subject |
Rastreamento ocular |
pt_BR |
dc.rights |
Acesso Aberto |
pt_BR |
dc.creator |
COSTA, José Aldo Silva da. |
|
dc.publisher |
Universidade Federal de Campina Grande |
pt_BR |
dc.language |
Eng |
pt_BR |
dc.title.alternative |
Avaliando o impacto de refatorações na compreensão de código de novatos com eye tracking. |
pt_BR |
dc.title.alternative |
Evaluación del impacto de las refactorizaciones en la comprensión de código de los novatos con seguimiento ocular. |
pt_BR |
dc.identifier.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 |
pt_BR |
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. |
pt_BR |