Cảnh báo: Đây sẽ là một dạng tự do ...
Tôi nghĩ có 2 cách để xem xét mối quan tâm của bạn.
Nếu bạn nghĩ về nó, một số tàu con thoi và vệ tinh đã chạy cùng một mã ban đầu đã đưa ra chúng. Mặt khác, một số đã được thiết kế để được cập nhật ngay cả khi chúng ở (rất) từ xa.
Vấn đề là môi trường. Rõ ràng, miễn là bạn không sửa đổi môi trường, mã của bạn sẽ không bị lỗi thời. Trong trường hợp này, thối mã không thực sự tồn tại: bản thân mã (hoặc nhị phân được sản xuất) không thể thối. Nó có thể vỡ nếu bạn bắt đầu tấn công nó từ một góc độ hoàn toàn khác. Không phải là nó mục rữa, mà là nó không thích nghi với môi trường của nó. Hãy nghĩ về nó như là một vấn đề tiến hóa.
Nhưng môi trường của chúng ta thay đổi. Và bằng cách nào đó, chìa khóa cho vấn đề của bạn cũng là giải pháp. Môi trường của chúng ta thay đổi quá nhanh, đến nỗi ngày nay chúng ta sẽ không mong đợi một giải pháp phần mềm sẽ không phát triển theo thời gian. Chúng tôi bỏ qua các dự án phần mềm chưa được cập nhật trong năm qua và sẽ than vãn về hỗ trợ khách hàng và sản phẩm không tạo ra lộ trình rõ ràng. Và ngay cả khi điều này hoạt động tốt - bạn có được lộ trình rõ ràng, hỗ trợ tốt, cập nhật thường xuyên ... - luôn có cơ hội rằng một kẻ thách thức sẽ xuất hiện, với sự tăng trưởng theo cấp số nhân. Chúng ta thường mắc sai lầm khi nghĩ rằng các công ty lớn được thành lập sẽ luôn chiếm ưu thế, chính xác là vì họ thống trị. Tuy nhiên, giống như cách mà yếu tố chi phối trong đàn già đi, phần mềm / phần cứng siêu lớn / bất cứ nhà cung cấp nào cũng già đi. Hoặc chỉ là một chút lười biếng. Và một kẻ thách thức bước vào và biến mọi thứ xung quanh nhanh hơn cả sự thống trị đã được thiết lập có thể đã làm điều đó 5 hoặc 10 năm trước. Hoặc người thống trị sẽ chỉ đánh bại tốt, hầu như không sống sót trong khi chúng ta thấy sự gián đoạn trên thị trường (nói về kinh tế, với các tác động trên các lĩnh vực khác nhau), và sau đó mọi thứ sẽ tiếp tục. Có thể điều đó có vẻ không hoàn hảo, nhưng bản thân nó là một quá trình hữu cơ.
Vì vậy, từ góc độ của người dùng, tôi đoán vấn đề không phải là lớn. Việc quay mã sẽ không xảy ra theo quan điểm của người dùng, vì anh ta sẽ sử dụng một giải pháp thay thế (có thể với sự chuyển đổi / di chuyển liền mạch ... hy vọng).
Bây giờ giả sử chúng ta không nhìn thấy mọi thứ từ quan điểm của người dùng, hoặc chúng ta đang nói về một hệ thống miễn dịch - vì những lý do chưa biết, phát triển chính phủ, du lịch spac, v.v ... - để cạnh tranh và thực sự được cho là để được xây dựng để sống / tồn tại trong một thời gian rất dài, chúng ta cần xem xét các văn bản mà bạn tham chiếu. Và có lẽ một số tài liệu thêm về các hệ thống đáng tin cậy và hệ thống chịu lỗi. Mặc dù chúng tôi có thể muốn đẩy xa hơn. Chúng tôi không chỉ muốn chịu lỗi, chúng tôi muốn các hệ thống tiến hóa.
Vấn đề với sự tiến hóa, là nó giới thiệu những thay đổi, và những thay đổi giới thiệu những điểm thất bại. Bây giờ chúng ta hãy xem xét những điều này và những gì chúng ta có thể làm để giải quyết chúng.
Chúng ta vẫn có thể dựa vào phép ẩn dụ về cơ sở hạ tầng / kiến trúc / kiến trúc trong khi chúng ta làm như vậy (xét cho cùng, tất cả chúng ta đều là kỹ sư phần mềm, mặc dù hiện tại không có thứ gì gọi là kỹ thuật phần mềm ... Có một lý do trong khi hệ thống ống vẫn hoạt động (với một số trục trặc), trong khi Big Ben vẫn hoạt động (với một số trục trặc) hoặc Tháp Eiffel vẫn đứng. Đó là bởi vì chúng tôi làm với các yếu tố quan trọng (hoặc không quá quan trọng) của cơ sở hạ tầng, điều chúng tôi nên làm với phần mềm cũng vậy: kiểm tra liên tục. Những thực thể này không nhất thiết được thiết kế để tồn tại lâu dài, nhưng đã được hưởng lợi từ sự giám sát vĩnh viễn và cải tiến và sửa chữa kịp thời khi cần thiết. Gọi đó là hotfix của bạn nếu bạn muốn.
Mặt khác, một số thiết kế có ý nghĩa kéo dài và chạy bền bỉ mà không bị gián đoạn, thậm chí biết rằng việc kiểm tra liên tục sẽ không thể thực hiện được. Trong trường hợp này, chúng tôi hướng tới thiết kế tốt và các mô hình chính thức. Các yếu tố của độ tin cậy (Tính khả dụng, Độ tin cậy, An toàn, Tính toàn vẹn, Khả năng duy trì) có thể được định lượng - cho một môi trường nhất định. Số liệu thống kê làm phần còn lại để lập kế hoạch cho phần còn lại và tương lai. Điều này mang đến câu hỏi: chúng ta thậm chí có thể xây dựng các hệ thống sẽ tiến hóa, theo nghĩa thực không?