Professional Documents
Culture Documents
06-Αξιοπιστία λογισμικού
06-Αξιοπιστία λογισμικού
& Συστημάτων
Παναγιώτης Κατσαρός
Αν. Καθηγητής
katsaros@csd.auth.gr
url: http://depend.csd.auth.gr
Λογισμικό, συστήματα & αξιοπιστία
• Κάθε λάθος είναι αποτέλεσμα μιας βλάβης (fault) του συστήματος or fault.
… FailuresCausationFaultsActivationErrors
Propagation
Faults …
Causation
Failures
• Άρα ένα λάθος είναι απλά το σύμπτωμα μιας βλάβης, αν και μία βλάβη δεν
είναι απαραίτητο να προκαλέσει λάθος.
• Η ίδια βλάβη μπορεί να προκαλέσει πολλά λάθη και ομοίως ένα λάθος μπορεί
να οδηγήσει σε πολλαπλές αποτυχίες.
Availability Reliability Safety Confidentiality Integrity Maintainability
Παράδειγμα βλάβης, λαθών και
αποτυχίας
• Σ’ ένα σύστημα λογισμικού, μία εσφαλμένη εντολή στο πρόγραμμα έστω ότι
ελαττώνει μία εσωτερική μεταβλητή, αντί να την αυξάνει.
• Αν εκτελεστεί η εντολή, τότε θα εγγραφεί στη θέση μνήμης της μία λάθος τιμή.
Αν στις άλλες εντολές του προγράμματος χρησιμοποιηθεί αυτή η τιμή, τότε το
σύστημα λογισμικού θα αποκλίνει από την αναμενόμενη συμπεριφορά.
• Αν η εσφαλμένη εντολή δεν δεν εκτελεστεί, τότε η βλάβη δεν οδηγεί σε λάθος.
Ταξινόμηση βλαβών I
• Βλάβες κατάρρευσης (crash faults) - το συστατικό παύει να λειτουργεί ή δεν επιστρέφει ποτέ
σε έγκυρη κατάσταση
• Βλάβες παράλειψης (omission faults) - το συστατικό αποτυγχάνει τελείως στην εκτέλεση της
υπηρεσίας του
• Βλάβες χρονισμού (timing faults) - το συστατικό δεν ολοκληρώνει την εξυπηρέτηση έγκαιρα
• Στην κεφαλή αναγράφεται αυτό που θέλουμε να αποφύγουμε (exception failure) ενώ
στα πλευρικά μέρη έχουμε τις κατηγορίες των συμβάντων, που πρκαλούν την αποτυχία
και κάθε πλευρό αναφέρει παραδείγματα με συγκεκριμένες αιτίες.
Φερεγγυότητα (dependability)
Dependability
Authorized actions
Security
Absence of unauthorized access to, or handling of, system state
Φερεγγυότητα (dependability)
… FailuresCausationFaultsActivationErrors
Propagation
Faults …
Causation
Failures
• Ανοχή βλαβών (Fault tolerance) - το σύστημα είναι σε θέση να επιτελεί την λειτουργία
του σωστά ακόμη και στην περίπτωση εμφάνισης εσωτερικών βλαβών
• Απομάκρυνση βλαβών (Fault removal) - χρήση επαλήθευσης και δοκιμών για εντοπισμό
βλαβών, που επιτρέπουν την εφαρμογή κατάλληλων αλλαγών στο σύστημα.
Συμπεριλαμβάνονται τεχνικές unit testing, integration testing, regression testing, and
back-to-back testing. Η απομάκρυνση βλαβών κοστίζει περισσότερο από την αποφυγή.
• Για τη συσχέτιση και την ιχνηλάτηση όλων αυτών των λαθών μπορεί
να απαιτούνται εξελιγμένες τεχνικές εξαγωγής συμπερασμάτων.
Fault
detector
Voting Output 1
Component 1
Component 1 Component
Component 1
Input Voting Output Input Voting Output 2
Component 2 Component 2
Component Component
Input
Switch
Output
Voting Output 3
Component 3 Component 3
Component
Component 2
Σ’ αυτή τη φάση απομονώνεται αρχικά και στη συνέχεια επιδιορθώνεται η βλάβη. Για τις
μόνιμες βλάβες απαιτείται αντικατάσταση του συστατικού με τη βλάβη. Αυτό απαιτεί ένα
εφεδρικό συστατικό σε αναμονή (standby component), δηλ. ένα συστατικό που η
κατάστασή του θα συγχρονίζεται με την κατάσταση του υπόλοιπου συστήματος. Τρεις
γενικοί τύποι συστατικών σε αναμονή:
• “Ψυχρή” αναμονή (cold standby) - Το συστατικό σε αναμονή δεν είναι λειτουργικό και
άρα πρέπει η κατάστασή του να αλλαχθεί όταν γίνει η αντικατάσταση, που μπορεί να
πάρει χρόνο.
• “Θερμή” αναμονή (hot standby) - Το εφεδρικό συστατικό είναι πλήρως ενεργό και
λειτουργεί πλεονασματικά ως προς το συστατικό που υποκαθιστά. Σε περίπτωση
λάθους η ανάκαμψη είναι πρακτικά στιγμιαία. Είναι όμως δύσκολος ο συγχρονισμός των
δύο συστατικών.