3. Περιγραφή του Προβλήματος
26.3.2020 3
Αυξημένες απαιτήσεις έργων λογισμικού
Αποθετήρια Κώδικα:
• Διάσπαρτες ομάδες
• Ανάγκη για διαχείριση και συντονισμό της ομάδας
Ποιότητα Λογισμικού ⇔ Σωστή διαχείριση και ανάθεση εργασιών
Πρόβλημα:
Χειροκίνητη αξιολόγηση και ανάθεση των εργασιών:
• Μεγάλος όγκος αναφορών και ζητημάτων καθημερινά
• Πρακτικά αναποτελεσματικό σε έργα μεγάλης κλίμακας!!
• Ανθρωποώρες εργασίες που μπορούν να αξιοποιηθούν πιο παραγωγικά
• Οικονομικές επιπτώσεις στο project, ακόμα και απώλεια στόχου παραγωγής
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
4. Σκοπός της Διπλωματικής & το περιβάλλον του GitHub
26.3.2020 4
Στόχος:
Αυτοματοποίηση της διαδικασίας ανάθεσης εργασιών:
• Αξιοποίηση πληροφορίας από αποθετήρια κώδικα
• Χαρακτηριστικά που μαρτυρούν την καταλληλότητα του μηχανικού για μια εργασία
• Βελτιστοποίηση-Ενίσχυση εμπιστευτικότητας του μοντέλου
Τι είναι το GitHub & γιατί το επιλέξαμε ως πηγή δεδομένων;
• Πλατφόρμα φιλοξενίας συλλογής ανοιχτού κώδικα
• Επιπλέον χαρακτηριστικά: Bug Tracking, Task Management, Feature Requests
• Δημοφιλές: 40M+ χρήστες, 100Μ+ αποθετήρια (Ιαν. 2020)
• Διαθεσιμότητα δεδομένων (Rest API v3)
Καινοτομία! Δεν υπάρχει λειτουργικότητα αυτόματης ανάθεσης στο GitHub
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
5. GitHub Issues
26.3.2020 5
1
2
3
6
5
4
Σημαντικά πεδία ενός Issue Report:
1. Title
2. Status
3. Body
4. Comments
5. Labels
6. Assignee
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
8. Συλλογή και Οργάνωση Δεδομένων
26.3.2020 8
Συλλογή δεδομένων από 3000 αποθετήρια
Αρχεία σε .JSON μορφή ⇒ βολικά για NoSQL βάση δεδομένων (MongoDB)
6 Collections, τα πιο βασικά πεδία:
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
9. Στάδια Προεπεξεργασίας
26.3.2020 9
Επιλογή Αποθετηρίων και Καθορισμός Developers:
• Τουλάχιστον 2 developers στο αποθετήριο
• Συνολικά issues στο [50, 5000]
• Support 15 κλειστών issues για κάθε developer
Εύρωστη επιλογή χαρακτηριστικού κλάσης:
• Πεδίο “assignee” vs “closed_by”
• Ποιο πεδίο να εμπιστευτούμε;
• Είναι πιθανό να έχουμε ελλειπούσες τιμές.
• Σύστημα απόφασης 3 επιπέδων (διαγρ. ροής)
Προεπεξεργασία κειμένου:
• Ανεπεξέργαστο κείμενο ⇒ εισαγωγή θορύβου
Assigne
e?
Closed_b
y?
Dev Role?
Κλάση ←
assignee
Κλάση ←
closed_by
Απόρριψη
issue
Απόρριψ
η issue
Ye
s
No
Ye
s
No
Ops
Dev,
DevOp
s
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
10. Χαρακτηριστικά Αξιολόγησης Συνεισφοράς (1/5)
26.3.2020 10
“Κατά πόσο συνδέεται η περιγραφή του προβλήματος με τα
προβλήματα που λύνει ο developer;”
Title, Body
Μετατροπή κειμένου σε μορφή που επιτρέπει σύγκριση
⇒ Διανυσματοποίηση - Vector Space Modeling
Τεχνική διανυσματοποίησης TF-IDF (Term Frequency – Inverse
Document Frequency):
• ΤF: συχνότητα εμφάνισης του όρου στον τίτλο*
• IDF: λογάριθμος (πλήθος τίτλων/ πλήθος των τίτλων*
όπου εμφανίζεται ο όρος)
• Για τον όρο 𝒘, document D, και corpus C :
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
* Ομοίως και για το σώμα(body)
11. Χαρακτηριστικά Αξιολόγησης Συνεισφοράς (2/5)
26.3.2020 11
Ζητούμενο: Κατηγοριοποίηση νέου issue με βάση τίτλο/σώμα
• Στην περίπτωσή μας, κατηγορία == developer ⇒ Multiclass πρόβλημα ταξινόμησης
Support Vector Machines:
• “One vs Rest” προσέγγιση: ανήκει ή όχι το issue στα ενδιαφέροντα του dev?
• Στην πραγματικότητα μας ενδιαφέρει η πιθανότητα ανάθεσης: απόσταση από το επίπεδο διαχωρισμού
Επιλογή Παραμέτρων SVM:
• Κάθε αποθετήριο διαφέρει στη φύση δεδομένων του
• Ορισμός ενός grid παραμέτρων για ευελιξία
• Εύρεση βέλτιστου συνδυασμού με 5-fold Cross Validation
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
12. Χαρακτηριστικά Αξιολόγησης Συνεισφοράς (3/5)
26.3.2020 12
Labels
“Κατά πόσο ένας dev τείνει να ασχολείται με issues που φέρουν
συγκεκριμένο label;”
Αξιολόγηση dev με βάση τα labels:
• Μέτρηση ενασχόλησης ανά label στα παρελθοντικά
issues
• Ο dev λαμβάνει σκορ ίσο με τη σχετική συχνότητα
εμφάνισής του σε αυτό το label (αριθμός στο [0, 1])
• Σε περίπτωση που ένα issue φέρει πολλαπλά labels,
τότε αθροίζουμε τις συχνότητες του dev στο κάθε
label, και εφαρμόζουμε το προηγούμενο βήμα.
Labels Contribution Example
Label Dev A Dev B Dev C
“Interface” 5 10 15
Score 5/30 10/30 15/30
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
13. Χαρακτηριστικά Αξιολόγησης Συνεισφοράς (4/5)
26.3.2020 13
Comments
“Πόσο συνδέονται τα παρελθοντικά issues στα οποία έχει
σχολιάσει ο dev με το υπό εξέταση issue;”
Αξιολόγηση dev με βάση τα comments:
• Ανακτώνται τα issues που έχει σχολιάσει ο dev σε παράθυρο 365 ημερών
• Υπολογίζεται η ομοιότητα συνημιτόνου των τίτλων των σχολιασθέντων
issues με τον τίτλο του νέου issue
• Εξάγεται η μέση τιμή ομοιότητας συνημιτόνου
• Η τιμή αυτή αποτελεί σκορ του dev από τα comments (ανήκει στο [0, 1])
Μετρική ομοιότητας συνημιτόνου:
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
14. Χαρακτηριστικά Αξιολόγησης Συνεισφοράς (5/5)
26.3.2020 14
Commits
“Κατά πόσο μπορούν τα παρελθοντικά commits ενός developer
να συνδεθούν με το υπό εξέταση issue;”
Αξιολόγηση dev με βάση τα commits:
• Ανακτώνται τα commits που έχει κάνει ο dev σε παράθυρο 365 ημερών
• Υπολογίζεται η ομοιότητα συνημιτόνου του commit message των
commits με τον τίτλο του νέου issue
• Εξάγεται η μέγιστη τιμή ομοιότητας συνημιτόνου.
• Η τιμή αυτή αποτελεί σκορ του dev από τα commits (ανήκει στο [0, 1])
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
15. Συνολική Συνεισφορά
26.3.2020 15
• Η τελική ανάθεση issue βασίζεται στα 5 χαρακτηριστικά: title, body,
labels, comments, commits.
• Στόχος να αυξήσουμε την εμπιστευτικότητα με την οποία το σύστημα
αναθέτει ένα issue
• Για κάθε dev υπολογίζονται ο μέσος όρος των σκορ που λαμβάνει
• Επιλέγεται εκείνος-εκείνη που συγκεντρώνει το μεγαλύτερο συνολικό
σκορ
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
16. Βελτιστοποίηση Υπολογισμού Συνεισφοράς
26.3.2020 16
“Μήπως υπάρχει διαφορετική αντιμετώπιση, και συνεπώς διαφορετική βαρύτητα
χαρακτηριστικών ανά αποθετήριο;”
• Στόχος να προσαρμόσουμε κατάλληλα
την βαρύτητα των 5 χαρακτηριστικών,
αντί για το μέσο όρο τους
• Τη δουλειά αυτή αναλαμβάνει ένα
fully-connected νευρωνικό δίκτυο
• Είσοδος: τα σκορ του dev
• Έξοδος: η καταλληλότητα ανάθεσης
στο [0,1]
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
17. Generalization and Hyperparameters Selection
26.3.2020 17
• Δυσκολία: Ένα νευρωνικό που να γενικεύει όχι σε ένα, αλλά σε
πολλά αποθετήρια!
• Αντιμετώπιση: Reconfigurable αρχιτεκτονική νευρωνικού δικτύου
Ορισμός ενός σετ μεταβλητών παραμέτρων
⇒ Επιλογή των βέλτιστων με αναζήτηση
πλέγματος και 5-fold Cross Validation
Ορισμός ενός σετ σταθερών παραμέτρων
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
19. Διαδικασία Εκπαίδευσης & Αξιολόγησης
26.3.2020 19
Configurations προς Αξιολόγηση:
• “Title+Body”
• “Title+Body+Labels”
• “Title+Body+Labels+Comments”
• “Title+Body+Labels+Comments+Commits”
• “Optimized Model”
Αυξητική Μάθηση:
• Χρονική διάταξη των issues
• Τα πρώτα 70% για training και 30% testing
• Διαχωρισμός του testing σε 6 ισομήκη folds
• Πρόβλεψη στο επόμενο fold
• Ενσωμάτωση στο training set και συνέχεια στο επόμενο fold
Μετρικές Αξιολόγησης:
𝐴𝑐𝑐𝑢𝑟𝑎𝑐𝑦 =
𝑇𝑃 + 𝑇𝑁
𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁
𝐹1_𝑆𝑐𝑜𝑟𝑒 = 2 ×
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 ∙ 𝑟𝑒𝑐𝑎𝑙𝑙
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑟𝑒𝑐𝑎𝑙𝑙
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
20. Κατανομή Developers στα προς Ανάλυση Αποθετήρια
26.3.2020 20
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
21. Επίδραση του πλήθους των Developers
26.3.2020 21
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
22. Κατανομή Απόδοσης των Configurations - Accuracy
26.3.2020 22
Ποσοστό παρατηρήσεων πάνω από 0.6:
• 27% για το ‘title+body’
• 28% για το ‘title+body+labels’
• 28% για το ‘title+body+labels+comments’
• 42% για το ‘title+body+labels+comments+commits’
• 46% για το ‘optimized model’
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
23. Κατανομή Απόδοσης των Configurations – F1-Score
26.3.2020 23
Ποσοστό παρατηρήσεων πάνω από 0.6:
• 23% για το ‘title+body’
• 25% για το ‘title+body+labels’
• 29% για το ‘title+body+labels+comments’
• 40% για το ‘title+body+labels+comments+commits’
• 43% για το ‘optimized model’
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
24. Ποσοστό Καλύτερης Δυνατής Τιμής
26.3.2020 24
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
26. Συμπεράσματα
26.3.2020 26
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
Η ανάλυση της δραστηριότητας ενός developer δύναται να αξιοποιηθεί στην
αυτοματοποίηση ανάθεσης εργασιών
Πληροφορίες από διαφορετικές πηγές μπορούν να ενισχύσουν την εμπιστευτικότητα
του συστήματος
Τα πειράματα δείχνουν ότι το σύστημα ανταποκρίνεται ικανοποιητικά σε ένα μεγάλο
εύρος αποθετηρίων
Το σύστημα μπορεί να αποτελέσει χρήσιμο εργαλείο στα πλαίσια της ανάπτυξης έργων
λογισμικού.
27. Μελλοντική Εργασία
26.3.2020 27
Εξαγωγή χαρακτηριστικών από αρχεία κώδικα
Fine-tuning ή επαναπροσδιορισμός του στρώματος βελτιστοποίησης
Βελτίωση διαδικασίας εκπαίδευσης (issue-προς-issue εκπαίδευση)
Επέκταση με User Interface και ανάθεση σε πραγματικό χρόνο
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
28. Ευχαριστίες
26.3.2020 28
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
Θα ήθελα να ευχαριστήσω θερμά:
• Τον κ. Συμεωνίδη Ανδρέα
• Τους Διαμαντόπουλο Θέμη και Παπαμιχαήλ Μιχάλη
• Όλους εσάς που παρακολουθήσατε την παρουσίαση!
29. 26.3.2020 29
Αυτοματοποίηση Ανάθεσης Εργασιών με Εφαρμογή Τεχνικών
Εξόρυξης Γνώσης σε Αποθετήρια Ανοιχτού Λογισμικού
Ευχαριστώ για την προσοχή σας
Ερωτήσεις;