एजाइल में शब्दार्थ संस्करण


10

मान लीजिए कि मेरे पास 14 दिन स्प्रिंट पुनरावृत्तियों हैं जहां मेरे पास नई सुविधाओं के लिए कई कहानियां हैं, कुछ सुधार और कुछ कीड़े ठीक करने के लिए। मैं उन परिवर्तनों को भी तैनात करता हूं जब वे तैयार होते हैं, मैं स्प्रिंट के अंत की प्रतीक्षा नहीं कर रहा हूं।

मेरी समस्या यह है कि इस तरह विकसित और रखरखाव किए गए उत्पादों की सिमेंटिक संस्करण को कैसे ट्रैक किया जाए? अगर हर 14 दिन में रिलीज होगी तो यह आसान होगा, मैं संस्करण संख्या बढ़ाऊंगा और चैंज में सभी बदलावों पर ध्यान दूंगा। लेकिन क्या होगा अगर परिवर्तन लगातार तैनात किए जाते हैं? वहाँ संस्करण बढ़ाया जाना चाहिए हर समय कुछ तैनात है? या मुझे स्प्रिंट के समाप्त होने तक इंतजार करना चाहिए और इसके बाद, कुछ "फिर से शुरू" करें और वास्तविक तैनाती पर स्वतंत्र रूप से पुनरावृत्ति के अनुसार संस्करण संख्या बढ़ाएं? एजाइल में अर्थ वर्जनिंग के लिए सर्वोत्तम अभ्यास क्या हैं?

संपादित करें: अपनी आवश्यकताओं को बेहतर ढंग से समझाने के लिए, मैं पहली बार में हितधारकों के लिए चैंज चाहता हूं। मुझे नहीं लगता कि वे हर बदलाव के बाद चैंज में नए रिकॉर्ड में दिलचस्पी लेंगे।



"सिमेंटिक वर्जनिंग" से आपका क्या अभिप्राय है? वर्ननर में बिल्ड-डे-टाइम?
k3b

2
@ k3b: Google को आज़माएं। क्या आप semver.org
Doc Brown

3
मध्य-स्प्रिंट में आप किसके लिए तैनात हैं? सीधे अंत उपयोगकर्ता के लिए? कुछ परीक्षकों को?
डॉक ब्राउन

@DocBrown उपयोगकर्ताओं को समाप्त करने के लिए सीधे। जब कुछ किया जाता है, तो इसे उत्पादन में तैनात किया जाता है।
पावेल batěrba

जवाबों:


7

विशिष्ट रिलीज़ प्रबंधन के लिए, आप चाहते हैं कि आपके बिल्ड सिस्टम द्वारा एक बिल्ड नंबर उत्पन्न किया जाए ताकि DLL को हर बार वे तैनात किए जा सकें। यह सुनिश्चित करेगा कि आप बाद में जांच सकते हैं कि किसी दिए गए सर्वर पर कौन सा संस्करण तैनात है।

आपका 'मार्केटिंग' संस्करण, जिसे आमतौर पर जारी नोटों में डाला जाता है या आपकी साइट पर प्रकाशित किया जाता है, प्रत्येक संस्करण को अपडेट नहीं किया जाना चाहिए। उन नोटों को संचित किया जाना चाहिए और एक साथ समूहीकृत किया जाना चाहिए, संभवत: आपके स्प्रिंट के अंत के साथ।


हां, चैंज का यह "मार्केटिंग" संस्करण ठीक वही है जो मुझे चाहिए। गैर-तकनीकी हितधारकों के लिए भी इसे आसानी से पढ़ा जा सकता है।
पावेल batěrba

6

यदि क्लासिक सिमेंटिक वर्जनिंग स्कीम "MAJOR.MINOR.PATCH" समझ में आता है, तो इस बात पर निर्भर करता है कि आप किसको तैनात करते हैं, और विशेष रूप से कब और कितनी बार आप अंतिम उपयोगकर्ता को तैनात करते हैं । यदि आप स्थिर रिलीज "4.5" के साथ काम करते हैं, तो यह योजना सबसे उपयोगी है, जहां आप 4.5.0 से शुरू करते हैं। संस्करण 4.5.1, 4.5.2, और इसी तरह केवल बग फिक्स शामिल हैं, जबकि आप आंतरिक रूप से पहले से ही संस्करण 4.6 पर काम करते हैं।

