Στρατηγικές ελέγχου ολοκλήρωσης ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Εφόσον τα διάφορα συστατικά λειτουργούν σωστά (ικανοποιούν τους στόχους), συνδυάζονται σ’ ένα (ολοκληρωμένο) σύστημα. Το σύστημα επανεξετάζεται θεωρούμενο σαν μία ιεραρχία συστατικών, όπου κάθε συστατικό ανήκει σε κάποιο επίπεδο του σχεδίου (φάση συγγραφής κώδικα, φάση ελέγχου μονάδων κλπ). Στρατηγικές ελέγχου ολοκλήρωσης Ολοκλήρωση από κάτω προς τα πάνω (bottom-up testing) Ελέγχεται πρώτα –ξεχωριστά κάθε συστατικό χαμηλότερου επιπέδου της ιεραρχίας του συστήματος. Ακολούθως, τα προς εξέταση εναπομείναντα συστατικά καλούν αυτά που προηγουμένως ελέγχθηκαν. Η διαδικασία επαναλαμβάνεται μέχρις ότου ελεγχθούν όλα τα συστατικά. Έτσι, η εμφάνιση προβλήματος σε κάποιο βήμα της διαδικασίας οφείλεται στο συστατικό (ή συστατικά) που καλούνται σ’ αυτό το βήμα. Χρήσιμη στρατηγική σε περιπτώσεις που: πολλά από τα χαμηλού επιπέδου συστατικά είναι υποπρογράμματα γενικού σκοπού που καλούνται από άλλα συστατικά (αντικειμενοστραφής σχεδίαση) ή σε περιπτώσεις που το σύστημα αποτελείται από μεγάλο πλήθος ανεξάρτητων επαναχρησιμοποιήσιμων συστατικών.
Βήματα στρατηγικής ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Παράδειγμα Ολοκλήρωση από κάτω προς τα πάνω (bottom-up testing) Σύστημα εικονιζόμενης ιεραρχίας συστατικών Βήματα στρατηγικής Α Β C D E F G Αρχικά, έλεγχος των χαμηλότερου επιπέδου συστατικών E,F,G: επειδή δεν υπάρχουν έτοιμα συστατικά για να τα καλέσουν, γράφεται (για καθένα απ’ αυτά) ειδικό υποπρόγραμμα (οδηγός συστατικού – component driver) που το καλεί και εισάγει σ’ αυτό μία περίπτωση ελέγχου. Εφόσον τα E,F,G λειτουργούν σωστά, ο έλεγχος εστιάζεται στα συστατικά του υψηλότερου επιπέδου. Αυτά δεν ελέγχονται μεμονωμένα αλλά συνδυάζονται με τα (ήδη ελεγμένα) συστατικά που καλούν. Στο παράδειγμα, εξετάζονται μαζί τα Β,Ε,F, τα D,G και το C. Τέλος ελέγχονται όλα μαζί (A,B,E,F,C,D,G). Έλεγχος του Ε Έλεγχος του F Έλεγχος του G Έλεγχος των B, Ε, F Έλεγχος του C Έλεγχος των D,G Έλεγχος των A,B, C, D, E, F, G Απαιτούμενοι οδηγοί E / F / G / C 4 B, E, F 1 D, G 1 A, B, E, F, C, D, G 1
Ολοκλήρωση από κάτω προς τα πάνω (bottom-up testing) ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Ολοκλήρωση από κάτω προς τα πάνω (bottom-up testing) Παρατηρήσεις Τα συστατικά υψηλότερου επιπέδου είναι γενικότερα και εκφράζουν τις κύριες δραστηριότητες του συστήματος σε σχέση με τα συστατικά χαμηλότερων επιπέδων που αναλαμβάνουν πιο εξειδικευμένους ρόλους και τους ανατίθεται το συνολικό φορτίο λειτουργίας του συστήματος (λειτουργίες εισόδου / εξόδου, επαναληπτικοί υπολογισμοί κλπ.). Κάποιοι κατασκευαστές SW θεωρούν μειονέκτημα τον έλεγχο των υψηλών επιπέδων μετά την ολοκλήρωση του ελέγχου των χαμηλότερων επιπέδων (μετάθεση στο τέλος του ελέγχου του εντοπισμού κύριων σφαλμάτων του συστήματος). Επίσης, επειδή συχνά τα σφάλματα των υψηλότερων επιπέδων αντανακλούν σφάλματα του σχεδίου, η έγκαιρη αντιμετώπισή τους (φάση υλοποίησης του έργου) είναι απαραίτητη. Είναι δύσκολη η εφαρμογή αυτής της στρατηγικής σε συστήματα που βασίζουν την επεξεργασία τους στο χρονισμό μιας και τα συστατικά του υψηλότερου επιπέδου συχνά ελέγχουν / επηρεάζουν το χρονισμό ενός συστήματος. Τέλος, η στρατηγική ελέγχου από κάτω προς τα πάνω ανταποκρίνεται καλύτερα σε αντικειμενοστραφή συστήματα λογισμικού αφού κάθε φορά ένα αντικείμενο συνδυάζεται με ήδη ελεγμένα αντικείμενα ή ομάδες αντικειμένων και με την αποστολή μηνυμάτων από το ένα στο άλλο ο έλεγχος διασφαλίζει τη σωστή αντίδρασή τους.
Ολοκλήρωση από πάνω προς τα κάτω (top-down approach) ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Ολοκλήρωση από πάνω προς τα κάτω (top-down approach) Ελέγχεται ξεχωριστά το συστατικό υψηλότερου επιπέδου, ως συστατικό «συντονισμού» του συστήματος. Κατόπιν το σύνολο όλων των συστατικών που καλούνται από ένα ήδη ελεγμένο συστατικό συνδυάζονται και ελέγχονται μαζί σαν μία μεγαλύτερη μονάδα. Τα παραπάνω βήματα εφαρμόζονται επαναληπτικά μέχρις ότου ολοκληρωθεί ο έλεγχος όλων των συστατικών του συστήματος. Στις περιπτώσεις που κάποιο ελεγχόμενο συστατικό καλεί κάποιο άλλο μη ελεγμένο συστατικό, απαιτείται η συγγραφή ενός απλού σχετικά κώδικα ειδικού σκοπού (στέλεχος - stub) που προσομοιάζει τη λειτουργία του καλούμενου συστατικού. Το στέλεχος αναλαμβάνει να απαντήσει στη σχετική κλήση παρέχοντας στο συστατικό που το κάλεσε τα αποτελέσματα εξόδου και επιτρέποντας έτσι τη συνέχιση της διαδικασίας ελέγχου. Παράδειγμα Α Β C D E F G Σύστημα εικονιζόμενης ιεραρχίας συστατικών Έλεγχος του Α Έλεγχος των Α,B, C, D Έλεγχος των A,B, C, D, E, F, G Αρχικά, το συστατικό Α (υψηλότερου επιπέδου) ελέγχεται ξεχωριστά. Αφού ολοκληρωθεί ο έλεγχός του, το Α συνδυάζεται με τα συστατικά του χαμηλότερου επιπέδου ώστε να ελεγχθούν μαζί τα A, B, C, D. Τέλος ελέγχονται όλα μαζί τα συστατικά (συνολικό σύστημα). Απαιτούμενοι οδηγοί και στελέχη Α 1 οδηγός, 3 στελέχη για τα συστατικά B, C, D A, B, C, D 3 στελέχη για τα συστατικά E, F, G, 1 οδηγός
Ολοκλήρωση από πάνω προς τα κάτω (top-down approach) ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Ολοκλήρωση από πάνω προς τα κάτω (top-down approach) Παρατηρήσεις Τα πλεονεκτήματα της σχεδίασης / κωδικοποίησης μέσω της προσέγγισης από πάνω προς τα κάτω διατηρούνται και στον έλεγχο. Εφόσον οι λειτουργίες των συστατικών έχουν τοποθετηθεί με σχεδίαση από πάνω προς τα κάτω, η ομώνυμη προσέγγιση ελέγχου επιτρέπει στους ελεγκτές να εξετάζουν μία λειτουργία του συστήματος κάθε φορά ακολουθώντας τις εντολές ελέγχου από το υψηλότερο μέχρι το χαμηλότερο επίπεδο (μέσω των αντίστοιχων συστατικών). Έτσι, ορίζονται περιπτώσεις ελέγχου ανάλογα με τις λειτουργίες που εξετάζονται. Επίσης, ενδεχόμενα σφάλματα του σχεδίου αντιμετωπίζονται στην αρχή του ελέγχου. Στην προσέγγιση από πάνω προς τα κάτω αν και δεν απαιτείται η κατασκευή οδηγών, η χρήση στελεχών μπορεί να καταστεί δύσκολη διαδικασία αφού θα πρέπει αυτά να τροποποιούνται κατάλληλα σε κάθε ενδεχόμενη τροποποίηση των προδιαγραφών του σχεδίου, ώστε να επιτρέπουν τον έλεγχο όλων των δυνατών περιπτώσεων. Η ορθότητα των στελεχών επηρεάζει συνεπώς την εγκυρότητα του διενεργούμενου ελέγχου. Σε συστήματα των οποίων τα συστατικά χαμηλότερου επιπέδου περιλαμβάνουν πλήθος υποπρογραμμάτων γενικού σκοπού απαιτείται η συγγραφή μεγάλου αριθμού στελεχών. Το πρόβλημα αυτό μπορεί να αντιμετωπιστεί τροποποιώντας την προσέγγιση ελέγχου από πάνω προς τα κάτω ώστε να ελέγχονται ξεχωριστά τα συστατικά κάθε επιπέδου πριν από τη διαδικασία συνένωσης.
Παράδειγμα τροποποιημένης στρατηγικής ελέγχου από πάνω προς τα κάτω ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Παράδειγμα τροποποιημένης στρατηγικής ελέγχου από πάνω προς τα κάτω Ολοκλήρωση από πάνω προς τα κάτω (top-down approach) Α Β C D E F G Σύστημα εικονιζόμενης ιεραρχίας συστατικών Έλεγχος του Α Έλεγχος των Α,B, C, D A,B, C, D, E, F, G Έλεγχος του B Έλεγχος του C Έλεγχος του D Έλεγχος του E Έλεγχος του F Έλεγχος του G Αρχικά, το συστατικό Α (υψηλότερου επιπέδου) ελέγχεται ξεχωριστά. Ελέγχονται αυτόνομα τα B, C, D. Συνενώνονται και ελέγχονται μαζί τα A, B, C, D (1ο και 2ο επίπεδο). Ελέγχονται αυτόνομα τα E, F, G. Το συνολικό σύστημα συνδυάζεται για τελικό έλεγχο. Μειονέκτημα μεμονωμένου ελέγχου συστατικών κάθε επιπέδου Συγγραφή μεγάλης έκτασης κώδικα λόγω του απαιτούμενου συνολικού πλήθους στελεχών / οδηγών των συστατικών με πιθανή την εμφάνιση πολλών νέων προβλημάτων.
Εφάπαξ ολοκλήρωση (big-bang testing) Myers 1979 ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Εφάπαξ ολοκλήρωση (big-bang testing) Myers 1979 Αφού ολοκληρωθεί ο έλεγχος όλων των συστατικών ξεχωριστά, πραγματοποιείται κατευθείαν έλεγχος καλής λειτουργίας πάνω στο τελικό σύστημα που προκύπτει από τη συνένωση όλων των συστατικών. Αν και είναι δυνατή η υιοθέτηση αυτής της προσέγγισης σε μικρής έκτασης συστήματα λογισμικού, σε μεγάλα συστήματα παρουσιάζει πολλά και σοβαρά μειονεκτήματα που την καθιστούν ουσιαστικά ανέφικτη, αφού: για τον έλεγχο ανεξάρτητων συστατικών απαιτεί και στελέχη και οδηγούς η ανεύρεση της αιτίας που προκαλεί μία δυσλειτουργία στο υπό εξέταση σύστημα είναι δύσκολη λόγω της ταυτόχρονης συγχώνευσης όλων μαζί των συστατικών του η εφάπαξ ολοκλήρωση δυσκολεύει την απομόνωση των σφαλμάτων διασύνδεσης από άλλους τύπους σφαλμάτων. Παράδειγμα Α Β C D E F G Έλεγχος του Α Έλεγχος του G Έλεγχος των A,B, C, D, E, F, G Έλεγχος του Β Έλεγχος του C Έλεγχος του D Έλεγχος του E Έλεγχος του F Σύστημα εικονιζόμενης ιεραρχίας συστατικών Απαιτούμενοι οδηγοί και στελέχη Α / B / C / D / E / F / G 7 οδηγοί, 7 στελέχη για όλα συνολικά A, B, C, D, E, F, G 1 οδηγός
Ολοκλήρωση σάντουιτς (sand - wich testing) Myers 1979 ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Ολοκλήρωση σάντουιτς (sand - wich testing) Myers 1979 Στηρίζεται στο συνδυασμό των στρατηγικών από πάνω προς τα κάτω και από κάτω προς τα πάνω. Όπως ένα σάντουιτς, το σύστημα διακρίνεται σε 3 επίπεδα: το επίπεδο πάνω από το στόχο, το επίπεδο στόχος (μεσαίο) και το επίπεδο κάτω από το στόχο. Η επιλογή του επιπέδου – στόχος (στο οποίο συγκλίνει ο έλεγχος) γίνεται με βάση τα χαρακτηριστικά του υπό εξέταση συστήματος και τη δόμηση της ιεράρχησης των συστατικών του. Αν π.χ. το χαμηλότερο επίπεδο περικλείει πολλά προγράμματα γενικής χρήσης, σαν επίπεδο στόχου μπορεί να επιλεγεί το επίπεδο που βρίσκεται πάνω ακριβώς απ’ αυτό και στο οποίο θα βρίσκονται τα περισσότερα από τα συστατικά που καλούν τα προγράμματα γενικής χρήσης. Στα πλαίσια αυτής της προσέγγισης, εφαρμόζοντας έλεγχο από κάτω προς τα πάνω μπορούμε να επαληθεύσουμε στην αρχή της συνολικής διαδικασίας ελέγχου την ορθότητα των προγραμμάτων γενικής χρήσης χωρίς την ανάγκη δημιουργίας στελεχών αφού τα πραγματικά προγράμματα είναι διαθέσιμα για χρήση. Παράδειγμα Σύστημα εικονιζόμενης ιεραρχίας συστατικών Έλεγχος των A,B, C, D, E, F, G Έλεγχος του E Έλεγχος του A Έλεγχος του B, E, F Έλεγχος του D, G Έλεγχος του G Έλεγχος του F επίπεδο – στόχος Α Β C D E F G Απαιτούμενοι οδηγοί και στελέχη E, F, G, A 4 οδηγοί, 3 στελέχη B, E, F 1 οδηγός D, G 1 οδηγός
Ολοκλήρωση σάντουιτς (sand - wich testing) ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Ολοκλήρωση σάντουιτς (sand - wich testing) Παρατηρήσεις Στα πλεονεκτήματα της προσέγγισης εντάσσεται η δυνατότητα έναρξης του ελέγχου ολοκλήρωσης νωρίς κατά τη διαδικασία ελέγχου. Ένα άλλο πλεονέκτημα είναι ότι κληρονομεί τα πλεονεκτήματα των στρατηγικών ελέγχου που μεταχειρίζεται (από πάνω προς τα κάτω και από κάτω προς τα πάνω). Έτσι, εξετάζει τα συστατικά συντονισμού (υψηλό επίπεδο) και τα προγράμματα γενικής χρήσης (χαμηλό επίπεδο) στην αρχή της ελεγκτικής διαδικασίας. Στα μειονεκτήματα πρέπει να συμπεριληφθεί το γεγονός ότι δεν ελέγχεται λεπτομερώς κάθε μεμονωμένο συστατικό πριν τη φάση της ολοκλήρωσης. Ένα τρόπο αντιμετώπισης αυτού του προβλήματος αποτελεί ο τροποποιημένος έλεγχος σάντουιτς, ο οποίος επιτρέπει τον έλεγχο των συστατικών του ανώτερου επιπέδου πριν τη συνένωσή τους με τα υπόλοιπα. Έλεγχος των A,B, C, D, E, F, G Έλεγχος του E Έλεγχος του A Έλεγχος του B, E, F Έλεγχος του D, G Έλεγχος του G Έλεγχος του F Έλεγχος του C Έλεγχος του B Έλεγχος του D Παράδειγμα τροποποιημένης στρατηγικής ελέγχου σάντουιτς Σύστημα εικονιζόμενης ιεραρχίας συστατικών Α Β C D E F G
ΕΛΕΓΧΟΣ ΟΛΟΚΛΗΡΩΣΗΣ Σύγκριση στρατηγικών ολοκλήρωσης Myers 1979 Από κάτω προς τα πάνω Από πάνω προς τα κάτω Τροποποιη-μένη από πάνω προς τα κάτω Εφάπαξ Σάντουιτς Τροποποιη-μένη σάντουιτς Ολοκλήρωση Νωρίς Αργά Χρόνος μέχρι το βασικό πρόγραμμα εργασίας Ανάγκη οδηγών συστατικών Ναι Όχι Ανάγκη στελεχών Παραλλη-λισμός εργασίας στο ξεκίνημα Μέτρια Χαμηλή Υψηλή Δυνατότητα ελέγχου συγκεκριμέ-νων μονοπατιών Εύκολη Δύσκολη Δυνατότητα σχεδιασμού και ελέγχου ακολουθίας