นักพัฒนาตัดสินใจไม่แก้โค้ดเสียหายที่อาจทำให้เมืองดับไฟ

ที่มาภาพ: The Register

Software-อ่าน 5 นาทีThe Register

นักพัฒนาตัดสินใจไม่แก้โค้ดเสียหายที่อาจทำให้เมืองดับไฟ

⚡ สรุป 30 วิ

Socrates ในคอลัมน์ On Call ของ The Register ปฏิเสธแก้โค้ดเก่าไม่มีเอกสารและใช้ GOTO เพราะอาจทำให้เครื่องกำเนิดไฟฟ้า overspeed จนดับไฟเมืองการตัดสินใจ…

การพัฒนาและบำรุงรักษาซอฟต์แวร์ในอุตสาหกรรมพลังงานต้องเผชิญกับความเสี่ยงสูงเมื่อต้องทำงานบนระบบโบราณที่ไม่มีเอกสารกำกับ การเล่าเรื่องของผู้อ่าน “Socrates” ในคอลัมน์ On Call ของ *The Register* แสดงให้เห็นว่าผู้ดูแลระบบบางคนอาจเลือกละทิ้งภารกิจซึ่งอาจทำให้เมืองตกไฟได้ เพียงเพื่อหลีกเลี่ยงการสร้างความเสียหายที่ไม่สามารถย้อนกลับได้


Overview

Socrates ซึ่งเคยดำรงตำแหน่งผู้จัดการฝ่ายซอฟต์แวร์ขนาดเล็ก ได้รับมอบหมายจากนายจ้างให้ไปตรวจสอบระบบเฝ้าติดตามอุปกรณ์ของโรงไฟฟ้า ลูกค้าซึ่งผลิตเครื่องจักรสำหรับสถานีไฟฟ้านั้นไม่ได้บันทึกข้อมูลการติดตั้งอย่างเป็นทางการ เมื่อ Socrates ไปถึงไซต์ เขาได้พบกับ turbine overspeed detector ที่เชื่อมต่อกับคอมพิวเตอร์รุ่นเก่าแบบ CP/M พร้อมบอร์ด I/O หลากหลายชนิด

Background

ตามรายงานของ *The Register* ระบบนี้ถูกติดตั้งในโรงไฟฟ้าที่มีเครื่องจักรขนาดมหึมา ซึ่งทำหน้าที่หมุนด้วยไอศักดิ์เพื่อผลิตกระแสไฟฟ้า การควบคุมความเร็วเกิน (overspeed) ของเทอร์ไบน์เป็นสิ่งสำคัญเพราะหากเกิดเหตุการณ์ดังกล่าว เครื่องจักรอาจเสียหายและส่งผลให้ระบบไฟฟ้าทั้งเมืองดับไปได้ แม้ว่าตอนนั้นภาพยนตร์ Mission: Impossible ยังไม่ออก และ The Matrix ยังไม่มีในตลาด แต่จินตนาการของ Socrates ถูกผูกติดกับฉากแอคชันเหล่านั้น ทำให้ความเสี่ยงดูเหมือน “ภารกิจที่เป็นไปไม่ได้”

The Legacy System

เมื่อ Socrates นั่งทำงานบนคีย์บอร์ด เขาพบว่าโค้ดที่ควบคุม turbine overspeed detector มีลักษณะดังต่อไปนี้

  • มีการใช้คำสั่ง GOTO อย่างสุ่มโดยไม่มีโครงสร้างชัดเจน
  • การเข้าถึง I/O ทำที่อยู่แบบสุ่มโดยไม่มีการอธิบายหรือคอมเม้นต์ใด ๆ
  • การคำนวณและการทำงานของบิต (AND, OR) ใช้ค่าคงที่ที่ดูเหมือนจะเป็น “ตัวเลขลึกลับ”

โค้ดเหล่านี้ขาด documentation และไม่มีคำอธิบายประกอบ ทำให้ยากต่อการเข้าใจหรือแก้ไขโดยผู้ที่ไม่ได้เขียนมาตั้งแต่แรก

Code Condition & Risks

สภาพของซอฟต์แวร์ดังกล่าวถือว่า “horrible” ตามที่ Socrates ระบุไว้ ความไม่เป็นระบบและไม่มีคอมเม้นท์ทำให้การเปลี่ยนแปลงใด ๆ มีความเสี่ยงต่อการสร้างข้อบกพร่องใหม่ ซึ่งอาจกระตุ้นให้เครื่องเทอร์ไบน์หยุดทำงานหรือเกิดเหตุการณ์ overspeed ที่อาจนำไปสู่การดับไฟฟ้าทั่วเมืองได้ การแก้ไขโดยไม่มีข้อมูลพื้นฐานจึงเป็นการเสี่ยงที่สูงเกินกว่าจะยอมรับ

Decision & Lessons

