design - patterns - व्हाट इस डिजाईन




सॉफ्टवेयर का जीवनकाल: आप कितनी बार खरोंच से शुरू करने की उम्मीद करते हैं? (9)

कम अक्सर बेहतर

लेकिन ईमानदारी से, 3 साल बहुत कम है विशेष रूप से एक औसत के लिए

वास्तविकता यह है कि आप आमतौर पर केवल तब ही शुरू होते हैं जब आप पूरी तरह से विकसित नहीं हो सकते , जब आप तकनीकी ऋण होते हैं तो बहुत अधिक है, तकनीकी रूप से दिवालिया हो जाना बेहतर है और फिर भी आप अक्सर अपने कर्ज को फिर से जोड़ सकते हैं

दीर्घकालिक सफलता की कुंजी हर समय अपने तकनीकी ऋण को कम से कम रखने की कोशिश करना है

मैंने लोगों को सुना है कि सॉफ्टवेयर का औसत जीवनकाल लगभग 3 साल है, लेकिन यह मेरे लिए बहुत कम लगता है मैं इसे खरीद नहीं करता

आखिरकार, मेरे कुछ क्लाइंट में मेनफ्रेम लगाए गए हैं जो लगभग 20 वर्षों के लिए हैं, और वे इतनी तीखी हो कि वे हमेशा के लिए जीवित रहें।

मैं व्यक्तिगत रूप से गंभीर पुनर्क्रचना के बारे में बात करना शुरू कर देता हूं जब मंच बहुत पुराना हो जाता है कि यह हमारे कौशल (हम ठेकेदारों) के लिए खराब है और परियोजना को बनाए रखने के लिए अन्यथा अक्षम हैं। मैं एएसपी क्लासिक के बारे में सोच रहा हूं। यह 5 से 8 साल की खिड़की हो सकती है, और इसे फिर से लिखना भी आवश्यक नहीं है।

बेशक, मैंने उन परियोजनाओं को भी देखा है, जो बहुत सारे तकनीकी कर्ज लेते हैं क्योंकि किसी ने हितधारकों को अक्सर या किसी देव को बदला नहीं जाने का तरीका पता नहीं था। या परियोजना को एक कमजोर प्लेटफार्म पर शुरू किया गया था जो कि अच्छी तरह से स्केल नहीं करता था। यह मौलिक जीवनकाल कम कर देता है

हो सकता है कि ये परियोजनाएं 3 साल तक रहती हैं या कम।

एक आखिरी विचार: कुछ अध्ययनों ने सिद्ध किया है कि नए लिखने की तुलना में पुराने कोड को बनाए रखने के लिए सस्ता है, और मुझे विश्वास है कि यह। बड़ी प्रणालियों को फिर से लिखना हमेशा कठिन होता है और इससे अधिक महंगा होता है।

क्या यह सब इंगित करने के लिए षडयंत्र करता है कि डेवलपर्स बहुत जल्दी, फिर शायद लिखने के लिए निस्संदेह करते हैं? मैं हाँ सोच रहा हूं, और मैं देख सकता हूं कि यह कैसे आसान गलती है।

यहां आपके अनुभव क्या हैं?


कारण मुझे लगता है कि 3 साल शायद सही है

  1. एक नई प्रमुख प्रणाली (ईआरपी, सीआरएम, आदि) लागू की जाती है और इसमें पुराने ऐप को बदलने के लिए एक "एकीकृत" मॉड्यूल है

  2. वही, लेकिन कोई एकीकृत ऐप नहीं है - लेकिन मौजूदा ऐप अनुकूलनीय नहीं है (लोगों को छोड़ दिया गया है, प्रौद्योगिकी बदल गई है, वर्तमान आईटी नीतियों में बदलाव आया है, उपयोगकर्ताओं को मौजूदा ऐप पसंद नहीं है।)

  3. जिस कंपनी ने आप से बुनियादी ऐप प्राप्त किया है, उसे अपनी आवश्यकताओं के लिए अनुकूलित करने के लिए गायब हो गया है।

  4. या फिर आप उनके साथ अच्छी तरह से नहीं मिलते हैं।

  5. मौजूदा ऐप के लिए प्रौद्योगिकी "अप्रचलित" है (ढांचे के विक्रेता / माइक्रोसॉफ्ट / सलाहकार / उद्योग विशेषज्ञ / नए आईटी प्रबंधक के अनुसार जो प्रबंधन का कान है।)

  6. "हम चरणबद्ध हो रहे हैं (विंडोज़ 95 / विंडोज 98 / विंडोज 2000 / विंडोज एक्सपी / एनटी) और हमें अपने ऐप में मिलान तकनीक की ज़रूरत है"।

  7. "हमने बहुत कुछ सीखा है (ऐप संस्करण एन) और हम दूसरे / तीसरे / चौथे / एन + 1 वें समय में बेहतर प्रदर्शन करेंगे।"

  8. डेवलपर्स / आईटी प्रबंधक / डिवीजन वीपी / परामर्श कंपनी के लिए नौकरी औचित्य

  9. उपयोगकर्ताओं को इससे नफरत है

  10. हमने प्रतिद्वंद्वी / एक प्रतियोगी अर्जित / अधिग्रहण किया है / एक प्रतियोगी द्वारा अधिग्रहित किया गया है और उनकी बेहतर स्थिति है।

यह सिर्फ एक शुरुआत है

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


जिस टीम पर मैं काम कर रहा हूं वह उसी वेब अनुप्रयोग को 6 साल के लिए विकसित कर रहा है, और दृष्टि में कोई अंत नहीं है। उस समय, क्लासिक एएसपी से एएसपी.नेट 1.1 एएसपी.नेट 2.0 तक चला गया है, इसलिए विभिन्न मॉड्यूलों में वृद्धिशील पुनरीक्षण हुए हैं, लेकिन कभी-कभी खरोंच के पुनर्लेखन की तरह कुछ भी नहीं। हर बार तो कोई व्यक्ति कहता है कि अगर हम शुरू कर सकते हैं तो यह कितना अच्छा होगा, लेकिन हमारे पास 60,000+ प्रयोक्ता हैं: कोई रास्ता नहीं है कि वे 12 से 18 महीनों तक इंतजार करने जा रहे हैं, जबकि उनकी अपडेट की गई कार्यक्षमता या सुविधाएं शेल्फ।

मुझे केवल दो बार दोबारा लिखने का मौका मिला है दोनों ही मामलों में, हमारे पास समय था और ऐसा करने के लिए खरीदा था क्योंकि हमारे पास पहले से ही स्थिर संस्करण का उपयोग करने वाले ग्राहकों का एक छोटा समूह था। जब हम नए उत्पाद के साथ उनके पास गए, तो वे सब सहमत हो गए कि यह पुरानी व्यवस्था से बेहतर था, लेकिन उनमें से बहुत कम लोग इसे खरीदा क्योंकि वे पहले से ही खुश थे कि उनके पास क्या था। प्रोग्रामर के लिए यह काफी मजेदार था, लेकिन अंततः यह व्यापार के लिए एक नुकसान था।

इसलिए, व्यक्तिगत अनुभव से, जो चीजें आप खरोंच से शुरू करने के लिए हर 3 साल की संभावना कई लोगों द्वारा उपयोग नहीं कर रहे हैं जब आपके पास एक व्यापक रूप से उपयोग किया जाने वाला एप्लिकेशन या सेवा मिलती है, विशेष रूप से एक कॉर्पोरेट वातावरण में, क्रय उन्नयन के लिए खरीद-इन करने के लिए पर्याप्त मुश्किल है, अकेले दोबारा लिखना


मुझे नहीं लगता कि 3 साल का अनुमान कुल पुन: लिखने के बीच समय को मापना है। यह एक ही सॉफ्टवेयर के प्रमुख रिलीज के बीच के समय को मापने की अधिक संभावना है (उदाहरण के लिए, मैं Windows और MS-Office के बारे में सोच रहा हूं)। अगले प्रमुख संस्करण बहुत संभवतः एक पूर्ण पुन: लिखना नहीं होगा, बस एक अपग्रेड।


मैं कभी नहीं कहूंगा

ऐप लिखना कोडिंग से कहीं अधिक है जब आप हर चीज को दोबारा लिखते हैं, तो यह कभी भी स्क्रैच से नहीं है क्योंकि आपके पास पिछले विश्लेषण से एक्सपी है, उत्पादन चलाने, बग की रिपोर्ट, दिन-प्रतिदिन उपयोग आदि।

आपके पास डेटा है जो आपको पोर्ट भी होगा

