Αυτόματος εντοπισμός και διόρθωση σφάλματος σε προγράμματα JAVA με χρήση δυναμικού τεμαχισμού, έλεγχου μετάλλαξης και γενετικών αλγόριθμων
View/ Open
Date
2010-01Author
Στυλιανού, Χριστιάνα ΣταύρουAdvisor
Ανδρέου, ΑνδρέαςPublisher
Πανεπιστήμιο Κύπρου, Σχολή Θετικών και Εφαρμοσμένων Επιστημών / University of Cyprus, Faculty of Pure and Applied SciencesPlace of publication
ΚύπροςGoogle Scholar check
Metadata
Show full item recordAbstract
Η αποσφαλμάτωση είναι μια διαδικασία περίπλοκη και χρονοβόρα, για αυτό και έχουν γίνει πολλές προσπάθειες για αυτοματοποίηση της. Έχοντας σαν στόχο την βελτίωση της αποσφαλμάτωσης, ο Τεμαχισμός Προγράμματος περιορίζει το πεδίο αναζήτησης του σφάλματος αποκλείοντας τις δηλώσεις που δεν λαμβάνουν μέρος στον υπολογισμό της λανθασμένης εξόδου. Με τον Δυναμικό Τεμαχισμό το τεμάχιο προγράμματος έχει μειωθεί σε κάποιο βαθμό, εντούτοις είναι τις περισσότερες φορές αρκετά μεγάλη. Οι τεχνικές ελέγχου με χρήση μετάλλαξης εφαρμόζουν διάφορους τελεστές μετάλλαξης σε ένα σωστό πρόγραμμα εισάγοντας συχνά προγραμματιστικά λάθη. Δημιουργείται έτσι ένα μεγάλο σύνολο από λανθασμένα προγράμματα κάθε ένα από τα οποία περιέχει ένα συγκεκριμένο λάθος. Τα λανθασμένα προγράμματα εκτελούνται με ένα σύνολο από σενάρια ελέγχου με σκοπό τη μέτρηση της αποτελεσματικότητας τους με βάση την ικανότητα τους να εντοπίσουν τα λάθη. Σε αυτή την εργασία προτείνεται μια καινοτόμος μεθοδολογία για εντοπισμό αλλά και διόρθωση σφάλματος σε προγράμματα Java, με χρήση Δυναμικού Τεμαχισμού, Ελέγχου Μετάλλαξης και Γενετικών Αλγορίθμων. Συγκεκριμένα, αξιοποιώντας την πληροφορία που μας δίνει ο δυναμικός τεμαχισμός προγράμματος προσπαθούμε να αλλάξουμε τη ροή του εσφαλμένου προγράμματος εφαρμόζοντας αντικαταστάσεις όχι σε ολόκληρο το πρόγραμμα αλλά μόνο στις γραμμές που περιέχονται στη τεμάχιο της λανθασμένης εκτέλεσης του προγράμματος. Για την δημιουργία των αντικαταστάσεων που θα εφαρμόσουμε σε κάθε μια από τις εν λόγω γραμμές χρησιμοποιούμε τους τελεστές μετάλλαξης του ελέγχου μετάλλαξης. Η εύρεση της δήλωσης που περιέχει το λάθος σε συνδυασμό με την επιλογή της σωστής αντικατάστασης αποτελεί ένα πρόβλημα με πολύ μεγάλο αριθμό λύσεων. Χρησιμοποιώντας γενετικούς αλγόριθμους αναγάγουμε το πρόβλημα αυτό σε πρόβλημα αναζήτησης.