กลับไปหน้าบทความ

อ่าน 4 นาที

ซอฟต์แวร์ที่เสื่อมสภาพ

การเสื่อมสภาพของซอฟต์แวร์ ( การเสื่อมสภาพ ของ บิต การเสื่อมสภาพ ของ โค้ด การสึกกร่อน ของ ซอฟต์แวร์ การเสื่อมถอยของซอฟต์แวร์ หรือ เอนโทรปีของซอฟต์แวร์ ) คือการเสื่อมถอย...

ซอฟต์แวร์ที่เสื่อมสภาพ

(Learn how and when to remove this message)

การเสื่อมสภาพของซอฟต์แวร์ ( การเสื่อมสภาพ ของบิต การเสื่อมสภาพ ของโค้ด การสึกกร่อนของซอฟต์แวร์การเสื่อมถอยของซอฟต์แวร์หรือเอนโทรปีของซอฟต์แวร์ ) คือการเสื่อมถอย การเสื่อมสภาพ หรือการสูญเสียการใช้งานหรือประสิทธิภาพของซอฟต์แวร์เมื่อเวลาผ่านไป

Jargon Fileซึ่งเป็นสารบบความรู้เกี่ยวกับแฮกเกอร์ นิยามคำว่า "bit rot" ว่าเป็นคำอธิบายเชิงล้อเลียนถึงการเสื่อมสภาพของโปรแกรม ซอฟต์แวร์ เมื่อเวลาผ่านไป แม้ว่า "จะไม่มีอะไรเปลี่ยนแปลง" ก็ตาม แนวคิดเบื้องหลังนี้เกือบจะเหมือนกับว่าบิตที่ประกอบขึ้นเป็นโปรแกรมนั้นเกิดการสลายตัวแบบกัมมันตรังสี[ 1 ]

สาเหตุ

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

การเปลี่ยนแปลงสิ่งแวดล้อม

วิดีโอบันทึกหน้าจอแสดงข้อผิดพลาดที่เกิดขึ้นในBlender 2.9 อันเป็นผลมาจากการเปลี่ยนแปลงใน ไดรเวอร์ AMDทำให้เกิดจุดแสงกระพริบและแสดงผลเวกเตอร์แนวตั้งฉากของพื้นผิว ไม่ถูกต้อง จำเป็นต้องมีการอัปเดตโค้ดของ Blender เพื่อรองรับการเปลี่ยนแปลงเหล่านี้ จึงแก้ไขข้อผิดพลาดดังกล่าวได้

เมื่อเกิดการเปลี่ยนแปลงในสภาพแวดล้อมของโปรแกรม โดยเฉพาะการเปลี่ยนแปลงที่นักออกแบบโปรแกรมไม่ได้คาดการณ์ไว้ ซอฟต์แวร์อาจไม่ทำงานตามที่ตั้งใจไว้แต่แรก ตัวอย่างเช่น นักออกแบบ เกมคอมพิวเตอร์ ยุคแรกๆ หลายคน ใช้ความเร็วสัญญาณนาฬิกาของ CPU เป็นตัวจับเวลาในเกมของพวกเขา[ 2 ]อย่างไรก็ตาม สัญญาณนาฬิกาของ CPU รุ่นใหม่เร็วกว่า ดังนั้นความเร็วในการเล่นเกมจึงเพิ่มขึ้นตามไปด้วย ทำให้เกมใช้งานได้ยากขึ้นเมื่อเวลาผ่านไป

ความสามารถครั้งเดียว

มีการเปลี่ยนแปลงในสภาพแวดล้อมที่ไม่เกี่ยวข้องกับนักออกแบบโปรแกรม แต่เกี่ยวข้องกับผู้ใช้ ในตอนแรก ผู้ใช้สามารถทำให้ระบบทำงานได้ และใช้งานได้อย่างไม่มีที่ติเป็นระยะเวลาหนึ่ง แต่เมื่อระบบหยุดทำงานอย่างถูกต้อง หรือผู้ใช้ต้องการเข้าถึงการควบคุมการกำหนดค่า พวกเขาไม่สามารถทำซ้ำขั้นตอนเริ่มต้นนั้นได้เนื่องจากบริบทที่แตกต่างกันและข้อมูลที่ไม่พร้อมใช้งาน (รหัสผ่านหาย คำแนะนำหายไป หรืออินเทอร์เฟซผู้ใช้ที่ จัดการยาก ซึ่งกำหนดค่าครั้งแรกโดยการลองผิดลองถูก) สถาปนิกข้อมูล Jonas Söderström ได้ตั้งชื่อแนวคิดนี้ว่าonceability [ 3 ] และกำหนดไว้ว่า "คุณภาพในระบบทางเทคนิคที่ป้องกันไม่ให้ผู้ใช้กู้คืนระบบได้เมื่อระบบล้มเหลว"

โค้ดที่ไม่ได้ใช้งาน

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

โค้ดที่ไม่ค่อยได้รับการอัปเดต

