Ich hatte jahrelang die Chance, Softwareentwickler zu werden und arbeite jetzt als Elektronikingenieur.
Jedes System mit Komplexität bringt Fehler und Bugs mit sich. Sowohl die Mikrocontroller als auch die ICs haben ihre Vor- und Nachteile, basierend auf ihren Anwendungsgebieten.
Für kleine Projekte sind ICs schneller, billiger und zuverlässiger als Mikrocontroller. Bei Großprojekten mit Millionen von Eingaben, Analyse- und Vergleichslogiken haben Mikrocontroller gegenüber ICs den entscheidenden Vorteil.
Irgendwann versagt die gesamte Software, und selbst fehlerfreier Code kann leicht geändert werden, da er auf einem ROM gespeichert wird. Dies führt zu logischen Fehlern (z. B. Speicherlecks), die schwer zu erkennen sind, aber manchmal zu einer Katastrophe führen.
Um softwarebasierte Systeme vor Ausfällen in kritischen Anwendungen (wie z. B. militärischen oder lebensrettenden Systemen wie z. B. Zugsicherungssystemen) zu schützen, werden "ausfallsichere" Konzepte implementiert und entwickelt.
Ausfallsichere Systeme kehren in einen sicheren Zustand zurück, falls ein außergewöhnlicher Fehler auftritt. Normalerweise führen zwei Prozessoren den gleichen Code aus, vergleichen die Ergebnisse der einzelnen Befehle und wenn sie gleich sind, wird der Befehl ausgeführt. Andernfalls verwendet das System physikalische elektrische Relais, um in einen sicheren Zustand zurückzukehren.
Ausfallsichere softwarebasierte Systeme werden in Zugsicherungs- und ATP-Systemen (Automatic Train Protection) verwendet.
Das Entwerfen des gleichen komplexen Systems mit Ics bereitet jedem Ingenieur große Kopfschmerzen. Und deshalb wurde Software ab dem ersten Tag entwickelt!