उदाहरण के लिए, यदि आप अपने अंतिम उपयोगकर्ता को "स्थिर शाखा" प्रदान करते हैं, तो इसे प्रारंभिक तैनाती के लिए 4.5.0, और जब भी आप एक पैच जारी करते हैं, तो 4.5.1, 4.5.2 का संस्करण दें। आपके आंतरिक "फुर्तीली" विकास और मध्य-स्प्रिंट परिनियोजन में, आपके पास पहले से ही एक संस्करण 4.6 हो सकता है, बस इसे "बीटा संस्करण" कहें। जब भी आप इसे मध्य-स्प्रिंट में तैनात करते हैं, तो "4.6.beta build 123" जैसे ऑटो-जेनरेट बिल्ड नंबर को जोड़ें। जब आपका स्प्रिंट समाप्त हो जाता है, तो इसे "4.6.0" असाइन करें, और अगले स्प्रिंट के लिए संस्करण संख्या को आंतरिक रूप से "4.7" पर स्विच करें। ".0" के साथ शुरू करना केवल एक सम्मेलन है, आप बीटा संस्करणों को टैग करने के लिए ".0" का भी उपयोग कर सकते हैं, और अपने अंतिम उपयोगकर्ताओं के लिए ".1" से शुरू कर सकते हैं। IMHO शब्द "बीटा" बहुत अधिक अभिव्यंजक है, सभी को बता रहा है कि स्प्रिंट "अभी तक पूरा नहीं हुआ है"।

यदि आप प्रत्येक बीटा संस्करण के साथ पूर्ण अंत-उपयोगकर्ता परिवर्तन लॉग जारी करते हैं, तो आप पर निर्भर है, लेकिन स्प्रिंट के अंत में परिवर्तन लॉग को पूरा किया जाना चाहिए, और जब भी आप अंतिम उपयोगकर्ता को बगफिक्स प्रदान करते हैं, तो आपको भी अपडेट करना चाहिए इतिहास के दस्तावेज।

आपको दो अलग-अलग शाखाओं को जारी करने की रणनीति मिलेगी, एक "स्थिर" शाखा जो सिमेंटिक संस्करण संख्याओं के साथ है, और एक "विकास शाखा" है जो बिल्ड नंबरों या कुछ समान के साथ चिह्नित है, बहुत सारे ओपन सोर्स उत्पादों जैसे इंकस्केप, फ़ायरफ़ॉक्स या 7-ज़िप में।

यदि, हालांकि, आप अलग-अलग स्थिर और विकास शाखाओं के साथ काम नहीं करते हैं, और आप उपयोगकर्ता को दैनिक रूप से एक नया संस्करण जारी करते हैं, तो आपको दैनिक रूप से एक संस्करण संख्या भी बढ़ाना चाहिए। ऐसे मामले के लिए, संस्करण संख्या "4.5.1", "4.5.2", ... संभवतः आपके व्यक्तिगत परिनियोजन को प्रतिबिंबित करेगा, और बग फिक्स और अन्य परिवर्तनों के बीच अंतर को इंगित नहीं करता है। यह ठीक हो सकता है, यह सिर्फ क्लासिक "सिमेंटिक वर्जनिंग" नहीं है। इस परिदृश्य में, आप संस्करण ४.५, ४.६, ४. could, ४. could, ४. versions को भी तैनात कर सकते हैं, इससे कोई वास्तविक अंतर नहीं पड़ता है।

