วิธีหลีกเลี่ยงปัญหาซอฟต์แวร์
เบ็ดเตล็ด / / November 29, 2021
ในยุคดิจิทัลนี้ คุณต้องเคยได้ยินเกี่ยวกับโซเชียลมีเดียยักษ์ใหญ่ เช่น Facebook และ Twitter และแพลตฟอร์มอีคอมเมิร์ซ เช่น Alibaba และ Amazon เว็บไซต์ออนไลน์เหล่านี้ใช้แพ็คเกจซอฟต์แวร์ต่างๆ ในการทำงาน โปรแกรมเหล่านี้ได้เปลี่ยนวิธีการทำงาน ความคิด และการใช้ชีวิตของเราไปอย่างสิ้นเชิง
นอกจากนี้ อุปกรณ์จำนวนมากที่ก่อนหน้านี้มีลักษณะทางกลไกเพียงอย่างเดียว ปัจจุบันถูกควบคุมโดยซอฟต์แวร์ ตัวอย่างเช่น เทอร์โมสแตทเคยเป็นอุปกรณ์เครื่องกลไฟฟ้า อย่างไรก็ตาม ตอนนี้พวกเขาต้องพึ่งพาซอฟต์แวร์สำหรับการดำเนินงานเป็นอย่างมาก
อย่างไรก็ตาม, ข้อบกพร่องของซอฟต์แวร์ อาจเป็นปัญหาได้ โดยเฉพาะอย่างยิ่งเมื่อเราพึ่งพาพวกเขามากขึ้นสำหรับกิจกรรมประจำวัน อันที่จริง มีหลายครั้งที่ซอฟต์แวร์ไม่เป็นไปตามวัตถุประสงค์ที่ตั้งใจไว้ ซึ่งนำไปสู่ผลลัพธ์ที่ไม่น่าพอใจ
ในบทความนี้ เราจะพูดถึง 4 ครั้งที่ประสิทธิภาพของซอฟต์แวร์พลาดไปอย่างมาก และวิธีหลีกเลี่ยงปัญหาซอฟต์แวร์ดังกล่าว
1. เหตุขัดข้อง 911 ในหลายรัฐของสหรัฐอเมริกา
911 เป็นบริการที่สำคัญ ซึ่งช่วยให้บุคคลสามารถติดต่อเจ้าหน้าที่ฉุกเฉินได้ทุกเมื่อที่ต้องการ ในบางครั้ง การติดต่อกับเจ้าหน้าที่ฉุกเฉินผ่าน 911 สามารถสร้างความแตกต่างระหว่างความเป็นและความตายได้อย่างแท้จริง
จึงเป็นโศกนาฏกรรมเมื่อวันที่ 9 เมษายน 2557 ที่ผ่านมา การกำหนดเส้นทางการโทร 911 ล้มเหลว ในเจ็ดรัฐของสหรัฐฯ ได้แก่ แคลิฟอร์เนีย ฟลอริดา มินนิโซตา นอร์ทแคโรไลนา เพนซิลเวเนีย เซาท์แคโรไลนา และวอชิงตัน
การหยุดทำงานนี้เกิดจากข้อผิดพลาดในการเข้ารหัสที่ป้องกันได้ ซึ่งเกิดขึ้นที่ศูนย์การจัดการการโทรฉุกเฉินในโคโลราโดที่ Intrado เป็นเจ้าของ
2. การลงจอดของกองเรือของยูไนเต็ดแอร์ไลน์
ในเดือนกรกฎาคม 2558 สายการบินยูไนเต็ดถูกบังคับให้ กลบกองเรือทั้งหมด ของเครื่องบินเนื่องจากความผิดพลาดของซอฟต์แวร์ สิ่งนี้ส่งผลกระทบต่อเที่ยวบินมากกว่า 4,900 เที่ยวทั่วโลก และทำให้ผู้โดยสารจำนวนมากติดค้างอยู่ที่สนามบินและค่อนข้างผิดหวังอย่างเห็นได้ชัด
อาจมีผลกระทบทางเศรษฐกิจเช่นกันเนื่องจากสายการบินจะต้องชดเชยผู้โดยสารจำนวนมากสำหรับความไม่สะดวก อาจมีการประชุมทางธุรกิจที่สำคัญหลายครั้งที่ผิดพลาดเนื่องจากการต่อสายดิน
3. ความผิดปกติของแป้นคันเร่งของ Toyota Camry
ในเดือนกันยายน 2550 Jean Bookout กำลังเดินทางบนทางหลวง Interstate 69 ในโอคลาโฮมากับผู้โดยสาร Barbara Schwarz เมื่อเธอประสบปัญหา ควบคุม Toyota Camry ของเธอ.
เธอพยายามยกเท้าขึ้นจากคันเร่ง แต่รถยังคงเร่งต่อไป แป้นเบรกไม่สามารถหยุดรถได้ และเธอถูกบังคับให้ใช้เบรกฉุกเฉินของเธอ
น่าเสียดายที่สิ่งนี้ทำให้รถเคลื่อนตัวเข้าไปในเขื่อน ชวาร์ซเสียชีวิตด้วยเหตุนี้ และบุ๊คเอาต์เข้ารับการรักษาในโรงพยาบาลเป็นเวลาห้าเดือนเนื่องจากได้รับบาดเจ็บสาหัส
สันนิษฐานว่าอุบัติเหตุเกิดขึ้นเนื่องจากความไม่เพียงพอในการเข้ารหัสหลายประการซึ่งนำไปสู่ความผิดพลาดของงานใน CPU ของ Camry CPU นี้จะควบคุมการทำงานจำนวนมากที่มากเกินไป รวมถึงการจุดระเบิด การควบคุมปีกผีเสื้อ และระบบควบคุมความเร็วอัตโนมัติ
รหัสของโตโยต้ากลายเป็นระเบียบยุ่งเหยิงหลังจากหลายปีของรหัสใหม่ซ้อนกับรหัสเก่า นี้มักจะเรียกว่า 'รหัสปาเก็ตตี้'
อย่างไรก็ตาม อุบัติเหตุของ Bookout ทำให้ปัญหานี้ถูกเปิดเผยและเน้นย้ำถึงข้อบกพร่องของ Toyota ในกระบวนการซอฟต์แวร์ พบว่ามีมากกว่า 10 ล้านวิธีสำหรับ การเร่งความเร็วที่ไม่พึงประสงค์ที่อาจเกิดขึ้นโดยอิงตามวิธีจัดโครงสร้างโค้ดของโตโยต้า
Nest Thermostat ล้มเหลว
เนสเป็นบริษัท, เป็นเจ้าของโดยอัลฟาเบท, ที่ทำให้เทอร์โมสแตทอัจฉริยะ เทอร์โมสแตทเหล่านี้ค่อนข้างดีและให้ผู้ใช้ควบคุมอุณหภูมิในบ้านจากสมาร์ทโฟนได้
ฤดูหนาวที่แล้ว Nest thermostats ประสบกับความผิดพลาด ในรูปแบบการอัปเดตซอฟต์แวร์ที่ผิดพลาด ซึ่งทำให้แบตเตอรี่หมด ขออภัย ข้อผิดพลาดนี้เกิดขึ้นกลางฤดูหนาว ทำให้ผู้ใช้หลายคนไม่มีความร้อนชั่วคราว นี่คือสิ่งที่คุณไม่ต้องการให้เกิดขึ้นในช่วงเวลานี้ของปีอย่างแน่นอน
การวิเคราะห์ปัญหาซอฟต์แวร์โดยสังเขป
วิธีการต่างๆ เช่น การออกแบบตามแบบจำลองและ TLA+ ช่วยให้นักพัฒนาได้รับภาพรวมที่ใหญ่ขึ้นว่าซอฟต์แวร์ทำงานอย่างไร
เบรตต์ วิคเตอร์ นักวิจัยคอมพิวเตอร์ชื่อดัง มองว่ามี ตัดการเชื่อมต่อ ระหว่างโปรแกรมเมอร์กับปัญหาที่พวกเขาพยายามแก้ไขด้วยรหัส
เนื่องจากการตัดการเชื่อมต่อนี้ จึงกลายเป็นเรื่องยากสำหรับโปรแกรมเมอร์ที่จะจินตนาการถึงสิ่งที่พวกเขาพยายามจะใส่รหัส Victor คิดว่านี่เป็นหนึ่งในปัจจัยที่ทำให้ซอฟต์แวร์เต็มไปด้วยข้อบกพร่อง
อย่างไรก็ตามมีความหวัง แนวทางเช่น การออกแบบตามแบบจำลองและ TLA+ ช่วยให้นักพัฒนาได้รับภาพรวมที่กว้างขึ้นเกี่ยวกับวิธีการทำงานของซอฟต์แวร์
การออกแบบตามแบบจำลองตามชื่อแนะนำ ช่วยให้สามารถพัฒนาซอฟต์แวร์ผ่านแบบจำลองที่มองเห็นได้ TLA+ ซึ่งย่อมาจาก Temporal Logic of Actions เป็นภาษาที่ออกแบบมาสำหรับการเขียนข้อกำหนดของโปรแกรมคอมพิวเตอร์ สิ่งที่ยอดเยี่ยมเกี่ยวกับ TLA+ คือการอนุญาตให้ทำการทดสอบและยืนยันซอฟต์แวร์อย่างละเอียดถี่ถ้วนก่อนที่จะเผยแพร่
ทั้งการออกแบบตามแบบจำลองและ TLA+ ได้พิสูจน์แล้วว่ามีความโดดเด่น เทคโนโลยีเอสเทอเรลซึ่งเป็นบริษัทพัฒนาซอฟต์แวร์ใช้การออกแบบตามแบบจำลองเพื่อสร้างซอฟต์แวร์ที่มีความสำคัญต่อความปลอดภัย ขณะที่ TLA+ ถูกใช้โดยกลุ่มต่างๆ Microsoft เพื่อแก้ไขข้อผิดพลาด Xbox ที่อาจเกิดภัยพิบัติและโดย European Space Agency เพื่อเขียนรหัสใหม่สำหรับการสอบสวนที่ลงจอดบน ดาวหาง.
กระบวนการเขียนโค้ดได้รับการยกย่องอย่างสูงจากโปรแกรมเมอร์ หลายคนรู้สึกทึ่งกับกระบวนการเขียนโค้ด ดังนั้นจึงเป็นเรื่องท้าทายที่จะให้โปรแกรมเมอร์บางคนยอมรับแนวทางต่างๆ เช่น การออกแบบตามแบบจำลองและ TLA+ วิธีการเหล่านี้มักถูกมองว่าเป็นวิชาการอย่างเคร่งครัดโดยไม่มีการดำรงอยู่ในโลกแห่งความเป็นจริง อย่างไรก็ตาม การเปลี่ยนมุมมองต้องเกิดขึ้นโดยเร็วที่สุด
ความคิดสุดท้าย
มีการใช้ซอฟต์แวร์มากขึ้นในแอปพลิเคชันที่ต้องใช้มาตรการป้องกันความปลอดภัยในตัว จะต้องแนะนำวิธีการที่ดีกว่าในการออกแบบซอฟต์แวร์ทั้งหมด เนื่องจากแอพพลิเคชั่นดังกล่าวมีความสำคัญในชีวิตของเรา
กระบวนการต่างๆ เช่น ระบบอัตโนมัติต้องพึ่งพาซอฟต์แวร์เป็นอย่างมากในทุกวันนี้ แต่ข้อผิดพลาดหนึ่งรายการในบรรทัดโค้ดอาจทำให้เราพบกับความพ่ายแพ้ครั้งใหญ่ดังที่แสดงไว้ข้างต้น
ตอนนี้ ลองนึกภาพบางอย่าง เช่น ปัญญาประดิษฐ์ (AI) ที่รวมเข้ากับแอปพลิเคชันเหล่านี้ AI คือ น่ากลัวพอตัว โดยไม่มีข้อบกพร่องของซอฟต์แวร์ เพิ่มจุดบกพร่องลงในมิกซ์และไม่มีการบอกสิ่งที่จะเกิดขึ้น
อย่างไรก็ตาม มีซับในสีเงินอยู่ที่นี่ ด้วยการทำงานเพียงเล็กน้อยและเครื่องมือใหม่บางอย่าง เราสามารถสร้างซอฟต์แวร์และ AI ที่ดีขึ้นได้โดยการออกแบบให้เหมาะสมยิ่งขึ้นและทดสอบกับมัน
หวังว่าประเด็นสำคัญนี้จะได้รับการพิจารณาอย่างจริงจังจากหน่วยงานที่เกี่ยวข้อง เพื่อให้เราสามารถใช้ซอฟต์แวร์อย่างเต็มศักยภาพ แต่เพื่อสร้างอนาคตที่ปลอดภัยและชาญฉลาดยิ่งขึ้นเท่านั้น