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
![Page 1: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/1.jpg)
Predição de Bugs
A Bug’s Life
Apresentado porReinildo Souza Wagner Bittencourt
![Page 2: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/3.jpg)
O que é Predição de Bugs?
![Page 4: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/5.jpg)
Predição de Bugs no
![Page 6: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/7.jpg)
Predição de Bugs no
Como assegurar que toda essa base de código permaneça saudável?
![Page 8: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/11.jpg)
machine learnings + análises estatísticas
Predição de Bugs no
Identificando hot spots
![Page 12: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/15.jpg)
Predição de Bugs funciona com desenvolvedores humanos?
Descobrindo a partir de um caso de estudo do Google
![Page 16: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/18.jpg)
Q 1: Quantos arquivos propensos a bug eles achariam e qual o algoritmo
preferido?
Objetivo da pesquisa
![Page 19: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/24.jpg)
...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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/26.jpg)
FixCacheUtilizando várias localidades, cria um
cache de arquivos que foram sinalizados como potenciais bugs.
Escolha do algoritmo
![Page 27: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/30.jpg)
FixCache + Rahman
Escolha do algoritmo
Performance + simplicidadeum completa o outro
![Page 31: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/33.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/34.jpg)
Resultados
![Page 35: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/35.jpg)
Resultados
![Page 36: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/38.jpg)
Algoritmo Time -Weighted Risk, exemplo passo a passo.
![Page 39: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/39.jpg)
Algoritmo Time -Weighted Risk, exemplo.
![Page 40: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/40.jpg)
Algoritmo Time -Weighted Risk, exemplo.
![Page 41: Predição de bugs](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/41.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/42.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022061607/55618712d8b42ae27d8b4667/html5/thumbnails/43.jpg)
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