Le auto moderne si affidano a s / w. Quando le auto moderne falliscono, ad esempio il computer del motore si guasta, di solito (anche se non sempre, ma di solito) l'elettronica che lo ha caricato, non la s / w.
Chiedi a qualsiasi proprietario di un'auto moderna con una ECU in essa quanto tempo dura prima di un guasto costoso. Sarò sbalordito se avrai 10 anni. Le auto moderne piene di elettronica e sensori sono incredibilmente inaffidabili.
Se studi la teoria dell'affidabilità la risposta diventa accecantemente ovvia. Tutto ciò che è meccanico (si aspettano software) ha un'affidabilità allo stato stazionario, che è il tasso di fallimento al di fuori delle regioni di mortalità infantile e di usura. La percentuale di guasti dell'articolo finale è la SOMMA delle percentuali di guasto delle parti. Aggiungi più parti: il tasso di errore aggregato diventa un numero più alto. La sfida quindi è quella di ottenere tassi di guasto di tutti questi componenti davvero bassi.
Quando si tratta di cose come cinghie dentate e usura dei cilindri e sensori di ossigeno che si riempiono di schifezze e connettori che diventano ohmici e cavi rotti a causa delle vibrazioni, ci sono tecniche che possono essere utilizzate per ridurre il tasso di guasto. Il costo aumenta anche mentre lo fai.
Il software, d'altra parte, ha un tasso di fallimento costante. Nonostante la difficoltà a trovare difetti a volte, alla fine tutto il software è una macchina per insaccare. Ingressi -> Fai cose -> Uscite. A volte l'ORDINE degli ingressi e le combinazioni di ingressi portano a guasti con modalità rilevabili. Quando ciò accade, hai trovato il tuo difetto, lo risolvi e vai avanti.
Il software che non presenta difetti (noti) ha effettivamente un tasso di errore pari a 0. Funzionerà per sempre senza errori. (Tempo medio tra guasti = 1 / tasso di guasto). La piattaforma hardware non funzionerà per prima.
Il software con difetti può funzionare solo fino a quando la giusta combinazione di condizioni di input, nel tempo, non si manifesta.
La FALLACY in tutto questo è di provare a confrontare i tassi di fallimento di cose fisiche (causati da usura, migrazione dei metalli nei circuiti integrati, ingresso di acqua, vibrazioni, ecc.) Con un tasso di fallimento di ciò che è essenzialmente una macchina a stati finiti che semplicemente fa esattamente ciò che la sequenza di istruzioni gli dice di fare.
(Anche cose come le particelle alfa che lanciano bit nella RAM sono un fenomeno fisico, non un difetto del software. Il modo di gestire un MAGGIO così regolare può tuttavia essere un difetto del software, ma ricorda che la brutta particella alfa era solo un altro input per il software. )