ΚΕΦΑΛΑΙΟ 19 ΠΡΟΓΡΑΜΜΑΤΙΖΟΝΤΑΣ ΓΙΑΑΞΙΟΠΙΣΤΙΑ ΑΞΙΟΠΙΣΤΙΑ

Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 18 ΑΞΙΟΠΙΣΤΙΑ ΛΟΓΙΣΜΙΚΟΥ

ΣΕΜΙΝΑΡΙΟ JAVA. 2 η ιάλεξη

Δομές Δεδομένων & Αλγόριθμοι

ΣΕΜΙΝΑΡΙΟ JAVA. 5 η ιάλεξη

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

ΚΕΦΑΛΑΙΟ 20 ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

Αντικειµενοστρεφής Προγραµµατισµός

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Δομές Δεδομένων (Data Structures)

Αντικειμενοστρεφής Προγραμματισμός

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Προγραμματισμός Υπολογιστών με C++

Αντικειμενοστρεφής Προγραμματισμός

Ειδικά Θέματα Προγραμματισμού

Δομές Δεδομένων & Αλγόριθμοι

Oι βασικές πράξεις (λειτουργίες) που ορίζονται για τον τύπο στοίβα αναφέρονται παρακάτω:

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

public class ArrayStack implements Stack {

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΑΞΙΟΠΙΣΤΙΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Software oftware Engineering 5 th

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

Οντοκεντρικός Προγραμματισμός

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

Οντοκεντρικός Προγραμματισμός

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ. Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής

Βασικές οµές εδοµένων

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

ιαφάνειες παρουσίασης #5 (β)

Οντοκεντρικός Προγραμματισμός

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

Τµήµα Πληροφορικής. Δοµές Δεδοµένων - Εργασία 1. Φθινοπωρινό Εξάµηνο Διδάσκων: E. Μαρκάκης. Στοίβες και Ουρές. Οικονοµικό Πανεπιστήµιο Αθηνών

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 7: Υπορουτίνες

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

Οντοκεντρικός Προγραμματισμός

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

Εισαγωγή στην πληροφορική

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

public class ArrayQueue implements Queue {

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Τεχνολογίες Υλοποίησης Αλγορίθµων

POINTERS, AGGREGATION, COMPOSITION

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

2.1 Αντικειµενοστρεφής προγραµµατισµός

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

Σχεσιακή Άλγεβρα. Κεφάλαιο 4. Database Management Systems, R. Ramakrishnan and J. Gehrke

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

Αντικειμενοστρεφής Προγραμματισμός

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

υναµικές οµές εδοµένων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Συλλογές, Στοίβες και Ουρές

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Εξαιρέσεις. try, catch, finally, throw, throws

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Transcript:

ΚΕΦΑΛΑΙΟ 19 ΠΡΟΓΡΑΜΜΑΤΙΖΟΝΤΑΣ ΓΙΑΑΞΙΟΠΙΣΤΙΑ ΑΞΙΟΠΙΣΤΙΑ

ΣΤΟΧΟΙ Να περιγράψουµε τεχνικές προγραµµατισµού για ανάπτυξη αξιόπιστων συστηµάτων Να συζητήσουµε την αποφυγή σφαλµάτων ελαχιστοποιώντας την χρήση δοµών που εµπεριέχουν λάθη Να περιγράψουµε την αρχιτεκτονική συστηµάτων ανεκτικά σε λάθη Να περιγράψουµε µεθόδους χειρισµού εξαιρέσεων 2

Θέµατα ου καλύ τονται Τεχνικές αποφυγής λαθών Αρχιτεκτονικές ανοχής σε σφάλµατα Χειρισµός εξαιρέσεων Αµυντικός προγραµµατισµός Παραδείγµατα προγραµµάτων 3

Εισαγωγή Οι αγοραστές λογισµικού απαιτούν από το λογισµικό να είναι αξιόπιστο και να µην περιέχει λάθη. Για κάποια µη κρίσιµα συστήµατα κάποια λάθη είναι ανεκτά Για τον σχεδιασµό εφαρµογών µε υψηλές απαιτήσεις αξιοπιστίας χρησιµοποιούνται κάποιες ειδικές τεχνικές έτσι ώστε να επιτευχθεί ο σκοπός 4

Σηµαντική βελτίωση στην αξιοπιστία του λογισµικού Βελτιωµένες τεχνικές Προγραµµατισµού Καλύτερες γλώσσες Προγραµµατισµού Καλύτερη ιαχείριση Ποιότητας 5

Σε ένα σύστηµα λογισµικού η αξιοπιστία µπορεί να βελτιωθεί χρησιµοποιώντας 3 συµπληρωµατικές στρατηγικές Α οφυγή Σφαλµάτων Το λογισµικό ανα τύσσεται µε τρό ο ου να µην εµ εριέχει σφάλµατα Ανοχή Σφαλµάτων Το λογισµικό σχεδιάζετε µε τέτοιο τρό ο έτσι ώστε τυχόν λάθη ου θα αρουσιαστούν να µην οδηγήσουν σε λήρη α οτυχία του συστήµατος Εντο ισµός Σφαλµάτων Πριν το σύστηµα αραδοθεί, τυχόν λάθη ου υ άρχουν να εντο ιστούν και να διορθωθούν 6

Α οφυγή Λαθών Η αποφυγή λαθών και η ανάπτυξη λογισµικού χωρίς λάθη εναπόκειται : Στην ύ αρξη τυ ικών ροδιαγραφών του συστήµατος Στην υιοθέτηση οργανωτικής οιοτικής φιλοσοφίας Στην υιοθέτηση ροσέγγισης α όκρυψης και Ενσωµάτωσης ληροφοριών στο ρόγραµµα Στην χρήση ισχυρά δοµηµένης γλώσσας ρογραµµατισµού Στον εριορισµό χρήσης δοµών.χ δείκτες 7

Εκθετική αύξηση του κόστους για αφαίρεση λαθών όσο αυτά µειώνονται Κόστος Ανά Λάθος Που Εντο ίζεται Πολύ Λίγα Λίγα Πολλά Αριθµός Υ ολει όµενων Λαθών 8

οµηµένος Προγραµµατισµός Παρουσιάστηκε το 1970 Προγραµµατισµός όπου αποφεύγονται τα gotos Σχεδίαση top-down Σηµαντικός γιατί προωθεί την σκέψη και την συζήτηση για θέµατα προγραµµατισµού 9

οµηµένος Προγραµµατισµός και Α οφυγή Σφαλµάτων οµές και Αντικείµενα που πρέπει να αποφεύγονται για µείωση σφαλµάτων είκτες είκτες ου αναφέρονται σε λανθασµένες εριοχές µνήµης µ ορεί να κάνουν corrupt τα δεδοµένα ό ως ε ίσης και να κάνουν το ρόγραµµα δυσανάγνωστο Χρήση ιακο ών Οι διακο ές µ ορεί να διακόψουν µια κρίσιµη λειτουργία α ό το να τελειώσει 10

υναµική Κατανοµή Μνήµης Η κατανοµή µνήµης κατά την εκτέλεση του ρογράµµατος µ ορεί να οδηγήσει σε υ ερχείλιση Αριθµοί κινητής υ οδιαστολής Είναι ανακριβής µε α οτέλεσµα να οδηγηθούµε σε λανθασµένες συγκρίσεις Παράλληλες ιεργασίες Μ ορεί να αρουσιαστούν σφάλµατα συγχρονισµού µεταξύ τους Αναδροµικές Υ ορουτίνες 11

Α όκρυψη Πληροφοριών Οι πληροφορίες πρέπει να είναι ορατές ΜΟΝΟ στα κοµµάτια του προγράµµατος που πρέπει να έχουν πρόσβαση σε αυτές Πλεονεκτήµατα 1. Αποφυγή corruption δεδοµένων από λάθος 2. Πρόβληµα σε ένα κοµµάτι δεν θα µεταδοθεί και σε άλλα 3. Όλες οι πληροφορίες είναι περιορισµένες και ο προγραµµατιστής κάνει λιγότερα λάθη 12

Χρήση δοµηµένων γλωσσών προγραµµατισµού ADA C++ Ανάθεση τύπων σε οντότητες που αντιστοιχεί στη λειτουργία τους και σε µοντέλα του πραγµατικού κόσµου typedef enum {red, redamber, amber, green} trafficlightcolor type POSITIVE is INTEGER range 1..MAXINT 13

Χρήση κλάσεων και αφαιρετικών τύπων STACK. Push (S, somevalue) S.Push (Somevalue) 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] ; } ; 14

