Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 1. Ποιες είναι οι βασικές κατηγορίες λαθών που είναι δυνατό να παρουσιαστούν στα προγράμματα; • Λάθη κατά την υλοποίηση (Συντακτικά λάθη) • Λάθη κατά την εκτέλεση (Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος) • Λογικά λάθη (Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα) 2. Που οφείλονται συνήθως τα λάθη κατά την υλοποίηση και πότε γίνονται αντιληπτά; Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από λανθασμένη σύνταξη εντολών προγράμματος. Τέτοια λάθη μπορεί να είναι η λανθασμένη συγγραφή μιας δεσμευμένης λέξης της γλώσσας προγραμματισμού ή η χρήση μιας δομής ελέγχου χωρίς την εντολή τερματισμού της. Ανιχνεύονται από τον μεταγλωττιστή, ο οποίος εμφανίζει προς τον προγραμματιστή κάποιο προειδοποιητικό μήνυμα και δεν επιτρέπεται η εκτέλεσή του προγράμματος μέχρι να το διορθώσει ο προγραμματιστής. 3. Που οφείλονται συνήθως τα λάθη κατά την εκτέλεση και πότε γίνονται αντιληπτά; Τα λάθη που προκαλούν τον αντικανονικό τερματισμό της εφαρμογής και το κρέμασμα του συστήματος εμφανίζονται σε πραγματικό περιβάλλον εκτέλεσης. Τέτοια λάθη είναι δυνατό να προκληθούν από την προσπάθεια διαίρεσης ενός αριθμού με το μηδέν, την κλήση μιας διαδικασίας με δεδομένα που δεν μπορεί να χειριστεί, όπως η αναζήτηση διαγραμμένων αρχείων, η υπερχείλιση μιας αριθμητικής μεταβλητής ή από δυσλειτουργία του υλικού μέρους του υπολογιστή, όπως η καταστροφή του σκληρού δίσκου του συστήματος, ο τερματισμός μιας σύνδεσης δικτύου και η αποσύνδεση του εκτυπωτή. 4. Που οφείλονται συνήθως τα λογικά λάθη και πότε γίνονται αντιληπτά; Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του προγράμματος. Ενώ ο μεταγλωττιστής της γλώσσας προγραμματισμού δεν ανιχνεύει κανένα συντακτικό λάθος και κατά την εκτέλεση του προγράμματος δεν παρουσιάζονται ανεπιθύμητες καταστάσεις σφαλμάτων, τελικά δεν παράγονται τα επιθυμητά αποτελέσματα. Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να πραγματοποιηθεί από κάποιο εργαλείο του υπολογιστή και διαπιστώνονται μόνο με τη διαδικασία ελέγχου (testing) και την ανάλυση των αποτελεσμάτων των προγραμμάτων. 5. Τι ονομάζεται εκσφαλμάτωση και ποιος ο στόχος της; Η διαδικασία ελέγχου, εντοπισμού και διόρθωσης των σφαλμάτων ενός προγράμματος καλείται εκσφαλμάτωση (debugging). Στόχος της διαδικασίας εκσφαλμάτωσης είναι ο εντοπισμός των σημείων του προγράμματος που προκαλούν προβλήματα στη λειτουργία του. 6. Ποιος ο ρόλος των σχολίων στην εκσφαλμάτωση; Η εισαγωγή γραμμών με σχόλια σε ένα πρόγραμμα υποβοηθά σημαντικά την εκσφαλμάτωση. Χρησιμοποιούνται προκειμένου να διαχωρίζονται οι επεξηγηματικές φράσεις από τις λέξεις-κλειδιά του αλγορίθμου. 7. Εκσφαλμάτωση λογικών λαθών σε δομή επιλογής Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με: • τη συνθήκη ή τις συνθήκες • τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής. Στην ανίχνευση ενός λογικού λάθους στις δομές επιλογής δεν αρκεί η μεμονωμένη μελέτη των συνθηκών και των ομάδων εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής, αλλά χρειάζεται να μελετηθεί το αποτέλεσμα που παράγει ο συνδυασμός των συνθηκών και των ομάδων εντολών. 8. Εκσφαλμάτωση λογικών λαθών σε δομή επανάληψης Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με: • τη συνθήκη επανάληψης ή τερματισμού, • την αρχικοποίηση της συνθήκης, • την ενημέρωση της συνθήκης εντός του βρόχου επανάληψης, • τις εντολές που περιλαμβάνονται εντός του βρόχου. Στους υπολογισμούς που γίνονται εντός των δομών επανάληψης χρειάζεται να δοθεί ιδιαίτερη προσοχή στο αν θα συμπεριλάβουμε στον υπολογισμό την τιμή που λαμβάνει κάποια μεταβλητή στην τελευταία επανάληψη. Συμβουλή: Κατά την εκσφαλμάτωση των δομών επανάληψης χρειάζεται να δίνετε προσοχή στα εξής: • στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού • στην αρχικοποίηση της συνθήκης • στην ενημέρωση της συνθήκης εντός του βρόχου • στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους • στο κριτήριο της περατότητας • στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να εκτελεστεί ούτε μία φορά • στην τελευταία επανάληψη 9. Εκσφαλμάτωση λογικών λαθών σε πίνακες Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή: • στο μέγεθος των πινάκων κατά τη δήλωσή τους, • στους δείκτες των πινάκων κατά την προσπέλασή τους, • στη μη υπέρβαση των ορίων του πίνακα. 10. Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν υποπρογράμματα χρειάζεται να δίνεται προσοχή στον εντοπισμό λογικών λαθών που σχετίζονται με: • την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων • τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα. 11. Τι προβλέπει ο έλεγχος «μαύρου κουτιού» (black-box testing). Κατά τον έλεγχο «μαύρου κουτιού», εκτελούνται σενάρια ελέγχου με δεδομένα εισόδου που προκύπτουν από τις προδιαγραφές του προγράμματος, αγνοώντας εντελώς τον κώδικα. 12. Πώς γίνεται η επιλογή των δεδομένων στον έλεγχο μαύρου κουτιού; Προσπαθούμε να βρούμε αντιπροσωπευτικές τιμές για τα δεδομένα εισόδου που θα παράγουν αντιπροσωπευτικά αποτελέσματα. Το πρώτο βήμα είναι η δημιουργία ισοδύναμων διαστημάτων τιμών (equivalence partitioning) για τα δεδομένα εισόδου. Τα διαστήματα θεωρούνται ισοδύναμα, καθώς αν δεν υπάρχουν λάθη, τότε όλες οι τιμές ενός διαστήματος εισόδου θα παράγουν τιμές που θα ανήκουν στο ίδιο διάστημα αποτελεσμάτων. Είναι σημαντικό να δημιουργούνται διαστήματα και για τις μη έγκυρες τιμές εισόδου, καθώς δεν μπορούμε να είμαστε σίγουροι ότι ένα πρόγραμμα θα τροφοδοτείται μόνο με έγκυρες τιμές. Μετά τον καθορισμό των διαστημάτων πρέπει να επιλεγούν τιμές για τα σενάρια ελέγχου που να καλύπτουν όλα τα διαστήματα. Αφού τα διαστήματα είναι ισοδύναμα, μπορεί να επιλεγεί οποιαδήποτε τιμή από κάθε διάστημα. Μια καλύτερη στρατηγική είναι να γίνει έλεγχος των ακραίων τιμών κάθε διαστήματος (boundary value analysis), καθώς η εμπειρία έχει δείξει ότι τα περισσότερα λάθη γίνονται σε αυτά τα σημεία.
|