Mineração de Repositórios de Defeitos

46
Mineração de repositórios de defeitos Oportunidades e Desafios Rodrigo Souza, 20/12/2012, aula de Evolução de Software

description

Apresentado na disciplina MATE08 - Evolução de Software, da UFBA, em 2012.2

Transcript of Mineração de Repositórios de Defeitos

Page 1: Mineração de Repositórios de Defeitos

Mineração de repositórios de defeitos

Oportunidades e Desafios

Rodrigo Souza, 20/12/2012, aula de Evolução de Software

Page 2: Mineração de Repositórios de Defeitos

Introdução

Page 3: Mineração de Repositórios de Defeitos

Durante o desenvolvimento de software, defeitos* são relatados em sistemas de acompanhamento de defeitos(aka, repositórios de defeitos)

Artefato: relatório de defeito ou tíquete

* e, às vezes, requisições de funcionalidade

3

Page 4: Mineração de Repositórios de Defeitos

4

Criação de Tíquete

Page 5: Mineração de Repositórios de Defeitos

5

Page 6: Mineração de Repositórios de Defeitos

6

Page 7: Mineração de Repositórios de Defeitos

7

Page 8: Mineração de Repositórios de Defeitos

7

FIXED / DUPLICATE / WONTFIX / WORKSFORME / INVALID

Page 9: Mineração de Repositórios de Defeitos

RESOLVED/FIXED

VERIFIED

REOPENED

8

Page 10: Mineração de Repositórios de Defeitos

Oportunidades e Desafios

Page 11: Mineração de Repositórios de Defeitos

• Repositórios de defeitos têm informações...

• ... sobre o produto (defeitos)

• ... sobre o processo (atividades, interação entre desenvolvedores)

Repositório de defeitos

Page 12: Mineração de Repositórios de Defeitos

Repositório de defeitos

• Oportunidade de estudar como características do processo afetam a qualidade do produto

Page 13: Mineração de Repositórios de Defeitos

Código e Defeitos

• Algumas pesquisas cruzam dados de relatórios de defeitos e código-fonte

• Mapeamento entre commit e bug, ex.: “Resolve o bug #1437.”

• O código original que foi alterado é o código defeituoso.

• O commit que criou o código original é uma mudança que induziu o defeito

Page 14: Mineração de Repositórios de Defeitos

Código e Defeitos

• Data sets (para cada componente do código-fonte, contagem de defeitos):

• http://www.st.cs.uni-saarland.de/ibugs/

• http://www.st.cs.uni-saarland.de/softevo/bug-data/eclipse/

• http://bug.inf.usi.ch/

Page 15: Mineração de Repositórios de Defeitos

Trabalhos (código e defeitos)

• code ownership => defeitos

• convenções de código => defeitos

• code churn => defeitos

• predição de defeitos

• predição do tempo de correção

Page 16: Mineração de Repositórios de Defeitos

Desafios

• Identificação de desenvolvedores com múltiplas contas no sistema de controle de versão (VCS) ou no sistema de acompanhamento de defeitos (BTS)

• Mapeamento de contas entre VCS e BTS

• Viés no mapeamento de bugs para código

• Nem todos os bugs são mapeados

Page 17: Mineração de Repositórios de Defeitos

Amostra representativa

Page 18: Mineração de Repositórios de Defeitos

Amostra representativa

Page 19: Mineração de Repositórios de Defeitos

Amostra enviesada

Page 20: Mineração de Repositórios de Defeitos

Outros trabalhos

• Triagem automática de tíquetes

• Detecção de tíquetes duplicados (Yguaratã)

• Atribuição de tíquetes a desenvolvedores

Page 21: Mineração de Repositórios de Defeitos

Reabertura de defeitos

• Reabertura => retrabalho

• Trabalhos

• Causa de reabertura

• Predição de reabertura

• Custo da reabertura

Page 22: Mineração de Repositórios de Defeitos

Reabertura

• Oportunidade de estudar a eficácia do processo de verificação usando apenas dados do repositório de defeitos

• Ideia básica: se o tíquete foi verificado e depois reaberto, a verificação não foi efetiva

Page 23: Mineração de Repositórios de Defeitos

Minha Pesquisa

21

Page 24: Mineração de Repositórios de Defeitos

Dados

