Το διευρυµένο τοπίο του λογισµικού ανοιχτού κώδικα OSS αποδεικνύει την αυξανόµενη παραγωγική δραστηριότητα των µηχανικών λογισµικού που συνεισφέρουν σε πολλαπλές πλατφόρµες και διάφορα έργα λογισµικού. Η συµµετοχή τους σε αυτά τα έργα αναδεικνύει το ευρύ ϕάσµα των δεξιοτήτων τους, από τη συγγραφή κώδικα έως τη συνεργασία τους µε άλλους µηχανικούς λογισµικού. Καθώς στο οικοσύστηµα του λογισµικού ανοιχτού κώδικα υπάρχει µια διαρκής και συνεχώς αυξανόµενη δραστηριότητα, είναι πολύ σηµαντική µια πιο ολοκληρωµένη κατανόηση των συνεισφορών και των δεξιοτήτων των µηχανικών λογισµικού. Σκοπός της παρούσας διπλωµατικής είναι να αξιοποιήσει δεδοµένα από την υποδοµή World of Code (WoC) που περιέχει συγκεντρωµένα δεδοµένα από τα περισσότερα δη µόσια συστήµατα ελέγχου εκδόσεων για να παρέχει µια πιο ολοκληρωµένη εικόνα του προφίλ ενός µηχανικού λογισµικού. Εξάγοντας, αναλύοντας και οπτικοποιώντας αυτά τα δεδοµένα, αναπτύχθηκε µια εφαρµογή που παρουσιάζει µια περιεκτική επισκόπηση των δραστηριοτήτων ενός µηχανικού στα έργα λογισµικού ανοικτού κώδικα. Η οπτική αναπαράσταση των δεδοµένων, µετατρέπει πολύπλοκα σύνολα δεδοµένων σε εύκολα κατανοητές γραφικές µορφές. Η αξιολόγηση της εφαρµογής σε ένα σύνολο µηχανικών λογισµικού δείχνει ότι πετυχαίνει τους στόχους της. Προσφέρει µια εικόνα της δραστηριότητας, του ϱόλου και των τεχνικών δεξιοτήτων ενός µηχανικού, ενισχύοντας τη διαφάνεια και την κατανόηση της συνεισφοράς του στο οικοσύστηµα του OSS.
Design and implementation of an automation mechanism to automatically develop...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισµικού Ανοιχτού Κώδικα
1. Ανάπτυξη Εφαρμογής
Προφίλ Μηχανικών Λογισμικού
από Δεδομένα Αποθετηρίων
Λογισμικού Ανοιχτού Κώδικα
Βεγήρης Νικόλαος
ΑΕΜ: 7659
Επιβλέπων:
Ανδρέας Λ. Συμεωνίδης
Καθηγητής Α.Π.Θ
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Τομέας Ηλεκτρονικής και Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορίας & Υπολογισμών
2. Κίνητρο
Διευρυμένο τοπίο του Λογισμικού Ανοιχτού Κώδικα (OSS) παράγεται πλούτος δεδομένων.
Η σωστή αξιοποίησή αυτών των δεδομένων μπορεί να δώσει σημαντική πληροφορία για τους μηχανικούς
λογισμικού:
Συνεισφορά στο OSS
Τομείς εξειδίκευσης
Συμμετοχή σε έργα
Πρότυπα εργασίας
Συνεργασίες
Τα τρέχοντα εργαλεία παρουσιάζουν αποσπασματική εικόνα συνήθως και περιορίζονται σε συγκεκριμένες
πλατφόρμες ή έργα.
3. Προκλήσεις
Πως μπορούμε να δημιουργήσουμε μια ολοκληρωμένη αναπαράσταση των
δεξιοτήτων και της εμπειρίας μηχανικών στα διάφορα αποθετήρια και έργα
λογισμικού;
Πως μπορούμε να εξάγουμε ωφέλιμη πληροφορία, πέραν των τεχνικών
δεξιοτήτων από τη δραστηριότητα των μηχανικών λογισμικού;
4. Στόχοι
Δημιουργία ενός εργαλείου που με βάση το ιστορικό των commits:
Αξιοποιεί την πλειοψηφία των αποθετηρίων λογισμικού
Αναλύει τη συνεισφορά των μηχανικών λογισμικού στο OSS
Παρουσιάζει τεχνικές δεξιότητες, συνεργασίες και μοτίβα εργασίας
Το εργαλείο έχει στόχο να απευθύνεται σε ένα ευρύ κοινό:
Υπεύθυνοι προσλήψεων για εντοπισμό συνεργατών
Ερευνητές για ανάλυση προτύπων συνεισφοράς
Μεμονωμένοι μηχανικοί για αυτοαξιολόγηση
5. Πηγή Δεδομένων
Η εφαρμογή βασίζεται στο εκτεταμένο σύνολο δεδομένων
που παρέχει η υποδομή World of Code (WoC).
Συγκεντρώνει, οργανώνει και διασταυρώνει δεδομένα από
σχεδόν όλα τα δημόσια συστήματα ελέγχου εκδόσεων.
Περιλαμβάνει τεράστιο αριθμό αποθετηρίων Git και τα
κύρια στοιχεία είναι:
Commits (αντιπροσωπεύουν αλλαγές στον πηγαίο
κώδικα)
Trees (υποδεικνύουν τη δομή των φακέλων)
Blobs ( αντιπροσωπεύουν εκδόσεις των source files)
Tags ( χαρακτηρίζουν συγκεκριμένα commits ως
εκδόσεις )
Τα 173M Repositories περιέχουν
πάνω από:
3.1B commits
12.6B trees
12.5B blobs
6. Πηγή Δεδομένων
Αξιοποιήθηκαν δύο βάσεις δεδομένων που παρέχει το WoC.
Η MongoDB προσφέρει συλλογές με συνοπτικά στατιστικά στοιχεία για τους μηχανικούς και
τα έργα λογισμικού, που έχουν υπολογιστεί και αποθηκευτεί για εύκολη πραγματοποίηση
ερωτημάτων στη βάση.
Η ClickHouseDB παρέχει πίνακες που σχετίζονται με τα συγκεκριμένα commits και blobs.
Αντιστοίχιση των commits με:
Χρόνο
Συγγραφέα
Έργο Λογισμικού
Commit Message
Blobs
9. Ιστορικό
Έργων
Λογισμικού
Λίστα με τα έργα λογισμικού που έχει συμμετοχή με commit.
Deforked Projects
Μετρητής commit για κάθε έργο.
Σύνδεσμος για προβολή «Περιληπτικών Στοιχείων Έργου»
10. Commits
ανά Ημέρα
Κατανομή των commits ανά ημέρα της εβδομάδος
Προσαρμοσμένο στο timezone που υλοποιήθηκε το commit
Πληροφορία για τις εργασιακές συνήθειες του μηχανικού και
τα πρότυπα παραγωγικότητάς του
Κατανόηση ημερών μέγιστης και ελάχιστης παραγωγικότητας
που βοηθά στον προγραμματισμό συνεργατικών
δραστηριοτήτων
11. Γλώσσες Προγραμματισμού
με την πάροδο του χρόνου
Παρέχει πληροφορία σχετικά με την
εξέλιξη της προτίμησης κάποιας
γλώσσας προγραμματισμού με την
πάροδο του χρόνου
Μπορούμε να παρακολουθήσουμε
την πορεία εκμάθησης και τη
συνέπεια στη χρήση ορισμένων
γλωσσών
Σε ποιες γλώσσες γράφει τη δεδομένη
περίοδο;
Κατανόηση της επάρκειας σε γλώσσες
12. Γράφημα
Συνεργασίας
Απεικονίζει τις αλληλεπιδράσεις με άλλους
συμμετέχοντες σε διάφορα έργα ανοιχτού
κώδικα.
Κάθε κόμβος είναι ένας μηχανικός.
Οι ακμές αντιπροσωπεύουν τη συνεισφορά
με commit σε κοινό έργο.
Τα βάρη είναι η συχνότητα κοινής
συνεισφοράς.
Αξιολογώντας το δίκτυο, μπορούμε να
βγάλουμε συμπεράσματα για τις συνεργασίες
και τη συμμετοχή του μηχανικού στην
κοινότητα.
13. Ρόλος και Εργασίες
Προβλέψεις μοντέλων μηχανικής μάθησης
Κάρτα με πρόβλεψη ρόλου εργασίας
Διάγραμμα ραντάρ με ταξινόμηση των
commits σε κατηγορίες εργασίών
προγραμματισμού.
14. Μοντέλο Ρόλου Εργασίας
Ταξινόμηση σε έναν από 5 πιθανούς ρόλους:
Frontend
Backend
Mobile
DevOps
Data Scientist
Χρήση «Πληροφορίας Κειμένου» (ονόματα,
περιγραφές,tags, Readme των έργων που
συμμετέχει)
15. Μοντέλο Ρόλου Εργασίας
Labeled dataset: 1337 μηχανικοί λογισμικού σε 5
ρόλους
Προεπεξεργασία δεδομένων (lowercase, αφαίρεση
stop-words, λημματοποίηση)
Εξαγωγή χαρακτηριστικών με TF-IDF
Εκπαίδευση μοντέλου Logistic Regression με
υπερδειγματοληψία για μειονοτικές κλάσεις και
ρύθμιση παραμέτρων Logistic Regression και TF-
IDF.
80-20 Stratified split και 5-fold cross validation
Metrics Frontend Backend Mobile DevOps Data
Scientist
Precision 0.73 0.51 0.63 0.44 0.76
Recall 0.73 0.63 0.45 0.62 0.81
F1-Score 0.73 0.56 0.53 0.52 0.78
16. Μοντέλο αναγνώρισης εργασιών
προγραμματισμού
Χρήση των commit messages από όλα τα commits
Απόρριψη μη αγγλικών και «μικρών» μηνυμάτων
Ταξινόμηση του commit message σε εργασίες προγραμματισμού βάσει κανόνων που βασίζονται στο
λεξιλόγιο των κατηγοριών :
Corrective: Διόρθωση Σφαλμάτων (bug fix, debug)
Adaptive: Προσαρμογή λογισμικού σε αλλαγές στο περιβάλλον (build, testing, documentation)
Perfective: Βελτίωση λειτουργικότητας (maintenance, refactoring, indentation, module remove)
Implementation: Εφαρμογή νέων χαρακτηριστικών/λειτουργιών (feature add, initialization,
module add)
Non-functional: Μη λειτουργικές ιδιότητες (legal, module remove, merge)
Other (cross, branch)
17. Μοντέλο αναγνώρισης εργασιών προγραμματισμού
Εξαγωγή χαρακτηριστικών με TF-IDF στα commit messages
Χρησιμοποιήθηκε το σετ που ταξινομήθηκε σε κατηγορίες για
την εκπαίδευση ενός μοντέλου Logistic Regression.
Η ταξινόμηση των μηνυμάτων commit με confidence
threshold 0.7 στις κατηγορίες που όρισε το σύστημα
κανόνων είχε τα εξής αποτελέσματα
Η κλάση ‘Unknown’ χρησιμοποιείται για τα μηνύματα που δε
μπορούν να ταξινομηθούν.
Metrics Adaptive Corrective Implement. Non-func. Perfecti
ve
Other Unknown
Precision 0.99 0.98 0.99 0.98 0.98 0.77 0.81
Recall 0.85 0.83 0.91 0.97 0.86 0.48 0.98
F1-Score 0.91 0.90 0.95 0.98 0.92 0.59 0.89
Support 864 444 1185 651 346 21 1636
19. Ανοιχτά Θέματα και βελτιώσεις
Εξάρτηση από στατικές βάσεις δεδομένων
Ανάλυση μόνο του commit history
Βελτίωση χρόνου δημιουργίας προφίλ και απόκρισης εφαρμογής
Βελτίωση της προσέγγισης αναγνώρισης εργασιών προγραμματισμού από τα
μηνύματα commit
Εκπαίδευση μοντέλου ταξινόμησης ρόλων σε μεγαλύτερο σύνολο δεδομένων
20. Συμπεράσματα
Αναπτύχθηκε ένα εργαλείο ικανό:
Να προβάλλει τη συνεισφορά μηχανικών λογισμικού στα διάφορα έργα στο OSS
Να αναδείξει την εμπειρία τους σε γλώσσες προγραμματισμού και βιβλιοθήκες
Να παρουσιάσει τις προγραμματιστικές τους συνήθειες
Να χαρτογραφήσει τις συνεργασίες τους στο OSS
Να κατηγοριοποιήσει τους ρόλους και τα καθήκοντα που αναλαμβάνουν
Είναι δυνατή η δημιουργία προφίλ μηχανικών λογισμικού με βάση το ιστορικό των commits
Μπορεί να παραχθεί χρήσιμη πληροφορία και να παρουσιαστεί με τρόπο κατανοητό και φιλικό προς το
χρήστη
21. Ευχαριστίες
Ένα μεγάλο ευχαριστώ στον καθηγητή κ. Ανδρέα Συμεωνίδη για την ευκαιρία
που μου έδωσε να συνεργαστούμε και για τη βοήθεια κατά την εκπόνηση της
εργασίας.
Στην οικογένειά μου για την υπομονή που και τη συνεχή στήριξη που μου
παρείχαν καθημερινά.