Successfully reported this slideshow.
Your SlideShare is downloading. ×

Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγµατα

Loading in …3
×

Check these out next

1 of 23 Ad
1 of 23 Ad

Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγµατα

Download to read offline

Με την ολοένα και αυξανόµενη ενσωµάτωση του λογισµικού σε κοινωνικές δοµές όπως η εκπαίδευση και η υγεία, η γρήγορη συντήρηση (π.χ. αποσφαλµάτωση) µεγάλων έργων λογισµικού γίνεται όλο και πιο σηµαντική. Για αυτό το σκοπό, καθίσταται αναγκαία η κοινοτική οργάνωση του πηγαίου κώδικα σε οµάδες οντοτήτων (π.χ. µεθόδων σε κλάσεις, κλάσεων σε πακέτα, πακέτων σε ϐιβλιοθήκες), έτσι ώστε να διευκολύνεται η κατανόηση και πλοήγηση µεταξύ υλοποιηµένων λειτουργιών. Αν οι οντότητες οργανωθούν σε γράφους των οποίων οι ακµές αντικατοπτρίζουν τις εξαρτήσεις τους, υπάρχουν κοινά αποδεκτές αρχές της τεχνολογίας λογισµικου για το τι συνιστά καλή ποιοτικά οργάνωση του πηγαίου κώδι κα, όπως η υψηλή συνεκτικότητα εντός οµάδων οντοτήτων και η χαλαρή συνδεσιµότητα µε οντότητες άλλων οµάδων. Σε αυτή τη διπλωµατική, εξετάζεται το πρόβληµα της αυτοµατο ποιηµένης επανοργάνωσης οντοτήτων πηγαίου κώδικα ώστε να ϐελτιστοποιηθούν µετρικές που ποσοτικοποιούν αρχές ποιοτικής κοινοτικής οργάνωσης. Για να το πετύχουµε αυτό, χρησιµοποιούµε µεθόδους εξόρυξης κοινοτικής πληροφορίας από γράφους εξαρτήσεων ο ντοτήτων. Η κύρια υπόθεσή µας είναι η τρέχουσα ιεραρχική οργάνωση του κώδικα περιέχει ψήγµατα της ϐέλτιστης οργάνωσης και τη χρησιµοποιούµε ως µια προσεγγιστική πρώτη εκτίµηση την οποία και προσπαθούµε να ϐελτιώσουµε µε ϕίλτρα γράφων. Αυτή η ηµιε πιβλεπόµενη µέθοδος συγκρίνεται µε υπάρχουσες πρακτικές άπληστης ϐελτιστοποίησης της αρχικής εκτίµησης και µη επιβλεπόµενης γενετικής ϐελτιστοποίησης των κοινοτήτων στους γράφους εξαρτήσεων οντοτήτων 10 δηµοφιλών έργων λογισµικού. Βρίσκουµε ότι, δεδοµένης µια ¨στρευλωµένης¨ οργάνωσης, η προσέγγισή µας επιτρέπει την ακριβέστερη εξόρυξη των κοινοτήτων που ορίστηκαν από τους προγραµµατιστές των έργων. Επιπρο σθέτως, ολοκληρώνεται σε σχεδόν γραµµικούς χρόνους εκτέλεσης σε σχέση με τον αριθµό των εξαρτήσεων που επιτρέπουν την εφαρµογή της σε μεγάλα έργα λογισµικού.

