Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Τεχνολογία ΛογισμικούSlide 1 Προγραμματισμός Αξιοπιστίας u Τεχνικές προγραμματισμού για την εκπόνηση αξιόπιστων συστημάτων λογισμικού.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Τεχνολογία ΛογισμικούSlide 1 Προγραμματισμός Αξιοπιστίας u Τεχνικές προγραμματισμού για την εκπόνηση αξιόπιστων συστημάτων λογισμικού."— Μεταγράφημα παρουσίασης:

1 Τεχνολογία ΛογισμικούSlide 1 Προγραμματισμός Αξιοπιστίας u Τεχνικές προγραμματισμού για την εκπόνηση αξιόπιστων συστημάτων λογισμικού.

2 Τεχνολογία ΛογισμικούSlide 2 Στόχοι u Περιγραφή τεχνικών προγραμματισμού για αξιόπιστη ανάπτυξη του συστήματος u Συζήτηση της αποφυγής λαθών με κατασκευή ελαχιστοποίησης επιρεπούς σε λάθη u Να περιγράψουμε αρχιτεκτονικές που δέχονται κρίση για λάθη u Να δείξουμε πως χειρισμός κατ΄εξαίρεση μπορεί να χρησιμοποιηθεί για την παραγωγή εύρωστων προγραμμάτων

3 Τεχνολογία ΛογισμικούSlide 3 Θέματα u Τεχνικές αποφυγής λαθών u Αντοχή σε λάθη και ανθεκτικές σε λάθη αρχιτεκτονικές u Χειρισμός κατ’ εξαίρεση και διαχείριση u Αμυντικός προγραμματισμός u Παραδείγματα προγραμμάτων παρουσιάζονται σε Ada και C++

4 Τεχνολογία ΛογισμικούSlide 4 Αξιοπιστία Λογισμικού u Γενικά, όλοι οι πελάτες αναμένουν να έχουν λογισμικό το οποίο είναι αξιόπιστο. Για μη - κρίσιμες εφαρμογές όμως, μπορεί να αποδέχονται κάποιες αστοχίες του συστήματος. u Ορισμένες εφαρμογές όμως έχουν υψηλές απαιτήσεις αξιοπιστίας και πρέπει να χρησιμοποιηθούν ειδικές προγραμματιστικές τεχνικές

5 Τεχνολογία ΛογισμικούSlide 5 Επίτευξη Αξιοπιστίας u Αποφυγή λαθών Το λογισμικό αναπτύσσεται με τέτοιο τρόπο ώστε να μην περιέχει λάθη u Εύρεση λαθών Η διαδικασία ανάπτυξης οργανώνεται με τέτοιο τρόπο ώστε τα λάθη στο λογισμικό να βρίσκονται εύκολα και να επισκευάζονται πριν φθάσουν στον καταναλωτή u Αντοχή σε λάθη Το λογισμικό σχεδιάζεται έτσι ώστε λάθη στο τελικό προϊόν να μην έχουν ως αποτέλεσμα την πλήρη κατάρρευση του συστήματος

6 Τεχνολογία ΛογισμικούSlide 6 Αποφυγή Λαθών u Υπάρχουν σύγχρονες μέθοδοι της τεχνολογίας λογισμικού που επιτρέπουν την παραγωγή λογισμικού χωρίς λάθη. u Λογισμικό χωρίς λάθη σημαίνει συμβατότητα με τις προδιαγραφές. Δεν σημαίνει λογισμικό το οποίο πάντα κάνει το σωστό αφού μπορεί να υπάρχουν λάθη στις προδιαγραφές u Το κόστος για παραγωγή λογισμικού χωρίς λάθη είναι πολύ υψηλό. Είναι αποτελεσματικό ως προς αυτό μόνο σε ορισμένες περιπτώσεις. Πιθανό να είναι φθηνότερη η αποδοχή κάποιων λαθών

7 Τεχνολογία ΛογισμικούSlide 7 Κόστη Απομάκρυνσης Λαθών

