Please use this identifier to cite or link to this item: https://repositorio.ufu.br/handle/123456789/12580
metadata.dc.type: Dissertação
metadata.dc.rights: Acesso Aberto
Title: Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
metadata.dc.creator: Campos, Eduardo Cunha
metadata.dc.contributor.advisor1: Maia, Marcelo de Almeida
metadata.dc.contributor.advisor-co1: Monperrus, Martin
metadata.dc.contributor.referee1: Julia, Stéphane
metadata.dc.contributor.referee2: Figueira Filho, Fernando Marques
metadata.dc.description.resumo: 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.
Abstract: 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.
Keywords: Serviços q&a
Conhecimento da multidão
Bugs da multidão
Q&a services
Crowd knowledge
Crowd bugs
metadata.dc.subject.cnpq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO
metadata.dc.language: por
metadata.dc.publisher.country: BR
Publisher: Universidade Federal de Uberlândia
metadata.dc.publisher.initials: UFU
metadata.dc.publisher.department: Ciências Exatas e da Terra
metadata.dc.publisher.program: Programa de Pós-graduação em Ciência da Computação
Citation: 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.
URI: https://repositorio.ufu.br/handle/123456789/12580
Issue Date: 16-Jan-2015
Appears in Collections:PPGCC - Mestrado em Ciência da Computação

Files in This Item:
File Description SizeFormat 
RecomendacaoConhecimentoMultidao.pdf1.29 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.