เวอร์ชันการอัพเดทหมายถึงอะไรจริง ๆ ?


18

จำนวนมากของการปรับปรุงซอฟต์แวร์ทำตามรูปแบบของ v0.1 เพื่อ v0.2 เพื่อv2.6.5.6 "อัพเดต" ของซอฟต์แวร์เหล่านี้มีความหมายอย่างไร มีมาตรฐานอุตสาหกรรมเสมอหรือโปรแกรมเมอร์ทำยก update # หรือเพิ่มทศนิยมเพิ่มเติมหรือไม่


12
@ S.Lott เนื่องจากฉันค่อนข้างใหม่สำหรับฉากการเขียนโปรแกรมฉันไม่รู้จักความจำเพาะ นี่เป็นวิธีที่ดีที่สุดในการถามว่าฉันจะทำอะไรได้บ้าง
James Mertz

9
@ S.Lott ตัดคาเฟอีนกลับมาทำให้คุณหงุดหงิด
ocodo

2
@ S.Lott สามารถแก้ไขได้ตามที่เห็นสมควร ฉันรู้สึกว่าคุณรู้ว่าสิ่งที่ฉันกำลังมองหา อย่างไรก็ตามฉันรู้สึกว่าคำตอบที่ได้รับนั้นดีมาก ฉันยังรู้สึกว่าตัดสินโดยการโหวตจากความคิดเห็นก่อนหน้าของฉันว่าฉันทำดีที่สุดที่ฉันสามารถทำได้และคำถามก็โอเค อย่างไรก็ตามฉันยินดีต้อนรับการวิจารณ์เช่นเดียวกับการแก้ไข ทำตามที่เห็นสมควร สำหรับฉันฉันทิ้งไว้คนเดียว
James Mertz

1
@ S.Lott คำถามดูเหมือนชัดเจนสำหรับฉัน ฉันไม่คิดว่าการระบุรายชื่อองค์กรการเขียนมาตรฐานที่เฉพาะเจาะจงจะเป็นการปรับปรุงที่สำคัญ หากคุณรู้สึกอย่างอื่นอย่าลังเลที่จะแก้ไข คุณมีตัวแทนสำหรับมัน
Adam Lear

3
@ S.Lott: "มีมาตรฐานอุตสาหกรรม" ดีอย่างสมบูรณ์ ใช่มีมาตรฐานอุตสาหกรรม! มันไม่สำคัญว่าใครจะเป็นคนเขียน: KronoS ต้องการทราบว่ารุ่นใดมีความหมายว่าอย่างไรมันเป็นทางเลือกของเขาที่จะระบุว่ารายละเอียดของเขาไปได้อย่างไร ... บางทีคุณควรพูดถึงว่าคุณเห็นคำถามกว้าง ๆ การใช้ค้อนทุบกับรายละเอียดนั้นไม่ทำให้ผู้ใช้บอกได้ชัดเจนว่าผู้ใช้กำหนด: คำไม่ได้ทำให้ผู้ใช้ชัดเจนโดยบอกว่าไม่มีความหมายหลังจากความคิดเห็นครั้งแรกของคุณไม่ชัดเจนสำหรับผู้ใช้
Tamara Wijsman

คำตอบ:


16

เช่นเดียวกับฌอนกล่าวว่าไม่มีมาตรฐานจริงๆ บริษัท บางแห่งมีแนวปฏิบัติเกี่ยวกับการกำหนดรุ่นที่ดีกว่า บริษัท อื่น ๆ (ฉันจัดการกับผู้ขายที่ข้ามหมายเลขรุ่นใหญ่และ บริษัท อื่น ๆ ที่ติดอยู่ใน xy รุ่นเดียวกันหลายรุ่นในภายหลัง)

ต้องบอกว่านักประดิษฐ์ Gravatars และผู้ร่วมก่อตั้งของ GitHub ( Tom Preston-Werner ) ได้เขียนเอกสารสำหรับ ' Semantic Versioning ' ซึ่งมีค่ามากกว่าการอ่าน

นี่คือข้อยกเว้นของบทนำ:

เพื่อเป็นการแก้ปัญหานี้ฉันขอเสนอกฎและข้อกำหนดง่ายๆที่กำหนดวิธีการกำหนดและเพิ่มหมายเลขเวอร์ชัน เพื่อให้ระบบนี้ใช้งานได้คุณต้องประกาศ API สาธารณะก่อน ซึ่งอาจประกอบด้วยเอกสารประกอบหรือถูกบังคับใช้โดยรหัสเอง เป็นสิ่งสำคัญที่ API นี้ต้องชัดเจนและแม่นยำ เมื่อคุณระบุ API สาธารณะของคุณแล้วคุณจะสามารถสื่อสารการเปลี่ยนแปลงนั้นด้วยการเพิ่มเฉพาะรุ่นหมายเลขของคุณ พิจารณารูปแบบเวอร์ชันของ XYZ (Major.Minor.Patch) การแก้ไขข้อบกพร่องไม่ส่งผลกระทบต่อ API ที่เพิ่มขึ้นของเวอร์ชันแพตช์, การเพิ่ม / แก้ไข API ที่เข้ากันได้แบบย้อนหลังนั้นเป็นการเพิ่มรุ่นรอง, และการเปลี่ยนแปลง API ที่เข้ากันไม่ได้ย้อนหลังเป็นการเพิ่มรุ่นหลัก

