दरअसल, इन प्रक्रियाओं पर उतनी ही विविधताएं हैं जितनी कि कई कंपनियां हैं। अर्थ: हर कंपनी में दूसरों की तुलना में थोड़ा अलग सम्मेलन होते हैं, लेकिन कुछ सामान्य सर्वोत्तम प्रथाएं हैं जो आमतौर पर ज्यादातर जगहों पर उपयोग की जाती हैं।
सर्वोत्तम अभ्यास जो हमेशा उपयोगी होते हैं
- परियोजना के सभी स्रोत कोड और इसे बनाने के लिए आवश्यक कुछ भी संस्करण नियंत्रण (जिसे स्रोत नियंत्रण भी कहा जाता है) के अंतर्गत है । कोई भी एक क्लिक के साथ पूरी परियोजना का निर्माण करने में सक्षम होना चाहिए।
इसके अलावा, अनावश्यक फ़ाइलों (ऑब्जेक्ट फ़ाइलों या संकलित बायनेरिज़) को रिपॉजिटरी में नहीं जोड़ा जाना चाहिए , क्योंकि वे काफी आसानी से पुनर्जीवित हो सकते हैं और रेपो में बस जगह बर्बाद कर देंगे।
- प्रत्येक डेवलपर को अपडेट करना चाहिए और प्रति दिन कुछ बार संस्करण नियंत्रण के लिए प्रतिबद्ध होना चाहिए । अधिकतर जब वे उस कार्य को पूरा कर लेते हैं जिस पर वे काम कर रहे होते हैं और इसका पर्याप्त परीक्षण करते हैं, तो वे जानते हैं कि इसमें तुच्छ कीड़े नहीं हैं।
- दोबारा: किसी को भी एक क्लिक के साथ प्रोजेक्ट बनाने में सक्षम होना चाहिए। यह महत्वपूर्ण है और सभी के लिए परीक्षण करना आसान बनाता है। यदि गैर-प्रोग्रामर (जैसे। बॉस) ऐसा करने में सक्षम हैं, तो भी बड़ा फायदा। (यह उन्हें यह देखने में सक्षम बनाता है कि टीम वास्तव में क्या काम कर रही है।)
- प्रत्येक डेवलपर को रिपॉजिटरी के लिए प्रतिबद्ध करने से पहले उन्हें जोड़ने वाली नई सुविधा या बग फिक्स का परीक्षण करना चाहिए ।
- एक सर्वर सेट करें जो रेगुलेटरी (पूर्व निर्धारित अंतराल में) रिपॉजिटरी से खुद को अपडेट करता है और पूरे प्रोजेक्ट में सब कुछ बनाने की कोशिश करता है । यदि यह विफल रहता है, तो यह ई-मेल को टीम के साथ नवीनतम नियंत्रण के साथ संस्करण नियंत्रण के लिए भेजता है (जिसके बाद से यह निर्माण करने में विफल रहा) ने इस समस्या को दूर करने में मदद की।
इस अभ्यास को निरंतर एकीकरण कहा जाता है और बिल्ड को नाइटली बिल्ड भी कहा जाता है । (इसका मतलब यह नहीं है कि डेवलपर्स को अपनी मशीनों पर कोड का निर्माण और परीक्षण नहीं करना चाहिए। जैसा कि ऊपर उल्लेख किया गया है, उन्हें ऐसा करना चाहिए।)
- जाहिर है, हर किसी को परियोजना के मूल डिजाइन / वास्तुकला से परिचित होना चाहिए, इसलिए अगर कुछ की जरूरत है, तो टीम के विभिन्न सदस्यों को पहिया को फिर से स्थापित करने की आवश्यकता नहीं है। पुन: प्रयोज्य कोड लिखना एक अच्छी बात है।
- टीम के सदस्यों के बीच कुछ प्रकार के संचार की आवश्यकता होती है। हर किसी को पता होना चाहिए कि दूसरे क्या कर रहे हैं, कम से कम। अधिक बेहतर। यही कारण है कि दैनिक स्टैंडअप SCRUM टीमों में उपयोगी है।
- यूनिट परीक्षण एक बहुत अच्छा अभ्यास है जो आपके कोड की बुनियादी कार्यक्षमता का परीक्षण स्वचालित रूप से करता है।
- एक बग ट्रैकिंग सॉफ्टवेयर (कभी कभी समय ट्रैकिंग सॉफ्टवेयर ) ट्रैक रखने का एक बहुत अच्छा साधन है क्या कीड़े वहाँ और क्या कार्य अलग टीम के सदस्यों को होती है। यह परीक्षण के लिए भी अच्छा है: आपकी परियोजना के अल्फा / बीटा परीक्षक इस तरह से विकास टीम के साथ संवाद कर सकते हैं।
ये सरल चीजें सुनिश्चित करती हैं कि परियोजना नियंत्रण से बाहर न जाए और हर कोई कोड के एक ही संस्करण पर काम करे। निरंतरता एकीकरण प्रक्रिया में मदद करता है जब कुछ बहुत बुरा हो जाता है।
यह उन लोगों को सामान बनाने से भी रोकता है जो मुख्य भंडार का निर्माण नहीं करते हैं।
यदि आप एक नई सुविधा को शामिल करना चाहते हैं, जिसे लागू करने में दिन लगेंगे और यह अन्य लोगों को प्रोजेक्ट बनाने (और परीक्षण) से रोक देगा, तो आपके संस्करण नियंत्रण की शाखाओं की सुविधा का उपयोग करें ।
यदि वह पर्याप्त नहीं है, तो आप इसे स्वचालित परीक्षण करने के लिए सेट कर सकते हैं, वह भी, यदि यह प्रश्न में परियोजना के साथ संभव है।
कुछ और विचार
उपरोक्त सूची पहली नज़र में बहुत भारी पड़ सकती है। मैं अनुशंसा करता हूं कि आप इसे आवश्यक रूप से पालन करें : एक संस्करण नियंत्रण और बग ट्रैकर के साथ शुरू करें, फिर बाद में निरंतर एकीकरण सर्वर सेट करें, यदि आपको इसकी आवश्यकता है। (यदि यह एक बड़ी परियोजना है, तो आपको बहुत जल्द इसकी आवश्यकता होगी।) सबसे महत्वपूर्ण भागों के लिए इकाई परीक्षण लिखना शुरू करें। यदि यह पर्याप्त नहीं है, तो उनमें से अधिक लिखें।
कुछ उपयोगी लिंक:
निरंतर एकीकरण , डेली बिल्ड आपके मित्र , संस्करण नियंत्रण , यूनिट परीक्षण हैं
उदाहरण:
संस्करण नियंत्रण के लिए, मैं आजकल अपनी व्यक्तिगत परियोजनाओं के लिए Git का उपयोग करता हूं। तोड़फोड़ भी लोकप्रिय है, और उदाहरण के लिए, यदि आप विंडोज सर्वर का उपयोग करते हैं , तो विज़ुअल्सवीएन को स्थापित करना काफी आसान है। क्लाइंट के लिए, TortoiseSVN कई लोगों के लिए सबसे अच्छा काम करता है। यहाँ Git और SVN के बीच तुलना है।
बग ट्रैकिंग सॉफ्टवेयर के लिए, जीरा और बुगज़िला बहुत लोकप्रिय हैं। हमने पिछले कार्यस्थल पर मेंटिस का भी इस्तेमाल किया ।
निरंतर एकीकरण सॉफ्टवेयर के लिए, वहाँ है Teamcity एक के लिए (भी CruiseControl और उसके नेट समकक्ष उल्लेखनीय हैं)।
आपके प्रश्न का उत्तर "परियोजना का मुख्य डिजाइन कौन तय करता है?"
बेशक, वह प्रमुख डेवलपर होगा।
कंपनियों में, लीड डेवलपर वह व्यक्ति होता है जो परियोजना के वित्तीय / विपणन लोगों से बात करता है, और कंपनी की वित्तीय क्षमता के अनुसार, आर्किटेकचर तय करता है, नियोजित उपयोगकर्ताओं से आवश्यकताओं की पूर्ति करता है, और जो समय मिलता है।
यह एक जटिल कार्य है, और आमतौर पर एक से अधिक लोग इसमें शामिल होते हैं। कभी-कभी टीम के सदस्यों को पूरे प्रोजेक्ट या विशिष्ट भागों के डिजाइन के बारे में भाग लेने या विचार करने के लिए भी कहा जाता है।