SlideShare a Scribd company logo
1 of 21
Download to read offline
Διπλωματική Εργασία
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της
Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
ΑΕΜ: 8826
Επιβλέποντες
Ανδρέας Συμεωνίδης, Καθηγητής ΑΠΘ
Θωμάς Καρανικιώτης, Υποψήφιος Διδάκτωρ ΑΠΘ
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορίας & Τεχνολογίας Λογισμικού (ISSEL)
Περιεχόμενα
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Κίνητρο - Ορισμός
Προβλήματος
1 2 3 4
Παρουσίαση Πειραμάτων
Παρουσίαση Μεθοδολογίας -
Αντιμετώπιση Προβλήματος
Τελικά Αποτελέσματα -
Παρουσίαση Αποτελεσμάτων
Εισαγωγή Μεθοδολογικό
Πλαίσιο
Πειράματα Αποτελέσματα -
Συμπεράσματα
2
1.
Αυτοματοποίηση και επιτάχυνση της διαδικασίας ανάπτυξης
λογισμικού
Κίνητρο
2.
Εύκολη πρόσβαση και αξιοποίηση δεδομένων πηγαίου
κώδικα (π.χ.GitHub)
3.
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
3
Μείωση χρόνου συντήρησης μέσω βελτίωσης της
αναγνωσιμότητας των αρχείων κώδικα του έργου
λογισμικού
4.
80% του συνολικού χρόνου ζωής ενός έργου λογισμικού
αφιερώνεται στη συντήρηση του
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
4
Υλοποίηση αυτοματοποιημένου συστήματος εντοπισμού και διόρθωσης
σφαλμάτων μορφοποίησης
Ορισμός Προβλήματος
Δημιουργία ενός μηχανισμού αξιολόγησης της μορφοποίησης ενός αρχείου
πηγαίου κώδικα
Βελτίωση
Μορφοποίησης
Ταχύτερη
Κατανόηση
Ταχύτερη &
Ποιοτικότερη
Συντήρηση
Βελτίωση
Αναγνωσιμότητας
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Step 2
Εντοπισμός
σφαλμάτων με
χρήση δικτύου
LSTM
Step 1
Προεπεξεργασία
αρχείου πηγαίου
κώδικα
Step 3 Step 4
Διόρθωση
σφαλμάτων
μορφοποίησης
Step 5
Παροχή
προτάσεων
διόρθωσης με
καλύτερη
αξιολόγηση
μορφοποίησης
Μεθοδολογικό πλαίσιο
5
Αξιολόγηση
μορφοποίησης σε
επίπεδο αρχείου
και token.
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Dataset
Tokenization Vectorization
TokenScore
FileScore
LSTM
10-gram
ErrorDetection
Errorpositions
DataPreprocessing ErrorFixing
FixedFile
Αρχιτεκτονική Συστήματος
6
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
7
Προεπεξεργασία Δεδομένων
float y = 1.5
<lit> <space> <word> <space> <equal> <number> <semicolon>
2 1 5 1 8 10 6
T
o
k
e
n
i
z
a
tion
V
e
c
t
o
r
i
z
a
tion
Tokenization: μετατροπή και διάσπαση του αρχείου κώδικα σε επιμέρους, διακριτές οντότητες (tokens)
Vectorization: αντιστοιχία κάθε οντότητας(token) με ένα ακέραιο αριθμό
Δύο βασικά στάδια προεπεξεργασίας ενός αρχείου κώδικα που παρέχεται ως είσοδος:
;
Υποσύστημα Αξιολόγησης
Μορφοποίησης
Αξιοποίηση της έννοιας της διασταυρούμενης εντροπίας (cross-entropy) ως μέτρο του βαθμού "έκπληξης"
του μοντέλου N-gram (όταν του παρέχεται ως είσοδος μια αλληλουχία οντοτήτων (tokens) t0,t1,…, tM)
Υλοποίηση στηρίχθηκε στα στατιστικά μοντέλα γλώσσας N-gram τα οποία έχουν την ικανότητα να
αναθέτουν υψηλότερες πιθανότητες εμφάνισης σε αλληλουχίες οντοτήτων (tokens) που συναντώνται
συχνότερα στο σύνολο εκπαίδευσης τους
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
1.
Ποσοτικοποίηση της αφαιρετικής έννοιας της μορφοποίησης πηγαίου κώδικα
2.
3.
8
Υποσύστημα Αξιολόγησης της
Μορφοποίησης (2)
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
4.
αξιολόγηση αρχείου πηγαίου κώδικα συνολικά (source code level)
αξιολόγηση του κάθε token που απαρτίζει το αρχείο πηγαίου κώδικα (token level)
Το υποσύστημα αξιολόγησης ενεργεί σε δύο διαφορετικά επίπεδα λειτουργίας:
5.
Διάσπαση του αρχείου πηγαίου κώδικα σε διαδοχικά επιμέρους παράθυρα μήκους 20 tokens
Υπολογισμός της διασταυρούμενης εντροπίας για κάθε παράθυρο
Για κάθε token, εντοπίζεται το σύνολο των παραθύρων στα οποία ανήκει
Ο βαθμός αξιολόγησης του εκάστοτε token υπολογίζεται ως έξης:
9
Aξιολόγηση σε επίπεδο token:
Υποσύστημα Εντοπισμού Σφαλμάτων
Μορφοποίησης
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Tokenization Vectorization
DataPreprocessing LSTM
[1,4,6,10,35...]
ErrorProbability
Modification
10-gram
DetectedError
Positions
Παροχή αρχείου
πηγαίου κώδικα ως
είσοδος
Προεπεξεργασία
Αρχείου Πηγαίου
Κώδικα
Αναπαράσταση
αρχείου πηγαίου
κώδικα ως αλληλουχία
ακεραιών αριθμών
Διάσπαση αλληλουχίας σε παράθυρα
20-tokens τα οποία τροφοδούνται
διαδοχικά στο δίκτυο LSTM
Τροποποίηση των
πιθανοτήτων σφάλματος
του δικτύου LSTM με βάση
την αξιολόγηση του
εκάστοτε token η οποία
προέκυψε από το
υποσύστημα αξιολόγησης
Ως έξοδοι παρέχονται οι M
θέσεις των token με τις
υψηλότερες πιθανότητες
εμφάνισης σφάλματος
10
Υποσύστημα Διόρθωσης Σφαλμάτων
Μορφοποίησης
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
1.
Τις θέσεις των Μ tokens με την υψηλότερη πιθανότητα εμφάνισης σφαλμάτων μορφοποίησης σύμφωνα με το υποσύστημα
εντοπισμού
Το σύνολο των tokens που αποτελούν τις πιθανότερες αντικαταστάσεις ή προσθήκες για το εκάστοτε πιθανό σφάλμα
μορφοποίησης
Λαμβάνει δύο εισόδους:
2.
Πραγματοποιεί τρεις διαφορετικές προσεγγίσεις διόρθωσης του σφάλματος μορφοποίησης:
3.
Έλεγχος συντακτικής ορθότητας των νέων διορθωμένων αρχείων κώδικα
Ως έξοδοι του συστήματος παρέχονται τα αρχεία κώδικα με καλύτερο σκορ αξιολόγησης σε σχέση με το αρχικό
11
Ολική διαγραφή του token που αντιστοιχεί στη θέση σφάλματος
Αντικατάσταση του token που αντιστοιχεί στη θέση σφάλματος
Προσθήκη νέου token πριν το token της πιθανής θέσης σφάλματος
1.
Εκπαίδευση των μοντέλων του συστήματος με χρήση
8.500 αρχείων Java από 10.000 αποθετήρια του GitHub
με συγκεκριμένα, ευρέως διαδεδομένα πρότυπα
μορφοποίησης
Πειράματα & Αποτελέσματα
2.
3.
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
12
Αξιολόγηση της απόδοσης του συστήματος με βάση
8.000 αρχεία κώδικα Java από τον διαγωνισμό CodRep
2019, κάθε ένα από τα οποία περιέχει αποκλειστικά ένα
σφάλμα μορφοποίησης
Αναλογία συνόλου εκπαίδευσης - ελέγχου για
εκπαίδευση δικτύου LSTM: 80/20
Αναλογία συνόλου εκπαίδευσης - ελέγχου για
εκπαίδευση μοντέλου γλώσσας N-gram: 90/10
4.
Αξιοποίηση 1.000 αρχείων εξ αυτών για την
αξιολόγηση του υποσυστήματος εντοπισμού
Αξιοποίηση 100 αρχείων εξ αυτών για την αξιολόγηση
του υποσυστήματος διόρθωσης
Αξιολόγηση Υποσυστήματος Εντοπισμού
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
13
Αξιολόγηση Υποσυστήματος Διόρθωσης
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
14
Αξιολόγηση Υποσυστήματος Διόρθωσης (2)
Πριν
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Μετά
Ολική διαγραφή token
15
Αξιολόγηση Υποσυστήματος Διόρθωσης (3)
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Προσθήκη νέου token
Πριν Μετά
16
Αξιολόγηση Διόρθωσης Πολλαπλών
Σφαλμάτων Μορφοποίησης
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
17
1.
Αξιολόγηση του συστήματος σε περιπτώσεις αρχείων με
2 σφάλματα μορφοποίησης - 20 αρχεία
2.
Διαδοχικοί κύκλοι διόρθωσης τροφοδοτώντας το αρχείο
με την καλύτερη αξιολόγηση, του προηγουμένου κύκλου.
Μετά από 2 κύκλους, ελέγχεται αν το τελικό αρχείο
περιέχει τις επιθυμητές διορθώσεις
3.
Επιστροφή διορθωμένων αρχείων σε όλες τις
περιπτώσεις του πειράματος
Συμπεράσματα
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
1
2
3
Συνολικό σύστημα εντοπισμού και διόρθωσης σφαλμάτων
μορφοποίησης το οποίο δύναται να προσαρμοστεί σε διαφορετικά
πρότυπα χωρίς όγκο παραμετροποιήσεων
Ικανότητα τόσο των βαθιών νευρωνικών δικτύων τύπου LSTM όσο και
των μοντέλων γλώσσας Ν-gram να αποτυπώσουν τις στατιστικές
ιδιότητες αρχείων πηγαίου κώδικα
Εξαιρετική απόδοση του συνολικού συστήματος τόσο στον εντοπισμό
των σφαλμάτων μορφοποίησης όσο και στην διόρθωσή τους
18
Μελλοντική Εργασία
1
2
3
4
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
Εύρεση αυτοματοποιημένης μεθόδου αξιολόγησης του υποσυστήματος διόρθωσης σφαλμάτων
μορφοποίησης με στόχο την αξιολόγησή του σε μεγαλύτερο όγκο δεδομένων
Περαιτέρω αξιολόγηση του συστήματος σε διαφορετικές γλώσσες προγραμματισμού
Χρήση και αξιολόγηση διαφορετικών αρχιτεκτονικών βαθιών νευρωνικών δικτύων
εκτός από τα LSTM
Εκπαίδευση και αξιολόγηση του συστήματος σε διαφορετικά πρότυπα
μορφοποίησης με διαφορετικά χαρακτηριστικά
19
Σας ευχαριστώ για την προσοχή σας!
Ερωτήσεις?
Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα
Θωμάς Κανούτας
7
Συλλογή Δεδομένων
1.
2.
3.
Aρχεία κώδικα σε γλώσσα Java από 10.000 διαφορετικά αποθετήρια
κώδικα στο GitHub
Φιλτράρισμα με χρήση regex και τελική επιλογή 8.500 αρχείων τα
οποία υπακούν σε συγκεκριμένα και ευρέως αποδεκτά πρότυπα
μορφοποίησης
8500 αρχεία Java αποτελούν το σύνολο εκπαίδευσης για τα μοντέλα
του συνολικού συστήματος
Παράδειγμαregex
ΤμήμαΚώδικα

