ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Δωδϋκατη Διϊλεξη Έλεγχοσ Συςτόματοσ
Περιεχόμενα Έλεγχοσ Συςτόματοσ Έλεγχοσ Ορθότητασ Μονϊδων Λογιςμικού Σκοπόσ Ελϋγχου και Εκςφαλμϊτωςη Ποιοσ Εκτελεύ τουσ Ελϋγχουσ Στϊδια Ελϋγχου Τύποι Ελϋγχου Αυτόματοι Έλεγχοι Πλϊνο ελϋγχου
Έλεγχοσ Ορθότητασ Μονϊδων Λογιςμικού (1/4) Ιδεατή Κατάσταση Ολοκληρώνεται η κωδικοπούηςη και όλεσ οι μονϊδεσ του ςυςτόματοσ δουλεύουν ςωςτϊ Πραγματικότητα Το λογιςμικό εύναι μια πολύπλοκό ανθρώπινη καταςκευό και ςυνεπώσ εύναι αναμενόμενη η εμφϊνιςη μικρών ό μεγϊλων ςφαλμϊτων
Έλεγχοσ Ορθότητασ Μονϊδων Λογιςμικού (2/4) Κατηγορύεσ ςφαλμϊτων: Αλγοριθμικϊ ςφϊλματα: όταν ο αλγόριθμοσ ό η λογικό του δεν παρϊγουν την αναμενόμενη ϋξοδο Υπολογιςτικϊ λϊθη και λϊθη ακρύβειασ: αναφϋρεται ςτη λανθαςμϋνη χρόςη αριθμητικών εκφρϊςεων, τύπων μεταβλητών, κινητών υποδιαςτολών, κ.ϊ. Σφϊλματα υπερφόρτωςησ: εμφανύζονται όταν ςτοιχεύα όπωσ μόκοσ ουρών, μϋγεθοσ ενταμιευτών (buffers), διαςτϊςεισ πινϊκων, κ.ϊ. επιβαρύνονται πϋραν τησ προκαθοριςμϋνησ χωρητικότητϊσ τουσ Σφϊλματα ορύων ό χωρητικότητασ: εμφανύζονται όταν η απόδοςη ενόσ ςυςτόματοσ δε γύνεται αποδεκτό κϊθε φορϊ που η δραςτηριότητϊ του προςεγγύζει καθοριςμϋνα όρια. Θα πρϋπει το ςύςτημα να ελϋγχεται και ςε καταςτϊςεισ που η δραςτηριότητα ξεπερνϊ αυτϊ τα όρια, ώςτε να εύναι γνωςτό η απόκριςό του ςε μελλοντικό επϋκταςη
Έλεγχοσ Ορθότητασ Μονϊδων Λογιςμικού (3/4) Κατηγορύεσ ςφαλμϊτων (ςυνϋχεια ): Σφϊλματα χρονιςμού ό ςυντονιςμού: εμφανύζονται όταν ο κώδικασ που ςυντονύζει τη ςυνεργαςύα διαδικαςιών που εκτελούνται ταυτόχρονα ό με μια αυςτηρϊ καθοριςμϋνη αλληλοδιαδοχό εύναι ανεπαρκόσ ό λανθαςμϋνοσ Σφϊλματα απόδοςησ: εμφανύζονται όταν το ςύςτημα δεν λειτουργεύ με την προκαθοριςμϋνη από τον πελϊτη ταχύτητα Σφϊλματα ανϊκαμψησ: εμφανύζονται όταν, ενώ αντιμετωπύζεται ϋνα ςφϊλμα, το ςύςτημα δεν ςυμπεριφϋρεται ό ανταποκρύνεται όπωσ επιθυμούν οι ςχεδιαςτϋσ Σφϊλματα υλικού και λογιςμικού ςυςτόματοσ: εμφανύζονται όταν η τεκμηρύωςη για το υλικό και το λογιςμικό δεν ταιριϊζουν με τισ πραγματικϋσ λειτουργικϋσ ςυνθόκεσ και διαδικαςύεσ Σφϊλματα τεκμηρύωςησ: εμφανύζονται όταν η τεκμηρύωςη που περιγρϊφει τισ λειτουργύεσ του λογιςμικού δεν ταιριϊζει με αυτό που πραγματικϊ κϊνει το λογιςμικό. Κατϊ τη διϊρκεια ζωόσ του λογιςμικού, η ύπαρξη λαθών ςτην τεκμηρύωςη οδηγεύ ςε πολλαπλϊςια ςφϊλματα, καθώσ οι ςυντηρητϋσ τεύνουν να βαςύζονται ςτην τεκμηρύωςη, όταν εξετϊζουν τον κώδικα για να τον τροποποιόςουν
Έλεγχοσ Ορθότητασ Μονϊδων Λογιςμικού (4/4) Όςο αυξϊνεται το ποςοςτό των ςφαλμϊτων που εντοπύζονται και διορθώνονται κατϊ τη διϊρκεια τησ ανϊπτυξησ, τόςο μειώνεται ο χρόνοσ ανϊπτυξησ θ προςπάκεια που καταβάλλεται για τον εντοπιςμό των ςφαλμάτων ςτο λογιςμικό είναι επικερδισ Αν όμωσ απαιτοφνται εξαιρετικά επίπεδα διόρκωςθσ ςφαλμάτων (>95%), ο χρόνοσ που απαιτείται για τθν εξάλειψθ των ςφαλμάτων αυξάνει δυςανάλογα Πηγό: McConnell (1996), όπωσ αναφϋρεται ςτο Γιακουμϊκησ & Διαμαντύδησ (2009: 558)
Δραςτηριότητα Μπορείτε να αναφζρετε ζνα παράδειγμα λογιςμικοφ όπου επιδιϊκονται εξαιρετικά επίπεδα ποιότθτασ; Λογιςμικά από τα οποία εξαρτϊνται ανκρϊπινεσ ηωζσ
Σκοπόσ Ελϋγχου και Εκςφαλμϊτωςη Σκοπόσ του ελϋγχου εύναι να καταδεύξουμε ςφϊλματα ςτο λογιςμικό και ΌΧΙ να επιβεβαιώςουμε ότι το λογιςμικό λειτουργεύ ςωςτϊ Όταν εντοπιςθεύ ϋνα ςφϊλμα, η εκςφαλμϊτωςη (debugging) εύναι η διαδικαςύα καθοριςμού των αιτιών που προκϊλεςαν το ςφϊλμα και τησ επιβολόσ αλλαγών ςτο ςύςτημα, ώςτε να αποκλειςτεύ η περαιτϋρω παρουςύα του ςφϊλματοσ αυτού
Ποιοσ Εκτελεύ τουσ Ελϋγχουσ Παρόλο που οι ύδιοι οι προγραμματιςτϋσ μιασ μονϊδασ φροντύζουν και για τον ϋλεγχό τησ, εύναι ςύνηθεσ να ανατύθεται ο ϋλεγχοσ του λογιςμικού ςε μια ανεξϊρτητη ομϊδα ελϋγχου Λόγοι ύπαρξησ τησ ανεξϊρτητησ ομϊδασ ελϋγχου: Εύναι δύςκολο για το δημιουργό μιασ μονϊδασ να αμφιςβητόςει το δημιούργημϊ του Υπϊρχει πϊντα η πιθανότητα να ϋχουν ειςαχθεύ ςφϊλματα κατϊ την ερμηνεύα του ςχεδύου, τον προςδιοριςμό τησ λογικόσ του προγρϊμματοσ, τη ςυγγραφό τησ τεκμηρύωςησ ό κατϊ την υλοπούηςη των αλγορύθμων Η ανεξϊρτητη ομϊδα ελϋγχου μπορεύ να εργϊζεται καθ όλη τη διϊρκεια τησ ανϊπτυξησ, παρϊλληλα με την ομϊδα ανϊπτυξησ
Στϊδια Ελϋγχου (1/4) Έλεγχοσ Μονϊδασ: Ελϋγχεται κϊθε μονϊδα του ςυςτόματοσ ωσ απομονωμϋνη από τισ υπόλοιπεσ μονϊδεσ για να επαληθευτεύ η ςωςτό λειτουργύα τησ. Η μονϊδα τροφοδοτεύται με ϋνα προκαθοριςμϋνο ςύνολο δεδομϋνων ειςόδου, ώςτε να ελεγχθούν τα δεδομϋνα εξόδου που παρϊγονται. Επιπλϋον, εξετϊζονται οι εςωτερικϋσ δομϋσ δεδομϋνων, η λογικό του κώδικα και οι οριακϋσ ςυνθόκεσ Έλεγχοσ Συνϋνωςησ: Εφόςον ϋχουν ελεγχθεύ οι μονϊδεσ, ϋπειτα ελϋγχεται ο ςωςτόσ καθοριςμόσ και χειριςμόσ των διεπαφών μεταξύ των μονϊδων, δηλαδό ότι τα ςυςτατικϊ μϋρη του ςυςτόματοσ δουλεύουν μαζύ, όπωσ περιγρϊφεται ςτο λεπτομερϋσ και ςτο αρχιτεκτονικό ςχϋδιο
Στϊδια Ελϋγχου (2/4) Έλεγχοσ Λειτουργύασ: Εφόςον ϋχει ελεγχθεύ ότι οι πληροφορύεσ περνούν από μονϊδα ςε μονϊδα ςύμφωνα με τισ απαιτόςεισ του λογιςμικού, το επόμενο ςτϊδιο εύναι να επιβεβαιωθεύ ότι το ςύςτημα ϋχει την επιθυμητό λειτουργικότητα, δηλαδό να ελεγχθεύ εϊν οι λειτουργύεσ που περιγρϊφουν οι απαιτόςεισ εκτελούνται από το ςύςτημα Έλεγχοσ Εκτϋλεςησ: Συγκρύνει το ςύςτημα με τισ απαιτόςεισ. Εϊν ο ϋλεγχοσ γύνεται ςτο πραγματικό εργαςιακό περιβϊλλον του πελϊτη και εύναι επιτυχημϋνοσ, το ςύςτημα θεωρεύται ϋγκυρο (επικυρωμϋνο). Εϊν ο ϋλεγχοσ γύνεται ςε προςομοιωμϋνο περιβϊλλον, το ςύςτημα ονομϊζεται επαληθευμϋνο
Στϊδια Ελϋγχου (3/4) Έλεγχοσ Αποδοχόσ: Εκτελεύται από κοινού με τον πελϊτη για να επιβεβαιώςουμε τη λειτουργύα του ςυςτόματοσ, ςύμφωνα με τισ δικϋσ του προςδοκύεσ. Όταν ο ϋλεγχοσ ολοκληρωθεύ, το αποδεκτό ςύςτημα εγκαθύςταται ςτο περιβϊλλον ςτο οπούο θα χρηςιμοποιηθεύ Έλεγχοσ Εγκατϊςταςησ: Βεβαιώνει ότι το εγκατεςτημϋνο ςύςτημα λειτουργεύ ςωςτϊ
Στϊδια Ελϋγχου (4/4) Έλεγχοσ Παλινδρόμηςησ: Αποτελεύ μια ειδικό κατηγορύα ελϋγχου Εκτελεύται όταν γύνεται κϊποια αλλαγό ςτον κώδικα (προςθόκη λειτουργικότητασ ό διόρθωςη ςφαλμϊτων) Γύνεται επανϊληψη εκτϋλεςησ ελϋγχων, ώςτε να μην εμφανύζονται λϊθη που δεν εμφανιζόταν ςε παλαιότερεσ εκδόςεισ Μπορεύ να περιλαμβϊνει ϋνα υποςύνολο των ελϋγχων που προαναφϋρθηκαν ό ακόμα και όλουσ τουσ ελϋγχουσ
Τύποι Ελϋγχου Κλειςτό Κουτύ (Black Box): Το αντικεύμενο ελϋγχου αντιμετωπύζεται ωσ ϋνα κλειςτό κουτύ, όπου το περιεχόμενο εύναι ϊγνωςτο Ο ϋλεγχοσ περιλαμβϊνει την τροφοδοςύα του κουτιού με ειςόδουσ και την καταγραφό των αποτελεςμϊτων εξόδου Στόχοσ εύναι να δοθεύ κϊθε πιθανό εύδοσ ειςόδου και τα αποτελϋςματα να εύναι τα προςδοκώμενα Ανοιχτό Κουτύ (White Box): Η εςωτερικό δομό και τη λογικό του αντικειμϋνου του ελϋγχου εύναι απολύτωσ γνωςτό Οι δοκιμαςύεσ ελϋγχου ϋχουν ωσ ςτόχο να εκτελούν όλεσ τισ εντολϋσ ό όλεσ τισ πιθανϋσ διαδρομϋσ τησ ροόσ ελϋγχου
Αυτόματοι Έλεγχοι (1/5) Τρόποι ςχεδιαςμού και εκτϋλεςησ μιασ δοκιμαςύασ ελϋγχου: Χειροκύνητοι ϋλεγχοι: οι προγραμματιςτϋσ γρϊφουν τη δοκιμαςύα ελϋγχου προετοιμϊζοντασ τα δεδομϋνα ειςόδου, καταχωρούν ςτη μονϊδα που ελϋγχεται τα δεδομϋνα, και εκτυπώνουν ςτην οθόνη του υπολογιςτό τα δεδομϋνα εξόδου ώςτε να ςυγκριθούν με τα αναμενόμενα αποτελϋςματα Αυτόματοι ϋλεγχοι: οι προγραμματιςτϋσ γρϊφουν τον κώδικα που προετοιμϊζει τα δεδομϋνα και εκτελεύ τον ϋλεγχο
Αυτόματοι Έλεγχοι (2/5) Εφόςον επιλεχθεύ η κωδικοπούηςη των δοκιμαςιών ελϋγχου, ο κώδικασ χωρύζεται ςε δύο κατηγορύεσ: Κώδικασ παραγωγόσ: Παρϊγει το τελικό προώόν λογιςμικού Κώδικασ ελϋγχου: Συντϊςςεται για την εκτϋλεςη των ελϋγχων μονϊδασ Ο κώδικασ για τον αυτόματο ϋλεγχο γρϊφεται «μαζύ» (πριν ό αμϋςωσ μετϊ) με τον κώδικα παραγωγόσ
Αυτόματοι Έλεγχοι (3/5) Πλεονεκτόματα αυτόματων ελϋγχων: Συγκριτικϊ με τουσ χειροκύνητουσ ελϋγχουσ, ϋχουν μικρότερη πιθανότητα να εκτελεςτούν λανθαςμϋνα (McConnell, 2004: όπωσ αναφϋρεται ςτο Γιακουμϊκησ & Διαμαντύδησ, 2009) Εύναι αυτομϊτωσ διαθϋςιμοι ςε όλη την ομϊδα ανϊπτυξησ Εκτελούνται ςυνεχώσ Αυξϊνουν την πιθανότητα να βρεθεύ κϊποιο ςφϊλμα νωρύσ μειϊνεται ο χρόνοσ εκςφαλμάτωςθσ Παρζχουν αςφάλεια όταν γίνονται ςθμαντικζσ αλλαγζσ ςτθ δομι του κϊδικα Μποροφν να εκτελεςτοφν πολλζσ φορζσ και να αποτελζςουν βάςθ για τθν εκτζλεςθ των ελζγχων παλινδρόμθςθσ
Αυτόματοι Έλεγχοι (4/5) Ιδιότητεσ αυτόματων ελϋγχων: Αυτόματοι: θα πρϋπει να εύναι πλόρωσ αυτοματοποιημϋνοι, δηλαδό όλα τα δεδομϋνα ειςόδου και όλοι οι ιςχυριςμού θα πρϋπει να ςυμπεριλαμβϊνονται ςτουσ ελϋγχουσ θ μόνθ ζξοδοσ κα πρζπει να είναι αν ζχουν εκτελεςτεί όλοι οι ζλεγχοι επιτυχϊσ, και αν όχι, ποιοι ζλεγχοι απζτυχαν Διεξοδικοί: κα πρζπει να ελζγχουν όλεσ τισ πικανζσ περιπτϊςεισ, όπωσ τθν ειςαγωγι ελλιπϊν και λανκαςμζνων δεδομζνων, τισ ακραίεσ ςυνκικεσ, να προκαλοφν εξαιρζςεισ και να καλφπτουν διαφορετικά μονοπάτια ςτισ ροζσ ελζγχου υπάρχουν ειδικά εργαλεία που εμφανίηουν τθν κάλυψθ του κϊδικα παραγωγισ από τουσ αυτόματουσ ελζγχουσ Επαναλήψιμοι: κα πρζπει να εκτελοφνται πολλζσ φορζσ και να παράγουν τα ίδια αποτελζςματα
Αυτόματοι Έλεγχοι (5/5) Ιδιότητεσ αυτόματων ελϋγχων (ςυνϋχεια): Ανεξϊρτητοι: δε θα πρϋπει να χρηςιμοποιούνται τα αποτελϋςματα μιασ δοκιμαςύασ ελϋγχου ςε κϊποια ϊλλη δοκιμαςύα και κϊθε δοκιμαςύα ελϋγχου θα πρϋπει να εκτελεύται με τυχαύα ςειρϊ Επαγγελματικού: όλεσ οι δοκιμαςύεσ ελϋγχου θα πρϋπει να ϋχουν μόνιμο χαρακτόρα, να αναπτύςςεται με την ύδια προςοχό με την οπούα αναπτύςςεται ο κώδικασ παραγωγόσ και να ςυντηρεύται παρϊλληλα με το υπόλοιπο λογιςμικό
Πλϊνο Ελϋγχου Ιδιότητεσ: Οργανώνει τισ δραςτηριότητεσ ελϋγχου όλων των επιπϋδων, από τον ϋλεγχο μονϊδασ ϋωσ και το ςυνολικό ϋλεγχο του ςυςτόματοσ) Καταδεικνύει ςτον πελϊτη ότι το λογιςμικό εύναι ελεύθερο από τεχνικϊ ςφϊλματα και εκτελεύ τισ λειτουργύεσ όπωσ προςδιορύςτηκαν Εξηγεύ ποιοσ κϊνει τον ϋλεγχο, γιατύ γύνονται οι ϋλεγχοι, πωσ ϋχουν ςχεδιαςτεύ οι ϋλεγχοι και πότε ϋχουν προγραμματιςτεύ να γύνουν Για το ςχεδιαςμό ενόσ πλϊνου ελϋγχου του ςυςτόματοσ, θα πρϋπει να γνωρύζουμε τισ απαιτόςεισ του λογιςμικού, το αρχιτεκτονικό και το λεπτομερϋσ ςχϋδιο Για κϊθε ςτϊδιο ελϋγχου, το πλϊνο περιγρϊφει με λεπτομϋρεια τισ μεθόδουσ που πρϋπει να χρηςιμοποιηθούν για την εκτϋλεςη των ελϋγχων (π.χ. λόγοι επιλογόσ δοκιμαςιών ελϋγχου, δεδομϋνα ειςόδου, ςυνθόκεσ, περιγραφό αναμενόμενησ εξόδου, εργαλεύα, κ.ϊ.)
Βιβλιογραφύα Γιακουμϊκησ, Ε. & Διαμαντύδησ, Ν. (2009). Τεχνολογία λογιςμικού, Εκδόςεισ Σταμούλη, Αθόνα Sommerville, I. (2008). Βαςικέσ Αρχέσ Τεχνολογίασ Λογιςμικού, Κλειδϊριθμοσ, Αθόνα Pressman, R. S. (2012). Τεχνολογία Λογιςμικού Μια πρακτική προςέγγιςη, Τζιόλα, Αθόνα McConnell, S. (1996). Rapid development: taming wild software schedules. Pearson Education McConnell, S. (2004). Code complete. Pearson Education