Mining Software Repositories: Using Humans to Better Software
Mining software repositories
-
Upload
rafael-rossi -
Category
Data & Analytics
-
view
106 -
download
3
description
Transcript of Mining software repositories
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 Could Talk...
Mining Version History to Guide Software Changes
The MSR Cookbook – Mining a Decade of Research
Failure is a Four-Letter Word
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.
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?
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
Mining Software Repositories - Fontes
March/2014 Marco Aurélio Gerosa ([email protected])
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/
Mining software repositories
March/2014 Marco Aurélio Gerosa ([email protected])
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
CoordinationCooperation
3C Model*
Discussion lists Comments on issues Code comments User reports Q&A sites Social media Source code
and artifacts Issue trackers Project management systems Reputation systems
Applications
Tag cloud from MSR 2014 CFP
Mining Software Repositories - Ferramentas
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.
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
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
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
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
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.
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
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
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
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%.
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 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.
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
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
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.
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 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.
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 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.
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)
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
Failure is a Four-Letter Word
– A Parody in Empirical Research –
Variável dependente:
Se o arquivo é propenso a defeitos ou não
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.
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!
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
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 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!
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
Don’t program on Fridays
March/2014 Marco Aurélio Gerosa ([email protected]) http://www.slideshare.net/taoxiease/software-analytics-towards-software-mining-
that-matters