Um projeto liderado por Henrique Madeira, professor catedrático do Departamento de Engenharia Informática (DEI) da Faculdade de Ciências e Tecnologia da Universidade de Coimbra (FCTUC), demonstrou que é possível, através de ferramentas inteligentes, detetar se um programador está ou não a compreender o software que está a ler, verificar ou construir e, desta forma, ajudar a prevenir possíveis bugs (erros).
O “Base – Biofeedback Augmented Software Engineering” é um projeto interdisciplinar que agrega investigadores de vários domínios científicos, designadamente neurociências, biomédica e inteligência artificial e engenharia de software. Da parte das neurociências, a equipa, coordenada pelo Professor Miguel Castelo Branco, procura identificar as zonas do cérebro envolvidas no erro humano no contexto de produção de software, tentando perceber, por exemplo, se existe um padrão de ativação cerebral quando se descobre um bug.
Já o grupo de biomédica e inteligência artificial, coordenado pelo Professor Paulo de Carvalho, investiga processos não intrusivos de medir a carga cognitiva de programadores, bem como avaliar estados cognitivos de stress, distração ou fadiga de programadores. Por sua vez, a equipa do professor Henrique Madeira, de engenharia de software, é responsável por desenvolver novas ferramentas de apoio ao programador de software, isto é, ferramentas que consigam prever os próprios erros do programador.
Segundo Henrique Madeira, «o problema da falta de qualidade de software há muito que é investigado, mas não na perspetiva do elemento mais importante no processo da construção do software, o programador». Nesta linha de investigação, o projeto BASE já obteve alguns resultados tangíveis.
Um primeiro resultado foi demonstrar, de uma forma prática, que é possível «dotar o ambiente de desenvolvimento de software de novas funções para ajudar o programador, particularmente indicar o código que deve ser (re)visto com mais cuidado. A pessoa está a programar e a ferramenta vai marcando, a amarelo ou a vermelho, as zonas de código que devem ser revistas», explica o investigador.
A partir daqui, foi desenvolvida a iReview, uma ferramenta já patenteada, que avalia «a qualidade das reviews (revisões)» de um programador. Por exemplo, «um módulo de software é produzido por um autor, sendo depois revisto por outro elemento da equipa, que pode detetar erros e enviar de volta para o autor corrigir, ou pelo contrário, não se aperceber de possíveis bugs e enviar o módulo para produção. A interação entre quem programa e quem verifica é extremamente falível, e a iReview pretende especificamente identificar essas falhas», considera.
Em concreto, a iReview avalia a qualidade da revisão feita pelo revisor, indicando se a revisão deve ou não ser repetida. Caso sinalize a necessidade de repetição, são apontadas as zonas do código que têm de ser analisadas com mais atenção, explicando ainda a razão pela qual é necessária uma segunda revisão.
No âmbito do projeto, está também a ser desenvolvida a ferramenta iMind, que é uma «generalização» da iReview, idealizada com o objetivo de ajudar indivíduos a compreender conteúdos digitais, como, por exemplo, no estudo de uma língua estrangeira. «O processo é o mesmo, mas a ler um texto em vez de rever código de software. Por exemplo, se houver uma passagem que a pessoa não entenda no texto, a ferramenta indica de forma automática a tradução ou dá uma sugestão. Ainda estamos longe de atingir este resultado, mas pelo menos já provámos que a ferramenta consegue indicar se a pessoa entendeu um parágrafo ou não», afirma.
Para chegar a estes resultados, a equipa do BASE começou por estudar o elemento central do projeto, o programador, desde a parte da neurociência, porque é a nível mental que cometemos erros, até à manifestação dos mesmos a nível fisiológico, uma vez que essas reações se podem traduzir em ferramentas que ajudam os programadores.
Para tal, foram realizadas várias experiências com equipamentos sofisticados, envolvendo a participação de dezenas de voluntários. Essencialmente, os grupos de
programadores executavam tarefas típicas de engenharia de software. «Fizemos três tipos de experiências, recorrendo a ressonâncias magnéticas, eletroencefalogramas, equipamentos para o sistema nervoso autónomo, sensores cardíacos e rastreadores oculares, que permitiam, no fundo, recolher uma enorme quantidade de informação durante os momentos em que eles desempenhavam essas tarefas», descreve o investigador, que acredita que «os resultados deste projeto vão ter muito impacto, pelo menos o potencial de impacto é muito grande».