Saya memiliki kesempatan menjadi pengembang perangkat lunak selama bertahun-tahun dan sekarang bekerja sebagai insinyur elektronik.
Setiap sistem dengan kompleksitas dilengkapi dengan erro dan bug. Baik mikrokontroler dan IC memiliki kelebihan dan kekurangan berdasarkan area mereka masing-masing.
Untuk proyek skala kecil, IC lebih cepat, lebih murah, dan lebih andal daripada Microcontrollers. Untuk proyek skala besar dengan jutaan input, analisis, dan logika perbandingan, pasti mikrokontroler memiliki keunggulan dibandingkan IC.
Semua perangkat lunak gagal pada beberapa titik, bahkan kode tanpa bug rentan terhadap modifikasi karena jika disimpan pada ROM, mengakibatkan kesalahan logis (misalnya, kebocoran memori) yang sulit untuk dideteksi tetapi kadang-kadang berakhir dengan bencana.
Untuk sistem berbasis perangkat lunak anti peluru dari kegagalan dalam aplikasi kritis (seperti kelas militer atau sistem penyelamatan jiwa seperti sistem kontrol kereta), konsep "gagal aman" diterapkan dan dikembangkan.
Sistem yang gagal gagal kembali ke kondisi aman jika terjadi kesalahan luar biasa. Biasanya dua prosesor menjalankan kode yang sama, membandingkan hasil dari setiap instruksi, dan jika mereka sama, instruksi tersebut dijalankan. Kalau tidak, sistem menggunakan relay listrik fisik untuk kembali ke keadaan aman.
Sistem berbasis perangkat lunak yang gagal digunakan dalam sistem Interlocking dan ATP (Automatic Train Protection) kereta.
Merancang sistem kompleks yang sama dengan Ics adalah sakit kepala yang hebat untuk setiap insinyur. Dan itulah mengapa perangkat lunak dirancang sejak hari pertama!