Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ioannis Loias

48 views

Published on

Measuring Semantic Similarity of Software Projects Using Comments

Published in: Education
  • Be the first to comment

  • Be the first to like this

Ioannis Loias

  1. 1. Λόϊας Ιωάννης ΑΕΜ:8183 Επιβλέπων Καθηγητής: Συμεωνίδης Ανδρέας Συνεπιβλέποντας: Κρασανάκης Εμμανουήλ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝΥΠΟΛΟΓΙΣΤΩΝ Ομάδα Ευφυών Συστημάτων καιΤεχνολογίας Λογισμικού Υπολογισμός Σημασιολογικής Ομοιότητας Έργων Λογισμικού χρησιμοποιώντας Σχόλια 1 Εργαστήριο Επεξεργασίας Πληροφορίας καιΥπολογισμών
  2. 2. Ορισμός Προβλήματος ■ >50% αρχείων πηγαίου κώδικα χρησιμοποιούνται σε περισσότερα από ένα έργα ανοιχτού λογισμικού [A. Mockus, “Large-scale code reuse in open source software,”2007] ■ Διακίνηση πηγαίου κώδικα μεταξύ φοιτητών ■ Αντιγραφή λύσεων[Α. E. Ameera Jadalla, “Pde4java: Plagiarism detection engine for java source code: A clustering approach,”2008] ⇒ ΛΟΓΟΚΛΟΠΗ Υπάρχοντα συστήματα εξετάζουν μονοδιάστατα τον πηγαίο κώδικα 2
  3. 3. Στόχος Διπλωματικής Ανάπτυξη συστήματος υπολογισμού ομοιότητας ■ Υπολογισμός ομοιότητας λογισμικού ■ Μελέτη περιεχομένου και δομής ■ Είναι τα σχόλια χρήσιμα; ■ Ταυτόχρονη εφαρμογή πολλών αλγορίθμων 3
  4. 4. Το Σύστημα Υποσύστημα μελέτης περιεχομένου Repositories Υποσύστημα μελέτης δομής Μετρικές Ομοιότητας 4 Αξιολόγηση Έργων Λογισμικού Χαρακτηρισμός έργων ως όμοια/ανόμοια
  5. 5. 5 Το Σύστημα Υποσύστημα μελέτης περιεχομένου Repositories Υποσύστημα μελέτης δομής Μετρικές Ομοιότητας Αξιολόγηση Έργων Λογισμικού Χαρακτηρισμός έργων ως όμοια/ανόμοια
  6. 6. Υποσύστημα Μελέτης Περιεχομένου Εισαγωγή έργων Εξαγωγή Χαρακτηριστικώ ν Διανυσματο- ποίηση Σύγκριση διανυσμάτων αρχεία .java σακούλες λέξεων διανύσματα Repositories Ομοιότητα αρχείων Μετρικές αξιολόγησης Μετρικές ομοιότητας 6 Εξαγωγή μετρικών
  7. 7. 7 Υποσύστημα Μελέτης Περιεχομένου Εισαγωγή έργων Εξαγωγή Χαρακτηριστικώ ν Διανυσματο- ποίηση Σύγκριση διανυσμάτων αρχεία .java σακούλες λέξεων διανύσματα Repositories Ομοιότητα αρχείων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  8. 8. Εισαγωγή έργων 8 Εύρεση έργων λογισμικού Εύρεση αρχείων .java ανά έργο μονοπάτι συνόλου δεδομένων έργα λογισμικού υπό σύγκριση λίστα java αρχείων
  9. 9. Υποσύστημα Μελέτης Περιεχομένου 9 Εισαγωγή έργων Εξαγωγή Χαρακτηριστικώ ν Διανυσματο- ποίηση Σύγκριση διανυσμάτων αρχεία .java σακούλες λέξεων διανύσματα Repositories Ομοιότητα αρχείων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  10. 10. Εξαγωγή Χαρακτηριστικών Ανάγνωση αρχείων πηγαίου κώδικα Διάσπαση σε λέξεις Αφαίρεση λέξεων ≤ 2 συμβόλων Αφαίρεση επιθημάτων αρχεία .java λίστες συμβολοσειρών πίνακες λέξεων πίνακες λέξεων με μήκος>2 πίνακες κατακερματισμού με ρίζες και πλήθος ριζών public void set vector int a vector a a public int get vectors size return x public int get vectors size return public void set vector int vector public 1 int 1 get 1 vector 1 size 1 return 1 public 1 void 1 set 1 vector 2 int 1 Function1.java Function2.java public int getVectorsSize(){ return x; } public void setVector(int[] a){ vectorA=a; } 10
  11. 11. Υποσύστημα Μελέτης Περιεχομένου 11 Εισαγωγή έργων Εξαγωγή Χαρακτηριστικώ ν Διανυσματο- ποίηση Σύγκριση διανυσμάτων αρχεία .java σακούλες λέξεων διανύσματα Repositories Ομοιότητα αρχείων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  12. 12. Διανυσματοποίηση Μεθόδου Σύγκρισης Διανυσμάτων Υπολογισμός βαρών Δημιουργία διανυσμάτων πίνακες κατακερματισμο ύ ριζών πίνακες κατακερματισμο ύ βαρών διανύσματα αναπαράστασης αρχείων public 1 int 1 get 1 vector 1 size 1 return 1 public 1 void 1 set 1 vector 2 int 1 Ρίζα id tf tf idf public 0 0.167 0.167 1 int 1 0.167 0.167 1 get 2 0.167 0 1.693 vector 3 0.167 0.333 1 size 4 0.167 0 1.693 return 5 0.167 0 1.693 void 6 0 0.167 1.693 set 7 0 0.167 1.693 Διάνυσμα 1 0.167 0.167 0.283 0.167 0.283 0.283 0 0 Διάνυσμα 2 0.167 0.167 0 0.333 0 0 0.283 0.283 12
  13. 13. Διανυσματοποίηση Μεθόδου Λανθάνουσας Σημασιολογικής Ανάλυσης Υπολογισμός πινάκων βαρών Δημιουργία πίνακα αρχείων-όρων πίνακες κατακερματισμο ύ ριζών πίνακες βαρών πίνακας αρχείων-όρων public 1 int 1 get 1 vector 1 size 1 return 1 public 1 void 1 set 1 vector 2 int 1 Ρίζα Αρχείο 1 Αρχείο 2 public 1 1 int 1 1 get 1 0 vector 1 2 size 1 0 return 1 0 void 0 1 set 0 1 public 0.707 int 0.707 get 1 vector 0.447 size 1 return 1 void 1 set 1 Αρχείο 1 0.487 Αρχείο 2 0.513 Ρίζα Αρχείο 1 Αρχείο 2 public 0.344 0.363 int 0.344 0.363 get 0.487 0.513 vector 0.218 0.459 size 0.487 0 return 0.487 0 void 0 0.513 set 0 0.513 13
  14. 14. Υποσύστημα Σύγκρισης Περιεχομένου 14 Εισαγωγή έργων Εξαγωγή Χαρακτηριστικώ ν Διανυσματο- ποίηση Σύγκριση διανυσμάτων αρχεία .java σακούλες λέξεων διανύσματα Repositories Ομοιότητα αρχείων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  15. 15. Σύγκριση διανυσμάτων Αλγόριθμος σύγκρισης διανυσμάτων διανύσματα αναπαράστασης αρχείων μετρική ομοιότητας LSA με/χωρίς SVD πίνακας αρχείων-ορών μετρική ομοιότητας Μέθοδος σύγκρισης διανυσμάτων Μέθοδος λανθάνουσας σημασιολογικής ανάλυσης Διάνυσμα 1 0.167 0.167 0.283 0.167 0.283 0.283 0 0 Διάνυσμα 2 0.167 0.167 0 0.333 0 0 0.283 0.283 0.688 Συνημιτονική ομοιότητα Ρίζα Αρχείο 1 Αρχείο 2 public 0.344 0.363 int 0.344 0.363 get 0.487 0.513 vector 0.218 0.459 size 0.487 0 return 0.487 0 void 0 0.513 set 0 0.513 Αρχείο 1 Αρχείο 2 Αρχείο 1 1 0.6 Αρχείο 2 0.6 1 15
  16. 16. 16 Υποσύστημα Σύγκρισης Περιεχομένου Εισαγωγή έργων Εξαγωγή Χαρακτηριστικώ ν Διανυσματο- ποίηση Σύγκριση διανυσμάτων αρχεία .java σακούλες λέξεων διανύσματα Repositories Ομοιότητα αρχείων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  17. 17. Υπολογισμός μετρικών αξιολόγησης μετρικές ομοιότητας αρχείων μετρική αξιολόγησηςΥπολογισμός τελικής ομοιότητας έργων τελική τιμή ομοιότητας Εξαγωγή μετρικών 17
  18. 18. Το Σύστημα 18 Το Σύστημα Υποσύστημα μελέτης περιεχομένου Repositories Υποσύστημα μελέτης δομής Μετρικές Ομοιότητας Αξιολόγηση Έργων Λογισμικού Χαρακτηρισμός έργων ως όμοια/ανόμοια
  19. 19. Υποσύστημα Μελέτης Δομής Εισαγωγή έργων λογισμικού Εξαγωγή δέντρων Σύγκριση δέντρων Υπό σύγκριση έργα λογισμικού Δέντρα κλήσης συναρτήσεων Repositories Μετρικές ομοιότητας δέντρων 19 Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  20. 20. 20 Υποσύστημα Μελέτης Δομής Εισαγωγή έργων λογισμικού Εξαγωγή δέντρων Σύγκριση δέντρων Υπό σύγκριση έργα λογισμικού Δέντρα κλήσης συναρτήσεων Repositories Μετρικές ομοιότητας δέντρων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  21. 21. Εισαγωγή έργων λογισμικού 21 Εύρεση έργων λογισμικού μονοπάτι συνόλου δεδομένων έργα λογισμικού υπό σύγκριση
  22. 22. 22 Υποσύστημα Μελέτης Δομής Εισαγωγή έργων λογισμικού Εξαγωγή δέντρων Σύγκριση δέντρων Υπό σύγκριση έργα λογισμικού Δέντρα κλήσης συναρτήσεων Repositories Μετρικές ομοιότητας δέντρων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  23. 23. Εξαγωγή δέντρων Εξαγωγή γράφου κλήσης συναρτήσεων Αλγόριθμος εξαγωγής δέντρων κλήσης συναρτήσεων έργα λογισμικού πίνακας αναπαράστασης γράφου συναρτήσεων δέντρα κλήσης συναρτήσεων 23
  24. 24. 24 Υποσύστημα Μελέτης Δομής Εισαγωγή έργων λογισμικού Εξαγωγή δέντρων Σύγκριση δέντρων Υπό σύγκριση έργα λογισμικού Δέντρα κλήσης συναρτήσεων Repositories Μετρικές ομοιότητας δέντρων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  25. 25. Σύγκριση Δέντρων Αλγόριθμος σύγκρισης δέντρων κλήσης δέντρα κλήσης συνάρτησης μετρική ομοιότητας 25
  26. 26. 26 Σύγκριση κόμβων:  Ίδιο βάθος  Σύγκριση από κάτω προς τα πάνω βάσει: - tanimoto κώδικα - ομοιότητα παιδιών Ομοιότητα κόμβων: Ομοιότητα δέντρων: 1. (tanimoto κώδικα + ομοιοτήτων παιδιών) / μέγιστο πλήθος παιδιών+1 ∏ ομοιοτήτων κόμβων 2. (tanimoto κώδικα + ομοιοτήτων παιδιών) / μέγιστo πλήθος παιδιών+1 Σ ομοιοτήτων κόμβων/μέγιστη δυνατή τιμή 3. ∏(tanimoto κώδικα +ομοιότητα παιδιών) Σ ομοιοτήτων κόμβων/μέγιστη δυνατή Function A1 Function A Function B Function A2 Function B3 Function B2 Function B1 Σύγκριση Δέντρων
  27. 27. 27 Υποσύστημα Μελέτης Δομής Εισαγωγή έργων λογισμικού Εξαγωγή δέντρων Σύγκριση δέντρων Υπό σύγκριση έργα λογισμικού Δέντρα κλήσης συναρτήσεων Repositories Μετρικές ομοιότητας δέντρων Εξαγωγή μετρικών Μετρικές αξιολόγησης Μετρικές ομοιότητας
  28. 28. 28 Υπολογισμός μετρικών αξιολόγησης μετρικές ομοιότητας αρχείων μετρική αξιολόγησηςΥπολογισμός τελικής ομοιότητας έργων τελική τιμή ομοιότητας Εξαγωγή μετρικών
  29. 29. Πειράματα - Δεδομένα Έργα λογισμικού από το GitHub ■ Όμοια έργα 10 repositories για pacman + 4 με 11 forks από το καθένα = 93 ■ Ανόμοια έργα 4 repositories για pacman, android list view, android stack view, logistic regression + 4 ή 5 forks από το καθένα = 21 29
  30. 30. Πειράματα –Όμοια Δεδομένα Μέθοδος AUC με σχόλια AUC χωρίς σχόλια FileTokens 0,991 0,985 FunctionTokens 0,988 0,986 LSA 0,991 0,977 LSA+SVD 0,970 Μη σύγκλιση CallTreeProd 0,972 0,972 CallTreeSum 0,906 0,905 CallTreeHeu 0,929 0,929 30
  31. 31. Πειράματα –Όμοια Δεδομένα FileTokens FunctionTokens LSA Με σχόλι α Χωρίς σχόλι α LSA+SVD CallTreeProd CallTreeSum CallTreeHeu 31 Στοιχεία διαγωνίου: Μέσος όρος ομοιότητας έργων λογισμικού που είναι διακλαδώσεις του ίδιου αρχείου Λοιπά στοιχεία: Μέσος όρος ομοιότητας έργων λογισμικού του repository i με έργα λογισμικού του repository j
  32. 32. Παραδείγματα 32
  33. 33. Παραδείγματα 33
  34. 34. Παραδείγματα 34
  35. 35. Πειράματα – Ανόμοια Δεδομένα FileTokens FunctionTokens LSA CallTreesProd 35 Στοιχεία διαγωνίου: Μέσος όρος ομοιότητας έργων λογισμικού που είναι διακλαδώσεις του ίδιου αρχείου Λοιπά στοιχεία: Μέσος όρος ομοιότητας έργων λογισμικού του repository i με έργα λογισμικού του repository j
  36. 36. Συμπεράσματα ■ Αύξηση της μετρικήςAUC όταν συμπεριλαμβάνονται τα σχόλια στις μεθόδους μελέτης περιεχομένου ■ Αμετάβλητη η μετρικήAUC για τις μεθόδους δέντρων κλήσης κατά την προσθήκη σχολίων ■ Αύξηση των τιμών ομοιότητας με την προσθήκη σχολίων σε όμοια έργα λογισμικού. ■ Μείωση των τιμών ομοιότητας με την προσθήκη σχολίων σε ανόμοια έργα λογισμικού. ■ Απόδοση μηδενικών τιμών ομοιότητας κατά τη σύγκριση ανόμοιων έργων λογισμικού με τη χρήση δέντρων κλήσης συνάρτησης. 36
  37. 37. Μελλοντική εργασία ■ Εξαγωγή μιας ενιαίας τιμής ομοιότητας των έργων λογισμικού ■ Δυνατότητα χρήσης feedback για αξιολόγηση της ομοιότητας των έργων και από το χρήστη ■ Προσαρμογή συστήματος και για άλλες γλώσσες προγραμματισμού (π.χ. C++, Python) 37
  38. 38. Ευχαριστίες Ευχαριστώ θερμά: ■ τον Αναπληρωτή ΚαθηγητήΣυμεωνίδηΑνδρέα ■ τονΥποψήφιο Διδάκτορα Κρασανάκη Εμμανουήλ 38
  39. 39. Ευχαριστώ για την προσοχή σας! 39
  40. 40. Ερωτήσεις 40
  41. 41. ΔιεπαφήΥπηρεσίας Ιστού 41

×