Αποτίμηση της καταλληλότητας χρήσης αντικειμενοστρεφών μετρικών για τη δημιουργία μοντέλων πρόβλεψης σφαλμάτων σε λογισμικό ανοικτού κώδικα
Abstract
Η παρούσα μεταπτυχιακή διατριβή εντάσσεται στην ευρύτερη περιοχή της Τεχνολογίας
Λογισμικού και πιο συγκεκριμένα καταπιάνεται με το περισπούδαστο θέμα της Ποιότητας
Λογισμικού. Το λογισμικό ανοικτού κώδικα τα τελευταία χρόνια έχει γίνει απαραίτητο τόσο στην
καθημερινότητα εκατομμυρίων χρηστών όσο και στις εταιρίες που επενδύουν όλο και
περισσότερο σε έργα ανοικτού κώδικα. Το μοντέλο ανάπτυξης του λογισμικού ανοικτού κώδικα
έχει μεγάλες διαφορές σε σχέση με τις παραδοσιακές μεθόδους ανάπτυξης εμπορικού
λογισμικού, αφού στηρίζεται κυρίως στη συμμετοχή εθελοντών. Έτσι, προκύπτει άμεσα η
ανάγκη να μελετηθεί η ποιότητα του πηγαίου κώδικά τους και να αναζητηθούν τρόποι για τη
βελτίωσή της. Πολύ σημαντικός παράγοντας που μπορεί να επηρεάσει αρνητικά την ποιότητα
ενός λογισμικού είναι η ύπαρξη σφαλμάτων. Επιπρόσθετα, ο αντικειμενοστρεφής τρόπος
ανάλυσης και σχεδίασης είναι πλέον στις ημέρες μας ο κυρίαρχος τρόπος ανάπτυξης εφαρμογών
με τη συντριπτική πλειοψηφία των έργων ανοικτού κώδικα να τον εφαρμόζουν. Προκύπτει
λοιπόν το ερώτημα: υπάρχει τρόπος να προβλέψουμε τα σφάλματα σε λογισμικό ανοικτού κώδικα
που ακολουθεί το αντικειμενοστρεφές παράδειγμα;
Σκοπός της έρευνάς μας είναι η διερεύνηση της απάντησης στο παραπάνω ερώτημα
αποτιμώντας εμπειρικά την καταλληλότητα της χρήσης αντικειμενοστρεφών μετρικών για τη
δημιουργία μοντέλων πρόβλεψης σφαλμάτων. Με τη βοήθεια του εργαλείου ckjm
υπολογίστηκαν δεκαεπτά αντικειμενοστρεφείς μετρικές σε επίπεδο κλάσης για τον πηγαίο
κώδικα του λογισμικού ανοικτού κώδικα jEdit. Στη συνέχεια έγινε αντιστοίχιση των σφαλμάτων
του με τις κλάσεις του πηγαίου κώδικα που χρειάστηκαν διόρθωση. Τα παραπάνω δεδομένα
αποτέλεσαν την είσοδο σε μοντέλα πρόβλεψης σφαλμάτων που κατασκευάστηκαν με τη χρήση
τόσο παραδοσιακών στατιστικών τεχνικών στο R (γραμμική και λογιστική παλινδρόμηση), όσο
και των νεότερων αλλά πολλά υποσχόμενων τεχνικών μηχανικής μάθησης στο WEKA (δέντρο
απόφασης και τεχνητό νευρωνικό δίκτυο). Η αποτίμηση κάθε μοντέλου έγινε με χρήση της
διασταυρωμένης επικύρωσης σε 10 μέρη και περιλάμβανε μεταξύ άλλων την αναλογία σωστών
θετικών προβλέψεων, την ακρίβεια, την ανάκληση και την περιοχή κάτω από την καμπύλη ROC.
Το μοντέλο που προέκυψε από την εφαρμογή της δυαδικής πολλαπλής λογιστικής
παλινδρόμησης με επιλογή προς τα εμπρός είχε την καλύτερη επίδοση, ενώ του τεχνητού
νευρωνικού δικτύου ακολούθησε δεύτερο με μικρή όμως διαφορά.