More Related Content

Similar to ThesisPresentation

Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationISSEL
 
Ioannis Loias
Ioannis LoiasIoannis Loias
Ioannis LoiasISSEL
 
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...ISSEL
 
Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...ISSEL
 
Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...Manos Tsardoulias
 
Χατζηελευθερίου Ειρήνη
Χατζηελευθερίου ΕιρήνηΧατζηελευθερίου Ειρήνη
Χατζηελευθερίου ΕιρήνηISSEL
 
A rule-based approach for the real-time semantic annotation in context-aware ...
A rule-based approach for the real-time semantic annotation in context-aware ...A rule-based approach for the real-time semantic annotation in context-aware ...
A rule-based approach for the real-time semantic annotation in context-aware ...Nikolaos Konstantinou
 
Bagia Rousopoulou
Bagia RousopoulouBagia Rousopoulou
Bagia RousopoulouISSEL
 
Νίνα Ελευθεριάδου
Νίνα ΕλευθεριάδουΝίνα Ελευθεριάδου
Νίνα ΕλευθεριάδουISSEL
 
Ελευθεριάδου
ΕλευθεριάδουΕλευθεριάδου
ΕλευθεριάδουISSEL
 
Γεροκώστα
ΓεροκώσταΓεροκώστα
ΓεροκώσταISSEL
 
