• Nenhum resultado encontrado

Sistemas de Recomendação que Extraem Postagens do Stackoverflow

6 Trabalhos Relacionados

6.2 Sistemas de Recomendação que Extraem Postagens do Stackoverflow

A Tabela 12 mostra um comparativo entre as principais ferramentas encontradas na literatura que se assemelham a proposta neste trabalho. Todas elas extraem dados de postagens do Stackoverlfow e são integra a IDE Eclipse, mas possuem diferenças entre si.

Os critérios utilizados na comparação, foram os seguintes: i - Extrai as stack traces das postagens?

ii - Quais dados do contexto de desenvolvimento (da IDE) são utilizados na recomen- dação?

iii - A recomendação possui uma abordagem proativa, ou seja, ela necessita que o programador atue diretamente informando uma query para consulta de stack traces?

iv - A realização da recomendação depende da ocorrência de exceções na aplicação? v - Realiza algum ranqueamento de postagens?

vi - Utiliza outras fontes de extração?

vii - Qual é o método de extração de postagens utilizada (API, Dump, Data Explorer)? viii - Qual é a representação gráfica utilizada na recomendação?

Treude e Robillard [33] têm como objetivo capturar informações importantes ao de- senvolvedor que conhece previamente a documentação. Ele não trata especificamente de stack trace, mas tenta relacionar trechos da documentação com sentenças das postagens do Stackoverflow. Eles propõem uma ferramenta que extrai sentenças, utilizando aprendizado supervisionado, denominadas de insight sentences. Este conceito define sentenças de uma

Ferramentas Critérios

i ii iii iv v vi vii viii

SISE[33] Não Doc. de APIs Não Não Sim Não API Postagens

Exception Tracer [1] Não Código de falta Sim Sim Não Sim API Postagens e soluções Busca integrada[25] Sim stack traces Não Sim Sim Sim API Postagens e soluções

SeaHawk[23] Sim Query e

código de mudança Sim Não Sim Não Dump

Postagem e % relevância Prompter [24] Não Código de

mudança Sim Não Sim Sim API Postagem

Cordeiro et al [7] Sim Query, métodos e

classes de APIs Não Não Sim Não Dump Postagem

ExMinerSOF Sim Código de

mudança Sim Não Sim* Não Dump and API* Postagem

Tabela 12: Comparativo entre ferramentas encontradas na literatura que extraem posta- gens do Stackoverflow provendo informações ao desenvolvedor que o auxiliam nas ativi- dades.

fonte de documentação que proveem conhecimento para outra fonte de documentação. Apesar de extrair o conteúdo do Stackoverflow e recomendar informações relevantes para o conhecimento do desenvolvedor, o estudo não envolve o fluxo excepcional nem analisa stack trace, em específico.

Amintabar, Heydarnoori e Ghafa [1] propõem uma ferramenta que recomenda candi- datos para solução de exceções que ocorrem em tempo de execução, minerando issues e comites do SourceForge1 e postagens do Stackoverflow. As recomendações são realizadas

de forma integrada a IDE Eclipse e inclui trechos de código e discussões de desenvolve- dores. A ferramenta engloba dois pontos semelhantes ao ExMinerSOF, o mecanismo de recomendação e a utilização do Stackoverflow como fonte da mineração. Porém, ele não analisa stack traces das postagens e exige que uma falha ocorra para que as recomendações sejam disponibilizadas ao desenvolvedor.

Rahman, Yeasmin e Roy [25] propõem uma ferramenta de recomendação que explora os algoritmos de busca e ranqueamento de quatro mecanismos: Google2, Bing3, Yahoo4 e Stackoverflow. O desenvolvedor seleciona uma exceção que ocorreu em seu programa e a ferramenta coleta as informações de contexto da falha e gera uma requisição de busca, Esta ferramenta explora várias fontes de dados e utiliza várias métricas de relevância e ranqueamento, porém requer que uma falha ocorra para que seus dados sejam utilizados nas consulta às engines.