ฉันเรียกระบบนี้ว่า "Semantic Versioning" ภายใต้โครงร่างนี้หมายเลขรุ่นและวิธีที่พวกเขาเปลี่ยนสื่อความหมายเกี่ยวกับรหัสอ้างอิงและสิ่งที่ได้รับการแก้ไขจากรุ่นหนึ่งเป็นรุ่นถัดไป


7

ด้วยตัวเลข 4 หลักมันมักจะเป็น MajorV.MinorV.PatchNum.BuildNum อย่างน้อยที่สุดที่ฉันทำงาน

โดยส่วนตัวฉันชอบรูปแบบการกำหนดเวอร์ชันของ Ubuntu - ทำให้ชีวิตง่ายขึ้นมาก


โครงการของพวกเขาคืออะไร? ทำไมคุณถึงชอบพวกเขา
James Mertz

3
Ubuntu 10.10 = ตุลาคม 2010, Ubuntu 10.04 = เมษายน 2010, Ubuntu 11.04 = Aprial 2011, Ubuntu 9.10 = ตุลาคม 2009, เป็นต้น
งาน

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

@ jmort245 แน่นอน! ระบบที่มนุษย์สร้างขึ้นนั้นค่อนข้างยุ่ง ธนาคารที่ผิดกฎหมายคิดว่ามีปี 360, 362, 365, 366 และอื่น ๆ ในหนึ่งปี ระบบการกำหนดเวอร์ชันเป็นอีกหนึ่งการสร้างสรรค์ที่โง่ Timestamps ไม่ทำให้เราคิดว่าแม้ว่า 20050207 จะใช้เวลาในการอ่านและคิดออกนานกว่า 502 อีกเล็กน้อยซอฟต์แวร์ตัวไหนที่วางจำหน่ายบ่อยกว่าเดือนละครั้ง
งาน

2
@job: แต่การใช้รุ่นช่วยให้คุณสามารถผูกคุณสมบัติกับรุ่นหลักหรือรุ่นรองได้ ดังนั้นถ้าฉันมีรุ่น 2 ฉันรู้ว่าฉันมีฟีเจอร์ X ในขณะที่เวอร์ชัน 1 ไม่มีเวอร์ชัน X
Martin York

6

รุ่นสั้นคือไม่มีมาตรฐานและ บริษัท ทำสิ่งที่พวกเขาต้องการ โดยพื้นฐานแล้วยิ่งคุณมีจำนวนมากเท่าไหร่จำนวนการเปลี่ยนแปลงแต่ละครั้งก็น้อยลงเท่านั้น โดยทั่วไปแล้วคุณจะเห็นเวอร์ชัน xy อย่างน้อยซึ่งการเปลี่ยนแปลงของ xa ใน x หมายถึงรุ่นใหญ่ (การปรับปรุงที่สำคัญ / การเปิดตัวคุณลักษณะ) และ y หมายถึงการเผยแพร่เล็กน้อย (tweaks ที่สำคัญหรือการแก้ไขข้อบกพร่อง) ทศนิยมมากขึ้นหลังจากที่ทั้งสองอาจหมายถึงสิ่งที่แตกต่างกันภายใน บริษัท แม้ว่ามักจะหมุนรอบเนื้อหาเล็ก ๆ น้อย ๆ สร้างหรือแพทช์ที่เป็นตัวแทนของการแก้ไขที่รวดเร็วและมีขนาดเล็กลง

Wikipedia มีบทความที่ครอบคลุมเนื้อหานี้โดยละเอียดยิ่งขึ้น


3

วัตถุประสงค์ของหมายเลขรุ่นคือการให้การอ้างอิงสำหรับรายงานปัญหา ข้อกำหนดเพียงอย่างเดียวคือทุกรุ่นมีหมายเลขรุ่นที่ไม่ซ้ำกัน ตัวเลขบางตัวได้แรงหนุนจากการตลาดตัวเลขที่ใหญ่กว่านั้นง่ายกว่าที่จะขายและตัวเลขพลังงานเช่น 10 (ตัวเลขโรมัน X) นั้นติดหูจริงๆ บางคนใช้การเปลี่ยนแปลงของการกำหนดเวอร์ชันความหมาย:

MAJOR.MINOR.MICRO.BUILD

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

หลายกลุ่มวางหมายเลข BUILD ในรุ่นของพวกเขา มันมักจะมีประโยชน์เฉพาะระหว่างการทดสอบและกลุ่มการพัฒนา

บางกลุ่มเพิ่มซีแมนทิกส์เพิ่มเติมเช่นการเพิ่มขึ้นเล็กน้อยของเลขคี่สำหรับการสร้างแบบทดลองและการเพิ่มขึ้นเล็กน้อยของเลขไมเนอร์สำหรับการผลิตออกมา ( เคอร์เนล Linuxใช้วิธีการนี้)

บรรทัดล่างคือว่าไม่มีมาตรฐานนอกเหนือจากรุ่นที่ใหม่กว่าใช้หมายเลขรุ่นที่สูงกว่าและแต่ละหมายเลขรุ่นไม่ซ้ำกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.