ΑΞΙΟΠΙΣΤΙΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ Εισαγωγή Ηεµφάνιση ηλεκτρονικών υπολογιστών και λογισµικού σε εφαρµογές µε υψηλές απαιτήσεις αξιοπιστίας, όπως είναι διαστηµικά προγράµµατα, στρατιωτικές τηλεπικοινωνίες, βιοϊατρική τεχνολογία κ.α., έκανε ιδιαίτερα επιτακτική την ανάγκη για τη µελέτη αξιοπιστίας υλικού και λογισµικού. Οι βλάβες που εµφανίζει το υλικό των ηλεκτρονικών υπολογιστών µελετώνται µε τις γενικές αρχές µοντελοποίησης που παρουσιάστηκαν και µε ειδικές συνδεσµολογίες των υπολογιστικών συστηµάτων. Τα σφάλµατα του λογισµικού µπορούν να µοντελοποιηθούν µε διάφορους τρόπους και η µελέτη τους εντάσσεται στο γενικότερο πλαίσιο των διαδικασιών βελτίωσης του λογισµικού µε δοκιµές και διορθώσεις. 1
οµές πλεονασµού Ηβελτίωση της αξιοπιστίας του υλικού µπορεί να επιτευχθεί µε τη χρησιµοποίηση εξαρτηµάτων υψηλής αξιοπιστίας (υψηλού κόστους) ή µε τη χρήση πλεονασµού ή / και εφεδρείας. Σε κάθε περίπτωση ο σχεδιασµός των υπολογιστικών συστηµάτων, όσον αφορά το υλικό αλλά και το λογισµικό, πρέπει να αποσκοπεί στο να ανέχεται σφάλµατα (fault tolerant design), δηλαδή να έχει προβλέψει τρόπους ώστε το σύστηµα να λειτουργεί επαρκώς παρόλο την εµφάνιση βλαβών στις λειτουργικές του µονάδες. Αυτό επιτυγχάνεται κυρίως: Πλεονασµός υλικού µε τη χρήση εφεδρικών υποσυστηµάτων ή συνδεσµολογίες «ψηφοφόρων». Πλεονασµός λογισµικού µε διαδικασίες ελέγχου των αποτελεσµάτων, υπολογιστικές διαδικασίες «ψηφοφόρων». Σύστηµα µε µία υπολογιστική µονάδα Υπενθυµίζεται ότι ένα σύστηµα µε µία υπολογιστική µονάδα ρυθµού βλάβης λ και επισκευής µ, οι δείκτες αξιοπιστίας του συστήµατος για χρόνο λειτουργίας Τ δίνονται από τις ακόλουθες σχέσεις: R=e -λτ Αξιοπιστία: µ ιαθεσιµότητα: A = λ + µ λ Μη ιαθεσιµότητα: U = 1 A= λ + µ λµ Συχνότητα εµφάνισης βλαβών: f = λ + µ 2
Σύστηµα µε 3 πλεονάζουσες µονάδες και «ψηφοφόρο» -ΤΜR Το σύστηµα µε τρεις πλεονάζουσες µονάδες και ψηφοφόρο αποτελεί πολύ συχνή δοµή στα υπολογιστικά συστήµατα. Οι µονάδες Σύστηµα 1, Σύστηµα 2, Σύστηµα 3 έχουν λειτουργία µε έξοδο που χαρακτηρίζεται από λογική µεταβλητή. Ο ψηφοφόρος καθορίζει ως έξοδο του συνολικού συστήµατος την πλειοψηφία των εξόδων των τριών µονάδων. Ο ψηφοφόρος θεωρείται ότι είναι 100% αξιόπιστος Αξιοπιστία συνδεσµολογίας TMR ΕΙΣΟ ΟΣ A B V ΕΞΟ ΟΣ Εάν θεωρηθεί p η αξιοπιστία κάθε µονάδας Α, B ή C, η αξιοπιστία του συστήµατος δίνεται από την ακόλουθη σχέση που βασίζεται στο ανάπτυγµα διωνύµου: C Ο MTTF προκύπτει µε αντικατάσταση και ολοκλήρωση της σχέσης για την αξιοπιστία 3
Συγκριτική µελέτη Για περιπτώσεις όπου λτ είναι σχετικά µικρό, η συνδεσµολογία συστηµάτων TMR εµφανίζει υψηλότερη αξιοπιστία από αυτή του ενός συστήµατος. Αντίθετα, για σχετικά µεγάλες τιµές του λτ ισχύει το αντίστροφο. Το σηµείο τοµής προκύπτει από την εξίσωση των δύο σχέσεων της αξιοπιστίας. Συνδεσµολογία NMR (Ν µονάδες πλεονασµού) Ησυνδεσµολογία αυτή είναι µία γενίκευση της συνδεσµολογίας TMR.Αποτελείται από Ν=2n+1 περιττό αριθµό µονάδων και ένα ψηφοφόρο που επιλέγει την πλειοψηφία n+1. Συνεπώς η αξιοπιστία του συνολικού συστήµατος θα δίνεται από τη σχέση: Η παραπάνω σχέση χαρακτηρίζεται από αντίστοιχη συµπεριφορά όπως στην περίπτωση της συνδεσµολογίας TMR, σε συγκεκριµένες περιοχές εµφανίζει υψηλότερη τιµή από αντίστοιχες διατάξεις µε χαµηλότερο βαθµό πλεονασµού 4
Αξιοπιστία µε Ν-πλεονάζουσες µονάδες Σύστηµα m-σταδίων µε πλεονασµό ψηφοφόρου Το σύστηµα αυτό αποτελείται από m στάδια σε σειρά, όπου σε κάθε στάδιο έχει επιλεγεί να χρησιµοποιηθεί συνδεσµολογία Ν-πλεονασµού µε ψηφοφόρο µε 2n+1 µονάδες αντί για µία σε κάθε στάδιο. Αν p ss η αξιοπιστία της κάθε µίας από τις 2n+1 µονάδες τότε η συνολική αξιοπιστία της διάταξης δίνεται από τη σχέση: Αν λ ο ρυθµός βλάβης του συνολικού συστήµατος, τότε σε κάθε στάδιο του συστήµατος αντιστοιχεί ρυθµός βλάβης λ/m (reliability allocation), άρα εάν υπήρχε µία µονάδα σε κάθε στάδιο, αυτή θα είχε αξιοπιστία p ss =e -λt/m. Με αντικατάσταση στην εξίσωση της αξιοπιστίας µπορεί κανείς να βελτιώσει το σχεδιασµό του συστήµατος, εντός αποδεκτών ορίων κόστους, επιλέγοντας κατάλληλο ζευγάρι m,n. 5
Συγκριτική παρουσίαση m-σταδίων µε πλεονασµό ψηφοφόρου ιατάξεις µε ατελείς ψηφοφόρους Στην περίπτωση που θεωρείται ότι και ο ψηφοφόρος µπορεί να εµφανίσει βλάβες, η αξιοπιστία της διάταξης TMR υπολογίζεται διαφορετικά. Αν p V, p C η αξιοπιστία του ψηφοφόρου και της µονάδας στη διάταξη TMR τότε η αξιοπιστία της συνολικής διάταξης TMR δίνεται από τη σχέση : Για να υπάρχει βελτίωση από την εφαρµογή διάταξης TMR πρέπει να ισχύει: Ησυνάρτηση γίνεται µέγιστη στο p C = 0,75 που δίνει αντίστοιχη κατώτατη τιµή αξιοπιστίας του ψηφοφόρου 0,889. 6
ιατάξεις µε πλεονασµό ψηφοφόρων Στην παραπάνω διάταξη, έχουν χρησιµοποιηθεί 3 ψηφοφόροι, µε αποτέλεσµα να εµφανίζεται υψηλότερη ανοχή σε σφάλµατα αφού σφάλµα ενός ψηφοφόρου διοχετεύεται µόνο για ένα στάδιο. ιάταξη TMR µε επισκευή Η µελέτη της διάταξης TMR µε ρυθµό επισκευής µ, στην περίπτωση µόνο που υπάρχει µία βλάβη, γίνεται µε χρήση του παραπάνω διαγράµµατος Markov. Θεωρώντας τις καταστάσεις s 0 και s 1 ως καταστάσεις λειτουργίας της διάταξης, επιλύοντας το διάγραµµα Markov µε στοχαστικό πίνακα και µετασχηµατισµό Laplace καταλήγουµε ότι η διαθεσιµότητα δίνεται από τη σχέση: 7
Αξιοπιστία λογισµικού Ηαξιοπιστία λογισµικού (software reliability) αφορά την πιθανότητα το λογισµικό να εκτελέσει την επιθυµητή λειτουργία του (όπως αυτή ορίζεται στις προδιαγραφές) χωρίς σφάλµα για µια συγκεκριµένη χρονική περίοδο. Η ανάπτυξη και εφαρµογή πιθανοτικών µεθόδων για την περιγραφή της εµφάνισης σφαλµάτων του λογισµικού συνεργάζεται άµεσα µε τις φάσεις του σχεδιασµού, προγραµµατισµού και δοκιµών στο κύκλο ζωής. Οι πιθανοτικές µέθοδοι αντλούν δεδοµένα από τα σφάλµατα που εντοπίζονται και αποσκοπούν στην περιγραφή της διαδικασίας βελτίωσης του λογισµικού µε κατάλληλες πιθανοτικές κατανοµές και παραµέτρους. Φάσεις του κύκλου ζωής λογισµικού 8
Κύκλος ζωής λογισµικού (χωρίς πρωτότυπο) Κύκλος ζωής λογισµικού (µε πρωτότυπο) 9
Κύκλος ζωής λογισµικού µε σταδιακή ανάπτυξη Πιθανοτική περιγραφή δεικτών αξιοπιστίας λογισµικού Aν n(t) ο αριθµός των συστηµάτων υπό δοκιµή τη χρονική στιγµή t, µε κατάλληλη λογική αναπτύσσονται οι µαθηµατικές εξισώσεις και τα µεγέθη που περιγράφουν την αξιοπιστία: όπου z(t) ο ρυθµός βλάβης, f(t) η σππ της εµφάνισης βλάβης και R(t) η αξιοπιστία. Συνεπώς, εύκολα προκύπτουν οι σχετικοί δείκτες: 10
Σφάλµατα λογισµικού «Σφάλµατα» (faults) στον κώδικα µπορεί να προκαλέσουν «λάθη» (errors) στη λειτουργία του λογισµικού µε τελικό αποτέλεσµα την «απώλεια λειτουργίας» (failure) του συστήµατος. Πάντως οι µηχανικοί λογισµικού σπάνια διαφοροποιούν τόσο πολύ τα γεγονότα αυτά και συνήθως αναφέρονται σε σφάλµατα κώδικα (software bugs). Στις µελέτες αξιοπιστίας λογισµικού, ως σφάλµατα θεωρούνται: Σφάλµατα που είχαν προέλθει στη φάση της ανάλυσης των απαιτήσεων και καθορισµού των προδιαγραφών, αφού αυτά τελικά µεταβιβάζονται στον κώδικα και προκαλούν µη επιθυµητή λειτουργία του συστήµατος. Σφάλµατα λογικής του προγράµµατος π.χ. σε ένα loop να εκτελείται κώδικας n- 1 φορές ενώ θα έπρεπε να εκτελείται n φορές. Σφάλµατα στο σχεδιασµό του κώδικα, τα οποία συνήθως εντοπίζονται στα διαγράµµατα τύπου ψευδοκώδικα (H-diagrams, control graphs κ.α.) Τα σφάλµατα αυτά και οι αντίστοιχες διορθώσεις πρέπει να καταγράφονται αναλυτικά κατά τη φάση του ελέγχου διάρθρωσης (configuration control). Πιθανοτικά µοντέλα για τη διόρθωση σφαλµάτων κώδικα Εάν στο χρόνο τ=0 υπάρχουν Ε Τ σφάλµατα τότε µετά από χρόνο τ θα έχουν διορθωθεί Ε C (τ) σφάλµατα και θα έχουν παραµείνει Ε r (τ) σφάλµατα έτσι ώστε να ισχύει Ηδιαδικασία διόρθωσης σφαλµάτων κώδικα ενδέχεται να προκαλεί την εµφάνιση νέων σφαλµάτων του κώδικα. Συνεπώς η διαδικασία επιδιόρθωσης σφαλµάτων µπορεί να περιγραφεί µε τα ακόλουθα διαγράµµατα 11
Γραµµικό µοντέλο διόρθωσης σφαλµάτων λογισµικού Σύµφωνα µε αυτό το µοντέλο ο αριθµός των σφαλµάτων που επιδιορθώνονται αυξάνει γραµµικά, µε το χρόνο ελέγχου του λογισµικού, οπότε θα ισχύουν οι ακόλουθες σχέσεις: όπου ρ 0 µπορεί να εκφραστεί ως αριθµός σφαλµάτων που επιδιορθώνονται στη µονάδα του χρόνου ή σε κάποια µοντέλα στην ανθρωποώρα, έτσι ώστε να περιλαµβάνεται και η επίδραση του ανθρώπινου δυναµικού της εταιρείας λογισµικού που ασχολείται µε τον έλεγχο και τις δοκιµές του αναπτυσσόµενου λογισµικού. Μοντέλο ρυθµού διόρθωσης σφαλµάτων λογισµικού µε γραµµική µείωση Σύµφωνα µε το µοντέλο αυτό (Musa 1987) ο ρυθµός επιδιόρθωσης των σφαλµάτων µειώνεται γραµµικά, όποτε ισχύουν τα ακόλουθα: Αν τ 0 είναι ο χρόνος όπου µηδενίζεται ο ρυθµός επιδιόρθωσης σφαλµάτων, τότε θεωρούµε ως Κ την αρχική τιµή του ρυθµού βλάβης, τα εναποµείναντα σφάλµατα θα δίνονται από την ακόλουθη σχέση: 12
Μοντέλο ρυθµού διόρθωσης σφαλµάτων λογισµικού µε εκθετική µείωση Σύµφωνα µε το µοντέλο αυτό, ο ρυθµός διόρθωσης σφαλµάτων εξαρτάται γραµµικά µε τον αριθµό των σφαλµάτων που αποµένουν στο λογισµικό Με την κατάστρωση και επίλυση της διαφορικής εξίσωσης από την παραπάνω σχέση, προκύπτουν οι ακόλουθες σχέσεις Πιθανοτικά µοντέλα αξιοπιστίας λογισµικού Στη συνέχεια, θα πρέπει να συσχετιστούν τα µοντέλα διόρθωσης σφαλµάτων λογισµικού µε τους πιθανοτικούς δείκτες της αξιοπιστίας του λογισµικού. Σύµφωνα µε σχετικές µελέτες είναι δυνατόν να θεωρηθεί για το ρυθµό σφαλµάτων ότι: Εάν θεωρηθεί γραµµικό µοντέλο διόρθωσης σφαλµάτων κώδικα τότε: Με δεδοµένο ότι έχουµε εκτιµήσει τις παραµέτρους Ε Τ k και ρ 0 η εξάρτηση του χρόνου ελέγχου και της αξιοπιστίας του λογισµικού µπορεί να υπολογιστεί κάνοντας την ακόλουθη αντικατάσταση : 13
Εξάρτηση της αξιοπιστίας και χρόνου ελέγχου λογισµικού (γραµ. διορθ. σφαλµ.) Στο παραπάνω διάγραµµα φαίνεται πως όσο µεγαλύτερος είναι ο χρόνος διόρθωσης σφαλµάτων τ τόσο µεγαλύτερη αξιοπιστία εµφανίζει το λογισµικό στο αντίστοιχο κανονικοποιηµένο χρονικό διάστηµα Εκθετικό µοντέλο διόρθωσης σφαλµάτων και αξιοπιστία λογισµικού Σύµφωνα µε το εκθετικό µοντέλο διόρθωσης σφαλµάτων, ο ρυθµός διόρθωσης σφαλµάτων είναι γραµµικά εξαρτώµενος από τον αριθµό των σφαλµάτων που έχουν παραµείνει στο λογισµικό. Με κατάλληλες µαθηµατικές πράξεις, υπολογίζεται η έκφραση του αριθµού σφαλµάτων που παρέµειναν στο λογισµικό. Με αντικατάσταση στην εξίσωση της αξιοπιστίας προκύπτει η ακόλουθη σχέση: Οδείκτης MTTF προκύπτει µε ολοκλήρωση της έκφρασης της αξιοπιστίας και είναι ίσος µε: 14
Πλεονασµός στο λογισµικό µε προγραµµατισµό Ν εκδόσεων Ηεφαρµογή TMR διατάξεων όπως παρουσιάστηκε για το υλικό, είναι δυνατόν να εµφανιστεί και στο λογισµικό. Όµως, η χρήση πανοµοιότυπων ενοτήτων προγράµµατος και διάταξη ψηφοφόρου δεν θα άλλαζε κάτι, αφού σε συγκεκριµένες αρχικές συνθήκες όλες οι ενότητες ή καµία ενότητα δεν θα εµφάνιζε σφάλµα. Στην περίπτωση αυτή αναπτύσσονται οι ενότητες προγραµµάτων µε διαφορετικό τρόπο αλλά τις ίδιες προδιαγραφές, επιτελώντας κάθε φορά την ίδια λειτουργία. Συχνά απαιτούνται ανεξάρτητες οµάδες ανάπτυξης λογισµικού, διαφορετικές σχεδιαστικές φιλοσοφίες και ενδεχοµένως διαφορετικές πλατφόρµες ανάπτυξης. Με αυτόν τον τρόπο διασφαλίζεται η ανεξαρτησία της εµφάνισης σφαλµάτων κώδικα µεταξύ των διαφόρων ενοτήτων λογισµικού. Ανάπτυξη ανεξάρτητων εκδόσεων λογισµικού Ηανάπτυξη ανεξάρτητων εκδόσεων λογισµικού πρέπει να χαρακτηρίζεται από τα ακόλουθα: Κάθε οµάδα ανάπτυξης έχει τις ίδιες προδιαγραφές λογισµικού. Η επικοινωνία µεταξύ των οµάδων ανάπτυξης πρέπει να είναι περιορισµένη και ελεγχόµενη από την κεντρική διοίκηση. Κάθε έκδοση λογισµικού υπόκειται στις ίδιες διαδικασίες δοκιµών Πιθανοί λόγοι για εξαρτηµένες βλάβες: Παρανόηση των προδιαγραφών µε τον ίδιο ακριβώς τρόπο Παρανόηση των αρχικών συνθηκών και ρυθµίσεων Ίδιος τρόπος σχεδιασµού σε συγκεκριµένα δύσκολα σηµεία του προγράµµατος. 15