Detecting logical errors in Haskell

dc.creatorVanessa Cristiny Rodrigues Vasconcelos
dc.date.accessioned2021-06-10T16:49:35Z
dc.date.accessioned2025-09-08T23:42:28Z
dc.date.issued2021-02-19
dc.description.abstractCompreender 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.
dc.description.sponsorshipCNPq - Conselho Nacional de Desenvolvimento Científico e Tecnológico
dc.identifier.urihttps://hdl.handle.net/1843/36445
dc.languageeng
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Restrito
dc.subjectComputação
dc.subjectDepuração na computação
dc.subjectHaskell (Linguagem de programação de computador)
dc.subjectProgramação funcional (Computação)
dc.subject.otherDebug
dc.subject.otherFault localization
dc.subject.otherFunctional programming
dc.subject.otherHaskell
dc.titleDetecting logical errors in Haskell
dc.title.alternativeDetecção de erros lógicos em Haskell
dc.typeDissertação de mestrado
local.contributor.advisor1Mariza Andrade da Silva Bigonha
local.contributor.advisor1Latteshttp://lattes.cnpq.br/6660127471891321
local.contributor.referee1Leonardo Vieira dos Santos Reis
local.contributor.referee1Marco Túlio de Oliveira Valente
local.contributor.referee1Vladimir Oliveira Di Iorio
local.creator.Latteshttp://lattes.cnpq.br/3038586793936329
local.description.embargo2022-02-19
local.description.resumoUnderstanding 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.
local.publisher.countryBrasil
local.publisher.departmentICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
local.publisher.initialsUFMG
local.publisher.programPrograma de Pós-Graduação em Ciência da Computação

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
Detecting Logical Errors.pdf
Tamanho:
1.65 MB
Formato:
Adobe Portable Document Format

Licença do pacote

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
license.txt
Tamanho:
2.07 KB
Formato:
Plain Text
Descrição: