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

อ่าน 4 นาที

ซอฟต์แวร์ที่เสื่อมสภาพตามอายุการใช้งาน

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

ซอฟต์แวร์ที่เสื่อมสภาพตามอายุการใช้งาน

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

ปรากฏการณ์นี้ได้รับการระบุครั้งแรกโดยDavid Parnasในบทความที่สำรวจว่าควรทำอย่างไรกับเรื่องนี้: [ 2 ]

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

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

การจัดการเชิงรุกเพื่อแก้ไขปัญหาซอฟต์แวร์ที่ล้าสมัย

ซอฟต์แวร์ที่เสื่อมสภาพตามอายุการใช้งาน

ความล้มเหลวของซอฟต์แวร์มีแนวโน้มที่จะทำให้เกิดการหยุดทำงานของระบบโดยไม่คาดคิดมากกว่าความล้มเหลวของฮาร์ดแวร์[ 5 ] [ 6 ]ทั้งนี้เนื่องจากซอฟต์แวร์มีอัตราความล้มเหลวเพิ่มขึ้นเรื่อยๆ เมื่อเวลาผ่านไป เนื่องจากการเสียหายของข้อมูล การสะสม ข้อผิดพลาดทางตัวเลขและการใช้ทรัพยากรอย่างไม่จำกัด ในซอฟต์แวร์ที่ใช้กันอย่างแพร่หลายและซอฟต์แวร์เฉพาะทาง การดำเนินการทั่วไปเพื่อแก้ไขปัญหาคือการรีบูต เนื่องจากความเสื่อมสภาพเกิดขึ้นจากความซับซ้อนของซอฟต์แวร์ซึ่งไม่เคยปราศจากข้อผิดพลาด การตรวจสอบอย่างสมบูรณ์ว่าซอฟต์แวร์ชิ้นหนึ่งปราศจากข้อบกพร่องนั้นแทบเป็นไปไม่ได้ แม้แต่ซอฟต์แวร์ที่มีชื่อเสียงอย่างWindowsและmacOSก็ต้องได้รับการอัปเดตอย่างต่อเนื่องเพื่อปรับปรุงประสิทธิภาพและแก้ไขข้อบกพร่อง การพัฒนาซอฟต์แวร์มักจะถูกขับเคลื่อนด้วยความต้องการที่จะทำตามกำหนดเวลาการวางจำหน่ายมากกว่าการรับประกันความน่าเชื่อถือในระยะยาว[ 7 ]การออกแบบซอฟต์แวร์ที่สามารถต้านทานความเสื่อมสภาพได้นั้นเป็นเรื่องยาก ซอฟต์แวร์ทั้งหมดจะไม่เสื่อมสภาพในอัตราเดียวกัน เนื่องจากผู้ใช้บางรายใช้ระบบอย่างเข้มข้นกว่าผู้ใช้รายอื่น[ 8 ]

การฟื้นฟู

เพื่อป้องกันการเกิดข้อผิดพลาดหรือการเสื่อมสภาพสามารถใช้การฟื้นฟูซอฟต์แวร์เชิง รุกได้ เนื่องจากอายุการใช้งานที่หลีกเลี่ยงไม่ได้จะนำไปสู่ความล้มเหลวในระบบซอฟต์แวร์ เทคนิคเชิงรุกนี้ได้รับการระบุว่าเป็นโซลูชันที่คุ้มค่าในระหว่างการวิจัยที่ ห้องปฏิบัติการ AT&T Bellเกี่ยวกับซอฟต์แวร์ที่ทนต่อข้อผิดพลาดในช่วงทศวรรษ 1990 [ 9 ]การฟื้นฟูซอฟต์แวร์ทำงานโดยการกำจัดเงื่อนไขข้อผิดพลาดที่สะสมและปลดปล่อยทรัพยากรระบบ ตัวอย่างเช่น โดยการล้างตารางเคอร์เนลของระบบปฏิบัติการ การใช้การเก็บขยะ การเริ่มต้นโครงสร้างข้อมูลภายในใหม่ และวิธีการฟื้นฟูที่เป็นที่รู้จักมากที่สุดอาจเป็นการรีบูตระบบ

มีเทคนิคที่เรียบง่ายและเทคนิคที่ซับซ้อนในการฟื้นฟูระบบ วิธีที่คนส่วนใหญ่คุ้นเคยคือการรีบูต ฮาร์ดแวร์หรือซอฟต์แวร์ ตัวอย่างทางเทคนิคเพิ่มเติมคือวิธีการฟื้นฟูระบบของซอฟต์แวร์เว็บเซิร์ฟเวอร์ Apache Apacheใช้การฟื้นฟูระบบรูปแบบหนึ่งโดยการฆ่าและสร้างกระบวนการใหม่หลังจากให้บริการคำขอจำนวนหนึ่ง[ 10 ] อีกเทคนิคหนึ่งคือการรีสตาร์ทเครื่องเสมือนที่ทำงานในสภาพแวดล้อมการประมวลผลแบบคลาวด์[ 11 ]

บริษัทโทรคมนาคมข้ามชาติAT&Tได้นำซอฟต์แวร์การปรับปรุงใหม่มาใช้ในระบบแบบเรียลไทม์ที่รวบรวมข้อมูลการเรียกเก็บเงินในสหรัฐอเมริกาสำหรับชุมสายโทรศัพท์ส่วนใหญ่[ 12 ]

ระบบบางระบบที่ใช้ซอฟต์แวร์ฟื้นฟูสภาพ ได้แก่: [ 13 ]

  1. ระบบประมวลผลธุรกรรม
  2. เว็บเซิร์ฟเวอร์
  3. ระบบยานอวกาศ

ในปี 2013 การประชุมวิชาการ นานาชาติ IEEE International Symposium on Software Reliability Engineering (ISSRE) ได้เป็นเจ้าภาพจัดการประชุมเชิงปฏิบัติการนานาชาติประจำปีครั้งที่ 5 ว่าด้วยการเสื่อมสภาพและการฟื้นฟูซอฟต์แวร์ ( woSAR ) โดยมีหัวข้อต่างๆ ดังนี้:

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

การรั่วไหลของหน่วยความจำ

ภาษาโปรแกรมบาง ภาษา เช่นCและC++อนุญาตให้โปรแกรมเมอร์จัดสรรหน่วยความจำฮีปได้นอกจากนี้ โปรแกรมเมอร์อาจต้องปล่อยหน่วยความจำเมื่อไม่จำเป็นต้องใช้หน่วยความจำอีกต่อไป การปล่อยหน่วยความจำเป็นสิ่งจำเป็นเนื่องจากระบบปฏิบัติการ บางระบบ (OS) ไม่ทำการเก็บขยะเมื่อกระบวนการเสร็จสิ้น เมื่อเวลาผ่านไป สิ่งนี้มีแนวโน้มที่จะใช้หน่วยความจำมากขึ้นเรื่อยๆ จนในที่สุดทำให้คอมพิวเตอร์หมดหน่วยความจำ[ 14 ]ในสภาวะที่มีหน่วยความจำเหลือน้อย คอมพิวเตอร์มักจะทำงานช้าลงเนื่องจากการสลับและการทำงานที่ หนักหน่วง เมื่อเกิดเหตุการณ์นี้ แอปพลิเคชันจะทำงานช้าลงหรือแม้แต่ไม่ตอบสนอง หากคอมพิวเตอร์หมดทั้งหน่วยความจำและพื้นที่สลับ ระบบปฏิบัติการอาจรีบูตโดยอัตโนมัติ หรือแย่กว่านั้นคือค้าง[ 15 ]

โปรแกรมที่เขียนด้วยภาษาโปรแกรมที่มีตัวจัดการหน่วยความจำอัตโนมัติ (เช่นJava ) มีโอกาสเกิดการรั่วไหลของหน่วยความจำน้อยกว่า เนื่องจากหน่วยความจำที่ไม่ถูกอ้างอิงอีกต่อไปจะถูกปล่อยให้ว่างโดยตัวจัดการหน่วยความจำอัตโนมัติ อย่างไรก็ตาม นี่ไม่ได้หมายความว่าจะเป็นไปไม่ได้ที่จะเขียนโค้ดที่ทำให้เกิดการรั่วไหลของหน่วยความจำในภาษาเหล่านั้น

บางครั้งส่วนประกอบที่สำคัญของระบบปฏิบัติการเองก็อาจเป็นสาเหตุของการรั่วไหลของหน่วยความจำได้ตัวอย่างเช่น ใน Microsoft Windows การใช้หน่วยความจำของปลั๊กอิน Windows Explorerอาจทำให้หน่วยความจำที่มีอยู่หมดลงจนถึงขั้นทำให้คอมพิวเตอร์ใช้งานไม่ได้เลยอาจจำเป็นต้องรีบูต เครื่อง [ 16 ]

การดำเนินการ

วิธีการสองวิธีในการดำเนินการฟื้นฟูสภาพ ได้แก่:

  1. การฟื้นฟูตามช่วงเวลา
  2. การฟื้นฟูสภาพผิวโดยอาศัยการทำนาย

