การบำรุงรักษาและวิวัฒนาการของซอฟต์แวร์
การบำรุงรักษาและวิวัฒนาการของซอฟต์แวร์เกี่ยวข้องกับการปรับเปลี่ยนซอฟต์แวร์หลังจากการส่งมอบ และพลวัตระยะยาวที่ระบบต้องเปลี่ยนแปลงอย่างต่อเนื่องเพื่อคงประโยชน์ใช้สอยไว้
Definition
การบำรุงรักษาซอฟต์แวร์คือการปรับเปลี่ยนผลิตภัณฑ์ซอฟต์แวร์หลังจากการส่งมอบเพื่อแก้ไขข้อผิดพลาด ปรับปรุงประสิทธิภาพ หรือปรับให้เข้ากับสภาพแวดล้อมที่เปลี่ยนแปลงไป และวิวัฒนาการซอฟต์แวร์คือกระบวนการที่กว้างกว่าและต่อเนื่องที่ซอฟต์แวร์เปลี่ยนแปลงไปตลอดอายุการใช้งานเพื่อตอบสนองต่อความต้องการและสภาพแวดล้อมที่เปลี่ยนแปลงไป
Scope
ขอบเขตนี้ครอบคลุมประเภทของการบำรุงรักษา (การแก้ไข, การปรับตัว, การปรับปรุงให้สมบูรณ์, การป้องกัน); กฎเชิงประจักษ์ของวิวัฒนาการซอฟต์แวร์; ความเข้าใจโปรแกรมและการวิเคราะห์ผลกระทบ; การปรับปรุงโครงสร้าง, วิศวกรรมย้อนกลับ, และการย้ายระบบเก่า; การสะสมและการจัดการหนี้ทางเทคนิค; และกระบวนการและมาตรฐานที่ควบคุมการบำรุงรักษา เช่น ISO/IEC 14764
Sub-topics
Core questions
- การเปลี่ยนแปลงประเภทใดบ้างที่ประกอบขึ้นเป็นการบำรุงรักษา และมีความแตกต่างกันอย่างไร?
- กฎเชิงประจักษ์ใดบ้างที่ควบคุมว่าซอฟต์แวร์ต้องวิวัฒนาการอย่างไรเมื่อเวลาผ่านไป?
- ซอฟต์แวร์เก่าได้รับการทำความเข้าใจ ปรับโครงสร้าง และย้ายข้อมูลอย่างไร?
- หนี้ทางเทคนิคสะสมได้อย่างไรและมีการจัดการอย่างไร?
Key theories
- ประเภทของการบำรุงรักษาซอฟต์แวร์
- การบำรุงรักษาแบ่งออกเป็นการแก้ไข (แก้ไขข้อผิดพลาด), การปรับตัว (ตอบสนองต่อการเปลี่ยนแปลงสภาพแวดล้อม), การปรับปรุงให้สมบูรณ์ (ปรับปรุงฟังก์ชันหรือประสิทธิภาพ), และการป้องกัน (ปรับปรุงความสามารถในการบำรุงรักษา) โดยงานการปรับตัวและการปรับปรุงให้สมบูรณ์มักจะมีบทบาทสำคัญในการปฏิบัติจริง
- กฎของวิวัฒนาการซอฟต์แวร์ของ Lehman
- Lehman สังเกตว่าระบบที่ใช้งานอยู่จะต้องเปลี่ยนแปลงอย่างต่อเนื่อง มิฉะนั้นจะด้อยประสิทธิภาพลงเรื่อยๆ และเมื่อระบบวิวัฒนาการ ความซับซ้อนของระบบจะเพิ่มขึ้น เว้นแต่จะมีการดำเนินการเพื่อลดความซับซ้อนนั้น
Clinical relevance
โดยทั่วไป การบำรุงรักษามักจะใช้ต้นทุนส่วนใหญ่ของระบบตลอดอายุการใช้งาน ดังนั้น การทำความเข้าใจพลวัตของวิวัฒนาการ การควบคุมการเพิ่มขึ้นของความซับซ้อน และการจัดการหนี้ทางเทคนิคจึงมีความสำคัญอย่างยิ่งต่อเศรษฐกิจและความอยู่รอดของซอฟต์แวร์ในระยะยาว
Evidence & guidelines
ISO/IEC 14764 กำหนดกระบวนการบำรุงรักษาซอฟต์แวร์ และส่วนความรู้ด้านการบำรุงรักษาซอฟต์แวร์ของ SWEBOK ให้คำแนะนำที่เป็นที่ยอมรับเกี่ยวกับประเภท กิจกรรม และเทคนิคการบำรุงรักษา
History
การตระหนักว่าการบำรุงรักษามีบทบาทสำคัญในต้นทุนซอฟต์แวร์เพิ่มขึ้นในช่วงทศวรรษ 1970; Lehman และ Belady ได้กำหนดกฎของวิวัฒนาการซอฟต์แวร์จากการศึกษาเชิงประจักษ์ของระบบขนาดใหญ่ และเทคนิคการปรับปรุงโครงสร้างและการปรับปรุงระบบเก่าได้พัฒนาขึ้นเมื่อระบบที่มีอายุการใช้งานยาวนานขึ้น และหนี้ทางเทคนิคกลายเป็นข้อกังวลที่ได้รับการยอมรับ
Debates
- การบำรุงรักษา, การปรับปรุงโครงสร้าง, หรือการเปลี่ยนระบบเก่า
- การตัดสินใจว่าจะบำรุงรักษาต่อไป ปรับโครงสร้าง หรือเปลี่ยนระบบเก่าทั้งหมด เป็นการถกเถียงเชิงกลยุทธ์ที่เกิดขึ้นซ้ำๆ โดยต้องชั่งน้ำหนักความเสี่ยงและต้นทุนของการเปลี่ยนระบบ เทียบกับต้นทุนที่เพิ่มขึ้นและความเปราะบางของการบำรุงรักษาอย่างต่อเนื่อง
Key figures
- Meir M. Lehman
- Les Belady
- Ian Sommerville
Related topics
Seminal works
- lehman1980
- iso14764
- sommerville2015
Frequently asked questions
- การบำรุงรักษาเป็นเพียงการแก้ไขข้อผิดพลาดเท่านั้นหรือไม่?
- ไม่ใช่ การแก้ไขข้อผิดพลาด (การบำรุงรักษาเชิงแก้ไข) เป็นเพียงประเภทหนึ่งเท่านั้น ความพยายามในการบำรุงรักษาส่วนใหญ่เป็นการปรับตัวและการปรับปรุงให้สมบูรณ์ — การปรับซอฟต์แวร์ให้เข้ากับสภาพแวดล้อมใหม่และการเพิ่มหรือปรับปรุงความสามารถ — ซึ่งรวมกันแล้วมักจะเกินกว่างานแก้ไขในระบบทั่วไป
- เหตุใดความซับซ้อนของซอฟต์แวร์จึงมีแนวโน้มที่จะเพิ่มขึ้นเมื่อเวลาผ่านไป?
- ตามที่ Lehman สังเกต การเปลี่ยนแปลงอย่างต่อเนื่องเพื่อตอบสนองความต้องการที่เปลี่ยนแปลงไปจะเพิ่มโครงสร้างและกรณีพิเศษต่างๆ เว้นแต่จะมีการใช้ความพยายามอย่างจงใจในการปรับโครงสร้างและลดความซับซ้อน ระบบก็จะเปลี่ยนแปลงได้ยากขึ้นเรื่อยๆ