Dissertação
Recomendação de conhecimento da multidão para auxílio ao desenvolvimento de software
Registro en:
Autor
Campos, Eduardo Cunha
Institución
Resumen
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. Coordenação de Aperfeiçoamento de Pessoal de Nível Superior Mestre em Ciência da Computação 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.