43
Predição de Bugs A Bug’s Life Apresentado por Reinildo Souza Wagner Bittencourt

Predição de bugs

Embed Size (px)

DESCRIPTION

Seminário de Predição de Bugs apresentado na disciplina de Evolução e Manutenção de Software, baseado no artigo "Does Bug Prediction Support Human Developers? Findings From a Google Case Study"

Citation preview

Page 1: Predição de bugs

Predição de Bugs

A Bug’s Life

Apresentado porReinildo Souza Wagner Bittencourt

Page 2: Predição de bugs

Roteiro

● Introdução● Predição de Bugs no Google● Descrição dos algoritmos

○ FixCache○ Rahman○ TWR

● Características esperadas dos algoritmos

Page 3: Predição de bugs

O que é Predição de Bugs?

Page 4: Predição de bugs

O que é Predição de Bugs?É a tentativa de prever futuros bugs, tendo como base dados de

bugs passados.

Page 5: Predição de bugs

Predição de Bugs no

Page 6: Predição de bugs

Predição de Bugs no

Milhares de engenheiros trabalhando na base de códigos todo dia.50% deste código muda a cada mês.

Page 7: Predição de bugs

Predição de Bugs no

Como assegurar que toda essa base de código permaneça saudável?

Page 8: Predição de bugs

Predição de Bugs no

Como assegurar que toda essa base de código permaneça saudável?■ Testes de unidade ■ Revisão de código■ Criar novos testes de unidade para novas

funcionalidades

Page 9: Predição de bugs

Predição de Bugs no

“Looks Good To Me”

O revisor de códigos analisa se os testes ficaram verdes e se faz o que deveria. Então carimba com L.G.T.M.

Page 10: Predição de bugs

Predição de Bugs no

Hot SpotsCódigos que criam problemas várias e várias

vezes quando desenvolvedores tentam consertá-lo.

Resistentes aos testes de unidade.

Page 11: Predição de bugs

machine learnings + análises estatísticas

Predição de Bugs no

Identificando hot spots

Page 12: Predição de bugs

FixCacheBug tracker que analisa a partir de uma fonte de logs de commits.

Ajuda a identificar os hot spots e alertar os desenvolvedores.

Predição de Bugs no

Page 13: Predição de bugs

RahmanEncontrou um algoritmo simples que funciona tão bem quanto

algoritmos de predição de bugs mais complexos.

Predição de Bugs no

Page 14: Predição de bugs

RahmanRankeia os arquivos pelo número de vezes que foi modificado

para bug-fixing. Mostra onde estão os hot spots.

Predição de Bugs no

Page 15: Predição de bugs

Predição de Bugs funciona com desenvolvedores humanos?

Descobrindo a partir de um caso de estudo do Google

Page 16: Predição de bugs

Algoritmos são baseados em aspectos de como o código foi desenvolvido e

várias métricas que o código exibe, em vez da análise tradicional

Page 17: Predição de bugs

Investigar como desenvolvedores respondem a algoritmos de predição de

bugs a partir de 3 questões da pesquisas:

Objetivo da pesquisa

Page 18: Predição de bugs

Q 1: Quantos arquivos propensos a bug eles achariam e qual o algoritmo

preferido?

Objetivo da pesquisa

Page 19: Predição de bugs

Q 2: Quais caracterísiticas desejáveis que um algoritmo de predição de bugs

deveria ter?

Objetivo da pesquisa

Page 20: Predição de bugs

Q 3: Os desenvolvedores mudaram seus comportamentos quando apresentados

aos resultados de predição de bugs?

Objetivo da pesquisa

Page 21: Predição de bugs

Para responder as perguntas foi feita uma parceria com o depto. de Engenheiros de

Ferramentas para avaliar vários algoritmos e desenvolver um no Google

Resultado da pesquisa

Page 22: Predição de bugs

As questões foram direcionas de 3 maneiras:Q 1 - Estudo de usuário formalQ 2 - Discussão informal entre desenvolvedoresQ 3 - Dados quantitativos do sistema de code review do Google

Resultado da pesquisa

Page 23: Predição de bugs

Desenvolvedores preferem algoritmos de predição que mostram arquivos com um grande número de bugs encerrados

