कोडबेस

From Vigyanwiki

सॉफ़्टवेयर विकास में, एक कोडबेस (या कोड बेस) सॉफ़्टवेयर के लिए उपयोग किए जाने वाले स्रोत कोड का एक संग्रह है जो किसी विशेष सॉफ्टवेयर निर्माण, अनुप्रयोग प्रक्रिया सामग्री या सॉफ़्टवेयर घटक का निर्माण करता है। सामान्यतः, एक कोडबेस में केवल मानव-लिखित स्रोत कोड फ़ाइलें सम्मिलित होती हैं; इस प्रकार, एक कोडबेस में सामान्यतः टूल (जेनरेट की गई फ़ाइलें) या बाइनरी लाइब्रेरी फ़ाइलें (ऑब्जेक्ट फ़ाइलें) द्वारा उत्पन्न स्रोत कोड फ़ाइलें सम्मिलित नहीं होती हैं, क्योंकि उन्हें मानव-लिखित स्रोत कोड से बनाया जा सकता है। हालाँकि, इसमें सामान्यतः कॉन्फ़िगरेशन और प्रॉपर्टी फ़ाइलें सम्मिलित होती हैं, क्योंकि वे बिल्ड के लिए आवश्यक डेटा हैं।

एक कोडबेस सामान्यतः किसी संस्करण नियंत्रण सिस्टम में स्रोत नियंत्रण रिपॉजिटरी में स्टोर किया जाता है। एक स्रोत कोड रिपॉजिटरी ऐसा स्थान है जहां बड़ी मात्रा में स्रोत कोड सार्वजनिक या निजी तौर पर रखा जाता है। स्रोत कोड रिपॉजिटरी का उपयोग मूल रूप से बैकअप और वर्जनिंग के लिए किया जाता है, और मल्टी-डेवलपर प्रोजेक्ट्स पर विभिन्न सोर्स कोड वर्जन को संभालने के लिए और ओवरलैपिंग संशोधन सबमिट करने वाले डेवलपर्स से उत्पन्न होने वाले संघर्षों को हल करने में सहायता प्रदान करने के लिए किया जाता है।

सबवर्सन (सॉफ़्टवेयर), गिट (सॉफ़्टवेयर) और अस्थिर इस वर्कफ़्लो को संभालने के लिए उपयोग किए जाने वाले लोकप्रिय टूल के उदाहरण हैं, जो ओपन सोर्स प्रोजेक्ट्स में साधारण हैं।

छोटी संक्रियाओं के लिए, इसका कोड फाइलों के गैर-प्रबंधित सेट के रूप में रखा जा सकता है (यहां तक ​​कि लिनक्स कर्नेल को कई वर्षों तक फाइलों के सेट के रूप में बनाए रखा गया था)।[1]


अलग और संक्षिप्त कोडबेस

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

वितरित कोडबेस की तुलना में मोनोलिथिक कोडबेस के फायदे और नुकसान दोनों हैं।[2][3] सबसे सरल रूप से, एक संक्षिप्त कोडबेस एकीकरण को सरल करता है‍—‌विभिन्न घटकों में परिवर्तन या घटकों के बीच कोड की रीफैक्टरिंग आसानी से और परमाणु रूप से की जा सकती है‍—‌ और पूरे कोडबेस में संचालन की अनुमति देता है, लेकिन इसके लिए एक बड़े रिपॉजिटरी की आवश्यकता होती है और व्यापक तकनीकी ऋण को पेश करना आसान बनाता है।[dubious ] एक अलग कोडबेस या एक वितरित कोडबेस अलग-अलग रिपॉजिटरी को छोटा और अधिक प्रबंधनीय रखता है, घटकों के बीच एक ही समय में अलगाव को लागू करता है, लेकिन इसके लिए कोडबेस (या मुख्य रिपॉजिटरी के साथ) के बीच एकीकरण की भी आवश्यकता होती है, और कई कोडबेस को बदलने वाले परिवर्तनों को जटिल बनाता है।[4]

मानकों के संदर्भ में, कई कोडबेस को अलग-अलग घोषित करते हुए कहा गया है कि साझा स्रोत कोड के बिना स्वतंत्र कार्यान्वयन हैं और ऐतिहासिक रूप से, ये कार्यान्वयन एक सामान्य परियोजना से विकसित नहीं हुए हैं। यह किसी दिए गए मानक को लागू करने वाले सॉफ़्टवेयर के दो स्वतंत्र टुकड़ों को दिखाकर इंटरऑपरेबिलिटी प्रदर्शित करने का एक तरीका हो सकता है।[dubious ]

उदाहरण

कुछ विशेष रूप से बड़े कोडबेस में सम्मिलित हैं:

  • गूगल: मोनोलिथिक, 1 बिलियन फाइलें, 9 मिलियन सोर्स कोड फाइल्स, सोर्स कोड की 2 बिलियन लाइन्स, कुल मिलाकर 35 मिलियन कमिट, 86 टीबी कुल आकार (जनवरी 2015)[5]
  • फेसबुक: मोनोलिथिक, 8 जीबी (इतिहास सहित रेपो 54 जीबी, 2014),[6] सैकड़ों हजारों फाइलें (2014)[3]* लिनक्स कर्नेल: वितरित,[7] कोड की 15 मिलियन से अधिक पंक्तियां (as of 2013 और कर्नेल संस्करण 3.10)

यह भी देखें

संदर्भ

  1. "गिट का एक संक्षिप्त इतिहास". git-scm.com. Retrieved October 21, 2014.
  2. J. David Morgenthaler; Misha Gridnev; Raluca Sauciuc & Sanjay Bhansali (2012). "Searching for Build Debt: Experiences Managing Technical Debt at Google". Proceedings of the Third International Workshop on Managing Technical Debt. IEEE. pp. 1–6. doi:10.1109/MTD.2012.6225994.
  3. 3.0 3.1 "फेसबुक पर स्केलिंग Mercurial". Facebook Code. 2014-01-07. Retrieved 29 April 2016.
  4. "गिट - वितरित वर्कफ़्लोज़". git-scm.com. Retrieved 29 April 2016.
  5. Potvin, Rachel; Levenberg, Josh (24 June 2016). "Google एक रिपॉजिटरी में अरबों कोड की पंक्तियाँ क्यों संग्रहीत करता है". Communications of the ACM. 59 (7): 78–87. doi:10.1145/2854146.
  6. @feross (April 24, 2014). "Facebook's git repo is 54 GB" (Tweet). Retrieved 29 April 2016 – via Twitter.
  7. Sproull, Lee; Moon, Jae Yun (2000-11-05). "Essence of distributed work: The case of the Linux kernel - Moon - First Monday". First Monday. 5 (11). Retrieved 29 April 2016.