Successfully reported this slideshow.
Your SlideShare is downloading. ×

Kagiafas Nikolaos Thesis Presentation

Kagiafas Nikolaos Thesis Presentation

Download to read offline

Applying Data Mining Techniques on Software Repositories to Extract Design and Evolution Patterns

Applying Data Mining Techniques on Software Repositories to Extract Design and Evolution Patterns

More Related Content

Slideshows for you

More from ISSEL

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Kagiafas Nikolaos Thesis Presentation

  1. 1. Εφαρμογή Τεχνικών Εξόρυξης Δεδομένων σε Αποθήκες Λογισμικού με σκοπό την Εξαγωγή Προτύπων Σχεδίασης και Εξέλιξης ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Διπλωματική Εργασία Φοιτητής: Καγιάφας Νικόλαος Αριθμός Ειδικού Μητρώου (A.E.M.): 8817 Επιβλέποντες: Συμεωνίδης Ανδρέας, Αναπληρωτής Καθηγητής Διαμαντόπουλος Θεμιστοκλής, Μεταδιδακτορικός Ερευνητής Ομάδα Ευφυών Συστημάτων και Τεχνολογίας Λογισμικού Θεσσαλονίκη, 14 Απριλίου 2021
  2. 2. Διάρθρωση Παρουσίασης • Εισαγωγή • Υλοποίηση του Συστήματος – Μεθοδολογία • Πειράματα και Αποτελέσματα • Συμπεράσματα • Μελλοντική Εργασία 2 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021
  3. 3. Διάρθρωση Παρουσίασης Εισαγωγή Υλοποίηση του Συστήματος – Μεθοδολογία Πειράματα και Αποτελέσματα Συμπεράσματα Μελλοντική Εργασία 3 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021
  4. 4. Κίνητρο – Περιγραφή του Προβλήματος 4 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 • Αποθήκες λογισμικού στο Διαδίκτυο, μία πλούσια πηγή δεδομένων • Συνεργασία μεταξύ των προγραμματιστών • Διενέργεια αλλαγών για βελτίωση, διόρθωση και εξέλιξη ενός έργου λογισμικού Εύρεση συχνών τύπων αλλαγών Εξέταση σχεδιαστικών αρχών για την οικοδόμηση ενός προγράμματος Κατανόηση και επίλυση παρόμοιων προβλημάτων Μοτίβα αλλαγών Διόρθωση λαθών Συστηματικές τροποποιήσεις Βελτίωση χωρίς αλλαγές στη λειτουργικότητα Χρήση υπαρχόντων σχολίων Αλλαγές στην αρχιτεκτονική • Δεν έχουν εξεταστεί σε βάθος • Δυνατότητα ανίχνευσης προτύπων σχεδίασης και εξέλιξης λογισμικού • Τίθενται οι βάσεις για ανάπτυξη εργαλείων προτάσεων αλλαγών στην αρχιτεκτονική
  5. 5. Στόχοι της διπλωματικής 5 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Εύρεση συχνών σχεδιαστικών προτύπων και προτύπων εξέλιξης Παρακολούθηση της εξέλιξης των σχέσεων μεταξύ των κλάσεων Υλοποίηση εργαλείου εξαγωγής των σχέσεων ανάμεσα στις διάφορες κλάσεις ενός προγράμματος Επιλογή και άντληση του κατάλληλου συνόλου δεδομένων Ανάλυση των εξαγόμενων προτύπων Συλλογή στοιχείων σχετικά με τη σημασιολογία και τον στόχο τους Ενίσχυση της δυνατότητας κατανόησης του προγράμματος στο οποίο χρησιμοποιούνται (program comprehension) Χρησιμοποιούν σήμερα οι προγραμματιστές πρότυπα, συνειδητά ή μη; Αν ναι, υπάρχουν και πρότυπα που δεν είναι μέχρι σήμερα γνωστά;
  6. 6. Διάρθρωση Παρουσίασης Εισαγωγή Υλοποίηση του Συστήματος – Μεθοδολογία Πειράματα και Αποτελέσματα Συμπεράσματα Μελλοντική Εργασία 6 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021
  7. 7. Αρχιτεκτονική του Συστήματος 7 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021
  8. 8. Επιλογή και άντληση των κατάλληλων δεδομένων 8 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Δημοφιλέστερη πλατφόρμα φιλοξενίας κώδικα με παραπάνω από 56M χρήστες και 100M αποθετήρια 3000 πιο δημοφιλή έργα λογισμικού Καλά σχεδιασμένη δομή, σωστές τεχνικές, αποτελεσματικότητα Γραμμένα κατά κύριο λόγο στην Java GitHub, GitLab, Assembla, SourceForge επιλογή εκείνων με 15 έως 80 commits Επεξεργασία και αρχειοθέτηση των αλλαγών κάθε έργου
  9. 9. Το εργαλείο εξαγωγής σχέσεων 9 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Abstract Syntax Tree Επίπεδο αφαιρετικότητας κλάσεων (Abstraction level of classes): Normal, Abstract, Interface, Unknown • Εξαγωγή σχέσεων ανάμεσα στις ενδογενείς κλάσεις ενός προγράμματος • Δυνατότητα επιλογής να συμπεριληφθούν και εκείνες ανάμεσα στις ενδογενείς και τις εξωγενείς κλάσεις (προέρχονται από εξωτερικές βιβλιοθήκες) Κατευθυνόμενοι γράφοι με ετικέτες σε κόμβους και ακμές…??
  10. 10. Γραφική απεικόνιση των εξαγόμενων σχέσεων 10 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 • Χρήση του εργαλείου Graphviz • Ενδεικτική απεικόνιση των σχέσεων μεταξύ των ενδογενών κλάσεων του προγράμματος kikoso/android- stackblur • Εξαγωγή στοιχείων σχετικά με την αρχιτεκτονική του
  11. 11. Παρακολούθηση της εξέλιξης των σχέσεων - 1 11 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Στιγμιότυπο του προγράμματος πριν το commit i Στιγμιότυπο του προγράμματος μετά το commit i commit i Σχέσεις πριν το commit i Σχέσεις μετά το commit i Σχέσεις που δεν υπάρχουν μετά Σχέσεις που δεν υπάρχουν πριν Αφαιρούμενες (-) Προστιθέμενες (+) • Λαμβάνονται υπ’ όψιν μόνο τα αρχεία των commits του κυρίου βρόχου (main branch) • Αλλαγή ενός ή περισσότερων αρχείων Java σε ένα commit • Χρήση του εργαλείου pydriller
  12. 12. Παρακολούθηση της εξέλιξης των σχέσεων - 2 12 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Τύποι τροποποιήσεων • Delete: Διαγραφή του εν λόγω αρχείου από το πρόγραμμα • Modify: Διαφοροποίηση ορισμένων τμημάτων του κώδικα • Rename: Αλλαγή της θέσης ή/και του ονόματος του συγκεκριμένου αρχείου ή/και ορισμένων τμημάτων του κώδικα σε αυτό • Add: Προσθήκη νέου αρχείου στο πρόγραμμα Στη διαφορά των σχέσεων δε λαμβάνονται υπ’ όψιν εκείνες που προέρχονται από Add ή Delete Δεν μας ενδιαφέρουν σχέσεις που δεν περνούν από το στάδιο της εξέλιξης Σημαντικές μόνο για αλλαγή της μορφής του προγράμματος ανά commit
  13. 13. Εξόρυξη δεδομένων με τη βοήθεια του gSpan - 1 13 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 • gSpan (graph-based Substructure pattern mining) • D: ένα σύνολο γράφων • support(g): ο αριθμός των γράφων του D, στους οποίους ο g εμφανίζεται ως υπογράφος • minSup: ένα κάτω όριο συχνότητας που επιλέγεται από τον χρήστη στην είσοδο • Ανίχνευση μόνο των συχνών υπογράφων που είναι συνδεδεμένοι • Δεν υπάρχει πρόβλημα, όταν ένας γράφος του D είναι μη συνδεδεμένος • Μείωση του χρόνου εκτέλεσης σε σχέση με προγενέστερους αλγορίθμους ακόμα και κατά μία τάξη μεγέθους • Σε ποιες τεχνικές όμως στηρίζει την καινοτομία του, δεδομένης της δυσκολίας του προβλήματος; Πρόβλημα Εύρεση όλων των υπογράφων g, έτσι ώστε support(g) ≥ minSup Όσο το minSup ↓, τόσο ο χρόνος εκτέλεσης ↑ • Κάθε γράφος αντιστοιχεί σε έναν κωδικό DFS (Depth-First Search) • Λεξικογραφική ταξινόμηση όλων των παραπάνω κωδικών • Με βάση αυτήν τη σειρά, κατασκευάζεται ένα δέντρο αναζήτησης
  14. 14. Εξόρυξη δεδομένων με τη βοήθεια του gSpan - 2 14 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Ds το σύνολο όλων των γράφων που περιέχουν τον s ως υπογράφο Αναδρομική κλήση για εύρεση όλων των συχνών υπογράφων Μείωση μεγέθους του συνόλου γράφων S το σύνολο των αποτελεσμάτων D το σύνολο όλων των γράφων Αρχικά βήματα του αλγορίθμου
  15. 15. Διάρθρωση Παρουσίασης Εισαγωγή Υλοποίηση του Συστήματος – Μεθοδολογία Πειράματα και Αποτελέσματα Συμπεράσματα Μελλοντική Εργασία 15 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021
  16. 16. Εύρεση συχνών σχεδιαστικών προτύπων 16 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Σύνολο δεδομένων 576 έργα λογισμικού 576 γράφοι 576 ομάδες σχέσεων μεταξύ ενδογενών κλάσεων • Εφαρμογή του gSpan για διάφορα επίπεδα υποστήριξης • Για χαμηλές τιμές υποστήριξης ο αλγόριθμος δεσμεύει αρκετή μνήμη και καθυστερεί • Ανάγκη διαμόρφωσης του συνόλου δεδομένων → προγράμματα με 100 έως και 400 σχέσεις • Προκύπτουν κυρίως πρότυπα με χαρακτηρισμούς κλάσεων “Normal” • Θεώρηση ότι οι χαρακτηρισμοί Abstract και Interface ταυτίζονται • Προκύπτουν πρότυπα με Abstracted ( Abstract or Interface) χαρακτηρισμούς …
  17. 17. Ανάλυση των εξαγόμενων σχεδιαστικών προτύπων - 1 17 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 • Δενδροειδές σχεδιαστικό πρότυπο, 162 από 576 έργα λογισμικού • Κεντρική κλάση (Α) → επίτευξη στόχων του προγράμματος • Χρήση αντικειμένων δύο άλλων κλάσεων (Β και D) → πιο ειδικοί στόχοι • Οι B και D επικαλούνται δύο ακόμη με τη σειρά τους (C και E) Παράδειγμα Διαχείριση πληροφοριών για την πρόσβαση υπαλλήλων εταιρίας σε έγγραφα Πληροφορίες για τους υπαλλήλους Αφαίρεση δικαιωμάτων πρόσβασης με κάποια κριτήρια
  18. 18. Ανάλυση των εξαγόμενων σχεδιαστικών προτύπων - 2 18 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Παράδειγμα • Εφαρμογή σε πρόγραμμα γραφικής επεξεργασίας • Υλοποίηση κλάσης για την απεικόνιση αντικειμένων ή κειμένου • Δημιουργία αντικειμένων όπως πλαίσιο κειμένου, γραμμές ή σχήματα • Κλάση ευθείας γραμμής κληρονομεί στοιχεία από μία αφηρημένη κλάση → γραμμή Ομοιότητα με γνωστό πρότυπο • Δημιουργικό πρότυπο Factory Method • Κλάση D → Creator • Κλάση C → ConcreteCreator • Κλάση E → ConcreteProduct • Κλάση F → Product 25 από 105 προγράμματα με 100-400 σχέσεις
  19. 19. Ανάλυση των εξαγόμενων σχεδιαστικών προτύπων - 3 19 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Ομοιότητα με γνωστό πρότυπο • Δομικό πρότυπο Façade • 35 από 105 έργα λογισμικού με αριθμό σχέσεων από 100 έως και 400 • Κλάση Α ένας δίαυλος επικοινωνίας με όλες τις υπόλοιπες κλάσεις (B, C, D, E, F) • B, C, D, E, F → ένα υποσύστημα που επικοινωνεί με τον υπόλοιπο κόσμο μέσω της Α • Ο υπόλοιπος κόσμος δεν χρειάζεται πληροφορίες για το υποσύστημα, τον ενδιαφέρουν μόνο τα αποτελέσματα • Διαχωρισμός συστήματος σε υποσυστήματα → μείωση της πολυπλοκότητας
  20. 20. Εύρεση συχνών προτύπων εξέλιξης σχέσεων 20 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 Σύνολο δεδομένων 2693 commits με αλλαγές σχέσεων 2693 γράφοι 2693 ομάδες προσθαφαιρούμενων σχέσεων • Εφαρμογή του αλγορίθμου gSpan για διάφορα επίπεδα υποστήριξης • Ανάγκη για εντοπισμό μεγαλύτερων προτύπων → μείωση του επιπέδου υποστήριξης • Προσαρμογή του συνόλου δεδομένων • Φιλτράρισμα ως προς τον αριθμό των διαφοροποιημένων σχέσεων • Έλλειψη προτύπων εξέλιξης με Abstracted (Abstract ή Interface) χαρακτηρισμούς • Η θεώρηση Abstract = Interface δεν προσφέρει ιδιαίτερη βοήθεια
  21. 21. Ανάλυση των εξαγόμενων προτύπων εξέλιξης 21 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 • Κινήσεις από τους προγραμματιστές για δημιουργία κάποιων από τα πρότυπα που αναλύθηκαν προηγουμένως • Στόχος ο σχηματισμός κάποιων δομών ή η απαλλαγή από αυτές • Διεύρυνση δυνατοτήτων μίας κλάσης ή περιορισμός τους 188 commits από 2693 43 από 683 commits με αριθμό διαφοροποιημένων σχέσεων 8-40 14 από 683 commits με αριθμό διαφοροποιημένων σχέσεων 8-40 Δενδροειδής σχεδιαστική δομή Χρήση λανθασμένου αντικειμένου, διαγραφή, χρήση του σωστού
  22. 22. Διάρθρωση Παρουσίασης Εισαγωγή Υλοποίηση του Συστήματος – Μεθοδολογία Πειράματα και Αποτελέσματα Συμπεράσματα Μελλοντική Εργασία 22 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021
  23. 23. Συμπεράσματα 23 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 • Εντοπισμός συχνών σχεδιαστικών λύσεων και μοτίβων εξέλιξης πηγαίου κώδικα • Ανακάλυψη μοτίβων σχεδίασης που δεν ήταν μέχρι σήμερα γνωστά • Ύπαρξη προτύπων σχεδίασης που χρησιμοποιούν οι προγραμματιστές, χωρίς να το συνειδητοποιούν • Προκύπτουν χρήσιμα πρότυπα, τόσο στον τομέα της σχεδίασης όσο και της εξέλιξης • Η χρηστικότητά τους είναι εμφανής από τον πολύ συχνό βαθμό εμφάνισής τους • Η ανάλυση των προτύπων που εντοπίζονται διευκολύνει την κατανόηση του προγράμματος στο οποίο συναντώνται (program comprehension)
  24. 24. Διάρθρωση Παρουσίασης Εισαγωγή Υλοποίηση του Συστήματος – Μεθοδολογία Πειράματα και Αποτελέσματα Συμπεράσματα Μελλοντική Εργασία 24 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021
  25. 25. Μελλοντική εργασία 25 Εφαρμογή τεχνικών εξόρυξης δεδομένων σε αποθήκες λογισμικού με σκοπό την εξαγωγή προτύπων σχεδίασης και εξέλιξης Θεσσαλονίκη, Απρίλιος 2021 • Εκπαίδευση του συστήματος, ώστε να προτείνει μόνο του αλλαγές στις σχέσεις κλάσεων που δίνονται στην είσοδό του • Εκμετάλλευση περισσότερων σημασιολογικών στοιχείων • Προσθήκη δεδομένων σχετιζόμενων με τη συντακτική δομή μίας κλάσης • Ενσωμάτωση της γνώσης και της εμπειρίας προγραμματιστών (human-like way of thinking) • Χρήση των προτύπων για την κατανόηση ενός προγράμματος που δίνεται στην είσοδο • Ανακάλυψη περισσότερων μοτίβων εξέλιξης με χαρακτηρισμούς πέρα από τον Normal • Επέκταση του συστήματος και σε άλλες αντικειμενοστραφείς γλώσσες πέραν της Java Βασικός στόχος της περιοχής η αυτοματοποιημένη δημιουργία σχεδιαστικών προτάσεων

×