8 Τεχνολογία ΛογισμικούSlide 8 Ανάπτυξη Λογισμικού χωρίς Λάθη u Απαιτείται ακριβής (τυπική) εξειδίκευση u Η πληροφορία που κρύβεται στον σχεδιασμό λογισμικού είναι σημαντική u Πρέπει να χρησιμοποιηθεί προγραμματιστική γλώσσα με ακριβείς εκφράσεις και έλεγχο u Εκτεταμένη χρήση επαναλήψεων σε όλα τα στάδια της διαδικασίας u Απαιτεί οργανωτική δέσμευση για ποιότητα u Εκτεταμένος και προσεκτικός έλεγχος του συστήματος είναι απαραίτητος

9 Τεχνολογία ΛογισμικούSlide 9 Ada και C++ u Η Ada έχει σχεδιασθεί για μεγάλης κλίμακας προβλήματα τεχνολογίας λογισμικού και είναι ακριβής γλώσσα. Παρόλα αυτά υπάρχουν μόνο λίγοι μεταγλωττιστές για προσωπικούς Η/Υ u Η C++ χρησιμοποιείται ευρύτατα για ανάπτυξη. Συνδυάζει την αποτελεσματικότητα γλώσσας χαμηλού επιπέδου (C) με αντικειμενοστραφή προγραμματισμό. Υπάρχει καλύτερος έλεγχος τύπων από την C αλλά όχι καλύτερος από την Ada

10 Τεχνολογία ΛογισμικούSlide 10 Δομημένος Προγραμματισμός u Πρωτοσυζητήθηκε στο 1970's u Προγραμματισμός χωρίς gotos u While βρόχοι and if εντολές είναι οι μόνοι τρόποι ελέγχου ροής. u Σχεδιασμός Top-down. u Σημαντικός γιατί προώθησε σκέψεις και συζητήσεις σχετικές με προγραμματισμό.

11 Τεχνολογία ΛογισμικούSlide 11 Δομές Επηρεπείς σε Λάθη u Αριθμοί Floating-point Έντονα μη ακριβείς. Η έλλειψη ακρίβειας μπορεί να οδηγήσει σε άστοχες συγκρίσεις u Δείκτες Οι δείκτες που αναφέρονται σε λάθος περιοχές μνήμης οδηγούν σε καταστροφή δεδομένων. Η χρήση ψευδονύμων είναι δύσκολη στην κατανόηση και αλλαγή προγραμμάτων u Δυναμική κατανομή μνήμης Η κατανομή μπορεί να δημιουργήσει υπερφόρτωση μνήμης u Παραλλελισμός Μπορεί να οδηγήσει σε λάθη εξαιτίας μη αναμενομένων αλληλεπιδράσεων

12 Τεχνολογία ΛογισμικούSlide 12 Δομές Επηρεπείς σε Λάθη u Επανάληψη Τα λάθη στην επανάληψη προκαλούν υπερφόρτωση μνήμης u Διακοπές Προκαλούν τον τερματισμό μίας κρίσιμης διαδικασίας και κάνουν το πρόγραμμα δυσκατανόητο. Είναι συγκρίσιμα με τις εντολές goto. u Δεν συνίσταται ότι αυτές οι δομές πρέπει να αποφεύγονται αλλά πρέπει να χρησιμοποιούνται με μεγάλη προσοχή.

13 Τεχνολογία ΛογισμικούSlide 13 Απόκρυψη Πληροφορίας u Η πληροφορία πρέπει να είναι εκτεθιμένη στα μέρη εκείνα του προγράμματος όπου είναι απαραίτητη. Αυτό σημαίνει ότι απαιατείται η κατασκευή αντικειμένων και αφαιρετικών τύπων δεδομένων που διατηρούν την κατάσταση και τις λειτουργίες αυτής της κατάστασης u Αυτό οδηγεί σε αποφυγή λαθών για τους ακόλουθους τρεις λόγους : πιθανότητα καταστροφής πληροφορίας από ατύχημα η πληροφορία περικλείεται από ‘firewalls’ ώστε τα προβλήματα δεν διαχέονται σε άλλα μέρη του προγράμματος όσο η πληροφορία είναι τοπική, ο προγραμματιστής ωθείται να κάνει λάθη και οι ελεγκτές να βρουν τα λάθη

