Peringatan: Ini akan menjadi bentuk yang agak bebas ...
Saya pikir ada 2 cara untuk melihat kekhawatiran Anda.
Jika Anda memikirkannya, beberapa pesawat ulang-alik dan satelit telah menjalankan kode yang sama dengan yang awalnya diluncurkan. Di sisi lain, beberapa telah dirancang untuk diperbarui bahkan jika mereka sangat (sangat) jauh.
Yang penting adalah lingkungan. Jelas, selama Anda tidak mengubah lingkungan, kode Anda tidak akan usang. Dalam hal ini, kode membusuk tidak benar-benar ada: kode itu sendiri (atau biner yang dihasilkan) tidak dapat membusuk. Mungkin pecah jika Anda baru saja mulai menyerangnya dari sudut yang sama sekali berbeda. Bukannya busuk, tapi tidak beradaptasi dengan lingkungannya. Anggap saja sebagai masalah evolusi.
Tetapi lingkungan kita berubah. Dan entah bagaimana, apa kunci masalah Anda juga solusinya. Lingkungan kami berubah sangat cepat, sehingga saat ini kami tidak mengharapkan solusi perangkat lunak untuk tidak berkembang seiring waktu. Kami mengabaikan proyek perangkat lunak yang belum diperbarui dalam setahun terakhir, dan akan mengeluh tentang dukungan produk dan pelanggan yang tidak menghasilkan peta jalan yang jelas. Dan bahkan ketika ini berhasil dengan baik - Anda mendapatkan peta jalan yang jelas, dukungan yang baik, pembaruan rutin ... - selalu ada kesempatan sekarang bahwa penantang akan muncul, dengan pertumbuhan eksponensial. Kita sering membuat kesalahan dengan berpikir bahwa perusahaan besar yang mapan akan selalu mendominasi, justru karena mereka mendominasi. Namun, dengan cara yang sama, elemen dominan dalam kawanan bertambah tua, perangkat lunak / perangkat keras super / vendor apa pun semakin tua. Atau hanya sedikit malas. Dan seorang penantang datang dan membalikkan keadaan bahkan lebih cepat daripada yang dominan mungkin lakukan 5 atau 10 tahun sebelumnya. Atau yang dominan hanya akan melakukan pemukulan yang baik, nyaris tidak bisa bertahan hidup sementara kita melihat gangguan di pasar (secara ekonomi, dengan dampak pada bidang yang berbeda), dan kemudian segalanya akan berjalan. Mungkin itu terlihat tidak sempurna, tetapi itu sendiri merupakan proses organik.
Jadi, dari perspektif pengguna, saya kira masalahnya tidak sebesar itu. Busuk kode tidak akan terjadi dari sudut pandang pengguna, karena ia akan dapat menggunakan alternatif (mungkin dengan transisi / migrasi tanpa batas ... semoga).
Sekarang dengan asumsi kita tidak melihat hal-hal dari sudut pandang pengguna, atau bahwa kita berbicara tentang sistem yang kebal - untuk alasan yang tidak diketahui, pengembangan pemerintah, perjalanan ruang angkasa, dll ... - ke kompetisi dan benar-benar seharusnya untuk dibangun untuk hidup / bertahan untuk waktu yang sangat lama, kita perlu melihat teks yang Anda rujuk. Dan mungkin beberapa literatur tentang sistem yang dapat diandalkan dan sistem yang tahan terhadap kesalahan. Meskipun kami mungkin ingin mendorong lebih jauh. Kami tidak hanya menginginkan toleransi kesalahan, kami menginginkan sistem evolusi.
Masalah dengan evolusi, adalah bahwa ia memperkenalkan perubahan, dan perubahan memperkenalkan titik kegagalan. Mari kita lihat ini sekarang dan apa yang bisa kita lakukan untuk mengatasinya.
Kita masih bisa mengandalkan metafora infrastruktur / arsitektur / pengemasan sementara kita melakukannya (toh, kita semua adalah insinyur perangkat lunak, meskipun tidak ada yang namanya rekayasa perangkat lunak ... untuk saat ini). Ada alasan sementara sistem tabung masih aktif (dengan beberapa gangguan), sementara Big Ben masih bekerja (dengan beberapa gangguan) atau Menara Eiffel masih berdiri. Itu karena kita melakukan dengan elemen vital (atau tidak begitu vital) dari infrastruktur apa yang harus kita lakukan dengan perangkat lunak juga: inspeksi berkelanjutan. Entitas-entitas ini tidak perlu dirancang untuk bertahan selama ini, tetapi telah mendapat manfaat dari pengawasan permanen dan perbaikan dan perbaikan tepat waktu ketika diperlukan. Sebut itu perbaikan terbaru Anda jika Anda mau.
Di sisi lain, beberapa desain dimaksudkan untuk bertahan lama, dan berjalan tahan lama tanpa gangguan, bahkan mengetahui bahwa inspeksi berkelanjutan tidak akan mungkin. Dalam hal ini kita beralih ke desain yang bagus dan model formal. Elemen-elemen ketergantungan (Ketersediaan, Keandalan, Keselamatan, Integritas, Maintabilitas) dapat dikuantifikasi - untuk lingkungan tertentu. Statistik melakukan sisanya untuk merencanakan sisanya dan masa depan. Yang menimbulkan pertanyaan: apakah mungkin bagi kita untuk membangun sistem yang akan menjadi evolusi, dalam arti yang sebenarnya?