หลังจากพิจารณาโค้ดทั้งหมด Socrates ตัดสินใจ ถอยกลับ อย่างระมัดระวังและไม่ทำการเปลี่ยนแปลงใด ๆ กับระบบ เขาอธิบายว่าบางอย่าง “ควรปล่อยให้เป็นเช่นนั้น” เพื่อหลีกเลี่ยงผลเสียที่อาจเกิดขึ้น การตัดสินใจนี้สะท้อนถึงบทเรียนสำคัญในการจัดการซอฟต์แวร์โบราณ:

  • ระบบที่ไม่มีเอกสารและมีโค้ดสกปรกควรได้รับการประเมินความเสี่ยงอย่างละเอียดก่อนทำการแก้ไข
  • การอ้างอิงจากผู้เชี่ยวชาญหรือทีมงานที่คุ้นเคยกับระบบเป็นสิ่งจำเป็น
  • บางครั้งการ “ไม่ทำอะไร” อาจเป็นวิธีที่ปลอดภัยที่สุดในสถานการณ์ที่ความล้มเหลวจะส่งผลต่อโครงสร้างพื้นฐานระดับชาติ

Impact

เหตุการณ์นี้ชี้ให้เห็นว่าผู้ประกอบอาชีพด้านไอทีต้องเผชิญกับความท้าทายของ legacy systems ที่ยังคงทำงานในภาคส่วนสำคัญของสาธารณูปโภค การไม่มีมาตรฐานการบันทึกและการเขียนโค้ดที่ดีสามารถทำให้เกิดความเสี่ยงต่อระบบไฟฟ้าแบบกว้างขวางได้ การพัฒนานโยบายจัดเก็บเอกสารและการรีเฟรชซอฟต์แวร์อาจช่วยลดกรณีเช่นนี้ในอนาคต

Summary

คอลัมน์ On Call เผยให้เห็นว่าการเผชิญหน้ากับโค้ดที่ไม่มีโครงสร้างและเอกสารกำกับอาจทำให้ผู้ดูแลระบบเลือกละทิ้งภารกิจเพื่อป้องกันความเสียหายต่อเมือง การเรียนรู้จากเหตุการณ์นี้เน้นย้ำถึงความสำคัญของการจัดการซอฟต์แวร์รุ่นเก่าอย่างเป็นระบบและปลอดภัย.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
Developer given Mission:Impossible - fixing rubbish code that could crash a city - simply chose not to accept it
ผู้เขียน
Unknown
แหล่ง
The Register
วันที่เผยแพร่
21 สิงหาคม 2569 เวลา 13:30

Related

บทความที่เกี่ยวข้อง

Microsoft ค่อย ๆ ยกเลิก Windows Media Player ผ่านโครงการ Windows K2 เพื่อบังคับให้ใช้แอป Media Player ใหม่Software
21 สิงหาคม 2569 เวลา 15:30

Microsoft ค่อย ๆ ยกเลิก Windows Media Player ผ่านโครงการ Windows K2 เพื่อบังคับให้ใช้แอป Media Player ใหม่

Windows Media Player จะค่อย ๆ ถูกยกเลิกใน Windows 11 ภายใต้โครงการ Windows K2 โดย Microsoft แรงผลักดันให้ผู้ใช้งเปลี่ยนไปใช้แอป Media Player…

XDA Developers7 นาที
In the Van ผสานความอบอุ่นและการเอาตัวรอดในโลกหลังวันสิ้นสุดSoftware
21 สิงหาคม 2569 เวลา 09:30

In the Van ผสานความอบอุ่นและการเอาตัวรอดในโลกหลังวันสิ้นสุด

เกมอินดี้ In the Van จากสตูดิโอ Cosmic Tofu ผสมผสานแนว cozy survival กับโลกหลังวันสิ้นสุด ให้ผู้เล่นขับรถตู้หาที่พักปลอดภัยและทำกิจกรรมเช่นปลูกพืช…

GamesRadar6 นาที
วิธีรัน Docker บน Proxmox ให้สอดคล้องกับฮาร์ดแวร์และกรณีใช้งานSoftware
21 สิงหาคม 2569 เวลา 06:30

วิธีรัน Docker บน Proxmox ให้สอดคล้องกับฮาร์ดแวร์และกรณีใช้งาน

Proxmox รองรับ KVM และ LXC แต่บางงานต้องการ Docker เพื่อความยืดหยุ่น การเลือกวิธีรัน Docker บน VM หรือ LXC…

XDA Developers6 นาที
CachyOS และ AlmaLinux แซง Windows 11 ในการทดสอบเวิร์กสเตชันSoftware
20 สิงหาคม 2569 เวลา 17:00

CachyOS และ AlmaLinux แซง Windows 11 ในการทดสอบเวิร์กสเตชัน

ผลการทดสอบของ Phoronix พบว่า CachyOS ในโหมด performance มีคะแนนรวมสูงสุดเหนือ Windows 11 Pro ถึง 14.9% และ AlmaLinux 10.2 รองอันดับสอง…

TechPowerUp5 นาที
คัดลอกลิงก์แล้ว!