दिलचस्प पोस्ट
एक पृष्ठभूमि-छवि के साथ SVG पथ तत्व भरें अस्वीकृत getCellType के लिए विकल्प प्रोग्रामेटिक रूप से संबंधित लेआउट में एक दूसरे के नीचे देखें क्या मैं एक नियंत्रण के अंदर एक विंडोज़ प्रोजेक्ट होस्ट कर सकता हूं? विजुअल स्टूडियो 2012 – कभी-कभी गायब / टूटे हुए इंटेलिसेंस जावास्क्रिप्ट भावी कॉलबैक को एसिंक्रोनोस्यूली निष्पादित किया गया है एक बूटस्ट्रैप मोडल को डेटा पास करना पायथन में टूप्ले को सूची में कनवर्ट करें SQLite को CSV आयात करें Websocket सर्वर: वेब सॉकेट पर ओपन फ़ंक्शन पर कभी भी कॉल नहीं किया जाता है jQuery प्लगइन टेम्पलेट – सर्वोत्तम अभ्यास, सम्मेलन, प्रदर्शन और स्मृति प्रभाव क्या किसी को एएसपी.नेट एमवीसी के लिए रेडियोबटन लिस्टफ़ोल्डर <टी> लागू किया गया है? JQuery में, मैं एक तत्व को इसके नाम विशेषता से कैसे चुनूं? उपलब्ध स्थान को भरने के लिए WPF में नियंत्रण कैसे प्राप्त करें? वॉली अनुरोध में कस्टम हेडर कैसे सेट करें

ClearCase UCM – घटकों का उपयोग करने के सर्वोत्तम अभ्यास

हम वीएसएस से स्पष्ट रूप से बड़े कोडबेस को माइक्रोसॉफ्ट कर रहे हैं, और हम एक स्रोत के भीतर एक या एक से अधिक घटकों में अपने स्रोत को व्यवस्थित करने पर विचार कर रहे हैं। क्या सर्वोत्तम प्रथाओं \ संभावित नुकसान हम ध्यान में रखना चाहिए?

स्रोत को परतों (डेटा स्तर, व्यावसायिक स्तर, जीयूआई परत) में व्यवस्थित किया जाता है टीम काफी छोटा है, डेवलपर्स को कोडबेस की एक निश्चित परत के पास होते हैं और समानांतर विकास प्रयासों के कारण हम एक उचित मात्रा में शाखाओं की आशा करते हैं।

वेब के समाधान से एकत्रित समाधान "ClearCase UCM – घटकों का उपयोग करने के सर्वोत्तम अभ्यास"

अकेले सबसे खतरनाक ख़तरा:

एक घटक परिभाषित होने के बाद, आप इस घटक के बाहर एक तत्व नहीं ले सकते (आप उसे प्रतिलिपि बना सकते हैं और इसे कहीं और बना सकते हैं, लेकिन आप इसका इतिहास खो देंगे)

एकल सबसे उपयोगी सर्वोत्तम अभ्यास:

यूसीएम घटक की प्रकृति को अच्छी तरह से समझें: यह कोजेंसी के बारे में है।
एक घटक फाइल का एक सेट है जो:

  • एक इकाई के रूप में विकसित होता है,
  • एक लेबल के रूप में (बेसिलिनेटेड) लेबल है,
  • एक पूरे के रूप में विभाजित है

यदि आप किसी अन्य समूह फ़ाइलों को छूने के बिना evolutions कर सकते हैं, तो संभावना है कि आपके पास दो घटक हैं

घटकों का उदाहरण:

  • एक आवेदन (या एक आवेदन का एक स्वायत्त हिस्सा)
  • एक तकनीकी पुस्तकालय
  • फ़ाइल का एक पैक सेट (रिलीज के लिए)

एक दस्तावेज जो आपको घटकों को परिभाषित करने के लिए मार्गदर्शन करना चाहिए, वह कार्यात्मक वास्तुकला है (जो व्यापार और कार्यात्मक विशिष्टताओं को लेता है और उन्हें उन अनुप्रयोगों पर प्रोजेक्ट करता है जो तकनीकी स्तर पर निर्दिष्ट किए जाएंगे और लागू होंगे)।

जब उन सभी घटकों को परिभाषित किया जाता है, तो उनके प्रबंधन के लिए आपके पास दो दृष्टिकोण हैं:

  • सिस्टम दृष्टिकोण (प्रत्येक घटक यूसीएम परियोजना में लिखना योग्य है): एक परियोजना शुरू करने के लिए उपयोगी है, लेकिन विरासत परियोजना के साथ बोझिल: आपको प्रत्येक घटक पर आधार रेखा रखने की आवश्यकता नहीं है क्योंकि सिर्फ 3 फाइलें उन घटकों में बदल गई हैं।

  • घटक दृष्टिकोण : एक या दो लिखने योग्य घटकों, बाकी केवल गैर-परिवर्तनीय घटक के रूप में है यह एक स्केलेबल दृष्टिकोण है, जिससे आप एक प्रोजेक्ट प्रति-घटक को विकसित करने की अनुमति दे सकते हैं, "नियत कॉन्फ़िगरेशन" (यानी "अन्य बेसलाइंस") के साथ, गैर-संशोधनीय घटकों के निर्धारित राज्यों का प्रतिनिधित्व करने के लिए जिन्हें आपको संकलित करने की आवश्यकता है आप किसी भी समय यह कॉन्फ़िगरेशन बदल सकते हैं, जब भी आप चाहते हैं कि गैर-संशोधनीय घटक की नींव आधारभूत आधार को दोबारा कर सकते हैं)।

