Mining Software Repositories 
Rafael Germano Rossi 
Departamento de Ciência de Computação – IME/USP
Tópicos 
Introdução – O que é Data Mining? 
Mining Software Repositories – Fontes e Ferramentas 
If Your Version System...
O que é Data Mining? 
Termo surgiu por volta de 1990. 
Também conhecido como KDD (Knowledge Discovery in Databases), ou ...
O que é Data Mining? 
No processo de negócio “Vendas” em um supermercado, é simples obter informações como: 
Quantos pro...
Mining Software Repositories 
Mineração de repositórios de software é a prática de Data Mining, na qual a fonte de dados ...
Mining Software Repositories - Fontes 
Marco Aurélio Gerosa (gerosa@ime.usp.br) March/2014 
https://github.com/about/pre 
...
Mining software repositories 
Marco Aurélio Gerosa (gerosa@ime.usp.br) March/2014 
Mining 
http://2014.msrconf.org/ 
“The ...
Mining Software Repositories - Ferramentas
If Your Version System Could Talk... 
Ball et al. (ICSE – 1997) 
Objetivos: 
Entender o histórico do processo de desenv...
If Your Version System Could Talk... 
Relação entre visões dentro do desenvolvimento de software
If Your Version System Could Talk... 
Projeto sob estudo: 
5ESS – Lucent Technologies 
Sistema de switch para telefonia...
If Your Version System Could Talk... 
Relação entre visões dentro do desenvolvimento de software 
Requerimento: Compilad...
If Your Version System Could Talk... 
Compilador P5CC: 
C++ 
Estrutura tradicional: fases léxico, parsing, checagem sem...
If Your Version System Could Talk... 
Versionamento: 
Cada modificação no compilador é comitada em um VCS 
Foram utiliz...
If Your Version System Could Talk...
If Your Version System Could Talk...
If Your Version System Could Talk...
If Your Version System Could Talk... 
Trabalhos futuros (provavelmente passado, agora): 
Análise no decorrer do tempo 
...
Mining Version History to Guide Software Changes 
 Zimmermann, Weißgerber, Diehl, & Zeller (ICSE – 2004) 
Objetivos: 
S...
Mining Version History to Guide Software Changes 
 Protótipo – ROSE (Reengineering Of Software Evolution) 
Ideia de suge...
Mining Version History to Guide Software Changes
Mining Version History to Guide Software Changes 
Ameaças à validade: 
O estudo foi feito com 10761 transações de oito p...
The MSR Cookbook – Mining a Decade of Research 
Hemmati et al. (MSR – 2013) 
Survey de todos os 117 full papers publicad...
The MSR Cookbook – Mining a Decade of Research 
Foram extraídos 268 comentários feitos pelos autores dos 117 papers 
Os ...
The MSR Cookbook – Mining a Decade of Research 
Aquisição e preparação de dados 
7 de 16 recomendações, a maioria relaci...
The MSR Cookbook – Mining a Decade of Research
The MSR Cookbook – Mining a Decade of Research 
Processo de pesquisa 
Descrição dos dados: Os comentários deveriam apare...
The MSR Cookbook – Mining a Decade of Research 
Aquisição e preparação de dados: 
Código-fonte
The MSR Cookbook – Mining a Decade of Research 
Aquisição e preparação de dados: 
Issues e Patches
The MSR Cookbook – Mining a Decade of Research 
Aquisição e preparação de dados: 
Artefatos de comunicação
The MSR Cookbook – Mining a Decade of Research 
Aquisição e preparação de dados: 
Mineração de texto
The MSR Cookbook – Mining a Decade of Research 
Aquisição e preparação de dados: 
Modelando os desenvolvedores
The MSR Cookbook – Mining a Decade of Research 
Síntese:
The MSR Cookbook – Mining a Decade of Research 
Análise:
The MSR Cookbook – Mining a Decade of Research 
Compartilhamento e replicação:
The MSR Cookbook – Mining a Decade of Research 
Evolução dos artigos por tema
The MSR Cookbook – Mining a Decade of Research 
Distribuição das recomendações
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Objetivo: IROP, um método simples, leve e de fácil impl...
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Hipóteses: 
H1 – IROP pode prever defeitos a partir de...
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Variáveis independentes: 
As ações do programador fora...
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Variável dependente: 
Se o arquivo é propenso a defeit...
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Predição de defeitos pelas ações do programador 
Hipót...
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Precisão e sensibilidade máximas de 74% e 32% respectiva...
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Ação do programador  Defeitos 
Hipótese nula: não há ...
Failure is a Four-Letter Word – A Parody in Empirical Research –
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Trabalhos futuros: 
Automação: plug-ins para IDEs para...
Failure is a Four-Letter Word – A Parody in Empirical Research – 
Por que isso tudo está errado?? 
Correlações não impli...
Don’t program on Fridays 
Marco Aurélio Gerosa (gerosa@imeh.uttspp.:b/r/) www.slideshare.net/taoxiease/software-analytics-...
Mining software repositories
Próximos SlideShares
Carregando em…5
×