System Development for Prediction of Static Analysis Metrics of Source Code
System Development for Prediction of Static Analysis Metrics of Source CodeSystem Development for Prediction of Static Analysis Metrics of Source Code
System Development for Prediction of Static Analysis Metrics of Source CodeISSEL
 
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...ISSEL
 
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...ISSEL
 
Keyword-based software library recommendation in order to bootstrap software ...
Keyword-based software library recommendation in order to bootstrap software ...Keyword-based software library recommendation in order to bootstrap software ...
Keyword-based software library recommendation in order to bootstrap software ...ISSEL
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...ISSEL
 
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...ISSEL
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...ISSEL
 
Χαρίτων Καραμήτας 5755
Χαρίτων Καραμήτας 5755Χαρίτων Καραμήτας 5755
Χαρίτων Καραμήτας 5755ISSEL
 
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...Manos Tsardoulias
 

Similar to ThesisPresentation (20)

Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
 
Ioannis Loias
Ioannis LoiasIoannis Loias
Ioannis Loias
 
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου...
 
Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...Design and Implementation of a Mechanism that automates the generation of Sof...
Design and Implementation of a Mechanism that automates the generation of Sof...
 
Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...
 
Χατζηελευθερίου Ειρήνη
Χατζηελευθερίου ΕιρήνηΧατζηελευθερίου Ειρήνη
Χατζηελευθερίου Ειρήνη
 
