Pendahuluan
Perangkat lunak adalah entitas yang unik dibandingkan produk rekayasa lainnya karena kemampuannya untuk terus berkembang. Namun, evolusi ini bukannya tanpa tantangan. Dalam praktiknya, pemeliharaan perangkat lunak menyerap sebagian besar biaya siklus hidup sistem. Artikel ini menggambarkan bagaimana pemeliharaan ( maintenance ) dan evolusi perangkat lunak ( software Evolution ) harus dipandang tidak hanya sebagai tugas teknis, tetapi juga sebagai tantangan manajerial dan strategi yang kompleks.
Penelitian yang dilakukan oleh Keith Bennett dan Vaclav Rajlich ini menyusun peta jalan (roadmap) untuk pengembangan masa depan pemeliharaan dan evolusi perangkat lunak selama 10 tahun ke depan. Peta jalan ini memperkenalkan model secara bertahap, mendalami tantangan empiris, dan menjawab kebutuhan organisasi modern dalam lanskap bisnis yang berubah dengan cepat.
Definisi dan Ruang Lingkup
Definisi Pemeliharaan
Menurut IEEE 1219, pemeliharaan perangkat lunak adalah:
"Modifikasi pada perangkat lunak setelah pengiriman untuk memperbaiki kesalahan, meningkatkan kinerja atau atribut lainnya, atau beradaptasi dengan lingkungan yang telah berubah."
ISO/IEC 12207 juga menekankan bahwa aktivitas ini terjadi setelah perangkat lunak dirilis.
Evolusi Perangkat Lunak
Evolusi mencakup proses yang lebih besar dan dinamis dibandingkan pemeliharaan. Hal ini berkaitan dengan perubahan signifikan yang memerlukan pemahaman mendalam terhadap sistem, domain aplikasi, dan arsitektur. Evolusi dianggap sebagai fase dalam model bertahap , yaitu model siklus hidup perangkat lunak bertahap yang dijelaskan pada bagian berikut.
Peta Jalan Penelitian: Model yang Dipentaskan
Lima Tahapan Siklus Hidup Perangkat Lunak
Keith Bennett dan Vaclav Rajlich memperkenalkan Staged Model sebagai alternatif dari model klasik Lientz dan Swanson. Model Bertahap membagi siklus hidup perangkat lunak menjadi lima tahap:
Perkembangan Awal (Pengembangan Awal):
Pengembangan versi pertama sistem.
Penetapan arsitektur dan akumulasi pengetahuan tim.
Evolusi (Evolusi):
Tahap utama perubahan besar dan penyesuaian.
Didukung oleh arsitektur fleksibel dan pengetahuan tim yang masih utuh.
Pelayanan (Perawatan):
Hanya perubahan kecil yang dapat dilakukan.
Umumnya terjadi ketika arsitektur rusak dan kunci pribadi telah hilang ( kehilangan pengetahuan ).
Penghapusan secara bertahap (Penghentian Bertahap):
Sistem masih digunakan tetapi tidak diperbarui lagi.
Penutupan (Penutupan):
Sistem dihentikan sepenuhnya, pengguna diarahkan ke solusi baru.
Versi Lanjutan: Model Bertahap Berversi
Model ini menekankan bahwa versi baru dari perangkat lunak akan dikembangkan selama fase evolusi, tetapi versi lama hanya akan tersedia. Cocok untuk model distribusi perangkat lunak shrink-wrapped seperti sistem operasi dan perangkat lunak konsumen.
Tantangan di Setiap Tahap
Pengembangan Awal
Menentukan arsitektur yang memungkinkan masa depan.
menyimpan dan mendokumentasikan pengetahuan tim.
Menggunakan bahasa deskripsi arsitektur (ADLs) dan pola desain untuk dokumentasi arsitektur eksplisit.
Evolusi
Perubahan besar terjadi tanpa merusak sistem.
Menjaga arsitektur dan pengetahuan tetap utuh.
Tantangan utama: mempertahankan tim ahli dan memahami interaksi antar fitur ( fitur interaksi masalah ).
Servis
Didominasi oleh perawatan minor (patch, bug fix).
Dilakukan oleh staf baru dengan pengetahuan parsial.
Butuh alat bantu pemahaman program dan manajemen perubahan:
Analisis dampak
Alat visualisasi kode
Pengujian regresi
Proses Perubahan: Perubahan Mini-Cycle
Setiap perubahan perangkat lunak melibatkan siklus mini:
Permintaan Perubahan
Perencanaan
Pemahaman Program
Analisis Dampak
Implementasi Perubahan
Restrukturisasi
Propaganda Perubahan
Verifikasi & Validasi
Redokumentasi
Catatan: Tahap pemahaman program menyita 50% lebih waktu pemeliharaan. Oleh karena itu, dokumentasi dan alat bantu visual menjadi penting untuk efisiensi.
Sistem Warisan dan Reengineering
Definisi Sistem Legacy
"Perangkat lunak yang sangat penting bagi organisasi, tetapi tidak diketahui bagaimana harus ditangani."
Sering kali sistem ini tidak terdokumentasi dengan baik, sulit dimodifikasi, namun tetap digunakan karena nilai bisnisnya.
Masalah Rekayasa Ulang
Tidak selalu hemat biaya
Butuh tenaga ahli yang mahal
Kode sumber belum tentu tersedia
Arsitektur lama belum tentu relevan
Teknologi baru pun belum terbukti lebih mudah dipelihara
Strategi Baru: Migrasi
Alih-alih hanya fokus pada kode, pendekatan migrasi mempertimbangkan keseluruhan sistem termasuk data, arsitektur, dan proses organisasi.
Perubahan Paradigma: Perangkat Lunak sebagai Layanan
Organisasi modern (terutama e-business) menuntut:
Kecepatan rilis (time-to-market) dalam hitungan hari
Kemampuan perubahan cepat dan fleksibel
Biaya kepemilikan (TCO) yang rendah
Model produk tradisional (perangkat lunak sebagai produk statistik) sudah tidak cocok. Maka memulai:
Perangkat Lunak sebagai Layanan (SaaS)
Layanan terfederasi : sistem yang dibentuk dari layanan kecil yang hanya digabungkan saat runtime (mirip routing telepon internasional).
Fokus Penelitian Masa Depan
Tantangan Utama
Mendesain arsitektur yang mendukung evolusi jangka panjang
Menjaga dan mentransfer pengetahuan tim pengembang
Meningkatkan alat bantu pemahaman program
Menyusun model prediksi dan estimasi biaya perubahan
Menyelaraskan teknologi dengan kebutuhan bisnis
Integrasi Multidisiplin
Evolusi perangkat lunak ke depan akan menjadi bidang yang sangat interdisipliner, mencakup:
Teknologi
Psikologi organisasi
Manajemen proses bisnis
Hukum dan etika digital
Interaksi manusia-komputer
Pemeliharaan dan evolusi perangkat lunak bukanlah tahap akhir dalam pengembangan, tetapi proses keberlanjutan yang krusial bagi kelangsungan bisnis. Model bertahap yang diperkenalkan memberikan pemahaman mendalam akan dinamika perubahan sistem. Solusi masa depan memerlukan pendekatan radikal, fleksibel, dan lintas disiplin, menjadikan evolusi perangkat lunak sebagai pusat dari rekayasa perangkat lunak modern.
ReferensiÂ
Bennett, KH, & Rajlich, VT (2000). Pemeliharaan dan evolusi perangkat lunak: Sebuah peta jalan . Dalam A. Finkelstein (Ed.), Prosiding Konferensi tentang Masa Depan Rekayasa Perangkat Lunak (hlm. 73--87). ACM. https://doi.org/10.1145/336512.336534
IEEE (1993). Standar IEEE untuk Pemeliharaan Perangkat Lunak (IEEE Std. 1219-1993) . Masyarakat Komputer IEEE.
ISO/IEC. (1995). ISO/IEC 12207: Teknologi Informasi---Proses Siklus Hidup Perangkat Lunak . Organisasi Internasional untuk Standardisasi.
Lientz, BP, & Swanson, EB (1980). Manajemen Pemeliharaan Perangkat Lunak . Addison-Wesley.
Lehman, MM (1980). Mengenai pemahaman hukum, evolusi dan konservasi dalam siklus hidup program besar. Jurnal Sistem dan Perangkat Lunak, 1 (3), 213--221.
Lehman, MM (1985). Evolusi Program: Proses Perubahan Perangkat Lunak . Academic Press.
Bohner, SA, & Arnold, RS (Eds.). (1996). Analisis Dampak Perubahan Perangkat Lunak . IEEE Computer Society Press.
Fjeldstad, RK, & Hamlen, WT (1982). Studi pemeliharaan program aplikasi: Laporan kepada responden kami. Dalam G. Parikh & N. Zvegintzov (Eds.), Tutorial tentang Pemeliharaan Perangkat Lunak (hlm. 13--30). IEEE Computer Society Press.
Sneed, HM (1995). Perencanaan rekayasa ulang sistem lama. Perangkat Lunak IEEE, 12 (1), 24--34.
Fan, R., & Rajlich, V. (1999). Menghapus klon dari kode. Jurnal Pemeliharaan Perangkat Lunak: Penelitian dan Praktik, 11 (4), 223--243.
Rajlich, V., & Varadarajan, S. (1999). Menggunakan web untuk anotasi perangkat lunak. Jurnal Internasional Rekayasa Perangkat Lunak dan Rekayasa Pengetahuan, 9 (1), 55--72.
Follow Instagram @kompasianacom juga Tiktok @kompasiana biar nggak ketinggalan event seru komunitas dan tips dapat cuan dari Kompasiana. Baca juga cerita inspiratif langsung dari smartphone kamu dengan bergabung di WhatsApp Channel Kompasiana di SINI