Με την ολοένα και αυξανόµενη ενσωµάτωση του λογισµικού σε κοινωνικές δοµές όπως η εκπαίδευση και η υγεία, η γρήγορη συντήρηση (π.χ. αποσφαλµάτωση) µεγάλων έργων λογισµικού γίνεται όλο και πιο σηµαντική. Για αυτό το σκοπό, καθίσταται αναγκαία η κοινοτική οργάνωση του πηγαίου κώδικα σε οµάδες οντοτήτων (π.χ. µεθόδων σε κλάσεις, κλάσεων σε πακέτα, πακέτων σε ϐιβλιοθήκες), έτσι ώστε να διευκολύνεται η κατανόηση και πλοήγηση µεταξύ υλοποιηµένων λειτουργιών. Αν οι οντότητες οργανωθούν σε γράφους των οποίων οι ακµές αντικατοπτρίζουν τις εξαρτήσεις τους, υπάρχουν κοινά αποδεκτές αρχές της τεχνολογίας λογισµικου για το τι συνιστά καλή ποιοτικά οργάνωση του πηγαίου κώδι κα, όπως η υψηλή συνεκτικότητα εντός οµάδων οντοτήτων και η χαλαρή συνδεσιµότητα µε οντότητες άλλων οµάδων. Σε αυτή τη διπλωµατική, εξετάζεται το πρόβληµα της αυτοµατο ποιηµένης επανοργάνωσης οντοτήτων πηγαίου κώδικα ώστε να ϐελτιστοποιηθούν µετρικές που ποσοτικοποιούν αρχές ποιοτικής κοινοτικής οργάνωσης. Για να το πετύχουµε αυτό, χρησιµοποιούµε µεθόδους εξόρυξης κοινοτικής πληροφορίας από γράφους εξαρτήσεων ο ντοτήτων. Η κύρια υπόθεσή µας είναι η τρέχουσα ιεραρχική οργάνωση του κώδικα περιέχει ψήγµατα της ϐέλτιστης οργάνωσης και τη χρησιµοποιούµε ως µια προσεγγιστική πρώτη εκτίµηση την οποία και προσπαθούµε να ϐελτιώσουµε µε ϕίλτρα γράφων. Αυτή η ηµιε πιβλεπόµενη µέθοδος συγκρίνεται µε υπάρχουσες πρακτικές άπληστης ϐελτιστοποίησης της αρχικής εκτίµησης και µη επιβλεπόµενης γενετικής ϐελτιστοποίησης των κοινοτήτων στους γράφους εξαρτήσεων οντοτήτων 10 δηµοφιλών έργων λογισµικού. Βρίσκουµε ότι, δεδοµένης µια ¨στρευλωµένης¨ οργάνωσης, η προσέγγισή µας επιτρέπει την ακριβέστερη εξόρυξη των κοινοτήτων που ορίστηκαν από τους προγραµµατιστές των έργων. Επιπρο σθέτως, ολοκληρώνεται σε σχεδόν γραµµικούς χρόνους εκτέλεσης σε σχέση με τον αριθµό των εξαρτήσεων που επιτρέπουν την εφαρµογή της σε μεγάλα έργα λογισµικού.

Advertisement
Advertisement

More Related Content

Slideshows for you (14)

More from ISSEL (20)