14 Τεχνολογία ΛογισμικούSlide 14 Τύποι Δεδομένων u Κάθε στοιχείο προγράμματος πρέπει να επιτρέπει πρόσβαση στα δεδομένα τα οποία απαιτούνται για την υλοποίηση της λειτουργίας του u Η αναπαράσταση τύπου δεδομένων πρέπει να συμφωνείται από τους χρήστες αυτού του τύπου u Η Ada, Modula-2 και C++ προσφέρουν υποστήριξη για απόκρυψη πληροφορίας u Ο τύπος συστήματος χρησιμοποιείται για την βελτίωση αναγνωσιμότητας του προγράμματος με απευθείας μοντελοποίηση των οντοτήτων του πραγματικού κόσμου

15 Τεχνολογία ΛογισμικούSlide 15 Δηλώσεις Τύπων u Δηλώσεις τύπων στην C++ typedef enum { red, redamber, amber, green} TrafficLightColour ; TrafficLightColour ColourShowing, NextColour ; u Δηλώσεις τύπων στην Ada type POSITIVE is INTEGER range 1..MAXINT ; type OIL_STATUS is new BOOLEAN ; type DOOR_STATUS is new INTEGER ; type FUEL_STATUS is new BOOLEAN ;

16 Τεχνολογία ΛογισμικούSlide 16 Αντικείμενα και Αφαιρετικοί Τύποι Δεδομένων u Υλοποιούνται στην C++ ως αντικείμενα και στην Ada ως πακέτα u Το όνομα του τύπου δηλώνεται μέσα στο αντικείμενο ή ADT u Οι λειτουργίες τύπων ορίζονται ως procedures ή συναρτήσεις. u Η αναπαράσταση τύπου ορίζεται στο ιδιωτικό μέρος u Οι βασικές αφαιρετικές δομές δεδομένων μπορεί να παραμετροποιηθούν με χρήση του ονόματος του τύπου.

17 Τεχνολογία ΛογισμικούSlide 17 Εξειδικεύσεις της Ada για μία Ακέραια Ουρά package Queue is type T is private ; procedure Put (IQ : in out T; X: INTEGER); procedure Remove (IQ : in out T; X : out INTEGER); function Size (IQ : T ) return NATURAL; private type Q_RANGE is range 0..99 ; type Q_VEC is array ( Q_RANGE ) of INTEGER ; type T is record The_queue: Q_VEC ; front, back : Q_RANGE ; end record; end Queue;

