Makine öğrenmesi yöntemleri ile yazılım hata miktarlarının tahmin edilmesi
Predicting software defect quantities with machine learning methods
Yazar: SELAHATTİN GÜRER
Danışman: DR. ÖĞR. ÜYESİ ELİF ALTINTAŞ KAHRİMAN
Haliç Üniversitesi / Lisansüstü Eğitim Enstitüsü / Bilgisayar Mühendisliği Ana Bilim Dalı
Derece: Yüksek Lisans, 2023
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Bilgisayar yazılım dilleri = Computer software languages ; Bilgisayar yazılımları = Computer softwares ; Nesneye dayalı yazılım = Object oriented software ; Yazılım kalitesi = Software quality

Özet:
Geçmişte yazılım test süreci, yazılım yaşam döngüsü içinde yer alan süreçlerin en ihmal edileni olsa da, günümüzde yaşanan tecrübeler sayesinde yazılımın kalitesini belirleyen en önemli ölçütü olarak görülmektedir. Yazılımlar, çeşitli sektörlerde karmaşık hale geldiğinden yazılımda çıkabilecek hataların tespiti ve bu hataların önlenmesi, çözümü zorlaşan süreç haline gelmiştir. Geleneksel yazılım test yaklaşımları, tüm potansiyel hataları ortaya çıkarmada genellikle yetersiz kalmakta olup bu durum hata ayıklama süreçlerinde harcanacak zaman ve kaynak maliyetinde artışlara yol açmaktadır. Yazılımın geliştirme sürecinin başlarında ya da yazılımı kullanıma almadan önce (test ortamına açmadan önce) yazılımın kalitesini arttırmak ve yazılım bakım yükünü en aza indirmek önemli hale gelmiştir. Son yıllarda makine öğrenimi teknikleri, yazılım hatalarının tahmin edilmesinde umut verici çözümler sunmaktadır.
Bu tez çerçevesinde, yazılım hata miktarlarının tespiti için farklı veri setleri üzerinde ve farklı türlerde makine öğrenmesi algoritmaları ile değerlendirmeler yapılmıştır. Yazılım hatalarının tespiti ile ilgili detaylı literatür taraması gerçekleştirilmiştir. Literatürde bu konuda yapılan çalışmaların NASA açık veri setleri olan JM1, KC1, KC2, CM1, PC1 üzerinde en iyi performansları sergilediği için tez çalışmasında bu veri setleri kullanılmıştır.
Yazılım hata miktarlarını tespit etmek için "Support Vector Machines(SVM)", "Naive Bayes", "LightGBM", "XGboost", "Gradient Boosting", "Random Forest" makine öğrenimi yöntemlerine başvurulduğunda doğruluk oranlarının yüksek olduğu gözlemlenmiştir.
Çalışma kapsamında, yazılım hatalarını tahmin ederek hataların ve hata miktarlarının önceden tespit edilmesi amaçlanmış olup yazılım hatalarının tespiti için makine öğrenimi yöntemlerinin kullanılmasına genel bir bakış sunulmuştur.
Bu çalışmanın amacı, makine öğrenimi yöntemlerinin yazılım hatalarını tespit etmedeki etkinliğini araştırmak ve performanslarını geleneksel hata tespit teknikleriyle karşılaştırmaktır. Çalışmada, büyük bir yazılım kodu veri kümesi ve kod kalitesi, karmaşıklığı ve boyutuyla ilgili çeşitli ölçümler kullanılmıştır. Çalıştırılan modellerin doğruluk dağılımı ve hata miktarlarının hesaplanması sağlanmıştır.

Abstract:
In the past, the software testing process was the most neglected of the processes in the software life cycle, but today it is seen as the most important criterion that determines the quality of the software. As software has become more complex in various sectors, the detection and prevention of software defects has become an increasingly difficult process. Traditional software testing approaches are often inadequate in uncovering all potential defects, leading to an increase in the cost of time and resources spent on debugging processes. In recent years, machine learning techniques have provided promising solutions for software defect prediction.
In this thesis, different types of machine learning algorithms are evaluated on different datasets for software defect detection. A detailed literature review on software defect detection has been conducted. Since the studies on this subject in the literature have shown the best performances on NASA open datasets JM1, KC1, KC2, CM1, PC1, these datasets were used in this thesis.
It was observed that the accuracy rates were high when "Support Vector Machines (SVM)", "Naive Bayes", "LightGBM", "XGboost", "Gradient Boosting", "Random Forest" machine learning methods were used to detect software defects.
Within the scope of the study, it is aimed to predict software defects and to detect defects and defect quantities in advance and an overview of the use of machine learning methods for software defect detection is presented.
The aim of this study is to investigate the effectiveness of machine learning methods in detecting software defects and to compare their performance with traditional defect detection techniques. The study uses a large dataset of software code and various metrics related to code quality, complexity and size. The accuracy distribution and error quantities of our models are calculated.