Versioning services - taritinth/sw-dev-tools-and-environments-project GitHub Wiki

Semantic versioning

Versioning services ที่ทีมเราเลือกใช้ คือ Sematic Versioning โดยมีหลักการ คือ เลข version นั้นจะประกอบไปด้วย 3 ส่วนหลัก คือ

MAJOR.MINOR.PATCH

Example version

1.5.30

Major (Breaking change)

  • Major จะเปลี่ยนเมื่อมีความเปลี่ยนแปลงที่ค่อนข้างใหญ่ ที่ Incompatible กับ version ปัจจุบัน อาจจะเป็นการเพิ่มความสามารถชุดใหญ่ หรือกระทั่งเปลี่ยนแปลงแนวคิดของเครื่องมือ (อย่างเช่น AngularJS ไปเป็น Angular 2)

Minor (Backwords compatible)

  • Minor จะเปลี่ยนเมื่อมีการเพิ่มความสามารถใหม่ๆ (Feature) เข้ามา ถอดออก หรือปรับแต่งรูปแบบการทำงาน และเป็นการอัพเดตที่ไม่ทำให้เกิด Major change หรือการเปลี่ยนแปลงสำคัญ

Patch (Big fixed)

  • Patch จะเปลี่ยนเมื่อมีการแก้ข้อผิดพลาดของระบบ เรียกว่าเป็นตัวเลขที่บ่งบอกถึงการแก้ไขบั๊ก

ข้อดี

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

ข้อเสีย

  • อาจจะสามารถแบ่งตัวเลขได้หลายส่วนกว่านี้ อย่างเช่น อาจจะมีเลขส่วนที่ 4 หรือ 5 เพิ่ม เพื่อบ่งชี้ถึงการเปลี่ยนแปลงที่ละเอียดและเจาะจงกว่าเดิม
  • หากผู้พัฒนาไม่มีความเข้าใจในโมเดลของ sementic versioning อาจทำให้เกิดการตัดสินใจเปลี่ยนแปลง major version ที่มีความเสี่ยงสูง ในเวลาที่ไม่ถูกต้องได้

วิธีการปรับปรุง

  • เรียนรู้เกี่ยวกับระบบอัตโนมัติเพิ่มเติมเพื่อช่วยลดการเข้าใจผิดพลาดที่เกิดจากตัวผู้พัฒนาได้