Попередження: Це буде трохи вільної форми ...
Я думаю, що є два способи поглянути на свою стурбованість.
Якщо ви подумаєте про це, у деяких космічних човниках і супутниках працює той самий код, що і спочатку їх запускали. З іншого боку, деякі були розроблені для оновлення, навіть якщо вони (дуже) віддалені.
Важливим є оточення. Очевидно, що поки ви не модифікуєте середовище, ваш код не застаріє. У цьому випадку кодова гниття насправді не існує: сам код (або створений двійковий код) не може гнити. Це може зламатися, якщо ви просто почнете атакувати його з зовсім іншого кута. Це не те, що воно гниє, це те, що воно не адаптується до свого оточення. Подумайте про це як про еволюційну проблему.
Але наше середовище змінюється. І якимось чином, що є ключем до вашої проблеми - це також рішення. Наше середовище змінюється так швидко, що в наш час ми не очікували, що програмне рішення не розвиватиметься з часом. Ми не помічаємо програмних проектів, які не оновлювалися в минулому році, і будемо стогнати щодо підтримки продуктів та клієнтів, які не дають чіткої дорожньої карти. І навіть коли це добре виходить - ви отримуєте чітку дорожню карту, гарну підтримку, регулярні оновлення ... - зараз завжди є шанс, що виклик вийде з експоненціальним зростанням. Ми часто робимо помилку, думаючи, що великі створені компанії завжди будуть домінувати саме через те, що вони домінують. Однак тим самим чином, коли домінуючий елемент у стаді стає дорослішим, надмірно масивне програмне забезпечення / обладнання / будь-який постачальник старіє. Або просто трохи лінивий. І приходить претендент і обертає справи навіть швидше, ніж встановлена домінанта могла це зробити за 5 або 10 років до цього. Або домінанти просто приймуть добру побиття, ледве виживши, поки ми побачимо зрив на ринку (економічно кажучи, з впливом на різні сфери), і тоді все буде продовжуватися. Можливо, це виглядає недосконало, але саме по собі це органічний процес.
Отже, з точки зору користувача, я думаю, питання не таке вже й велике. Гниль коду не відбудеться з точки зору користувача, оскільки він отримає можливість скористатися альтернативою (можливо, з плавним переходом / міграцією ... сподіваємось).
Тепер припустимо, що ми не бачимо речі з точки зору користувача або що ми говоримо про систему, яка не захищена - з невідомих причин, урядового розвитку, подорожей у просторі тощо ... - до конкуренції і насправді передбачається щоб будуватись, щоб жити / виживати дуже довго, нам потрібно переглянути тексти, на які ви посилалися. І, напевно, ще література про надійні системи та відмовно-стійкі системи. Хоча ми, мабуть, хочемо просуватися далі. Ми не просто хочемо відмовостійкості, ми хочемо еволюційні системи.
Проблема еволюції полягає в тому, що вона вносить зміни, а зміни вносять точки невдач. Давайте розглянемо це зараз і що ми можемо зробити для їх вирішення.
Ми все ще можемо покластися на метафору інфраструктури / архітектури / інженерії, хоча ми це робимо (зрештою, ми всі самі інженери програмного забезпечення, хоча, мабуть, немає такого поняття, як інженерія програмного забезпечення ... поки що). Є причина, поки система трубок все ще активна (з деякими глюками), а Біг-Бен все ще працює (з деякими глюками) або Ейфелева вежа все ще стоїть. Це тому, що ми робимо з життєво важливими (чи не настільки життєво важливими) елементами інфраструктури, що ми також повинні робити з програмним забезпеченням: постійні перевірки. Ці організації не обов'язково були розроблені для того, щоб тривати так довго, але отримали користь від постійного нагляду та своєчасного вдосконалення та ремонту, коли це було необхідно. Зателефонуйте, якщо ви хочете, виправлення.
З іншого боку, деякі конструкції повинні були тривати та тривалий час без перешкод, навіть знаючи, що постійне обстеження не буде можливим. У цьому випадку ми звертаємось до гарного дизайну та формальних моделей. Елементи надійності (доступність, надійність, безпека, цілісність, ремонтопридатність) можна кількісно визначити - для даного середовища. Статистика робить інше, щоб планувати відпочинок і майбутнє. Звідси виникає питання: чи можливо ми навіть будуємо системи, які будуть еволюційними, у реальному розумінні?