การบำรุงรักษาซอฟต์แวร์ และระบบ ตามปกติอาจทำให้ซอฟต์แวร์เสื่อมสภาพได้ โดยเฉพาะอย่างยิ่ง เมื่อโปรแกรมประกอบด้วยหลายส่วนที่ทำงานแยกจากกัน การไม่พิจารณาว่าการเปลี่ยนแปลงในส่วนใดส่วนหนึ่งจะส่งผลกระทบต่อส่วนอื่นๆ อย่างไร อาจทำให้เกิดข้อผิดพลาดได้

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

การเชื่อมต่อออนไลน์

ซอฟต์แวร์เชิงพาณิชย์สมัยใหม่มักเชื่อมต่อกับเซิร์ฟเวอร์ออนไลน์เพื่อตรวจสอบใบอนุญาตและเข้าถึงข้อมูล หากบริการออนไลน์ที่ขับเคลื่อนซอฟต์แวร์ถูกปิดลง ซอฟต์แวร์อาจหยุดทำงาน[ 4 ] [ 5 ]

ตั้งแต่ช่วงปลายปี 2010 เว็บไซต์ส่วนใหญ่ใช้ การเชื่อมต่อ HTTPS ที่ปลอดภัย อย่างไรก็ตาม การเชื่อมต่อนี้ต้องใช้คีย์การเข้ารหัสที่เรียกว่าใบรับรองรูทซึ่งมีวันหมดอายุ หลังจากใบรับรองหมดอายุ อุปกรณ์จะสูญเสียการเชื่อมต่อกับเว็บไซต์ส่วนใหญ่ เว้นแต่จะมีการอัปเดตคีย์อย่างต่อเนื่อง[ 6 ]

อีกประเด็นหนึ่งคือ ในเดือนมีนาคม พ.ศ. 2564 มาตรฐานการเข้ารหัสแบบเก่า TLS 1.0 และ TLS 1.1 ถูกยกเลิก[ 7 ] ซึ่งหมายความว่าระบบปฏิบัติการ เบราว์เซอร์ และซอฟต์แวร์ออนไลน์อื่นๆ ที่ไม่รองรับ TLS 1.2 ขึ้นไปจะไม่สามารถเชื่อมต่อกับเว็บไซต์ส่วนใหญ่ได้ แม้แต่การดาวน์โหลดแพตช์หรืออัปเดตเบราว์เซอร์ หากมีให้ใช้งานก็ตาม บางครั้งเรียกสิ่งนี้ว่า "หายนะ TLS"

ผลิตภัณฑ์ที่ไม่สามารถเชื่อมต่อกับเว็บไซต์ส่วนใหญ่ได้ ได้แก่ PowerMac, คอมพิวเตอร์ Unix รุ่นเก่า และMicrosoft Windowsเวอร์ชันที่เก่ากว่า Server 2008/Windows 7 (อย่างน้อยก็ต้องใช้เบราว์เซอร์ของบุคคลที่สาม) เบราว์เซอร์ Internet Explorer 8ใน Server 2008/Windows 7 รองรับ TLS 1.2 แต่ถูกปิดใช้งานโดยค่าเริ่มต้น[ 8 ]

การจำแนกประเภท

โดยทั่วไปแล้ว การเสื่อมสภาพของซอฟต์แวร์จะถูกแบ่งออกเป็น "การเสื่อมสภาพแบบแฝง" หรือ "การเสื่อมสภาพแบบแอคทีฟ"

เน่าเปื่อยในภาวะพักตัว

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

การเน่าเปื่อยที่กำลังดำเนินอยู่

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

ในทางปฏิบัติ การเพิ่มฟีเจอร์ใหม่ๆ อาจมีความสำคัญมากกว่าการปรับปรุงเอกสารประกอบแต่หากไม่มีเอกสารประกอบ อาจทำให้ความรู้เฉพาะส่วนต่างๆ ของโปรแกรมสูญหายไปได้ ซึ่งในระดับหนึ่ง การปฏิบัติ ตามหลักการเขียนโค้ดที่ดีที่สุดในปัจจุบัน สามารถลดผลกระทบนี้ ได้

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

ตัวอย่าง

ตัวอย่างโปรแกรม AI

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

ตัวอย่างฟอรัมออนไลน์ที่แตกแขนงออกไป

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

จากตรงนี้ มีหลายวิธีที่อาจส่งผลกระทบต่อระบบเนื่องจากซอฟต์แวร์เสื่อมสภาพ:

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

ตัวอย่างวิกิ

