Apa itu kode lama?

Pria sedang mengerjakan dokumen di dalam ruang kontrol

Penyusun

Rina Diane Caballar

Staff Writer

IBM Think

Cole Stryker

Staff Editor, AI Models

IBM Think

Apa itu kode lama?

Kode lama mengacu pada kode perangkat lunak yang masih melayani tujuannya tetapi dikembangkan menggunakan teknologi lama yang sekarang sudah ketinggalan zaman. Ini mencakup kode yang diwarisi dari tim lain atau versi perangkat lunak yang lebih lama dan kode sumber yang tidak lagi didukung atau dipelihara secara aktif. Ini juga mencakup kode yang ditulis menggunakan perangkat keras atau sistem operasi yang sudah usang, kompiler atau antarmuka pemrograman aplikasi (API) yang sudah tidak digunakan lagi, atau bahasa pemrograman atau lingkungan pengembangan perangkat lunak yang sudah ketinggalan zaman . Akibatnya, kode lama tidak lagi sesuai dengan standar pengodean baru, prinsip-prinsip desain perangkat lunak saat ini atau arsitektur komputasi terbaru.

Dalam bukunya tahun 2004, Working Effectively with Legacy Code, Michael Feathers menawarkan deskripsi lain-"kode tanpa tes."1 Definisi kode lama ini berarti bahwa programmer tidak memiliki cara untuk memverifikasi bahwa kode tersebut berfungsi dan bekerja seperti yang diharapkan. Banyak sistem lama juga tidak memiliki dokumentasi yang memadai yang penting untuk memahami perilaku mereka, yang membuat memperluas atau meningkatkannya menjadi tugas berat bagi pengembang.

Tantangan mempertahankan kode lama

Kode lama berkontribusi pada hutang teknis, yang perlu “dilunasi” dari waktu ke waktu melalui pemeliharaan kode yang berkelanjutan. Berikut adalah beberapa tantangan umum yang mungkin dihadapi organisasi saat mempertahankan kode lama:

    ● Kemampuan beradaptasi

    ● Biaya

    ● Kinerja

    ● Skalabilitas

    ● Keamanan dan kepatuhan

Kemampuan beradaptasi

Karena sifatnya yang ketinggalan zaman, kode lama bisa tidak kompatibel atau sulit diintegrasikan dengan sistem yang lebih modern. Kurangnya kemampuan beradaptasi ini dapat menghambat inovasi dan memperlambat pertumbuhan bisnis, sehingga perusahaan berpotensi kehilangan keunggulan kompetitif.

Biaya

Sistem lama bisa mahal untuk dipelihara. Biaya operasional dan pemeliharaan ini dapat bertambah, dengan biaya dukungan pihak ketiga yang meningkat untuk versi perangkat lunak dan perangkat keras yang lebih lama. Selain itu, menemukan pengembang yang terampil dalam praktik komputasi atau bahasa pemrograman yang sudah ketinggalan zaman bisa jadi merupakan tantangan tersendiri dan ada harganya.

Kinerja

Arsitektur monolitik yang kikuk menyebabkan latensi tinggi, waktu respons yang lambat, dan waktu henti yang sering terjadi. Kinerja yang lamban ini dapat berdampak negatif pada pengalaman pengguna, menurunkan kepuasan pelanggan. Hal ini juga dapat menghambat produktivitas dan efisiensi bagi anggota tim yang bekerja dengan dan memelihara sistem ini.

Skalabilitas

Sistem yang sudah ketinggalan zaman dapat mengalami peningkatan beban pengguna. Mereka berjuang untuk memenuhi lonjakan permintaan dan meningkatkan atau menurunkan skala sesuai kebutuhan. Komponen mereka yang digabungkan erat juga menyulitkan untuk meningkatkan fungsionalitas yang ada atau menambahkan fitur baru.

Keamanan dan kepatuhan

Kode lama mungkin tidak diperbarui secara aktif dengan patch keamanan dan mengikuti standar keamanan terbaru, sehingga menjadi rentan terhadap serangan siber dan pelanggaran. Sistem lama mungkin juga tidak mematuhi peraturan saat ini.

