
เมื่อพูดถึง “บั๊กซอฟต์แวร์” หลายคนอาจนึกถึงปัญหาที่สร้างความรำคาญ เสียเวลา หรือทำให้ระบบค้าง แต่ยากที่จะจินตนาการว่าบั๊กเหล่านี้อาจคร่าชีวิตมนุษย์ได้จริง ทว่ากลับเกิดขึ้นแล้วในปี ค.ศ. 1985 (พ.ศ. 2528) กับเครื่องฉายรังสีรักษามะเร็งที่ชื่อว่า Therac-25 ซึ่งมีข้อบกพร่องร้ายแรงในซอฟต์แวร์ ทำให้ผู้ป่วยได้รับรังสีแรงกว่าปกติถึง 100 เท่า และมีผู้เสียชีวิตอย่างน้อย 3 ราย
จุดเริ่มต้นของนวัตกรรมที่กลายเป็นหายนะ
Therac-25 เป็นเครื่องฉายรังสีที่ดูทันสมัยมากในยุคนั้น จุดเด่นคือมี โหมดการรักษาสองแบบในเครื่องเดียว
- Electron Beam Therapy: สำหรับรักษามะเร็งหรือปัญหาที่อยู่ตื้น ๆ ใต้ผิวหนัง เช่น มะเร็งผิวหนัง
- Megavolt X-ray Therapy: สำหรับยิงรังสีลึกลงไปในร่างกายเพื่อรักษามะเร็งภายใน
แน่นอนว่าทั้งสองโหมดนี้ไม่ควรถูกสลับหรือใช้งานผิดพลาดโดยเด็ดขาด
จากฮาร์ดแวร์สู่ซอฟต์แวร์
เครื่องรุ่นก่อนหน้าอย่าง Therac-20 ยังมี ระบบป้องกันด้วยฮาร์ดแวร์ (interlocks) คอยกันความผิดพลาด แม้ซอฟต์แวร์มีบั๊กก็ยังไม่ก่อให้เกิดอันตรายร้ายแรง
แต่ Therac 25 ตัดสินใจย้ายการควบคุมทั้งหมดมาอยู่บนซอฟต์แวร์ โดยไม่มีตัวล็อกฮาร์ดแวร์สำรอง หากเกิดบั๊ก ก็ไม่มีสิ่งใดหยุดยั้งผลลัพธ์ได้
บั๊กมรณะ: Race Condition
นักวิจัยด้านคอมพิวเตอร์ Anne Marie Porrello ได้อธิบายว่า สาเหตุของโศกนาฏกรรมคือ race condition หรือการที่กระบวนการทำงานของซอฟต์แวร์ชนกันในช่วงเวลาที่ไม่ควรเกิดขึ้น
เครื่อง Therac 25 ใช้เวลาราว 8 วินาที ในการเปลี่ยนโหมดรังสี หากผู้ควบคุมกดแก้ไขค่าระหว่างช่วงนี้เร็วเกินไป ซอฟต์แวร์จะข้ามการตรวจสอบความปลอดภัย และเปิดโหมดรังสีแรงสูงโดยตรง ส่งผลให้ผู้ป่วยได้รับรังสีมากผิดปกติ
เหตุการณ์ที่เกิดขึ้นจริง
มีบันทึกอย่างน้อย 6 เหตุการณ์ระหว่างปี 1985 – 1987 โดยสรุปดังนี้
- 3 มิ.ย. 1985 – Marietta, Georgia, สหรัฐฯ: ผู้ป่วยต้องผ่าตัดเต้านมออก และแขนสูญเสียการใช้งาน
- 26 ก.ค. 1985 – Ontario, แคนาดา: ผู้ป่วยต้องผ่าตัดเปลี่ยนสะโพก
- 6 ม.ค. 1986 – Yakima, Washington, สหรัฐฯ: ผู้ป่วยมีบาดแผลและแผลเป็นถาวร
- 21 มี.ค. 1986 – Tyler, Texas, สหรัฐฯ: ผู้ป่วยเสียชีวิต
- 11 เม.ย. 1986 – Tyler, Texas, สหรัฐฯ: ผู้ป่วยเสียชีวิต
- 17 ม.ค. 1987 – Yakima, Washington, สหรัฐฯ: ผู้ป่วยเสียชีวิต
รวมแล้วมีผู้เสียชีวิต 3 ราย และผู้ป่วยอีกหลายคนได้รับบาดเจ็บสาหัส
การปกป้องและบทเรียนที่โลกได้รับ
ในช่วงแรก ผู้ผลิต AECL (Atomic Energy of Canada Limited) ปฏิเสธความรับผิดชอบ กระทั่งในปี 1986 องค์การอาหารและยาสหรัฐฯ (FDA) เข้ามาสืบสวนอย่างจริงจัง จึงพบความจริงว่าต้นเหตุคือบั๊กในซอฟต์แวร์
เหตุการณ์นี้ทำให้เกิดแรงกดดันต่อวงการซอฟต์แวร์การแพทย์ทั่วโลก มีการเรียกร้องให้มีมาตรการใหม่ ๆ ได้แก่
- การทดสอบซอฟต์แวร์อย่างเข้มงวด (rigorous testing)
- การตรวจสอบอย่างเป็นทางการ (formal verification)
- การทำเอกสารระบบให้รัดกุมและโปร่งใส
กรณี Therac-25 กลายเป็น บทเรียนสำคัญที่ถูกยกมาสอนในหลักสูตรวิทยาการคอมพิวเตอร์ จนถึงทุกวันนี้ เพื่อย้ำว่า “ซอฟต์แวร์ที่ไม่ปลอดภัย อาจหมายถึงชีวิตคน”
สรุป
เรื่องราวของ Therac-25 แสดงให้เห็นว่าซอฟต์แวร์ไม่ได้เป็นเพียงเรื่องเทคนิค แต่มีผลโดยตรงต่อชีวิตมนุษย์ ความผิดพลาดที่ดูเหมือนเล็กน้อยอย่าง “race condition” อาจสร้างโศกนาฏกรรมใหญ่ได้จริง
ทุกวันนี้ การพัฒนาซอฟต์แวร์โดยเฉพาะในวงการแพทย์จึงต้องเข้มงวดกว่าที่เคย เพื่อไม่ให้ประวัติศาสตร์ซ้ำรอย
ที่มา: tomshardware