A rule-based approach for the real-time semantic annotation in context-aware ...
A rule-based approach for the real-time semantic annotation in context-aware ...A rule-based approach for the real-time semantic annotation in context-aware ...
A rule-based approach for the real-time semantic annotation in context-aware ...
 
Bagia Rousopoulou
Bagia RousopoulouBagia Rousopoulou
Bagia Rousopoulou
 
Νίνα Ελευθεριάδου
Νίνα ΕλευθεριάδουΝίνα Ελευθεριάδου
Νίνα Ελευθεριάδου
 
Ελευθεριάδου
ΕλευθεριάδουΕλευθεριάδου
Ελευθεριάδου
 
Γεροκώστα
ΓεροκώσταΓεροκώστα
Γεροκώστα
 
System Development for Prediction of Static Analysis Metrics of Source Code
System Development for Prediction of Static Analysis Metrics of Source CodeSystem Development for Prediction of Static Analysis Metrics of Source Code
System Development for Prediction of Static Analysis Metrics of Source Code
 
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
Ανάπτυξη συστήματος πρόβλεψης της εξέλιξης των μετρικών στατικής ανάλυσης πηγ...
 
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...
Πρόταση Βιβλιοθηκών Σχετικών με Λέξεις-Κλειδιά για Εκκίνηση της Διαδικασίας Α...
 
Keyword-based software library recommendation in order to bootstrap software ...
Keyword-based software library recommendation in order to bootstrap software ...Keyword-based software library recommendation in order to bootstrap software ...
Keyword-based software library recommendation in order to bootstrap software ...
 
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...
Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων για την Εξαγωγή Προτύπων Διόρθωσης σε Σφ...
 
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...
Applying Data Mining Techniques to Extract Fix Patterns for Static Analysis V...
 
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
Εφαρµογή Τεχνικών Μηχανικής Μάθησης για την Ανάλυση Αλλαγών Κώδικα µε στόχο τ...
 
