Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software

Detalhes bibliográficos
Autor(a) principal: Campos, Eduardo Cunha
Data de Publicação: 2019
Tipo de documento: Tese
Idioma: por
Título da fonte: Repositório Institucional da UFU
Texto Completo: https://repositorio.ufu.br/handle/123456789/25072
http://dx.doi.org/10.14393/ufu.te.2019.924
Resumo: O desenvolvimento moderno de programas é inseparável do uso das Interfaces de Programação de Aplicativos (APIs). No entanto, vários estudos mostraram que aprender e lembrar como usar as APIs é difícil para os desenvolvedores de software devido à documentação inadequada de algumas APIs. Os últimos anos testemunharam o surgimento e a crescente popularidade de sítios de mídias sociais relacionados ao desenvolvimento de programas, como o Stack Overflow, o DaniWeb e o Quora. A informação disponível nesses sítios é uma tendência importante no suporte de atividades relacionadas ao desenvolvimento e depuração de programas. Para lidar com o problema da introdução de erros relacionados com o uso incorreto da API por parte do desenvolvedor, foi proposta uma abordagem que recomenda posts do Stack Overflow que podem conter a correção destes erros. Todavia, esta abordagem recebe como entrada um trecho de código suspeito de conter um erro. Para avaliar esta abordagem, foi construído um benchmark contendo 30 trechos de código com potenciais API-usage-related bugs escritos nas linguagens Java e JavaScript extraídos do site Open Hub Code Search. Os resultados de recomendação mostraram que foram encontrados nos top-10 posts recomendados a correção para 66,67% dos trechos de código Java e 40% dos trechos de código JavaScript presentes no benchmark. Além disso, esta abordagem superou os motores de busca Google e FaCoY na recomendação de correções para esta categoria de erros de software. Para auxiliar os desenvolvedores durante alguma tarefa de programação com API, foi proposta uma outra abordagem denominada Lucene+Score+How-to que recomenda somente pares Q&A do Stack Overflow pertencentes à categoria "How-to" a partir de uma consulta feita em linguagem natural pelo usuário. Para avaliar esta abordagem, foram conduzidos experimentos envolvendo 35 tarefas de programação extraídas aleatoriamente de livros de receitas de 3 tópicos amplamente utilizados pela comunidade de desenvolvimento de software: Swing (Java), Boost (C++) e LINQ (C#). Os resultados de recomendação desta abordagem mostraram que, para 77,14% das tarefas de programação analisadas, pelo menos um par Q&A recomendado provou ser útil para a solução da tarefa alvo.
id UFU_56ef6793a7ce02d8fb6e0eae9bca42b4
oai_identifier_str oai:repositorio.ufu.br:123456789/25072
network_acronym_str UFU
network_name_str Repositório Institucional da UFU
repository_id_str
spelling 2019-05-08T16:31:03Z2019-05-08T16:31:03Z2019-04-12CAMPOS, Eduardo Cunha. Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software. 2019. 144 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Uberlândia, Uberlândia, 2019. Disponível em: http://dx.doi.org/10.14393/ufu.te.2019.924https://repositorio.ufu.br/handle/123456789/25072http://dx.doi.org/10.14393/ufu.te.2019.924O desenvolvimento moderno de programas é inseparável do uso das Interfaces de Programação de Aplicativos (APIs). No entanto, vários estudos mostraram que aprender e lembrar como usar as APIs é difícil para os desenvolvedores de software devido à documentação inadequada de algumas APIs. Os últimos anos testemunharam o surgimento e a crescente popularidade de sítios de mídias sociais relacionados ao desenvolvimento de programas, como o Stack Overflow, o DaniWeb e o Quora. A informação disponível nesses sítios é uma tendência importante no suporte de atividades relacionadas ao desenvolvimento e depuração de programas. Para lidar com o problema da introdução de erros relacionados com o uso incorreto da API por parte do desenvolvedor, foi proposta uma abordagem que recomenda posts do Stack Overflow que podem conter a correção destes erros. Todavia, esta abordagem recebe como entrada um trecho de código suspeito de conter um erro. Para avaliar esta abordagem, foi construído um benchmark contendo 30 trechos de código com potenciais API-usage-related bugs escritos nas linguagens Java e JavaScript extraídos do site Open Hub Code Search. Os resultados de recomendação mostraram que foram encontrados nos top-10 posts recomendados a correção para 66,67% dos trechos de código Java e 40% dos trechos de código JavaScript presentes no benchmark. Além disso, esta abordagem superou os motores de busca Google e FaCoY na recomendação de correções para esta categoria de erros de software. Para auxiliar os desenvolvedores durante alguma tarefa de programação com API, foi proposta uma outra abordagem denominada Lucene+Score+How-to que recomenda somente pares Q&A do Stack Overflow pertencentes à categoria "How-to" a partir de uma consulta feita em linguagem natural pelo usuário. Para avaliar esta abordagem, foram conduzidos experimentos envolvendo 35 tarefas de programação extraídas aleatoriamente de livros de receitas de 3 tópicos amplamente utilizados pela comunidade de desenvolvimento de software: Swing (Java), Boost (C++) e LINQ (C#). Os resultados de recomendação desta abordagem mostraram que, para 77,14% das tarefas de programação analisadas, pelo menos um par Q&A recomendado provou ser útil para a solução da tarefa alvo.Modern-day software development is inseparable from the use of the Application Programming Interfaces (APIs). However, several studies have shown that learning and remembering how to use APIs is difficult for software developers due to inadequate documentation of some APIs. Recent years have witnessed the emergence and growing popularity of social media sites related to software development, such as Stack Overflow, DaniWeb and Quora. The information available on these sites is one important trend in supporting activities related to software development and debugging. In order to address the problem of introducing errors related to incorrect use of the API by the developer, an approach has been proposed which recommends posts from Stack Overflow that may contain the correction of these errors. However, this approach receives as input a code snippet suspected of containing an error. To evaluate this approach, a benchmark was constructed containing 30 code excerpts with potential API-usage-related bugs written in the Java and JavaScript programming languages extracted from the Open Hub Code Search site. The recommendation results showed that 66.67% of Java excerpts with potential API-usage-related bugs had their fixes found in the top-10 query results. Considering JavaScript excerpts, fixes were found in the top-10 results for 40% of them. Moreover, this approach outperformed the Google and FaCoY search engines in recommending fixes for this category of software errors. We have proposed an approach called Lucene+Score+How-to to assist developers during some programming task with a given API. This approach recommends only Q&A pairs from Stack Overflow belonging to the "How-to" category based on a query (list of terms) made in natural language by the user. We conducted experiments to evaluate the recommendation strategy. The programming problems used in the experiments were extracted randomly from cookbooks for three topics widely used by the software development community: Swing (Java), Boost (C++) and LINQ (C#). The results have shown that for 27 of the 35 (77.14%) activities, at least one recommended pair proved to be useful to the target programming problem.CAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível SuperiorTese (Doutorado)porUniversidade Federal de UberlândiaPrograma de Pós-graduação em Ciência da ComputaçãoBrasilCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARESabedoria da multidãoDepuração com a multidãoTarefas de uso da APIWisdom of the CrowdDebugging with the crowdAPI usage tasksComputaçãoSoftware fatores humanosSoftware desenvolvimentoInterface de programação de aplicaçõesRecomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de softwareRecommending knowledge available in Q&A sites for aiding software development and debugginginfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisMaia, Marcelo de AlmeidaHora, André CavalcanteLima Filho, Fernando José Castor deMatias Júnior, RivalinoFernandes, Henrique Coelhohttp://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4350860Z5Campos, Eduardo Cunha144info:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFUinstname:Universidade Federal de Uberlândia (UFU)instacron:UFUORIGINALRecomendacaoConhecimentoDisponivel.pdfRecomendacaoConhecimentoDisponivel.pdfapplication/pdf10168963https://repositorio.ufu.br/bitstream/123456789/25072/1/RecomendacaoConhecimentoDisponivel.pdfee9081a66ec932c566603ed8fa59cc7fMD51LICENSElicense.txtlicense.txttext/plain; charset=utf-81792https://repositorio.ufu.br/bitstream/123456789/25072/2/license.txt48ded82ce41b8d2426af12aed6b3cbf3MD52TEXTRecomendacaoConhecimentoDisponivel.pdf.txtRecomendacaoConhecimentoDisponivel.pdf.txtExtracted texttext/plain330949https://repositorio.ufu.br/bitstream/123456789/25072/3/RecomendacaoConhecimentoDisponivel.pdf.txt7e87887961b9b2375c789d7e7ebe8765MD53THUMBNAILRecomendacaoConhecimentoDisponivel.pdf.jpgRecomendacaoConhecimentoDisponivel.pdf.jpgGenerated Thumbnailimage/jpeg1361https://repositorio.ufu.br/bitstream/123456789/25072/4/RecomendacaoConhecimentoDisponivel.pdf.jpg12cd6f18e3bd14468536a591698743e4MD54123456789/250722019-05-09 03:06:16.139oai:repositorio.ufu.br:123456789/25072w4kgbmVjZXNzw6FyaW8gY29uY29yZGFyIGNvbSBhIGxpY2Vuw6dhIGRlIGRpc3RyaWJ1acOnw6NvIG7Do28tZXhjbHVzaXZhLCBhbnRlcyBxdWUgbyBkb2N1bWVudG8gcG9zc2EgYXBhcmVjZXIgbm8gUmVwb3NpdMOzcmlvLiBQb3IgZmF2b3IsIGxlaWEgYSBsaWNlbsOnYSBhdGVudGFtZW50ZS4gQ2FzbyBuZWNlc3NpdGUgZGUgYWxndW0gZXNjbGFyZWNpbWVudG8gZW50cmUgZW0gY29udGF0byBhdHJhdsOpcyBkbyBlLW1haWwgIHJlcG9zaXRvcmlvQHVmdS5ici4KCkxJQ0VOw4dBIERFIERJU1RSSUJVScOHw4NPIE7Dg08tRVhDTFVTSVZBCgpBbyBhc3NpbmFyIGUgZW50cmVnYXIgZXN0YSBsaWNlbsOnYSwgby9hIFNyLi9TcmEuIChhdXRvciBvdSBkZXRlbnRvciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpOgoKYSkgQ29uY2VkZSDDoCBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSBvIGRpcmVpdG8gbsOjby1leGNsdXNpdm8gZGUgcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGNvbXVuaWNhciBlL291IGRpc3RyaWJ1aXIgbyBkb2N1bWVudG8gZW50cmVndWUgKGluY2x1aW5kbyBvIHJlc3Vtby9hYnN0cmFjdCkgZW0gZm9ybWF0byBkaWdpdGFsIG91IGltcHJlc3NvIGUgZW0gcXVhbHF1ZXIgbWVpby4KCmIpIERlY2xhcmEgcXVlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIMOpIHNldSB0cmFiYWxobyBvcmlnaW5hbCwgZSBxdWUgZGV0w6ltIG8gZGlyZWl0byBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBhIGVudHJlZ2EgZG8gZG9jdW1lbnRvIG7Do28gaW5mcmluZ2UsIHRhbnRvIHF1YW50byBsaGUgw6kgcG9zc8OtdmVsIHNhYmVyLCBvcyBkaXJlaXRvcyBkZSBxdWFscXVlciBvdXRyYSBwZXNzb2Egb3UgZW50aWRhZGUuCgpjKSBTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSBjb250w6ltIG1hdGVyaWFsIGRvIHF1YWwgbsOjbyBkZXTDqW0gb3MgZGlyZWl0b3MgZGUgYXV0b3IsIGRlY2xhcmEgcXVlIG9idGV2ZSBhdXRvcml6YcOnw6NvIGRvIGRldGVudG9yIGRvcyBkaXJlaXRvcyBkZSBhdXRvciBwYXJhIGNvbmNlZGVyIMOgIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgY3Vqb3MgZGlyZWl0b3Mgc8OjbyBkZSB0ZXJjZWlyb3MgZXN0w6EgY2xhcmFtZW50ZSBpZGVudGlmaWNhZG8gZSByZWNvbmhlY2lkbyBubyB0ZXh0byBvdSBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIGVudHJlZ3VlLgoKU2UgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgYmFzZWFkbyBlbSB0cmFiYWxobyBmaW5hbmNpYWRvIG91IGFwb2lhZG8gcG9yIG91dHJhIGluc3RpdHVpw6fDo28gcXVlIG7Do28gYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkZSBVYmVybMOibmRpYSwgZGVjbGFyYSBxdWUgY3VtcHJpdSBxdWFpc3F1ZXIgb2JyaWdhw6fDtWVzIGV4aWdpZGFzIHBlbG8gcmVzcGVjdGl2byBjb250cmF0byBvdSBhY29yZG8uCgpBIFVuaXZlcnNpZGFkZSBGZWRlcmFsIGRlIFViZXJsw6JuZGlhIGlkZW50aWZpY2Fyw6EgY2xhcmFtZW50ZSBvKHMpIHNldShzKSBub21lKHMpIGNvbW8gbyhzKSBhdXRvcihlcykgb3UgZGV0ZW50b3IgKGVzKSBkb3MgZGlyZWl0b3MgZG8gZG9jdW1lbnRvIGVudHJlZ3VlLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZGFzIHBlcm1pdGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EuCg==Repositório InstitucionalONGhttp://repositorio.ufu.br/oai/requestdiinf@dirbi.ufu.bropendoar:2024-04-26T15:12:28.945123Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)false
dc.title.pt_BR.fl_str_mv Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
dc.title.alternative.pt_BR.fl_str_mv Recommending knowledge available in Q&A sites for aiding software development and debugging
title Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
spellingShingle Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
Campos, Eduardo Cunha
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Sabedoria da multidão
Depuração com a multidão
Tarefas de uso da API
Wisdom of the Crowd
Debugging with the crowd
API usage tasks
Computação
Software fatores humanos
Software desenvolvimento
Interface de programação de aplicações
title_short Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
title_full Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
title_fullStr Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
title_full_unstemmed Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
title_sort Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software
author Campos, Eduardo Cunha
author_facet Campos, Eduardo Cunha
author_role author
dc.contributor.advisor1.fl_str_mv Maia, Marcelo de Almeida
dc.contributor.referee1.fl_str_mv Hora, André Cavalcante
dc.contributor.referee2.fl_str_mv Lima Filho, Fernando José Castor de
dc.contributor.referee3.fl_str_mv Matias Júnior, Rivalino
dc.contributor.referee4.fl_str_mv Fernandes, Henrique Coelho
dc.contributor.authorLattes.fl_str_mv http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4350860Z5
dc.contributor.author.fl_str_mv Campos, Eduardo Cunha
contributor_str_mv Maia, Marcelo de Almeida
Hora, André Cavalcante
Lima Filho, Fernando José Castor de
Matias Júnior, Rivalino
Fernandes, Henrique Coelho
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::ENGENHARIA DE SOFTWARE
Sabedoria da multidão
Depuração com a multidão
Tarefas de uso da API
Wisdom of the Crowd
Debugging with the crowd
API usage tasks
Computação
Software fatores humanos
Software desenvolvimento
Interface de programação de aplicações
dc.subject.por.fl_str_mv Sabedoria da multidão
Depuração com a multidão
Tarefas de uso da API
Wisdom of the Crowd
Debugging with the crowd
API usage tasks
Computação
Software fatores humanos
Software desenvolvimento
Interface de programação de aplicações
description O desenvolvimento moderno de programas é inseparável do uso das Interfaces de Programação de Aplicativos (APIs). No entanto, vários estudos mostraram que aprender e lembrar como usar as APIs é difícil para os desenvolvedores de software devido à documentação inadequada de algumas APIs. Os últimos anos testemunharam o surgimento e a crescente popularidade de sítios de mídias sociais relacionados ao desenvolvimento de programas, como o Stack Overflow, o DaniWeb e o Quora. A informação disponível nesses sítios é uma tendência importante no suporte de atividades relacionadas ao desenvolvimento e depuração de programas. Para lidar com o problema da introdução de erros relacionados com o uso incorreto da API por parte do desenvolvedor, foi proposta uma abordagem que recomenda posts do Stack Overflow que podem conter a correção destes erros. Todavia, esta abordagem recebe como entrada um trecho de código suspeito de conter um erro. Para avaliar esta abordagem, foi construído um benchmark contendo 30 trechos de código com potenciais API-usage-related bugs escritos nas linguagens Java e JavaScript extraídos do site Open Hub Code Search. Os resultados de recomendação mostraram que foram encontrados nos top-10 posts recomendados a correção para 66,67% dos trechos de código Java e 40% dos trechos de código JavaScript presentes no benchmark. Além disso, esta abordagem superou os motores de busca Google e FaCoY na recomendação de correções para esta categoria de erros de software. Para auxiliar os desenvolvedores durante alguma tarefa de programação com API, foi proposta uma outra abordagem denominada Lucene+Score+How-to que recomenda somente pares Q&A do Stack Overflow pertencentes à categoria "How-to" a partir de uma consulta feita em linguagem natural pelo usuário. Para avaliar esta abordagem, foram conduzidos experimentos envolvendo 35 tarefas de programação extraídas aleatoriamente de livros de receitas de 3 tópicos amplamente utilizados pela comunidade de desenvolvimento de software: Swing (Java), Boost (C++) e LINQ (C#). Os resultados de recomendação desta abordagem mostraram que, para 77,14% das tarefas de programação analisadas, pelo menos um par Q&A recomendado provou ser útil para a solução da tarefa alvo.
publishDate 2019
dc.date.accessioned.fl_str_mv 2019-05-08T16:31:03Z
dc.date.available.fl_str_mv 2019-05-08T16:31:03Z
dc.date.issued.fl_str_mv 2019-04-12
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv CAMPOS, Eduardo Cunha. Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software. 2019. 144 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Uberlândia, Uberlândia, 2019. Disponível em: http://dx.doi.org/10.14393/ufu.te.2019.924
dc.identifier.uri.fl_str_mv https://repositorio.ufu.br/handle/123456789/25072
dc.identifier.doi.pt_BR.fl_str_mv http://dx.doi.org/10.14393/ufu.te.2019.924
identifier_str_mv CAMPOS, Eduardo Cunha. Recomendação de conhecimento disponível em sítios Q&A para auxílio ao desenvolvimento e depuração de software. 2019. 144 f. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Uberlândia, Uberlândia, 2019. Disponível em: http://dx.doi.org/10.14393/ufu.te.2019.924
url https://repositorio.ufu.br/handle/123456789/25072
http://dx.doi.org/10.14393/ufu.te.2019.924
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Uberlândia
dc.publisher.program.fl_str_mv Programa de Pós-graduação em Ciência da Computação
dc.publisher.country.fl_str_mv Brasil
publisher.none.fl_str_mv Universidade Federal de Uberlândia
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFU
instname:Universidade Federal de Uberlândia (UFU)
instacron:UFU
instname_str Universidade Federal de Uberlândia (UFU)
instacron_str UFU
institution UFU
reponame_str Repositório Institucional da UFU
collection Repositório Institucional da UFU
bitstream.url.fl_str_mv https://repositorio.ufu.br/bitstream/123456789/25072/1/RecomendacaoConhecimentoDisponivel.pdf
https://repositorio.ufu.br/bitstream/123456789/25072/2/license.txt
https://repositorio.ufu.br/bitstream/123456789/25072/3/RecomendacaoConhecimentoDisponivel.pdf.txt
https://repositorio.ufu.br/bitstream/123456789/25072/4/RecomendacaoConhecimentoDisponivel.pdf.jpg
bitstream.checksum.fl_str_mv ee9081a66ec932c566603ed8fa59cc7f
48ded82ce41b8d2426af12aed6b3cbf3
7e87887961b9b2375c789d7e7ebe8765
12cd6f18e3bd14468536a591698743e4
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)
repository.mail.fl_str_mv diinf@dirbi.ufu.br
_version_ 1797425609594372096