Αξιοπιστία Λογισμικού Κατηγοριοποίηση και εξειδίκευση της αξιοπιστίας των συστημάτων λογισμικού
Στόχοι Συζήτηση προβλημάτων εξειδίκευσης και μέτρησης Εισαγωγή μέτρων αξιοπιστίας και συζήτηση για την χρήση τους σε εξειδίκευση αξιοπιστίας Περιγραφή διαδικασίας στατιστικού ελέγχου Να δείξουμε πως η επιβεβαίωση της αξιοπιστίας μπορεί να εξαχθεί από αποτελέσματα στατιστικού ελέγχου
Θέματα Ορισμός αξιοπιστίας Αξιοπιστία και αποτελεσματικότητα Μέτρα αξιοπιστίας Εξειδίκευση αξιοπιστίας Στατιστικός έλεγχος και λειτουργικά προφιλ Μοντελοποίηση αύξησης αξιοπιστίας Πρόβλεψη αξιοπιστίας
Τι είναι αξιοπιστία; Πιθανότητα λειτουργίας χωρίς αστοχία για καθορισμένο χρόνο σε καθορισμένο περιβάλλον για δεδομένους λόγους Αυτό σημαίνει διαφορετικά πράγματα ανάλογα με το σύστημα και τους χρήστες του συστήματος Άτυπα, η αξιοπιστία είναι μέτρο του πόσο καλά οι χρήστες νομίζουν ότι παρέχει τις υπηρεσίες που απαιτούν
Αξιοπιστία Λογισμικού Δεν μπορεί να ορισθεί αντικειμενικά Μέτρα αξιοπιστίας τα οποία καθορίζονται σε έχουν έννοια Απαιτεί λειτουργικό προφίλ για τον ορισμό του Το λειτουργικό προφίλ ορίζει το αναμενόμενο πρότυπο χρήσης λογισμικού Πρέπει να θεωρήσουμε τις επιπτώσεις αποτυχίας Δεν είναι όλες οι αποτυχίες το ίδιο σοβαρές. Το σύστημα είναι περισσότερο αναξιόπιστο εάν υπάρχουν σοβαρές αποτυχίες
Αποτυχίες και Λάθη Μία αποτυχία αντιστοιχεί σε απρόβλεπτη συμπεριφορά που παρατηρείται από τον χρήστη του λογισμικού Ένα λάθος είναι στατικό χαρακτηριστικό του συστήματος που προκαλεί εμφάνιση αποτυχίας του συστήματος Τα λάθη δεν προκαλούν κατ’ ανάγκη αποτυχίες. Αυτό γίνεται μόνο όταν χρησιμοποιείται το συγκεκριμένο τμήμα του λογισμικού Εάν κάποιος χρήστης σημειώσει μία αποτυχία, είναι αποτυχία; Οι περισσότεροι χρήστες δεν γνωρίζουν τις προδιαγραφές λογισμικού
Αντιστοίχιση Εισόδου / Εξόδου
Βελτίωση Αξιοπιστίας Η αξιοπιστία βελτιώνεται όταν τα λάθη που υπάρχουν στον πλέον συχνά χρησιμοποιούμενο τμήμα του κώδικα απομακρύνονται Απομάκρυνση του x% των λαθών δεν σημαίνει κατ’ ανάγκη βελτίωση της αξιοπιστίας κατά x% Σύμφωνα με αποτελέσματα μελέτης απομάκρυνση του 60% των λαθών λογισμικού οδηγεί σε 3% βελτίωση αξιοπιστίας Η απομάκρυνση λαθών με σοβαρές επιπτώσεις είναι ο σημαντικότερος στόχος
Αντίληψη της Αξιοπιστίας
Αξιοπιστία και Τυπικές Μέθοδοι Η χρήση των τυπικών μεθόδων οδηγούν σε πιο αξιόπιστα συστήματα τα οποία μπορεί να αποδειχθεί ότι ικανοποιούν τις προδιαγραφές Η ανάπτυξη τυπικών προδιαγραφών οδηγεί σε λεπτομερή ανάλυση του συστήματος που εντοπίζει ανωμαλίες και παραλείψεις στις προδιαγραφές Όμως οι τυπικές μέθοδοι δεν βελτιώνουν απαραίτητα την αξιοπιστία
Αξιοπιστία και Τυπικές Μέθοδοι Οι προδιαγραφές δεν αντικατοπτρίζουν τις πραγματικές ανάγκες των χρηστών του συστήματος Μία τυπική προδιαγραφή αποκρύπτει προβλήματα διότι οι χρήστες δεν την καταλαβαίνουν Εκτυπώσεις προγραμμάτων συνήθως περιέχουν λάθη Συνήθως περιέχονται υποθέσεις για το περιβάλλον του συστήματος και την χρήση που είναι λάθος
Αξιοπιστία και Αποτελεσματικότητα Όσο βελτιώνεται η αξιοπιστία τόσο μειώνεται η αποτελεσματικότητα ενός συστήματος Για να γίνει ένα σύστημα πιο αξιόπιστο, απαιτείται επιπλέον κώδικας ο οποίος κάνει τους ελέγχους, κ.α. Ο επιπλέον κώδικας κάνει πιο αργό το λογισμικό
Αξιοπιστία και Αποτελεσματικότητα Η αξιοπιστία είναι πιο σημαντική από την αποτελεσματικότητα Δεν απαιτείται η χρήση υλικού πλήρως αφού οι Η/Υ είναι φτηνοί και γρήγοροι Δεν χρησιμοποιείται μη αξιόπιστο λογισμικό Δύσκολη η βελτίωση μη αξιόπιστων συστημάτων Τα κόστη αποτυχίας λογισμικού είναι συνήθως πολύ μεγαλύτερα από το κόστος του συστήματος Το κόστος από την απώλεια δεδομένων είναι πολύ υψηλό
Μέτρηση Αξιοπιστίας Τα μέτρα υλικού δεν είναι κατάλληλα για λογισμικό αφού βασίζονται σε αστοχίες στοιχείων και απαιτείται η αλλαγή ή επιδιόρθωση κάποιου στοιχείου όταν αστοχεί. Ο σχεδιασμός υποτίθεται ότι είναι σωστός Οι αστοχίες λογισμικού είναι πάντα αποτυχίες σχεδιασμού. Το σύστημα συνήθως είναι διαθέσιμο παρότι έχει εμφανισθεί μία αστοχία
Μέτρηση Αξιοπιστίας Πιθανότητα αποτυχίας on demand (POFOD) Είναι μέτρο της τάσης για αστοχία του συστήματος όταν γίνεται μία απαίτηση υπηρεσίας POFOD = 0.001 σημαίνει ότι 1 στις 1000 απαιτήσεις για υπηρεσία οδήγησαν σε αποτυχία Σημαντική για συστήματα με κρίσιμο σημείο την ασφάλεια και συστήματα που δεν σταματούν Ρυθμός Εμφάνισης Λαθών (ROCOF) Συχνότητα εμφάνισης μη αναμενόμενης συμπεριφοράς ROCOF 0.02 σημαίνει 2 αποτυχίες εμφανίζονται σε κάθε 100 λειτουργικές χρονικές μονάδες Σημαντικό για λειτουργικά συστήματα, και συστήματα συναλλαγών
Μέτρηση Αξιοπιστίας Μέσος Χρόνος για Αποτυχία Διαθεσιμότητα Μέτρο χρόνου μεταξύ εμφανιζόμενων αποτυχιών MTTF 500 σημαίνει ότι ο χρόνος μεταξύ αποτυχιών είναι 500 μονάδες χρόνου Σημαντική για συστήματα με μεγάλης διάρκειας συναλλαγές, π.χ. συστήματα CAD Διαθεσιμότητα Μέτρο του πόσο το σύστημα είναι διαθέσιμο για χρήση. Λαμβάνει υπόψη τον χρόνο αποκατάστασης / επανέναρξης Διαθεσιμότητα 0.998 σημαίνει ότι το λογισμικό είναι διαθέσιμο για για 998 στις 1000 μονάδες χρόνου Σημαντική για συστήματα τα οποία δουλεύουν συνεχώς, π.χ. σύστημα τηλεφώνων
Μέτρηση Αξιοπιστίας Μέτρηση του αριθμού των αστοχιών για δοσμένο αριθμό εισόδων του συστήματος Χρησιμοποιείται για υπολογισμό του POFOD Μέτρηση του χρόνου (ή αριθμού συναλλαγών) μεταξύ αποτυχιών του συστήματος Χρησιμοποιείται για το ROCOF και MTTF Μέτρηση του χρόνου για επανεκκίνηση μετά την αποτυχία Χρησιμοποιείται για AVAIL
Μονάδες Χρόνου Οι μονάδες χρόνου σε μετρήσεις αξιοπιστίας πρέπει να επιλέγονται προσεκτικά. Δεν είναι το ίδιο για όλα τα συστήματα Μικτός χρόνος εκτέλεσης (για non-stop sυστήματα) Ημερολογιακός χρόνος (για συστήματα τα οποία έχουν συχνή χρήση, π.χ. τρέχουν πάντα μία φορά την ημέρα) Αριθμός συναλλαγών (για συστήματα που χρησιμοποιούνται με βάση την ζήτηση)
Επιπτώσεις Αποτυχίας Οι μετρήσεις αξιοπιστίας δεν λαμβάνουν υπόψη τους τις επιπτώσεις της αστοχίας Προσωρινά λάθη δεν έχουν επιπτώσεις αλλά άλλα λάθη προκαλούν απώλεια δεδομένων ή απώλεια της υπηρεσίας του συστήματος Είναι απαραίτητο να ορισθούν διαφορετικές κλάσεις αστοχίας και χρήσεις διαφορετικών μετρήσεων για κάθε μία από αυτές
Εξειδίκευση Αξιοπιστίας Οι απαιτήσεις αξιοπιστίας σπάνια μπορούν να εκφρασθούν με ποσοτικό, ελέγξιμο τρόπο. Για την επιβεβαίωση των μετρήσεων αξιοπιστίας πρέπει να οριστεί ένα λειτουργικό προφίλ ως μέρος του τρόπου ελέγχου Η αξιοπιστία είναι δυναμική - εξειδικεύσεις αξιοπιστίας που σχετίζονται με τον πηγαίο κώδικα δεν έχουν έννοια. Όχι περισσότερα από N λάθη/1000 γραμμές. Είναι χρήσιμο μόνο για ανάλυση της διαδικασίας μετά την παράδοση
Κατηγοριοποίηση Αποτυχίας
Βήματα για Εξειδίκευση Αξιοπιστίας Για κάθε υπο - σύστημα ανάλυση των επιπτώσεων πιθανών αποτυχιών του συστήματος. Από την ανάλυση των αποτυχιών του συστήματος, κάνε κατάτμηση στις κατάλληλες κλάσεις. Για κάθε κλάση αστοχίας που αναγνωρίστηκε, όρισε την αξιοπιστία με χρήση του κατάλληλου μέτρο. Διαφορετικά μέτρα μπορούν να χρησιμοποιηθούν για διαφορετικές απαιτήσεις αξιοπιστίας.
Σύστημα ΑΤΜ Τραπεζών Κάθε μηχανή στο δίκτυο χρησιμοποιείται 300 φορές την ημέρα Η τράπεζα έχει 1000 μηχανές Η διάρκεια ζωής του λογισμικού είναι 2 έτη Κάθε μηχανή χειρίζεται περίπου 200, 000 συναλλαγές Περίπου 300, 000 συναλλαγές με την ΒΔ κάθε ημέρα στο σύνολο
Παραδείγματα Αξιοπιστίας
Αξιολόγηση Εξειδίκευσης Είναι αδύνατο να αξιολογηθούν εξειδικεύσεις υψηλής αξιοπιστίας Όχι προβλήματα ΒΔ σημαίνει POFOD λιγότερο από 1 σε 200 εκατομμύρια Εάν μία συναλλαγή παίρνει 1 sec, τότε η προσομοίωση των συναλλαγών μίας ημέρας παίρνει 3.5 ημέρες Θα πάρει παραπάνω από όσο είναι η διάρκεια ζωής του συστήματος για να ελεγχθεί η αξιοπιστία του
Οικονομικά Αξιοπιστίας Εξαιτίας του υψηλού κόστους για την επιτυχία της αξιοπιστίας πιθανό να είναι περισσότερο αποτελεσματικό ως προς το κόστος να αποδεχτούμε την αναξιοπιστία και να πληρώσουμε τα κόστη αποτυχίας Όμως αυτό εξαρτάται από κοινωνικούς και πολιτικούς παράγοντες. Η φήμη για αναξιόπιστα προϊόντα πιθανό να οδηγήσει σε απώλεια επιχειρηματικών ευκαιριών Εξαρτάται από τον τύπο του συστήματος - για συστήματα επιχειρήσεων μέτρια αξιοπιστία είναι συνήθως επαρκής
Κόστος για Αύξηση Αξιοπιστίας
Στατιστικός Έλεγχος Έλεγχος λογισμικού για αξιοπιστία αντί για εύρεση λαθών Η επιλογή των δεδομένων ελέγχου ακολουθεί το προβλεπόμενο προφίλ χρήσης για το λογισμικό Η μέτρηση του αριθμού των λαθών επιτρέπει την πρόβλεψη της αξιοπιστίας του λογισμικού Ένα αποδεκτό επίπεδο αξιοπιστίας πρέπει να ορισθεί και το λογισμικό να ελεγχθεί και να διορθωθεί έως ότου φθάσουμε στην επιθυμητή αξιοπιστία
Διαδικασία Στατιστικού Ελέγχου Εύρεση του λειτουργικού προφίλ του λογισμικού Παραγωγή συνόλου δεδομένων ελέγχου που αντιστοιχεί σε αυτό το προφίλ Εφαρμογή ελέγχων, μέτρηση χρόνου εκτέλεσης μεταξύ κάθε αποτυχίας Αφού εκτελεσθεί ένας στατιστικά σωστός αριθμός ελέγχων η αξιοπιστία μπορεί να μετρηθεί
Δυσκολίες Στατιστικού Ελέγχου Αβεβαιότητα στο λειτουργικό προφίλ Αυτό είναι σημαντικό πρόβλημα σε συστήματα χωρίς λειτουργική ιστορία. Μικρότερο πρόβλημα σε συστήματα που αντικαθιστούν υπάρχοντα Υψηλά κόστη για παραγωγή του λειτουργικού προφίλ Τα κόστη εξαρτώνται από τι πληροφορία χρήσης συλλέγεται από τον οργανισμό ο οποίος απαιτεί το προφίλ Στατιστική αβεβαιότητα όταν προδιαγράφεται υψηλή αξιοπιστία Δύσκολη η εκτίμηση επιπέδου βεβαιότητας στο λειτουργικό προφίλ Η μορφή χρήσης του λογισμικού αλλάζει με τον χρόνο
Ένα Λειτουργικό Προφίλ
Παραγωγή Λειτουργικού Προφίλ Πρέπει να παράγεται αυτόματα όταν αυτό είναι δυνατόν Η αυτόματη παραγωγή προφίλ είναι δύσκολη για διαλογικά συστήματα Μπορεί να είναι απλή διαδικασία για κανονικές εισόδους, αλλά πολύ δύσκολο να προβλεφθεί για όχι κανονικές και να παραχθούν δεδομένα ελέγχου
Μοντελοποίηση Αύξησης Αξιοπιστίας Το μοντέλο αύξησης είναι ένα μαθηματικό μοντέλο της αλλαγής της αξιοπιστίας του συστήματος όσο αυτό ελέγχεται και απομακρύνονται τα λάθη Χρησιμοποιείται ως μέσο για την πρόβλεψη αξιοπιστίας με προέκταση των τρεχόντων δεδομένων Εξαρτάται από την χρήση του στατιστικού ελέγχου για να μετρήσουμε την αξιοπιστία μίας version του συστήματος
Αύξηση Αξιοπιστίας Ίσων Βημάτων
Παρατηρούμενη Αύξηση Αξιοπιστίας Απλό μοντέλο ίσων βημάτων αλλά δεν αντανακλά την πραγματικότητα Η αξιοπιστία δεν αυξάνει απαραίτητα με την αλλαγή καθόσον η αλλαγή εισάγει νέα λάθη Ο ρυθμός της αύξησης της αξιοπιστίας ελαττώνεται με τον χρόνο όσο τα συχνότερα εμφανιζόμενα λάθη ανακαλύπτονται και απομακρύ6νονται Ένα μοντέλο τυχαίας ανάπτυξης είναι συνήθως πιο ακριβές
Αύξηση Αξιοπιστίας Τυχαίων Βημάτων
Επιλογή Μοντέλων Αύξησης Πολλά διαφορετικά μοντέλα αύξησης αξιοπιστίας έχουν προταθεί Δεν υπάρχει ένα γενικά αποδεκτό μοντέλο αύξησης Η αξιοπιστία πρέπει να μετράται και τα δεδομένα να προσαρμόζονται σε διαφορετικά μοντέλα Το μοντέλο που ταιριάζει καλύτερα επιλέγεται για την πρόβλεψη της αξιοπιστίας
Πρόβλεψη Αξιοπιστίας
Σημαντικά Σημεία Η αξιοπιστία είναι συνήθως το πιο σημαντικό δυναμικό χαρακτηριστικό του λογισμικού Οι επαγγελματίες πρέπει να προσπαθούν για την παραγωγή αξιόπιστου λογισμικού Η αξιοπιστία εξαρτάται από την μορφή χρήσης του λογισμικού. Λογισμικό με λάθη μπορεί να είναι αξιόπιστο Οι απαιτήσεις αξιοπιστίας πρέπει να ορίζονται ποσοτικά όταν αυτό είναι δυνατόν
Σημαντικά Σημεία Υπάρχουν διαφορετικές μετρήσεις αξιοπιστίας. Το μέτρο που επιλέγεται πρέπει να αντανακλά τον τύπο του συστήματος και το πεδίο εφαρμογής Ο Στατιστικός έλεγχος χρησιμοποιείται για αξιολόγηση της αξιοπιστίας. Εξαρτάται από την χρήση συνόλου δεδομένων ελέγχου που αντανακλά την χρήση του λογισμικού Τα μοντέλα αύξησης αξιοπιστίας μπορούν να χρησιμοποιηθούν για την πρόβλεψη του πότε το απαιτούμενο επίπεδο αξιοπιστίας μπορεί να επιτευχθεί