การจัดการการปรับตั้งค่าซอฟต์แวร์
การจัดการการปรับตั้งค่าซอฟต์แวร์ (SCM) คือระเบียบวินัยในการระบุ, ควบคุม, และติดตามเวอร์ชันและการเปลี่ยนแปลงของสิ่งประดิษฐ์ซอฟต์แวร์ เพื่อให้สถานะของระบบเป็นที่ทราบและสามารถทำซ้ำได้ตลอดวงจรชีวิตของระบบ
Definition
การจัดการการปรับตั้งค่าซอฟต์แวร์คือชุดของกิจกรรมสำหรับการระบุรายการการปรับตั้งค่า, การควบคุมการเปลี่ยนแปลงในรายการเหล่านั้น, การบันทึกและรายงานสถานะการเปลี่ยนแปลง, และการตรวจสอบความสมบูรณ์และความถูกต้อง เพื่อให้ซอฟต์แวร์ที่กำลังพัฒนาได้รับการจัดการในลักษณะที่ควบคุมได้และสามารถทำซ้ำได้
Scope
หัวข้อนี้ครอบคลุมการระบุการปรับตั้งค่าและเส้นฐาน; ระบบควบคุมเวอร์ชันและแบบจำลองการแตกแขนงและการรวม; การควบคุมการเปลี่ยนแปลงและบทบาทของคณะกรรมการควบคุมการเปลี่ยนแปลง; การจัดการการสร้างและการเผยแพร่; การบัญชีสถานะการปรับตั้งค่าและการตรวจสอบ; และมาตรฐานต่างๆ เช่น ISO/IEC/IEEE 828 ที่กำหนดกระบวนการ SCM
Core questions
- รายการการปรับตั้งค่าถูกระบุและกำหนดเส้นฐานอย่างไร?
- การควบคุมเวอร์ชันและแบบจำลองการแตกแขนงจัดการการเปลี่ยนแปลงพร้อมกันอย่างไร?
- การเปลี่ยนแปลงถูกเสนอ, ตรวจสอบ, และอนุมัติอย่างไร?
- สถานะและความสมบูรณ์ของการปรับตั้งค่าถูกบันทึกและตรวจสอบอย่างไร?
Key theories
- เส้นฐานและการควบคุมการปรับตั้งค่า
- เส้นฐานคือการปรับตั้งค่าที่ได้รับการตรวจสอบอย่างเป็นทางการซึ่งทำหน้าที่เป็นข้อมูลอ้างอิงที่เสถียร; การเปลี่ยนแปลงรายการที่กำหนดเส้นฐานจะผ่านการตรวจสอบและอนุมัติที่ควบคุม เพื่อรักษาระบบให้อยู่ในสถานะที่ทราบและสามารถทำซ้ำได้
- การควบคุมเวอร์ชันแบบกระจายและการแตกแขนง
- ระบบสมัยใหม่เช่น Git ให้พื้นที่เก็บข้อมูลเต็มรูปแบบแก่ผู้พัฒนาทุกคน และรองรับการแตกแขนงและการรวมที่ง่ายดาย ซึ่งช่วยให้การทำงานแบบขนานและเวิร์กโฟลว์การรวมที่รองรับการรวมและการส่งมอบอย่างต่อเนื่อง
Clinical relevance
SCM ทำให้การสร้างสามารถทำซ้ำได้, การเปลี่ยนแปลงสามารถตรวจสอบย้อนหลังได้, และการเผยแพร่สามารถควบคุมได้; หากไม่มี SCM ทีมงานจะไม่สามารถสร้างเวอร์ชันที่จัดส่งไปแล้วได้อย่างน่าเชื่อถือ, ประสานงานการทำงานพร้อมกัน, หรือตรวจสอบสิ่งที่เปลี่ยนแปลงไป ซึ่งเป็นรากฐานสำคัญสำหรับการส่งมอบที่เชื่อถือได้และระบบอัตโนมัติของ DevOps
Evidence & guidelines
ISO/IEC/IEEE 828 ระบุถึงกระบวนการจัดการการปรับตั้งค่า และพื้นที่ความรู้การจัดการการปรับตั้งค่าซอฟต์แวร์ของ SWEBOK ให้ข้อมูลอ้างอิงที่เป็นที่ยอมรับสำหรับกิจกรรม SCM
History
การควบคุมเวอร์ชันพัฒนาจากเครื่องมือยุคแรกๆ เช่น SCCS และ RCS ในทศวรรษ 1970 และ 1980 ผ่านระบบรวมศูนย์ เช่น CVS และ Subversion ไปจนถึงระบบกระจายศูนย์ เช่น Git ในทศวรรษ 2000; การปฏิบัติการจัดการการปรับตั้งค่าอย่างเป็นทางการได้ย้ายจากมาตรฐานฮาร์ดแวร์และการป้องกันประเทศมาสู่การเป็นวิศวกรรมซอฟต์แวร์กระแสหลัก
Debates
- กลยุทธ์การแตกแขนง
- ทีมงานถกเถียงกันเรื่องเวิร์กโฟลว์ เช่น การพัฒนาแบบ trunk-based เทียบกับการแตกแขนงคุณสมบัติที่มีอายุยาวนานและ Git-flow; การพัฒนาแบบ trunk-based ที่มีการรวมบ่อยครั้งสนับสนุนการส่งมอบอย่างต่อเนื่อง ในขณะที่การแตกแขนงที่ซับซ้อนกว่าอาจแยกงานออกไปโดยมีค่าใช้จ่ายในการรวมที่ยุ่งยาก
Key figures
- Walter Tichy
- Linus Torvalds
- Marc Rochkind
Related topics
Seminal works
- ieee828
- chacon2014
- swebok2014
Frequently asked questions
- การจัดการการปรับตั้งค่าเป็นเพียงการควบคุมเวอร์ชันเท่านั้นหรือไม่?
- ไม่ใช่ การควบคุมเวอร์ชันเป็นเครื่องมือหลัก แต่ SCM มีขอบเขตกว้างกว่า: ยังครอบคลุมถึงการระบุการปรับตั้งค่า, เส้นฐาน, การควบคุมการเปลี่ยนแปลง, การจัดการการสร้างและการเผยแพร่, และการบัญชีสถานะและการตรวจสอบรายการการปรับตั้งค่าทั้งหมด ไม่ใช่แค่ซอร์สโค้ดเท่านั้น
- ทำไมเส้นฐานจึงสำคัญ?
- เส้นฐานบันทึกการปรับตั้งค่าที่ทราบว่าดีซึ่งสามารถทำซ้ำและสร้างต่อยอดได้; มันให้ข้อมูลอ้างอิงที่เสถียรสำหรับการเปลี่ยนแปลงที่ควบคุมได้, ช่วยให้ทีมสามารถย้อนกลับได้, และจำเป็นสำหรับการเผยแพร่และการตรวจสอบที่สามารถทำซ้ำได้