Existem muitas alegações sobre a existência de grupos de bugs ou defeitos. Uma pesquisa simples revela vários resultados, por exemplo: 1 , 2 , 3 , 4 , 5 .
No entanto, todas as evidências citadas são anedóticas e não foi possível encontrar dados concretos para sustentar isso. Embora minha própria experiência não contradiga essas afirmações, as pessoas adoram ver padrões mesmo quando não existem (mesmo uma distribuição uniforme de bugs produzirá agrupamentos, e talvez seja mais fácil lembrar quando você precisar corrigir 10 bugs em um local em vez de 10 coisas não relacionadas em toda a base de código).
Estou genuinamente curioso se esse fenômeno realmente existe, mas não consegui encontrar nenhuma fonte objetiva ou mesmo semi-objetiva (como em teste, experimento, estudo etc.) que mostraria que o agrupamento de defeitos realmente acontece.
Obviamente, estou bem em assumir a hipótese de agrupamento de erros como boa prática (mesmo que seja falsa, não vai doer muito). Por outro lado, dados concretos podem esclarecer por que isso acontece. É por causa daqueles dias que se tem uma dor de cabeça terrível (por qualquer motivo)? Ou talvez porque algumas partes do código sejam difíceis e outras fáceis? Ou talvez seja o lugar de responsabilidade desses dois engenheiros que não se gostam?
Minha pergunta: O efeito de agrupamento de defeitos realmente existe? Existem dados concretos não-anedóticos que são melhor explicados por essa hipótese?
fonte
Respostas:
Não tenho dados em mãos, mas tenho certeza de que a hipótese de agrupamento é verdadeira. Meu palpite é que esses dois casos ocorrem com mais ou menos frequência:
um pedaço de código ou algoritmo é complexo (talvez a implementação seja mais complexa do que o necessário) e o programador original não entendeu completamente o que seu código poderia fazer devido à complexidade.
o código não foi testado bem
E - é claro - uma combinação de ambos. Testar é difícil, mas testar código complexo é muito mais difícil por uma ordem de magnitude. E com a complexidade crescente, especialmente quando o código não é bem testado, na minha experiência, o número de possíveis bugs em um trecho de código aumenta desproporcionalmente alto.
Portanto, se você encontrar vários erros em um determinado trecho de código, provavelmente é um trecho de código complexo e mal testado, o que oferece uma grande chance de encontrar mais deles na mesma área.
fonte
Estudos formais como esse raramente existem no desenvolvimento de software, provavelmente porque a programação (apesar de sua associação com as máquinas) é primariamente um empreendimento humano, não um empreendimento de máquinas.
Ontem eu estava corrigindo um bug em uma instrução SQL que envolvia duas instruções SELECT e uma UNION. Os dois SELECTs estavam retornando o mesmo resultado devido a um erro simples em um JOIN. Corrigir o problema, no entanto, descobriu outro bug que estava sendo mascarado pelo primeiro.
fonte
Em minha experiência:
O armazenamento em cluster ocorre quando o trabalho é interrompido. Digamos que alguém seja retirado do projeto para que seu trabalho não seja totalmente testado, ou talvez até concluído, e / ou os resultados não sejam totalmente compreendidos.
O armazenamento em cluster também ocorre devido ao problema do "programador ruim". Digamos que 5 pessoas trabalhem em alguma coisa e uma delas esteja abaixo do padrão. Os erros serão associados ao seu trabalho.
O Princípio de Pareto se aplica (também conhecida como regra 80/20). Aproximadamente 80% dos efeitos vêm de 20% das causas. https://en.wikipedia.org/wiki/Pareto_principle Observe que esta observação data de antes dos computadores.
fonte
Não há paradoxo no agrupamento de bugs. E nossos preconceitos cognitivos acendem a chama.
De acordo com a distribuição normal em um determinado momento, algumas partes da base de código são significativamente mais problemáticas do que outras. Qualquer novo bug é mais provável de ser encontrado na parte do buggy.
Portanto, o que você está prestes a corrigir já está condenado a uma boa chance de ter uma empresa.
É o mesmo que "infortúnios nunca vêm sozinhos".
fonte