สมมติว่าผู้ดูแลเว็บไซต์ติดตั้ง MediaWikiเวอร์ชันล่าสุดซึ่งเป็นซอฟต์แวร์ที่ใช้ในการสร้างวิกิ เช่น Wikipedia แล้วก็ไม่เคยอัปเดตอะไรเลย เมื่อเวลาผ่านไป ผู้ให้บริการเว็บโฮสติ้งก็มักจะอัปเดตเวอร์ชันของภาษาโปรแกรม (เช่นPHP ) และฐานข้อมูล (เช่นMariaDB ) โดยไม่ปรึกษาผู้ดูแลเว็บไซต์ หลังจากนั้นเป็นเวลานานพอ เว็บไซต์ที่ซับซ้อนซึ่งไม่ได้อัปเดตก็จะใช้งานไม่ได้ เพราะเวอร์ชันล่าสุดของ PHP และ MariaDB จะมีการปรับเปลี่ยนที่ทำให้เกิดปัญหา เนื่องจากมีการยกเลิกฟังก์ชันในตัวบางอย่าง ทำให้ไม่สามารถใช้งานร่วมกับเวอร์ชันก่อนหน้าได้ และก่อให้เกิดข้อผิดพลาดร้ายแรงปัญหาอื่นๆที่อาจ เกิดขึ้นกับซอฟต์แวร์เว็บไซต์ที่ไม่ได้อัปเดต ได้แก่ช่องโหว่ด้านความปลอดภัยและสแปม

การปรับโครงสร้างใหม่

การปรับโครงสร้างโค้ด (Refactoring)เป็นวิธีหนึ่งในการแก้ไขปัญหาซอฟต์แวร์เสื่อมสภาพ โดยอธิบายว่าเป็นกระบวนการเขียนโค้ดที่มีอยู่ใหม่เพื่อปรับปรุงโครงสร้างโดยไม่ส่งผลกระทบต่อพฤติกรรมภายนอก[ 9 ]ซึ่งรวมถึงการลบโค้ดที่ ไม่ได้ใช้งาน และการเขียนส่วนต่างๆ ที่ได้รับการแก้ไขอย่างกว้างขวางและไม่ทำงานอย่างมีประสิทธิภาพอีกต่อไปใหม่ ต้องระมัดระวังไม่ให้เปลี่ยนแปลงพฤติกรรมภายนอกของซอฟต์แวร์ เนื่องจากอาจทำให้เกิดความไม่เข้ากันและส่งผลให้ซอฟต์แวร์เสื่อมสภาพได้ หลักการออกแบบบางประการที่ควรพิจารณาเมื่อพูดถึงการปรับโครงสร้างโค้ด ได้แก่ การรักษาโครงสร้างลำดับชั้นของโค้ดและการนำนามธรรม มาใช้ เพื่อทำให้โครงสร้างโค้ดง่ายขึ้นและเป็นไปในทิศทางทั่วไป[ 10 ]

เอนโทรปีของซอฟต์แวร์

เอนโทรปีของซอฟต์แวร์อธิบายถึงแนวโน้มที่การซ่อมแซมและการปรับเปลี่ยนระบบซอฟต์แวร์จะทำให้ระบบค่อยๆ สูญเสียโครงสร้างหรือเพิ่มความซับซ้อนขึ้น[ 11 ] Manny Lehmanใช้คำว่าเอนโทรปีในปี 1974 เพื่ออธิบายความซับซ้อนของระบบซอฟต์แวร์ และเพื่อเปรียบเทียบกับกฎข้อที่สองของอุณหพลศาสตร์กฎวิวัฒนาการของซอฟต์แวร์ของ Lehman ระบุว่าระบบซอฟต์แวร์ที่ซับซ้อนจะต้องได้รับการปรับเปลี่ยนอย่างต่อเนื่องเพื่อรักษาความเกี่ยวข้องกับสภาพแวดล้อมโดยรอบ และการปรับเปลี่ยนดังกล่าวจะเพิ่มเอนโทรปีของระบบ เว้นแต่จะมีการดำเนินการเฉพาะเพื่อลดเอนโทรปีลง[ 12 ]

Ivar Jacobsonและคณะในปี 1992 ได้อธิบายเอนโทรปีของซอฟต์แวร์ในลักษณะเดียวกัน และโต้แย้งว่าการเพิ่มขึ้นของความไม่เป็นระเบียบนี้เมื่อระบบได้รับการแก้ไขจะทำให้ระบบซอฟต์แวร์ไม่คุ้มค่าต่อการบำรุงรักษาในที่สุด แม้ว่าระยะเวลาจนกว่าจะเกิดเหตุการณ์นั้นจะขึ้นอยู่กับการออกแบบเริ่มต้นเป็นอย่างมาก และสามารถยืดออกไปได้ด้วยการปรับโครงสร้างใหม่[ 13 ]

ในปี พ.ศ. 2542 แอนดรูว์ ฮันท์และเดวิด โทมัสใช้การซ่อมหน้าต่างที่แตกเป็นอุปมาอุปไมยเพื่อหลีกเลี่ยงเอนโทรปีของซอฟต์แวร์ในการพัฒนาซอฟต์แวร์[ 14 ]

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Software_rot&oldid=1333839659 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ซอฟต์แวร์ที่เสื่อมสภาพ

การเสื่อมสภาพของซอฟต์แวร์ ( การเสื่อมสภาพ ของ บิต การเสื่อมสภาพ ของ โค้ด การสึกกร่อน ของ ซอฟต์แวร์ การเสื่อมถอยของซอฟต์แวร์ หรือ เอนโทรปีของซอฟต์แวร์ ) คือการเสื่อมถอย...

สาเหตุ

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

การเปลี่ยนแปลงสิ่งแวดล้อม

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

ความสามารถครั้งเดียว

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