Please use this identifier to cite or link to this item: https://hdl.handle.net/10316/87868
Title: Software code complexity assessment using EEG features: Towards a new software engineering paradigm using biofeedback
Other Titles: Avaliação da complexidade do código de software usando características de EEG: Em direção a um novo paradigma de engenharia de software usando biofeedback
Authors: Medeiros, Júlio Cordeiro
Orientador: Teixeira, César Alexandre Domingues
Carvalho, Paulo Fernando Pereira de
Keywords: Processamento de Bio-sinais; Electroencefalograma; Biofeedback; Engenharia de Software; Bio-signal Processing; Electroencephalogram; Biofeedback; Software Engineering
Issue Date: 25-Sep-2019
Serial title, monograph or event: Software code complexity assessment using EEG features: Towards a new software engineering paradigm using biofeedback
Place of publication or event: CISUC
Abstract: O presente estudo foi desenvolvido no âmbito do projeto BASE, Biofeedback Augmented SoftwareEngineering (POCI - 01-0145 - FEDER-031581) que se encontra a decorrer, e que visa a monitorização das funções cognitivas do cérebro durante o desenvolvimento de código de software, de modo a detectar possíveis bugs que possam ocorrer devido a mudanças no estado emocional do programador. Mais especificamente, o objetivo deste estudo inicial é investigar a atividade cerebral durante a compreensão do código por meio da análise de sinais de Eletroencefalograma (EEG) adquiridos de vários voluntários e tentar estabelecer possíveis biomarcadores de EEG sensíveis a diferentes níveis de carga mental. O uso de EEG para esse fim é relevante, uma vez que os estudos existentes em detecção de bugs foram principalmente focados em técnicas de neuroimagem com base em Functional Magnetic Ressonance Imaging (fMRI), as quais apresentam desvantagens, como por exemplo, o desconforto para o sujeito e a impossibilidade de serem adquiridas em condições normais de programação.O presente estudo foi conduzido usando informação de 64 canais de EEG adquiridos de 30 participantes durante tarefas de compreensão de código. Os sujeitos foram submetidos a três ensaios diferentes, correspondentes a três tarefas de compreensão do código de diferente dificuldade. Os três níveis diferentes de complexidade de código considerados foram de acordo com cinco métricas de complexidade de software amplamente utilizadas na area de engenharia de software.Através de uma sequência de métodos de pré-processamento, artefatos foram identificados e removidos dos sinais de EEG, para posteriormente proceder-se à extração de caraterísticas lineares e não lineares. Assim, foi possível investigar a possibilidade de distinguir diferentes níveis de complexidade com base nas características do EEG. Para isso, foram utilizados diferentes tipos de modelos de classificação, binário ou multiclasse, através da combinação de quatro métodos de seleção/redução de caracteristicas com quatro classificadores diferentes.Considerando um modelo multiclasse utilizando Principal Component Analysis (PCA) e o classificador Support Vector Machine (SVM) com kernel linear, obteve-se um F-Measure de 93.60% para a complexidade do código fácil, 50.60% para a complexidade do código intermédio, 47.09% para a complexidade do código avançada e 94.42% para a tarefa de controlo (leitura de texto). Estes resultados revelam uma evidência de saturação do esforço mental com o aumento da complexidade do código e também sugerem que as métricas de complexidade de código usadas actualmente não captam a carga cognitiva, e por isso podem não ser a melhor abordagem para avaliar o risco de bugs nos códigos.A partir da análise realizada neste estudo, também se verificou que as características relacionadas com as atividades Teta, Alfa e Beta foram as mais comuns entre as características selecionadas com maior poder de discriminação da complexidade das tarefas. No que respeita aos canais que contribuíram com mais informação, eles estavam localizados predominantemente na região frontal (principalmente em Fz, F2 e FCz), centro-parietal (principalmente em CPZ e CP2) e parietal (principalmente em Pz). Estes resultados estão de acordo com as características e regiões (lobos frontal e parietal) relatadas em estudos relacionados, como sendo as mais relevantes para medir a carga cognitiva nas áreas investigação de compreensão de código e da carga de trabalho mental.Por fim, como estudo preliminar, utilizando duas das características mais discriminantes, foi explorada a possibilidade de realizar-se uma análise espaço-temporal, a fim de identificar áreas que exibiram um esforço mental elevado durante a tarefa de código que está sendo realizado. Estas áreas foram comparados com (i) os aglomerados dos dados do Eye tracking; (ii) as regiões críticas apontadas por profissionais especializados; e (iii) outros dois biosinais (Variabilidade da Frequência Cardíaca e Pupilografia).
This study was developed on behalf of the on-going project BASE, Biofeedback Augmented Software Engineering (POCI - 01-0145 - FEDER- 031581), which aims at monitoring cognitive functions of the brain during code development to detect possible bugs that might occur due to shifts in the emotional condition of the subject. Specifically, the goal of this initial study is to investigate the brain activity during code comprehension through the analysis of Electroencephalogram (EEG) signals acquired from multiple volunteers and try to establish possible EEG biomarkers sensitive to different levels of mental workload. The use of EEG for this purpose is relevant, since the existing studies in bug detection were mostly focused on neuroimaging techniques based on fMRI, which have disadvantages, such as subject discomfort and impossibility to be acquired in normal programming condition.The study reported herein was conducted using information from 64 channels of EEG recorded from 30 subjects during code comprehension tasks. The subjects were submitted to three different trials corresponding to three different difficulty code comprehension tasks. The three different code complexity levels considered were according to five software complexity metrics widely used. Through a sequence of preprocessing methods, artifacts were identified and removed from EEG signals for further extraction of linear and nonlinear features. Then, the possibility to distinguish different levels of complexity based on EEG features was investigated. For this purpose, different types of classification models were considered, either binary or multiclass, by combining four different feature selection/reduction methods with four different classifiers. Considering a multiclass model using Principal Component Analysis (PCA) and a Support Vector Machine (SVM) classifier with linear kernel, it was obtained a F-Measure of 93.60% for code complexity easy, 50.60% for code complexity intermediate, 47.09% for code complexity advanced and 94.42% for the control (reading) task. These results reveals an evidence of mental effort saturation as code complexity increases and also suggest that current code complexity metrics do not capture cognitive load and might not be the best approach to assess bug risk.From the analysis, it was also found that the features related with the Theta, Alpha and Beta activity were the most common among the selected features with highest discriminative power. Concerning the channels which contributed with more information, they were located predominantly in frontal (mainly in Fz, F2 and FCz), central-parietal (mainly in CPz and CP2) and parietal (mainly in Pz) regions. These findings are in agreement with the features and regions (Frontal and Parietal Lobes) more relevant to cognitive load in the areas of mental workload and code comprehension, reported in related studies.Finally, as a preliminary study, using two of the most discriminant features, it was explored the possibility of a space-temporal analysis in order to spot areas that exhibited a higher mental effort during the code task being performed. These areas were compared to the (i) clusters of Eye tracking data; (ii) critical regions pointed by expert professionals; and (iii) other two biosignals (Heart Rate Variability and Pupillography).
Description: Dissertação de Mestrado Integrado em Engenharia Biomédica apresentada à Faculdade de Ciências e Tecnologia
URI: https://hdl.handle.net/10316/87868
Rights: embargoedAccess
Appears in Collections:UC - Dissertações de Mestrado

Files in This Item:
File Description SizeFormat
Júlio Medeiros MIEB.pdf7.59 MBAdobe PDFView/Open
Show full item record

Page view(s)

243
checked on Mar 26, 2024

Download(s)

319
checked on Mar 26, 2024

Google ScholarTM

Check


This item is licensed under a Creative Commons License Creative Commons