Λογότυπο αποθετηρίου
 

Μηχανική μάθηση και μεγάλα γλωσσικά μοντέλα στην επιδιόρθωση και αναδόμηση λογισμικού

Μικρογραφία εικόνας

Ημερομηνία

2026-01-30

Τίτλος Εφημερίδας

Περιοδικό ISSN

Τίτλος τόμου

Εκδότης

Επιβλέπων / ουσα

Διαθέσιμο από

Περίληψη

Η ανάπτυξη λογισμικού υψηλής ποιότητας, συχνά απαιτεί επενδύσεις αυξημένου κόστους στη συντήρηση αυτού. Ο εντοπισμός και διόρθωση των σφαλμάτων και των ευπαθειών ασφαλείας, όπως και η αφαίρεση προβληματικών patterns από μία βάση κώδικα, γίνονται κυρίως με χειροκίνητο τρόπο, από ειδικούς ή με μια αυτοματοποίηση που βασίζεται σε προαποφασισμένους κανόνες και επομένως έχει περιορισμούς στην αποτελεσματικότητά της. Η άνοδος της βαθιάς μάθησης και των νέων αρχιτεκτονικών στα νευρωνικά δίκτυα, με αποκορύφωμα τα μεγάλα γλωσσικά μοντέλα, άνοιξε το δρόμο για μια αυτοματοποιημένη αντιμετώπιση των παραπάνω, βασισμένη στην αναγνώριση των προβληματικών χαρακτηριστικών, έπειτα από εκπαίδευση ενός μοντέλου σε σχετικά δεδομένα. Η τεχνική αυτή δίνει μια εναλλακτική λύση με υψηλή ευελιξία στην αντιμετώπιση προβλημάτων, που μπορεί να συνδυαστεί με τις υπάρχουσες λύσεις. Η παρούσα διπλωματική εργασία αποτελεί μια βιβλιογραφική ανασκόπηση από δημοφιλείς ερευνητικές εργασίες των πρόσφατων ετών, που είχαν ως θέμα την χρήση νευρωνικών δικτύων για τις τρεις προαναφερθείσες κατηγορίες, δηλαδή διόρθωση σφαλμάτων (bug fixing), εντοπισμό και διόρθωση ευπαθειών (vulnerabilities) και εντοπισμός και αναδόμηση (refactoring) πηγαίου κώδικα που περιέχει code smells. Στο κείμενο αναλύονται οι μεθοδολογίες, οι καινοτομίες και οι αρχιτεκτονικές, που έφεραν τα καλύτερα αποτελέσματα, για την κάθε κατηγορία προβλήματος, τόσο σε συνθετικά σετ δεδομένων, όσο και σε case-studies σε πραγματικά πρότζεκτ. Στη διεθνή βιβλιογραφία παρουσιάστηκαν πολλές ενδιαφέρουσες ιδέες. Από μεθόδους που βασίστηκαν σε μηχανική μετάφραση από προβληματικό (buggy) σε διορθωμένο (fixed) κώδικα, μέχρι την χρήση διαφορετικών μεγάλων γλωσσικών μοντέλων, παρατηρήθηκε μια πρώτη ικανότητα αυτόματης επίλυσης των απλούστερων σφαλμάτων, αλλά χαμηλή επιτυχία στα πιο σύνθετα σφάλματα. Στο κομμάτι της ασφάλειας παρουσιάστηκαν υποσχόμενα αποτελέσματα στον εντοπισμό ευπαθειών, ενώ η αναδόμηση κώδικα για την αυτόματη επιδιόρθωση αυτών, είχε περιορισμένη επιτυχία, με τα διαφορετικά CWE να παρουσιάζουν διαφορετικούς βαθμούς δυσκολίας στην επισκευή τους. Τέλος, τα νευρωνικά δίκτυα, παρουσίασαν υποσχόμενα αποτελέσματα στον εντοπισμό των code smells, κυρίως σε επίπεδο μεθόδου, με τα εργαλεία βαθιάς μάθησης να ξεπερνούν σε απόδοση δημοφιλή στατικά εργαλεία.
The development of high-quality software often requires increased investments in its maintenance stage. The detection and correction of bugs and security vulnerabilities, as well as the removal of problematic patterns from the codebase, are mainly manual task, performed by experts or by simpler automations that are based on predetermined rules and therefore have limitations. The rise of deep learning and of new architectures in neural networks, leading to the appearance large language models (LLM), paved the way for new automation options to resolve the issue above, based on the recognition of problematic features, after training a model on relevant data. This alternative approach provides high flexibility in troubleshooting, and can be combined with existing solutions, for better results. This thesis is a literature review on popular research papers, from recent years, which studied the use of neural networks in the three aforementioned categories, i.e. bug fixing, vulnerability detection and correction, as well as identification and refactoring of source code containing code smells. The methodologies, innovations and architectures that brought the best results, for each category, both in synthetic datasets and in case-studies in real projects, are presented. Overall in the international literature, many interesting ideas have been presented. Starting from methods based on machine translation, from problematic to corrected code, all the way to the use of different large language models, the ability to automatically solve the simplest kinds of software errors was observed, with the correction of more complex errors, to be however less successful. In the domain of software security, promising results were showcased in the detection of different types of vulnerabilities, while the refactoring of the source code to automatically fix them had very limited success, with the different CWEs showing varying degrees of difficulty in their refactoring. Finally, neural networks presented promising results in detecting code smells, mainly at the method level, with deep learning tools surpassing many popular static tools in performance.

Περιγραφή

Λέξεις-κλειδιά

Literature review, Machine learning, Software repair, Software refactoring, Βιβλιογραφική ανασκόπηση, Μηχανική μάθηση, Επιδιόρθωση λογισμικού, Αναδόμηση λογισμικού

Παραπομπή