Mining software repositories

217 visualizações

Publicada em

Apresentação sobre data mining em repositórios de software, preparada para a disciplina MAC6912 - Ambientes de Desenvolvimento de Software, ministrada pelo Prof. Marco Aurélio Gerosa no programa de mestrado de Ciência da Computação, no IME-USP.

Publicada em: Dados e análise
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
217
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
6
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Mining software repositories

  1. 1. Mining Software Repositories Rafael Germano Rossi Departamento de Ciência de Computação – IME/USP
  2. 2. Tópicos Introdução – O que é Data Mining? Mining Software Repositories – Fontes e Ferramentas If Your Version System Could Talk... Mining Version History to Guide Software Changes The MSR Cookbook – Mining a Decade of Research Failure is a Four-Letter Word
  3. 3. O que é Data Mining? Termo surgiu por volta de 1990. Também conhecido como KDD (Knowledge Discovery in Databases), ou como uma parte deste processo. Extração de padrões e informações de um conjunto de dados, além das obtidas com simples consultas, de modo a permitir análise e tomada de decisões.
  4. 4. O que é Data Mining? No processo de negócio “Vendas” em um supermercado, é simples obter informações como: Quantos produtos X foram vendidos no mês? Qual é o produto de maior venda no estado, neste ano? Data mining procura obter análises que não são explícitas como as acima: Ao comprar o produto X, existe algum produto Y que também é comumente comprado? Dado o perfil do comprador ou a disposição do produto na loja, é possível aumentar a venda? Como?
  5. 5. Mining Software Repositories Mineração de repositórios de software é a prática de Data Mining, na qual a fonte de dados são os repositórios de controle de versão. O processo de negócio analisado é o desenvolvimento do software. Algumas possíveis análises e ações, obtidas a partir da mineração: Detecção e prevenção de bugs Predição de mudanças futuras Otimização da organização do código Otimização da divisão de tarefas na equipe de desenvolvedores
  6. 6. Mining Software Repositories - Fontes Marco Aurélio Gerosa (gerosa@ime.usp.br) March/2014 https://github.com/about/pre ss http://octoverse.github.com/ 11.3 millions repositories 5.4 millions users In 2013: • 3 millions new users • 152 millions pushes • 25 millions comments • 14 millions issue • 7 millions pull requests 36K projects http://en.wikipedia.org/wiki/CodePlex 30K projects https://launchpad.net 324K projects 3.4 millions developers http://sourceforge.net/apps/trac/sourceforge/wiki/What%20is%20Sour ceForge.net 250K projects http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hostin g_facilities 93K projects 1 million users 200 projects http://projects.apache.org/indexes/alpha.html 661K projects 29 billions of lines of codes 3 millions users 33K projects http://www.ohloh.net/
  7. 7. Mining software repositories Marco Aurélio Gerosa (gerosa@ime.usp.br) March/2014 Mining http://2014.msrconf.org/ “The Mining Software Repositories (MSR) field analyzes the rich data available in software repositories to uncover interesting and actionable information about software systems and projects.” Information about a project Information about an ecosystem Information about Software Engineering Decision making Software understanding Support maintenance Empirical validation of ideas & techniques Collaboration and software production Practitioner Researcher *3C Model: Fuks, H., Raposo, A., Gerosa, M.A., Pimentel, M. & Lucena, C.J.P. (2007) “The 3C Collaboration Model” in: The Encyclopedia of E-Collaboration, Ned Kock (org), ISBN 978-1-59904-000-4, pp. 637-644. Communication Cooperation Coordination 3C Model* Discussion lists Comments on issues Code comments User reports Q&A sites Source code Social media and artifacts Issue trackers Project management systems Reputation systems Applications Tag cloud from MSR 2014 CFP
  8. 8. Mining Software Repositories - Ferramentas
  9. 9. If Your Version System Could Talk... Ball et al. (ICSE – 1997) Objetivos: Entender o histórico do processo de desenvolvimento de um software e os efeitos de decisões de desenvolvimento na evolução deste processo. Obter métricas e analisá-las no decorrer do tempo para identificar pontos de reestruturação de modo a reduzir o esforço necessário para manter e estender um sistema.
  10. 10. If Your Version System Could Talk... Relação entre visões dentro do desenvolvimento de software
  11. 11. If Your Version System Could Talk... Projeto sob estudo: 5ESS – Lucent Technologies Sistema de switch para telefonia Estimativa de 10 milhões de linhas de código Base de dados relacional distribuída contendo informações sobre conexões de hardware, configuração de software e clientes Base de dados com diversas constraints, codificadas com a linguagem PRL5 e compiladas com o compilador P5CC (C++), que mudam constantemente Necessidade de compilação rápida e código gerado com menor acesso a disco possível
  12. 12. If Your Version System Could Talk... Relação entre visões dentro do desenvolvimento de software Requerimento: Compilador otimizador para uma linguagem declarativa parecida com SQL Tecnologia: C++ Desenvolvedores: Time de 6 desenvolvedores Processo de desenvolvimento: Maioria dos componentes construídos paralelamente
  13. 13. If Your Version System Could Talk... Compilador P5CC: C++ Estrutura tradicional: fases léxico, parsing, checagem semântica e de tipo, otimização, geração de código As fases léxica e de parsing produzem uma AST (Abstract Syntax Tree), sobre a qual as outras fases operam Aproximadamente 275 classes (aprox. 120 geradas por macros), divididas nas categorias: Top: classes de alto nível, usadas de base Symtab: tabela de símbolos representando tipos da linguagem PRL5 AST: classes do tipo abstract syntax tree Optim: classes que aplicam otimização às AST Quads: classes geradoras de código
  14. 14. If Your Version System Could Talk... Versionamento: Cada modificação no compilador é comitada em um VCS Foram utilizados no estudo 750 MRs (Modification Records) Modification Record: Conjunto de mudanças feitas no commit Captura o fato de que as mudanças estão relacionadas Contém informações como: descrição, data de abertura e fechamento, status, desenvolvedor responsável. Com isso, cada mudança atômica está associada com as informações fornecidas pelo MR.
  15. 15. If Your Version System Could Talk...
  16. 16. If Your Version System Could Talk...
  17. 17. If Your Version System Could Talk...
  18. 18. If Your Version System Could Talk... Trabalhos futuros (provavelmente passado, agora): Análise no decorrer do tempo Melhorar o modelo de análise (variáveis mais detalhadas, novas variáveis) Analisar o impacto de diferentes etapas do processo nos resultados obtidos e como decisões de projeto impactam no desenvolvimento
  19. 19. Mining Version History to Guide Software Changes  Zimmermann, Weißgerber, Diehl, & Zeller (ICSE – 2004) Objetivos: Sugerir e prever possíveis mudanças futuras Mostrar acoplamento de itens indetectáveis por análise do programa Prevenir erros por mudanças incompletas
  20. 20. Mining Version History to Guide Software Changes  Protótipo – ROSE (Reengineering Of Software Evolution) Ideia de sugestão, como em sites de compra: “Clientes que compraram este item também compraram ...” “Desenvolvedores que alteraram este método também alteraram ...” Consegue prever 26% das mudanças futuras a serem feitas. 15% das funções e variáveis. As três primeiras sugestões contém uma localização correta com probabilidade de 64%.
  21. 21. Mining Version History to Guide Software Changes
  22. 22. Mining Version History to Guide Software Changes Ameaças à validade: O estudo foi feito com 10761 transações de oito projetos open-source. Apesar dos projetos serem diferentes, não é possível afirmar que o histórico de versionamento represente todos os tipos de projetos de desenvolvimento de softwares. A ordem das transações não é levada em consideração, dificultando a prevenção de erros. A qualidade das transações não foi verificada. Portanto, transações não-desejadas também foram incluídas como possíveis sugestões. ROSE pode distrair, se um programador experiente já sabe as mudanças futuras a serem feitas. Essa ameaça só poderia ser refutada em estudos com usuários reais, que não foram realizados.
  23. 23. The MSR Cookbook – Mining a Decade of Research Hemmati et al. (MSR – 2013) Survey de todos os 117 full papers publicados no MSR entre 2004 e 2012 Método utilizado é o de Data Mining Objetivo: produzir um guia de boas práticas
  24. 24. The MSR Cookbook – Mining a Decade of Research Foram extraídos 268 comentários feitos pelos autores dos 117 papers Os comentários foram categorizados em quatro temas: Aquisição e preparação de dados Síntese Análise Compartilhamento e replicação Foram identificadas recomendações em comum dentro dos temas e como evoluíram As recomendações foram publicadas em um fórum para serem evoluídas
  25. 25. The MSR Cookbook – Mining a Decade of Research Aquisição e preparação de dados 7 de 16 recomendações, a maioria relacionada a como e o que extrair de repositórios, códigos-fonte, listas de email, etc. e como os dados devem ser pré- processados. Síntese 4 de 16 recomendações, sobre mineração de textos, classificação de dados, predição, etc. Análise 4 de 16 recomendações, sobre análise estatística e avaliação dos métodos de síntese Compartilhamento e replicação Apenas 1 recomendação das 16, sobre como melhorar a reprodutibilidade dos estudos de MSR.
  26. 26. The MSR Cookbook – Mining a Decade of Research
  27. 27. The MSR Cookbook – Mining a Decade of Research Processo de pesquisa Descrição dos dados: Os comentários deveriam aparentar ser generalizáveis e ter evidências no artigo os suportando. Também foram extraídos os nomes de ferramentas usadas ou desenvolvidas. Critério para seleção das recomendações: apenas full papers da conferência de MSR. Uma recomendação deveria aparecer em pelo menos 5 artigos. Categorização: Card sorting, resultando em 28 categorias que foram unidas nos 4 grande temas. Representação dos resultados: Citação com o número de comentários que rementem à recomendação.
  28. 28. The MSR Cookbook – Mining a Decade of Research Aquisição e preparação de dados: Código-fonte
  29. 29. The MSR Cookbook – Mining a Decade of Research Aquisição e preparação de dados: Issues e Patches
  30. 30. The MSR Cookbook – Mining a Decade of Research Aquisição e preparação de dados: Artefatos de comunicação
  31. 31. The MSR Cookbook – Mining a Decade of Research Aquisição e preparação de dados: Mineração de texto
  32. 32. The MSR Cookbook – Mining a Decade of Research Aquisição e preparação de dados: Modelando os desenvolvedores
  33. 33. The MSR Cookbook – Mining a Decade of Research Síntese:
  34. 34. The MSR Cookbook – Mining a Decade of Research Análise:
  35. 35. The MSR Cookbook – Mining a Decade of Research Compartilhamento e replicação:
  36. 36. The MSR Cookbook – Mining a Decade of Research Evolução dos artigos por tema
  37. 37. The MSR Cookbook – Mining a Decade of Research Distribuição das recomendações
  38. 38. Failure is a Four-Letter Word – A Parody in Empirical Research – Objetivo: IROP, um método simples, leve e de fácil implementação para prever e evitar falhas em sistemas de software usando features elementares de codificação. Objetivo real: crítica a estudos empíricos mal elaborados e mal avaliados, mostrando o que devemos e não devemos fazer.
  39. 39. Failure is a Four-Letter Word – A Parody in Empirical Research – Hipóteses: H1 – IROP pode prever defeitos a partir de “ações do desenvolvedor” H2 – Se H1 é verdadeiro, IROP pode isolar “ações do desenvolvedor” propensas a erros H3 – IROP pode prevenir erros restringindo “ações do desenvolvedor” Objeto de estudo: Eclipse 2.0 e 3.0 bug dataset (17000+ arquivos)
  40. 40. Failure is a Four-Letter Word – A Parody in Empirical Research – Variáveis independentes: As ações do programador foram modeladas nas 256 possíveis teclas digitadas. “espaço”, “e”, “t” são as de maior ocorrência
  41. 41. Failure is a Four-Letter Word – A Parody in Empirical Research – Variável dependente: Se o arquivo é propenso a defeitos ou não
  42. 42. Failure is a Four-Letter Word – A Parody in Empirical Research – Predição de defeitos pelas ações do programador Hipótese nula: a distribuição de caracteres NÃO é suficiente para prever a propensão a erros.
  43. 43. Failure is a Four-Letter Word – A Parody in Empirical Research – Precisão e sensibilidade máximas de 74% e 32% respectivamente “Ação do programador” é excelente para prever defeitos!
  44. 44. Failure is a Four-Letter Word – A Parody in Empirical Research – Ação do programador  Defeitos Hipótese nula: não há correlação entre distribuição de caracteres e propensão a defeitos
  45. 45. Failure is a Four-Letter Word – A Parody in Empirical Research –
  46. 46. Failure is a Four-Letter Word – A Parody in Empirical Research – Trabalhos futuros: Automação: plug-ins para IDEs para refatorar os códigos existentes, removendo as letras Abstração: verificar se existe. Será que os programadores inconscientemente associam as letras a termos como “failure”,”mistake”,”error”,”problem”,”bug report”? As palavras “fame” e “success” não contém as letras i,r,o,p! Generalização: os autores estão estudando códigos-fonte russos para saber se os caracteres equivalentes ИРОП também mantém a correlação e estão muito otimistas que sim!
  47. 47. Failure is a Four-Letter Word – A Parody in Empirical Research – Por que isso tudo está errado?? Correlações não implicam em causas Não confunda causas e sintomas Poucas descobertas generalizam Cuidado com “cherry-picking” (falácia) Cuidado com fraudes Ameaças à validade devem ajudar a entender Transforme descobertas em ações Solucione causas e não sintomas Trabalhe com dados reais
  48. 48. Don’t program on Fridays Marco Aurélio Gerosa (gerosa@imeh.uttspp.:b/r/) www.slideshare.net/taoxiease/software-analytics-towards-software-mining- March/2014 that-matters

×