Κυριακή 6 Φεβρουαρίου 2011

Μηχανική και Τεχνολογία Λογισμικού: Διάλεξη 5

ΜΗΧΑΝΙΚΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ
ΘΕΩΡΙΑ

5: Έλεγχος Συστήματος
  • Έλεγχος συστήματος:
    • Η φάση ελέγχου κατά την ανάπτυξη λογισμικού στοχεύει στην εύρεση και διόρθωση σφαλμάτων στην υλοποίηση, τα οποία διέφυγαν της συνηθισμένης αποσφαλμάτωσης που διενεργούν οι προγραμματιστές.
    • Τα εν λόγω σφάλματα δεν είναι απαραιτήτως λογικά σφάλματα ως προς τη λειτουργία του κώδικα. Μπορούν επίσης να είναι σφάλματα επιδόσεων, η εμφάνιση των οποίων υπονοεί πως πιθανώς απαιτούνται διαφορετικοί αλγόριθμοι από αυτούς που επελέγησαν κατά τη σχεδίαση για κάποιες λειτουργίες, σφάλματα υπερφόρτωσης, τα οποία σχετίζονται με την αδυναμία του συστήματος να διαχειριστεί το ζητούμενο πλήθος δεδομένων, χρηστών κλπ, σφάλματα ακρίβειας, όπου κάποιοι αριθμητικοί υπολογισμοί για κάποιους λόγους δεν δίνουν αποτελέσματα με τον απαιτούμενο βαθμό ακρίβειας, και ούτω καθεξής.
    • Όλα αυτά τα σφάλματα συνεπάγονται πως το προϊόν δεν ικανοποιεί κάποιες από τις μη λειτουργικές απαιτήσεις.

  • Στάδια του ελέγχου:
    • Ο έλεγχος διακρίνεται σε «έλεγχο προγράμματος» και σε «έλεγχο συστήματος». Οι δύο αυτοί τύποι ελέγχου συνήθως εκτελούνται διαδοχικά και σειριακά.
      • Ο έλεγχος προγράμματος αφορά την επισκόπηση του κώδικα ο οποίος έχει υλοποιηθεί και διαιρείται σε «έλεγχο μονάδων» και «έλεγχο ολοκλήρωσης».
        • Κατά τον έλεγχο μονάδων τα υποσυστήματα τα οποία καθορίζει η αρχιτεκτονική του λογισμικού ελέγχονται ως προς την ορθότητά τους μεμονωμένα και ανεξάρτητα το ένα από το άλλο.
        • Αφού έχει διασφαλιστεί η ορθότητα των επιμέρους υποσυστημάτων, ελέγχεται η ορθή λειτουργία του συνολικού συστήματος. Αυτός είναι ο έλεγχος ολοκλήρωσης.
      • Ο έλεγχος συστήματος διαιρείται σε: 
        • «Έλεγχο λειτουργιών», μία επικύρωση του πλήρους λογισμικού ως προς τις λειτουργικές απαιτήσεις, με βάση τα σενάρια χρήσης τα οποία είχαν προσδιοριστεί κατά την ανάλυση απαιτήσεων.
        • «Έλεγχο επιδόσεων», μία επικύρωση του πλήρους λογισμικού ως προς τις μη λειτουργικές απαιτήσεις, όπως είχαν προσδιοριστεί κατά την ανάλυση απαιτήσεων.
        • «Έλεγχο αποδοχής», όπου το σύστημα εξετάζεται από κοινού με τον πελάτη που το παρήγγειλε και τους τελικού χρήστες, ώστε να εξασφαλιστεί πως ικανοποιεί τις προσδοκίες τους.
        • «Έλεγχο εγκατάστασης», όπου το σύστημα εγκαθίσταται στο περιβάλλον όπου πρόκειται να χρησιμοποιηθεί και παρακολουθείται για κάποιο διάστημα η λειτουργία του σε πραγματικές συνθήκες.
 
  • Μέθοδοι ελέγχου προγράμματος:
    • Ο έλεγχος προγράμματος συνήθως γίνεται από ελεγκτές ανεξάρτητους από τους σχεδιαστές και τους προγραμματιστές. Για την επίτευξή του υπάρχουν δύο τρόποι, οι οποίοι είναι συμπληρωματικοί και συνήθως εφαρμόζονται από κοινού.
      • Στατικός έλεγχος: οι προγραμματιστές παρουσιάζουν τον αναπτυγμένο κώδικα και την τεκμηρίωσή του στους ελεγκτές, αναμένοντας τα σχόλια των τελευταίων περί της ορθότητάς του.
      • Δυναμικός έλεγχος: οι ελεγκτές διενεργούν πειράματα τροφοδοτώντας το λογισμικό με προεπιλεγμένα δεδομένα εισόδου και συγκρίνοντας τις εξόδους που παράγονται με τις επιθυμητές. Αν ταυτίζονται για όλες τις περιπτώσεις ελέγχου, τότε αυξάνεται ο βαθμός αξιοπιστίας του προϊόντος.
    • Το αν η επιλογή των περιπτώσεων ελέγχου γίνεται λαμβάνοντας υπόψη τη συγκεκριμένη υλοποίηση του λογισμικού ή όχι, καθορίζει το αν έχουμε δυναμικό έλεγχο «λευκού κουτιού» ή «μαύρου κουτιού» αντιστοίχως. Στη δεύτερη περίπτωση, οι περιπτώσεις ελέγχου πρέπει να αποτελούν ένα αντιπροσωπευτικό δείγμα των πιθανών εισόδων με τις οποίες μπορεί να τροφοδοτηθεί το σύστημα κατά την κανονική λειτουργία του. Στην πρώτη περίπτωση, οι περιπτώσεις ελέγχου πρέπει να καλύπτουν ένα αντιπροσωπευτικό δείγμα των πιθανών ροών ελέγχου του προγράμματος κατά την κανονική λειτουργία του.
 
  • Στρατηγικές ελέγχου ολοκλήρωσης:
    • Ο έλεγχος ολοκλήρωσης προϋποθέτει την επιλογή μίας στρατηγικής αξιολόγησης της από κοινού λειτουργίας πολλαπλών μονάδων / υποσυστημάτων / συστατικών. Οι διάφορες στρατηγικές που έχουν καταρτιστεί προς αυτό τον σκοπό, ουσιαστικά καθορίζουν και με ποια σειρά θα γίνει ο έλεγχος μονάδων. Στόχος είναι να διασφαλίζεται πως αν εμφανιστεί κάποιο λάθος κατά τον έλεγχο, να είναι εύκολος ο εντοπισμός του υπαίτιου συστατικού.
    • Συνήθως τα συστατικά μίας αρχιτεκτονικής οργανώνονται σε μία δενδρική ιεραρχία εξαρτήσεων: η ρίζα ενός υποδένδρου της ιεραρχίας είναι ένα συστατικό το οποίο εξαρτάται από όλα τα συστατικά στους θυγατρικούς του κόμβους, ενώ μόνο τα φύλλα του δένδρου δεν εξαρτώνται από κανένα άλλο συστατικό.
    • Στη στρατηγική «από κάτω προς τα πάνω» πρώτα ελέγχονται τα φύλλα ως μεμονωμένες μονάδες, ενώ στη συνέχεια ελέγχονται τα συστατικά που βρίσκονται ένα επίπεδο πάνω στην ιεραρχία. Προφανώς τα συστατικά αυτά εξαρτώνται από τα φύλλα και άρα, αφού εξεταστούν μεμονωμένα, ελέγχεται η συνεργασία τους με τα τελευταία. Η διαδικασία αυτή συνεχίζεται ώσπου ο έλεγχος να φτάσει στη ρίζα.
    • Στη στρατηγική «από πάνω προς τα κάτω» ακολουθείται η αντίστροφη φορά.
    • Στη στρατηγική «σάντουιτς» επιλέγεται ένα επίπεδο της ιεραρχίας και ο έλεγχος των συστατικών αυτού του επιπέδου γίνεται ταυτόχρονα και από πάνω προς τα κάτω και από κάτω προς τα πάνω (π.χ. από διαφορετικές ομάδες ελεγκτών οι οποίες εργάζονται παράλληλα).

      Δεν υπάρχουν σχόλια:

      Δημοσίευση σχολίου

      Αφήστε το σχόλιό σας για την τρέχουσα ανάρτηση: