Предупреждение: это будет немного свободной формы ...
Я думаю, что есть 2 способа взглянуть на вашу проблему.
Если вы думаете об этом, некоторые космические челноки и спутники работали с тем же кодом, который их первоначально запустил. С другой стороны, некоторые были разработаны для обновления, даже если они (очень) удалены.
Важна среда. Очевидно, что если вы не измените среду, ваш код не устареет. В этом случае кода rot на самом деле не существует: сам код (или созданный двоичный файл) не может сгнить. Он может сломаться, если вы просто начнете атаковать его под совершенно другим углом. Дело не в том, что он гниет, а в том, что он не адаптируется к окружающей среде. Думайте об этом как об эволюционной проблеме.
Но наша среда меняется. И как-то, что является ключом к вашей проблеме, также является решением. Наша среда меняется настолько быстро, что в настоящее время мы не ожидаем, что программное решение не будет развиваться со временем. Мы пропускаем программные проекты, которые не обновлялись в прошлом году, и будем стонать о продуктах и поддержке клиентов, которые не дают четкого плана действий. И даже когда это работает хорошо - вы получаете четкую дорожную карту, хорошую поддержку, регулярные обновления ... - теперь всегда есть шанс, что претендент появится, с экспоненциальным ростом. Мы часто ошибаемся, думая, что крупные авторитетные компании всегда будут доминировать именно потому, что они доминируют. Тем не менее, так же, как доминирующий элемент в стаде стареет, супер-массивное программное / аппаратное обеспечение / любой поставщик становится старше. Или просто немного ленивый. И претендент приходит и меняет положение вещей даже быстрее, чем мог бы сделать установленная доминанта 5 или 10 лет назад. Или доминирующая сторона просто ударит, едва выживет, пока мы видим срыв на рынке (экономически говоря, с последствиями для разных областей), и тогда все будет продолжаться. Может быть, это выглядит несовершенно, но само по себе это органический процесс.
Итак, с точки зрения пользователя, я думаю, что проблема не так велика. Гниение кода не произойдет с точки зрения пользователя, так как он получит альтернативу (возможно, с плавным переходом / миграцией ... надеюсь).
Теперь предположим, что мы не видим вещи с точки зрения пользователя, или что мы говорим о системе, которая защищена - по неизвестным причинам, правительственным разработкам, космическим путешествиям и т. Д. - - от конкуренции и действительно предполагается Чтобы быть построенным, чтобы жить / выживать в течение очень долгого времени, нам нужно взглянуть на тексты, на которые вы ссылались. И, возможно, еще немного литературы о надежных системах и отказоустойчивых системах. Хотя мы, вероятно, хотим двигаться дальше. Мы не просто хотим отказоустойчивости, мы хотим эволюционные системы.
Проблема эволюции заключается в том, что она вносит изменения, а изменения вносят точки отказа. Давайте посмотрим на них сейчас и на то, что мы можем сделать для их решения.
Мы все еще можем полагаться на метафору инфраструктура / архитектура / инжиниринг, пока мы делаем это (в конце концов, мы все сами инженеры-программисты, хотя, возможно, пока нет такой вещи, как разработка программного обеспечения ... пока). Есть причина, по которой система труб все еще активна (с некоторыми сбоями), в то время как Биг Бен все еще работает (с некоторыми сбоями) или Эйфелева башня все еще стоит. Это потому, что мы делаем с жизненно важными (или не очень важными) элементами инфраструктуры то, что мы должны делать с программным обеспечением так же: постоянный контроль. Эти объекты не обязательно были рассчитаны на долгое время, но извлекли выгоду из постоянного надзора и своевременного улучшения и ремонта, когда это было необходимо. Назовите это ваши исправления, если хотите.
С другой стороны, некоторые конструкции были рассчитаны на длительный срок службы и работали без перерыва, даже зная, что постоянный осмотр невозможен. В этом случае мы обращаемся к хорошему дизайну и формальным моделям. Элементы надежности (доступность, надежность, безопасность, целостность, ремонтопригодность) могут быть определены количественно - для конкретной среды. Статистика делает все остальное, чтобы планировать отдых и будущее. В связи с этим возникает вопрос: возможно ли нам создавать системы, которые будут эволюционными в реальном смысле?