Resultado da pesquisa

Page 24: Predição de bugs

...e que apresentam um número de características desejáveis que um algoritmo de predição deveria ter.

Resultado da pesquisa

Page 25: Predição de bugs

FixCacheUm dos mais populares no meio

acadêmico, é um algoritmo que usa a ideia de “localidade” de bug.

Escolha do algoritmo

Page 26: Predição de bugs

FixCacheUtilizando várias localidades, cria um

cache de arquivos que foram sinalizados como potenciais bugs.

Escolha do algoritmo

Page 27: Predição de bugs

FixCacheQuando um arquivo encontra uma

dessas localidades críticas, entra na cache, e um novo arquivo é substituído

pela política de L.R.U.

Escolha do algoritmo

Page 28: Predição de bugs

RahmanConcluiu que a densidade de bugs de

arquivos na cache é geralmente maior que fora da cache.

Escolha do algoritmo

Page 29: Predição de bugs

RahmanUtiliza os números de bugs

encerradospara rankear arquivos de mais propensos a bug ao menos

propenso a bug.

Escolha do algoritmo

Page 30: Predição de bugs

FixCache + Rahman

Escolha do algoritmo

Performance + simplicidadeum completa o outro

Page 31: Predição de bugs

Analisando Q 1

Estudo de usuários

utiliza o conhecimento do desenvolvedor para descobrir se os arquivos sinalizados como bugs batem com a intuição do

desenvolvedor

Page 32: Predição de bugs

Analisando Q 2

Estudo de usuários

Entrevistas: Foram secionados dois projetos A e B, e o grupo de entrevistados

também foram dividos em 2.Cada um recebeu 3 listas com 20 arquivos. Eles deviam marcar se

os arquivos eram propensos a bugs.

Page 33: Predição de bugs

Analisando Q 3

Estudo de usuários

Classificação das respostas adquiridas. ● Bug-prone: ao menos 3 respostas devem indicar como propenso a bug.● Não bug-prone: mesmo método é usado de forma reversa● O arquivo não é classificado, e se receber 5 respostas que indicam não saber o

arquivo é classificado como desconhecido.

Page 34: Predição de bugs

Resultados

Page 35: Predição de bugs

Resultados

Page 36: Predição de bugs

Derivado do algoritmo de Rahman, tem o objetivo de marcar os arquivos com

propensão de bugs.

Algoritmo Time -Weighted Risk

Page 37: Predição de bugs

Algoritmo Time -Weighted Risk i → commit de correção de bug.

n → número de commits de correções.

ti → tempo normalizado do commit para correção de bug.

w →define o quão forte a decadência deve ser.

Page 38: Predição de bugs

Algoritmo Time -Weighted Risk, exemplo passo a passo.

Page 39: Predição de bugs

Algoritmo Time -Weighted Risk, exemplo.

Page 40: Predição de bugs

Algoritmo Time -Weighted Risk, exemplo.

Page 41: Predição de bugs

A predição de bugs não proporciona resultados totalmente precisos e seu

público-alvo deve ser a equipe de qualidade de software.

Conclusão

Page 42: Predição de bugs

Referências

● Bug Prediction at Google - http://google-engtools.blogspot.com.br/2011/12/bug-prediction- at-google.html

● Chris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, E. James Whitehead Jr. “Does Bug Prediction Support Human Developers? Findings From a Google Case Study”, http://static.googleusercontent.com/media/research.google.com/pt-BR//pubs/archive/ 41145.pdf

Page 43: Predição de bugs

Imagens● A Bug’s Life - http://prod.entertainment.telly.sky.com/image/unscaled/2013/03/07/A-Bugs-Life-CW-02.

jpg● Logo Google 2013 Official - http://pt.wikipedia.org/wiki/Ficheiro:Logo_Google_2013_Official.svg● Thumbs up answer - http://images.sodahead.com/polls/001083119/thumbsup_answer_4_xlarge.jpeg● Hot spots on dogs - http://www.petmd.com/sites/default/files/hotspot3.jpg● Budget + Goals - http://1.bp.blogspot.com/-tU6IeBU_1sc/UGTR-

gpypdI/AAAAAAAAAD0/KNFQaoAPXQ Q/s1600/Budget+Goals.png