Cara memodernisasi kode lama

Memodernisasi aplikasi lama memerlukan perencanaan yang cermat. Berikut adalah metodologi 5 langkah untuk membantu menyederhanakan proses:

    ● Memahami basis kode

    ● Membagi dan menaklukkan

    ● Tes karakterisasi perakitan

    ● Memfaktorkan ulang, memigrasikan, atau menulis ulang

    ● Menguji dan mendokumentasikan

Memahami basis kode

Langkah pertama adalah memahami basis kode, dan biasanya menjadi bagian yang paling sulit. Mulailah dengan melakukan ulasan terhadap dokumentasi yang tersedia, baik itu dokumen persyaratan, komentar kode sebaris atau riwayat kontrol versi seperti log komit atau log perubahan.

Jika dokumentasi tidak mencukupi, cobalah menggunakan alat analisis kode statis yang secara otomatis memeriksa kode tanpa menjalankannya. Selain itu, alat visualisasi kode dapat membuat representasi grafis dari struktur kode sumber, membantu memetakan ketergantungan dan interaksi antar elemen.

Membagi dan menaklukkan

Setelah tim pengembangan perangkat lunak memiliki pemahaman yang cukup tentang sistem lama, mereka dapat mulai mengatasinya. Basis kode yang luas ini bisa sangat sulit untuk ditangani, jadi bagilah menjadi modul-modul yang lebih kecil dan lebih mudah dikelola dan kerjakan 1 modul pada satu waktu.

Tes karakterisasi perakitan

Pengujian biasanya ditulis untuk memvalidasi kebenaran kode dan perilaku yang dimaksudkan. Namun, tes karakterisasi dibuat untuk memahami apa yang dilakukan kode dan bagaimana fungsinya. Ini berguna untuk memahami kode lama.2  

Memfaktor ulang, memigrasi, atau menulis ulang

Perusahaan umumnya memiliki 3 opsi dalam hal memodernisasi kode lama: memfaktorkan ulang, bermigrasi, atau menulis ulang. Mereka juga dapat menggabungkan salah satu pendekatan ini. Memutuskan jalur mana yang akan ditempuh membutuhkan keterlibatan tim rekayasa perangkat lunak dan tim kepemimpinan bisnis.

Refaktorisasi kode mengubah struktur internal kode sumber tanpa mengubah perilaku eksternalnya atau memengaruhi fungsionalitasnya. Perubahan kecil ini cenderung tidak menimbulkan bug dan dapat menghasilkan kode yang jelas dan bersih yang lebih mudah dipelihara.

Untuk kode lama, tim dapat memulai dengan modifikasi kecil untuk setiap modul, termasuk mengganti nama variabel, menghapus metode yang duplikat atau tidak terpakai, dan menstandarkan format. Mereka kemudian dapat melanjutkan dengan restrukturisasi yang lebih berbasis logika seperti memecah metode besar menjadi metode yang lebih kecil, menyederhanakan kondisionalitas yang kompleks dan memindahkan fitur di antara fungsi-fungsi untuk mengurangi ketergantungan dan meningkatkan keterpaduan.

Migrasi merupakan cara lain menuju modernisasi kode lama. Hal ini memerlukan migrasi semua atau sebagian kode ke platform atau tumpukan teknologi yang lebih baru, seperti transisi dari arsitektur monolitik ke layanan mikro atau beralih dari lokal ke cloud. Penting untuk memeriksa kompatibilitas dengan platform atau tumpukan teknologi dan mengonfirmasi apakah penyedia menawarkan dukungan apa pun selama migrasi.

Menulis ulang kode lama sering kali menjadi pilihan terakhir karena melibatkan pembuatan kode baru sepenuhnya untuk menggantikan kode lama. Ini merupakan proyek baru tersendiri—sebuah usaha besar yang mungkin memerlukan tim pengembangan terpisah untuk menanganinya.

