Tekrar eden veri analizini kullanarak yazılım geliştirme için iyileştirilmiş hata tahmini
A new improved defect prediction framework for software development using repeated data analysis
Yazar: MUHAMMED MARUF ÖZTÜRK
Danışman: DOÇ. DR. AHMET ZENGİN
Sakarya Üniversitesi / Fen Bilimleri Enstitüsü / Bilgisayar ve Bilişim Mühendisliği Ana Bilim Dalı / Bilgisayar Mühendisliği Bilim Dalı
Derece: Doktora, 2016
Konu: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol = Computer Engineering and Computer Science and Control
Dizin: Bilgisayar yazılımları = Computer softwares

Özet:
Yazılım hata tahmini, yoğun çaba gerektiren ve yazılım geliştirme maliyetlerini azaltmaya odaklanmış metotların geliştirildiği işlemleri içerir. Veri analizleri için istatistiksel ve makine öğrenmesi metotlarının sıklıkla kullanıldığı bu işlemler hata veri setlerindeki bozukluk veya eksikliklerden kaynaklanan yanlış sonuçları üretebilmektedir. Bunlara ek olarak sınıf dengesizliği (class imbalance) olarak adlandırılan hatalı verilerin sistemin belirli bölgelerinde yoğunlaşmasından kaynaklanan sorunlar da ortaya çıkmaktadır. Tahmin edici modellerin doğruluklarını arttırabilmek için hata veri setlerinin bir ön işlemeden geçmesi gereklidir. Ancak bu şekilde güvenilir veriler üzerinde çalışılabilir. SMOTE, rastgele örnekleme gibi yöntemlerle hata veri setleri üzerinde işlem yapılmaktadır. Bununla beraber hata veri setlerine yönelik özel bir örnekleme tekniği bulunmamaktadır.

Tezin amacı büyük veri setlerinde hızlı çalışabilen ve tekrar eden verileri yüksek doğrulukla tespit edebilen bir ön-işleme algoritması geliştirmektir. Algoritma,  metrik türetimi ile ilgili işlemleri kapsar. Bir diğer amaç ise algoritmanın makine öğrenmesi alanında kullanılabilecek hata veri setlerine yönelik özel bir yöntem geliştirmektir. Deney sonuçlarında gözlenen kesinlik değerleri literartüdeki diğer ön-işleme yöntemlerinden üstün olduğu takdirde makine öğrenmesi ikili sınıflandırma veri setlerinde de kullanılabilir. Hata kesinliği yöntemle birlikte arttığı için yazılım geliştirme maliyetlerinin azaltılmasına katkı sağlamaktadır. Veri madenciliği verilerinin temizlenmesi için geliştirilecek yöntemlere algoritmanın yön vermesi beklenmektedir. Yöntem, ANOVA, t-test, ki-kare gibi istatistik tabanlı metotlar kullanarak ikili sınıflandırma verilerinde tekrar eden verilerin ortadan kaldırılmasını sağlayan bir veri temizleme algoritmasını kapsar. Buna ek olarak düşük seviyeli metrik türetiminin öğrenme algoritmalarının başarısına etkisi gözlemlenmiştir. 

Kullanılan makine öğrenmesi yöntemleri ve istatistiksel işlemler ile önerilen ön-işleme algoritmasını da içeren bir yazılım çerçevesi C# programlama dili kullanılarak geliştirilmiştir. Bu çerçeve çeşitli formattaki hata veri setleri üzerinde ikili sınıflandırma performans analizlerini ve temel istatistiksel işlemleri de yapabilmektedir. Önerilen yöntem 15 endüstriyel ve 5 açık kaynak olmak üzere toplamda 20 adet yazılım proje veri seti üzerinde denenmiş eğrinin altında kalan alan (auc) ve kesinlik (precision) performans parametrelerinde algoritmanın etkisi dört farklı sınılandırıcı kullanılarak ölçülmüştür. Geliştirilen algoritma hata veri setlerinde tekrar eden veri setlerinin elenmesine yönelik geliştirilen ilk algoritmadır.

Anahtar kelimeler: Hata tahmini, yazılım metrikleri, yazılım kalitesi, makine öğrenmesi

Abstract:
Defect prediction includes processes which develop methods that are required intensive effort and focused on reducing software costs. These processes, which use statistical or machine learning based techniques, may produce misleading results caused by skewness or deficiencies in defect data sets. In addition, a particular issue namely class imbalance is that reveals because of the wrong distribution of defects which are more in a part of the system than the other parts. In order to increase the accuracy of the predictors, defect data sets should be exposed to preprocessing. Merely this way provides a reliable investigation on right data. Some preprocessing methods such as SMOTE and random sampling help practitioners to obtain balanced data. However, there is not any special technique for defect prediction data sets.

The aim of this thesis is to develop a preprocessing algorithm which fast and gives high precision along with large-scale data especially in defect prediction data sets. The algorithm comprises the processes which are related to the deriving low level metrics. Another aim is to make this algorithm more suitable for other machine learning data sets. . If experimental results are more suitable than other preprocessing methods in literature, the method could be used in other binary classification data sets. Due to the increase of the precision in results, software development cost decreases remarkably by this way. The method is expected to led new alternate data mining cleansing methods. If proposed method is applied in industry, it helps to reduce the cost of testing process that accounts for roughly 50 percent of development process. The method comprises the cleansing algorithm using statistical methods such as ANOVA, t-test, chi-square in which the removing process is preceeded. Further, the effects of the deriving low level metrics in the success of learning algorithms were observed.

A new framework including machine learning methods and statistical techniques is proposed in which developed using C# programming language. This framework is able to employ various data sets having different formats. Besides, proposed framework provides analyzing binary classification data and makes base statistical operation. The method was applied on 20 data sets including five open source and AUC and precision performance parameters. The algorithm, to the best of our knowledge, is first hybrid preprocessing method for defect prediction data sets.

Keywords: Defect prediction, Software Metrics, Software Quality, Machine Learning.