शुरुवात से ? नहीं। बहुत सारी नौकरी पहले ही कर चुकी है, यह आसान बना रही है, और पिछले कई कामों को अनुकूलित करने की आवश्यकता है, जिससे यह कठिन हो सकता है। अंत में, यह पहली बार बनाने के लिए उतने ही समय लेता है, लेकिन आपने इसे पूर्व निहोलो नहीं किया था


यह आपके द्वारा पूरी तरह से निर्भर करता है। व्यापार सॉफ्टवेयर के लिए, अब प्रतीक्षा का समय लगभग हमेशा अच्छा होता है। हालांकि मैं ब्राउज़र MMOs बना रहा हूं, और मैंने पाया है कि संपादन के विशाल मात्रा के साथ, और उन कोडों के बड़े हिस्से को दोबारा लिखना, जो मैं हमेशा खेलों में सुधार करने के लिए कर रहा हूं, यह निकटवर्ती वार्षिक आधार पर खरोंच या निकट से खरोंच से फिर से लिखने में मदद करता है ।

बेशक, अपेक्षाकृत छोटी परियोजनाओं पर काम करने वाले कुछ युगल लोग हैं, हमारे पास लगभग स्केलिंग के मुद्दे नहीं हैं जो आप में से बहुत सारे करते हैं यह इसे फिर से दोहराए जाने का औचित्य साबित करने के लिए बहुत आसान बनाता है

इसके अलावा, प्रबंधकों को रिपोर्ट करने के लिए शायद हमें कुछ भी, बहुत मदद करता है।


बेशक यह प्रौद्योगिकी डोमेन पर निर्भर करता है, लेकिन तीन साल थोड़ा कम लगता है कुछ लोग कहते हैं कि अच्छे सॉफ़्टवेयर के परिपक्व होने के लिए दस साल लगते हैं।

मैंने कुछ परियोजनाएं देखी हैं जहां हितधारकों का कहना है कि "हम छह महीनों में [बड़ी व्यवस्था] को फिर से लिखना / बदल सकते हैं" और वे अभी भी कई सालों बाद कोशिश कर रहे हैं


1 9 80 में शुरू किया गया कोड आधार मैं काम करता हूं; यदि 1984 में कोड का सबूत अभी भी है, तो आपको पता है कि आप क्या चाहते हैं। मेरे दिमाग में कोई संदेह नहीं है कि कुछ, संभवत: यहां तक ​​कि अधिकांश, उस कोड में सुधार किया जाना चाहिए (और इसमें कोई संदेह नहीं है कि इसे सुधार किया जा सकता है)। लेकिन 3 साल का चक्र उस 30 साल की अवधि के मुकाबले बहुत छोटा है। कुछ कोड तब से दूर फेंका गया है; अधिक शायद होना चाहिए लेकिन हर तीन साल में पुनरारंभ करने की योजना मुझे अप्रासंगिक लगती है जटिल प्रणाली के लिए - पर्ल, पायथन, रूबी, एक सी संकलक, एक सी + + कंपाइलर, एक डीबीएमएस लगता है - आप एक 3 साल फेंक-यह-सब-दूर चक्र के साथ अदालत से हँसे जाएंगे। 3 साल के अंत में, आपके पास एक मामूली सभ्य प्रणाली हो सकती है कि एक और 5 साल एक अच्छा पॉलिश लाएगा तो, कम से कम दुनिया के अपने हिस्से में, आपको 10+ सालों के चक्रों में कोड जीवन के संदर्भ में सोचने की जरूरत है।


ऐसा लगता है कि वार्तालाप यहाँ दोबारा लिखने के बीच औसत समय के आसपास केंद्रित है। लेकिन कई सिस्टम व्यावसायिक कारणों से विफल या अप्रचलित हो जाते हैं और कभी भी फिर से नहीं लिखा जाता है कई वेबसाइटें हर 2-3 साल में बदल दी जाती हैं। मोबाइल ऐप की सूचना दी जाती है कि केवल 6 महीने के आधे जीवन के लिए।

सॉफ़्टवेयर जीवन काल के आसपास मेरी वेब खोज में, मैं इस विषय पर केवल एक सम्मानित दिखने वाला अध्ययन पा सकता था। अध्ययन में 9-10 साल का औसत जीवन काल पाया गया, लेकिन प्रारंभिक सर्वेक्षण 1 99 1 में किया गया। अंतर्निहित व्यापार चालकों और अंतर्निहित प्रौद्योगिकियों के परिवर्तन की गति निश्चित रूप से तब से तेज हो गई है







design