Χρήση κλάσεων γενικής χρήσης template <class elem> 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 ; } ; 15

Ανοχή Σφαλµάτων Ένα σύστηµα ανεκτικό σε σφάλµατα µπορεί να συνεχίσει την λειτουργία του µετά από παρουσίαση σφάλµατος. Υπηρεσίες που πρέπει να διαθέτει ένα σύστηµα ανεκτικό στα σφάλµατα : 16

Εντο ισµός Α οτυχίας Το σύστηµα ρέ ει να εντο ίζει τυχόν α οτυχίες Αξιολόγηση Ζηµιάς Εντο ισµός των µερών του συστήµατος ου ε ηρεάστηκαν α ό την α οτυχία Ανάκτηση α ό Σφάλµα Το σύστηµα ρέ ει να ανακτήσει την κατάσταση του στην τελευταία γνωστή ασφαλή κατάσταση Ε ιδιόρθωση Σφάλµατος Τρο ο οίηση του συστήµατος έτσι ώστε να µην ε αναληφθεί το σφάλµα, µόνο εφόσον χρειάζεται 17

Αξιο ιστία Υλικού(hardware) Με Χρήση TMR A1 A2 Output comparator A3 18

Προσεγγίσεις για παροχή λογισµικού ανεκτικού στα σφάλµατα Προγραµµατισµός Ν-εκδόσεων Blocks Ανάκτησης 19

