Therac-25!
Los desarrolladores del proyecto Therac-25 confiaban bastante en la sincronización entre una interfaz de usuario y un problema relacionado con la interfaz en una máquina terapéutica XRAY.
No deberían haber sido.
Puede obtener más información sobre este famoso desastre del software de vida o muerte en:
enlace
o
enlace
Su aplicación puede ser mucho menos sensible a fallas que los dispositivos médicos. Un método útil es calificar la exposición al riesgo como el producto de la probabilidad de ocurrencia y el costo de ocurrencia durante la vida útil del producto para todas las unidades que podrían producirse.
Si eligió compilar su código para que dure (y parece que lo ha hecho), debería considerar la ley de Moore, que puede eliminar fácilmente varios ceros cada pocos años a medida que las computadoras dentro o fuera de su sistema se vuelven más rápidas. Si envía miles de copias, corte más ceros. Si los usuarios realizan esta operación diariamente (o mensualmente) durante años, retire algunos más. Si se usa donde está disponible la fibra de Google, ¿entonces qué? Si la basura de la interfaz de usuario recolecta una operación GUI media, ¿eso afecta la carrera? ¿Está utilizando una biblioteca de código abierto o de Windows detrás de su GUI? ¿Las actualizaciones pueden afectar el tiempo?
Los semáforos, bloqueos, exclusión mutua, sincronización de barreras son algunas de las formas de sincronizar actividades entre subprocesos. Potencialmente, si no los está utilizando, otra persona que mantiene su programa puede hacerlo y luego las suposiciones sobre las relaciones entre los hilos pueden cambiar y el cálculo sobre la condición de la carrera podría ser invalidado.
Le recomiendo que realice una sincronización explícita porque, si bien es posible que nunca vea que se crea un problema, un cliente puede hacerlo. Además, incluso si su condición de raza nunca ocurre, qué sucede si usted o su organización son llamados a los tribunales para defender su código (ya que Toyota estaba relacionado con el Prius hace unos años). Cuanto más completa sea su metodología, mejor le irá. Podría ser mejor decir "nos protegemos contra este caso improbable como este ..." que decir "sabemos que nuestro código fallará, pero escribimos esta ecuación para demostrar que no sucederá en nuestra vida. Probablemente. "
Parece que el cálculo de probabilidad proviene de otra persona. ¿Conocen su código y los conocen lo suficiente como para confiar en que no se cometió ningún error? Si calculé un 99,999997% de confiabilidad para algo, también podría recordar mis clases de estadísticas universitarias y recordar que no siempre obtuve el 100%, y retrocedí un poco por ciento en mis estimaciones de confiabilidad personal.