अपने चैंज में प्रविष्टियों के बारे में अपने प्रश्न के बारे में: IMHO जब कुछ अंतिम उपयोगकर्ता को दिखाई देता है, तो आप परिवर्तन को तैनात करते ही चैंज में प्रवेश के लायक हो जाते हैं। उदाहरण के लिए, यदि आप फ़ीचर टॉगल का उपयोग करते हैं और कुछ अर्ध-बेक्ड फ़ीचर में बदलाव करते हैं, जो उपयोगकर्ता के लिए अभी तक सक्रिय नहीं है, तो यह चैंज में शामिल नहीं है। यदि आप उपयोगकर्ता के लिए कोई दृश्य परिवर्तन नहीं करते हैं, तो केवल रीफैक्टरिंग करते हैं, जो कि चैंज नहीं है। यदि आप एक बग को ठीक करते हैं जो कुछ उपयोगकर्ताओं को प्रभावित कर सकता है, तो निश्चित रूप से चैंज में आता है - और इसका उल्लेख उसी समय किया जाना चाहिए जब आप बगफिक्स को तैनात करते हैं। और इससे कोई फर्क नहीं पड़ता कि आप दैनिक या मासिक या वार्षिक रूप से जारी करते हैं।


3

मैं बिल्ड नंबरों का उपयोग करूंगा। आमतौर पर एक बिल्ड नंबर संस्करण नियंत्रण प्रणाली के उच्चतम संस्करण के अनुरूप होगा। अगर सोमवार के निर्माण की संख्या 1745 थी और मंगलवार के दौरान 5 बदलावों की जाँच की गई है, तो मंगलवार की शाम की संख्या 1750 होगी।

फिर 1745 और 1750 के बीच क्या बदल गया है, इसके लिए एक संक्षिप्त सारांश बनाएं।

फिर हर बार जब आप अपने सिस्टम के वर्जन नंबर को अपडेट करते हैं तो आप पिछले वर्जन नंबर से नए में बदलाव लाने के लिए बिल्ड से सभी छोटी समरी को जोड़ सकते हैं।


3

मेरी पसंदीदा विधि, जिसका उपयोग मैं कम से कम कुछ वर्षों से कर रहा हूं, प्रत्येक कहानी पूरी होने के बाद संख्या को बढ़ाना है। इसका मतलब यह है कि स्प्रिंट के अंत में जारी किए गए संस्करण निरंतर नहीं होंगे, उदाहरण के लिए 1.2.3 के बाद आप 1.4.0 के बजाय 1.5.2 पा सकते हैं।

चैंज में आप या तो उनके समान विवरणों के साथ मध्यवर्ती संस्करणों को सूचीबद्ध कर सकते हैं या केवल "जारी" संस्करण में सभी परिवर्तनों को समूह बना सकते हैं और बीच में संस्करणों को छोड़ सकते हैं।

प्रारंभ में, मुझे डर था कि उपयोगकर्ताओं को संस्करण संख्याओं के बीच "छेद" समस्याग्रस्त मिलेगा, लेकिन एक बार जब उन्हें इसके बारे में पता चलेगा, तो यह व्यवहार में कोई समस्या नहीं है। बड़ा फायदा यह है कि प्रत्येक कहानी के बाद संख्या बढ़ने से प्रक्रिया कम त्रुटि वाली हो जाती है - आपको अगले सप्ताह की संख्या क्या होगी यह तय करने के लिए 2 सप्ताह से पूरे काम की जांच करने की आवश्यकता नहीं है - जब किसी एकल कहानी को देखते हैं, तो यह स्पष्ट है । इसके अतिरिक्त, प्रत्येक रिलीज़ के बीच संस्करण संख्याओं में "लीप्स" किसी न किसी अनुमान का अनुमान देते हैं कि रिलीज़ में कितने परिवर्तन हुए। सब सब में, मैंने इस प्रणाली को अच्छी तरह से काम करने के लिए पाया है (यह कंपनी-आंतरिक ग्राहकों के साथ था, लेकिन यदि आप पहले से ही चुस्त रिलीज चक्र में काम करते हैं तो इसे बाहरी ग्राहकों के लिए भी काम करना चाहिए)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.