Προγραµµατισµός Ν-εκδόσεων Σχεδιάζονται Ν διαφορετικές εκδόσεις του συστήµατος από διαφορετικές οµάδες. Όλες οι εκδόσεις τρέχουν παράλληλα και τα αποτελέσµατα που επιστρέφει κάθε έκδοση συγκρίνονται και επιλέγετε η πλειοψηφία Υποθέτουµε ότι υπάρχει πολύ χαµηλή πιθανότητα να κάνουν όλες οι οµάδες τα ίδια λάθη Είναι εµπειρικά αποδεδειγµένο ότι όλες οι οµάδες καταλαβαίνουν λανθασµένα τις προδιαγραφές και χρησιµοποιούν τους ίδιους αλγορίθµους στις εκδόσεις που αναπτύσσουν 20

Προγραµµατισµός Ν-εκδόσεων ΕΚ ΟΣΗ 11 ΕΚ ΟΣΗ 2 ΕΚ ΟΣΗ 3 ΣΥΓΚΡΙΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΛΕΓΜΕΝΟ ΑΠΟΤΕΛΕΣΜΑ Ν-ΕΚ ΟΣΕΙΣ 21

Blocks Ανάκτησης Κάθε έκδοση υλοποιείτε µε διαφορετικό αλγόριθµο Η εκτέλεση γίνετε σειριακά Ο έλεγχος αποδοχής πρέπει να είναι ανεξάρτητος από την µέθοδο που χρησιµοποιήθηκε για κάθε έκδοση 22

Blocks Ανάκτησης ΑΛΓΟΡΙΘΜΟΣ 11 ΟΚΙΜΗ ΑΛΓΟΡΙΘΜΟΥ 1 ΑΠΟΤΥΧΙΑ ΕΛΕΓΧΟΥ ΑΠΟ ΟΧΗΣ ΝΕΑ ΟΚΙΜΗ ΝΕΟΣ ΕΛΕΓΧΟΣ ΕΛΕΓΧΟΣ ΑΠΟ ΟΧΗΣ 1.ΣΥΝΕΧΙΣΗ ΕΚΤΕΛΕΣΗΣ 2.ΕΝΤΟΠΙΣΜΟΣ ΕΞΑΙΡΕΣΗΣ ΝΕΟΣ ΕΛΕΓΧΟΣ ΑΛΓΟΡΙΘΜΟΣ 2 ΑΛΓΟΡΙΘΜΟΣ 3 23

Χειρισµός Εξαιρέσεων Εξαίρεση σε ένα πρόγραµµα είναι ένα λάθος που παρουσιάζετε ή ένα αναπάντεχο γεγονός ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΕΝΤΟΠΙΣΜΟΣ ΕΞΑΙΡΕΣΗΣ ΚΩ ΙΚΑΣ ΧΕΙΡΙΣΜΟΥ ΕΞΑΙΡΕΣΕΩΝ 24

Όταν η εξαίρεση εγερθεί σε υπορουτίνα εµφωλιασµένων υπορουτινών τότε πρέπει να «ξεδιπλωθεί» η δοµή των υπορουτινών A Β; Β; B C C; C; ΕΠΙΣΤΡΟΦΗ ΕΞΑΙΡΕΣΗΣ ΕΜΦΑΝΙΣΗ ΕΞΑΙΡΕΣΗΣ 25

