Hay muchas afirmaciones sobre la existencia de grupos de errores o defectos. Una búsqueda simple revela múltiples resultados, por ejemplo: 1 , 2 , 3 , 4 , 5 .
Sin embargo, toda la evidencia citada es anecdótica y no pude encontrar ningún dato concreto que respalde esto. Si bien mi propia experiencia no contradice estas afirmaciones, a las personas les encanta ver patrones incluso cuando no hay ninguno (incluso la distribución uniforme de errores producirá grupos, y podría ser más fácil recordar cuándo debe corregir 10 errores en un lugar en lugar de 10 cosas no relacionadas en toda la base de código).
Realmente tengo curiosidad por saber si este fenómeno existe, pero no pude encontrar ninguna fuente objetiva o incluso semiobjetiva (como en pruebas, experimentos, estudios, etc.) que mostraría que la agrupación de defectos realmente ocurre.
Por supuesto, estoy de acuerdo con asumir la hipótesis de agrupación de errores como una buena práctica (incluso si es falsa, no dolerá demasiado). Por otro lado, los datos concretos podrían arrojar algo de luz sobre por qué sucede. ¿Es por esos días que uno tiene un terrible dolor de cabeza (por alguna razón)? ¿O tal vez porque algunas partes del código son simplemente difíciles y otras son fáciles? ¿O tal vez es el lugar de responsabilidad de esos dos ingenieros que no se quieren?
Mi pregunta: ¿existe el efecto de agrupamiento de defectos? ¿Existe algún dato concreto no anecdótico que se explique mejor con esta hipótesis?
fuente
Respuestas:
No tengo ningún dato a mano, pero estoy bastante seguro de que la hipótesis de agrupación es cierta. La mejor suposición es que estos dos casos ocurren con mayor o menor frecuencia:
un fragmento de código o algoritmo es complejo (tal vez la implementación es más compleja de lo necesario) y el programador original no entendió completamente lo que su código podría hacer debido a la complejidad.
el código no se probó bien
Y, por supuesto, una combinación de ambos. Las pruebas son difíciles, pero probar un código complejo es mucho más difícil en un orden de magnitud. Y con el aumento de la complejidad, especialmente cuando el código no está bien probado, en mi experiencia, el número de errores potenciales en un fragmento de código aumenta desproporcionadamente alto.
Entonces, si encuentra varios errores en un código dado, es muy probable que sea un código complejo y mal probado, lo que le brinda una alta posibilidad de encontrar más en la misma área.
fuente
Los estudios formales como este rara vez existen en el desarrollo de software, probablemente porque la programación (a pesar de su asociación con las máquinas) es principalmente un esfuerzo humano, no una máquina.
Ayer estaba arreglando un error en una declaración SQL que involucraba dos declaraciones SELECT y una UNION. Ambos SELECT estaban devolviendo el mismo resultado debido a un simple error en un JOIN. Sin embargo, al solucionar el problema, se descubrió otro error que estaba siendo enmascarado por el primer error.
fuente
En mi experiencia:
La agrupación ocurre cuando el trabajo se interrumpe. Digamos que alguien se retira del proyecto para que su trabajo no se pruebe completamente, o tal vez ni siquiera se complete, y / o los resultados no se entiendan completamente.
La agrupación también ocurre debido al problema del "mal programador". Digamos que 5 personas trabajaron en algo y una de ellas estaba por debajo del estándar. Los errores estarán asociados con su trabajo.
Se aplica el Principio de Pareto (también conocido como la regla 80/20). Aproximadamente el 80% de los efectos provienen del 20% de las causas. https://en.wikipedia.org/wiki/Pareto_principle Tenga en cuenta que esta observación se remonta a antes de las computadoras.
fuente
No hay paradoja en la agrupación de errores. Y nuestros prejuicios cognitivos avivan la llama.
Según la distribución normal en cualquier momento dado, algunas partes de la base de código son significativamente más defectuosas que otras. Cualquier error nuevo es más probable que se encuentre en la parte con errores.
Entonces, el que está a punto de arreglar ya está condenado a una buena oportunidad de tener una empresa.
Es lo mismo que "las desgracias nunca llegan solas".
fuente