Dissertação

{en_GB=Improving Software Fault Prediction Using a Data-Driven Approach} {} EVALUATED

{pt=No desenvolvimento de software, o processo de debugging é uma das tarefas mais dispendiosas no ciclo de vida de um projeto. A identificação manual de falhas em software, falhas estas que são fonte de erros e ineficiências, é necessariamente morosa e com propensão para existência de erros nesse processo. A solução para este problema é a automatização deste processo de diagnóstico. Esta abordagem resolve as dificuldades mencionadas anteriormente desde que tenha uma alta precisão ao identificar falhas. Existem diferentes ferramentas e técnicas que levam a cabo este diagnóstico, no entanto, negligenciam dados valiosos. Um exemplo pertinente são as várias revisões de ficheiros de código guardadas em sistemas de controlo de versões. A intuição leva-nos a analisar ficheiros que tenham sido alterados recentemente pois podem com maior probabilidade de conter falhas. A análise destes dados pode melhorar o processo de diagnóstico. Esta tese tem por objetivo descrever a implementação de uma solução neste domínio que tira partido de técnicas inovadoras de deep learning que aprendem as estruturas semântica de ficheiros por forma a classificá-los de forma eficiente. Nós desenvolvemos uma abordagem baseada em convolutional neural networks, uma subclasse de deep neural networks, que foi aplicada com sucesso no âmbito do processamento de imagens e a sua utilização pode ser interessante neste domínio. Esta solução segue uma linha data-driven, ou seja, uma estratégia em que os dados guiam as decisões tomadas pelo algoritmo., en=In software development, debugging is one of the most expensive tasks in the life cycle of a project. Repetitive, manual identification of faults in software, which are the source of errors and inefficiencies, is inherently time-consuming and error-prone. The solution to this problem is automated software diagnosis. This approach solves the issues mentioned previously as long as the accuracy of the diagnosis is credible. There are different tools and techniques which ensure this diagnosis, but they neglect valuable data. One example of such data are the revisions of source files stored in a revision control systems. Such data is replicated in repositories that are tagged and organized so that they can be mined and analyzed. Examples of this include the Bugs.jar dataset. This data can potentially improve the diagnostic process. This thesis aims to describe the implementation of a solution in this field that leverages innovative deep learning techniques to learn semantic structures of source files, in order to effectively learn to classify them. We develop an approach based on convolutional neural networks, a class of deep neural networks, that has been applied successfully on image processing and can be interesting to apply to this domain. This solution follows a data-driven approach, i.e. data as the principal factor to guide strategic decisions, with the aim to optimize a fault prediction algorithm that is able to learn effectively from source code.}
{pt=debugging; diagnóstico software; dados, en=debugging; software diagnosis; data}

Setembro 30, 2019, 15:0

Orientação

ORIENTADOR

Rui Filipe Lima Maranhão de Abreu

Departamento de Engenharia Informática (DEI)

Professor Associado