警告:これは少し自由形式になります...
あなたの懸念を見るには2つの方法があると思います。
考えてみると、一部のスペースシャトルと衛星は、元々それらを打ち上げたのと同じコードを実行しています。一方で、一部は(非常に)リモートであっても更新されるように設計されています。
重要なのは環境です。明らかに、環境を変更しない限り、コードは時代遅れになりません。この場合、コードの腐敗は実際には存在しません。コード自体(または生成されたバイナリ)は腐敗できません。まったく異なる角度から攻撃を開始すると、壊れる可能性があります。腐敗しているということではなく、環境に適応していないということです。進化の問題と考えてください。
しかし、環境は変わります。そしてどういうわけか、あなたの問題の鍵は解決策でもあります。私たちの環境は非常に急速に変化するため、現在ではソフトウェアソリューションが時間とともに進化しないとは考えていません。過去1年間に更新されていないソフトウェアプロジェクトを見落とし、明確なロードマップを作成しない製品およびカスタマーサポートについて嘆きます。そして、これがうまく機能していても-明確なロードマップ、優れたサポート、定期的な更新を取得します--チャレンジャーが指数関数的に成長する可能性が常にあります。大企業は常に支配的であるという理由で、大企業が常に支配的であると誤解することがよくあります。ただし、群れの支配的な要素が古くなるのと同じように、超大規模なソフトウェア/ハードウェア/ベンダーが古くなるとは限りません。またはちょっと怠け者。そして、挑戦者がやって来て、5年か10年前に確立された支配者がそれをやったよりもさらに速く物事を好転させます。または、市場の混乱(経済的に言えば、さまざまな分野に影響を与える)を見ている間、優勢な人はかろうじて生き残り、その後、物事は続きます。不完全に見えるかもしれませんが、それ自体は有機的なプロセスです。
したがって、ユーザーの観点からは、問題はそれほど大きくないと思います。ユーザーの観点からはコードの腐敗は発生しません。ユーザーが代替手段を使用する可能性があるためです(シームレスな移行/移行が可能であれば...)。
今、ユーザーの観点から物事を見ていないか、または、理由がわからない、政府の開発、空間旅行など、免疫に耐えるシステムについて話していると仮定します。非常に長い期間生きて生き残るために構築するには、参照したテキストを調べる必要があります。そしておそらく、信頼できるシステムとフォールトトレラントシステムに関するいくつかの文献。おそらくさらにプッシュしたいと思いますが。耐障害性だけでなく、進化システムが必要です。
進化の問題は、それが変更を導入し、変更が障害点を導入することです。これらを今すぐ見て、それらに対処するためにできることを見てみましょう。
インフラストラクチャ/アーキテクチャ/ emgineeringのメタファーに依存することもできます(結局のところ、ソフトウェアエンジニアのようなものはおそらく今のところありませんが、ソフトウェアエンジニア全員です)。チューブシステムがまだアクティブになっている(何らかの不具合がある)一方で、ビッグベンがまだ動作している(何らかの不具合がある)か、エッフェル塔がまだ立っているのには理由があります。それは、インフラストラクチャの重要な(またはそれほど重要ではない)要素を使用してソフトウェアで行うべきこと、つまり継続的な検査を行うためです。これらのエンティティは、必ずしもこのように長持ちするように設計されているわけではありませんが、必要に応じて恒久的な監視とタイムリーな改善と修理の恩恵を受けています。必要に応じて、修正プログラムを呼び出します。
一方、一部の設計は、継続的な検査が不可能であることを知っていても、持続し、中断することなく永続的に実行することを目的としていました。この場合、優れた設計と正式なモデルに目を向けます。信頼性の要素(可用性、信頼性、安全性、整合性、保守性)は、特定の環境に対して定量化できます。統計は、残りと将来を計画するために残りを行います。それは疑問をもたらします:本当の意味で進化するシステムを構築することさえ可能ですか?