predição de bugs
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"TRANSCRIPT
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