Baik migrasi maupun penulisan ulang bisa menjadi tugas yang menakutkan bagi basis kode lama yang besar, sehingga tim dapat mempertimbangkan strategi “strangler fig”.3 Ara pencekik tumbuh tinggi di permukaan pohon, akarnya turun ke tanah, perlahan-lahan membungkus pohon inangnya dengan kisi-kisi yang menyempit yang pada akhirnya menyebabkan pohon itu layu.

Dalam hal sistem lama, tim dapat secara bertahap memigrasi atau menulis ulang fragmen kode kecil sampai seluruh basis kode telah dialihkan ke kerangka kerja modern atau dikembangkan dalam bahasa pemrograman saat ini. Namun, tim harus membangun arsitektur transisi untuk kode yang ada dan kode baru untuk hidup berdampingan. Arsitektur transisi ini kemudian akan dinonaktifkan setelah migrasi atau penulisan ulang selesai.3

Menguji dan mendokumentasikan

Sangat penting untuk menguji kode yang direfaktor, dimigrasikan, atau ditulis ulang secara menyeluruh untuk memastikan tidak ada bug yang muncul. Pengembang dapat menulis integrasi dan pengujian unit mereka sendiri, tetapi penting juga untuk melibatkan tim QA yang dapat menjalankan pengujian fungsional, regresi, dan menyeluruh untuk memeriksa apakah fitur dan perilaku tetap utuh.

Dokumentasi adalah bagian penting lain dari alur kerja modernisasi. Dokumen perubahan kode sumber, baik dengan membuat anotasi kode melalui komentar sebaris, membuat log perubahan terperinci atau menulis dokumen arsitektur dan desain yang komprehensif dan dokumentasi teknis lainnya.

Desain 3D bola yang menggelinding di lintasan

Berita + Insight AI terbaru 


Temukan insight dan berita yang dikurasi oleh para pakar tentang AI, cloud, dan lainnya di Buletin Think mingguan. 

Alat untuk memodernisasi kode lama

Beberapa alat dapat membantu mempercepat dan mengotomatiskan proses modernisasi kode lama. Berikut beberapa hal yang umum:

    ● Penganalisis kode statis

    ● Aplikasi visualisasi kode

    ● Menguji kerangka kerja otomatisasi

    ● Platform dan toolkit migrasi

    ● Generator dokumen

Penganalisis kode statis

Alat analisa statis dapat membantu men- debug kode lama untuk kelemahan pemrograman, masalah kualitas, dan bahkan kerentanan keamanan. Banyak alat analisis kode statis mendukung bahasa pemrograman lama seperti C, COBOL, PL/I, dan RPG. Contoh penganalisis kode statis termasuk CodeSonar, Klocwork, sumber terbuka PMD, dan SonarQube.

Aplikasi visualisasi kode

Visualisator kode merepresentasikan kode sumber secara grafis untuk memberikan gambaran yang lebih baik tentang cara kerjanya, terutama untuk basis kode yang besar atau kompleks. Representasi grafis ini datang dalam format yang berbeda seperti peta kode, diagram alur, dan diagram bahasa pemodelan terpadu (UML). Contoh aplikasi visualisasi kode adalah CodeScene, CodeSee dan Understand, antara lain.

Menguji kerangka kerja otomatisasi

Kerangka kerja ini membuat dan menjalankan pengujian otomatis dan menghasilkan laporan tentang pengujian tersebut. Kerangka kerja otomatisasi pengujian populer termasuk Cypress dan Selenium untuk aplikasi web dan Appium untuk aplikasi mobile.

Platform migrasi dan toolkit

Platform dan toolkit ini membantu menyederhanakan dan mengotomatiskan alur kerja migrasi untuk sistem lama. Beberapa platform migrasi utama adalah AWS Application Migration Service, Azure Migrate, toolkit migrasi Google Cloud, IBM Cloud Transformation Advisor, dan Red Hat Migration Toolkit for Applications.

Pembuat dokumen

