Therac-25!
Gli sviluppatori del progetto Therac-25 erano piuttosto fiduciosi sui tempi tra un'interfaccia utente e un problema relativo all'interfaccia in una macchina XRAY terapeutica.
Non avrebbero dovuto essere.
Puoi saperne di più su questo famoso disastro software vita-e-morte a:
http://www.youtube.com/watch?v=izGSOsAGIVQ
o
http://en.wikipedia.org/wiki/Therac-25
L'applicazione potrebbe essere molto meno sensibile ai guasti rispetto ai dispositivi medici. Un metodo utile è valutare l'esposizione al rischio come il prodotto della probabilità di accadimento e il costo dell'occorrenza nel corso della vita del prodotto per tutte le unità che potrebbero essere prodotte.
Se hai scelto di costruire il tuo codice per durare (e sembra che tu abbia), dovresti considerare la legge di Moore che può facilmente eliminare diversi zeri ogni pochi anni man mano che i computer all'interno o all'esterno del tuo sistema diventano più veloci. Se spedisci migliaia di copie, elimina più zeri. Se gli utenti eseguono questa operazione quotidianamente (o mensilmente) per anni, eliminane alcuni. Se viene utilizzato dove è disponibile la fibra di Google, che cosa succede? Se la spazzatura dell'interfaccia utente raccoglie l'operazione della metà della GUI, ciò influisce sulla gara? Stai usando una libreria Open Source o Windows dietro la tua GUI? Gli aggiornamenti possono influire sui tempi?
Semafori, blocchi, mutex, sincronizzazione delle barriere sono tra i modi per sincronizzare le attività tra i thread. Potenzialmente se non li stai usando, un'altra persona che mantiene il tuo programma potrebbe e quindi ipotizzare piuttosto rapidamente ipotesi sulle relazioni tra le discussioni possono cambiare e il calcolo sulla condizione della razza potrebbe essere invalidato.
Ti consiglio di sincronizzare esplicitamente perché mentre potresti non vederlo mai creare un problema, un cliente potrebbe. Inoltre, anche se la tua condizione di razza non si verifica mai, cosa succede se tu o la tua organizzazione siete chiamati in tribunale per difendere il vostro codice (poiché la Toyota era collegata alla Prius qualche anno fa). Più approfondita è la tua metodologia, migliore sarà il tuo prezzo. Potrebbe essere più bello dire "ci guardiamo da questo caso improbabile come questo ..." piuttosto che dire "sappiamo che il nostro codice fallirà, ma abbiamo scritto questa equazione per mostrare che non accadrà nella nostra vita. Probabilmente. "
Sembra che il calcolo delle probabilità provenga da qualcun altro. Conoscono il tuo codice e li conosci abbastanza per credere che non sia stato commesso alcun errore? Se calcolassi un'affidabilità del 99,9997% per qualcosa, potrei anche ripensare alle mie lezioni di statistica del college e ricordare che non ho sempre ottenuto il 100%, e arretrare di un po 'del percento sulle mie stime di affidabilità personale.