Ponzanelli et al [23] desenvolveu a ferramenta SeaHawk que realiza recomendações baseadas na entrada informada pelo próprio desenvolvedor, como também no seu código fonte em edição na IDE. A ferramenta procura por postagens do StackOverflow e permite

1https://sourceforge.net 2http://google.com.br

3https://www.bing.com/?cc=br 4https://br.yahoo.com

que trechos de código das postagens sejam "arrastados"para o editor java da IDE. O desenvolvedor também pode vincular as postagens à trechos de código que podem ser visualizados por outros membros da equipe de trabalho do desenvolvedor, caso esteja sendo utilizado algum repositório de código. Neste estudo, a base de dados é populada de acordo com o arquivo de Dump do Stackoverflow, o que reduz a abrangência da ferramenta em relação a postagens mais recentes.

Ponzanelli também fez contribuição em outra ferramenta [24], denominada Prompter, que extrai dados de contexto do código fonte, como nome de classes, métodos e de APIs utilizadas no projeto, gerando dados pra consultas no StackOverflow. Ela ainda ranqueia os resultados seguindo vários critérios de relevância, como a similaridade textual, de tags, pontuação das postagens e reputação do usuário que fez a postagem. Outras fontes de pesquisa, Google, Bing e Blekko são utilizadas de forma intermediária a consulta à API do Stackoverflow. Além de não utilizar o arquivo de Dump, neste estudo também não é explorado a identificação da interface excepcional presente no conteúdo das perguntas e respostas mineradas.

Cordeiro, Antunes e Gomes [7] se preocupam em auxiliar os desenvolvedores a superar barreiras de aprendizagem de estruturas e bibliotecas que não dominam, propondo uma ferramenta que facilita o acesso a postagens do Stackoverflow que contem informações úteis para a resolução de problemas. A ferramenta realiza a consulta baseada em uma entrada textual informada pelo desenvolvedor e pelo seu contexto atual na IDE, conside- rando as bibliotecas que utiliza e os artefatos que manipula. A ferramenta então consulta uma base com dados do arquivo de Dump do Stackoverflow, do qual foram extraídos stack traces e trechos de código java. Também é estabelecido pontuações de ranqueamento que indicam quais postagens são mais úteis ao desenvolvedor. Em outro trabalho Cordeiro, Antunes e Gomes [6] propõem ferramenta semelhante, mas que além do contexto do có- digo fonte em edição, também considera as stack traces geradas a partir de falhas na própria aplicação. Ambos estudos, [7] e [6], exploram a interface excepcional presentes nas postagens evidencias através das marcações de blocos de código. Já o ExMinerSOF identifica, de forma mais especifica, as stack traces através de expressões regulares. Além disso, esses estudos também só utilizando o arquivo de Dump como base de conhecimento. Como já pontuado para cada trabalho relacionado e de acordo com o que foi perce- bido até o momento neste estudo, o principal diferencial do ExMinerSOF é ele não exigir que uma exceção escape (do inglês uncaught exception), gerando uma falha na aplicação, para que a ferramenta inicie a execução. Assim, nosso trabalho permite recomendações em

tempo de construção. Dos trabalhos que utilizam esse tipo de abordagem proativa, eles apenas espelham a visão do navegador na IDE. Outra contribuição é a mineração de stack traces das postagens do Stackoverflow, através de expressões regulares, utilizando a estru- tura de stack traces obtida para base de consulta do mecanismo de recomendações. Com a informação a cerca da interface excepcional, também é possível analisar características sobre as principais e mais comuns ocorrências de falhas relacionadas à um determinado método de uma API. Por fim, o ExMinerSOF ainda combina as abordagens de extração usando a própria API do Stackoverflow para periodicamente (em um tempo configurado) complementar os dados já previamente extraídos pelo arquivo de Dump, baseando-se na data de publicação das postagens.