Saya sendiri agak menyukai ringkasan Wikipedia :
Sistem lama adalah metode lama, teknologi, sistem komputer, atau program aplikasi yang terus digunakan, biasanya karena masih berfungsi untuk kebutuhan pengguna, meskipun teknologi yang lebih baru atau metode yang lebih efisien dalam melakukan tugas kini tersedia.
Banyak hal yang dijelaskan orang lain dalam jawaban mereka adalah alasan mengapa kode menjadi "warisan". Tetapi pertanyaan penting itu sendiri adalah ini:
Tetapi masih digunakan dalam sistem produksi - jadi apakah ini benar-benar warisan? Dan apa yang membuatnya menjadi warisan?
Fakta bahwa ia masih digunakan dalam produksi justru itulah yang membuatnya menjadi warisan . Jika kode tidak berfungsi dengan benar, atau tidak lagi digunakan dalam produksi, maka kode itu "rusak" atau "pensiun", masing-masing. Legacy berarti masih digunakan dan berfungsi dengan baik, tetapi menggabungkan desain atau teknik yang tidak lagi umum digunakan.
Setiap kode atau sistem yang Anda (a) ingin tingkatkan / perbarui, tetapi tidak bisa, atau (b) masih di tengah-tengah peningkatan, adalah sistem warisan. Ini tidak berarti refactoring atau pembersihan kode umum, itu berarti perubahan signifikan pada desain, mungkin menggunakan kerangka kerja baru atau bahkan platform baru.
Ada sejumlah alasan mengapa sistem atau kode mungkin menjadi warisan:
Kurangnya perawatan rutin atau pembusukan perangkat lunak . Jelas jika aplikasi tidak dikelola secara teratur, itu tidak akan mengimbangi perubahan besar di dunia perangkat lunak. Ini mungkin karena kelalaian sederhana atau mungkin pilihan yang disengaja berdasarkan prioritas bisnis atau kendala anggaran.
Kurangnya pengujian. Jawaban lain merujuk pada klaim hiperbolik penulis populer atas kode apa pun yang tidak dicakup oleh tes sebagai kode warisan. Ini benar-benar bukan definisi yang akurat tetapi adalah akar penyebab yang mungkin; tanpa tes yang baik (otomatis atau manual), pengembang menjadi takut-takut dan takut untuk membuat perubahan besar karena mereka khawatir akan merusak sesuatu, sehingga memimpin "pembusukan perangkat lunak" di atas.
Rev-locking, sebuah faktor yang sering diabaikan yang secara khusus berbahaya dalam proyek-proyek yang menggunakan pustaka atau kerangka kerja open-source yang besar (walaupun saya juga pernah melihatnya dengan alat-alat komersial). Seringkali akan ada penyesuaian besar yang dilakukan pada kerangka / pustaka, membuat upgrade menjadi sulit atau mahal. Dengan demikian sistem menjadi warisan karena berjalan pada platform yang lebih lama (dan mungkin tidak lagi didukung).
Kode sumber tidak lagi tersedia, artinya sistem hanya dapat ditambahkan, tidak pernah diubah. Karena sistem ini harus ditulis ulang untuk meningkatkan - sebagai lawan revisi bertahap / iteratif - banyak perusahaan tidak akan repot.
Apa pun yang memperlambat atau menghentikan pembaruan pada basis kode dapat menyebabkan basis kode itu menjadi warisan.
Sekarang pertanyaan terpisah, tetapi tidak dinyatakan tetapi tersirat adalah, apa yang salah dengan kode warisan? Ini sering digunakan sebagai istilah merendahkan, maka pertanyaannya:
Haruskah kita menghindar dari pelabelan kode berfungsi sempurna yang tidak beralasan ini?
Dan jawabannya tidak, kita seharusnya tidak; label yang dibenarkan dan istilah itu sendiri jelas menyiratkan kode fungsi. Intinya bukan yang itu fungsi, tapi bagaimana itu berfungsi.
Dalam beberapa kasus tidak ada yang salah dengan kode warisan. Itu bukan kata yang buruk. Kode / sistem lama bukanlah Jahat. Mereka baru saja mengumpulkan debu - kadang-kadang sedikit, kadang-kadang banyak.
Legacy menjadi usang ketika sistem tidak dapat lagi melayani (semua) kebutuhan klien. Itu label adalah salah satu yang kita perlu berhati-hati dari. Kalau tidak, itu hanya persamaan biaya / manfaat; jika biaya peningkatan akan lebih rendah daripada biaya manfaatnya (termasuk biaya pemeliharaan yang lebih rendah di masa depan) maka tingkatkan, jika tidak, biarkan saja. Tidak perlu memuntahkan kata "lawas" dengan nada yang sama seperti yang biasanya Anda pesan untuk "pemeriksaan pajak". Ini situasi yang sangat OK untuk dilakukan.