Bản thân tôi khá là một phần trong bản tóm tắt của Wikipedia :
Hệ thống cũ là một phương pháp cũ, công nghệ, hệ thống máy tính hoặc chương trình ứng dụng tiếp tục được sử dụng, điển hình là vì nó vẫn hoạt động cho nhu cầu của người dùng, ngay cả khi công nghệ mới hơn hoặc phương pháp thực hiện nhiệm vụ hiệu quả hơn hiện đã có.
Rất nhiều điều mà người khác đang mô tả trong câu trả lời của họ là lý do tại sao mã trở thành "di sản". Nhưng câu hỏi quan trọng chính là đây:
Nhưng nó vẫn được sử dụng trong các hệ thống sản xuất - vậy nó có thực sự là di sản không? Và những gì làm cho nó di sản?
Thực tế là nó vẫn được sử dụng trong sản xuất chính xác là những gì làm cho nó trở thành di sản . Nếu mã không hoạt động đúng hoặc không còn được sử dụng trong sản xuất, thì mã đó lần lượt là "bị hỏng" hoặc "đã nghỉ hưu". Di sản có nghĩa là nó vẫn đang được sử dụng và hoạt động tốt, nhưng kết hợp các thiết kế hoặc kỹ thuật không còn được sử dụng phổ biến.
Bất kỳ mã hoặc hệ thống nào mà bạn (a) muốn nâng cấp / cập nhật, nhưng không thể, hoặc (b) vẫn đang trong quá trình nâng cấp, là một hệ thống cũ. Điều này không có nghĩa là tái cấu trúc hoặc dọn dẹp mã chung, nó có nghĩa là những thay đổi quan trọng đối với thiết kế, có thể sử dụng một khung mới hoặc thậm chí là một nền tảng mới.
Có bất kỳ lý do nào khiến các hệ thống hoặc mã có thể trở thành di sản:
Thiếu bảo trì thường xuyên hoặc thối phần mềm . Rõ ràng nếu ứng dụng không được duy trì thường xuyên, nó sẽ không theo kịp với những thay đổi lớn trong thế giới phần mềm. Điều này có thể là do bỏ bê đơn giản hoặc nó có thể là một lựa chọn có chủ ý dựa trên các ưu tiên kinh doanh hoặc các ràng buộc ngân sách.
Thiếu kiểm tra. Một câu trả lời khác tham chiếu yêu cầu cường điệu của một tác giả nổi tiếng về bất kỳ mã nào không nằm trong các thử nghiệm là mã kế thừa. Đây thực sự không phải là một định nghĩa chính xác nhưng nó là một nguyên nhân gốc rễ có thể; không có các bài kiểm tra tốt (tự động hoặc thủ công), các nhà phát triển trở nên rụt rè và ngại thực hiện các thay đổi lớn vì họ lo lắng về việc phá vỡ một cái gì đó, do đó dẫn đến "sự thối phần mềm" ở trên.
Rev-lock, một yếu tố thường bị bỏ qua, đặc biệt xảo quyệt trong các dự án sử dụng các thư viện hoặc khung công tác nguồn mở lớn (mặc dù tôi cũng đã thấy điều đó xảy ra với các công cụ thương mại). Thường sẽ có các tùy chỉnh chính được thực hiện cho khung / thư viện, khiến việc nâng cấp trở nên khó khăn hoặc tốn kém. Do đó, hệ thống trở thành di sản vì nó chạy trên nền tảng cũ hơn (và có thể không còn được hỗ trợ).
Mã nguồn không còn khả dụng, có nghĩa là hệ thống chỉ có thể được thêm vào, không bao giờ thay đổi. Vì các hệ thống này phải được viết lại để nâng cấp - trái ngược với sửa đổi tăng dần / lặp đi lặp lại - nhiều công ty sẽ không bận tâm.
Bất cứ điều gì làm chậm hoặc dừng cập nhật cho cơ sở mã có thể dẫn đến cơ sở mã đó trở thành di sản.
Bây giờ câu hỏi riêng biệt, không có căn cứ nhưng ngụ ý là, có gì sai với mã kế thừa? Nó thường được sử dụng như một thuật ngữ mang tính miệt thị, do đó câu hỏi:
Chúng ta có nên né tránh việc dán nhãn không chính đáng này của mã hoạt động hoàn hảo?
Và câu trả lời là không, chúng ta không nên; việc ghi nhãn được bảo hành và bản thân thuật ngữ này bao hàm rõ ràng mã chức năng. Vấn đề không phải là có chức năng của nó, nhưng cách nó hoạt động.
Trong một số trường hợp không có gì sai với mã kế thừa. Đó không phải là một từ xấu. Mã / hệ thống kế thừa không phải là Evil. Họ vừa mới thu thập một ít bụi - đôi khi một chút, đôi khi rất nhiều.
Di sản trở nên lỗi thời khi hệ thống không còn có thể phục vụ (tất cả) nhu cầu của khách hàng. Nhãn đó là một cái mà chúng ta cần phải cẩn thận. Mặt khác, nó chỉ đơn giản là một phương trình chi phí / lợi ích; nếu chi phí nâng cấp sẽ thấp hơn chi phí lợi ích của nó (bao gồm cả chi phí bảo trì trong tương lai thấp hơn) thì hãy nâng cấp, nếu không, hãy để yên. Không cần phải thốt ra từ "di sản" trong cùng một giai điệu mà bạn thường dành cho "kiểm toán thuế". Đó là một tình huống hoàn toàn OK để được vào.