Apa asal dari istilah negatif "kode warisan"

28

Semua orang berbicara tentang kode lama dalam pengembangan perangkat lunak dan saya telah mendengar istilah selama sepuluh tahun terakhir digunakan untuk melukis basis kode apa pun sebagai buruk.

Dari mana asal istilah ini, yang memiliki konotasi yang begitu kuat bagi pemrogram?

Saya yakin pasti ada beberapa buku tentang pengembangan perangkat lunak yang memelopori istilah ini. Saya akan senang menemukan asal kata "kode warisan".

stevebot
sumber
13
Saya mendengar definisi kode warisan berikut 20 tahun yang lalu dan saya telah mengingatnya sejak saat itu: kode warisan adalah kode yang saat ini Anda miliki dalam produksi. Ini telah membantu sudut pandang saya berkali-kali.
Michael Durrant
10
"Kode lama" adalah istilah negatif? Siapa yang mengatakan itu? Bagaimanapun, kata "legacy" tidak spesifik untuk pemrograman, juga tidak terlalu signifikan dalam konteks ini.
Robert Harvey
5
Michael Feathers ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/… ) kemungkinan besar bukan penemu istilah itu, tetapi dia membuat definisi yang menarik: dia menyebut kode warisan "kode tanpa tes". Dan itu memang atribut negatif.
Doc Brown
11
Tulis banyak kode. Periksa. Pergi makan siang. Ayo kembali. Ada layar penuh kode warisan! Anda sekarang harus memahami kode itu dan memastikan bahwa semua perubahan di masa depan berfungsi dengan benar dalam konteks kode itu. Kode lama sama dengan kode yang ada .
Eric Lippert
4
"Legacy" di sini berarti bahwa pengembang asli tidak ada lagi, dan hanya kode dan artefak dokumentasi yang tersisa. Itu tidak mengacu pada usia atau kualitas dengan cara apa pun.
SK-logic

Jawaban:

39

Kode lama didasarkan pada frasa sistem warisan yang secara khusus berlaku untuk kode. Menurut Wikipedia, itu mungkin berasal dari tahun 1970-an dan umum digunakan pada 1980-an. Itu lepas landas dengan ledakan teknologi tahun 1990-an.

Ini dapat dilihat dengan ngram viewer Google: sistem legacy, kode legacy

sistem dan kode warisan

Menggali lebih jauh ini, Anda dapat menemukan penggunaan terdokumentasi dari istilah 'sistem warisan' pada tahun 1970-an .

Contoh paling awal dari 'sistem warisan' yang dimiliki google adalah dalam sebuah buku tentang Prosiding Konferensi Analisis Numerik dan Konferensi Komputer dari tahun 1978:

... solusi yang didekati dan didokumentasikan dengan baik untuk masalah yang terdefinisi dengan jelas adalah operasi sistem warisan perlu dipahami dan untuk mengubah sistem yang ada dengan percaya diri.

Ada juga contoh 'sistem warisan' yang digunakan di luar industri teknologi di Clout: Womanpower and Politics 1976:

... di samping itu, dia memegang kursi sebagai Demokrat peringkat ketiga di Komite Perbankan dan Mata Uang yang kuat - posisi kekuasaan yang dia bangun sendiri, bukan melalui sistem warisan.

Di luar contoh ini yang menunjukkan penggunaannya telah melampaui dunia perangkat lunak murni, spesifikasi dari mana tepatnya istilah itu berasal mungkin hilang karena pasir waktu. Mengingat referensi militer dan politik, itu mungkin berasal dari mereka (terutama militer dan migrasi jargonnya ( "Tampaknya 'kluge' datang ke MIT melalui alumni dari banyak proyek elektronik militer yang dijalankan di Cambridge selama perang (banyak di Yang Mulia MIT Building 20, yang menampung TMRC ... " ))


sumber
Ini jawaban yang bagus. Saya akan terus meneliti untuk melihat apakah saya dapat menemukan asal, tetapi Anda mungkin benar bahwa asal telah hilang atau mungkin tidak didokumentasikan.
stevebot
1
@stevebot Saya sarankan mengikuti jalan 'sistem warisan' daripada kode ... istilah itu tampaknya telah mendahului kode warisan dan memiliki arti penting yang sama.
6
Teks dalam 'buku Anda tentang pembentukan ikatan karbon-karbon dari tahun 1979' adalah dari sebuah buku berjudul 'Praktik baru dalam manajemen proyek' dan berasal dari tahun 2002 (pertama kali diterbitkan tahun 1998). Sepertinya ada sesuatu yang membingungkan dalam pemindaian.
Pete Kirkham
1
Sepertinya ini bukan sumber istilah negatifnya.
JeffO
@ Jeff Tidak, karena MichaelT menyebutkan itu tidak konklusif dari mana asalnya. Ini adalah jawaban yang sangat bagus yang menunjukkan penelitian dan usaha.
stevebot
5

Basis kode lama biasanya merujuk bukan ke sistem POS, melainkan sistem yang ada di basis kode atau sistem yang tidak lagi digunakan untuk pengembangan baru. Misalnya, tim saya saat ini mendukung beberapa aplikasi .net 1.1 dan 2.0 yang dianggap sebagai kode lama. Jika ada waktu di mana modifikasi diperlukan mereka akan baik ditulis ulang atau diperbarui untuk menggunakan kerangka kerja dan standar terbaru. Sampai saat itu kami mengelolanya sebagai aplikasi lawas yang perlu terus berfungsi tetapi tidak ada peningkatan atau perbaikan kode yang diterapkan.

