Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software

Detalhes bibliográficos
Autor(a) principal: Campos, Eduardo Cunha
Data de Publicação: 2015
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFU
Texto Completo: https://repositorio.ufu.br/handle/123456789/12580
https://doi.org/10.14393/ufu.di.2015.4
Resumo: Modern-day software development is inseparable from the use of the Application Programming Interfaces (APIs). Several studies have shown that developers face problems when dealing with unfamiliar APIs. It is seldom the case that the documentation and examples provided with a large framework or library are sucient for a developer to use their API eectively. Frequently, developers become lost when trying to use an API, unsure of how to make a progress on a programming task. A common behavior of developers is to post questions on social media services and receive answers from other programmers that belong to dierent projects. To help developers nd their way, a widely-know alternative is Stack Overow (SOF), which is a Question and Answer (Q&A) website which uses social media to facilitate knowledge exchange between programmers. Despite its usefulness, the knowledge provided by Q&A services cannot be directly leveraged from within an Integrated Development Environment (IDE), in the sense, that developers must toggle to the Web browser to access those services, thus interrupting the programming ow and lowering their focus on the current task. Another common activity in daily developer is Debugging. This activity consists of understanding why a piece of code does not behave as expected. Some bugs are deeply rooted in the domain logic but others are independent of the specicity of the application being debugged. This latter class of bugs are crowd bugs: bugs that cause an unexpected and incorrect output or behavior resulting from a common and intuitive usage of an API. For this class of bugs, it is likely that the crowd bug has already occurred several times in dierent applications and the crowd has already identied the bug and its x. This work proposes a recommendation system in the form of a plugin for the Eclipse IDE that has as main objectives: 1) Recommend Q&A pairs (i.e., a Q&A pair is composed by a question and a answer for that question) of How-to-do category to assist developers in the API Learning Process; 2) Recommend crowd bugs xes to help developers during debugging tasks. These recommendations use SOF website as an information source. We conducted an experiment considering programming problems on three dierent topics (Swing, Boost and LINQ) widely used by the software development community to evaluate our recommendation strategy of Q&A pairs. The results are promising: for 77.14% of the 35 programming problems assessed, at least one recommended Q&A pair proved to be useful in the resolution of the target programming problem. It was also conducted an experiment with crowd bugs belonging to Java and JavaScript programming languages. The results are also promising: for 73.33% of Java crowd bugs, the system has found the x in the Top-15 and for 46.66% of JavaScript crowd bugs, the system has found the x in the Top-15.
id UFU_e4df926448f0829d5ff6de393448d2a1
oai_identifier_str oai:repositorio.ufu.br:123456789/12580
network_acronym_str UFU
network_name_str Repositório Institucional da UFU
repository_id_str
spelling 2016-06-22T18:32:32Z2015-05-202016-06-22T18:32:32Z2015-01-16CAMPOS, Eduardo Cunha. Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software. 2015. 100 f. Dissertação (Mestrado em Ciências Exatas e da Terra) - Universidade Federal de Uberlândia, Uberlândia, 2015. Disponível em: https://doi.org/10.14393/ufu.di.2015.4https://repositorio.ufu.br/handle/123456789/12580https://doi.org/10.14393/ufu.di.2015.4Modern-day software development is inseparable from the use of the Application Programming Interfaces (APIs). Several studies have shown that developers face problems when dealing with unfamiliar APIs. It is seldom the case that the documentation and examples provided with a large framework or library are sucient for a developer to use their API eectively. Frequently, developers become lost when trying to use an API, unsure of how to make a progress on a programming task. A common behavior of developers is to post questions on social media services and receive answers from other programmers that belong to dierent projects. To help developers nd their way, a widely-know alternative is Stack Overow (SOF), which is a Question and Answer (Q&A) website which uses social media to facilitate knowledge exchange between programmers. Despite its usefulness, the knowledge provided by Q&A services cannot be directly leveraged from within an Integrated Development Environment (IDE), in the sense, that developers must toggle to the Web browser to access those services, thus interrupting the programming ow and lowering their focus on the current task. Another common activity in daily developer is Debugging. This activity consists of understanding why a piece of code does not behave as expected. Some bugs are deeply rooted in the domain logic but others are independent of the specicity of the application being debugged. This latter class of bugs are crowd bugs: bugs that cause an unexpected and incorrect output or behavior resulting from a common and intuitive usage of an API. For this class of bugs, it is likely that the crowd bug has already occurred several times in dierent applications and the crowd has already identied the bug and its x. This work proposes a recommendation system in the form of a plugin for the Eclipse IDE that has as main objectives: 1) Recommend Q&A pairs (i.e., a Q&A pair is composed by a question and a answer for that question) of How-to-do category to assist developers in the API Learning Process; 2) Recommend crowd bugs xes to help developers during debugging tasks. These recommendations use SOF website as an information source. We conducted an experiment considering programming problems on three dierent topics (Swing, Boost and LINQ) widely used by the software development community to evaluate our recommendation strategy of Q&A pairs. The results are promising: for 77.14% of the 35 programming problems assessed, at least one recommended Q&A pair proved to be useful in the resolution of the target programming problem. It was also conducted an experiment with crowd bugs belonging to Java and JavaScript programming languages. The results are also promising: for 73.33% of Java crowd bugs, the system has found the x in the Top-15 and for 46.66% of JavaScript crowd bugs, the system has found the x in the Top-15.O desenvolvimento de software dos dias atuais é inseparável do uso de Interfaces de Programação de Aplicações (APIs). Vários estudos mostraram que os desenvolvedores enfrentam problemas quando lidam com APIs não-familiares. São raros os casos em que a documentação e exemplos providos para um grande framework ou biblioteca são suficientes para o desenvolvedor utilizar a API efetivamente. Frequentemente, os desenvolvedores ficam perdidos quando tentam utilizar uma API e inseguros em como obter um progresso em uma tarefa de programação. Um comportamento comum destes desenvolvedores é postar perguntas em serviços de mídia social e obter respostas de outros desenvolvedores que pertencem a diferentes projetos. Para ajudar os desenvolvedores a encontrar seu caminho, uma alternativa amplamente conhecida é o Stack Overflow (SOF), que é um site de pergunta e resposta (Q&A) que usa mídia social para facilitar a troca de conhecimento entre os desenvolvedores. Apesar da sua utilidade, o conhecimento provido pelos serviços Q&A não pode ser aproveitado diretamente dentro do Ambiente de Desenvolvimento Integrado (IDE), no sentido de que os desenvolvedores devem mudar para o navegador Web para acessar estes serviços, interrompendo assim, o fluxo de programação e reduzindo o seu foco na tarefa de programação atual. Outra atividade comum no cotidiano do desenvolvedor é a depuração. Esta atividade consiste em entender por que um pedaço de código não se comporta como esperado. Alguns bugs estão profundamente enraizados na lógica de domínio, mas outros são independentes da especificidade da aplicação que está sendo depurada. Esta última classe de bugs pode ser definida como bugs da multidão: bugs que causam uma saída ou comportamentos inesperados e incorretos resultantes do uso comum e intuitivo de uma API. Para esta classe de bugs, é provável que o mesmo já ocorreu diversas vezes em diferentes aplicações e por isso, a multidão já identificou o bug bem como sua correção. Este trabalho propõe um sistema de recomendação na forma de um plug-in para Eclipse IDE que tem como objetivos principais: 1) Recomendar pares Q&A (i.e., um par Q&A é composto por uma pergunta e uma resposta para esta pergunta) da categoria How-to-do para auxiliar os desenvolvedores no processo de aprendizagem da API; 2) Recomendar correções de bugs da multidão para auxiliar os desenvolvedores durante as tarefas de depuração. Estas recomendações utilizam o site SOF como fonte de informação. Foi conduzido um experimento considerando tarefas de programação de três diferentes APIs (Swing, Boost e LINQ) amplamente utilizados pela comunidade de desenvolvimento de software para avaliar a estratégia de recomendação de pares Q&A proposta. Os resultados são promissores: para 77,14% das 35 tarefas de programação avaliadas, pelo menos um par Q&A recomendado provou ser útil na resolução da tarefa de programação alvo. Foi realizado também um experimento com bugs da multidão pertencentes às linguagens de programação Java e JavaScript. Os resultados também são promissores: para 73,33% dos bugs da multidão Java, o sistema encontrou a correção no Top-15 e para 46,66% dos bugs da multidão JavaScript, o sistema encontrou a correção no Top-15.Coordenação de Aperfeiçoamento de Pessoal de Nível SuperiorMestre em Ciência da Computaçãoapplication/pdfporUniversidade Federal de UberlândiaPrograma de Pós-graduação em Ciência da ComputaçãoUFUBRCiências Exatas e da TerraServiços q&aConhecimento da multidãoBugs da multidãoQ&a servicesCrowd knowledgeCrowd bugsCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAORecomendação de conhecimento da multidão para auxílio ao desenvolvimento de softwareinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisMonperrus, MartinMaia, Marcelo de Almeidahttp://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4791753E8Julia, Stéphanehttp://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4796960H1Figueira Filho, Fernando Marqueshttp://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4756612U6http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4350860Z5Campos, Eduardo Cunha81753032info:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFUinstname:Universidade Federal de Uberlândia (UFU)instacron:UFUTHUMBNAILRecomendacaoConhecimentoMultidao.pdf.jpgRecomendacaoConhecimentoMultidao.pdf.jpgGenerated Thumbnailimage/jpeg1286https://repositorio.ufu.br/bitstream/123456789/12580/3/RecomendacaoConhecimentoMultidao.pdf.jpgd6ea38b2b981ac01634e283f744512cdMD53ORIGINALRecomendacaoConhecimentoMultidao.pdfapplication/pdf1325987https://repositorio.ufu.br/bitstream/123456789/12580/1/RecomendacaoConhecimentoMultidao.pdfe6b3676fc86042d6c14b4fd5967a9d93MD51TEXTRecomendacaoConhecimentoMultidao.pdf.txtRecomendacaoConhecimentoMultidao.pdf.txtExtracted texttext/plain199985https://repositorio.ufu.br/bitstream/123456789/12580/2/RecomendacaoConhecimentoMultidao.pdf.txtba1290c57b0665be6054356f38eebaadMD52123456789/125802021-03-15 14:12:36.748oai:repositorio.ufu.br:123456789/12580Repositório InstitucionalONGhttp://repositorio.ufu.br/oai/requestdiinf@dirbi.ufu.bropendoar:2024-04-26T15:06:56.844706Repositório Institucional da UFU - Universidade Federal de Uberlândia (UFU)false
dc.title.por.fl_str_mv Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
title Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
spellingShingle Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
Campos, Eduardo Cunha
Serviços q&a
Conhecimento da multidão
Bugs da multidão
Q&a services
Crowd knowledge
Crowd bugs
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
title_short Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
title_full Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
title_fullStr Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
title_full_unstemmed Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
title_sort Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
author Campos, Eduardo Cunha
author_facet Campos, Eduardo Cunha
author_role author
dc.contributor.advisor-co1.fl_str_mv Monperrus, Martin
dc.contributor.advisor1.fl_str_mv Maia, Marcelo de Almeida
dc.contributor.advisor1Lattes.fl_str_mv http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4791753E8
dc.contributor.referee1.fl_str_mv Julia, Stéphane
dc.contributor.referee1Lattes.fl_str_mv http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4796960H1
dc.contributor.referee2.fl_str_mv Figueira Filho, Fernando Marques
dc.contributor.referee2Lattes.fl_str_mv http://buscatextual.cnpq.br/buscatextual/visualizacv.do?id=K4756612U6
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 Monperrus, Martin
Maia, Marcelo de Almeida
Julia, Stéphane
Figueira Filho, Fernando Marques
dc.subject.por.fl_str_mv Serviços q&a
Conhecimento da multidão
Bugs da multidão
topic Serviços q&a
Conhecimento da multidão
Bugs da multidão
Q&a services
Crowd knowledge
Crowd bugs
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
dc.subject.eng.fl_str_mv Q&a services
Crowd knowledge
Crowd bugs
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
description Modern-day software development is inseparable from the use of the Application Programming Interfaces (APIs). Several studies have shown that developers face problems when dealing with unfamiliar APIs. It is seldom the case that the documentation and examples provided with a large framework or library are sucient for a developer to use their API eectively. Frequently, developers become lost when trying to use an API, unsure of how to make a progress on a programming task. A common behavior of developers is to post questions on social media services and receive answers from other programmers that belong to dierent projects. To help developers nd their way, a widely-know alternative is Stack Overow (SOF), which is a Question and Answer (Q&A) website which uses social media to facilitate knowledge exchange between programmers. Despite its usefulness, the knowledge provided by Q&A services cannot be directly leveraged from within an Integrated Development Environment (IDE), in the sense, that developers must toggle to the Web browser to access those services, thus interrupting the programming ow and lowering their focus on the current task. Another common activity in daily developer is Debugging. This activity consists of understanding why a piece of code does not behave as expected. Some bugs are deeply rooted in the domain logic but others are independent of the specicity of the application being debugged. This latter class of bugs are crowd bugs: bugs that cause an unexpected and incorrect output or behavior resulting from a common and intuitive usage of an API. For this class of bugs, it is likely that the crowd bug has already occurred several times in dierent applications and the crowd has already identied the bug and its x. This work proposes a recommendation system in the form of a plugin for the Eclipse IDE that has as main objectives: 1) Recommend Q&A pairs (i.e., a Q&A pair is composed by a question and a answer for that question) of How-to-do category to assist developers in the API Learning Process; 2) Recommend crowd bugs xes to help developers during debugging tasks. These recommendations use SOF website as an information source. We conducted an experiment considering programming problems on three dierent topics (Swing, Boost and LINQ) widely used by the software development community to evaluate our recommendation strategy of Q&A pairs. The results are promising: for 77.14% of the 35 programming problems assessed, at least one recommended Q&A pair proved to be useful in the resolution of the target programming problem. It was also conducted an experiment with crowd bugs belonging to Java and JavaScript programming languages. The results are also promising: for 73.33% of Java crowd bugs, the system has found the x in the Top-15 and for 46.66% of JavaScript crowd bugs, the system has found the x in the Top-15.
publishDate 2015
dc.date.available.fl_str_mv 2015-05-20
2016-06-22T18:32:32Z
dc.date.issued.fl_str_mv 2015-01-16
dc.date.accessioned.fl_str_mv 2016-06-22T18:32:32Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv CAMPOS, Eduardo Cunha. Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software. 2015. 100 f. Dissertação (Mestrado em Ciências Exatas e da Terra) - Universidade Federal de Uberlândia, Uberlândia, 2015. Disponível em: https://doi.org/10.14393/ufu.di.2015.4
dc.identifier.uri.fl_str_mv https://repositorio.ufu.br/handle/123456789/12580
dc.identifier.doi.por.fl_str_mv https://doi.org/10.14393/ufu.di.2015.4
identifier_str_mv CAMPOS, Eduardo Cunha. Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software. 2015. 100 f. Dissertação (Mestrado em Ciências Exatas e da Terra) - Universidade Federal de Uberlândia, Uberlândia, 2015. Disponível em: https://doi.org/10.14393/ufu.di.2015.4
url https://repositorio.ufu.br/handle/123456789/12580
https://doi.org/10.14393/ufu.di.2015.4
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.format.none.fl_str_mv application/pdf
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.initials.fl_str_mv UFU
dc.publisher.country.fl_str_mv BR
dc.publisher.department.fl_str_mv Ciências Exatas e da Terra
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/12580/3/RecomendacaoConhecimentoMultidao.pdf.jpg
https://repositorio.ufu.br/bitstream/123456789/12580/1/RecomendacaoConhecimentoMultidao.pdf
https://repositorio.ufu.br/bitstream/123456789/12580/2/RecomendacaoConhecimentoMultidao.pdf.txt
bitstream.checksum.fl_str_mv d6ea38b2b981ac01634e283f744512cd
e6b3676fc86042d6c14b4fd5967a9d93
ba1290c57b0665be6054356f38eebaad
bitstream.checksumAlgorithm.fl_str_mv 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_ 1797425568518504448