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.

Νίνα Ελευθεριάδου

88 views

Published on

Εμπειρική επικύρωση αντικειμενοστραφών μετρικών σε λογισμικό ανοιχτού κώδικα για την πρόβλεψη σφαλμάτων

Published in: Education
  • Be the first to comment

  • Be the first to like this

Νίνα Ελευθεριάδου

  1. 1. 1 Θεσσαλονίκη 2014
  2. 2. 2
  3. 3. Ορισμός του Προβλήματος Στόχος Διπλωματικής Αλγόριθμοι Πρόβλεψης Μετρικές Πρόβλεψης Πειραματικά Αποτελέσματα Συμπεράσματα Μελλοντικές Επεκτάσεις 3 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  4. 4. 4 Μοντέλο ανάπτυξης λογισμικού ανοιχτού κώδικα volunteer volunteer volunteer volunteer Project lead Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  5. 5. 5 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  6. 6. 6 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα Πρόβλεψη σφαλμάτων σε επίπεδο κλάσεων 1. Number Of Bugs 2. Number Of Major Bugs 3. Number Of Critical Bugs 4. Number Of High Priority Bugs
  7. 7. 7 Η σύγκριση διαφορετικών , προκειμένου να διαπιστωθεί ποια από αυτές είναι πιο αποδοτική στην πρόβλεψη σφαλμάτων. Η σύγκριση διαφορετικών , προκειμένου να διαπιστωθεί ποιος από αυτούς είναι περισσότερο αποδοτικός όταν εφαρμόζεται πάνω στις υπό εξέταση αντικειμενοστρεφείς μετρικές. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  8. 8. 8 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  9. 9. 9 Μοντελοποιεί τη σχέση ανάμεσα σε μία ανεξάρτητη μεταβλητή (μεταβλητή πρόβλεψης) X και μία εξαρτημένη μεταβλητή (μεταβλητή στόχο) Y, χρησιμοποιώντας μία σχέση που εκφράζει την Y ως γραμμική συνάρτηση της X. Γραμμική Παλινδρόμηση Απλή Γραμμική Παλινδρόμηση Πολλαπλή Γραμμική Παλινδρόμηση Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  10. 10. 10 Πολλαπλή γραμμική παλινδρόμηση Υi= (βο+β1Χi + β2Χ2 + …+ βnΧn ) + εi β1, β2, βn = συντελεστής παλινδρόμησης των μεταβλητών πρόβλεψης β0= ο σταθερός όρος (δηλ. η τιμή του Υ όταν το Χ=0). εi= το σφάλμα που αντιστοιχεί στη διαφορά ανάμεσα στην τιμή που προβλέπει η ευθεία γραμμή για το στιγμιότυπο i και την πραγματική τιμή που έχει το συγκεκριμένο στιγμιότυπο. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  11. 11. 11 Προβλέπει την πιθανότητα εμφάνισης ενός γεγονότος με την τοποθέτηση των δεδομένων σε μια συνάρτηση logit (λογιστική λειτουργία). Πρόκειται για μία δημοφιλή μέθοδο ταξινόμησης, της οποίας η συνάρτηση πρόβλεψης αποτελείται από ένα μετασχηματισμένο γραμμικό συνδυασμό μεταβλητών. Λογιστική Παλινδρόμηση )110( 1 1 )( iXbb e YP    )...22110( 1 1 )( inXnbXbXbb e YP    Είναι της μορφής , γνωστή ως σιγμοειδή συνάρτηση. Απώτερος σκοπός είναι να χαρτογραφηθεί κάθε πραγματικός αριθμός που χρησιμοποιείται ως είσοδος στην πρόβλεψη μας, η οποία θα κυμαίνεται από 0 έως 1. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  12. 12. 12 Η πιο διαδεδομένη βιβλιογραφικά έκφραση της λογιστικής παλινδρόμησης είναι ln(odds) = a+ b1x1 + b2 x2 +………+ bk xk Οι συντελεστές των ανεξάρτητων μεταβλητών στην εξίσωση παλινδρόμησης εκτιμώνται με βάση τη . Στην ουσία προσδιορίζεται η επίδραση της εκάστοτε ανεξάρτητης μεταβλητής στη διαμόρφωση των τιμών της εξαρτημένης μεταβλητής. Το δεξί μέρος της εξίσωσης δημιουργείται από ένα γραμμικό συνδυασμό των ανεξάρτητων μεταβλητών που συμμετέχουν στο μοντέλο παλινδρόμησης. Το αριστερό μέρος περιέχει τις τιμές της εξαρτημένης μεταβλητής, με τη μορφή του λογαρίθμου των odds, δηλαδή του λογαρίθμου της σχέσης odds = Prob/(1-Prob). To odds εναλλακτικά ονομάζεται logit και ο όρος Prob εκφράζει την πιθανότητα του συμβάντος του γεγονότος. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  13. 13. 13  Αναπαριστούν μια  Κάθε πιθανό “σημείο απόφασης” ή κατάσταση  Κάθε πιθανή επιλογή που μπορεί να γίνει σε ένα σημείο απόφασης  Θεωρούνται , το οποίο χρησιμοποιείται για να ταξινομήσει κλάσεις (classes) με την που προκύπτουν από τα χαρακτηριστικά (attributes) της τάξης. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  14. 14. 14 Εκμεταλλεύεται την που παρουσιάζουν διάφοροι αλγόριθμοι μάθησης. Βασίζεται στη από έναν αλγόριθμο μάθησης. Με τον τρόπο αυτό ο ν-οστός ταξινομητής λαμβάνει υπόψη την επίδοση των προηγούμενων ν-1 ταξινομητών για καθένα στιγμιότυπο, επικεντρώνοντας έτσι την προσπάθειά του στη σωστή πρόβλεψη των δειγμάτων για τα οποία οι προηγούμενοι απέτυχαν περισσότερο. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  15. 15. 15 Data set 1 Data set 2 Data set T Learner1 Learner2 LearnerT … ... … ... … ... Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  16. 16. 16 Τα σφάλματα προκαλούνται από αλλαγές. Πολύπλοκα κομμάτια κώδικα είναι πιο δύσκολο να τροποποιηθούν, ως εκ τούτου είναι περισσότερο επιρρεπή σε λάθη. Προηγούμενες ατέλειες του κώδικα μπορούν να προβλέψουν μελλοντικές ατέλειες. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα Μετρική Επεξήγηση NR Αριθμός αναθεωρήσεων. NREF Δείχνει πόσες φορές έχει αλλάξει ένα αρχείο, με σκοπό τη βελτίωση της εσωτερικής δομής του, χωρίς να αλλάξει η εξωτερική συμπεριφορά του. NFIX Δείχνει πόσες φορές ένα αρχείο συμπεριλήφθηκε σε κάποια επιδιόρθωση σφάλματος. NAUTH Αριθμός συγγραφέων που έλεγξαν το αρχείο. LINES Γραμμές που προστέθηκαν και διεγράφησαν (άθροισμα, μέγιστο, μέσος όρος). CHURN Codechurn (άθροισμα, μέγιστο και μέσος όρος). CHGSET Αλλαγή μεγέθους συνόλου (μέγιστο και μέσος όρος). AGE Ηλικία και σταθμισμένη ηλικία. Τύπος μετρικών Μετρική Επεξήγηση CK WMC Σταθμισμένη μέθοδος μέτρησης. CK DIT Βάθος δένδρου κληρονομικότητας. CK RFC Απόκριση για κλάση. CK NOC Αριθμός παιδιών. CK CBO Σύζευξη μεταξύ αντικειμένων. CK LCOM Έλλειψη συνοχής στις μεθόδους. Τύπος μετρικών Μετρική Επεξήγηση OO FanIn Αριθμός κλάσεων, που κάνουν αναφορά στην κλάση. OO FanOut Αριθμός κλάσεων στις οποίες αναφέρεται η κλάση. OO NOA Αριθμός γνωρισμάτων. OO NOPA Αριθμός δημόσιων γνωρισμάτων. OO NOPRA Αριθμός ιδιωτικών γνωρισμάτων. OO NOAI Αριθμός γνωρισμάτων που κληρονομούνται. OO LOC Αριθμός γραμμών κώδικα. OO NOM Αριθμός μεθόδων. OO NOPM Αριθμός δημόσιων μεθόδων. OO NOPRM Αριθμός ιδιωτικών μεθόδων. OO NOMI Αριθμός μεθόδων που κληρονομούνται. Μετρική Επεξήγηση Number Of Bugs Συνολικός αριθμός σφαλμάτων. Number Of Non Trivial Bugs: Σφάλματα τα οποία επηρεάζουν τη λειτουργικότητα του συστήματος. Number Of Major Bugs: Σφάλματα τα οποία οδηγούν σε κατάρρευση του συστήματος. Number Of Critical Bugs : Σφάλματα τα οποία οδηγούν σε αποτυχία του συστήματος. Number Of High Priority Bugs: Σφάλματα τα οποία έχουν κριθεί υψηλής προτεραιότητας.
  17. 17. 17 Πολύπλοκες αλλαγές είναι πολύ πιο πιθανόν να εισάγουν λάθη σε σχέση με τις πιο απλές. Όσο πιο διάσπαρτες είναι οι αλλαγές, τόσο μεγαλύτερη είναι η τιμή που λαμβάνει η πολυπλοκότητα. Η χρήση μετρικών source code (σε αντιπαράθεση με τις κλασικές CK τεχνικές) δίνει μια καλύτερη προσέγγιση του entropy of changes από ότι η απλή τεχνική entropy of changes. Η χρήση μετρικών source code (σε αντιπαράθεση με τις κλασικές CK τεχνικές) δίνει μια καλύτερη προσέγγιση του code churn από ότι η απλή τεχνική code churn. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα Μετρική Επεξήγηση CvsEntropy Εντροπία συστήματος CvsWEntropy Σταθμισμένη εκδοχή εντροπίας CvsLinEntropy Γραμμική εκδοχή εντροπίας CvsLogEntropy Λογαριθμική εκδοχή εντροπίας CvsExpEntropy Εκθετική εκδοχή εντροπίας
  18. 18. 18 Προ-επεξεργασία  Επιλογή συνόλου δεδομένων  Λάβαμε υπόψη προς εξέταση.  Για κάθε κλάση υπολογίστηκαν οι προαναφερθέντες μετρικές :  Change metrics: 15  Previous defects: 5  Source code metrics: 17  Entropy of changes: 5  Churn of source code metrics: 17  Entropy of source code metrics: 17 Χρήση βιβλιοθήκης Χωρισμός συνόλου δεδομένων σε .  Εφαρμογή μεθόδου στο σύνολο δεδομένων. Χωρισμός κλάσεων πηγαίου κώδικα σε δύο ομάδες:  Η ομάδα περιέχει κλάσεις με .  Η ομάδα περιέχει κλάσεις που . Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  19. 19. 19 Μετρικές ποιότητας Από το συνολικό αριθμό των κλάσεων που δεν περιέχουν σφάλματα, δίνει το ποσοστό αυτών που έχουν ταξινομηθεί σωστά ως defect free. Από το συνολικό αριθμό των κλάσεων που περιέχουν σφάλματα, δίνει το ποσοστό αυτών και έχουν ταξινομηθεί σωστά ως defect prone. Από το συνολικό αριθμό των κλάσεων που προβλέφθηκαν ως defect prone, δίνει το ποσοστό αυτών που πράγματι περιείχαν σφάλματα. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  20. 20. 20 Μετρικές ποιότητας Δίνει το ποσοστό των ορθά ταξινομημένων κλάσεων (true positives, true negatives). Συνεχές γράφημα που ορίζουν τα σημεία (FP, TP) Όσο μεγαλύτερη κυρτότητα εμφανίζει η Roc καμπύλη προς την άνω αριστερή γωνία (οπτική εκτίμηση), και επομένως όσο μεγαλύτερο είναι το εμβαδόν που ορίζεται κάτω από αυτή (ποσοτική εκτίμηση), τόσο μεγαλύτερη θα είναι και η διακριτική ικανότητα που θα παρουσιάζει. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  21. 21. 21 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  22. 22. 22 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  23. 23. 23 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  24. 24. 24 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  25. 25. 25 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  26. 26. 26 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  27. 27. 27 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  28. 28. 28 Εισάγαμε ένα σημείο αναφοράς, το οποίο μας επέτρεψε την επίτευξη κοινής σύγκρισης μετρικών και αλγορίθμων πρόβλεψης. Τα αποτελέσματα που προέκυψαν έδωσαν ποσοστά επιτυχούς πρόβλεψης πάνω από 80%. Entropy of Source Code Metrics και Lin- Churn Metrics: 81%-83% Log-Entropy Metrics και Weighted-Churn Metrics : 81%-84%. H απόδοση του αλγορίθμου Ενίσχυσης υπερτερεί έναντι των υπόλοιπων υπό εξέταση αλγορίθμων. Log-Churn Metrics: 78% - 79%  84%. Source Code Metrics: 78%  83%. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  29. 29. 29 , πάνω στα οποία θα εφαρμοστούν οι προσεγγίσεις που έχουν προταθεί στην παρούσα διπλωματική εργασία, για την πρόβλεψη μελλοντικών σφαλμάτων. σε συστήματα λογισμικού, οι οποίες θα διαμορφωθούν με βάση τις πηγές δεδομένων που αυτές χρησιμοποιούν και τα συστήματα στα οποία αυτές επικυρώνονται. , οι οποίοι θα ανταποκρίνονται στα ιδιαίτερα χαρακτηριστικά των υπό μελέτη δεδομένων. Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα
  30. 30. 30 Πρόβλεψη Σφαλμάτων σε Λογισμικό Ανοιχτού Κώδικα

×