Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/36445
Full metadata record
DC FieldValueLanguage
dc.contributor.advisor1Mariza Andrade da Silva Bigonhapt_BR
dc.contributor.advisor1Latteshttp://lattes.cnpq.br/6660127471891321pt_BR
dc.contributor.referee1Leonardo Vieira dos Santos Reispt_BR
dc.contributor.referee2Marco Túlio de Oliveira Valentept_BR
dc.contributor.referee3Vladimir Oliveira Di Ioriopt_BR
dc.creatorVanessa Cristiny Rodrigues Vasconcelospt_BR
dc.creator.Latteshttp://lattes.cnpq.br/3038586793936329pt_BR
dc.date.accessioned2021-06-10T16:49:35Z-
dc.date.issued2021-02-19-
dc.identifier.urihttp://hdl.handle.net/1843/36445-
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.pt_BR
dc.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.pt_BR
dc.description.sponsorshipCNPq - Conselho Nacional de Desenvolvimento Científico e Tecnológicopt_BR
dc.languageengpt_BR
dc.publisherUniversidade Federal de Minas Geraispt_BR
dc.publisher.countryBrasilpt_BR
dc.publisher.departmentICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃOpt_BR
dc.publisher.programPrograma de Pós-Graduação em Ciência da Computaçãopt_BR
dc.publisher.initialsUFMGpt_BR
dc.rightsAcesso Restritopt_BR
dc.subjectDebugpt_BR
dc.subjectFault localizationpt_BR
dc.subjectFunctional programmingpt_BR
dc.subjectHaskellpt_BR
dc.subject.otherComputaçãopt_BR
dc.subject.otherDepuração na computaçãopt_BR
dc.subject.otherHaskell (Linguagem de programação de computador)pt_BR
dc.subject.otherProgramação funcional (Computação)pt_BR
dc.titleDetecting logical errors in Haskellpt_BR
dc.title.alternativeDetecção de erros lógicos em Haskellpt_BR
dc.typeDissertaçãopt_BR
dc.description.embargo2022-02-19-
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.