Quería tener una idea de clasificar los errores en función de lo fácil que es resolverlos y cuánto beneficio me dará. por ejemplo, si hay un error que tomará aproximadamente una hora (cierre doble de archivo, etc.) para resolverlo frente a otro que demore un día (falla de segmentación). Pero si resolver el primer error no es muy importante, entonces probablemente trabajaré en el segundo.
¿Existe algún trabajo de investigación que clasifique los errores en función de la relación costo-beneficio o una métrica similar?
Digamos que es posible clasificar los errores en función de sus características, por ejemplo, vulnerabilidad de seguridad, error de memoria, error lógico, etc. En la otra dimensión podría haber parámetros como dificultad (fácil, medio, difícil). ¿Hay otras dimensiones que debería estar buscando? Para simplificar las cosas, puedo suponer dos cosas:
- Todos los programadores del equipo son igualmente capaces de resolver cualquier error
- No hay fecha límite
fuente
Respuestas:
El sistema de seguimiento de errores típico tiene dos, tal vez tres campos que identifican la relación costo beneficio del error:
Como observa, esto identifica qué error es importante para trabajar.
El sistema presentado en PEF / REV: una métrica de seguimiento de errores multidimensional agrega más información sobre el negocio y los componentes del desarrollador para el beneficio del costo del error.
Todos los valores están en una escala 1 .. N (el mismo valor superior para cada uno).
PEF es identificado por el negocio:
REV viene del desarrollador:
Si, por ejemplo, tiene un bloqueo que ocurre con poca frecuencia y es fácil de solucionar (activar el autoguardado), podría ser un PEF de 7,1,1 (puntaje 9). Si bien la reparación puede implicar un cambio en un módulo central y tener un REV de 9,3,2 (puntaje 14).
Por otro lado, podrías tener una molestia que siempre está ahí (3,3,9 - puntaje 15) que tiene una solución trivial (1,1,3 - puntaje 5).
En este ejemplo, la molestia parece ser una mejor relación costo / beneficio para trabajar.
fuente
El problema que está describiendo es muy común y la mejor respuesta podría ser "usar su instinto".
Por lo general, divido los errores en tres categorías: bloqueo, molesto, cosmético (podrían llamarse 1, 2, 3, eso realmente no importa) y luego anoto una estimación general del tiempo necesario para corregir cada error (todos los errores deben tener una estimación actualizada aproximada en todo momento).
Al resolver errores Crashing> Molesto> Cosmético y luego simplemente hago un "trabajo más corto primero" para obtener el mayor rendimiento inicial posible.
Encuentro MUY difícil calcular cualquier tipo de beneficio financiero directo de la resolución de cualquier error, a menos que sea un trabajo remunerado muy limitado.
Una nota que puede necesitar es que realmente debería estar a la altura del quinto punto en The Joel Test , esto podría estar influenciado por el tamaño del equipo y la distribución entre varios otros problemas "locales", pero generalmente es un signo de buena práctica.
fuente
Otra consideración podría ser el tipo de prueba u organización de prueba que descubre el error, al tratar de determinar el impacto y el costo del error y corregirlo. Las pruebas unitarias o funcionales pueden apuntar a algo en el diseño que necesita ser cambiado y, por lo tanto, la corrección temprana sería más fácil y menos costosa que después. Las pruebas de sistema o integración pueden apuntar a algo que afecta a una variedad más amplia de clientes. Y las pruebas de estándares, aunque a menudo son algo no crítico para un gran subconjunto de clientes, pueden provocar una pérdida de certificación si no se corrigen y tener un impacto negativo en el negocio.
Dicho esto, solo porque una organización de prueba en particular tenga una falla en la prueba no debería automáticamente hacer que un error sea "crítico". Por ejemplo, puede haber una tentación de decir algo como "todas las pruebas del sistema deben pasar antes del envío, por lo tanto, cualquier prueba del sistema que falle automáticamente da como resultado un error crítico / de alta gravedad". Esperemos que ninguna organización haga esa declaración (los buenos criterios de salida de la prueba son una discusión diferente), pero el punto es que la "gravedad" del error debe juzgarse por su impacto en el cliente, el producto o la imagen de la empresa en lugar de dónde o cuándo Está descubierto.
Una posible forma de abordar eso es hacer una distinción entre "severidad" y "urgencia". Por ejemplo, a medida que se acerca la fecha de lanzamiento, puede haber presión de tiempo para determinar si un error de gravedad aparentemente menor podría afectar a un gran subconjunto de clientes, dándole al error una mayor "urgencia" y elevando el trabajo sobre ese error por encima (algunos) otros en menos hasta que se pueda hacer esa determinación. Un equilibrio adecuado entre los dos, junto con la experiencia y el buen juicio, ayudaría a dirigir dónde se gasta el tiempo y el esfuerzo.
fuente
Además de lo que otros han dicho sobre la clasificación de errores, etc., también considere mirar el Acoplamiento aferente (Ca) para determinar el nivel de criticidad que un error particular podría representar. Si tiene un error en un módulo con un alto recuento de Ca, podría estar tratando de solucionarlo primero, ya que podría beneficiar a otros componentes del sistema. Ca lo ayuda a determinar el nivel de responsabilidad, y los módulos responsables con errores perjudican a toda la aplicación (lea más sobre Ca aquí: http://www.ibm.com/developerworks/java/library/j-cq04256/index.html )
Con eso en mente, tendemos a clasificar los errores y colocarlos en prioridad según su impacto en el cliente. Su cliente variará, pero tenerlos involucrados en la discusión finalmente conducirá los errores que se deben corregir sobre los demás. No es realmente científico, pero como equipo completo tendemos a llegar a un consenso sobre la prioridad y la categorización de los errores, todos tienen aportes sobre los "grandes" (todos los interesados pueden dar su aporte), y desde allí apilamos.
fuente
No puede determinar el costo real de todos los errores. Algunos pueden, para muchos es muy difícil de cuantificar. Por ejemplo, supongamos que tiene un error que hace que todo el texto de los botones esté ligeramente desalineado. Hace que su producto 1.0 se vea un poco descuidado. Esto no hace que su programa se bloquee o que sus usuarios pierdan datos. Probablemente un error bastante barato, ¿verdad?
Ahora, ¿qué pasa si cada cliente suyo nota este problema y cada revisor lo menciona en las revisiones de su producto? ¿Y qué pasa si este error pasa de la versión 1.0 a 1.1 y 1.2? Su empresa ahora puede tener la reputación de ser un poco descuidada en el control de calidad. ¿Qué tan costoso podría ser este simple error en términos de posibles pérdidas de ventas para su empresa para futuros productos? O, ¿cómo podría afectar esto a una revisión que recibe su producto? Su producto puede satisfacer perfectamente las necesidades de sus clientes, pero solo obtiene un 9 de 10 porque se ve un poco descuidado.
Por lo tanto, no solo debe mirar el costo de un error específico en términos de lo que cuesta solucionarlo y su impacto directo en el usuario, sino que debe considerarlo en el contexto más amplio de cómo afecta la percepción de su producto en el mercado y cómo esa percepción afecta las ventas futuras.
Esto puede parecer exagerado pero no lo es. En el momento en que escribo esto, puede ir a otro sitio en la web que tiene un artículo sobre cómo Apple ha movido el "1" en su ícono de calendario por un píxel o dos. Si realiza una búsqueda, verá varios artículos negativos sobre este pequeño error. Por supuesto, esto no ha afectado directamente el resultado final de Apple, pero se promueven a sí mismos como el pináculo del buen diseño, por lo que tener un error de diseño afecta esa percepción, aunque solo sea un poco.
fuente