Advertisement

Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων µε βάση παραδείγµατα

  1. 1. Επανοργάνωση πηγαίου κώδικα από γράφους εξαρτήσεων οντοτήτων με βάση παραδείγματα Τμήμα Ηλεκτρολόγων Μηχανικών & ΜηχανικώνΥπολογιστών Καλαντζής Γεώργιος 8818 Επιβλέποντες : Αν. ΚαθηγητήςΑνδρέας Λ. Συμεωνίδης Υπ. Διδάκωρ Εμμανουήλ Κρασανάκης 1
  2. 2. Περιεχόμενα 1. Εισαγωγή 2. Μεθοδολογία 3. Πειράματα 4. Συμπεράσματα 2
  3. 3. Κίνητρο • Μέγεθος των σύγχρονων λογισμικών • Υψηλή πολυπλοκότητα • Διατήρηση ποιότητας • Κόστος συντήρησης Αυτόματη επανοργάνωση 3
  4. 4. Ορισμός Προβλήματος • Χαρακτηρισμός οντοτήτων βάσει συσχετίσεων (οντότητες: μέθοδοι, συσχετίσεις: calls, imports ) • Κατασκευή γράφου εξαρτήσεων οντοτήτων 4
  5. 5. Ορισμός Προβλήματος • Οργάνωση οντοτήτων σε κοινότητες (κλάσεις, αρχεία, φάκελοι) • Κλασσικό πρόβλημα ανίχνευσης κοινοτήτων στην θεωρία γράφων • Συνδυαστική βελτιστοποίηση (γενετική, άπληστη κτλ.) 5
  6. 6. Σχετική Έρευνα Πληθώρα αλγορίθμων ομαδοποίησης. Πληθώρα αλγορίθμων γενετικής βελτιστοποίησης (Υβριδική, NSGA-III) Μη εκμετάλλευση υπάρχουσας (μη-βέλτιστης) κοινοτικής οργάνωσης Μη-επιβλεπόμενοι αλγόριθμοι 6
  7. 7. Περιεχόμενα 1. Εισαγωγή 2. Μεθοδολογία 3. Πειράματα 4. Συμπεράσματα 7
  8. 8. Υπόθεση Αξιοποίηση υπάρχουσας μη-βέλτιστη κοινοτικής οργάνωσης και των συσχετισέων του γράφου Η υπάρχουσα κοινοτική οργάνωση περιέχει ψήγματα ιδανικής οργάνωσης Μη-βέλτιστη + αλγόριθμος ανίχνευσης κοινοτήτων ≈ ιδανική Ημι-επιβλεπόμενη μέθοδος 8
  9. 9. Προτεινόμενη Μεθοδολογία • Φίλτρα γράφων (Personalized Page Rank, AbsorbingWalk, Heat Kernel) • Ranking των κόμβων βάσει των προεπιλεγμένων ομάδων • Ανάθεση κόμβων στις ομάδες με το μέγιστο score 9 𝑝𝑒𝑟𝑠𝑜𝑛𝑎𝑙𝑖𝑧𝑎𝑡𝑖𝑜𝑛 = [1,0,0,0,0,1]
  10. 10. Προτεινόμενη Μεθοδολογία • Εξομάλυνση ομαδοποίησης • Γείτονες υψηλής συσχέτισης στην ίδια ομάδα 10
  11. 11. Περιεχόμενα 1. Εισαγωγή 2. Μεθοδολογία 3. Πειράματα 4. Συμπεράσματα 11
  12. 12. Διαδικασία αξιολόγησης Πραγματικό σεναρίο με γνωστή ιδανική οργάνωση (ground truth) Μη-ιδανική οργάνωση με συνθετική διαδικασία διαστρέβλωσης Είσοδος διαστρεβλωμένης οργάνωσης σε αλγόριθμους (οι μη-επιβλεπόμενοι αλγόριθμοι δεν την εκμεταλλεύονται) Σύγκριση αποτελέσματος με ιδανική οργάνωση (MoJo, Precision, Recall, F-score) 12
  13. 13. Διαδικασία διαστρέβλωσης • Τυχαία ανταλλαγή στοιχείων ομάδων • Επιλογή αριθμού τυχαίων ανταλλαγών Υπενθύμιση! Είσοδος της διαστρεβλωμένης ομαδοποίησης σε αλγόριθμους ανίχνευσης κοινοτήτων για εκτίμηση ιδανικής οργάνωσης. 13
  14. 14. Δεδομένα • Δέκα έργα λογισμικού • Υψηλής ποιότητας (τουλάχιστον μιας δεκαετίας) • Γράφος κλήσης συναρτήσεων • Οργάνωση σε κλάσεις = ground truth 14
  15. 15. Συγκρινόμενοι Αλγόριθμοι None Διαστρεβλωμένη οργάνωση PR Τυχαίος περίπατος Personalization Page Rank ARW Τυχαίος περίπατος Absorbing Walk HK Τυχαίος περίπατος Heat Kernel Gmod Άπληστη ϐελτιστοποίηση του Modularity Gen State-of-the-art υβριδικός γενετικός αλγορίθμος 15
  16. 16. Πειραματικά Αποτελέσματα • Μέση τιμή μετρικών για κάθε αλγόριθμο (διαστρέβλωση 0-100%) • Page Rank συνήθως καλύτερα αποτελέσματα (8/10 καλύτερο MoJo, 9/10 καλύτερη F-score) • Γενετικός αλγόριθμος υψηλές τιμές στο precision χαμηλές αλλού (μεγάλος αριθμός ομάδων) 16
  17. 17. Παράδειγμα για έργο log4j 17
  18. 18. Σύγκριση Χρόνου Εκτέλεσης 18 • Αδυναμία σύγκλισης γενετικού αλγορίθμου • Εφαρμογή σε μεγάλα συστήματα?
  19. 19. Περιεχόμενα 1. Εισαγωγή 2. Μεθοδολογία 3. Πειράματα 4. Συμπεράσματα 19
  20. 20. Συμπεράσματα • Ημι-επιβλεπόμενοι αλγόριθμοι > γενετικός αλγόριθμος • Personalized Page Rank προτεινόμενος αλγόριθμος • Scalabable 20
  21. 21. Μελλοντική Εργασία • Διερεύνηση κι άλλων μεθόδων στο ημι-επιβλεπόμενο πλαίσιο (Submodular optimization,GNNs) • Συσχέτιση σημασιολογίας οντοτήτων (πχ. ονόματα) • Εργαλείο εκτέλεσης εντολών 21
  22. 22. Σας ευχαριστώ πολύ για τον χρόνο σας ! Ερωτήσεις? 22
  23. 23. Παράρτημα μετρικών ομοιότητας • Χρήση μετρικών ομοιότητας ομαδοποιήσεων για σύγκριση με ground truth. • Αξιόπιστη μετρική MoJo (Move and Join Operations). • Επέκταση μετρικών Recall, Precision για σύγκριση πολυσυνόλων διαφορετικού μεγέθους. • Μέσος όρος των μέγιστων αντιστοιχίσεων. • 𝑅𝑒𝑐𝑎𝑙𝑙′ = 1 𝑀 𝑖 max 𝑗 𝑅𝑒𝑐𝑎𝑙𝑙(𝐶𝑖, 𝐶𝑗) • 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛′ = 1 𝑁 𝑗 max 𝑖 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛(𝐶𝑗, 𝐶𝑖) • 𝐹1 ′ = 2∗𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛′∗𝑅𝑒𝑐𝑎𝑙𝑙′ 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛′+𝑅𝑒𝑐𝑎𝑙𝑙′ 23

×