Use este identificador para citar ou linkar para este item: http://hdl.handle.net/1843/36445
Tipo: Dissertação
Título: Detecting logical errors in Haskell
Título(s) alternativo(s): Detecção de erros lógicos em Haskell
Autor(es): Vanessa Cristiny Rodrigues Vasconcelos
Primeiro Orientador: Mariza Andrade da Silva Bigonha
Primeiro membro da banca : Leonardo Vieira dos Santos Reis
Segundo membro da banca: Marco Túlio de Oliveira Valente
Terceiro membro da banca: Vladimir Oliveira Di Iorio
Resumo: 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.
Assunto: Computação
Depuração na computação
Haskell (Linguagem de programação de computador)
Programação funcional (Computação)
Idioma: eng
País: Brasil
Editor: Universidade Federal de Minas Gerais
Sigla da Instituição: UFMG
Departamento: ICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
Curso: Programa de Pós-Graduação em Ciência da Computação
Tipo de Acesso: Acesso Restrito
URI: http://hdl.handle.net/1843/36445
Data do documento: 19-Fev-2021
Término do Embargo: 19-Fev-2022
Aparece nas coleções:Dissertações de Mestrado

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
Detecting Logical Errors.pdf1.69 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.