Provas de Doutoramento em Engenharia Informática “A Live Environment for Continuous Software Inspection and Refactoring”

Candidata:
Sara Filipa Couto Fernandes

Data, Hora e Local:
5 de maio de 2025, às 14:00, na Sala de Atos da Faculdade de Engenharia da Universidade do Porto

Presidente do Júri:
Doutor Rui Filipe Lima Maranhão de Abreu, Professor Catedrático da Faculdade de Engenharia da Universidade do Porto

Vogais:
Doutor Fabio Palomba, Assistant Professor of Software Engineering (SeSa) Lab, Department of Computer Science, University of Salerno, Itália;
Doutor António Manuel Ferreira Rito da Silva, Professor Associado, Departamento de Engenharia Informática, Instituto Superior Técnico da Universidade de Lisboa;
Doutor João Carlos Pascoal Faria, Professor Catedrático, Departamento de Engenharia Informática, Faculdade de Engenharia da Universidade do Porto;
Doutor Ademar Manuel Teixeira de Aguiar, Professor Associado, Departamento de Engenharia Informática, Faculdade de Engenharia da Universidade do Porto (Orientador).

A tese foi coorientada pelo Professor André Monteiro de Oliveira Restivo, Professor Associado do Departamento de Engenharia Informática da Faculdade de Engenharia da Universidade do Porto.

Resumo:

“Desenvolver software é complicado. Revê-lo, alterá-lo ou adaptá-lo é ainda mais difícil. Um mau design pode, rapidamente, levar à degradação do software, em que cada modificação pode criar uma codebase rígida e frágil. Neste sentido, evoluir um sistema destes torna-se quase impossível e a única solução é aplicar refactorings, no momento certo, para o melhorar. Na maioria das vezes, os programadores decidem refactorizar o seu código em etapas avançadas do desenvolvimento do mesmo, o que faz com que a maioria dos problemas nele presentes sejam já impossíveis de serem ignorados. Assim, os programadores tentam inspecionar o seu source code em busca de code smells e possíveis refactorings, de forma a trazer mais clareza ao design dos seus programas. É aqui que os programadores se apercebem que necessitam de ajuda, na forma de ferramentas específicas, que por vezes são excessivamente complexas e difíceis de usar. Apercebem-se, igualmente, que caso tivessem cuidado do seu código atempadamente talvez não tivessem estes problemas e poderiam continuar a desenvolver os seus sistemas sem quaisquer “dores de cabeça”. Neste processo de escrever e evoluir código, a metáfora de “mudança de chapéus” entre coding e a aplicação de refactorings deve ser adotada frequentemente, se não constantemente. Neste sentido, hipotisámos que um live refactoring environment, em que são apresentadas sugestões de refactoring em tempo real, é capaz de ajudar os programadores a estarem continuamente cientes das oportunidades de refactoring, tornando-as mais fáceis de executar quando ainda se tem o source code sob-controlo. Este ambiente de desenvolvimento tem em conta diversas métricas de qualidade de código, em tempo-real. Com esta abordagem, verificámos ser possível detetar code smells, fornecendo live feedback e apresentando visualmente possíveis candidatos de refactoring, de forma discreta e elegante para o programadores, sem estes terem de deixar o conforto do seu IDE. Mostramos que, ao aprimorar um IDE já existente recorrendo a mecanismos de refactoring, em tempo-real, podemos ajudar os programadores a compreender, adaptar e manter o seu software de uma forma mais controlada e rápida, permitindo-lhes produzir melhor código, com maior qualidade, mais rapidamente.
Neste sentido, com este trabalho, resultaram as seguintes contribuições: (i) uma extensa análise do estado da arte referente aos tópicos principais deste projeto, (ii) um live refactoring environment capaz de inspecionar o código para identificar, sugerir e aplicar possíveis refactorings, (iii) uma validação empírica composta por diferentes abordagens que nos permitiu obter dados que suportassem a veracidade da nossa abordagem e (iv) um conjunto de publicações científicas que resumem todo o trabalho efetuado. Embora este trabalho apresente contribuições significativas, existem áreas que podem ser futuramente exploradas. Podemos melhorar aspetos específicos do nosso Live Refactoring Environment, como incluir suporte para mais refactorings ou reduzir o tempo de processamento para código mais complexo. Além disso, trabalhos futuros podem envolver a previsão do impacto destes refactorings nas métricas de qualidade, podendo ainda haver o aperfeiçoamento da usabilidade da ferramenta, incluindo testes que incluam utilizadores daltónicos.”

Posted in Destaque, Notícias, Provas PhD, Uncategorized.