The increasing size and complexity of modern software projects often leads to the appearance of runtime errors (crashes), for instance due to coding inaccuracies or unforeseen use cases. Since errors affect software usability, quickly dealing with them has become an important maintenance task tied to the success of software projects. At the same time, processes for parsing user feedback, for example by dedicated teams, to understand errors or other bags and initiate maintenance operations can prove time consuming. To mitigate associated costs, an emerging trend is to automate (parts of) error understanding with machine learning systems, for example that perform auto matic tagging. In this thesis, we focus on understanding errors through extracted latent represen tations; these can be inputted in machine learning systems to predict error qualities, such as recommending which tags errors should obtain. To achieve this, existing ap proaches in the broader scope of automated bug understanding make use of natural language processing techniques, such as word embeddings, to understand feedback texts. However, in the case of errors, we propose that available stack traces leading up to crashing code segments also capture useful coding semantics in the form of paths within function call graphs. Thus, we investigate whether graph embeddings—extracted from error stack traces—can be used to obtain a better understanding of errors. To test our hypothesis, we developed a system that extracts latent error represen tations of software projects that combine textual and stack trace embeddings. To verify that these improve error understanding compared to using textual features only, we experimented on three popular software GitHub projects, where we extracted error rep resenations and used them to predict error tags (e.g. high priority) with neural network predictors. We found that, given a robust selection of predictor and enough example errors to train from, our approach improves text-based tagging by a significant margin across popular recommendation system measures.
4. Σφάλματα Λογισμικού
(“bugs”)
• Σφάλματα λογισμικού ονομάζονται σφάλματα, ελαττώματα ή λάθη που οδηγούν
το λογισμικό να παράγει εσφαλμένο ή απροσδόκητο αποτέλεσμα.
• Σφάλματα system crash
• Συνιστώσα της βιωσιμότητας των έργων λογισμικού
5. 70 σφάλματα ανα 1000
γραμμές κώδικα
15 σφάλματα ανα 1000
γραμμές κώδικα
φτάνουν στους πελάτες
Στατιστικά στοιχεία σφαλμάτων
75% του χρόνου των
προγραμματιστών
αφιερώνεται στην
επίλυση σφαλμάτων
30 φορές τον χρόνο για την
συγγραφή μιας γραμμής
κώδικας απαιτεί η επίλυση
ενός σφάλματος
$113B ετησίως
ξοδεύονται για την
αντιμετώπιση
σφαλμάτων σε έργα
λογισμικού στην
Αμερική
9. Στόχοι
Η ανάπτυξη συστήματος κατηγοριοποίησης
Η μελέτη :
• των επιδόσεων των stack traces σε προβλήματα ανάλυσης σφαλμάτων
• της σημασίας των stack traces και της αναγκαιότητας της συμπερίληψης τους στις
αναφορές σφαλμάτων
12. Υποσύστημα εξόρυξης δεδομένων
• Βιβλιοθήκες GitHub REST API
• Σφάλμα = {τίτλος, ετικέτες, προγραμματιστής, περιγραφή, stack trace}
• Για τον σωστό διαχωρισμό των πληροφορίων χρησιμοποιούνται html
tags όπως <code> ή λέξεις κλειδιά όπως java.exception
13. Υποσύστημα αναπαράστασης λέξεων
• Δημιουργία λεξιλογίου με βάση την συχνότητα εμφάνισης
• Χρήση της τεχνική skip-gram
• Νευρωνικό δίκτυο
• Χρήση τεχνικής Negative Sampling
• Χρήση της μετρικής AUC για αξιολόγηση
14. Υποσύστημα αναπαράστασης συναρτήσεων
• Δημιουργία του συνολικού γράφου κλήσεων συναρτήσεων
• Δημιουργία λεξιλογίου με βάση την συχνότητα εμφάνισης
• Χρήση της τεχνική skip-gram
• Νευρωνικό δίκτυο
• Εκμάθηση αναπαραστάσεων μέσω τυχαίων περιπάτων
• Χρήση της μετρικής AUC για αξιολόγηση
15. Υποσύστημα αναπαράστασης σφαλμάτων
• flags use_words, use_stacks για την αναπαράσταση των σφαλμάτων
• Χρήση του απλού μέσου όρου για την αναπαράσταση των σφαλμάτων
𝑴 =
1
𝑁
w∈Bug∩Vocab
𝐱w
• Στην συνδιαστική μέθοδο το διάνυσμα σφάλματος είναι η σειριακή ένωση
των μέσων όρων BUG = 𝐌words, 𝐌funcs
16. Υποσύστημα κατηγοριοποίησης σφαλμάτων
• Πρόβλημα δυαδικής ταξινόμησης
• Μετρικές αξιολόγησης Accuracy,
Precision, Geometric Mean & AUC
• Boolean flags use_words, use_stacks
Μοντέλα μηχανικής
• Τυχαίος ταξινομητής: Ως μέτρο σύγκρισης
• Logistic Regression: Φθηνός και αποτελεσματικός αλγόριθμος
ταξινόμησης
• VoteNN+P: Αρχιτεκτονική 5 νευρωνικών δικτύων με ψηφοφορία
& patience remaining για early stopping
Εναλλακτικές αρχιτεκτονικές
• DropNN+P: Με dropout επίπεδο και patience remaining για early
stopping
21. Διεξαγωγή πειραμάτων
Εκμάθηση αποτελεσματικών διανυσματικών αναπαραστάσεων.
Διεξαγωγή πειραμάτων κατηγοριοποίησης:
• Χρήση μόνο των περιγραφών
• Χρήση μόνο των συναρτήσεων
• Χρήση των συνδυασμό τους
28. Συμπεράσματα
1. Οι περιγραφές αποδεικνύονται πιο αποδοτικές σε προβλήματα ανάλυσης σφαλμάτων από
τους γράφους κλήσεων συναρτήσεων
2. Ο συνδιασμός γράφων κλήσεων συναρτήσεων και περιγραφών πάντα βελτιώνει τα
αποτελέσματα ~6% κατά μέσο όρο
3. Υπάρχουν στατιστικά σημαντικές διαφορές στις μέσες τιμές με confidence level 99%.
4. Είναι σημαντικό να μην παραλείπεται η επισύναψη των γράφων κλήσεων συναρτήσεων.