Kod kusurlarının tespitinde makine öğrenmesi tekniklerinin kullanılması ve karşılaştırmalı performans analizi
Application and comparative performance analysis of machine learning techniques for code smell detection
- Tez No: 944667
- Danışmanlar: PROF. DR. OYA KALIPSIZ
- Tez Türü: Yüksek Lisans
- Konular: Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Computer Engineering and Computer Science and Control
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 2025
- Dil: Türkçe
- Üniversite: Yıldız Teknik Üniversitesi
- Enstitü: Fen Bilimleri Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Bilgisayar Mühendisliği Bilim Dalı
- Sayfa Sayısı: 70
Özet
Kod kusurları, yazılım geliştirme sürecinde dikkatsizlik, yanlış mantık, programlama dili karmaşıklığı, yazılım ekibi içerisinde iletişim eksikliği, zaman baskısı, yetersiz bilgi ve deneyim etkenleri sebebiyle, yazılım kodunda bakımı ve anlaşılırlığı zorlaştıran hatalı yaklaşımlardır. Yazılımın beklenen işlevselliğini engellemekte, istenmeyen sonuçlara yol açabilmektedirler. Kusurlu kod parçaları, yazılım projesinin teknik borcuna olumsuz katkıda bulunmaktadırlar. Kod kusurlarının tespitinde manuel, kural tabanlı, şablon ve görselleştirme tabanlı olmak üzere birbirinden farklı yaklaşımlar izlenmektedir. Kod kusurlarının tespitinde makine öğrenmesi tekniklerinden yararlanılması ise, özellikle son yıllarda literatürde üzerine çok sayıda çalışma gerçekleştirilmiş bir yöntemdir. Makine öğrenmesi ile tespit; kural tabanlı yaklaşımlarda gerçekleştirilen eşik değer belirlenmesinin öznelliğinden ve veri dağılımından kaynaklanan olumsuzluklardan etkilenmemektedir. Literatürde bulunan makine öğrenmesi ile tespit çalışmalarının çoğunda model eğitimi amacıyla kullanılan veri seti, Java programlama dilinde yazılan projelerdeki sınıf ve nesne örneklerinden oluşmaktadır. Literatürde C++ programlama dilinde yazılan projelerden oluşturulan veri seti üzerinde makine öğrenmesi yöntemleri ile kod kusurlarının tespitine yönelik bir çalışma bulunmaması, tez çalışmasının özgün değerini oluşturmaktadır. Tez çalışmasının amacı, C++ kodundaki kusurların, makine öğrenmesi yöntemleriyle etkili bir şekilde tespit edilebileceğini kanıtlamaktır. Bu kapsamda, C++ programlama dilinde yazılmış projelerden kusurlu ve kusursuz sınıf örnekleri ile bu sınıf örneklerine ait çeşitli nesneye dayalı kod metrikleri, bir C++ statik kod analiz aracı kullanılarak elde edilmiştir. Elde edilen verilerle etiketli bir veri seti oluşturulmuş ve bu veri seti üzerinde çeşitli makine öğrenmesi algoritmaları kullanılarak modeller eğitilmiştir. Son olarak, birden fazla makine öğrenmesi modelinin tahmin performansları çeşitli tahmin performans ölçütleri referans alınarak hesaplanmış ve karşılaştırılmıştır.
Özet (Çeviri)
Code smells are faulty approaches in software development that make maintenance and readability difficult, resulting from factors such as carelessness, incorrect logic, complexity of programming languages, lack of communication within the software team, time pressure, insufficient knowledge and experience. These smells can hinder the expected functionality of the software and lead to undesired outcomes. Faulty code fragments contribute negatively to the technical debt of a software project. In detecting code smells, various approaches such as manual, rule-based, template-based, and visualization-based methods are employed. The use of machine learning techniques for smell detection has been a method extensively studied in the literature, particularly in recent years. Machine learning-based detection is not influenced by the subjectivity of threshold determination or negative effects stemming from data distribution, which are common in rule-based approaches. In most of the machine learning-based smell detection studies found in the literature, the dataset used for model training consists of class and object examples from projects written in the Java programming language. The lack of a study on detecting code smells using machine learning methods on datasets created from projects written in the C++ programming language is what provides uniqueness to this thesis work. Aim of the thesis is to demonstrate that code smells in C++ code can be effectively detected using machine learning methods. In this scope, smelly and non-smelly class examples from projects written in the C++ programming language, along with various object-oriented code metrics of these class examples are obtained using a C++ static code analysis tool. From the obtained data, a labeled dataset is created, and models are trained on this dataset using various machine learning algorithms. Prediction performances of multiple machine learning models are calculated and compared based on various prediction performance metrics.
Benzer Tezler
- Oto-kodlayıcı mimarisi kullanarak mermer yüzey anomali tespiti
Marble surface anomaly detection using autoencoder architecture
MUHAMMAD YAHYA ABDULLAH
Yüksek Lisans
Türkçe
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolSakarya ÜniversitesiBilgisayar ve Bilişim Mühendisliği Ana Bilim Dalı
PROF. DR. CEMİL ÖZ
- Yazılım hata kestirim yaklaşımları
Software defect prediction approaches
ÖZKAN SARI
Yüksek Lisans
Türkçe
2015
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolYıldız Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
PROF. DR. OYA KALIPSIZ
- Geçici koruma kapsamındaki Suriyeli bireyler üzerine bir inceleme: Avcılar örneği
A study on Syrian individuals under temporary protection in Turkey: The case of Avcılar
GÜLDER KORKMAZ
Yüksek Lisans
Türkçe
2022
Sosyal HizmetÜsküdar ÜniversitesiSosyal Hizmet Ana Bilim Dalı
DR. ÖĞR. ÜYESİ ZÜLFİKAR ÖZKAN
- Impact of code review process smells on code smells
Kod gözden geçirme sürecindeki kötü uygulamaların kod kusurları üzerindeki etkisi
ERDEM TUNA
Yüksek Lisans
İngilizce
2023
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİhsan Doğramacı Bilkent ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ ERAY TÜZÜN
- Yazılım ölçütleri üzerinden beyin metot ve beyin sınıf kod kusurlarının tespiti
Detection of brain method and brain class code smells through software metrics
DENİZ NACAR
Yüksek Lisans
Türkçe
2019
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolYıldız Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ YUNUS EMRE SELÇUK