2. Περιεχόμενα
Εισαγωγή
Ορισμός Προβλήματος
State of the art
Σκοπός διπλωματικής
Ανάλυση του συστήματος
Πειράματα
Συμπεράσματα - Μελλοντική εργασία
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
2
3. Εισαγωγή
Ψηφιακή εποχή (εποχή της πληροφορίας)
Free και Open Source Software
Πολυπλοκότητα των σύγχρονων
προγραμμάτων απαιτεί την ανάπτυξη
κώδικα με χρήση βιβλιοθηκών
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
3
4. Ορισμός του προβλήματος
Αριθμός βιβλιοθηκών τεράστιος και συνεχώς αυξανόμενος
Εξοικείωση και επέκταση δύσκολη
Τεκμηρίωση συχνά ανεπαρκής ή ανύπαρκτη
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
4
5. State of the art
Παρόμοια Συστήματα
Ομαδοποίηση κώδικα με χρήση LSI
Ομαδοποίηση κώδικα με χρήση LDA
Μειονεκτήματα
Οι παράμετροι των συστημάτων δεν είναι
αυτοματοποιημένοι
Τα θέματα δεν ονοματίζονται, δεν γνωρίζουμε
τη λειτουργικότητά τους
Δεν έχουμε κάποιο αντικειμενικό κριτήριο
"καλής" ομαδοποίησης
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
5
6. Σκοπός διπλωματικής
Ανάπτυξη του δικού μας RSSE, που χρησιμοποιεί τεχνικές
ομαδοποίησης για την ανάλυση της δομής βιβλιοθηκών
Το σύστημά μας προσφέρει:
◦ Οπτικοποίηση χωρισμού των πακέτων σε νοηματικές κατηγορίες
(θέματα)
◦ Δημιουργία αντικειμενικού κριτηρίου "καλής" ομαδοποίησης
◦ Σύγκριση μεθόδων ομαδοποίησης μεταξύ τους
◦ Μείωση του συνολικού αριθμού θεμάτων
◦ Αυτοματοποιημένη ονομασία θεμάτων
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
6
11. Προεπεξεργαστής
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
11
Κάθε έγγραφο είναι μια συλλογή από λέξεις για κάθε κλάση
που περιλαμβάνει:
• Ονόματα και τύπους μεταβλητών και μεθόδων
• Javadocs και λοιπούς σχολιασμούς
Η προεπεξεργασία περιλαμβάνει:
• Μετατροπή σε πεζά
• Καθαρισμό Javadoc και σχολίων
• Διαχωρισμό CamelCase
• Tokenization
• Αφαίρεση stopwords
• lemmatization
25. Συμπεράσματα
Πετύχαμε χωρισμό μιας βιβλιοθήκης στις νοηματικές κατηγορίες (θέματα) από τις οποίες
αποτελείται.
Ο αριθμός των ομάδων βελτιστοποιείται με μέθοδο που είναι ανεξάρτητη του αλγορίθμου
ομαδοποίησης που χρησιμοποιείται.
Επιπλέον, εφαρμόζεται μεταεπεξεργασία στα θέματα, με σκοπό τη μείωση του αριθμού τους,
βρίσκοντας τα όμοια.
Παρουσιάζεται η κατανομή των πακέτων στα επιμέρους θέματα.
H αυτόματη ονομασία των θεμάτων με την χρήση ετικετών από το Stack Overflow, περιγράφει
αρκετά καλά την λειτουργικότητά που εκφράζουν.
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
25
26. Μελλοντική Εργασία
Η μέθοδος αξιολόγησης που έχουμε επιλέξει βασίζεται στην δομή των πακέτων που έχει ορίσει
ο δημιουργός της εφαρμογής που αναλύουμε.
Δοκιμή επιπλέον μεθόδων ομαδοποίησης (π.χ. autoencoders) και σύγκριση των
αποτελεσμάτων.
Διερεύνηση της επίδρασης των παραμέτρων του LDA στην απόδοση του αλγορίθμου, με βάση τα
κριτήρια αξιολόγησης που έχουμε ορίσει (purity).
Πρόταση αλλαγών στη δομή των πακέτων με διάσπαση ή συγχώνευση.
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
26
27. Ευχαριστώ για την προσοχή σας
Θεσσαλονίκη, Μάρτιος 2017
ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΟΠΤΙΚΟΠΟΙΗΣΗΣ ΠΗΓΑΙΟΥ ΚΩΔΙΚΑ ΜΕ ΧΡΗΣΗ ΤΕΧΝΙΚΩΝ ΑΝΑΚΤΗΣΗΣ
ΠΛΗΡΟΦΟΡΙΩΝ
27
Editor's Notes
Βρισκόμαστε στην ψηφιακή εποχή (εποχή της πληροφορίας), όπου το διαδίκτυο έχει γίνει αναπόσπαστο κομμάτι τηςεπαγγελματικής και προσωπικής μας ζωής.
Η ανάπτυξη εφαρμογών γίνεται με ταχύτατους ρυθμούς και σε πληθώρα από πλατφόρμες (υπολογιστές, κινητά, tablets, smartwatch)
Από πολύ νωρίς, το 1980, ιδρύθηκαν κινήμαελεύθερου λογισμικού και ανοιχτού κώδικα, που έδωσαν ώθηση στη δημιουργία ανοιχτών αποθηκών λογισμικού.
Οι προγραμματιστές χρησιμοποιούντον έτοιμο κώδικα που βρίσκεται εκεί, και ειδικά τις βιβλιοθήκες, για την ταχύτερη και αποτελεσματικότερη ανάπτυξη εφαρμογών.
Ο αριθμός, ωστόσο,των βιβλιοθηκών αυτών είναι τεράστιος, και συνεχώς αυξανόμενος, αφού εξειδικεύονται σε πληθώρα εφαρμογών, συστημάτων και προγραμματιστικά περιβάλλοντα.
Η εξοικείωση με καινούριες βιβλιοθήκες, και η συντήρηση και επέκταση των ήδη υπαρχόντων, είναι μια ιδιαίτερα χρονοβόρα διαδικασία.
Η τεκμηρίωση του κώδικα είναι συχνά ανεπαρκής ή και ανύπαρκτη.
Στην κατεύθυνση της κατανόησης προγραμμάτων (βιβλιοθηκών στην περίπτωσή μας) και στην ανάλυση του σημασιολογικού περιεχομένου τους έχουν αναπτυχθεί διάφορα συστήματα.
Το Topicxp, καθώς και συστήματα που ομαδοποιούν τις κλάσεις μιας βιβλιοθήκης με τεχνικές LSI και LDA, προσπαθούν να εντοπίσουν τη σημασιολογική πληροφορία των κλάσεωνβιβλιοθηκών και να την προβάλουν στον χρήστη.
Οι εφαρμογές αυτές όμως απαιτούν τον ορισμό παραμέτρων των αλγορίθμων από τους ίδους τους χρήστες, γεγονός που απαιτείπρώτερη γνώση δεδομένων τόσοτων προς ανάλυση βιβλιοθηκών όσο και του τρόπου λειτουργίας των αλγορίθμων ανάλυσης που χρησιμοποιούν.
Επίσης, οι θεματικές ενότητες που πτοσδιορίζουν, περιγράφονται από λέξεις που βρίσκονται στοκ κώδικα και στα σχόλια των προγραμματιστών, γεγονός που δεν φανερώνει άμεσα τη λειτουργικότητα που εκφράζουν, αλλά απαιτούνεμπειρία και γνώση στο αντικείμενο στο οποίο αναφέρονται.
Δενπροσφέρουν κάποιο κριτήριο ``καλής" ομαδοποίησης.
Σκοπός της διπλωματικής αυτής είναι η προσφορά στον ευρύτερο κλάδο της επαναχρησιμοποίησης κώδικα και της κατανόησης προγραμμάτων με επισκόπηση της βιβλιογραφίας και ανάπτυξη του δικού μας συστήματος πρότασης κώδικα, ή RSSE, που χρησιμοποιεί τεχνικές ομαδοποίησης κώδικα για την ανάλυση της δομής βιβλιοθηκών,
Το σύστημά μας προσφέρει:
Οπτικοποίηση της κατανομής των πακέταν (και υποπακέτων) μιας βιβλιοθήκης σε νοηματικές κατηγορίες (που θα αποκαλούμε θέματα)
Δημιουργία αντικειμενικού κριτηρίου ``καλής" ομαδοποίησης των κλάσεων σε θέματα.
Δυνατότητα σύγκρισης απόδοσης μεθόδων ομαδοποίησης μεταξύ τους
Αυτοματοματοποιημένη ονομασία των θεμάτων
Στο σχήμα αυτό φαίνεται η δομή του συστήματός μας. Αποτελείται από 6 βασικά τμήματα (Εξαγωγέα, Προεπεξεργαστή, Διανυσματοποιητή, Ομαδοποιητή, Βελτιστοποιητή, Παρουσιαστή).
Θα προχωρήσουμε στην ανάλυση του τρόπου με τον οποίο λειτουργεί κάθε
Στο σχήμα αυτό φαίνεται η δομή του συστήματός μας. Αποτελείται από 6 βασικά τμήματα (Εξαγωγέα, Προεπεξεργαστή, Διανυσματοποιητή, Ομαδοποιητή, Βελτιστοποιητή, Παρουσιαστή).
Θα προχωρήσουμε στην ανάλυση του τρόπου με τον οποίο λειτουργεί κάθε
Στο σχήμα αυτό φαίνεται η δομή του συστήματός μας. Αποτελείται από 6 βασικά τμήματα (Εξαγωγέα, Προεπεξεργαστή, Διανυσματοποιητή, Ομαδοποιητή, Βελτιστοποιητή, Παρουσιαστή).
Θα προχωρήσουμε στην ανάλυση του τρόπου με τον οποίο λειτουργεί κάθε
Στο σχήμα αυτό φαίνεται η δομή του συστήματός μας. Αποτελείται από 6 βασικά τμήματα (Εξαγωγέα, Προεπεξεργαστή, Διανυσματοποιητή, Ομαδοποιητή, Βελτιστοποιητή, Παρουσιαστή).
Θα προχωρήσουμε στην ανάλυση του τρόπου με τον οποίο λειτουργεί κάθε
Στο σχήμα αυτό φαίνεται η δομή του συστήματός μας. Αποτελείται από 6 βασικά τμήματα (Εξαγωγέα, Προεπεξεργαστή, Διανυσματοποιητή, Ομαδοποιητή, Βελτιστοποιητή, Παρουσιαστή).
Θα προχωρήσουμε στην ανάλυση του τρόπου με τον οποίο λειτουργεί κάθε
Στο σχήμα αυτό φαίνεται η δομή του συστήματός μας. Αποτελείται από 6 βασικά τμήματα (Εξαγωγέα, Προεπεξεργαστή, Διανυσματοποιητή, Ομαδοποιητή, Βελτιστοποιητή, Παρουσιαστή).
Θα προχωρήσουμε στην ανάλυση του τρόπου με τον οποίο λειτουργεί κάθε