ΕΛΕΓΧΟΣ ΜΟΝΑΔΩΝ Εντοπισμός σφαλμάτων συστατικού Εξέταση κώδικα Περιγραφή σχεδίου Περιγραφή σχεδίου Συγγραφή κώδικα Συγγραφή τεκμηρίωσης κάθε συστατικού.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Κεφάλαιο Τμηματικός προγραμματισμός
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΚΑΘΟΡΙΣΜΟΣ ΚΑΙ ΚΑΤΑΝΟΗΣΗ ΤΟΥ ΠΡΟΒΛΗΜΑΤΟΣ
ΥΠΟΔΕΙΓΜΑΤΑ Ένα υπόδειγμα ή μοντέλο είναι μια κάποιας μορφής αναπαράσταση πραγματικών αντικειμένων, καταστάσεων ή διαδικασιών. Γενικότερα είναι μια απλοποίηση.
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
Χαρακτηριστικά συνθετικής κίνησης 1 Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Χειμερινό Εξάμηνο (Ε') - Κωδ. Μαθήματος:
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA.
Πολυπλοκότητα Παράμετροι της αποδοτικότητας ενός αλγόριθμου:
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Κεφάλαιο 2 : Βασικές Έννοιες Αλγορίθμων 2.1 Τι είναι αλγόριθμος
ΕΚΠΑΙΔΕΥΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ ΤΗΣ ΕΥΡΥΤΕΡΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΔΙΑΦΟΡΕΤΙΚΟ ΛΟΓΙΣΜΙΚΟ ΓΙΑ ΚΑΘΕ ΠΤΥΧΗ ΤΟΥ Κάππας Κων/νος Επιμορφωτής ΤΠΕ -
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
Σχεδίαση αλγορίθμων (2ο μέρος)
ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΚΕΦΑΛΑΙΟ 1ο ΚΕΦ. 1-ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΑΕΠΠ.
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Ενεργή επιλογή αλγορίθμου, Active Algorithm Selection, Feilong Chen and Rong Jin Εύα Σιταρίδη.
Σχεδίαση Αλγορίθμων. Διεργασίες (1/2) Μία διεργασία αλληλεπιδρά με το περιβάλλον της δεχόμενη είσοδο και παράγοντας έξοδο.
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Διάλεξη 9η: Εφαρμογή της μεθόδου Simplex στο γραμμικό προγραμματισμό κατά τη μεγιστοποίηση Μέθοδος Simplex 1.Όταν υπάρχουν μέχρι πέντε κλάδοι παραγωγής.
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΚΕΦΑΛΑΙΟ 6 ΓΕΩΓΡΑΦΙΚΕΣ ΜΕΘΟΔΟΙ ΚΑΙ ΤΕΧΝΙΚΕΣ: ΣΗΜΕΙΑ
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Κεφάλαιο 10 – Υποπρογράμματα
Ερωτήσεις & Φύλλο εργασίας
Διαφάνειες παρουσίασης #2
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
ΑΛΓΕΒΡΟ - ΠΟΛΥΩΝΥΜΙΚΕΣ ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΜΕΘΟΔΟΙ ΣΤΗ ΘΕΩΡΙΑ ΕΛΕΓΧΟΥ Διδακτορική διατριβή Σταύρος Δ. Βολογιαννίδης URL:
Βασικά στοιχεία της Java
Τεχνολογία ΛογισμικούSlide 1 Τεχνολογία Απαιτήσεων u Καθορίζει τι θέλει ο πελάτης από ένα σύστημα λογισμικού.
Κεφάλαιο 1ο Ανάλυση προβλήματος.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
Έλεγχος και διασφάλιση ποιότητας κτηματολογικών στοιχείων Δείκτης ποιότητας κτηματολογικής βάσης Ιωάννης Καββάδας Προϊστάμενος Τμήματος Ελέγχων & Διαχείρισης.
Επίσημος ορισμός Ποιότητας (πρότυπο ISO 8402) Σύνολο χαρακτηριστικών μιας οντότητας για την ικανοποίηση εκφρασμένων και συνεπαγόμενων αναγκών. Αντικείμενο.
ΣΗΜΑΤΑ ΚΑΙ ΣΥΣΤΗΜΑΤΑ II Καθ. Πέτρος Π. Γρουμπός Διάλεξη 4η Δειγματοληψία.
ΔΙΑΛΕΞΗ 11η Ποσοτική έρευνα υγείας
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
ΜΕΤΑΒΛΗΤΕΣ-ΣΤΑΘΕΡΕΣ -ΕΚΦΡΑΣΕΙΣ
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Δρ. Α. Ραφαηλίδης Τμ. Διοίκησης Επιχειρήσεων (Πάτρα) ΤΕΙ Δυτ. Ελλάδας
Κατηγορίες και Προδιαγραφές Λογισμικού Η/Υ (Software)
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΕΛΕΓΧΟ ΛΟΓΙΣΜΙΚΟΥ
Τεχνολογία λογισμικού
Στρατηγικές ελέγχου ολοκλήρωσης
Λήμμα άντλησης Πως αποφασίζουμε αποδεικνύουμε ότι μία γλώσσα δεν είναι κανονική; Δυσκολότερο από την απόδειξη ότι μια γλώσσα είναι κανονική. Γενικότερο.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΚΕΦΑΛΑΙΟ 1 Ανάλυση προβλήματος.
ΦΑΣΕΙΣ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΟΣ – ΑΝΑΠΤΥΞΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ
Στοιχεία Δομημένου Προγραμματισμού
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
ΑΛΓΟΡΙΘΜΟΣ.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
ΔΙΟΙΚΗΣΗ ΟΛΙΚΗΣ ΠΟΙΟΤΗΤΑΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΠΕΡΙΒΑΛΛΟΝΤΟΣ
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ
Μεταγράφημα παρουσίασης:

ΕΛΕΓΧΟΣ ΜΟΝΑΔΩΝ Εντοπισμός σφαλμάτων συστατικού Εξέταση κώδικα Περιγραφή σχεδίου Περιγραφή σχεδίου Συγγραφή κώδικα Συγγραφή τεκμηρίωσης κάθε συστατικού του προγράμματος Ερμηνεία σχεδίου Πρόγραμμα Μία αντικειμενική ομάδα ειδικών (προγρ/στες, ειδικοί σε τεχνικά θέματα) επανεξετάζει τον κώδικα και την τεκμηρίωση για τον εντοπισμό παρανοήσεων / ανακολουθιών / άλλων σφαλμάτων. Γίνεται μέσω: Ανεπίσημη διαδικασία παρουσίασης κώδικα και συνοδευτικής τεκμηρίωσης στην ομάδα επανεξέτασης για το σχολιασμό της ορθότητάς τους. Περιηγήσεων κώδικα (code walkthrough) Πιο επίσημη (πολυβηματική) διαδικασία ελέγχου του κώδικα και της τεκμηρίωσης από την ομάδα επανεξέτασης πάνω σε προκαθορισμένα θέματα: Επισκοπήσεων κώδικα (code inspection) - Επανεξέταση ορισμού – χρήσης τύπων δεδομένων και δομών (συνέπειά τους σε σχέση με το σχέδιο, τις προδιαγραφές και τις διαδικασίες του συστήματος). - Επανεξέταση αλγορίθμων – υπολογισμών (επαλήθευση ορθότητας και αποδοτικότητάς τους). - Σύγκριση σχολίων - κώδικα (επιβεβαίωση ακρίβειας – πληρότητάς τους) - Επανεξέταση διασυνδέσεων μεταξύ συστατικών (εξέταση ορθότητας). - Εκτίμηση χαρακτηριστικών επίδοσης κώδικα ως προς κατάληψη μνήμης / ταχύτητα επεξεργασίας (προετοιμασία αξιολόγησης της συμβατότητας με τις απαιτήσεις επίδοσης). Σπουδαιότητα / Αποτελεσματικότητα επανεξετάσεων κώδικα - Gilb (88), Gilb & Graham (93): την προτείνουν στα αρχικά στάδια ανάπτυξης συστημάτων (προδιαγραφές, σχεδίαση). - Με χρήση επισκοπήσεων (πριν τον έλεγχο μονάδων) βρέθηκε το 67% των εντοπισθέντων σφαλμάτων σε λογισμικό (πείραμα Fagan 1976) και το 93% των σφαλμάτων εμπορικής εφαρμογής 6000 γραμμών κώδικα (πείραμα Ackerman, Buchwald, Lewiski 1986).

Σπουδαιότητα / Αποτελεσματικότητα επανεξετάσεων κώδικα - Gilb (88), Gilb & Graham (93): την προτείνουν στα αρχικά στάδια ανάπτυξης συστημάτων (προδιαγραφές, σχεδίαση). - Με χρήση επισκοπήσεων (πριν τον έλεγχο μονάδων) βρέθηκε το 67% των εντοπισθέντων σφαλμάτων σε λογισμικό (πείραμα Fagan 1976) - Ομοίως το 93% των σφαλμάτων εμπορικής εφαρμογής 6000 γραμμών κώδικα (πείραμα Ackerman, Buchwald, Lewiski 1986). - Εξέταση ιστορικού 10 εκατομμυρίων γραμμών κώδικα έδειξε ότι με επισκοπήσεις κώδικα εξαλείφθηκε το 85% των συνολικά εντοπισθέντων σφαλμάτων (Jones 1977). Δραστηριότητα εντοπισμού Εντοπισθέντα σφάλματα ανά 1000 γραμμές κώδικα Επανεξέταση απαιτήσεων 2.5 Επανεξέταση σχεδίου 5.0 Επισκόπηση κώδικα 10.0 Έλεγχος ολοκλήρωσης 3.0 Έλεγχος αποδοχής2.0 Σύγκριση επιδόσεων τεχνικών εντοπισμού σφαλμάτων - Jones 1991 (υπεροχή τεχνικής επισκοπήσεων κώδικα έναντι άλλων τεχνικών) Σύγκριση επιδόσεων τεχνικών εντοπισμού σφαλμάτων - Jones 1991 (υπεροχή τεχνικής επισκοπήσεων κώδικα έναντι άλλων τεχνικών) Μετά τη δημοσίευση οδηγιών Fagan για την επισκόπηση κώδικα στην IBM κι άλλοι οργανισμοί (Hewlett – Packard, ITT, AT&T κ.α.) υιοθέτησαν τις επισκοπήσεις ως συνιστώμενη / πρότυπη πρακτική.

Τυπική απόδειξη ορθού κώδικα Υποβολή κώδικα σε εξονυχιστική μελέτη για τη διαπίστωση της ορθότητάς του (αν δηλαδή υλοποιεί κατάλληλα - όπως υποδεικνύει το σχέδιο - τις λειτουργίες / δεδομένα και διασυνδέεται κατάλληλα με άλλα συστατικά). 1. Σύνταξη ισχυρισμών (assertions) για την περιγραφή συνθηκών εισόδου – εξόδου του συστατικού. 2. Σχεδίαση διαγράμματος ροής για την έκφραση της λογικής ροής του συστατικού, σημειώνοντας τα σημεία που πραγματοποιούνται μετασχηματισμοί. 3. Δημιουργία μιας σειράς θεωρημάτων προς απόδειξη από τους ισχυρισμούς. 4. Ορισμός ισχυρισμού (if-then) για κάθε βρόχο του διαγράμματος ροής. 5. Εντοπισμός όλων των δυνατών μονοπατιών με αφετηρία τον ισχυρισμό εισόδου και προορισμό τον ισχυρισμό εξόδου. 6. Επαλήθευση της αλήθειας κάθε μονοπατιού, αποδεικνύοντας ότι ο ισχυρισμός εισόδου υπονοεί (οδηγεί) – ακολουθώντας τους μετασχηματισμούς του εν λόγω μονοπατιού – στον ισχυρισμό εξόδου. 7. Απόδειξη της ύπαρξης τερματισμού για τον εξεταζόμενο κώδικα. αντίστοιχη λογική δομή αντίστοιχη λογική δομή Φιλοσοφία κώδικας μετατροπή Πλεονεκτήματα - Μειονεκτήματα 1.Δυνατότητα ανακάλυψης αλγοριθμικών σφαλμάτων του κώδικα. 2.Η εξέταση της λογικής δομής συνεπάγεται την κατανόηση ενός κώδικα. 3.Η τακτική χρήση αυτόματων / χειρονακτικών αποδείξεων επιβάλλει στον προγραμματιστή αυστηρότητα και ακρίβεια στον ορισμό δεδομένων, δομών δεδομένων και αλγοριθμικών κανόνων. 4.Η λογική περιγραφή και απόδειξη της ορθότητας ενός συστατικού είναι πιο χρονοβόρα διαδικασία απ’ ότι η συγγραφή του αντίστοιχου κώδικα (ιδιαίτερα σε περιπτώσεις μεγάλων και πολύπλοκων συστατικών). 5.Οι τεχνικές απόδειξης της ορθότητας δεν εγγυώνται ανυπαρξία αλγοριθμικών σφαλμάτων (σχεδίου, διασύνδεσης, ερμηνείας προδιαγραφών, σύνταξης – σημασιολογίας γλώσσας προγραμματισμού, τεκμηρίωσης).

Προσομοιωμένη εκτέλεση του κώδικα με χρήση συμβόλων αντί μεταβλητών. Προσεκτική παρακολούθηση μεταβαλλόμενων συνθηκών κατά μήκος μονοπατιών του προγράμματος. Το πρόγραμμα θεωρείται ότι διαθέτει μία κατάσταση εισόδου, καθορισμένη από τα δεδομένα εισόδου και τις συνθήκες. Κατά την εκτέλεση κάθε γραμμής του κώδικα ελέγχεται αν έχει τροποποιηθεί η κατάστασή της. Κάθε αλλαγή κατάστασης αποθηκεύεται. Η συνολική εκτέλεση του προγράμματος εμφανίζεται σαν μία ακολουθία διαδοχικών αλλαγών κατάστασης. Κάθε λογικό μονοπάτι που δημιουργείται στο πρόγραμμα αποτελεί μία ταξινομημένη σειρά αλλαγών κατάστασης. Η τελική κατάσταση κάθε μονοπατιού πρέπει να είναι η κατάσταση εξόδου. Το πρόγραμμα είναι ορθό αν κάθε δυνατή κατάσταση εισόδου παράγει την κατάλληλη κατάσταση εξόδου. Φιλοσοφία Παράδειγμα a = b + c; if (a > d) proc1(); // εκτέλεσε την proc1 else proc2(); // εκτέλεσε την proc2 Έλεγχος με εργαλείο συμβολικής εκτέλεσης Καταγραφή 2 δυνατών τιμών για τη συνθήκη a > d (true, false) και όχι απόδοση ειδικών τιμών στις μεταβλητές a και d. Μεγάλα σύνολα δεδομένων διαιρούνται σε διακριτές κλάσεις ισοδυναμίας (κατηγορίες). Ο κώδικας εξετάζεται μόνο ως προς τον τρόπο που αντιδρά σε κάθε κατηγορία δεδομένων. γενικότερα Μειονεκτήματα Η ανάπτυξη μιας απόδειξης ενδεχομένως πιο χρονοβόρα από τη συγγραφή κώδικα. Η απόδειξη ορθότητας δεν διασφαλίζει την απουσία σφαλμάτων. Μεγάλος / πολύπλοκος κώδικας μπορεί να απαιτεί εξέταση πολλών καταστάσεων και μονοπατιών (χρονοβόρα διαδικασία). Δύσκολη η παρακολούθηση της ροής εκτέλεσης μέσα από βρόχους. Δύσκολη η διαμέριση (σε ισοδύναμες τάξεις) πινάκων και δεικτών.

εργαλείο απόδειξης ορθότητας προγραμμάτω ν είσοδ ος δεδομένα εισόδου + συνθήκες δεδομένα εξόδου + συνθήκες κώδικας συστατικού έξοδο ς απόδειξη ορθότητας συστατικού αντιπαράδειγμα που δείχνει ένα σύνολο δεδομένων εισόδου τα οποία αδυνατεί το εξεταζόμενο συστατικό να μετατρέψει με ορθό τρόπο σε δεδομένα εξόδου Ακολουθώντας τα βήματα του προγράμματος εντοπίζει με διάφορους τρόπους τα δυνατά μονοπάτια. Αν οι διαθέσιμοι κανόνες εξαγωγής συμπερασμάτων / πορισμάτων δεν εξυπηρετούν μπορεί να γίνει χρήση κάποιας ευριστικής (heuristic) λύσης. Δυσκολία κατασκευής: - δυνατότητα επαλήθευσης σωστής χρήσης των μοναδιαίων / δυαδικών λειτουργιών (πρόσθεση, αφαίρεση, άρνηση, συγκρίσεις ισότητας / ανισότητας) - χρήση αντιμεταθετικότητας, κατανομής και συσχέτισης. - διαδικασία έκφρασης μιας γλώσσας προγραμματισμού μ’ ένα σύνολο προτάσεων μέσω των οποίων να εξάγονται τα θεωρήματα. Χρονοβόρα διαδικασία: - χρήση δοκιμής και σφάλματος (trial / error) για την κατασκευή θεωρημάτων (με εξαίρεση τα συστατικά μικρής έκτασης). Συνεργασία με χρήστη: - καθοδήγηση του συστήματος για την επιλογή των σημείων μετασχηματισμού και των μονοπατιών παρακολούθησης (χρήση μεθόδων για την ανάπτυξη έμπειρων συστημάτων). -Ένα σύστημα απόδειξης δεν παράγει στην ουσία μία απόδειξη ορθότητας αλλά κυρίως ελέγχει την απόδειξη που του επισημαίνει ο χρήστης. Εργαλεία βασισμένα στη συμβολική εκτέλεση αναπτύχθηκαν μόνο για την αξιολόγηση προγραμμάτων μικρής έκτασης. Δεν υπάρχουν τέτοια συστήματα γενικού σκοπού, ανεξάρτητα από τη γλώσσα και αυτοματοποιημένα. Περιγραφή - Λειτουργία

Έλεγχος συστατικών προγράμματος Σε αντίθεση με την απόδειξη ορθότητας (εξέταση κώδικα και συνθηκών εισόδου – εξόδου), ο έλεγχος συνίσταται σε μία σειρά εκτελέσεων του κώδικα, με βάση τα αποτελέσματα των οποίων συμπεραίνεται η συμπεριφορά του σε δεδομένη κατάσταση. Επιλογή δεδομένων εισόδου και συνθηκών, διαχείρισή τους από το συστατικό και παρατήρηση εξόδου. Περίπτωση / σημείο ελέγχου Συγκεκριμένη επιλογή δεδομένων εισόδου για χρήση κατά τον έλεγχο. Βήματα Καθορισμός στόχων ελέγχου. Επιλογή περιπτώσεων ελέγχου και καθορισμός του κατάλληλου ελέγχου για την ικανοποίηση συγκεκριμένου σκοπού (π.χ. επαλήθευση σωστής εκτέλεσης όλων των εντολών, σωστή εκτέλεση όλων των λειτουργιών από τον κώδικα). Εξέταση κώδικα : κλειστό / ανοικτό κουτί. Καθορισμένη συλλογή περιπτώσεων ελέγχου. Έλεγχος Τροφοδοσία κουτιού μ’ όλες τις δυνατές εισόδους. Σύγκριση της παραγόμενης εξόδου με την αναμενόμενη από τις απαιτήσεις. Εξέταση εσωτερικής λογικής δομής του κώδικα με εφαρμογή κατάλληλης στρατηγικής ελέγχου.

Παράδειγμα Συστατικό: Υπολογισμός ριζών β’θμιας εξίσωσης ax 2 +bx+c=0. Καλή λειτουργία κώδικα (κλειστό κουτί) Κριτήριο στόχου Επιλογή περιπτώσεων ελέγχου Οι συντελεστές a, b, c αποτελούν αντιπροσωπευτικούς συνδυασμούς αρνητικών, θετικών, μηδενικών. Επιλογή συνδυασμών τιμών με βάση τα σχετικά μεγέθη των a, b, c: π.χ. a>b, b>c ή b>c, c>a ή c>b, b>a κλπ. Εσωτερική δομή κώδικα (ανοικτό κουτί) Αποτελέσματα εξαρτώμενα από την τιμή του όρου b 2 - 4ac. Επιλογή περιπτώσεων ελέγχου ώστε να τον καθιστούν θετικό, αρνητικό ή μηδέν καθώς και περιπτώσεων ελέγχου για μη αριθμητικά δεδομένα (π.χ. είσοδος του “B” σαν συντελεστή). Διαχωρισμός εισόδου σε 4 ισοδύναμες κλάσεις Κάθε δυνατή είσοδος ανήκει σε μία από τις κλάσεις (κάλυψη συνόλου δυνατών εισόδων).Κάθε δυνατή είσοδος ανήκει σε μία από τις κλάσεις (κάλυψη συνόλου δυνατών εισόδων). Καμία είσοδος δεν ανήκει σε περισσότερες από μία κλάσεις (ξένες μεταξύ τους κλάσεις).Καμία είσοδος δεν ανήκει σε περισσότερες από μία κλάσεις (ξένες μεταξύ τους κλάσεις). Ένα σφάλμα εκτέλεσης με είσοδο κάποιο μέλος μιας κλάσης μπορεί να εμφανισθεί θέτοντας ως είσοδο και οποιοδήποτε άλλο μέλος αυτής της κλάσης (κάθε στοιχείο μιας κλάσης αντιπροσωπεύει όλα τα στοιχεία της).Ένα σφάλμα εκτέλεσης με είσοδο κάποιο μέλος μιας κλάσης μπορεί να εμφανισθεί θέτοντας ως είσοδο και οποιοδήποτε άλλο μέλος αυτής της κλάσης (κάθε στοιχείο μιας κλάσης αντιπροσωπεύει όλα τα στοιχεία της). Έλεγχος κλειστού κουτιού Οι επιλεγείσες περιπτώσεις ελέγχου δεν εγγυώνται τον εντοπισμό συγκεκριμένου σφάλματος. Έλεγχος ανοικτού κουτιού Κίνδυνος εστίασης στις εσωτερικές διεργασίες του κώδικα (έλεγχος τι κάνει και όχι τι έπρεπε να κάνει). Έλεγχος συστατικών προγράμματος

Παραγωγή δεδομένων εισόδου μέσω συνδυασμού ελέγχων ανοικτού – κλειστού κουτιού Κλειστό κουτί χρήση εξωτερικών προδιαγραφών για παραγωγή αρχικών περιπτώσεων ελέγχου (δεδομένα εισόδου, οριακές συνθήκες εισόδων – εξόδων, μη έγκυρα δεδομένα). Συστήματα υλοποίησης μηχανών διακριτών καταστάσεων Ανάκληση προηγούμενης κατάστασης του συστήματος. Καθορισμός επόμενης κατάστασης από τρέχουσα και προηγούμενη κατάσταση. Συστήματα πραγματικού χρόνου Οδηγούνται από διακοπές(interrupts): εισαγωγή ομάδων περιπτώσεων ελέγχου στη θέση μεμονωμένων περιπτώσεων. Έλεγχος συστατικών προγράμματος Παράδειγμα Συστατικό: αναμονή θετικών τιμών εισόδου Περιπτώσεις ελέγχου: πολύ μεγάλος θετικός ακέραιος, θετικός ακέραιος, θετικός δεκαδικός σταθερής υποδιαστολής, αριθμός μεγαλύτερος του 0 και μικρότερος του 1, 0, αρνητικός αριθμός, μη αριθμητικός χαρακτήρας. Επιπρόσθετες περιπτώσεις ελέγχου: Καμία, μία ή περισσότερες επαναλήψεις βρόχων, έλεγχος τριγωνομετρικών συναρτήσεων για 0 0, 90 0,, επιλογή εισόδων για μηδενισμό παρονομαστών κλπ. Επιπρόσθετες περιπτώσεις ελέγχου: Καμία, μία ή περισσότερες επαναλήψεις βρόχων, έλεγχος τριγωνομετρικών συναρτήσεων για 0 0, 90 0, 180 0, 270 0, 360 0, επιλογή εισόδων για μηδενισμό παρονομαστών κλπ. Παραγωγή δεδομένων εισόδου μέσω ακολουθιών περιπτώσεων ελέγχου Ανοικτό κουτί ορισμός επιπρόσθετων περιπτώσεων ελέγχου (έλεγχος όλων τω διακλαδώσεων, εξέταση μέγιστου δυνατού πλήθους διαδρομών εκτέλεσης – μονοπατιών.

Έλεγχος συστατικών προγράμματος Εστίαση κάλυψης όλων των δυνατών συμπεριφορών (λεπτομερής έλεγχος κώδικα). Επιλογή περιπτώσεων ελέγχου μέσω μίας τουλάχιστον από τις υπάρχουσες στρατηγικές με βάση τα δεδομένα που μεταχειρίζεται ο κώδικας. Έλεγχος εντολών Κάθε εντολή του συστατικού εκτελείται 1 τουλάχιστον φορά σε κάποιον έλεγχο. Έλεγχος διακλάδωσης Κάθε διακλάδωση κάθε σημείου απόφασης του κώδικα επιλέγεται τουλάχιστον 1 φορά σε κάποιον έλεγχο. If / then Η στρατηγική δεν καλύπτει τον έλεγχο όλων των διακλαδώσεων μιας συνθήκης.Η στρατηγική δεν καλύπτει τον έλεγχο όλων των διακλαδώσεων μιας συνθήκης. If / then Η στρατηγική δεν καλύπτει τον έλεγχο όλων των συνδυασμών διακλαδώσεων (δυνατών μονοπατιών εκτέλεσης).Η στρατηγική δεν καλύπτει τον έλεγχο όλων των συνδυασμών διακλαδώσεων (δυνατών μονοπατιών εκτέλεσης). If / then / else μη ελεγχόμενα μονοπάτια

Έλεγχος συστατικών προγράμματος Έλεγχος μονοπατιών Κάθε διακριτό μονοπάτι του κώδικα εκτελείται τουλάχιστον 1 φορά από κάποιον έλεγχο. Έλεγχος μονοπατιών ορισμού - χρήσης Κάθε μονοπάτι που παράγεται από κάθε ορισμό μιας μεταβλητής (ανάθεση τιμής) προς κάθε χρήση αυτού του ορισμού, εξετάζεται τουλάχιστον 1 φορά από κάποιον έλεγχο. If / then / else Χ=5 Υ=2*Χ Χ=5 Υ=2*Χ Ορισμός της μεταβλητής Χ (ανάθεση στη Χ της τιμής 5) Χρήση του ορισμού Χ=5

Έλεγχος συστατικών προγράμματος Έλεγχος όλων των χρήσεων Όλες οι περιπτώσεις ελέγχου περιλαμβάνουν ένα τουλάχιστον μονοπάτι από κάθε ορισμό προς κάθε χρήση που μπορεί να προσπελαστεί απ’ αυτόν τον ορισμό. If / then / else Χ=5 Υ=2*Χ Χ=5 Υ=2*Χ μη ελεγχόμενο μονοπάτι Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς μία χρήση του δεδομένου το οποίο ανατέθηκε σε κάποια μεταβλητή εκτελείται σωστά τότε και τα υπόλοιπα μονοπάτια προς αυτή τη χρήση δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση).Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς μία χρήση του δεδομένου το οποίο ανατέθηκε σε κάποια μεταβλητή εκτελείται σωστά τότε και τα υπόλοιπα μονοπάτια προς αυτή τη χρήση δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση). Έλεγχος όλων των χρήσεων κατηγορημάτων / μερικών υπολογιστικών χρήσεων Για κάθε ορισμό κάθε μεταβλητής ένας έλεγχος καλύπτει ένα τουλάχιστον μονοπάτι από τον ορισμό προς κάθε χρήση σε κατηγόρημα (π.χ. συνθήκη σε εντολή απόφασης). Αν παραμένουν ακάλυπτοι ορισμοί, προστίθεται και η χρήση σε υπολογισμούς. Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς κάθε χρήση σε συνθήκη εκτελείται σωστά τότε (πιθανότατα) και τα υπόλοιπα μονοπάτια που ξεκινούν απ’ αυτή τη συνθήκη δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση).Βασίζεται στο σκεπτικό ότι αν ένα μονοπάτι προς κάθε χρήση σε συνθήκη εκτελείται σωστά τότε (πιθανότατα) και τα υπόλοιπα μονοπάτια που ξεκινούν απ’ αυτή τη συνθήκη δεν θα παρουσιάσουν πρόβλημα (οφειλόμενο στην εν λόγω ανάθεση). Χ>0 Χ=5 Υ=2*Χ Ζ=10 Κ=Ζ/2 Χ>0 Χ=5 Υ=2*Χ Ζ=10 Κ=Ζ/2

