Ho avuto la possibilità di essere uno sviluppatore di software per anni e ora lavoro come ingegnere elettronico.
Qualsiasi sistema con complessità viene fornito con errori e bug. Sia i microcontrollori che i circuiti integrati presentano i loro vantaggi e svantaggi in base alle loro aree di utenza.
Per i progetti su piccola scala i circuiti integrati sono più veloci, più economici e più affidabili dei microcontrollori. Per i progetti su larga scala con milioni di input, analisi e logiche di confronto, i microcontrollori hanno sicuramente un vantaggio rispetto ai circuiti integrati.
Tutti i software falliscono ad un certo punto, anche il codice bugsless è soggetto a modifiche perché viene salvato su una ROM, causando errori logici (ad esempio, perdite di memoria) che sono difficili da rilevare ma a volte finiscono in catastrofi.
Ai sistemi basati su software a prova di proiettile da guasti in applicazioni critiche (come sistemi di livello militare o salvavita come i sistemi di controllo dei treni), vengono implementati e sviluppati concetti "fail safe".
I sistemi sicuri non ripristinati a uno stato sicuro nel caso si verifichi un errore eccezionale. Di solito due processori eseguono lo stesso codice, confrontano i risultati di ciascuna istruzione e, se sono uguali, l'istruzione viene eseguita. In caso contrario, il sistema utilizza relè elettrici fisici per ripristinare uno stato sicuro.
I sistemi basati su software fail-safe sono utilizzati nei sistemi di interblocco dei treni e ATP (protezione automatica dei treni).
Progettare lo stesso sistema complesso con Ics è un grande mal di testa per qualsiasi ingegnere. Ed è per questo che il software è stato progettato dal primo giorno!