Mining software repositories

49
Mining Software Repositories Rafael Germano Rossi Departamento de Ciência de Computação – IME/USP

description

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.

Transcript of Mining software repositories

Page 1: Mining software repositories

Mining Software Repositories

Rafael Germano Rossi

Departamento de Ciência de Computação – IME/USP

Page 2: Mining software repositories

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

Page 3: Mining software repositories

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.

Page 4: Mining software repositories

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?

Page 5: Mining software repositories

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

Page 6: Mining software repositories

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/

Page 7: Mining software repositories

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

Page 8: Mining software repositories

Mining Software Repositories - Ferramentas

Page 9: Mining software repositories

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.

Page 10: Mining software repositories

If Your Version System Could Talk...

Relação entre visões dentro do desenvolvimento de software

Page 11: Mining software repositories

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

Page 12: Mining software repositories

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

Page 13: Mining software repositories

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

Page 14: Mining software repositories

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.

Page 15: Mining software repositories

If Your Version System Could Talk...

Page 16: Mining software repositories

If Your Version System Could Talk...

Page 17: Mining software repositories

If Your Version System Could Talk...

Page 18: Mining software repositories

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

Page 19: Mining software repositories

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

Page 20: Mining software repositories

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%.

Page 21: Mining software repositories
Page 22: Mining software repositories

Mining Version History to Guide

Software Changes

Page 23: Mining software repositories

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.

Page 24: Mining software repositories

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

Page 25: Mining software repositories

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

Page 26: Mining software repositories

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.

Page 27: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Page 28: Mining software repositories

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.

Page 29: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Aquisição e preparação de dados:

Código-fonte

Page 30: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Aquisição e preparação de dados:

Issues e Patches

Page 31: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Aquisição e preparação de dados:

Artefatos de comunicação

Page 32: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Aquisição e preparação de dados:

Mineração de texto

Page 33: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Aquisição e preparação de dados:

Modelando os desenvolvedores

Page 34: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Síntese:

Page 35: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Análise:

Page 36: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Compartilhamento e replicação:

Page 37: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Evolução dos artigos por tema

Page 38: Mining software repositories

The MSR Cookbook – Mining a Decade

of Research

Distribuição das recomendações

Page 39: Mining software repositories

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.

Page 40: Mining software repositories

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)

Page 41: Mining software repositories

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

Page 42: Mining software repositories

Failure is a Four-Letter Word

– A Parody in Empirical Research –

Variável dependente:

Se o arquivo é propenso a defeitos ou não

Page 43: Mining software repositories

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.

Page 44: Mining software repositories

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!

Page 45: Mining software repositories

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

Page 46: Mining software repositories

Failure is a Four-Letter Word

– A Parody in Empirical Research –

Page 47: Mining software repositories

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!

Page 48: Mining software repositories

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

Page 49: Mining software repositories

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