Therac-25!
Gli sviluppatori del progetto Therac-25 erano abbastanza fiduciosi sulla tempistica 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 del software di vita e morte all'indirizzo:
link
o
link
La tua 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'evento 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 prendere in considerazione la legge di Moore che può facilmente ridurre diversi zeri ogni pochi anni mentre 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 giornalmente (o mensilmente) per anni, ne portano via qualcuna di più. Se viene utilizzato dove è disponibile la fibra di Google, cosa succede? Se l'UI garbage raccoglie le operazioni a metà della GUI, influisce sulla gara? Stai usando una libreria Open Source o Windows dietro la tua GUI? Gli aggiornamenti possono influire sui tempi?
I semafori, i blocchi, i mutex, la sincronizzazione della barriera sono tra i modi per sincronizzare le attività tra i thread. Potenzialmente, se non li stai utilizzando, un'altra persona che mantiene il tuo programma potrebbe e quindi le supposizioni abbastanza veloci sulle relazioni tra i thread possono cambiare e il calcolo della condizione della competizione potrebbe essere invalidato.
Ti consiglio di sincronizzarti esplicitamente perché, mentre potresti non vederlo mai creare un problema, un cliente potrebbe. Inoltre, anche se la tua condizione di gara non si verifica mai, cosa succede se tu o la tua organizzazione siete chiamati in tribunale per difendere il vostro codice (dato che Toyota era imparentata con la Prius qualche anno fa). Più accurata è la tua metodologia, meglio la farai. Potrebbe essere più gentile dire "ci difendiamo da questo caso improbabile come questo ..." piuttosto che dire "sappiamo che il nostro codice fallirà, ma abbiamo annotato questa equazione per dimostrare che non accadrà nella nostra vita. "
Sembra che il calcolo della 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 ai miei corsi sulle statistiche del college e ricordare che non sempre ho ottenuto il 100%, e retrocedere di alcuni punti percentuali sulle mie stime di affidabilità personale.