Predição de bugs

Preview:

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

Predição de Bugs

A Bug’s Life

Apresentado porReinildo Souza Wagner Bittencourt

Roteiro

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

○ FixCache○ Rahman○ TWR

● Características esperadas dos algoritmos

O que é Predição de Bugs?

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

bugs passados.

Predição de Bugs no

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.

Predição de Bugs no

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

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

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.

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.

machine learnings + análises estatísticas

Predição de Bugs no

Identificando hot spots

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

RahmanEncontrou um algoritmo simples que funciona tão bem quanto

algoritmos de predição de bugs mais complexos.

Predição de Bugs no

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

Predição de Bugs funciona com desenvolvedores humanos?

Descobrindo a partir de um caso de estudo do Google

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

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

bugs a partir de 3 questões da pesquisas:

Objetivo da pesquisa

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

preferido?

Objetivo da pesquisa

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

deveria ter?

Objetivo da pesquisa

Q 3: Os desenvolvedores mudaram seus comportamentos quando apresentados

aos resultados de predição de bugs?

Objetivo da pesquisa

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

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

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

Resultado da pesquisa

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

Resultado da pesquisa

FixCacheUm dos mais populares no meio

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

Escolha do algoritmo

FixCacheUtilizando várias localidades, cria um

cache de arquivos que foram sinalizados como potenciais bugs.

Escolha do algoritmo

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

RahmanConcluiu que a densidade de bugs de

arquivos na cache é geralmente maior que fora da cache.

Escolha do algoritmo

RahmanUtiliza os números de bugs

encerradospara rankear arquivos de mais propensos a bug ao menos

propenso a bug.

Escolha do algoritmo

FixCache + Rahman

Escolha do algoritmo

Performance + simplicidadeum completa o outro

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

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.

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.

Resultados

Resultados

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

propensão de bugs.

Algoritmo Time -Weighted Risk

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.

Algoritmo Time -Weighted Risk, exemplo passo a passo.

Algoritmo Time -Weighted Risk, exemplo.

Algoritmo Time -Weighted Risk, exemplo.

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

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

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