Alat-alat ini secara otomatis menghasilkan dokumentasi dari kode sumber dan file input lainnya. Contoh alat pembuatan dokumen adalah Doxygen, Sphinx dan Swimm, di antara lainnya.

AI untuk memodernisasi kode lama

Kecerdasan buatan (AI) dapat membantu dalam modernisasi kode lama. Aplikasi AI generatif didukung oleh model bahasa besar (LLM) yang dapat menganalisis basis kode lama yang kompleks atau besar.

AI generatif dapat digunakan untuk membantu tugas modernisasi kode lama ini:

    ● Penjelasan kode

    ● Pemfaktoran ulang kode

    ● Transformasi kode

    ● Pembuatan dan dokumentasi pengujian

Penjelasan kode

AI generatif dapat memahami konteks dan semantik yang mendasari basis kode lama. Hal ini membuat mereka mampu menguraikan logika dan fungsi di baliknya, menjelaskan kode dengan cara yang dapat dimengerti oleh para programmer.

Pemfaktoran ulang kode

Alat yang didukung AI dapat menawarkan rekomendasi refactoring real-time. Sebagai contoh, IBM watsonx Code Assistant memanfaatkan model IBM Granite untuk mengidentifikasi bug dan pengoptimalan. Kemudian menyarankan perbaikan yang ditargetkan yang selaras dengan konvensi pengodean yang telah ditetapkan oleh tim, membantu menyederhanakan dan mempercepat refactoring kode.

Transformasi kode

Sistem AI dapat menyarankan cara untuk mengimplementasikan kode sumber dari bahasa pemrograman lama ke yang lebih modern. Misalnya, IBM watsonx Code Assistant for Z memadukan otomatisasi dan AI generatif untuk membantu pengembang memodernisasi aplikasi mainframe. Kemampuan AI generatif ini termasuk penjelasan kode untuk COBOL, JCL dan PL/I dan mengonversi COBOL ke kode Java.

Pembuatan tes dan dokumentasi

Seperti kerangka kerja otomatisasi pengujian, asisten pengodean AI juga dapat membuat pengujian secara otomatis. Selain itu, mereka dapat membuat komentar sebaris untuk mendokumentasikan fungsi fragmen atau potongan kode tertentu.

Seperti halnya aplikasi yang didukung AI, programmer harus tetap berhati-hati saat menggunakan AI untuk memodernisasi kode lama. Mereka harus meninjau output untuk akurasi dan menguji perubahan atau perbaikan yang disarankan.

AI Academy

Memanfaatkan AI untuk modernisasi aplikasi

Pelajari cara AI generatif dapat mengubah perjalanan modernisasi aplikasi Anda dengan meningkatkan produktivitas, mengurangi risiko kepatuhan, dan menyederhanakan pembaruan.

Solusi terkait
Migrasi Cloud - IBM Instana Observability 

Instana menyederhanakan perjalanan migrasi cloud Anda dengan menawarkan pemantauan yang komprehensif dan insight yang dapat ditindaklanjuti.

Jelajahi Instana
Solusi Modernisasi Aplikasi Mainframe

Manfaatkan AI generatif untuk mempercepat dan menyederhanakan modernisasi aplikasi mainframe.

Jelajahi modernisasi mainframe
Layanan Konsultasi Modernisasi Aplikasi

Optimalkan aplikasi lama dengan hybrid cloud dan layanan dan strategi modernisasi yang didorong oleh AI.

Layanan modernisasi aplikasi
Ambil langkah selanjutnya

Optimalkan aplikasi lama dengan hybrid cloud dan layanan dan strategi modernisasi yang didorong oleh AI.

Jelajahi layanan modernisasi aplikasi Unduh panduan
Catatan kaki

1 #195 - Working Effectively with Legacy Code and AI Coding Assistant - Michael Feathers, Tech Lead Journal, 14 Oktober 2024

2 Characterization Testing, Michael Feathers, 8 Agustus 2016

3 Strangler Fig, Martin Fowler, 22 Agustus 2024