मर्ज वर्कफ़्लो को आसानी से विज़ुअलाइज़ करने की इजाजत देने के लिए आप चाहते हैं कि आप जितने प्रोजेक्ट और स्ट्रीम को परिभाषित कर सकते हैं

याद रखें: एक स्ट्रीम एक विकास प्रयास को दर्शाता है
किसी संसाधन (जैसे VonC_stream ) के बाद एक स्ट्रीम को कॉल न करें, लेकिन उस स्ट्रीम में कार्य करने के कार्य या कार्य के बाद ( APP_LCH_R32_Dev : मेरे ऐप लॉन्चर के 32 APP_LCH_R32_Dev रिहाई के लिए विकास)


नोट: यूसीएम केवल ClearCase के शीर्ष पर कुछ मेटा-डेटा है: भले ही फ़ाइल का एक समूह यूसीएम घटक के रूप में परिभाषित हो, तो आप क्लासिक गैर-यूसीएम शाखाओं, चेकआउट या चेकिन (गैर- यूसीएम विचारों में) को रोकते हैं।


बहुत बढ़िया गन्ने वाले घटकों बनाने या घटकों के बीच बहुत अधिक निर्भरता होने में क्या कोई खतरा है?

हां, यही कारण है कि आवेदक आर्किटेक्चर महत्वपूर्ण है। दोबारा, एक घटक परिभाषित होने के बाद, आप उन घटकों के बीच तत्वों को नहीं ले सकते।

घटकों के बारे में जानने के लिए एक अन्य विवरण उनके लेआउट है:

 myVob myComponent1 myComponent2 myComponent3 

मूल घटक हमेशा Vob के नीचे पहले स्तर पर रहता है।
आप सभी Vob के रूप में एक घटक को परिभाषित भी कर सकते हैं लेकिन मैं इसकी सिफारिश नहीं करूँगा (एक Vob को जोड़ने से आपके Vob सर्वर पर दबाव डालना.एक मौजूदा Vob लागत के भीतर एक निर्देशिका को जोड़ने से कुछ भी नहीं)

इसका मतलब है कि अगर आप घटकों के रूप में कुछ तकनीकी पुस्तकालयों को परिभाषित करते हैं, तो आप इस रूप में नहीं जा सकते हैं:

 myLibs Apache ant xalan xerces 

लेकिन क्या करना होगा:

 myLibs apapche_ant apache_xalan apache_xerces 

अंतिम चेतावनी: निर्भरता (एक कॉन्फ़िगरेशन प्रबंधन प्रणाली का सही चिह्न)

यूसीएम का मुख्य लाभ (या तो मैंने समय पर सोचा – 2003 -) निर्भरता है।
यदि A B पर निर्भर करता है, और मैंने अपनी प्रोजेक्ट में A डाल दिया है, तो यह स्वतः ही एक ही परियोजना में B शामिल होगा।

जादू।

लेकिन यह टूट गया है।

  • सबसे पहले, रूट-आधारित निर्भरता कभी नहीं करें (एक रूट-आधारित घटक फ़ाइल का एक सेट है) यह पहली ओवरलैप पर टूट जाएगा:

     ए 1
       बी 1
     बी 2

यहां आपको बिल्डिंग A पर जाने के लिए B2 आवश्यकता है, लेकिन A A1 से शुरू होता है B1 पर आधारित: B2 ओवरराइड B1 । जैसे ही आप A ( A2 ) पर आधार रेखा डालते हैं, यह खत्म हो गया है। आप अब बी को बदलने में सक्षम नहीं होंगे। ओवरलैप के कारण A परजीवी आधार रेखा (जिसे A2 ! कहा जाता है) को (गैर-परिवर्तनीय!) घटक B पर रखा गया होगा।

  • हमेशा एक निरुपयोगी घटक में अपनी निर्भरताएं शामिल करें
     ADep1
       ए 1
       BDep1
         बी 1
     BDep2
         बी 2

यहां आपके पास रूट वाले घटक ADep और BDep (एक BDep घटक एक विशेष घटक है जो अन्य रूट रहित या रूट-आधारित घटकों को BDep )
आपके पास अभी ओवरराइड है, लेकिन इस समय के बिना रूटलेस घटकों
यह अभी भी परजीवी आधार रेखा ( BDep पर, जिसे A2 कहा जाता है) बना देगा, लेकिन कम से कम आप BDep2 को बाद में अन्य BDep2 में फिर से BDep2 कर पाएंगे ( BDep3 , BDep4 …)

क्लीयरसैस यूसीएम की इस असुविधा और असंगतियों पर और अधिक तर्कसंगत प्रति-तर्क के साथ यहां (और उसके बाद, उनके सबूत हैं कि उनका तर्क कम से कम कहने के लिए बहुत अच्छा नहीं है)।

यह भी पढ़ें कि कैसे क्लेयरैस की सुविधाओं का लाभ उठाएं