Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/36445
Type: Dissertação
Title: Detecting logical errors in Haskell
Other Titles: Detecção de erros lógicos em Haskell
Authors: Vanessa Cristiny Rodrigues Vasconcelos
First Advisor: Mariza Andrade da Silva Bigonha
First Referee: Leonardo Vieira dos Santos Reis
Second Referee: Marco Túlio de Oliveira Valente
Third Referee: Vladimir Oliveira Di Iorio
Abstract: Understanding and using the functional paradigm is a challenge for many programmers. Looking for logical errors in code may take a lot of a developer’s time when a program grows in size. In order to facilitate both processes, we designed and implemented a tool called HaskellFL, which from code containing a logical error in Haskell and some test cases, uses a couple of fault localization techniques to calculate a statistical score for each expression executed during a function call. This score represents the degree of probability that each expression is causing the unexpected behavior of the program. The Haskell’s subset used in this project is sufficiently expressive for those who are studying Functional Programming to get immediate help debugging their code, and thus answer questions about key concepts associated to the functional paradigm. In addition, this subset can be easily extended to encompass the entire Haskell 2010 grammar. We evaluate the effectiveness of two fault localization techniques in the literature, Tarantula and Ochiai, in the context of Haskell programs. Our results showed that Ochiai method was more effective than Tarantula. We tested HaskellFL against Functional Programming assignments submitted by students enrolled at the Functional Programming class at Federal University of Minas Gerais and against exercises from the Exercism Haskell track that are publicly available on GitHub. Furthermore, we used the EXAM score to evaluate our tool effectiveness, and our results showed that HaskellFL reduced the effort needed to locate an error for all tested scenarios.
Abstract: Compreender e utilizar o paradigma funcional é um desafio para diversos programadores. Procurar por erros lógicos em um código pode tomar muito tempo de um desenvolvedor quando o programa aumenta de tamanho. Para facilitar ambos processos, projetamos e implementamos uma ferramenta chamada HaskellFL, que a partir de um código contendo um erro lógico em Haskell e alguns casos de teste, utiliza técnicas de localização de erro para calcular uma pontuação estatística para cada expressão executada durante a chamada de uma função. Esta pontuação representa o grau de probabilidade de cada expressão estar provocando o comportamento inesperado do programa. O subconjunto de Haskell utilizado neste projeto é suficientemente expressivo para quem está estudando Programação Funcional conseguir auxílio imediato na depuração do seu código, e assim sanar dúvidas a respeito de conceitos-chave associados ao paradigma funcional. Adicionalmente, este subconjunto pode ser facilmente estendido para englobar toda a gramática de Haskell 2010. Avaliamos a eficácia de duas técnicas de localização de falhas na literatura, Tarantula e Ochiai, no contexto de programas Haskell. Nossos resultados mostraram que o método Ochiai foi mais efetivo que o método Tarantula. Nós testamos HaskellFL com trabalhos dos estudantes de Programação Funcional de uma turma da Universidade Federal de Minas Gerais, em conjunto com exercícios da trilha de Haskell do site Exercism, que foram resolvidos e estão disponíveis publicamente no GitHub. Além disso, utilizamos a métrica EXAM para avaliar a eficácia da nossa ferra- menta, e nossos resultados mostraram que HaskellFL ajudou a diminuir o esforço de um programador ao procurar por um erro em um código Haskell em todos os cenários testados.
Subject: Computação
Depuração na computação
Haskell (Linguagem de programação de computador)
Programação funcional (Computação)
language: eng
metadata.dc.publisher.country: Brasil
Publisher: Universidade Federal de Minas Gerais
Publisher Initials: UFMG
metadata.dc.publisher.department: ICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
metadata.dc.publisher.program: Programa de Pós-Graduação em Ciência da Computação
Rights: Acesso Restrito
URI: http://hdl.handle.net/1843/36445
Issue Date: 19-Feb-2021
metadata.dc.description.embargo: 19-Feb-2022
Appears in Collections:Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
Detecting Logical Errors.pdf1.69 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.