Αναγνώριση προφίλ μηχανικών λογισμικού μέσω
εφαρμογής τεχνικών εξόρυξης δεδομένων σε πηγαίο
κώδικα και σχόλια στο GitHub
Ιωάννης Ζαφειρίου
Υπό την επίβλεψη του
Επ. Καθηγητή
κ. Ανδρέα Λ. Συμεωνίδη
Θεσσαλονίκη, 29-6-2017
1
Η επιθυμία για ευελιξία
Το κόστος των αλλαγών αυξάνει δραματικά σε
προχωρημένα στάδια της ανάπτυξης
Δυνατότητα προσαρμογής σε αλλαγές, διατηρώντας
χαμηλό προφίλ κόστους
Γέννηση μοντέρνων προσεγγίσεων
στην ανάπτυξη λογισμικού
4
Μοντέρνες προσεγγίσεις
ανάπτυξης λογισμικού
Πηγή: http://stateofagile.versionone.com/
Διαφορές από τις κλασσικές προσεγγίσεις:
o Ένταξη του πελάτη στη διαδικασία
ανάπτυξης
o Στενή συνεργασία μεταξύ
διεπιστημονικών, αυτοργανούμενων
ομάδων
o Έμφαση στην άμεση και διαρκή
επικοινωνία
Χαρακτηριστικά παραδείγματα:
o Agile
o DevOps
5
Στόχος της διπλωματικής
• Συλλογή δεδομένων για τη δραστηριότητα μηχανικών σε
projects
• Εξαγωγή χαρακτηριστικών του είδους και της δυναμικότητας
της συνεισφοράς τους σε αυτά
• Αναγνώριση των ρόλων που αναλαμβάνουν οι μηχανικοί στα
projects
• Αξιολόγηση της δυναμικότητας της συνεισφοράς τους
8
• 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
Data Collection
GitHub
• Επιλογή του GitHub ως πηγή δεδομένων για τη δραστηριότητα των
μηχανικών
• Συλλογή δεδομένων από δημόσια repositories
• Αποθήκευση αποτελεσμάτων
o Συνολικά 46 java repositories με διαφορετικά
χαρακτηριστικά όπως μέγεθος και
δημοτικότητα
o 4 κατηγορίες δραστηριότητας/συνεισφοράς
(commits, pulls, issues, comments)
13
Data Collection
o Issues: Προβλήματα προς επίλυση,
αιτήσεις νέων features, to-do list
o Commits: Αλλαγές στα αρχεία του
repository
o Pulls: Αιτήσεις για συγχώνευση
commits
o Comments: Σχόλια που γράφονται
συζητώντας τις παραπάνω μορφές
δραστηριότητας
o Τεράστιο πλήθος εγγράφων
o Παροχή περιττής πληροφορία
14
Data Analysis & Document Repository
• Απόρριψη περίσσειας πληροφορίας για τον κάθε τύπο
δραστηριότητας/συνεισφοράς
• Εφαρμογή στατικής ανάλυσης πηγαίου κώδικα στο περιεχόμενο των
commits
• Αρχειοθέτηση των αποτελεσμάτων σε αποθήκη εγγράφων
15
Static Source Code Analysis
Στόχος:
Ανίχνευση των σφαλμάτων που
εισάγονται στο σύστημα με
κάποιο commit
Εργαλείο:
PMD
Κανόνες που ελέγχθηκαν:
• Βασικοί (Basic, Braces, Naming)
• Αναγνωσιμότητας (Empty Code,
Comments, Code Size)
• Ποιότητας (Junit, Strict Exceptions,
Security Code Guidelines,
Unnecessary Code)
16
Engineer Activity Features
• Υποβολή ερωτημάτων στην Elasticsearch
• Επεξεργασία των αποτελεσμάτων και κατασκευή ποσοτικών
χαρακτηριστικών της δραστηριότητας των μηχανικών
• Σχηματισμός συνόλων εκπαίδευσης για αλγορίθμους εξόρυξης
δεδομένων
19
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
Vanilla
No 1 day
devs
No firework
devs
No irregulars
Επιλογή κατάλληλων μοντέλων
Αυτοματοποιημένη προ-επεξεργασία:
Απόρριψη παρατηρήσεων με
ελλιπείς τιμές
Απόρριψη μηχανικών με σύντομη
περίοδο συνεισφοράς
Απομάκρυνση ιδιαίτερων
παρατηρήσεων
Κανονικοποίηση
χαρακτηριστικών
Στόχος: Βέλτιστος διαχωρισμός ομάδων
Αλγόριθμοι ομαδοποίησης:
K-Means
Agglomerative Hierarchical
Affinity Propagation
Χωρίζει σε ομάδες ίσης διασποράς,
ελαχιστοποιώντας το κριτήριο
Εμφωλευμένες ομάδες με
bottom-up προσέγγισηΕπιλογή προτύπων σημείων
με τη μετάδοση μηνυμάτων
21
Μετρικές αξιολόγησης:
Cohesion
Separation
Average Silhouette
Πείραμα αξιολόγησης 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
Πείραμα αξιολόγησης 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
Συμπεράσματα – Μελλοντική εργασία
Επιτυχής εντοπισμός διακριτών ρόλων
Εντοπισμός ομάδων που επιδεικνύουν
τεχνικές και επικοινωνιακές δεξιότητες
Υλοποίηση δομής διατήρησης των δεδομένων
Επεκτάσιμη υλοποίηση
o Επέκταση του συνόλου των repositories
o Κατασκευή διαφορετικών χαρακτηριστικών αξιολόγησης
o Εφαρμογή πιο εξειδικευμένων μεθόδων για την κατασκευή χαρακτηριστικών
34
Ευχαριστίες
Θα ήθελα να ευχαριστήσω θερμά τον επιβλέποντα της
διπλωματικής μου εργασίας, κ. Ανδρέα Συμεωνίδη, για την
ευκαιρία που μου δόθηκε να αναπτύξω ένα τόσο ενδιαφέρον και
πολύπλευρο θέμα, την εμπιστοσύνη που μου έδειξε, καθώς και τη
βοήθεια που πρόσφερε απλόχερα.
35