Surabaya, 2015 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.1 Software 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]. 1 Random Forest (RF), Artificial Immune System (AIS), Naive Bayes (NB), J48, tree 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. 2. Study Literature 2.1 Software Defect 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 2.3 Machine Learning and Statistic 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 Threeway decisions dan ensemble learning [14], k-means ++ [15], Association mining dan Naive Bayes (NB) classifier [16], Costsensitive decision forest dan voting [17], Logika Fuzzy [2], Algoritma SD dan CN2SD [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 Threeway 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 costsensitive 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 software defect pada setiap tahap dalam SDLC [2]. Indikator kepadatan cacat dalam analisis kebutuhan, desain, source code dan tahap pengujian diprediksi menggunakan sembilan software metrics 3 dari empat tahap. Software metrics yang dinilai dari segi bahasa dan sistem fuzzy 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 CN2SD 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 dataset sebagai ujicoba untuk menghasilkan keunggulan suatu metodologi penelitian 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 Dalam memprediksi bagian kode program yang mungkin mengandung cacat perlu dipertimbangkan dengan sangat hatihati [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. 5 REFERENCES [1] Ö. F. Arar and K. Ayan, “Software defect prediction using costsensitive 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] [8] 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. 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, “Threeway decisions based software defect prediction,” Knowledge-Based Syst., 2015. [15] “2015 - A novel defect prediction method for web pages using kmeans++.” . [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 class imbalance problem,” Inf. Syst., vol. 51, pp. 62–71, 2015. using ANN,” Procedia - Procedia Comput. Sci., vol. 46, no. Icict 2014, pp. 432–442, 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. [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. [19] Y. Ma, G. Luo, X. Zeng, and A. Chen, “Transfer learning for crosscompany software defect prediction,” Inf. Softw. Technol., vol. 54, no. 3, pp. 248–256, 2012. [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. [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. [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. [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. [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. [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. [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. [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. [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. [25] B. Dhanalaxmi, G. A. Naidu, and K. Anuradha, “Adaptive PSO based Association Rule Mining Technique for Software Defect Classification 7