ฉันควรเพิ่มหมายเลขรุ่นเมื่อใด


23

ฉันไม่ได้เรียนรู้การเขียนโปรแกรมที่โรงเรียนและฉันไม่ได้ทำงานในฐานะนักพัฒนา (มืออาชีพ) ดังนั้นพื้นฐานมากมายจึงไม่ค่อยชัดเจนสำหรับฉัน คำถามนี้พยายามที่จะอธิบายอย่างใดอย่างหนึ่ง


ตอนนี้ขอสมมติว่าผมมีปัญหา#1, #2และ#3ในประเด็นการติดตามของฉันที่มีการกำหนดให้การแก้ไข / ปรับปรุงสำหรับรุ่น1.0.0และว่าที่ผ่านมา (มีเสถียรภาพ) 0.9.0เวอร์ชันคือ

ฉันควรเพิ่มรุ่นเป็นเมื่อ1.0.0ใด เมื่อใดก) ปัญหาข้อใดข้อหนึ่งที่กล่าวข้างต้นถูกปิดหรือข) เมื่อปัญหาทั้งหมดที่เกี่ยวข้องกับรุ่น1.0ถูกปิด?

วิธีไหนที่ถูกต้องที่จะทำ? และโดยวิธีที่ถูกต้องฉันหมายถึงสิ่งที่ใช้ในอุตสาหกรรมในปัจจุบัน



1
และคุณสามารถรวมปัญหาทั้งสามนี้ไว้ในรีลีสถัดไปของคุณได้เช่นกัน
Martijn Pieters

ใช่ฉันใช้ SemVer และทั้งสามประเด็นที่จะครบกำหนดในรุ่นถัดไป :)
อาเหม็ด

ฉันแก้ไขคำถามเพื่อหลีกเลี่ยงความสับสน
เหม็ด

คำตอบ:


14

ฉันสามารถบอกคุณได้ว่าฉันทำงานอย่างไร

เรามีเซิร์ฟเวอร์รวมอย่างต่อเนื่องที่สร้างทดสอบติดแท็กและส่งออกแพ็คเกจที่มีเวอร์ชัน เราดำเนินการต่อในขั้นตอนต่อไปหากขั้นตอนก่อนหน้านี้สำเร็จ 100%

รุ่นของเรามีลักษณะดังนี้: <รุ่นใหญ่>. <รุ่นรอง>. <หมายเลขสร้าง>

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

แต่ถ้าคุณมีชุดของการปรับปรุงที่จะแล้วเสร็จใน <Minor Version> เป็นต้น 1.0.0 คุณจำเป็นต้องทำการปรับปรุงทั้งหมดเหล่านี้เพื่อที่จะพูดว่า "ตกลง! ตอนนี้เป็นรุ่น 1.0.0" หรือคุณเพิ่มขึ้นเป็นรุ่น 1.0.0 ทันทีที่การปรับปรุงครั้งแรกเสร็จสิ้น?
เหม็ด

@ahmed ฉันได้เห็นวิธีการที่1.4.2เป็น "ชุดของการแก้ไขนี้และสิ่งอื่นพร้อมในเวลานั้น" ... ฉันเคยเห็นด้วยว่า1.4.2"สิ่งนี้จะได้รับการปล่อยตัวในวันที่พร้อมสิ่งที่พร้อม" มันขึ้นอยู่กับวงจรการเปิดตัวของคุณ

5
@ahmed หากเกณฑ์สำหรับการเปลี่ยนจาก 0.xx เป็น 1.xx เป็นความสำเร็จของชุดคุณสมบัติ / แก้ไขแล้วฉันจะเพิ่มขึ้นหลังจากที่พวกเขาทั้งหมดเสร็จสมบูรณ์ หมายเหตุ: เราไม่ได้ทำงานอย่างนั้นเลย เราไม่ได้กำหนดเป้าหมายเวอร์ชันและตัดสินใจว่าจะแก้ไขปัญหาใดบ้าง เรากำหนดเป้าหมายการแก้ไข เวอร์ชันที่เราได้รับนั้นมีไว้เพื่อการติดตามและระบุตัวตนไม่ใช่เป้าหมาย
dietbuddha

ตรงนี้เป็นสิ่งที่ผมอยากจะรู้ว่า :)
อาเหม็ด

21

หมายเลขรุ่นจะเกี่ยวข้องกับการเผยแพร่เท่านั้นเนื่องจากเป็นวิธีสำหรับผู้ใช้ภายนอกในการระบุโครงสร้างเฉพาะของซอฟต์แวร์ของคุณ หากคุณกำลังยุ่งอยู่กับการพัฒนาและไม่ปล่อยการแก้ไขแต่ละรายการอย่ากังวลเกี่ยวกับการเพิ่มหมายเลขรุ่นสำหรับทุก ๆ การแก้ไข มันไม่เกี่ยวข้องกับผู้ใช้ภายนอกและทำให้คุณเสียเวลากับการทำบัญชีเวอร์ชันพิเศษ


สิ่งนี้นำไปใช้กับการพัฒนาเว็บไซต์ที่มีการวางจำหน่ายโปรแกรมแก้ไขด่วนอย่างง่ายเพื่อบั๊กเล็กน้อยหรือไม่?
เหม็ด

4
คุณทำ QA ก่อนออกโปรแกรมแก้ไขด่วนหรือไม่ มันเป็นรุ่น หากไม่ใช่ผลิตภัณฑ์เต็มรูปแบบแสดงว่ามีโปรแกรมแก้ไขด่วนแล้ว
Peter K.

