Tese
CogEff: uma abordagem para mensurar a carga cognitiva de desenvolvedores em tarefas de compreensão de código
Fecha
2022-03-31Autor
Gonçales, Lucian José
Resumen
Cognitive load refers to the mental effort that users spend when performing cognitive tasks such as interpreting software artifacts with different levels of abstraction. Cognitive load in software engineering is important due to the potential for considering human factors through physiological signals while users are in their work routine. For instance, developers spend most of their time understanding code while working. Measuring the cognitive load using psychophysiological indicators would enable a coherent correlation between the developers’ perception and the code comprehension tasks. While psychophysiological indicators instantly reflect user stimuli, traditional metrics consolidate after comprehension tasks finish. Therefore, literature recognizes that cognitive load approaches have high predictive potential in software engineering tasks. Researchers have investigated the cognitive load in software engineering by combining various approaches from diferente psychophysiological devices. For example, from the electroencephalogram (EEG) researchers have already directly used approaches such as as the Assymetry Ratio (ASR), the Event-Related Desyncronization (ERD), and the band power of the alpha (α), beta (β), delta (δ), and theta (θ) waves. Using the fMRI sensor, researchers also used the Blood Oxygen Level Dependent (BOLD) to highlight which brain areas are active during code comprehension tasks. However, despite these techniques’ relation to cognitive load, an approach to measure cognitive load in code comprehension tasks is still lacking. Thus, there is a series of problems identified in this area: (1) Absence of a state-of-the-art classification on measures of cognitive load in software engineering; (2) Lack of approach to measure cognitive load in software engineering; (3) Absence of correlation analysis of approaches used to measure cognitive load in code comprehension tasks; (4) Lack of evaluation of effectiveness for using EEG data to classify code comprehension using machine learning techniques. Therefore, this research aims to: (1) Conduct a systematic mapping study to classify research on measures of cognitive load in software engineering; (2) Develop a technique to measure cognitive load through EEG data in software comprehension tasks, named as CogEff; (3) Analyze the correlation between traditional EEG approaches, and the CogEff approach with code comprehension tasks; (4) Analyze the effectiveness of classifying code comprehension trained with traditional EEG approaches. The main results are: (1) Based on the classification, 37% (23/63) of the studies adopted multimodal devices; and 59% (37/63) of the studies analyzed the cognitive load in programming tasks, such as code comprehension; (2) CogEff approach has the potential to measure cognitive load through EEG channel connectivity; (3) Correlation tests showed that traditional EEG approaches, and CogEff correlates with code comprehension; (4) The K-Nearest Neighbors classifier obtained an average f-measure of 86% to classify code comprehension based on EEG data.