Χαρίτων Καραμήτας 5755
Χαρίτων Καραμήτας 5755Χαρίτων Καραμήτας 5755
Χαρίτων Καραμήτας 5755
 
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
Evangelos Papathomas: Semantic Code Search in Software Repositories using Neu...
 

ThesisPresentation

  • 1. Διπλωματική Εργασία Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας ΑΕΜ: 8826 Επιβλέποντες Ανδρέας Συμεωνίδης, Καθηγητής ΑΠΘ Θωμάς Καρανικιώτης, Υποψήφιος Διδάκτωρ ΑΠΘ Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας & Τεχνολογίας Λογισμικού (ISSEL)
  • 2. Περιεχόμενα Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας Κίνητρο - Ορισμός Προβλήματος 1 2 3 4 Παρουσίαση Πειραμάτων Παρουσίαση Μεθοδολογίας - Αντιμετώπιση Προβλήματος Τελικά Αποτελέσματα - Παρουσίαση Αποτελεσμάτων Εισαγωγή Μεθοδολογικό Πλαίσιο Πειράματα Αποτελέσματα - Συμπεράσματα 2
  • 3. 1. Αυτοματοποίηση και επιτάχυνση της διαδικασίας ανάπτυξης λογισμικού Κίνητρο 2. Εύκολη πρόσβαση και αξιοποίηση δεδομένων πηγαίου κώδικα (π.χ.GitHub) 3. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 3 Μείωση χρόνου συντήρησης μέσω βελτίωσης της αναγνωσιμότητας των αρχείων κώδικα του έργου λογισμικού 4. 80% του συνολικού χρόνου ζωής ενός έργου λογισμικού αφιερώνεται στη συντήρηση του
  • 4. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 4 Υλοποίηση αυτοματοποιημένου συστήματος εντοπισμού και διόρθωσης σφαλμάτων μορφοποίησης Ορισμός Προβλήματος Δημιουργία ενός μηχανισμού αξιολόγησης της μορφοποίησης ενός αρχείου πηγαίου κώδικα Βελτίωση Μορφοποίησης Ταχύτερη Κατανόηση Ταχύτερη & Ποιοτικότερη Συντήρηση Βελτίωση Αναγνωσιμότητας
  • 5. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας Step 2 Εντοπισμός σφαλμάτων με χρήση δικτύου LSTM Step 1 Προεπεξεργασία αρχείου πηγαίου κώδικα Step 3 Step 4 Διόρθωση σφαλμάτων μορφοποίησης Step 5 Παροχή προτάσεων διόρθωσης με καλύτερη αξιολόγηση μορφοποίησης Μεθοδολογικό πλαίσιο 5 Αξιολόγηση μορφοποίησης σε επίπεδο αρχείου και token.
  • 6. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας Dataset Tokenization Vectorization TokenScore FileScore LSTM 10-gram ErrorDetection Errorpositions DataPreprocessing ErrorFixing FixedFile Αρχιτεκτονική Συστήματος 6
  • 7. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 7 Προεπεξεργασία Δεδομένων float y = 1.5 <lit> <space> <word> <space> <equal> <number> <semicolon> 2 1 5 1 8 10 6 T o k e n i z a tion V e c t o r i z a tion Tokenization: μετατροπή και διάσπαση του αρχείου κώδικα σε επιμέρους, διακριτές οντότητες (tokens) Vectorization: αντιστοιχία κάθε οντότητας(token) με ένα ακέραιο αριθμό Δύο βασικά στάδια προεπεξεργασίας ενός αρχείου κώδικα που παρέχεται ως είσοδος: ;
  • 8. Υποσύστημα Αξιολόγησης Μορφοποίησης Αξιοποίηση της έννοιας της διασταυρούμενης εντροπίας (cross-entropy) ως μέτρο του βαθμού "έκπληξης" του μοντέλου N-gram (όταν του παρέχεται ως είσοδος μια αλληλουχία οντοτήτων (tokens) t0,t1,…, tM) Υλοποίηση στηρίχθηκε στα στατιστικά μοντέλα γλώσσας N-gram τα οποία έχουν την ικανότητα να αναθέτουν υψηλότερες πιθανότητες εμφάνισης σε αλληλουχίες οντοτήτων (tokens) που συναντώνται συχνότερα στο σύνολο εκπαίδευσης τους Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 1. Ποσοτικοποίηση της αφαιρετικής έννοιας της μορφοποίησης πηγαίου κώδικα 2. 3. 8
  • 9. Υποσύστημα Αξιολόγησης της Μορφοποίησης (2) Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 4. αξιολόγηση αρχείου πηγαίου κώδικα συνολικά (source code level) αξιολόγηση του κάθε token που απαρτίζει το αρχείο πηγαίου κώδικα (token level) Το υποσύστημα αξιολόγησης ενεργεί σε δύο διαφορετικά επίπεδα λειτουργίας: 5. Διάσπαση του αρχείου πηγαίου κώδικα σε διαδοχικά επιμέρους παράθυρα μήκους 20 tokens Υπολογισμός της διασταυρούμενης εντροπίας για κάθε παράθυρο Για κάθε token, εντοπίζεται το σύνολο των παραθύρων στα οποία ανήκει Ο βαθμός αξιολόγησης του εκάστοτε token υπολογίζεται ως έξης: 9 Aξιολόγηση σε επίπεδο token:
  • 10. Υποσύστημα Εντοπισμού Σφαλμάτων Μορφοποίησης Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας Tokenization Vectorization DataPreprocessing LSTM [1,4,6,10,35...] ErrorProbability Modification 10-gram DetectedError Positions Παροχή αρχείου πηγαίου κώδικα ως είσοδος Προεπεξεργασία Αρχείου Πηγαίου Κώδικα Αναπαράσταση αρχείου πηγαίου κώδικα ως αλληλουχία ακεραιών αριθμών Διάσπαση αλληλουχίας σε παράθυρα 20-tokens τα οποία τροφοδούνται διαδοχικά στο δίκτυο LSTM Τροποποίηση των πιθανοτήτων σφάλματος του δικτύου LSTM με βάση την αξιολόγηση του εκάστοτε token η οποία προέκυψε από το υποσύστημα αξιολόγησης Ως έξοδοι παρέχονται οι M θέσεις των token με τις υψηλότερες πιθανότητες εμφάνισης σφάλματος 10
  • 11. Υποσύστημα Διόρθωσης Σφαλμάτων Μορφοποίησης Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 1. Τις θέσεις των Μ tokens με την υψηλότερη πιθανότητα εμφάνισης σφαλμάτων μορφοποίησης σύμφωνα με το υποσύστημα εντοπισμού Το σύνολο των tokens που αποτελούν τις πιθανότερες αντικαταστάσεις ή προσθήκες για το εκάστοτε πιθανό σφάλμα μορφοποίησης Λαμβάνει δύο εισόδους: 2. Πραγματοποιεί τρεις διαφορετικές προσεγγίσεις διόρθωσης του σφάλματος μορφοποίησης: 3. Έλεγχος συντακτικής ορθότητας των νέων διορθωμένων αρχείων κώδικα Ως έξοδοι του συστήματος παρέχονται τα αρχεία κώδικα με καλύτερο σκορ αξιολόγησης σε σχέση με το αρχικό 11 Ολική διαγραφή του token που αντιστοιχεί στη θέση σφάλματος Αντικατάσταση του token που αντιστοιχεί στη θέση σφάλματος Προσθήκη νέου token πριν το token της πιθανής θέσης σφάλματος
  • 12. 1. Εκπαίδευση των μοντέλων του συστήματος με χρήση 8.500 αρχείων Java από 10.000 αποθετήρια του GitHub με συγκεκριμένα, ευρέως διαδεδομένα πρότυπα μορφοποίησης Πειράματα & Αποτελέσματα 2. 3. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 12 Αξιολόγηση της απόδοσης του συστήματος με βάση 8.000 αρχεία κώδικα Java από τον διαγωνισμό CodRep 2019, κάθε ένα από τα οποία περιέχει αποκλειστικά ένα σφάλμα μορφοποίησης Αναλογία συνόλου εκπαίδευσης - ελέγχου για εκπαίδευση δικτύου LSTM: 80/20 Αναλογία συνόλου εκπαίδευσης - ελέγχου για εκπαίδευση μοντέλου γλώσσας N-gram: 90/10 4. Αξιοποίηση 1.000 αρχείων εξ αυτών για την αξιολόγηση του υποσυστήματος εντοπισμού Αξιοποίηση 100 αρχείων εξ αυτών για την αξιολόγηση του υποσυστήματος διόρθωσης
  • 13. Αξιολόγηση Υποσυστήματος Εντοπισμού Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 13
  • 14. Αξιολόγηση Υποσυστήματος Διόρθωσης Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 14
  • 15. Αξιολόγηση Υποσυστήματος Διόρθωσης (2) Πριν Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας Μετά Ολική διαγραφή token 15
  • 16. Αξιολόγηση Υποσυστήματος Διόρθωσης (3) Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας Προσθήκη νέου token Πριν Μετά 16
  • 17. Αξιολόγηση Διόρθωσης Πολλαπλών Σφαλμάτων Μορφοποίησης Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 17 1. Αξιολόγηση του συστήματος σε περιπτώσεις αρχείων με 2 σφάλματα μορφοποίησης - 20 αρχεία 2. Διαδοχικοί κύκλοι διόρθωσης τροφοδοτώντας το αρχείο με την καλύτερη αξιολόγηση, του προηγουμένου κύκλου. Μετά από 2 κύκλους, ελέγχεται αν το τελικό αρχείο περιέχει τις επιθυμητές διορθώσεις 3. Επιστροφή διορθωμένων αρχείων σε όλες τις περιπτώσεις του πειράματος
  • 18. Συμπεράσματα Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 1 2 3 Συνολικό σύστημα εντοπισμού και διόρθωσης σφαλμάτων μορφοποίησης το οποίο δύναται να προσαρμοστεί σε διαφορετικά πρότυπα χωρίς όγκο παραμετροποιήσεων Ικανότητα τόσο των βαθιών νευρωνικών δικτύων τύπου LSTM όσο και των μοντέλων γλώσσας Ν-gram να αποτυπώσουν τις στατιστικές ιδιότητες αρχείων πηγαίου κώδικα Εξαιρετική απόδοση του συνολικού συστήματος τόσο στον εντοπισμό των σφαλμάτων μορφοποίησης όσο και στην διόρθωσή τους 18
  • 19. Μελλοντική Εργασία 1 2 3 4 Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας Εύρεση αυτοματοποιημένης μεθόδου αξιολόγησης του υποσυστήματος διόρθωσης σφαλμάτων μορφοποίησης με στόχο την αξιολόγησή του σε μεγαλύτερο όγκο δεδομένων Περαιτέρω αξιολόγηση του συστήματος σε διαφορετικές γλώσσες προγραμματισμού Χρήση και αξιολόγηση διαφορετικών αρχιτεκτονικών βαθιών νευρωνικών δικτύων εκτός από τα LSTM Εκπαίδευση και αξιολόγηση του συστήματος σε διαφορετικά πρότυπα μορφοποίησης με διαφορετικά χαρακτηριστικά 19
  • 20. Σας ευχαριστώ για την προσοχή σας! Ερωτήσεις?
  • 21. Δημιουργία Συστήματος για την Παροχή Προτάσεων Βελτίωσης της Μορφοποίησης Πηγαίου Κώδικα Θωμάς Κανούτας 7 Συλλογή Δεδομένων 1. 2. 3. Aρχεία κώδικα σε γλώσσα Java από 10.000 διαφορετικά αποθετήρια κώδικα στο GitHub Φιλτράρισμα με χρήση regex και τελική επιλογή 8.500 αρχείων τα οποία υπακούν σε συγκεκριμένα και ευρέως αποδεκτά πρότυπα μορφοποίησης 8500 αρχεία Java αποτελούν το σύνολο εκπαίδευσης για τα μοντέλα του συνολικού συστήματος Παράδειγμαregex ΤμήμαΚώδικα