@ahmed ในสถานการณ์ดังกล่าวหมายเลขรุ่นมักจะมองไม่เห็นต่อผู้ใช้และไม่มีความหมาย (มีหมายเลขรุ่นเป็นหลักสำหรับการสนับสนุนด้านการตลาดและเทคโนโลยีซึ่งทั้งคู่ไม่ได้ใช้กับ webapps จำนวนมาก) เพียงแค่ใช้รหัสการกระทำอาจจะเพียงพอ หากคุณยืนยันที่จะใช้หมายเลขเวอร์ชันใช่ฉันอาจเพิ่มระดับแพทช์เวล
amon

ฉันกำลังเรียนรู้หลายสิ่งหลายอย่างที่นี่: p ดังนั้นเพื่อสรุป: ฉันไม่ต้องการหมายเลขเวอร์ชันเนื่องจากการส่งรหัสมีความเพียงพอเนื่องจากผู้ใช้ทั้งหมดจะใช้เวอร์ชันล่าสุดอยู่ดี
เหม็ด

2
แม้ว่าผู้ใช้ทั้งหมดจะอยู่ในเวอร์ชันเดียวกัน แต่เมื่อคุณดูรายงานข้อบกพร่องเวอร์ชันนั้นจะถูกย้ายไป คุณยังต้องการวิธีผูกรายงานกับโครงสร้างเฉพาะของซอฟต์แวร์ (วันที่ / เวลาอาจจะดีพอ)
mattnz

2

สำหรับแอปพลิเคชั่นเว็บที่ปรับใช้อย่างต่อเนื่องเรามักจะสร้างหมายเลขบิลด์โดยใช้ symver ล่วงหน้าและหมายเลขบิลด์เช่น 2.5.3.4328 ซึ่ง 4328 มาจากระบบการรวมอย่างต่อเนื่อง ความคาดหวังทั่วไปคือตัวเลขเปลี่ยนแปลงตามขั้นตอนโดยเจตนา แต่หมายเลขบิลด์เป็น ID เฉพาะที่แท้จริง

สิ่งที่ดูเหมือนว่าจะทำที่นี่คือการบันทึกวันของการปรับใช้และหมายเลขการสร้าง svn ที่เกี่ยวข้อง:

        <div id="svnrev">
            rev 2013.10.21.1078
        </div>

สำหรับสิ่งที่คุ้มค่า


0

คำตอบอื่น ๆ นั้นยอดเยี่ยมอยู่แล้วดังนั้นฉันจะเพิ่มที่ด้านบนของพวกเขาเท่านั้น หากซอฟต์แวร์ของคุณไม่ได้วางจำหน่ายและคุณไม่จำเป็นต้องกำหนดเวอร์ชันสาธารณะ (เวอร์ชันที่ไม่ใช่แบบสาธารณะคือ VCS ของคุณ) ให้เพิ่มคำหลัก " SNAPSHOT " ต่อท้ายเวอร์ชั่นของคุณ ระบบบางระบบโดยเฉพาะอย่างยิ่งในการจัดการการพึ่งพาเก็บสแน็ปช็อตแตกต่างจากรุ่นที่วางจำหน่ายซึ่งจะเปรียบเทียบวันที่เปลี่ยนของสแน็ปช็อตแทนหมายเลขรุ่น ดังนั้นถ้าคุณมี v. 1.0.0-SNAPSHOTตั้งแต่ 8.00 น. ในแพ็คเกจ repo และผู้ที่ต้องพึ่งพาโลคอลดาวน์โหลดมีรุ่นเดียวกันตั้งแต่ 7 โมงเช้ามันจะแสดงดาวน์โหลดอัปเดตจาก repo

ตามที่กล่าวไว้ข้างต้นการกำหนดเวอร์ชันส่วนตัวของคุณนั้นมาจากระบบควบคุมเวอร์ชัน (git, svn และอื่น ๆ )


0

มีการกล่าวถึงทฤษฎีของการกำหนดเวอร์ชันไว้ที่นี่เป็นมุมมองอื่น

เมื่อใดฉันจึงควรเพิ่มรุ่น 1.0.0

ฉันจะเน้นคำตอบของฉันเกี่ยวกับการเปลี่ยนหมายเลขเวอร์ชันหลัก

คำตอบของฉันคือ: โดยทั่วไปเมื่อคุณพร้อม การเพิ่มจาก 0.9 เป็น 1.0 เป็นเรื่องใหญ่เพราะการรับรู้ของสาธารณชนจะเป็นเพราะคุณกำลังจะเปลี่ยนจากผลิตภัณฑ์รุ่นเบต้าไปเป็นรุ่นอย่างเป็นทางการ

(ฉันจะสมมติว่าที่นี่เป็นผลิตภัณฑ์เชิงพาณิชย์จาก บริษัท )

คำถามสองสามข้อก่อนที่จะไปจาก 0.9 เป็น 1.0

องค์กรของคุณมีเวลาแจ้งลูกค้าปัจจุบันทั้งหมดของคุณหรือไม่ เพื่อจัดงานปาร์ตี้ รับคำขอสนับสนุนจำนวนมาก ผู้จัดการบัญชีขายผลิตภัณฑ์ของคุณหรือไม่ ฯลฯ

ใช่ฉันเห็นว่าการกำหนดเวอร์ชันเป็นเครื่องมือทางการตลาดและหากคุณมองไปรอบ ๆ คุณจะเห็นว่าเป็นมาตรฐานอุตสาหกรรม

บริษัท ของเราเปลี่ยนจากรุ่น 2.x เป็น 3.0 และมีปาร์ตี้ที่ยอดเยี่ยมสร้างเสียงกระหึ่มมากมายและเนื่องจากมีลูกค้าใหม่จำนวนน้อย นอกเหนือจากการอัพเดทอินเทอร์เฟซบางอย่างความแตกต่างระหว่างเวอร์ชันค่อนข้างน้อย

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