Ada juga beberapa sistem warisan yang tidak kami dukung sama sekali yang ditulis dalam VB6 dan Classic ASP. Kami tidak memiliki kapasitas, atau arahan untuk mendukung atau memodifikasi sistem ini, tetapi selama mereka terus berjalan dan tidak perlu peningkatan, mereka tidak akan diperbarui. Tidak ada yang salah dengan sistem ini. Mereka melakukan pekerjaan mereka dengan cara yang seharusnya dan selain terlihat seperti aplikasi dari pertengahan hingga akhir 90-an mereka tidak memiliki masalah besar.

Jadi, warisan tidak berarti POS hanya sebuah sistem yang dibuat dalam teknologi atau bahasa sebelumnya yang tidak memenuhi standar saat ini. Beberapa sistem warisan memenuhi syarat sebagai POS sebagian besar karena mereka tidak memiliki metodologi pengembangan yang ada saat ini yang memungkinkan kode terkelola dan pengalaman 15 tahun lebih dari para web coders veteran.

SoylentGray
sumber
Saya sepenuhnya setuju bahwa sistem Legacy belum tentu sistem POS. Saya bertanya-tanya apa asal usul frasa ini.
stevebot
3
@stevebot Jika Anda ingin menemukan asal istilah, Anda harus meminta itu tanpa mengandaikan konotasi.
CVn
2
@stevebot - Warisan adalah apa pun yang Anda tinggalkan saat Anda meneruskan. Saya akan berasumsi bahwa deskriptor baru saja diadopsi dari cara mereka diadopsi ke banyak bidang lainnya.
SoylentGray
1
@ MichaelKjörling, apakah Anda memberi tahu saya bahwa Anda belum pernah mendengar kode warisan yang digunakan dalam arti negatif ?? Itu bukan konotasi saya, tetapi bahwa dari orang lain saya telah mendengar berkali-kali dalam pertemuan, buku dan pekerjaan. Seperti saya katakan, saya sepenuhnya setuju bahwa warisan seharusnya bukan istilah negatif.
stevebot
@stevebot - kode lawas hanya tampak 'negatif', karena hanya pernah digunakan dalam konteks penggantian atau interfacing dengan sistem yang lebih lama (dan kesulitannya). Sebuah program yang dibangun lebih dari satu dekade yang lalu tetapi masih bermanfaat / relevan dan memiliki beberapa bug masih 'perangkat lunak warisan', tetapi semua orang hanya menyebutnya 'perangkat lunak'. Sama berlaku untuk basis kode.
Robotnik
3

"Kode lama" adalah istilah yang digunakan oleh orang-orang pemasaran untuk menekan mereka yang kodenya sudah tua (tetapi mungkin berfungsi dengan baik) agar memperbarui ke bahasa dan teknik perangkat lunak terhebat yang terbaru (dan mungkin lebih banyak bug). Ini terkait erat dengan "sistem lama", yang mengacu pada perangkat keras lama dan sistem operasi yang berfungsi dengan baik tetapi tidak sesuai dengan apa yang sekarang "benar secara politis" (mis. OpenVMS, sistem IBM).

JohnM
sumber
6
Meskipun ini mungkin benar, akan lebih baik jika Anda mengedit jawaban untuk mengutip referensi spesifik yang mendukung klaim yang dibuat dalam jawaban ini. Adakah referensi yang bisa Anda kutip?
CVn
2

Istilah kode warisan tanggal untuk setidaknya 1989 seperti yang digunakan oleh Glenn Everhart di comp.sys.amiga :

(... ngomong-ngomong, ya, kadang - kadang saya melakukan program di C juga ... tapi saya merasa lebih mudah untuk mengkonversi kode lama tanpa mengubah bahasanya ...)

Saya tidak menemukan apa pun yang diverifikasi sebelumnya di Google Buku.

Hugo
sumber
Seperti yang ditunjukkan Eric Lippert, pada menit setelah Anda menulis sepotong kode, Anda mendapat kode lama. Kurva yang ditunjukkan oleh MichaelT dan temuan Anda baru saja memvisualisasikan kerangka waktu, di mana kebangkitan arus utama TI mulai menghasilkan sejumlah besar kode, yang melibatkan banyak orang di seluruh dunia. Beberapa saat kemudian, kebutuhan untuk mengganti sistem "lama" dengan sistem yang lebih baru juga muncul - dan itulah mengapa dan ketika itu menjadi istilah yang tersebar luas.
JensG
1
Kode lama diganti terus-menerus, jika ada alasan bagus untuk itu. Saya dulu bekerja pada sistem penagihan mainframe yang ditulis (dalam PL / 1) pada tahun 1970. Ia menggantikan sistem yang ditulis dalam bahasa assembly mainframe (yang dengan sendirinya sebagian besar merupakan otomatisasi dari sistem manual yang ada). Sistem PL / 1 akhirnya diganti setelah sekitar 35 tahun digunakan (beberapa upaya gagal untuk menggantinya sebelum itu). Mungkin sekarang teknologi modern dihilangkan jauh lebih awal (dan dengan mengabaikan berapa banyak penulisan ulang sistem warisan yang mungkin terjadi).
Kickstart