• MSR Challenge 2011 - http://2011.msrconf.org/msr-challenge.html

• Dump do MySQL do Bugzilla do Eclipse e do NetBeans

Page 25: Mineração de Repositórios de Defeitos

Dados

Page 26: Mineração de Repositórios de Defeitos

Como aproveitar relatórios de defeito para minerar o

processo de verificação? Há ruído nos dados?

24

(Objetivo Específico 1)

Page 27: Mineração de Repositórios de Defeitos

25

há ruídos nos dados?

quando é feita a verificação?

quem faz a verificação?

como é feita a verificação?

(RQ1.4)

(RQ1.1)

(RQ1.2)

(RQ1.3)

Page 28: Mineração de Repositórios de Defeitos

verificações em massa

há ruídos nos dados?

26

Page 29: Mineração de Repositórios de Defeitos

há ruídos nos dados?

No Eclipse Modelling Framework, VERIFIED significa que o patch está disponível em uma build.

27

Page 30: Mineração de Repositórios de Defeitos

fase de verificação

quando é feita a verificação?

28

Page 31: Mineração de Repositórios de Defeitos

quem faz a verificação?

29

time deQA

10

Page 32: Mineração de Repositórios de Defeitos

quem faz a verificação?

29

20% dos desenvolvedores

time deQA

10

Page 33: Mineração de Repositórios de Defeitos

quem faz a verificação?

29

20% dos desenvolvedores

time deQA

80% das verificações

10

Page 34: Mineração de Repositórios de Defeitos

como é feita a verificação?

30

A maioria dos comentários não traz informação sobre a técnica empregada.

Page 35: Mineração de Repositórios de Defeitos

Resumo

31

Fase de verificação ✓ ✗

Time de QA ✗ ✓

Comentários raramente mencionam técnica de verificação.⚠ Cuidado com verificações em massa.

Page 36: Mineração de Repositórios de Defeitos

Será que determinadas práticas de verificação são

mais eficazes do que outras no sentido de evitar

reaberturas?(em andamento)

32

Page 37: Mineração de Repositórios de Defeitos

4 olhos

33

Page 38: Mineração de Repositórios de Defeitos

4 olhos

• Hipótese: bugs verificados por outra pessoa (4 olhos) estão menos sujeitos a serem reabertos (depois da verificação)

33

Page 39: Mineração de Repositórios de Defeitos

4 olhos

• Hipótese: bugs verificados por outra pessoa (4 olhos) estão menos sujeitos a serem reabertos (depois da verificação)

• Dados: 34 subprojetos do Eclipse

33

Page 40: Mineração de Repositórios de Defeitos

4 olhos

• Hipótese: bugs verificados por outra pessoa (4 olhos) estão menos sujeitos a serem reabertos (depois da verificação)

• Dados: 34 subprojetos do Eclipse

• Método: teste exato de Fisher

33

Page 41: Mineração de Repositórios de Defeitos

4 olhos

• Hipótese: bugs verificados por outra pessoa (4 olhos) estão menos sujeitos a serem reabertos (depois da verificação)

• Dados: 34 subprojetos do Eclipse

• Método: teste exato de Fisher

• Resultado: inconclusivo

33

Page 42: Mineração de Repositórios de Defeitos

Exemplo de tabela de contingência

não reabriu

reabriu

2 olhos 1985 108

4 olhos 11366 125

Page 43: Mineração de Repositórios de Defeitos

• A chance de o bug ser reaberto após a verificação é menor quando...

• ... a verificação é feita pelo time de QA?inconclusivo

• ... a verificação é feita durante a fase de verificação?sim (em 2/4 dos projetos)

• ... uma determinada técnica de verificação é empregada (testes, inspeção etc.)?sim, no caso de inspeção de código no Eclipse/Platform

35

Page 44: Mineração de Repositórios de Defeitos

Misc

36

Page 45: Mineração de Repositórios de Defeitos

Mostrar

• SQuirreLSQL

• bugview (Ruby + Sinatra)

• R

• DAPSE ’13: Padrões para análise de bug reports

Page 46: Mineração de Repositórios de Defeitos

Ferramentas úteis

• Análise de dados

• R. RStudio. KNIME. Weka. Orange.

• Extração de tíquetes

• http://metricsgrimoire.github.com/Bicho/