void Control_freezer ( const float Danger_temp) { float Ambient_temp ; // try means exceptions will be handled in this block // Assume that Sensor, Temperature_dial and Pump are //objects which have been declared elsewhere try { while (true) { Ambient_temp = Sensor.Get_temperature () ; if (Ambient_temp > Temperature_dial.Setting () ) if (Pump.Status () == off) { Pump.Switch (on) ; Wait (Cooling_time) ; } else if (Pump.Status () == on) Pump.Switch (off) ; if ( Ambient_temp > Danger_temp ) throw Freezer_too_hot ( ) ; } // end of while loop } // end of exception handling try block // catch indicates the exception handling code. catch ( Freezer_too_hot ) Alarm.Activate () ; } 26

Ενσωµατωµένοι τύποι εξαιρέσεων στην ADA CONSTRAINED_ERROR NUMERIC_ERROR PROGRAMM_ERROR STORAGE_ERROR TASK_ERROR 27

Αµυντικός Προγραµµατισµός Είναι µια προσέγγιση στην ανάπτυξη λογισµικού όπου υποθέτουµε ότι στο πρόγραµµα υπάρχουν σφάλµατα Το πρόγραµµα περιέχει κώδικα για εντοπισµό και ανάκτηση από λάθη 28

Αµυντικός Προγραµµατισµός Τεχνικές που εισάγονται για υλοποίηση : Πρόληψη Σφάλµατος Αξιολόγηση Ζηµιάς Ανάκτηση α ό Σφάλµα 29

Πρόληψη Σφάλµατος Ο µεταφραστής της γλώσσας κάνει βασικούς ελέγχους Χρήση ενσωµατωµένων χειριστών εξαιρέσεων της γλώσσας(π.χ ADA) εν ελέγχονται σχέσεις µεταξύ µεταβλητών εν γνωρίζουµε σε ιο σηµείο εντο ίστηκε το σφάλµα Χρήση δηλώσεων στο πρόγραµµα για µεταβλητές έτσι ώστε να ελέγχονται οι τιµές τους 30

Αξιολόγηση Ζηµιάς Αξιολόγηση µερών της κατάστασης του συστήµατος που επηρεάστηκαν από το σφάλµα Ανάλυση της κατάστασης του συστήµατος για να κρίνουµε το µέγεθος του corruption που προκλήθηκε στα δεδοµένα Χρήση συναρτήσεων για έλεγχο εγκυρότητας δεδοµένων 31

Τεχνικές που εξαρτώνται από την κατάσταση συστήµατος και την εφαρµογή : Χρήση αθροισµάτων ελέγχου(checksums) στην ανταλλαγή δεδοµένων και ελέγχου ψηφίων για αριθµητικά δεδοµένα Χρήση εφεδρικών συνδέσµων ου εριέχουν δείκτες χρησιµο οιείτε για έλεγχο της ακεραιότητας των δοµών δεδοµένων Χρήση χρονοδιακο τών στα αράλληλα συστήµατα ου ελέγχουν για διεργασίες ου δεν έχουν τερµατιστεί 32

Ανάκτηση α ό Σφάλµα Είναι η διαδικασία τροποποίησης της κατάστασης του συστήµατος έτσι ώστε να ελαχιστοποιηθούν οι συνέπειες του σφάλµατος Προς τα Εµ ρός Ανάκτηση Εφαρµογή διορθώσεων σε µια corrupted κατάσταση συστήµατος Προς τα Πίσω Ανάκτηση Α οκατάσταση του συστήµατος σε µια γνωστή ασφαλή κατάσταση 33

Η προς τα εµπρός ανάκτηση εφαρµόζετε συνήθως όταν : Υ άρχει φθορά κωδικο οιηµένων δεδοµένων Υ άρχει φθορά διασυνδεδεµένων δοµών 34

Void Safe_Sort (int* X, int N, err_status & Err) { Int* Copy = new int [N] For ( int i=0;i<n;i++) Copy [i]=x [i] Try { //κώδικας ταξινόµησης Err=OK; For ( i=0;i<n-1;i++) If ( X [i]>x[i+1]) throw sort_error; } Catch (sort_error) { For ( i=0;i<n-1;i++) X [i]=copy [i]; Err=failure; } Delete [] Copy; } 35