18 Τεχνολογία ΛογισμικούSlide 18 Δήλωση Κλάσεων Ουράς στην C++ class Queue { public: Queue () ; ~Queue () ; void Put ( int x ) ; // adds an item to the queue int Remove () ; // this has side effect of changing the queue int Size( ) ; // returns number of elements in the queue private: int front, back ; int qvec [100] ; } ;

19 Τεχνολογία ΛογισμικούSlide 19 Γενικά u Η συμπεριφορά των αντικειμένων και ADTs τα οποία συντίθενται από άλλα αντικείμενα ή ADTs είναι συχνά ανεξάρτητη από τον τύπο των συμπεριλαμβανομένων αντικειμένων u Τα Generics είναι ένας τρόπος για συγγραφή γενικευμένων, παραμετροποιημένων ADTs και αντικειμένων να οποία πρέπει να χρησιμοποιηθούν αργότερα με ειδικούς τύπους u Και η Ada και C++ έχουν δυνατότητες για ορισμούς βασικών τύπων και κλάσεων

20 Τεχνολογία ΛογισμικούSlide 20 Δήλωση σε Ada για μία Βασική Ουρά generic type ELEM is private ; type Q_SIZE is range <> ; package Queue is type T is private ; procedure Put (IQ : in out T; X: ELEM ); procedure Remove (IQ : in out T; X : out ELEM ); function Size (IQ : in T ) return NATURAL ; private type Q_VEC is array (Q_SIZE) of ELEM ; type T is record The_queue: Q_VEC ; Front : Q_SIZE := Q_SIZE’FIRST ; Back: Q_SIZE := Q_SIZE’FIRST ; end record; end Queue;

21 Τεχνολογία ΛογισμικούSlide 21 Βασική Ουρά στην C++ template class Queue { public: Queue ( int size = 100 ) ; // default to queue of size 100 elements ~Queue () ; void Put ( elem x ) ; elem Remove ( ) ; // this has side effect of changing queue int Size ( ) ; private: int front, back ; elem* qvec ; } ;

22 Τεχνολογία ΛογισμικούSlide 22 Εισαγωγή Generics u Γίνεται κατά την διάρκεια της μεταγλώττισης και κατά συνέπεια είναι δυνατός ο έλεγχος τύπου u Ada type IQ_SIZE is range 0..49 ; type LQ_SIZE is range 0..199 ; package Integer_queue is new Queue (ELEM => INTEGER, Q_SIZE => IQ_SIZE ) ; package List_queue is new Queue (ELEM => List.T, Q_SIZE => LQ_SIZE ) ; u C++ //Assume List has been defined elsewhere as a type Queue Int_queue (50) ; Queue List_queue (200) ;

23 Τεχνολογία ΛογισμικούSlide 23 Αντοχή σε Λάθη u Σε κρίσιμες καταστάσεις τα συστήματα λογισμικού πρέπει να είναι ανθεκτικά σε λάθη u Αντοχή σε λάθη σημαίνει ότι το σύστημα μπορεί να συνεχίσει την λειτουργία του ανεξάρτητα από αστοχία συστήματος u Ακόμα και αν το σύστημα έχει αποδειχθεί να είναι ανθεκτικό σε λάθη, πρέπει να είναι ανθεκτικό ακόμα και όταν η εξειδίκευση και αξιολόγηση είναι λάθος

24 Τεχνολογία ΛογισμικούSlide 24 Δραστηριότητες Αντοχής σε Λάθη u Εύρεση Αστοχίας Το σύστημα μπορεί να βρεί ότι συνέβη μία αστοχία u Εκτίμηση Καταστροφής Τα μέρη του συστήματος τα οποία έχουν επηρεαστεί από την αστοχία πρέπει να αναζητηθούν u Ανάκτηση Λάθους Το σύστημα πρέπει να επαναφέρει την κατάστασή του σε μία γνωστή ασφαλή κατάσταση u Επιδιόρθωση Λάθους Το σύστημα πρέπει να τροποποιηθεί για να αποφευχθεί επανάληψη του λάθους. Καθώς ορισμένα λάθη είναι προσωρινά, αυτό συχνά δεν είναι απαραίτητο.

25 Τεχνολογία ΛογισμικούSlide 25 Εμφάνιση Λάθους u Πολλές αστοχίες λογισμικού είναι παροδικές και εξαρτώμενες από κάποια δεδομένα. Η λειτουργία μπορεί να συνεχισθεί με επανεκκίνηση του συστήματος. u Εάν αυτό είναι αδύνατο, απαιτείται επαναμορφοποίηση του συστήματος με την αντικατάσταση στοιχείων λογισμικού χωρίς το σύστημα να σταματήσει.

26 Τεχνολογία ΛογισμικούSlide 26 Αντοχή σε Λάθη του Υλικού u Εξαρτάται από το triple-modular redundancy (TMR) u Υπάρχουν τρία επαναλαμβανόμενα παρόμοια στοιχεία που παίρνουν την ίδια είσοδο και των οποίων οι έξοδοι συγκρίνονται u Εάν μία έξοδος είναι διαφορετική αγνοείται και υποθέτουμε ότι έχει συμβεί αστοχία στοιχείου u Βασίζεται ότι οι περισσότερες αστοχίες οφείλονται σε αστοχίες στοιχείων και όχι αστοχίες σχεδιασμού και στην χαμηλή πιθανότητα για ταυτόχρονη αστοχία πολλών στοιχείων

27 Τεχνολογία ΛογισμικούSlide 27 Αξιοπιστία Λογισμικού με TMR

28 Τεχνολογία ΛογισμικούSlide 28 Αναλογίες στο Λογισμικό u N-μορφή προγραμματισμού Η ίδια εξειδίκευση υλοποιείται σε ένα αριθμό διαφορετικών εκδόσεων. Όλες οι εκδόσεις υπολογίζουν ταυτόχρονα και η κύρια έξοδος επιλέγεται. Αυτή είναι η συχνότερα προτιμώμενη μέθοδος. Όμως δεν παρέχει αντοχή σε λάθη αν υπάρχουν λάθη εξειδίκευσης u Βlocks επανάκτησης Οι εκδόσεις εκτελούνται ακολουθιακά. Η έξοδος η οποία αντιστοιχεί σε ένα έλεγχο αποδοχής επιλέγεται. Η αδυναμία είναι να βρούμε τον έλεγχο αποδοχής.

29 Τεχνολογία ΛογισμικούSlide 29 N-έκδοσης Προγραμματισμός

30 Τεχνολογία ΛογισμικούSlide 30 N-έκδοσης Προγραμματισμός u Οι διαφορετικές εκδόσεις του συστήματος σχεδιάζονται και υλοποιούνται από διαφορετικές ομάδες. Υποθέτουμε ότι η πιθανότητα να γίνουν τα ίδια λάθη είναι μικρή u Όμως η εμπειρία λέει ότι οι ομάδες με κοινό τρόπο δεν κατανοούν σωστά τις εξειδικεύσεις και χρησιμοποιούν τους ίδιους αλγόριθμους στα συστήματά τους

31 Τεχνολογία ΛογισμικούSlide 31 Βlocks Ανάκτησης

32 Τεχνολογία ΛογισμικούSlide 32 Βlocks Ανάκτησης u Χρήση διαφορετικού αλγόριθμου για κάθε έκδοση για να ελαχιστοποιηθεί η πιθανότητα για κοινά λάθη u Όμως, ο σχεδιασμός του τεστ αποδοχής ε’ιναι δύσκολος και πρέπει να είναι ανεξάρτητος του υπολογισμού που χρησιμοποιείται u Όπως ο N-εκδόσεων προγραμματισμός, είναι δυνατά τα λάθη εξ αιτίας της εξειδίκευσης

33 Τεχνολογία ΛογισμικούSlide 33 Χειρισμός κατ’ Εξαίρεση u Ένα πρόγραμμα κατ΄εξαίρεση είναι ένα λάθος ή κάποιο απρόσμενο γεγονός όπως η πρώτη της τάσης u Οι δομές χειρισμού κατ’ εξαίρεση επιτρέπουν τον χειρισμό των γεγονότων χωρίς συνεχή έλεγχο της κατάστασης για την ανίχνευση εξαιρέσεων u Η χρήση κανονικών εντολών ελέγχου για την ανεύρεση εξαιρέσεων σε μία ακολουθία ένθετων κλήσεων προσθέτει πολλές επιπλέον ρντολές και κόστος στον προγραμματισμό

34 Τεχνολογία ΛογισμικούSlide 34 Εξαιρέσεις σε Ένθετες Κλήσεις Συναρτήσεων

35 Τεχνολογία ΛογισμικούSlide 35 Χειρισμός Εξαιρέσεων στην Ada u Η Ada έχει ενσωματωμένο μηχανισμό εξαιρέσεων και έτσι ονόματα μπορούν να συνδεθούν με εξαιρέσεις u Η μεταφορά προσοχής σε εξαιρέσεις ονομάζεται ανάσυρση εξαίρεσης (keyword raise) u Μία μονάδα προγράμματος σε Ada μπορεί να έχει ένα χειριστή εξαιρέσεων που είναι τμήμα του προγράμματος που ορίζει πως επεξεργάζονται οι εξαιρέσεις u Όταν ανασύρεται μία εξαίρεση ο κώδικας μεταφέρεται στον χειριστή εξαιρέσεων αυτόματα

36 Τεχνολογία ΛογισμικούSlide 36 Ενσωματωμένες Εξαιρέσεις στην Ada u CONSTRAINT_ERROR Διαπιστώνεται όταν αποδίδεται μία τιμή σε μία μεταβλητή έξω από την περιοχή u NUMERIC_ERROR Διαπιστώνεται όταν ένα λάθος εμφανίζεται σε μία αριθμητική πράξη (π.χ. διαίρεση με μηδέν) u PROGRAM_ERROR Όταν παραβιάζεται μία δομή ελέγχου u STORAGE_ERROR Όταν γίνεται υπερφόρτωση δυναμικής αποθήκευσης u TASKING_ERROR Διαπιστώνεται όταν μία επικοινωνία μεταξύ διεργασιών αποτυγχάνει.

37 Τεχνολογία ΛογισμικούSlide 37 Χειρισμός Εξαιρέσεων στην C++ u Το Keyword throw σημαίνει ανάσυρση μίας εξαίρεσης. Ο χειριστής υποδεικνύεται με το keyword catch u Οι εξαιρέσεις ορίζονται ως κλάσεις και μπορούν να κληρονομήσουν ιδιότητες από άλλες κλάσεις εξαιρέσεων u Συνήθως, οι εξαιρέσεις χειρίζονται πλήρως στο μπλοκ που αναδεικνύονται και δεν αφήνεται διάδοση τους u Όλες οι εξαιρέσεις ορίζονται από τον χρήστη και δεν είναι ενσωματωμένες στο σύστημα

38 Τεχνολογία ΛογισμικούSlide 38 Έλεγχος Θερμοκρασίας u Ελέγχει ένα καταψύκτη και κρατάει την θερμοκρασία του σε καθορισμένη περιοχή u Ανοίγει και κλείνει την ψυκτική αντλία u Ενεργοποιεί τον συναγερμό όταν η θερμοκρασία ξεπερνά ένα μέγιστο u Χρησιμοποιεί εξωτερικές οντότητες: αντλία, θερμοκρασία, αισθητήρα, συναγερμό u Η εξωτερική διαμεριζόμενη κατάσταση κρατιέται σε ένα πακέτο που ονομάζεται Globals (στην Ada)

39 Τεχνολογία ΛογισμικούSlide 39 Ελεγκτής Καταψύκτη (Ada) u See portait slide

40 Τεχνολογία ΛογισμικούSlide 40 Ελεγκτής Θερμοκρασίας (C++) u See portrait slide

41 Τεχνολογία ΛογισμικούSlide 41 Αμυντικός Προγραμματισμός u Προσέγγιση στην ανάπτυξη προγράμματος όπου υποθέτουμε ότι υπάρχουν λάθη τα οποία δεν έχουν βρεθεί στο πρόγραμμα u Το πρόγραμμα περιλαμβάνει κώδικα για την εύρεση και ανάκτηση από τέτοια λάθη u Δεν απαιτεί ελεγκτή με ανοχές σε λάθη

42 Τεχνολογία ΛογισμικούSlide 42 Προστασία από Αστοχία u Συστήματα τύπων επιτρέπουν εύρεση πολλών πιθανών καταστροφικών αστοχιών στην διάρκεια της μεταγλώττισης u Ο έλεγχος περιοχής και εξαιρέσεων επιτρέπει την εύρεση μίας σημαντικής ομάδας αστοχιών να βρίσκονται κατά την διάρκεια του τρεξίματος u Διεκδικήσεις καταστάσεων μπορούν να αναπτυχθούν και να συμπεριληφθούν στο πρόγραμμα για την εύρεση άλλων κλάσεων αποτυχιών του συστήματος

43 Τεχνολογία ΛογισμικούSlide 43 Έλεγχος Περιοχής σε Ada u Οι τύποι δηλώνονται ως μία επιτρεοπόμενη περιοχή, π.χ. 1..100 u Ο Έλεγχος περιοχής στην Ada αυτόματα αναδεικνύει μία εξαίρεση CONSTRAINT_ERROR εάν υπάρχει κάτι εκτός περιοχής u Ο έλεγχος περιοχής εφαρμόζεται σε μία απλή μεταβλητή. Έλεγχοι οι οποίοι εφαρμόζονται μεταξύ περιοχών (π.χ. εάν A=0 τότε B=1) δεν μπορούν να εφαρμοσθούν u Τα λάθη εκτός περιοχής απαιτούν επιπλέον ελέγχους για να ευρεθεί η αιτία των λαθών

44 Τεχνολογία ΛογισμικούSlide 44 u Λογικά κατηγορήματα σε μεταβλητές κατάστασης του συστήματος. u Συμπεριλαμβάνονται απευθείας σε μία γλώσσα αλλά προκαλούν προβλήματα μεταγλώττισης ένα χρησιμοποιούνται ποσοτικοποιητές u Συνήθως υλοποιούνται ως ελεγκτές προγραμμάτων u Είναι απλοποιημένες αν όλες οι λειτουργίες κατάστασης είναι μέσω αφαιρετικών τύπων δεδομένων. Σε πολλές περιπτώσεις τα κατηγορήματα απαιτείται να σχετίζονται μόνο με ADT. Διεκδικήσεις Κατάστασης

45 Τεχνολογία ΛογισμικούSlide 45 Τύπος Ζυγού Αριθμού u See portrait slide

46 Τεχνολογία ΛογισμικούSlide 46 Έλεγχος Διεκδίκησης u See portrait slide

47 Τεχνολογία ΛογισμικούSlide 47 Εκτίμηση Καταστροφής u Analyse system state to judge the extent of corruption caused by a system failure u Must assess what parts of the state space have been affected by the failure u Generally based on ‘validity functions’ which can be applied to the state elements to assess if their value is within an allowed range

48 Τεχνολογία ΛογισμικούSlide 48 u Έλεγχοι αθροισμάτων χρησιμοποιούνται για την εκτίμηση ζημίας στην μεταφορά δεδομένων u Επιπλέον δείκτες χρησιμοποιούνται για έλεγχο δομών δεδομένων u Έλεγχος για διεργασίες που δεν τερματίζουν χρησιμοποιείται επίσης. Εάν δεν υπάρχει απόκριση σε συγκεκριμένο χρόνο τότε υποθέτουμε ότι υπάρχει κάποιο πρόβλημα Τεχνικές Εκτίμησης Ζημιών

49 Τεχνολογία ΛογισμικούSlide 49 Τύπος στην Ada με Εκτίμηση Ζημίας u See portrait slide

50 Τεχνολογία ΛογισμικούSlide 50 Κλάση στην C++ με Εκτίμηση Ζημίας template class Robust_array { public: Robust_array (int size = 20) ; ~Robust_array () ; void Assign ( int Index, elem Val) ; elem Eval (int Index) ; // Damage assessment functions // Assess_damage takes a pointer to a function as a parameter // It sets the corresponding element of Checks if a problem is // detected by the function Test void Assess_damage ( void (*Test ) (boolean*)) ; boolean Eval_state (int Index) ; boolean Is_damaged () ; private: elem* Vals ; boolean* Checks ; } ;

51 Τεχνολογία ΛογισμικούSlide 51 u Ανάκτηση προς τα Εμπρός Εφαρμόζουμε επιδιορθώσεις σε κατάσταση προβλήματος για το σύστημα u Ανάκτηση προς τα Πίσω Επαναποθήκευση της κατάστασης του συστήματος σε μία ασφαλή γνωστή κατάσταση u Η ανάκτηση προς τα εμπρός είναι εξειδικευμένη σε εφαρμογή - απαιτείται γνώση του πεδίου για τον υπολογισμό πιθανών διορθώσεων κατάστασης u Η ανάκτηση λαθών προς τα πίσω είναι απλούστερη. Οι λεπτομέρειες της ασφαλούς κατάστασης διατηρούνται και ανταλλάσουν την προβληματική κατάσταση του συστήματος Ανάκτηση Λαθών

52 Τεχνολογία ΛογισμικούSlide 52 u Αλλοίωση της Κωδικοποίησης Δεδομένων Τεχνικές κωδικοποίησης λαθών που προσθέτουν πλεόνασμα σε κωδικοποιημένα δεδομένα χρησιμοποιούνται για την επιδιόρθωση κωδικοποιημένων δεδομένων κατά την διάρκεια της μεταφοράς u Πλεονάζοντες Δείκτες Όταν πλεονάζοντες δείκτες συμπεριλαμβάνονται σε δομές δεδομένων, μία αλλοιωμένη λίστα ή αποθηκευμένο αρχείο μπορούν να επανακτηθούν αν ικανοποιητικός αριθμός δεικτών μένουν αναλλοίωτοι Συχνά χρησιμοποιούνται για επιδιόρθωση βάσης δεδομένων και συστήματος αρχείων Ανάκτηση προς τα Εμπρός

53 Τεχνολογία ΛογισμικούSlide 53 u Οι συναλλαγές είναι μία συχνά χρησιμοποιούμενη μέθοδος για ανάκτηση προς τα πίσω. Οι αλλαγές δεν εφαρμόζονται αν δεν ολοκληρωθεί ο υπολογισμός. Εάν υπάρχει λάθος, το σύστημα αφήνεται στην κατάσταση προηγούμενη της συναλλαγής u Περιοδικά σημεία ελέγχου επιτρέπουν στο σύστημα να επιστρέφει στην σωστή κατάσταση Ανάκτηση προς τα Πίσω

54 Τεχνολογία ΛογισμικούSlide 54 Ασφαλής Διαδικασία Ταξινόμησης u Η διαδικασία ταξινόμησης ελέγχει την ίδια εκτέλεση και εκτιμά αν η ταξινόμηση έχει γίνει σωστά u Διατηρεί αντίγραφο της εισόδου, έτσι ώστε αν ένα λάθος εμφανίζεται, η είσοδος δεν καταστρέφεται u Βασίζεται στην αναγνώριση και χειρισμό εξαιρέσεων u Είναι δυνατό αν είναι γνωστή μία αξιόπιστη ταξινόμηση. Όμως σε πολλές περιπτώσεις είναι δύσκολο να γράψουμε τεστ αξιοπιστίας

55 Τεχνολογία ΛογισμικούSlide 55 Ασφαλής Διαδικασία Ταξινόμησης (Ada) u See portrait slide

56 Τεχνολογία ΛογισμικούSlide 56 Ασφαλής Διαδικασία Ταξινόμησης (C++) u See portrait slide

57 Τεχνολογία ΛογισμικούSlide 57 u Η αξιοπιστία σε ένα σύστημα επιτυγχάνεται με αποφυγή λαθών και ανθεκτικότητα σε λάθη u Μερικές δομές προγραμματισμού όπως gotos, αναδρομές και δείκτες είναι κληρονομικά επηρεπείς σε λάθη u Οι τύποι δεδομένων επιτρέπουν πολλά λάθη να βρίσκονται κατά την διάρκεια του χρόνου μεταγλώττισης. u Λογισμικό ανθεκτικό σε λάθη μπορεί να συνεχίσει την εκτέλεσή τους με την παρουσία λαθών λογισμικού Σημαντικά Σημεία

58 Τεχνολογία ΛογισμικούSlide 58 Σημαντικά Σημεία u Η ανθεκτικότητα σε λάθη απαιτεί εύρεση αστοχίας, εκτίμηση ζημίας, ανάκτηση και επιδιόρθωση u Ο προγραμματισμός N-εκδόσεων και τα blocks ανάκτησης είναι προσεγγίσεις στην αντοχή σε λάθη u Μηχανισμοί χειρισμού εξαιρέσεων χρησιμοποιούνται για ανάκτηση από αστοχία u Ο αμυντικός προγραμματισμός παρέχει ανθεκτικότητα σε λάθη χωρίς την χρήση ελεγκτή αντοχής σε λάθη


Κατέβασμα ppt "Τεχνολογία ΛογισμικούSlide 1 Προγραμματισμός Αξιοπιστίας u Τεχνικές προγραμματισμού για την εκπόνηση αξιόπιστων συστημάτων λογισμικού."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google