हमारी कंपनी का वेब समाधान अपने चौथे प्रमुख पीढ़ी पर है, जो पिछले 8 वर्षों में काफी विकसित हुआ है। सबसे हालिया पीढ़ी ने इस कार्य को मदद करने के लिए व्यापक रूप से संरचनाओं की शुरुआत की क्योंकि नई ग्राहक मांगों के आधार पर पिछली पीढ़ी को अद्यतन करने के लिए यह अनावश्यक हो रहा था। इस प्रकार, मैंने 200 9 में इस समस्या के बारे में सोचने में काफी समय बिताया।
एक सबसे मूल्यवान चीज जो आप कर सकते हैं सॉफ्टवेयर बनाने के लिए एक Agile दृष्टिकोण पर कार्यरत है। विशेष रूप से, आपको एक ऐसे माहौल को बनाए रखना चाहिए जिसमें एक नया निर्माण दैनिक बनाया जा सके (और है)। जबकि दैनिक निर्माण Agile का केवल एक पहलू है, यह वह अभ्यास है जो आपके प्रश्न को संबोधित करने में सबसे महत्वपूर्ण है। हालांकि यह उन्नयनशीलता के समान नहीं है, फिर भी, यह प्रक्रिया में एक अनुशासन प्रस्तुत करता है जो आपके कोड बेस को कमजोर हो जाने का मौका कम करने में मदद करता है (या आप Architect Astronaut बन जाएंगे)।
जहाँ तक चौखटे और भाषाओं जाना के रूप में, वहाँ दो प्राथमिक आवश्यकताएँ हैं: उस ढांचे लंबे समय तक रहा और स्थिर हो सकता है और पर्यावरण एक Separation of Concerns समर्थन करते हैं। एएसपी.नेट ने इस संबंध में मेरे लिए अच्छा काम किया है: यह एक तर्कसंगत तरीके से विकसित हुआ है और बिना किसी विघटन के पुराने कोड को अमान्य कर दिया गया है। मैं एसओसी का प्रबंधन करने के लिए एक अलग बिजनेस लॉजिक लेयर का उपयोग करता हूं लेकिन एएसपी.नेट अब भी एमवीसी विकास का समर्थन करता है।इसके विपरीत, मैं इसके साथ काम करने के कुछ महीनों के बाद PHP को नापसंद करने आया क्योंकि यह केवल गन्दा प्रथाओं को प्रोत्साहित करता था जो भविष्य के उन्नयन को खतरे में डाल देंगे।
डीबीएमएस चयन के संबंध में, कोई भी आधुनिक RDMS (SQL सर्वर, MySQL, Oracle) आपको अच्छी तरह से सेवा प्रदान करेगा। यहां कुंजी है हालांकि: आप को अपग्रेड प्रबंधित करने के लिए डीडीएल स्क्रिप्ट को बनाए रखने की आवश्यकता है। यह सिर्फ जीवन का एक तथ्य है। तो, आप इसे एक ट्रैक्टेबल प्रक्रिया कैसे बनाते हैं? किसी तीसरे पक्ष के डेवलपर से सबसे मूल्यवान टूल लाल गेट से एसक्यूएल की मेरी प्रति है। यह प्रक्रिया पूरी तरह से दुःस्वप्न और मेरे कोड को विकसित करने की मेरी क्षमता पर एक महत्वपूर्ण ड्रैग थी जब तक कि मुझे यह टूल नहीं मिला। इसलिए, जेनेरिक अनुशंसा डेटाबेस का उपयोग करना है जिसके लिए डेटाबेस संरचनाओं की तुलना करने के लिए एक उपकरण मौजूद है। एसक्यूएल सर्वर इस संबंध में बहुत भाग्यशाली है।
हार्डवेयर लगभग कोई परवाह नहीं है। जब तक आपकी विकास प्रक्रिया में उचित रिलीज बिल्ड प्रक्रिया के साथ शामिल हो, तब तक आप हमेशा नए हार्डवेयर पर जा सकते हैं।
आवश्यकताओं में निरंतर परिवर्तन के लिए रणनीति। फिर, Agile देखें। मैं आपको प्रोत्साहित करता हूं कि आप उन्हें "आवश्यकताएं" के रूप में भी नहीं सोचें - विनिर्देशों से भरे बड़े दस्तावेज़ की पारंपरिक भावना में। Agile महत्वपूर्ण तरीकों से बदलता है। जब मैं बाहरी, भुगतान करने वाले ग्राहक के लिए अनुबंध पर काम करता हूं, तो मुझे एक आवश्यकता दस्तावेज नहीं रखता है ताकि मुझे उचित बिलिंग का आश्वासन दिया जा सके और फीचर रेंगने से रोका जा सके। इस बिंदु पर, हमारी आंतरिक प्रक्रिया इतनी तेज़ी से और तरल है कि हमारे फीचर अनुरोध/बग प्रबंधन सॉफ्टवेयर (फोगबगज़ यदि आप जानना चाहते हैं) की रिपोर्ट मार्केटिंग के लिए एक नई रिलीज दस्तावेज करते समय हमारे दस्तावेज़ीकरण के रूप में कार्य करती है।
कुल रीडिज़ाइन के लिए रणनीति/निर्णय है: नहीं। यदि आप प्रक्रिया में उचित विचार रखते हैं, तो आप मुख्यधारा के उपकरण का चयन करेंगे, और चिंता का पृथक्करण लागू करेंगे, फिर HTTP और RDBMS के पूर्ण त्याग से कम कुछ भी नहीं, कुल नवीनीकरण करना चाहिए।
यदि आपके पास पर्याप्त चंचल कि कुछ भी कर सकते हैं परिवर्तन, क्या तुमने कभी एक स्थिति में होने की संभावना नहीं कर रहे हैं, जहां सब कुछ चाहिए परिवर्तन।
ग्रेट उत्तर:) –
+1 अच्छा स्पष्टीकरण। इसके अलावा बदलती तकनीक भी उन्नयन दृष्टिकोण में एक भूमिका निभाती है।यदि कोई देखता है कि एक वर्ष में एक नई तकनीक उपलब्ध होगी या तो क्या किसी को इसके लिए इंतजार करना चाहिए या वर्तमान तकनीक के आधार पर अपग्रेड के लिए जाना चाहिए? – HotTester
हॉटटेस्टर - यह तकनीक पर निर्भर करेगा। आम तौर पर, मैं केवल नई प्रौद्योगिकियों के लिए "प्रतीक्षा करें और देखें" दृष्टिकोण पसंद करता हूं क्योंकि मुझे अपने ग्राहकों से कोई खरीदारी नहीं होने वाली तकनीक का समर्थन करने के लिए एक या दो बार जला दिया गया है। ऐसा कहा जा रहा है, मैं * विजुअल स्टूडियो 2010 का उपयोग कर रहा हूं (जिसे औपचारिक रूप से रिलीज़ नहीं किया गया है) और मैं हमेशा * नई तकनीक की तलाश में हूं - सिर्फ इसलिए कि मुझे पसंद है। –