सॉफ्टवेयर कॉन्फ़िगरेशन प्रबंधन
सॉफ्टवेयर कॉन्फ़िगरेशन प्रबंधन (SCM) सॉफ्टवेयर कलाकृतियों के संस्करणों और परिवर्तनों की पहचान करने, उन्हें नियंत्रित करने और ट्रैक करने का अनुशासन है ताकि एक प्रणाली की स्थिति उसके पूरे जीवनकाल में ज्ञात और प्रतिलिपि प्रस्तुत करने योग्य हो।
Definition
सॉफ्टवेयर कॉन्फ़िगरेशन प्रबंधन कॉन्फ़िगरेशन आइटमों की पहचान करने, उनमें परिवर्तनों को नियंत्रित करने, परिवर्तन की स्थिति को रिकॉर्ड करने और रिपोर्ट करने, और पूर्णता तथा शुद्धता को सत्यापित करने के लिए गतिविधियों का एक समूह है, ताकि विकसित हो रहे सॉफ्टवेयर को एक नियंत्रित, प्रतिलिपि प्रस्तुत करने योग्य तरीके से प्रबंधित किया जा सके।
Scope
यह विषय कॉन्फ़िगरेशन पहचान और बेसलाइन; संस्करण नियंत्रण प्रणाली और ब्रांचिंग तथा मर्जिंग मॉडल; परिवर्तन नियंत्रण और परिवर्तन नियंत्रण बोर्ड की भूमिका; बिल्ड और रिलीज़ प्रबंधन; कॉन्फ़िगरेशन स्थिति लेखांकन और ऑडिटिंग; और SCM प्रक्रियाओं को परिभाषित करने वाले ISO/IEC/IEEE 828 जैसे मानकों को शामिल करता है।
Core questions
- कॉन्फ़िगरेशन आइटमों की पहचान और बेसलाइन कैसे की जाती है?
- संस्करण नियंत्रण और ब्रांचिंग मॉडल समवर्ती परिवर्तन का प्रबंधन कैसे करते हैं?
- परिवर्तनों का प्रस्ताव, समीक्षा और अनुमोदन कैसे किया जाता है?
- कॉन्फ़िगरेशन की स्थिति और अखंडता को कैसे रिकॉर्ड और ऑडिट किया जाता है?
Key theories
- बेसलाइन और कॉन्फ़िगरेशन नियंत्रण
- एक बेसलाइन एक औपचारिक रूप से समीक्षित कॉन्फ़िगरेशन है जो एक स्थिर संदर्भ के रूप में कार्य करता है; बेसलाइन किए गए आइटमों में परिवर्तन नियंत्रित समीक्षा और अनुमोदन से गुजरते हैं, जिससे सिस्टम एक ज्ञात, प्रतिलिपि प्रस्तुत करने योग्य स्थिति में रहता है।
- वितरित संस्करण नियंत्रण और ब्रांचिंग
- Git जैसी आधुनिक प्रणालियाँ प्रत्येक डेवलपर को एक पूर्ण रिपॉजिटरी देती हैं और सस्ती ब्रांचिंग और मर्जिंग का समर्थन करती हैं, जो समानांतर कार्य और एकीकरण वर्कफ़्लो को सक्षम करती हैं जो निरंतर एकीकरण और डिलीवरी का आधार हैं।
Clinical relevance
SCM बिल्ड को प्रतिलिपि प्रस्तुत करने योग्य, परिवर्तनों को ट्रैक करने योग्य और रिलीज़ को नियंत्रणीय बनाता है; इसके बिना टीमें विश्वसनीय रूप से भेजे गए संस्करण को पुन: प्रस्तुत नहीं कर सकतीं, समवर्ती कार्य का समन्वय नहीं कर सकतीं, या यह ऑडिट नहीं कर सकतीं कि क्या बदला है, जो विश्वसनीय डिलीवरी और DevOps स्वचालन के लिए मूलभूत है।
Evidence & guidelines
ISO/IEC/IEEE 828 कॉन्फ़िगरेशन प्रबंधन प्रक्रियाओं को निर्दिष्ट करता है, और SWEBOK सॉफ्टवेयर कॉन्फ़िगरेशन प्रबंधन ज्ञान क्षेत्र SCM गतिविधियों के लिए एक आम सहमति संदर्भ प्रदान करता है।
History
संस्करण नियंत्रण 1970 और 1980 के दशक में SCCS और RCS जैसे शुरुआती उपकरणों से विकसित होकर CVS और Subversion जैसी केंद्रीकृत प्रणालियों से होते हुए 2000 के दशक में Git जैसी वितरित प्रणालियों तक पहुँचा; औपचारिक कॉन्फ़िगरेशन-प्रबंधन अभ्यास हार्डवेयर और रक्षा मानकों से मुख्यधारा के सॉफ्टवेयर इंजीनियरिंग में स्थानांतरित हो गया।
Debates
- ब्रांचिंग रणनीतियाँ
- टीमें ट्रंक-आधारित विकास बनाम लंबी अवधि की फीचर शाखाओं और Git-फ्लो जैसे वर्कफ़्लो पर बहस करती हैं; लगातार एकीकरण के साथ ट्रंक-आधारित विकास निरंतर डिलीवरी का समर्थन करता है, जबकि भारी ब्रांचिंग दर्दनाक मर्ज की कीमत पर काम को अलग कर सकती है।
Key figures
- Walter Tichy
- Linus Torvalds
- Marc Rochkind
Related topics
Seminal works
- ieee828
- chacon2014
- swebok2014
Frequently asked questions
- क्या कॉन्फ़िगरेशन प्रबंधन केवल संस्करण नियंत्रण है?
- नहीं। संस्करण नियंत्रण एक केंद्रीय उपकरण है, लेकिन SCM व्यापक है: इसमें कॉन्फ़िगरेशन पहचान, बेसलाइन, परिवर्तन नियंत्रण, बिल्ड और रिलीज़ प्रबंधन, और सभी कॉन्फ़िगरेशन आइटमों की स्थिति लेखांकन और ऑडिटिंग भी शामिल है, न कि केवल स्रोत कोड।
- बेसलाइन क्यों महत्वपूर्ण हैं?
- एक बेसलाइन एक ज्ञात-अच्छे कॉन्फ़िगरेशन को रिकॉर्ड करती है जिसे पुन: प्रस्तुत किया जा सकता है और जिस पर निर्माण किया जा सकता है; यह नियंत्रित परिवर्तन के लिए एक स्थिर संदर्भ प्रदान करती है, टीमों को वापस लौटने देती है, और प्रतिलिपि प्रस्तुत करने योग्य रिलीज़ और ऑडिट के लिए आवश्यक है।