Surabaya, 2015
1
A Review of Software Defect Prediction
Supria / 5114201059
Jurusan Teknik Informatika, Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember, Surabaya
e-mail: [email protected]
Contents : 1. Introduction 2. Study Literature
2.1Software Defect
2.2 Software Defect Prediction Model 2.3 Machine Learning dan Statistic 2.4 Dataset 2.5 Fitur Selection 3. Discussion 4. Conclusion 5. Future Work 1. Introduction
Secara umum ada beberapa tahap dalam software development life cycle (SDLC) yaitu analisa kebutuhan, desain, implementasi, ujicoba dan release [1]. Tahap pengujian harus dioperasikan secara efektif untuk merilis perangkat lunak untuk pengguna yang bebas dari bug. Bebas dari bug adalah hal yang paling penting untuk diperhatikan dalam pengembangan perangkat lunak untuk keefektifan dan efisiensi kinerja perangkat lunak bagi pengguna.
Kecacatan perangkat lunak (software defect) didefinisikan sebagai cacat pada perangkat lunak seperti cacat pada dokumentasi, pada kode program, desain dan hal-hal lain yang akan mengakibatkan kegagalan perangkat lunak. Cacat perangkat lunak dapat muncul pada berbagai tahap proses pengembangan perangkat lunak. Cacat perangkat lunak merupakan faktor penting yang mempengaruhi kualitas perangkat lunak. Kualitas perangkat lunak dapat ditingkatkan dengan mencegah munculnya cacat perangkat lunak melalui aksi
perbaikan yang mungkin menghasilkan cacat perangkat lunak pada proses pengembangan perangkat lunak.
Untuk mempertahankan kualitas perangkat lunak perlu adanya pengawasan seperti mendeteksi kecacatan perangkat lunak tersebut. Software yang berkualitas tinggi adalah software yang dapat membantu proses bisnis perusahaan dengan efektif, efisien dan tidak ditemukan cacat selama proses pengujian, pemeriksaan dan implementasi. Perbaikan software setelah pengiriman dan implementasi membutuhkan biaya jauh lebih mahal daripada masih dalam tahap pengembangan [2]. Biaya yang dibutuhkan untuk pengujian software menghabiskan lebih dari 50% dari biaya pengembangan. Dibutuhkan model pengujian cacat pada software untuk mengurangi biaya yang dikeluarkan [3].
Software Defect Prediction (SDP)
adalah salah satu kegiatan yang sangat membantu pada tahap pengujian SDLC [4]. Teknik pencegahan cacat perangkat lunak pertama kali diusulkan oleh IBM corporation dan dapat digunakan untuk mencegah munculnya cacat perangkat lunak ditahap lanjut pada proses pengembangan perangkat lunak [5]. Setelah itu, muncul beberapa pendekatan untuk mencegah munculnya cacat perangkat lunak seperti causal analysis dan prediction model.
Dalam beberapa penelitian tentang prediksi cacat perangkat lunak telah mengadopsi beberapa metode statistic dan machine learning untuk mengatasi masalah prediksi kecacatan pada software [1].
based methods, Case-based Reasoning (CBR), Support Vector Machines (SVM), dan Logistic Regression (LR).
Metode association rule mining merupakan metode dalam pencarian kondisi terjadinya nilai atribut dari data yang muncul bersama-sama [6],[7]. Pada penelitian sebelumnya (Okumoto, 2011) digunakan metode association rule mining untuk melihat pola-pola perangkat lunak yang berpotensi terjadi defect dengan menambahkan konstrain berupa relasi antar atribut untuk menaikkan tingkat akurasi. Secara umum dalam menggunakan metode association rule, metode ini membutuhkan nilai support dan confidence yang ditentukan secara manual. Penentuan kedua nilai tersebut mempengaruhi hasil pencarian pola defect, sehingga untuk melakukan otomatisasi penentuan nilai support dan nilai confidence dibutuhkan langkah tambahan yaitu dengan melakukan perhitungan cumulative support threshold (Selvi dan Tamilarasi, 2009) yang akan dijelaskan secara mendetail pada bagian selanjutnya.
Beberapa peneliti melakukan penelitian untuk mendeteksi kecacatan perangkat lunak dengan menggunakan berbagai metode prediksi, bahkan ada yang menggabungkan beberapa metode untuk mendapatkan dan meningkatkan akurasi hasil prediksi kecacatan perangkat lunak yang optimal.
Pada tulisan ini akan dibahas tentang model prediksi kecacatan pada perangkat lunak beserta metode-metode yang diaplikasikan pada masalah penyelesaian prediksi perangkat lunak, pemilihan fitur yang tepat dan juga dataset yang digunakan dalam penelitian tersebut.
Cacat pada perangkat lunak (software defect) didefinisikan sebagai defect pada perangkat lunak yang mungkin terjadi defect pada kode program, defect pada dokumentasi, pada desain, dan hal-hal lain yang menyebabkan kegagalan perangkat lunak. Defect perangkat lunak dapat muncul pada berbagai tahap proses pengembangan perangkat lunak (Pressman, 2001). Defect perangkat lunak merupakan faktor penting yang mempengaruhi kualitas perangkat lunak. Kualitas perangkat lunak dapat ditingkatkan dengan mencegah munculnya defect perangkat lunak melalui perbaikan yang mungkin menghasilkan
defect perangkat lunak pada proses
pengembangan perangkat lunak (Boehm dan Basili, 2001). Menurut (Runeson dkk, 2006) defect perangkat lunak terdiri dari defect kebutuhan (requirement defect), defect desain (design defect), dan kode cacat (code defect).
2.2 Software Defect Prediction Model Teknik software defect prediction model berusaha untuk menemukan sejumlah pola cacat perangkat lunak yang dapat digunakan untuk memprediksi kemunculan cacat perangkat lunak dimasa mendatang. Sebuah pola cacat perangkat lunak didefinisikan sebagai sekumpulan atribut yang dapat digunakan untuk mendeskripsikan dan memprediksikan kemunculan dari cacat perangkat lunak. Pola cacat perangkat lunak dapat diturunkan dengan menerapkan model statistik pada perangkat lunak yang mengandung cacat. Untuk menentukan apakah sebuah perangkat lunak mengandung cacat perangkat lunak, attribut-attribut dari perangkat lunak dibandingkan dengan pola cacat perangkat lunak. Attribut-attribuat yang digunakan untuk mengukur produk perangkat lunak antara lain ukuran, kompleksitas, usaha dan sejarah perubahan.
Surabaya, 2015
3 2.3 Machine LearningandStatistic
Berbagai metode machine learning dan
statistic telah diaplikasikan untuk
menyelesaikan masalah prediksi cacat
software [8],[9],[10],[11]. Beberapa
metode dan algoritma yang digunakan pada beberapa penelitian adalah kombinasi antara Artificial Neural Network (ANN) dan Ant Bee Colony (ABC) [1], Ensemble learning [12], Double Transfer Boosting (DTB) [13], Two-stage classification method yang diintegrasikan dengan Three-way decisions dan ensemble learning [14], k-means ++ [15], Association mining dan Naive Bayes (NB) classifier [16], Cost-sensitive decision forest dan voting [17], Logika Fuzzy [2], Algoritma SD dan CN2-SD [18], Transfer Naïve Bayes (TNB) [19], Multiple criteria decision making (MCDM) [20], Pendekatan Nearest Neighbor (NN) [21], Software Defect Prediction Model
Learning Problem (SDPMLP) [22],
Algoritma Cost-Sensitive Boosting Neural
Network (CSBNN) [23], Action Based
Defect Prediction (ABDP) [5], Support Vector Machines (SVM) [24], algoritma optimasi Adaptive Particle Swarm (APSO) [25], Learning-to-Rank [26], Two-Stage Cost-Sensitive Learning (TSCS) [27],
AdaBoost.NC [28], Coding-Based
Ensemble Learning [12].
Untuk menunjukkan efek positif dari penggabungan fitur selection dan ensemble learning terhadap kinerja klasifikasi cacat pada software [12]. Seiring dengan fitur selection yang efisien, two-varian (with and without fitur selection) algoritma ensemble learning untuk memberikan ketahanan dari ketidakseimbangan data dan redudansi fitur. Perlu berhati-hati untuk menggabungkan model ensemble learning dengan fitur selection yang efisien untuk mengatasi ketidakseimbangan data dan redudansi fitur yang dapat mengurangi efek dari kinerja klasifikasi cacat.
Metode traditional two-way decisions sering menghasilkan kesalahan klasifikasi yang tinggi dan membutuhkan biaya yang lebih mahal. Two-stage classification
method yang diintegrasikan dengan Three-way decisions dan ensemble learning dapat mengatasi masalah tersebut [14].
Salah satu algoritma klasterisasi yang banyak digunakan adalah k-means++ yang menunjukkan kinerja yang baik pada dataset yang besar [15]. Selama beberapa tahun yang lalu, penelitian prediksi cacat pada software telah diterapkan untuk mengurang biaya produk software. Meskipun hasilnya yang sangat menjanjikan tetapi penelitian tersebut hampir tidak pernah diterapkan pada sistem yang berbasis web. Metode clustering sangat cocok untuk memperkirakan kecacatan source code pada sistem web.
Algoritma klasifikasi tradisional selalu mengoptimalkan akurasi. Cost-sensitive classification method berusaha untuk membuat prediksi dengan biaya klasifikasi terendah. Dalam hal ini teknik cost-sensitive forest yang disebut CSForest yang merupakan ensemble learning dari decision tree dan teknik cost-sensitive voting yang disebut CSVoting untuk memanfaatkan decision tree untuk meminimalkan biaya klasifikasi [17].
Indikator kepadatan software defect prediction disetiap tahap pada software
development life cycle (SDLC) yang
dibutuhkan untuk mengembangkan produk software yang handal. Software defect prediction yang dilakukan pada akhir tahap pengujian mungkin tidak lebih menguntungkan, karena perubahan perlu dilakukan pada tahap sebelum SDLC, sehingga tidak memerlukan biaya dan tenaga yang lebih banyak untuk mencapai target kualitas software. Oleh karena itu, indikator kepadatan cacat software model prediksi phase-wise adalah sangat penting. Model yang didasarkan logika fuzzy diusulkan untuk memprediksi indikator kepadatan softwaredefect pada setiap tahap dalam SDLC [2]. Indikator kepadatan cacat dalam analisis kebutuhan, desain, source code dan tahap pengujian diprediksi menggunakan sembilan software metrics
inferensi telah digunakan untuk mengembangkan model.
Penggunaan pendekatan deskriptif untuk prediksi cacat pada teknik klasifikasi yang tepat yang biasanya diadopsi. Hal ini
memungkinkan kita untuk
mengkarakterisasi modul yang rusak dengan aturan sederhana yang dapat dengan mudah diterapkan oleh praktisi dan memberikan kemudahan (atau teknik) pendekatan daripada hasil yang sangat akurat. Algoritma SD dan algoritma CN2-SD untuk mendapatkan aturan yang mengidentifikasi bagian modul yang rawan cacat [18]. Aturan yang dihasilkan dapat digunakan untuk memandu upaya pengujian dalam rangka meningkatkan kualitas proyek pengembangan perangkat lunak. Aturan tersebut dapat menunjukkan metric, nilai threshold dan hubungan antara metric dengan modul yang rusak.
Association Rule adalah sebuah metode pada data mining. Metode tersebut berfungsi untuk mencari hubungan antara beberapa atribut pada sebuah data. Pada penerapannya metode ini sering digunakan pada database berskala besar untuk mencari pola data. Chen & Hung (2009) telah melakukan sebuah penelitian untuk merangkum beberapa associative rule menggunakan metode decision tree. Chen & Hung (2009) menjelaskan bahwa, aturan asosiatif (associative rule) dapat diekstrak dari sebuah dataset yang di dalamnya terdapat label (class) untuk setiap datanya. Chen & Hung (2009) menyimpulkan pada akhir penelitiannya bahwa, dengan melakukan peringkasan aturan terdapat dua keuntungan. Pertama, aturan lebih mudah dibaca, lebih ringkas dan lebih mudah untuk digunakan sebagai classifier. Kedua, lebih akurat dibandingkan dengan metode biasa.
2.4 Dataset
Untuk menerapkan metodologi prediksi cacat software perlu diterapkan terhadap
yang dilakukan. Banyak penelitian yang menggunakan NASA defect dataset untuk melakukan simulasi pendeteksian cacat pada perangkat lunak (Bouktif dkk, 2010; Catal, 2010; Zhang, 2009; Zhang dkk, 2007). Namun, sangat sedikit informasi yang menjelaskan tentang penerapan metode klasifikasi berbasis aturan pada dataset NASA dengan proses pembangkitan aturan secara otomatis. Pada penelitian Tappolet dkk (2010) dijelaskan sebuah mekanisme analisa perangkat lunak khususnya pendeteksian code smell dengan pendekatan semantik web. Cacat dapat mungkin ditimbulkan karena adanya code smell dalam kode program. Pendekatan semantik yang digunakan adalah menggunakan ontologi sebagai representasi data dan adanya aturan yang diterapkan untuk proses pendeteksian. Proses pendefinisian aturan dilakukan dengan cara manual dengan menggunakan DL (Description Logic). Dalam hal ini, pembangkitan sebuah aturan secara otomatis dirasa akan sangat berguna dalam peningkatan kecepatan dalam proses deteksi cacat.
2.5 Fitur Selection
Pemilihan fitur merupakan hal yang sangat penting untuk diperhatikkan dalam melakukan proses prediksi cacat pada software. Kesalahan dalam pemilihan fitur dapat menyebabkan kesalah pula pada hasil prediksi seperti bagian yang tidak cacat akan terdeteksi sebagai cacat, begitu juga sebaliknya bagian yang cacat tidak terdeteksi sebagai cacat.
Beberapa masalah yang dapat menghambat data cacat pada software adalah redudansi, korelasi, fitur yang tidak relevan dan sampel yang tidak lengkap [29]. Hal ini juga sulit untuk menentukan distribusi yang seimbang antara data yang berkaitan dengan software cacat dan tidak cacat.
Surabaya, 2015
5 Dalam memprediksi bagian kode
program yang mungkin mengandung cacat perlu dipertimbangkan dengan sangat hati-hati [17],[30],[31],[32], karena dapat menyebabkan biaya yang dikenakan sangat tinggi. Untuk itu perlu adanya klasifikasi fitur yang tepat untuk meminimalkan biaya yang dikeluarkan.
3. Discussion and Conclusion
Beberapa definisi dan kesimpulan pada hasil review prediksi kecacatan perangkat lunak adalah sebagai berikut :
1. Software defect prediction dipandang sebagai tahap untuk meningkatkan kualitas perangkat lunak. Ini membantu kita untuk meramalkan masa depan, yaitu untuk mengidentifikasi modul yang cenderung memiliki kesalahan. Ini membantu tim manajemen proyek perangkat lunak untuk menangani proyek selesai secara tepat waktu dan dengan usaha yang cukup.
2. Biaya untuk menemukan cacat pada perangkat lunak merupakan suatu kegiatan pengembangan perangkat lunak yang paling mahal. Semakin lambat mengatasi software defect maka biaya yang akan dikeluarkan semakin tinggi. Untuk itu beberapa penelitian prediksi software defect telah diterapkan untuk menemukan kecacatan pada software sedini mungkin, sehingga dapat meminimalkan biaya.
3. Untuk menghasilkan pola, aturan
association rule mining merupakan
teknik utama, disisi lain sebagian besar
association rule kadang tidak
significant. Aturan association rule mining sering menunjukkan frequensi yang sangat mahal.
4. Algoritma optimasi genetic terbatas untuk mengacak solusi dan konvergensi. 5. Untuk menggali aturan pada perangkat lunak dengan menggunakan satu teknik mining tidak akan efisien, jadi selalu membutuhkan teknik optimasi.
6. Naïve bayes classifier membutuhkan jumlah catatan atau record yang sangat
besar untuk mendapatkan hasil yang baik.
7. Pemilihan fitur dan atribut sangat menentukan hasil prediksi kecacatan pada perangkat lunak.
8. Teknik-teknik Machine Learning yang dikategorikan menjadi Decision Tree, Bayesian Learning, Ensemble Learning, Rule Based Learning, Evolutionary
Algorithms, Neural Networks dan
Miscellaneous. Teknik Machine
Learning yang paling sering digunakan untuk memprediksi kecacatan software adalah C4.5, Naive Bayes, Multilayer Perceptron, Support Vector Machines dan Random Forest.
9. Teknik yang paling umum digunakan untuk pemilihan bagian metrik dalam beberapa studi literatur adalah korelasi berdasarkan fitur selection. Prosedur metric merupakan metric yang paling umum digunakan dalam literatur. Dataset NASA adalah yang paling sering digunakan sebagai dataset dalam literatur. Akan tetapi, sangat sedikit penelitian menggunakan dataset industri untuk mengevaluasi efektivitas teknik machine learning.
4. Future work
1. Penggunaan Machine Learning untuk
software defect prediction akan
menghasilkan akurasi yang lebih baik. 2. Menentukan nilai parameter yang jelas
untuk masing-masing teknik Machine
Learning yang digunakan sehingga
framework pada studi dapat diterapkan pada software-company.
3. Focus pada preprocessing, fitur selection dan teknik data mining lainnya untuk menemukan hasil klasifikasi yang lebih baik.
[1] Ö. F. Arar and K. Ayan, “Software defect prediction using cost-sensitive neural network,” Appl. Soft Comput., vol. 33, pp. 263–277, 2015. [2] H. B. Yadav and D. K. Yadav, “A fuzzy logic based approach for phase-wise software defects prediction using software metrics,” Inf. Softw. Technol., vol. 63, pp. 44– 57, 2015.
[3] A. Paksoy and M. Göktürk, “Procedia Computer Information fusion with dempster-shafer evidence theory for software defect prediction,” Procedia Comput. Sci., vol. 3, pp. 600–605, 2011.
[4] I. Arora, V. Tetarwal, and A. Saha, “Open Issues in Software Defect Prediction,” Procedia Comput. Sci., vol. 46, no. Icict 2014, pp. 906–912, 2015.
[5] C. Chang, C. Chu, and Y. Yeh, “Integrating in-process software defect prediction with association mining to discover defect pattern,” Inf. Softw. Technol., vol. 51, no. 2, pp. 375–384, 2009.
[6] G. Czibula, Z. Marian, and I. G. Czibula, “Software defect prediction using relational association rule mining,” Inf. Sci. (Ny)., vol. 264, pp. 260–278, 2014.
[7] Q. Song, M. Shepperd, M. Cartwright, and C. Mair, “Software defect association mining and defect correction effort prediction,” IEEE Trans. Softw. Eng., vol. 32, no. 2, pp. 69–82, 2006.
[8] M. Shepperd, D. Bowes, and T. Hall, “Researcher Bias : The Use of Machine Learning in Software Defect Prediction,” vol. 40, no. 6, pp. 603–616, 2014.
[9] L. Pelayo and S. Dick, “Evaluating Stratification Alternatives to Improve Software Defect Prediction,” IEEE Trans. Reliab., vol. 61, no. 2, pp. 516–525, 2012. [10] P. He, B. Li, X. Liu, J. Chen, and Y.
Ma, “An empirical study on software defect prediction with a simplified metric set,” Inf. Softw. Technol., vol. 59, pp. 170–190, 2015.
[11] R. Malhotra, “A systematic review of machine learning techniques for software fault prediction,” Appl. Soft Comput. J., vol. 27, pp. 504–518, 2015.
[12] Z. Sun, Q. Song, and X. Zhu, “Using coding-based ensemble learning to improve software defect prediction,” IEEE Trans. Syst. Man Cybern. Part C Appl. Rev., vol. 42, no. 6, pp. 1806–1817, 2012.
[13] L. Chen, B. Fang, Z. Shang, and Y. Tang, “Negative samples reduction in cross-company software defects prediction,” Inf. Softw. Technol., vol. 62, pp. 67–77, 2015.
[14] W. Li, Z. Huang, and Q. Li, “Three-way decisions based software defect prediction,” Knowledge-Based Syst., 2015.
[15] “2015 - A novel defect prediction method for web pages using k-means++.” .
[16] Z. A. Rana, M. M. Awais, and S. Shamail, “Improving Recall of software defect prediction models using association mining,” Knowledge-Based Syst., 2015. [17] M. J. Siers and M. Z. Islam,
“Software defect prediction using a cost sensitive decision forest and voting, and a potential solution to the
Surabaya, 2015
7 class imbalance problem,” Inf. Syst.,
vol. 51, pp. 62–71, 2015.
[18] D. Rodriguez, R. Ruiz, J. C. Riquelme, and R. Harrison, “A study of subgroup discovery approaches for defect prediction,” Inf. Softw. Technol., vol. 55, no. 10, pp. 1810– 1822, 2013.
[19] Y. Ma, G. Luo, X. Zeng, and A. Chen, “Transfer learning for cross-company software defect prediction,” Inf. Softw. Technol., vol. 54, no. 3, pp. 248–256, 2012.
[20] Y. Peng, G. Wang, and H. Wang, “User preferences based software defect detection algorithms selection using MCDM,” Inf. Sci. (Ny)., vol. 191, pp. 3–13, 2012.
[21] A. Hassouna and L. Tahvildari, “An effort prediction framework for software defect correction,” Inf. Softw. Technol., vol. 52, no. 2, pp. 197–209, 2010.
[22] P. C. Pendharkar, “Engineering Applications of Artificial Intelligence Exhaustive and heuristic search approaches for learning a software defect prediction model,” Eng. Appl. Artif. Intell., vol. 23, no. 1, pp. 34–40, 2010.
[23] J. Zheng, “Expert Systems with Applications Cost-sensitive boosting neural networks for software defect prediction,” Expert Syst. Appl., vol. 37, no. 6, pp. 4537–4543, 2010. [24] K. O. Elish and M. O. Elish,
“Predicting defect-prone software modules using support vector machines,” vol. 81, pp. 649–660, 2008.
[25] B. Dhanalaxmi, G. A. Naidu, and K. Anuradha, “Adaptive PSO based Association Rule Mining Technique for Software Defect Classification
using ANN,” Procedia - Procedia Comput. Sci., vol. 46, no. Icict 2014, pp. 432–442, 2015.
[26] X. Yang, K. Tang, S. Member, and X. Yao, “A Learning-to-Rank Approach to Software Defect Prediction,” vol. 64, no. 1, pp. 234– 246, 2015.
[27] M. Liu, L. Miao, and D. Zhang, “Two-Stage Cost-Sensitive Learning for Software Defect Prediction,” IEEE Trans. Reliab., vol. 63, no. 2, pp. 676–686, 2014.
[28] S. Wang and X. Yao, “Using class imbalance learning for software defect prediction,” IEEE Trans. Reliab., vol. 62, no. 2, pp. 434–443, 2013.
[29] I. H. I. Laradji, M. Alshayeb, and L. Ghouti, “Software defect prediction using ensemble learning on selected features,” Inf. Softw. Technol., vol. 58, pp. 388–402, 2015.
[30] C. Couto, P. Pires, M. Tulio, R. S. Bigonha, and N. Anquetil, “The Journal of Systems and Software Predicting software defects with causality tests,” J. Syst. Softw., vol. 93, pp. 24–41, 2014.
[31] R. Moser, “A Comparative analysis of the efficiency of change metrics and static code attributes for defect prediction A Comparative Analysis of the Efficiency of Change Metrics and Static Code Attributes for Defect Prediction,” no. December, 2015. [32] D. Gray, D. Bowes, N. Davey, Y.
Sun, and B. Christianson, “The Misuse of the NASA Metrics Data Program Data Sets for Automated Software Defect Prediction,” 2003.