Aviso: Isso será um pouco de forma livre ...
Eu acho que existem duas maneiras de analisar sua preocupação.
Se você pensar bem, alguns ônibus espaciais e satélites executam o mesmo código que os lançou originalmente. Por outro lado, alguns foram projetados para serem atualizados, mesmo que sejam (muito) remotos.
O que importa é o meio ambiente. Obviamente, desde que você não modifique o ambiente, seu código não se tornará obsoleto. Nesse caso, o código rot realmente não existe: o próprio código (ou o binário produzido) não pode rot. Pode quebrar se você começar a atacá-lo de um ângulo completamente diferente. Não é que esteja apodrecendo, é que não está se adaptando ao ambiente. Pense nisso como um problema evolutivo.
Mas nosso ambiente muda. E de alguma forma, qual é a chave do seu problema também é a solução. Nosso ambiente muda tão rápido que hoje em dia não esperamos que uma solução de software evolua com o tempo. Ignoramos os projetos de software que não foram atualizados no ano passado e lamentamos o suporte ao produto e ao cliente que não produz um roteiro claro. E mesmo quando isso funciona bem - você obtém um roteiro claro, bom suporte, atualizações regulares ... - sempre há a chance agora que um desafiante virá à tona, com crescimento exponencial. Muitas vezes cometemos o erro de pensar que as grandes empresas estabelecidas sempre dominam, exatamente porque dominam. No entanto, da mesma forma que o elemento dominante em um rebanho envelhece, o software / hardware superdimensionado / qualquer fornecedor que envelhece. Ou apenas um pouco preguiçoso. E um desafiante chega e muda as coisas ainda mais rápido do que o dominante estabelecido poderia ter feito 5 ou 10 anos antes. Ou o dominante terá apenas uma boa surra, mal sobrevivendo enquanto vemos uma ruptura no mercado (economicamente falando, com impactos em diferentes campos), e as coisas continuarão. Talvez isso pareça imperfeito, mas por si só é um processo orgânico.
Então, da perspectiva do usuário, acho que o problema não é tão grande. A podridão de código não acontecerá da perspectiva do usuário, pois ele poderá usar uma alternativa (possivelmente com uma transição / migração contínua ... espero).
Agora, supondo que não estamos vendo as coisas do ponto de vista do usuário, ou que estamos falando de um sistema que é imune - por razões desconhecidas, desenvolvimento governamental, viagens espaciais, etc ... - à concorrência e é realmente suposto Para sermos construídos para viver / sobreviver por muito tempo, precisamos examinar os textos que você referenciou. E provavelmente um pouco mais de literatura sobre sistemas confiáveis e sistemas tolerantes a falhas. Embora provavelmente desejemos avançar ainda mais. Não queremos apenas tolerância a falhas, queremos sistemas evolutivos.
O problema com a evolução é que ela introduz mudanças e as mudanças introduzem pontos de falhas. Vejamos agora e o que podemos fazer para resolvê-los.
Ainda podemos confiar na metáfora de infraestrutura / arquitetura / engenharia enquanto o fazemos (afinal, todos nós somos engenheiros de software, embora não haja indiscutivelmente engenharia de software ... por enquanto). Há uma razão para o sistema de tubos ainda estar ativo (com algumas falhas), enquanto o Big Ben ainda funciona (com algumas falhas) ou a Torre Eiffel ainda está de pé. É porque fazemos com elementos vitais (ou não tão vitais) de uma infraestrutura o que deveríamos fazer com o software também: inspeção contínua. Essas entidades não foram projetadas necessariamente para durar tanto tempo, mas se beneficiaram da supervisão permanente e de melhorias e reparos oportunos quando necessário. Chame isso de hotfixes, se desejar.
Por outro lado, alguns projetos foram feitos para durar e duram sem interrupção, mesmo sabendo que a inspeção contínua não será possível. Nesse caso, nos voltamos para um bom design e modelos formais. Elementos de confiabilidade (Disponibilidade, Confiabilidade, Segurança, Integridade, Manutenção) podem ser quantificados - para um determinado ambiente. As estatísticas fazem o resto para planejar o resto e o futuro. O que traz a questão: é possível construir sistemas que serão evolutivos, no sentido real?