Dalam dunia pengembangan perangkat lunak yang semakin kompleks, satu aspek yang sering diabaikan namun berdampak besar adalah maintainability—kemudahan untuk memelihara, memperbaiki, dan mengembangkan perangkat lunak seiring waktu. Banyak sistem yang akhirnya ditinggalkan bukan karena kodenya tidak berjalan, tetapi karena terlalu sulit dipelihara. Maka muncul satu pertanyaan besar: bisakah kita memprediksi tingkat kemudahan pemeliharaan software bahkan sebelum software itu “berumur”? Jawaban modern atas pertanyaan ini datang dari dunia machine learning (ML).
Makalah berjudul “A Systematic Literature Review of Machine Learning Techniques for Software Maintainability Prediction” karya Hadeel Alsolai dan Marc Roper (2019) mengupas tuntas berbagai pendekatan ilmiah dalam memanfaatkan machine learning untuk memprediksi maintainability perangkat lunak. Artikel ini bukan hanya penting bagi peneliti dan akademisi, tetapi juga bagi praktisi RPL (rekayasa perangkat lunak) yang ingin menciptakan software tidak hanya bekerja, tapi juga bertahan lama.
Maintainability: Masalah Lama, Pendekatan Baru
Maintainability adalah salah satu atribut kualitas eksternal dalam rekayasa perangkat lunak. Artinya, ia tidak dapat diukur langsung dari kode, melainkan dari pengamatan terhadap kemudahan perubahan, waktu perbaikan, atau stabilitas saat ada modifikasi. Alsolai dan Roper mencatat bahwa meskipun penting, maintainability sering kali kurang mendapatkan perhatian dibanding atribut lain seperti performa atau reliabilitas.
Salah satu tantangan besar adalah: bagaimana cara mengukurnya? Dan lebih jauh lagi—bagaimana cara memprediksinya sejak awal? Di sinilah machine learning masuk sebagai solusi.
ML + RPL = Prediksi Lebih Cerdas
Alsolai dan Roper menyusun systematic literature review (SLR) terhadap 56 studi yang membahas bagaimana teknik machine learning digunakan untuk memprediksi maintainability perangkat lunak, khususnya pada sistem berorientasi objek (OO). Mereka menemukan bahwa sebagian besar pendekatan yang dilakukan berfokus pada:
Menggunakan metrik-metrik OO seperti depth of inheritance tree (DIT), lack of cohesion in methods (LCOM), dan lines of code (LOC)
Membangun model prediktif dengan algoritma seperti neural networks, support vector machines, hingga fuzzy logic
Menggunakan dataset publik maupun privat, dengan evaluasi menggunakan teknik seperti k-fold cross validation