Έλεγχος συστατικών προγράμματος Η ισχύς μιας στρατηγικής ελέγχου εμπλέκει ανάλογο πλήθος περιπτώσεων ελέγχου. Παράδειγμα Λογικό διάγραμμα υπό εξέταση συστατικού Δείκτης=false Εκτύπωσε Αποτέλεσμα X> K? ΟΧΙ ΝΑΙ Δείκτης=true X=X+1 Κλήση SUB(X, Δείκτης, Αποτέλεσμα) Αποτέλεσμα> 0 ? Αποτέλεσμα> 0 ? ΝΑΙ ΟΧΙ Έλεγχος εντολών: απαιτούνται περιπτώσεις ελέγχου για την εκτέλεση των εντολών 1 έως 7 Αν επιλέξουμε X>K τέτοιο ώστε να παράγει ένα θετικό Αποτέλεσμα, μπορούμε να εκτελέσουμε τις εντολές με τη σειρά, ώστε να επαρκεί μία περίπτωση ελέγχου. Έλεγχος διακλαδώσεων: εντοπίζουμε όλα τα σημεία απόφασης – ρόμβους Έχουμε 2 σημεία απόφασης, συνεπώς απαιτούνται 2 περιπτώσεις ελέγχου για την εξέταση των μονοπατιών και , οι οποίες διασχίζουν κάθε διακλάδωση τουλάχιστον 1 φορά. Έλεγχος μονοπατιών: εντοπίζουμε όλα τα σημεία απόφασης – ρόμβους Έχουμε 2 σημεία απόφασης, με 2 επιλογές σε κάθε διακλάδωση. Συνεπώς απαιτούνται 4 περιπτώσεις ελέγχου για την εξέταση όλων των πιθανών μονοπατιών: , , και Έλεγχος εντολών < Έλεγχος διακλαδώσεων < Έλεγχος μονοπατιών Έλεγχος εντολών < Έλεγχος διακλαδώσεων < Έλεγχος μονοπατιών Πλήθος περιπτώσεων ελέγχου ανά στρατηγική