ฉันมีโอกาสได้เป็นนักพัฒนาซอฟต์แวร์มาหลายปีและตอนนี้ทำงานเป็นวิศวกรอิเล็กทรอนิกส์
ระบบที่มีความซับซ้อนนั้นมาพร้อมกับข้อผิดพลาดและข้อบกพร่อง ทั้งไมโครคอนโทรลเลอร์และไอซีมีข้อดีและข้อเสียของพวกเขาตามพื้นที่ของ usauge
สำหรับโครงการขนาดเล็กไอซีนั้นเร็วกว่าราคาถูกกว่าและเชื่อถือได้มากกว่าไมโครคอนโทรลเลอร์ สำหรับโครงการขนาดใหญ่ที่มีอินพุตนับล้านวิเคราะห์และเปรียบเทียบ Logics เพื่อให้แน่ใจว่าไมโครคอนโทรลเลอร์มีความได้เปรียบเหนือไอซี
ซอฟต์แวร์ทั้งหมดล้มเหลวในบางจุดแม้แต่รหัสที่ไม่มีข้อบกพร่องมีแนวโน้มที่จะแก้ไขเพราะมันถูกบันทึกไว้ใน ROM ทำให้เกิดข้อผิดพลาดทางตรรกะ (เช่นหน่วยความจำรั่ว) ซึ่งยากต่อการตรวจจับ แต่บางครั้งก็จบลงด้วยความหายนะ
เพื่อป้องกันระบบซอฟต์แวร์ที่ใช้กระสุนเป็นสัญลักษณ์จากความล้มเหลวในการใช้งานที่สำคัญ (เช่นเกรดทหารหรือระบบช่วยชีวิตเช่นระบบควบคุมรถไฟ) แนวคิด "ความปลอดภัยไม่ปลอดภัย" ถูกนำมาใช้และพัฒนา
ระบบความปลอดภัยที่ล้มเหลวกลับสู่สถานะปลอดภัยในกรณีที่เกิดข้อผิดพลาดพิเศษ โดยทั่วไปแล้วโปรเซสเซอร์สองตัวจะรันโค้ดเดียวกันเปรียบเทียบผลลัพธ์ของคำสั่งแต่ละคำสั่งและหากเท่ากันคำสั่งนั้นจะถูกดำเนินการ มิฉะนั้นระบบจะใช้รีเลย์ไฟฟ้าทางกายภาพเพื่อเปลี่ยนกลับไปเป็นสถานะที่ปลอดภัย
ระบบที่ใช้ซอฟท์แวร์ที่ไม่ปลอดภัยนั้นใช้ในระบบ Interlocking และ ATPs (Automatic Train Protection)
การออกแบบระบบที่ซับซ้อนเดียวกันกับ Ics นั้นเป็นสิ่งที่น่าปวดหัวสำหรับวิศวกรทุกคน และนั่นคือสาเหตุที่ซอฟต์แวร์ได้รับการออกแบบตั้งแต่วันที่ 1!