Makine öğrenmesi yöntemleri ile yazılım hata tahmini
Software defect prediction with machine learning methods
Yazar: ZEYNEP BEHRİN GÜVEN AYDIN
Danışman: DOÇ. DR. RÜYA ŞAMLI
İstanbul Üniversitesi-Cerrahpaşa / Lisansüstü Eğitim Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Doktora, 2021
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Yazılım programları = Software programs

Özet:
Yazılım hatası, bir yazılım ürününde bir yazılım gereksinimini veya son kullanıcının ihtiyacını karşılamayan bir durum, başka bir ifadeyle hata, bir programın kusurlu çalışmasına ya da istenmeyen sonuçlar üretmesine neden olan kodlama veya mantıktaki bir kusurdur. 
Yazılım hataları, yazılım geliştirme aşamaları sırasında uygulanan testler sayesinde daha erken safhada tespit edilebilir ve düzeltilebilir. Yazılım hata tahmini konularında yapılan çalışmalarda daha çok makine öğrenmesi algoritmalarının ve istatistiksel yöntemlerin kullanıldığı görülmektedir. Bu tez çalışmasında, literatürde raporlanmış makine öğrenmesi algoritmaları ile kıyaslama gerçekleştirilmesi amacıyla NASA (National Aeronautics and Space Administration-Ulusal Havacılık ve Uzay Dairesi) Metrik Veri Programı tarafından oluşturulmuş, PROMISE (Predictor Models in Software Engineering–Yazılım Mühendisliğinde Tahmin Modelleri) deposunda yer alan NASA'ya ait projelerin 4 adet veri seti (JM1, KC1, CM1, PC1)  üzerinde WEKA veri madenciliği aracında ve Google Colab ortamında Pyhton dili kullanılarak çeşitli makine öğrenmesi algoritmaları ve istatistiksel yöntemler gerçeklenmiş,  performansları her veri seti için doğruluk (accuracy) oranları ve ROC (Reciever Operator Characteristics Curve – Alıcı Operatör Özellikleri Eğrisi) eğrisi altında kalan AUC (Area Under Curve- Eğri Altında Kalan Alan) değerleri ile karşılaştırılmıştır. Ayrıca çeşitli program kodlarından oluşan bir veri setinin metrikleri belirlenmiş, yeni oluşturulan bu veri seti üzerinde yine çeşitli veri madenciliği algoritmaları ile hata tahminlemesi gerçekleştirilmeye çalışılmıştır.

Abstract:
A software error is a situation in a software product that does not meet a software requirement or the need of the end user, in other words, an error is a flaw in coding or logic that causes a program to malfunction or produce unwanted results. Software errors can be detected and corrected at an earlier stage thanks to the tests applied during the software development stages. In studies on software error prediction, it is seen that machine learning algorithms and statistical methods are mostly used.
In this thesis study, 4 data sets of NASA projects (JM1, KC1, CM1, PC1)  created by NASA (National Aeronautics and Space Administration-Metric Program) in the repository of PROMISE (Predictor Models in Software Engineering)) in order to compare machine learning algorithms reported in the literatüre was preferred. On these data sets, various machine learning algorithms and statistical methods were implemented using the WEKA data mining tool and Python language in Google Colab environment, their performances were compared with the accuracy rates and the AUC(Area Under Curve) values under the ROC (Reciever Operator Characteristics Curve) curve for each data set. In addition, the metrics of a data set consisting of various program codes were determined, and defect prediction was tried to be performed on this newly created data set with various data mining algorithms.