หน่วยความจำบวม

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

เว็บเซอร์วิสที่ใช้ .NET จัดการหน่วยความจำเชิงตรรกะหลายประเภท เช่น สแต็ก ฮีปที่ไม่ได้จัดการ และฮีปที่จัดการ (พื้นที่ว่าง) เมื่อหน่วยความจำทางกายภาพเต็ม ระบบปฏิบัติการจะเขียนส่วนที่ใช้งานน้อยลงดิสก์ เพื่อให้สามารถจัดสรรใหม่ให้กับแอปพลิเคชันอื่น ซึ่งเป็นกระบวนการที่เรียกว่าการแบ่งหน้าหรือการสลับ แต่หากจำเป็นต้องใช้หน่วยความจำ จะต้องโหลดใหม่จากดิสก์ หากแอปพลิเคชันหลายตัวมีความต้องการสูง ระบบปฏิบัติการอาจใช้เวลาส่วนใหญ่ในการย้ายข้อมูลระหว่างหน่วยความจำหลักและดิสก์ ซึ่งเป็นกระบวนการที่เรียกว่าการทำงานหนักของดิสก์ [ 17 ] เนื่องจากตัวเก็บขยะต้องตรวจสอบการจัดสรรทั้งหมดเพื่อตัดสินใจว่าส่วนใดกำลังใช้งานอยู่ จึงอาจทำให้การทำงานหนักนี้รุนแรงขึ้น ส่งผลให้การสลับอย่างกว้างขวางอาจทำให้รอบการเก็บขยะยืดออกไปจากมิลลิวินาทีเป็นหลายสิบวินาที ซึ่งส่งผลให้เกิดปัญหาในการใช้งาน

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • R. Matias Jr. และ PJ Freitas Filho, "การศึกษาเชิงทดลองเกี่ยวกับการเสื่อมสภาพและการฟื้นฟูซอฟต์แวร์ในเว็บเซิร์ฟเวอร์," รายงานการประชุมวิชาการนานาชาติด้านซอฟต์แวร์และการประยุกต์ใช้งานคอมพิวเตอร์ประจำปีครั้งที่ 30 (COMPSAC'06), เล่มที่ 01, หน้า 189 – 196, 2006
  • M. Grottke, R. Matias Jr. และ KS Trivedi, "พื้นฐานของการเสื่อมสภาพของซอฟต์แวร์", การประชุมเชิงปฏิบัติการเกี่ยวกับการเสื่อมสภาพและการฟื้นฟูซอฟต์แวร์ (WoSAR/ISSRE), 2008
  • R. Matias Jr, P. Barbetta, K. Trivedi, P. Freitas Filho "การทดสอบการเสื่อมสภาพแบบเร่งที่ใช้กับการทดลองอายุการใช้งานของซอฟต์แวร์" IEEE Transactions on Reliability 59(1): 102–114, 2010
  • M. Grottke, L. Li, K. Vaidyanathan และ KS Trivedi, "การวิเคราะห์การเสื่อมสภาพของซอฟต์แวร์ในเว็บเซิร์ฟเวอร์," IEEE Transactions on Reliability, เล่มที่ 55, ฉบับที่ 3, หน้า 411–420, 2006
  • M. Grottke, K. Trivedi, "การต่อสู้กับบั๊ก: ลบ, ลองใหม่, ทำซ้ำ และฟื้นฟู," IEEE Computer 40(2): 107–109, 2007
  • ดูเอกสารเพิ่มเติมเกี่ยวกับรายงานการประชุมเชิงปฏิบัติการเรื่องการเสื่อมสภาพและการฟื้นฟูซอฟต์แวร์ (WoSAR'08,'10, '11, '12, '13, '14) ได้ที่ IEEE Xplore
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Software_aging&oldid=1343084284 "

สรุปเนื้อหา

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

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

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

ซอฟต์แวร์ที่เสื่อมสภาพตามอายุการใช้งาน

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

การฟื้นฟู

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

การรั่วไหลของหน่วยความจำ

ภาษาโปรแกรม บาง ภาษา เช่น C และ C++ อนุญาตให้โปรแกรมเมอร์จัดสรร หน่วยความจำฮีปได้ นอกจากนี้ โปรแกรมเมอร์อาจต้องปล่อยหน่วยความจำเมื่อไม่จำเป็นต้องใช้หน่วยความจำอีกต่อไป การปล่อยหน่วยความจำเป็นสิ่งจำเป็นเนื่องจาก ระบบปฏิบัติการ บางระบบ (OS) ไม่ทำการ เก็บขยะ...