चेतावनी: यह थोड़ा मुक्त रूप होने जा रहा है ...
मुझे लगता है कि आपकी चिंता को देखने के 2 तरीके हैं।
यदि आप इसके बारे में सोचते हैं, तो कुछ अंतरिक्ष शटल और उपग्रह एक ही कोड चला रहे हैं जो मूल रूप से उन्हें लॉन्च किया था। दूसरी ओर, कुछ को डिज़ाइन किया गया है भले ही वे (बहुत) दूरस्थ हों।
पर्यावरण क्या मायने रखता है। जाहिर है, जब तक आप पर्यावरण को संशोधित नहीं करते, आपका कोड अप्रचलित नहीं होगा। इस उदाहरण में, कोड रोट वास्तव में मौजूद नहीं है: कोड स्वयं (या उत्पादित बाइनरी) सड़ नहीं सकता है। यह टूट सकता है यदि आप इसे पूरी तरह से अलग कोण से हमला करना शुरू करते हैं। ऐसा नहीं है कि यह सड़ रहा है, यह है कि यह अपने पर्यावरण के अनुकूल नहीं है। इसे एक विकासवादी समस्या के रूप में सोचें।
लेकिन हमारा वातावरण बदल जाता है। और किसी तरह, आपकी समस्या की कुंजी क्या है, इसका भी समाधान है। हमारा पर्यावरण इतनी तेजी से बदलता है, कि आजकल हम एक सॉफ्टवेयर समाधान की अपेक्षा नहीं करेंगे कि वह समय के साथ विकसित न हो। हम ऐसे सॉफ्टवेयर प्रोजेक्ट्स को नजरअंदाज करते हैं जो पिछले एक साल में अपडेट नहीं हुए हैं, और ऐसे उत्पाद और ग्राहक सहायता के बारे में विलाप करेंगे जो स्पष्ट रोडमैप का उत्पादन नहीं करते हैं। और यहां तक कि जब यह अच्छी तरह से काम करता है - आपको एक स्पष्ट रोडमैप, अच्छा समर्थन, नियमित अपडेट मिलता है ... - अब हमेशा एक मौका है जो एक चुनौतीपूर्ण सतह पर होगा, घातीय वृद्धि के साथ। हम अक्सर यह सोचने की गलती करते हैं कि बड़ी स्थापित कंपनियाँ हमेशा हावी रहेंगी, ठीक इसलिए कि वे हावी हैं। हालाँकि, उसी तरह झुंड में प्रमुख तत्व पुराना हो जाता है, सुपर-बड़े सॉफ्टवेयर / हार्डवेयर / जो भी विक्रेता पुराना हो जाता है। या अभी थोड़ा आलसी है। और एक चैलेंजर अंदर आता है और चीजों को घुमाता है, इससे पहले कि स्थापित प्रमुख ने 5 या 10 साल पहले किया हो। या प्रमुख सिर्फ एक अच्छी धड़कन लेगा, बमुश्किल जीवित रहने के दौरान जब हम बाजार में एक व्यवधान (आर्थिक रूप से बोलने, विभिन्न क्षेत्रों पर प्रभाव के साथ) देखेंगे, और तब चीजें चलेंगी। शायद यह अपूर्ण लगता है, लेकिन अपने आप में यह एक जैविक प्रक्रिया है।
इसलिए, उपयोगकर्ता के दृष्टिकोण से, मुझे लगता है कि मुद्दा इतना बड़ा नहीं है। कोड रोट उपयोगकर्ता के दृष्टिकोण से नहीं होगा, क्योंकि वह एक विकल्प का उपयोग करने के लिए मिलेगा (संभवतः एक सहज संक्रमण / प्रवास के साथ ... उम्मीद है)।
अब यह मानते हुए कि हम उपयोगकर्ता के दृष्टिकोण से चीजों को नहीं देख रहे हैं, या हम एक ऐसी प्रणाली के बारे में बात कर रहे हैं जो प्रतिरक्षा है - अज्ञात, सरकारी विकास, स्पेस यात्रा, आदि कारणों के लिए ... - प्रतिस्पर्धा करने के लिए और वास्तव में माना जाता है बहुत लंबे समय तक जीवित रहने / जीवित रहने के लिए निर्मित होने के लिए, हमें आपके द्वारा संदर्भित ग्रंथों को देखना होगा। और शायद भरोसेमंद प्रणालियों और दोष-सहिष्णु प्रणाली पर कुछ और साहित्य। हालांकि हम शायद आगे धकेलना चाहते हैं। हम सिर्फ दोष-सहिष्णुता नहीं चाहते हैं, हम विकासवादी व्यवस्था चाहते हैं।
विकासवाद के साथ समस्या यह है कि यह परिवर्तनों का परिचय देता है, और परिवर्तन विफलताओं के बिंदुओं का परिचय देते हैं। आइए अब इन पर ध्यान दें और इन्हें संबोधित करने के लिए हम क्या कर सकते हैं।
हम अभी भी इन्फ्रास्ट्रक्चर / आर्किटेक्चर / एमिगेंसिंग रूपक पर भरोसा कर सकते हैं जबकि हम ऐसा करते हैं (आखिरकार, हम सभी खुद सॉफ्टवेयर इंजीनियर हैं, हालांकि यकीनन सॉफ्टवेयर इंजीनियरिंग जैसी कोई चीज नहीं है ... अभी के लिए)। ट्यूब सिस्टम अभी भी सक्रिय है (कुछ ग्लिट्स के साथ), जबकि बिग बेन अभी भी काम करता है (कुछ ग्लिच के साथ) या एफिल टॉवर अभी भी एक कारण है। ऐसा इसलिए है क्योंकि हम एक बुनियादी ढांचे के महत्वपूर्ण (या इतना महत्वपूर्ण नहीं) तत्वों के साथ करते हैं कि हमें सॉफ्टवेयर के साथ क्या करना चाहिए: निरंतर निरीक्षण। इन संस्थाओं को लंबे समय तक चलने के लिए जरूरी नहीं बनाया गया था, लेकिन जब जरूरत थी तब स्थायी निरीक्षण और समय पर सुधार और मरम्मत से लाभ हुआ है। अगर आपको लगता है कि अपने हॉटफिक्सेस को कॉल करें।
दूसरी ओर, कुछ डिजाइनों को अंतिम रूप देना था, और बिना किसी रुकावट के साथ चलना, यहां तक कि यह भी जानना कि निरंतर निरीक्षण संभव नहीं होगा। इस मामले में हम अच्छे डिजाइन और औपचारिक मॉडल की ओर मुड़ते हैं। निर्भरता के तत्व (उपलब्धता, विश्वसनीयता, सुरक्षा, अखंडता, रखरखाव) को एक दिए गए वातावरण के लिए निर्धारित किया जा सकता है। बाकी और भविष्य की योजना बनाने के लिए आँकड़े करते हैं। जो प्रश्न लाता है: क्या यह हमारे लिए वास्तविक अर्थों में विकासवादी व्यवस्था बनाने के लिए भी संभव है?