Derin öğrenme teknikleriyle yazılım kod kalitesi analiz ve iyileştirme öneri sistemi geliştirilmesi
Development of software code quality analysis and improvement suggestion system with deep learning techniques
- Tez No: 664661
- Danışmanlar: DR. ÖĞR. ÜYESİ ALİ NİZAM
- 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: 2021
- Dil: Türkçe
- Üniversite: Fatih Sultan Mehmet Vakıf Üniversitesi
- Enstitü: Lisansüstü Eğitim Enstitüsü
- Ana Bilim Dalı: Bilgisayar Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Bilgisayar Mühendisliği Bilim Dalı
- Sayfa Sayısı: 67
Özet
Bu tez çalışmasının amacı, kaynak koddaki değişimleri ve sebeplerini gösteren bir veriseti oluşturarak bu değişiklikleri türlerine göre analiz eden ve iyileştirme gereken noktaları öğrenebilen bir derin öğrenme sistem tasarımının yapılmasıdır. Açık-kaynak projelerindeki artış, kaynak kodların dağıtık paylaşımı, topluluk tarafından geliştirilmesi ve gelişmenin git versiyon kontrol sistemi teknolojisiyle takip edilebilmesi büyük bir verinin ortaya çıkmasına yardımcı olmuştur. Projelerdeki gelişim kaynak kodlarının farklı evreden geçmesiyle olur. Başlangıç halindeki kodun gelişim türü bir hata çözümü(bugfix), performans iyileştirmesi, yeni bir özelliğin eklenmesi veya birden fazla gelişim özelliğini içeren şekillerde olabilir. Literatürdeki güncel yaklaşımlar kaynak kodu temsil ederken metot olarak odaklanmaktadır. Metot yaklaşımıyla vektörleştirme ve tahminleme yapılan çalışmalar ve kod klonlanması tespiti üzerinedir. Yapılan bu çalışmalarda sınıf bütünlüğü yerine daha alt parçalar üzerine yoğunlaşıldığından sınıf kavramında büyük bir boşluk oluşmaktadır. Sınıf bazında temsil edilen kaynak kod bir bütünlüğü temsil edeceğinden indeksleme kullanılarak soyut alt sözdizimi ağaçlarıyla bir bütünlük elde edilerek yeni bir model yapısı ortaya konmuştur. Derin öğrenme ağı olarak yinelemeli sinir ağından uzun kısa süreli hafıza ve kapalı yinelemeli üniteler kullanılmıştır. Gerçekleştirilen çalışma, bu zamana kadar olmayan kaynak kodla etiketli olarak üretilen bir veriseti ortaya çıkarmıştır. Veriseti için ek bir program yazılmıştır. Bu program git geçmişini kullanılarak bir açık-kaynak projesi olarak seçilmiş olan ElasticSearch'den kaynak kodları ve kaynak kodların zaman içerisinde gelişimlerini ve etiketlerini elde ederek düzenler. 2300 kaynak koddan oluşan verisetinde etiketleme tamamen açık-kaynak projesi olan ElasticSearch'teki kodun ilk halinden gelişerek ilerlemesindeki süreçte geliştiriciler tarafından atanan etiketler göz önüne alınarak oluşturulmuştur. Sonuçlar elde edilmesi için derin öğrenme ağında eğitim-doğrulama-test olarak sırasıyla %60, %20 ve %20 olarak bölünmüş ve sistemde test sonuçları 10 kere tekrar edilerek ortalaması alınmıştır. Uygulanan sistem %84,7 doğruluk oranı sağlamıştır. Sistemdeki sınıf yapısı, tamamen soyut alt sözdizimi ağaç yapısıyla indekslenerek temsil edilebilmiş ve vektörleştirme gerçekleştirmesiyle kaynak kodda ne tür bir geliştirme yapıldığı derin öğrenme ağıyla tespit edilmesine olanak tanımıştır.
Özet (Çeviri)
The aim of this thesis is to create dataset storing the changes by type, analyzing the change types on source code and providing source code enhancement by designing and implementing a learnable deep learning system. Increment on open-source projects, distributed sharing, development by community, and tracking improvement with git version control system of source codes have backed up to reveal huge data. Progress on projects occurs with passing many different stages in time. Progress type of source code at initial state can be bugfix, performance enhancement, feature or more than one improvement. Recent studies in literature have focused on representing source code in terms of methods. The studies are about vectorization and predicting of methods' name and clone detection of methods. These studies make a big gap concentrating on subparts rather than integrity of class. Other gap is lack of dataset that comprises of improvement or refactoring of source code. Represented source code declaring the aggregateness as class reveals a new model that obtaines integrity using index-based abstract subsyntax trees. Recurrent neural network having variations of long-short term memory and gated recurrent unit is used. Implemented study finds out dataset that is labeled with the corresponding source code and has not been generated up to now. An additional program has been designed for dataset. Program using git history prepares dataset in which ElasticSearch as open-source project is selected to use representing the source codes and retrieves progress of them and their related labels in time. 2300 source codes have been used in this study. Labeling is purely assigned by getting developer's declarations in git commits of open source project of ElasticSearch. For the purpose of obtaining the result, the deep learning network is divided into train-validation-test with the values of 60%, 20% and 20%, respectively and test results retrying 10 times of the process have been averaged. Implemented system provides average accuracy rate of 84.7%. Class structure definitively is represented as indexed abstract subsyntax trees and generating vectorized of trees makes possible correctly learning of what kind of development type in the source code practised.
Benzer Tezler
- Derin öğrenme ile modülasyon sınıflandırması
Modulation classification with deep learning
SELÇUK BALSÜZEN
Yüksek Lisans
Türkçe
2021
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiElektronik ve Haberleşme Mühendisliği Ana Bilim Dalı
PROF. DR. MESUT KARTAL
- Ön eğitimli dil modellerinin kokan kod sınıflama performansının üçlü kayıp yöntemiyle iyileştirilmesi
Optimizing the code smell classification performance of pretrained language models using the triple loss method
ERTUĞRUL İSLAMOĞLU
Yüksek Lisans
Türkçe
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolFatih Sultan Mehmet Vakıf ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ ALİ NİZAM
- Androıd kötücül yazılımlarından koruma sistemlerinin değerlendirilmesi ve görüntü işleme algoritmalarını yapay zekâ teknikleri ile melezleştirerek yeni bir algılama yaklaşımının geliştirilmesi
Evaluating the robustness of android anti-malware systems and developing a novel detection approach based on hybridizing image processing algorithms with artificial intelligence techniques
HALİT BAKIR
Doktora
Türkçe
2021
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKırıkkale ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DOÇ. DR. HALİL MURAT ÜNVER
- Multi-scale recursive context aggregation network for semantic segmentation
Anlamsal bölümleme için çok ölçekli özyinelemeli bağlam birleştirme ağı
ABDULLAH YALÇIN
Yüksek Lisans
İngilizce
2024
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrolİstanbul Teknik ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
PROF. DR. MEHMET KESKİNÖZ
- Hybrid malware detection and classification in real-time by deep learning techniques
Derin öğrenme teknikleriyle hibrit zararlı yazılım tespiti ve gerçek zamanlı sınıflandırma
HUSSEIN SADRALDEEN HUSSEIN AL-MUSAWI
Yüksek Lisans
İngilizce
2022
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve KontrolKarabük ÜniversitesiBilgisayar Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ ADNAN SAHER MOHAMMED AL-AJEELI