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.

Ιωάννη Α. Ζαφειρίου

80 views

Published on

Αναγνώριση Προφίλ Μηχανικών Λογισμικού μέσω Εφαρμογής Τεχνικών Εξόρυξης Δεδομένων σε Πηγαίο Κώδικα και Σχόλια στο GitHub

Published in: Education
  • Be the first to comment

  • Be the first to like this

Ιωάννη Α. Ζαφειρίου

  1. 1. Αναγνώριση προφίλ μηχανικών λογισμικού μέσω εφαρμογής τεχνικών εξόρυξης δεδομένων σε πηγαίο κώδικα και σχόλια στο GitHub Ιωάννης Ζαφειρίου Υπό την επίβλεψη του Επ. Καθηγητή κ. Ανδρέα Λ. Συμεωνίδη Θεσσαλονίκη, 29-6-2017 1
  2. 2. Περιεχόμενα  Εισαγωγή  Σκοπός της διπλωματικής  Γνώσεις που αποκτήθηκαν  Μεθοδολογία  Πειράματα – Αποτελέσματα Συμπεράσματα  Συμπεράσματα – Μελλοντική εργασία 2
  3. 3. Περιεχόμενα  Εισαγωγή  Σκοπός της διπλωματικής  Γνώσεις που αποκτήθηκαν  Μεθοδολογία  Πειράματα – Αποτελέσματα Συμπεράσματα  Συμπεράσματα – Μελλοντική εργασία 3
  4. 4. Η επιθυμία για ευελιξία Το κόστος των αλλαγών αυξάνει δραματικά σε προχωρημένα στάδια της ανάπτυξης Δυνατότητα προσαρμογής σε αλλαγές, διατηρώντας χαμηλό προφίλ κόστους Γέννηση μοντέρνων προσεγγίσεων στην ανάπτυξη λογισμικού 4
  5. 5. Μοντέρνες προσεγγίσεις ανάπτυξης λογισμικού Πηγή: http://stateofagile.versionone.com/ Διαφορές από τις κλασσικές προσεγγίσεις: o Ένταξη του πελάτη στη διαδικασία ανάπτυξης o Στενή συνεργασία μεταξύ διεπιστημονικών, αυτοργανούμενων ομάδων o Έμφαση στην άμεση και διαρκή επικοινωνία Χαρακτηριστικά παραδείγματα: o Agile o DevOps 5
  6. 6. Το πρόβλημα Πηγή: http://stateofagile.versionone.com/ Δημιουργείται ανάγκη • Εντοπισμού τέτοιων ατόμων • Αξιολόγησης των δεξιοτήτων τους Ζήτηση για μηχανικούς που διαθέτουν εξίσου τεχνικές και επικοινωνιακές δεξιότητες 6
  7. 7. Περιεχόμενα  Εισαγωγή  Στόχος της διπλωματικής  Γνώσεις που αποκτήθηκαν  Μεθοδολογία  Πειράματα – Αποτελέσματα Συμπεράσματα  Συμπεράσματα – Μελλοντική εργασία 7
  8. 8. Στόχος της διπλωματικής • Συλλογή δεδομένων για τη δραστηριότητα μηχανικών σε projects • Εξαγωγή χαρακτηριστικών του είδους και της δυναμικότητας της συνεισφοράς τους σε αυτά • Αναγνώριση των ρόλων που αναλαμβάνουν οι μηχανικοί στα projects • Αξιολόγηση της δυναμικότητας της συνεισφοράς τους 8
  9. 9. Περιεχόμενα  Εισαγωγή  Σκοπός της διπλωματικής  Γνώσεις που αποκτήθηκαν  Μεθοδολογία  Πειράματα – Αποτελέσματα  Συμπεράσματα – Μελλοντική εργασία 9
  10. 10. Γνώσεις που αποκτήθηκαν Συλλογή δεδομένων από ιστοσελίδες Σχεδίαση και διατήρηση αποθήκης εγγράφων Στατική ανάλυση πηγαίου κώδικα Μέθοδοι κατηγοριοποίησης και αξιολόγησης μηχανικών Εφαρμογή τεχνικών εξόρυξης δεδομένων 10
  11. 11. Περιεχόμενα  Εισαγωγή  Σκοπός της διπλωματικής  Γνώσεις που αποκτήθηκαν  Μεθοδολογία  Πειράματα – Αποτελέσματα  Συμπεράσματα – Μελλοντική εργασία 11
  12. 12. • Data Collection Raw Activity Data • Data Analysis Principled Data • Document Repository Structured Data • Query Construction Engineer Activity Features • Data Mining Clustering Models • Model Evaluation Evaluation Report Μεθοδολογία GitHub 12
  13. 13. Data Collection GitHub • Επιλογή του GitHub ως πηγή δεδομένων για τη δραστηριότητα των μηχανικών • Συλλογή δεδομένων από δημόσια repositories • Αποθήκευση αποτελεσμάτων o Συνολικά 46 java repositories με διαφορετικά χαρακτηριστικά όπως μέγεθος και δημοτικότητα o 4 κατηγορίες δραστηριότητας/συνεισφοράς (commits, pulls, issues, comments) 13
  14. 14. Data Collection o Issues: Προβλήματα προς επίλυση, αιτήσεις νέων features, to-do list o Commits: Αλλαγές στα αρχεία του repository o Pulls: Αιτήσεις για συγχώνευση commits o Comments: Σχόλια που γράφονται συζητώντας τις παραπάνω μορφές δραστηριότητας o Τεράστιο πλήθος εγγράφων o Παροχή περιττής πληροφορία 14
  15. 15. Data Analysis & Document Repository • Απόρριψη περίσσειας πληροφορίας για τον κάθε τύπο δραστηριότητας/συνεισφοράς • Εφαρμογή στατικής ανάλυσης πηγαίου κώδικα στο περιεχόμενο των commits • Αρχειοθέτηση των αποτελεσμάτων σε αποθήκη εγγράφων 15
  16. 16. Static Source Code Analysis Στόχος: Ανίχνευση των σφαλμάτων που εισάγονται στο σύστημα με κάποιο commit Εργαλείο: PMD Κανόνες που ελέγχθηκαν: • Βασικοί (Basic, Braces, Naming) • Αναγνωσιμότητας (Empty Code, Comments, Code Size) • Ποιότητας (Junit, Strict Exceptions, Security Code Guidelines, Unnecessary Code) 16
  17. 17. Document Repository • Υλοποιήθηκε αξιοποιώντας Elasticsearch • Schema-free, κατανεμημένη μηχανή αναζήτησης, βασισμένη στη Lucene • Αρχειοθέτηση JSON εγγράφων σε μητρώα • Αναζήτηση συγκεκριμένων εγγράφων υποβάλλοντας HTTP ερωτήματα • Δημιουργήθηκαν 4 μητρώα (commits, issues, pulls, contributors) 17
  18. 18. Commits Index Περιλαμβάνει όλα τα commits που συγκεντρώθηκαν Σημαντικά πεδία: o Repository o Author o Committer o Files 18
  19. 19. Engineer Activity Features • Υποβολή ερωτημάτων στην Elasticsearch • Επεξεργασία των αποτελεσμάτων και κατασκευή ποσοτικών χαρακτηριστικών της δραστηριότητας των μηχανικών • Σχηματισμός συνόλων εκπαίδευσης για αλγορίθμους εξόρυξης δεδομένων 19
  20. 20. Engineer Activity Features o Σχηματίστηκαν 4 διαφορετικά σύνολα χαρακτηριστικών o Κάθε σύνολο χαρακτηριστικών θα οδηγήσει σε ένα μοντέλο κατηγοριοποίησης των μηχανικών Συνολική συνεισφορά Συνεισφορά σε Dev θέματα Participated Issues Closed Issues / Day Comments Made Average Issue TiP [days] Opened Issues Defects Added / Commit Closed Issues Defects Removed / Commit Commits Authored Συνεισφορά σε Ops θέματα Συνεισφορά σε DevOps θέματα Average Comments / Issue Average Issue TiP [days] Average Comment Length Defects Added / Commit Average Response Time [hours] Defects Removed / Commit Response Ratio Average Comments / Issue Average Comment Length 20
  21. 21. Vanilla No 1 day devs No firework devs No irregulars Επιλογή κατάλληλων μοντέλων Αυτοματοποιημένη προ-επεξεργασία:  Απόρριψη παρατηρήσεων με ελλιπείς τιμές  Απόρριψη μηχανικών με σύντομη περίοδο συνεισφοράς  Απομάκρυνση ιδιαίτερων παρατηρήσεων  Κανονικοποίηση χαρακτηριστικών Στόχος: Βέλτιστος διαχωρισμός ομάδων Αλγόριθμοι ομαδοποίησης:  K-Means  Agglomerative Hierarchical  Affinity Propagation Χωρίζει σε ομάδες ίσης διασποράς, ελαχιστοποιώντας το κριτήριο Εμφωλευμένες ομάδες με bottom-up προσέγγισηΕπιλογή προτύπων σημείων με τη μετάδοση μηνυμάτων 21 Μετρικές αξιολόγησης:  Cohesion  Separation  Average Silhouette
  22. 22. Περιεχόμενα  Εισαγωγή  Σκοπός της διπλωματικής  Γνώσεις που αποκτήθηκαν  Μεθοδολογία  Πειράματα – Αποτελέσματα  Συμπεράσματα – Μελλοντική εργασία 22
  23. 23. Σύνολο πειραμάτων Dataset Algorithm vanilla no 1 day devs no firework devs no irregulars K-Means     Affinity Propagation     Agglomerative     23 Algorithm Parameters K-Means n_clusters = (2,3,4,5,6,7,8,9,10,11,12,13,14), maximum_iterations=300, initializations=300, initialization_method=’random’, algorithm=’full’ Affinity Propagation damping = (0.5, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.90, 0.95) preferences = (-10,-5,-4,-3,-2,-1,0,1,2,3,4,5), maximum_iterations=2000 convergence_iterations=200 Agglomerative n_clusters = (2,3,4,5,6,7,8,9,10,11,12,13,14) affinity = (‘euclidean’, ‘manhattan’), linkage = (‘complete’, ‘average’)
  24. 24. Πείραμα Αναγνώρισης Ρόλων 24
  25. 25. Πείραμα Αναγνώρισης Ρόλων - καλύτερα μοντέλα 25 K-Means, no irregulars, n_clusters = 5 Agglomerative no irregulars, euclidean, average, n_clusters = 7
  26. 26. Βελτίωση μοντέλου αναγνώρισης ρόλων 26 Agglomerative Ειδικό μοντέλο euclidean, average, n_clusters = 7 Τελικό μοντέλο
  27. 27. Ερμηνεία αποτελεσμάτων Feature Cluster Issues Participated Comments Made Issues Opened Issues Closed Commits Authored Hypothesis #1 Low Low Low Low High Pure Dev #2 Low Low Low Low Low Undecided #3 Low Low Low Low Mid Pure Dev #4 High High Mid Mid Low Pure Ops / QA #5 High High High High High DevOps #6 High High High High High DevOps #7 High High High High Low Project Owner 27
  28. 28. Ερμηνεία αποτελεσμάτων Feature Cluster Issues Participated Comments Made Issues Opened Issues Closed Commits Authored Hypothesis #1 High High High High Mid DevOps #2 High Mid High High Low Project Owner #3 High Mid Low High Mid DevOps #4 High High Mid High High DevOps #5 High High Mid High Low Project Owner #6 Low Low Low Low High Pure Dev #7 Low-Mid Low-Mid Low-Mid Low Low-Mid Unknown 28
  29. 29. Πείραμα αξιολόγησης Dev συνεισφοράς 29 Feature Cluster Closed Issues Per Day Average Issue TiP Defects Added Per Commit Defects Removed Per Commit Hypothesis #1 Low Mid High High Productive, Responsive, Elegant #2 Mid Mid Mid Mid Productive, Responsive, Elegant #3 Low High Low Low Productive, Responsive, Elegant #4 High Low Low Low Productive, Responsive, Elegant Agglomerative, no irregulars, euclidean, average
  30. 30. Πείραμα αξιολόγησης Ops συνεισφοράς 30 Feature Cluster Average Comments Per Issue Average Comment Length Response Ratio Average Response Time Hypothesis #1 Mid High High Low Involved, Verbal, Responsive #2 Mid Low Mid High Involved, Verbal, Responsive #3 High Mid High Low Involved, Verbal, Responsive #4 Low High Low High Involved, Verbal, Responsive #5 Mid Mid Mid Mid Involved, Verbal, Responsive Agglomerative, no irregulars, euclidean, average, n_clusters = 5
  31. 31. Πείραμα αξιολόγησης DevOps συνεισφοράς 31 Agglomerative, no irregulars, euclidean, complete, n_clusters = 6
  32. 32. Πείραμα αξιολόγησης DevOps συνεισφοράς 32 Feature Cluster Average Issue TiP Defects Added Per Commit Defects Removed Per Commit Average Comments Per Issue Average Comment Length Hypothesis #1 Mid High High Low Mid Responsive, Elegant, Involved, Verbal #2 Low Low Low Low Low Responsive, Elegant, Involved, Verbal #3 High Low Mid Low Mid Responsive, Elegant, Involved, Verbal #4 Low Low Low Mid High Responsive, Elegant, Involved, Verbal #5 Low Mid Mid High Mid Responsive, Elegant, Involved, Verbal #6 Low Low Low High Low Responsive, Elegant, Involved, Verbal
  33. 33. Περιεχόμενα  Εισαγωγή  Σκοπός της διπλωματικής  Γνώσεις που αποκτήθηκαν  Μεθοδολογία  Πειράματα – Αποτελέσματα  Συμπεράσματα – Μελλοντική εργασία 33
  34. 34. Συμπεράσματα – Μελλοντική εργασία  Επιτυχής εντοπισμός διακριτών ρόλων  Εντοπισμός ομάδων που επιδεικνύουν τεχνικές και επικοινωνιακές δεξιότητες  Υλοποίηση δομής διατήρησης των δεδομένων  Επεκτάσιμη υλοποίηση o Επέκταση του συνόλου των repositories o Κατασκευή διαφορετικών χαρακτηριστικών αξιολόγησης o Εφαρμογή πιο εξειδικευμένων μεθόδων για την κατασκευή χαρακτηριστικών 34
  35. 35. Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά τον επιβλέποντα της διπλωματικής μου εργασίας, κ. Ανδρέα Συμεωνίδη, για την ευκαιρία που μου δόθηκε να αναπτύξω ένα τόσο ενδιαφέρον και πολύπλευρο θέμα, την εμπιστοσύνη που μου έδειξε, καθώς και τη βοήθεια που πρόσφερε απλόχερα. 35
  36. 36. Ευχαριστώ για την προσοχή σας! 36
  37. 37. Issues 37
  38. 38. Pulls 38
  39. 39. Contributor 39
  40. 40. Sample Patch 40
  41. 41. Sample Document 41
  42. 42. Πείραμα αξιολόγησης Dev συνεισφοράς 42
  43. 43. Πείραμα αξιολόγησης Ops συνεισφοράς 43
  44. 44. Πείραμα αξιολόγησης DevOps συνεισφοράς 44
  45. 45. Παράδειγμα «κακού» μοντέλου 45 Agglomerative, no irregulars, manhattan, average, n_clusters=8
  46. 46. Affinity Propagation 46
  47. 47. Affinity Propagation 47

×