Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Σχετικά έγγραφα
Έλεγχος Προγραμμάτων και Συστήματος

Κωδικοποίηση και Έλεγχος Ορθότητας

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα

Τεχνολογία Λογισμικού

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Εισαγωγή στη Σχεδίαση Λογισμικού

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού

οκιμασία και πλάνο δοκιμασίας

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

Πληροφορική 2. Τεχνολογία Λογισμικού

Έλεγχος Λογισμικού. Software Testing

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

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

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

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Συγγραφή Προγραμμάτων

Πληροφορική 2. Αλγόριθμοι

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

Σχεδίαση & Ανάλυση Αλγορίθμων

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας

Προγραμματισμός Ι (HY120)

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. i. Η συνθήκη α > β ή α <= β α) είναι πάντα Αληθής β) είναι πάντα Ψευδής γ) δεν υπολογίζεται δ) τίποτα από τα προηγούμενα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Σχεδίαση και Ανάλυση Αλγορίθμων

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

ΑΕΠΠ Ερωτήσεις θεωρίας

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

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

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

Να γράψετε τους αριθμούς 1, 2, 3 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

Agile Προσέγγιση στη Διαχείριση Έργων Λογισμικού

ΣΧΕΔΙΟ ΜΑΘΗΜΑΤΟΣ 1. ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦ.

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

Θεωρία Πληροφορίας. Διάλεξη 12:Κωδικοποίηση Καναλιού με Κώδικες Turbo. Δρ. Μιχάλης Παρασκευάς Επίκουρος Καθηγητής

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Μάθημα Εισαγωγή στις Τηλεπικοινωνίες Κωδικοποίηση πηγής- καναλιού Μάθημα 9o

Αρχιτεκτονική Λογισμικού

Κεφάλαιο 5 Ανάλυση Αλγορίθμων

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

Αυτόνομοι Πράκτορες. ΝΑΟ Μουσικός

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

Κατανεμημένα Συστήματα Ι

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

ΗΥ101: Εισαγωγή στην Πληροφορική

Μαλούτα Θεανώ Σελίδα 1

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Εισαγωγή στην. Γιάννης Σμαραγδάκης

Προτεινόμενα Θέματα ΑΕΠΠ

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Σενάριο 13. Προγραμματίζοντας ένα Ρομπότ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Προγραμματισμός Ι (ΗΥ120)

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

Τεχνολογία Λογισμικού & Πνευματική Ιδιοκτησία. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Οδηγίες Συγγραφής και Αξιολόγησης Εργασιών του μαθήματος

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

3. Προσομοίωση ενός Συστήματος Αναμονής.

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Διδακτική της Πληροφορικής ΙΙ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2

Στατιστική Ι (ΨΥΧ-1202) ιάλεξη 3

Λειτουργικά Συστήματα (ΗΥ321)

Σ ΤΑΤ Ι Σ Τ Ι Κ Η. Statisticum collegium iv

Σημειωματάαριο Δευτέρας 16 Οκτ. 2017

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο ΚΕΦΑΛΑΙΟ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Δομημένος Προγραμματισμός

<<ΔΗΜΗΤΡΗΣ ΜΑΝΩΛΗΣ ΦΥΣΙΚΟΣ ΜCs>> 1

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

7. Επαναλήψεις (Loops) Προγραμματισμός EV3 Ακαδημία Ρομποτικής 58

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Πίνακες Διασποράς. Χρησιμοποιούμε ένα πίνακα διασποράς T και μια συνάρτηση διασποράς h. Ένα στοιχείο με κλειδί k αποθηκεύεται στη θέση

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

Transcript:

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Έλεγχος Λογισμικού

Προβλήματα Λογισμικού 2 Μια ματιά στα παλιά: Σφάλμα: Ελάττωμα: Ανθρώπινο λάθος (σε προδιαγραφές, τεκμηρίωση κλπ) «Κωδικοποίηση του σφάλματος» στο προϊόν λογισμικού Αστοχία: Απομάκρυνση από την προδιαγεγραμμένη λειτουργία του συστήματος Η εμφάνιση του ελαττώματος Αίτια αστοχίας: Λανθασμένες ή ελλιπείς προδιαγραφές Μη ρεαλιστικές προδιαγραφές Ελαττώματα στη σχεδίαση συστήματος / προγράμματος και στην υλοποίηση (κώδικας)

Έλεγχος Λογισμικού 3 Επιβεβαιώνει την ύπαρξη υποπτευόμενης αστοχίας ή μας βοηθά να προκαλέσουμε νέες αστοχίες Πότε είναι επιτυχής; Όταν κατά τη διάρκειά του συμβαίνουν «άσχημα πράγματα» όταν δηλαδή μας επιβεβαιώνει ότι δεν κάναμε καλά τη δουλειά μας Ανακαλύπτεται ελάττωμα Συμβαίνει αστοχία ως αποτέλεσμα της διαδικασίας ελέγχου Τελικά καλύτερα τώρα παρά αργότερα

Έλεγχος Λογισμικού 4 Αρχές: Όλοι οι έλεγχοι θα πρέπει να είναι συσχετίσιμοι με τις απαιτήσεις του πελάτη Οι έλεγχοι θα πρέπει να έχουν σχεδιαστεί αρκετά πριν την εφαρμογή τους Σενάριο ελέγχου Αναμενόμενο αποτέλεσμα Ισχύει η αρχή Pareto (80/20) Έλεγχος από το ειδικότερο προς το γενικότερο Δεν είναι δυνατός ο εξαντλητικός έλεγχος Καλό είναι ο έλεγχος να γίνεται από κάποιον «τρίτο»

Τι Συμβαίνει κατά τον Έλεγχο; Αναγνώριση σφαλμάτων: 5 Ακριβής προσδιορισμός του / των σφάλματος/ων που προκάλεσαν μια αστοχία Διόρθωση / εξάλειψη σφαλμάτων Αλλαγές στο σύστημα ώστε να διορθωθούν τα ελαττώματα

Πού μπορώ να Βρω Ελαττώματα; 6 Παντού! Αλγόριθμοι Σύνταξη Σφάλματα υπολογισμού ή ακρίβειας Τεκμηρίωση Σφάλματα πίεσης / υπερφόρτωσης Σφάλματα χωρητικότητας / ορίων Σφάλματα χρονισμού / συγχρονισμού Σφάλματα διεκπεραιωτικής ικανότητας Σφάλματα ανάκτησης Σφάλματα υλικού / λογισμικού Σφάλματα προτύπων & διαδικασιών

Οργάνωση Σταδίων Ελέγχου Προδιαγραφές Σχεδίου Λειτουργικές Απαιτήσεις Συστήματος Έλεγχος Ολοκλήρωσης Έλεγχος Λειτουργιών Έλεγχος Μονάδων Άλλες Απαιτήσεις Λογισμικού 7 Προδιαγραφές Απαιτήσεων Πελάτη Περιβάλλον Χρήστη Έλεγχος Αποδοχής Έλεγχος Εγκατάστασης Έλεγχος Μονάδων Ελεγμένο Συστατικό Έλεγχος Μονάδων Ολοκληρωμένες Υπομονάδες Σύστημα που Λειτουργεί Έλεγχος Επίδοσης Επαληθευμένο, Επικυρωμένο Λογισμικό Αποδεκτό Σύστημα Σύστημα σε Λειτουργία

Τα «Κοινωνικά» Ζητήματα του Ελέγχου Ποιος τον κάνει; Ομάδα ανάπτυξης: Μονάδων & ολοκλήρωσης Ομάδα ελέγχου: 8 Υπόλοιποι έλεγχοι (έλεγχοι συστήματος) Τάσεις: Οι άπειροι προγραμματιστές δεν έχουν τη σωστή νοοτροπία για τον έλεγχο ως μέσο ανακάλυψης λαθών Κανείς δε δέχεται την ευθύνη για το σφάλμα Λύση: Μη εγωιστικός προγραμματισμός (egoless programming) Όλοι προσπαθούν να κάνουν τη δουλειά τους Οι ελεγκτές να δείξουν ότι βρίσκουν λάθη Η ομάδα ανάπτυξης να δείξει ότι δεν κάνει Συχνές διενέξεις

Πώς «Βλέπω» τα Αντικείμενα Ελέγχου; 9 Πρόγραμμα: Συνάρτηση απεικόνισης από το χώρο όλων των πιθανών εισόδων στο χώρο όλων των πιθανών λύσεων Πλήρης έλεγχος είναι συνήθως ανέφικτος

Πώς Αντιμετωπίζω τα Αντικείμενα Ελέγχου; Μαύρο κουτί: Ξέρουμε μόνο το interface εισόδου και παρατηρούμε την έξοδο Δε γνωρίζουμε τίποτα για την εσωτερική οργάνωση Δύσκολο να επιλέξουμε αντιπροσωπευτικές περιπτώσεις ελέγχου Μπορούμε μόνο να μοντελοποιήσουμε καλά τον έλεγχο αλληλεπίδρασης με άλλα συστατικά Αν είχαμε δυνατότητα άπειρων ελέγχων; Λευκό κουτί: Γνωρίζουμε και την εσωτερική οργάνωση 10 Μπορούμε να επιλέξουμε χαρακτηριστικές περιπτώσεις ελέγχου Πάντως και πάλι δύσκολο να τις ελέγξουμε όλες Συνδυασμοί των δύο

Έλεγχος Μονάδων: Επανεξέταση Κώδικα 11 Μελέτη του πηγαίου κώδικα και της τεκμηρίωσης Αναζήτηση ελαττωμάτων, παραλείψεων, σφαλμάτων Ανασκόπηση κώδικα: Παρουσίαση κώδικα και τεκμηρίωσης Περιήγηση στον Κώδικα Συζήτηση και σχολιασμός Επιθεώρηση κώδικα: Ομάδα εξέτασης ελέγχει κώδικα και τεκμηρίωση με βάση έναν κατάλογο σημείων προς εξέταση

Επανεξέταση Κώδικα 12 Ιδιαίτερα χρήσιμη πρακτική Αποκαλύπτεται μεγάλος αριθμός προβλημάτων Όμως οι προγραμματιστές συχνά αντιδρούν Δεν αισθάνονται άνετα στην ιδέα της επανεξέτασης του κώδικά τους από τρίτους Πάντως θεωρείται απαραίτητη και εφαρμόζεται από τους περισσότερους μεγάλους οργανισμούς ανάπτυξης λογισμικού

Τυπική Απόδειξη Ορθότητας Κώδικα 13 Εξονυχιστική μελέτη με δομημένο τρόπο Ορθό πρόγραμμα: Υλοποιεί λειτουργίες και επεξεργάζεται/εξάγει δεδομένα με τον κατάλληλο τρόπο και παρουσιάζει κατάλληλες διασυνδέσεις με άλλα συστατικά Θεώρηση προγράμματος ως λογική ροή Π.χ. ως σύνολο ισχυρισμών και θεωρημάτων Ισχυρισμοί (συνθήκες εισόδου / εξόδου κάθε συστατικού) Θεωρήματα προς απόδειξη Απόδειξη θεωρημάτων Απόδειξη τερματισμού

Τυπική Απόδειξη Πλεονεκτήματα: 14 Αποκάλυψη αλγοριθμικών λαθών Τυπική κατανόηση του προγράμματος Αυστηρότητα Μειονεκτήματα: Απαιτητική τεχνική σε χρόνο Όχι ιδιαίτερα κατάλληλη για μεγάλα/πολύπλοκα συστατικά Παράλληλη επεξεργασία; Μη εντοπισμός σφαλμάτων σχεδίου, διασύνδεσης, ερμηνείας προδιαγραφών, σύνταξης/σημειολογίας γλώσσας προγραμματισμού, τεκμηρίωσης Ποιος μας εγγυάται την ορθότητα της απόδειξης;

Άλλες Τεχνικές Απόδειξης 15 Συμβολική εκτέλεση: Προσομοιωμένη εκτέλεση κώδικα σύμβολα αντί μεταβλητών δεδομένων Λογικό μονοπάτι εκτέλεσης ακολουθία αλλαγών κατάστασης των συμβολικών μεταβλητών Παρόμοια πλεονεκτήματα / μειονεκτήματα με τις τυπικές αποδείξεις Μπορεί όμως να αυτοματοποιηθεί Τουλάχιστον μερικώς Δύσκολο αυτόματα συμβολικά εργαλεία να παρακολουθήσουν την εκτέλεση βρόχων

Άλλες Τεχνικές Απόδειξης 16 Αυτοματοποιημένη απόδειξη θεωρημάτων Δύσκολο να κατασκευαστούν εργαλεία Trial and error μη αποδεκτή στρατηγική εκτός για πολύ μικρά συστατικά Ανθρώπινη παρέμβαση Τότε το σύστημα ουσιαστικά ελέγχει την απόδειξη που δίνεται από το χρήστη Δεν είναι δυνατό να κατασκευαστεί το ιδανικό σύστημα απόδειξης θεωρημάτων για έλεγχο λογισμικού

Έλεγχος Συστατικών Πειράματα που δείχνουν πώς συμπεριφέρεται ο κώδικας σε δεδομένες συνθήκες 17 Αυτό που τελικά ζητά και ο πελάτης Επιλογή περιπτώσεων ελέγχου Ποια δεδομένα εισόδου θα χρησιμοποιηθούν; Πώς επιλέγουμε τις περιπτώσεις ελέγχου; Ειδικά στην περίπτωση που ακολουθούμε προσέγγιση «λευκού» κουτιού

Πληρότητα Ελέγχου Κάλυψη εντολών (C0) Κάθε εντολή θα πρέπει να εκτελεστεί τουλάχιστον μία φορά Κάλυψη διακλαδώσεων (C1) Κάθε εντολή διακλάδωσης θα πρέπει να εκτελεστεί τουλάχιστον μία φορά προς κάθε δυνατή κατεύθυνση (απόφαση) Κάλυψη μονοπατιών Κάθε διακριτό μονοπάτι εκτελείται μία τουλάχιστον φορά Διακριτό μονοπάτι: Ένα μονοπάτι που βάζει τουλάχιστον μία νέα ακμή σε σχέση με τα προηγούμενα Θυμάστε την κυκλωματική πολυπλοκότητα; (χρησιμοποιήστε τη!) Τυχαίος έλεγχος 18 Όχι και τόσο αποδοτικός, δεν προσφέρει εγγυήσεις Έλεγχος στα όρια Συχνά εκεί συμβαίνουν σφάλματα

Κάλυψη Μονοπατιών: Παράδειγμα Μονοπάτια: 19 1, 11 1, 2,3, 6, 7, 9, 10, 1, 11 1, 2,3, 6, 8, 9, 10, 1, 11 1, 2,3, 4,5, 10, 1, 11

Παράδειγμα: 20 read hr1 min1 AmOrPm1 read hr2 min2 AmOrPm2 if (hr1 == 12) hr1 = 0 if (hr2 == 12) hr2 = 0 if (AmOrPm1 == pm) hr1 = hr1 + 12 if (AmOrPm2 == pm) hr2 = hr2 + 12 if ( min2 < min1) min2 = min2 + 60 hr2 = hr2 1 if( hr2 < hr1) hr2 = hr2 + 24 elapsed = min2 min1 + 60* (hr2 hr1) print elapsed Βρείτε περιπτώσεις ελέγχου για τον ακόλουθο κώδικα ώστε να επιτυγχάνεται κάλυψη C0 και C1: C0 Χρόνος έναρξης Χρόνος Λήξης Αναμενόμενο Elapsed 12:00 pm 12:40 pm 40 9:57 pm 11:40 pm 103 5:00 pm 4:00 am 660 C1 Χρόνος έναρξης Αναμενόμενο Elapsed Όλα τα παραπάνω και επιπλέον 8:00 am Χρόνος Λήξης 12:40 pm 280

Και Πού να Σταματήσει; Πότε τελειώσαμε με τον έλεγχο; Πότε δοκιμάσαμε αρκετά; 21 Ποτέ, απλά μεταφέρεις το βάσανο στον πελάτη Όταν τελειώσει ο χρόνος ή τα χρήματα Ναι, υπάρχουν και πιο ρεαλιστικές προσεγγίσεις

Στατιστικές Μέθοδοι 22 f (t )=(1/ p )ln(l 0 pt+1) f(t): συνολικός αριθμός προβλημάτων που αναμένεται να έχουν εντοπιστεί μετά από t χρονικές μονάδες ελέγχου l0: η αρχική «ένταση» προβλημάτων (στην αρχή του ελέγχου) p: Ο ρυθμός μείωσης της «έντασης» προβλημάτων l (t )=l 0 /(l 0 pt+1) l(t): Στιγμιαία ένταση προβλημάτων Μπορώ να σταματήσω όταν η στιγμιαία ένταση προβλημάτων γίνει ικανοποιητικά μικρή

Εμφύτευση Σφαλμάτων 23 Συνειδητά εισάγονται σφάλματα στον κώδικα Το ποσοστό των εμφυτευμένων σφαλμάτων που παραμένουν υποθέτουμε ότι είναι ίσο με το ποσοστό των εγγενών σφαλμάτων που παραμένουν Είναι όμως τα εμφυτευμένα σφάλματα της ίδιας φύσης και πολυπλοκότητας; Δεν ξέρουμε τι πολυπλοκότητας ή φύσης είναι τα εγγενή σφάλματα Ίσως αν χρησιμοποιήσουμε ιστορική πληροφορία;

Εμφύτευση Σφαλμάτων 24 S N=n s N: Αριθμός εγγενών σφαλμάτων S: Αριθμός εμφυτευμένων σφαλμάτων n: Αριθμός εγγενών σφαλμάτων που βρέθηκαν s: Αριθμός εμφυτευμένων σφαλμάτων που βρέθηκαν

Εμπιστοσύνη στο Λογισμικό C: Βαθμός (ποσοστό) εμπιστοσύνης στο λογισμικό Πιθανότητα το λογισμικό να μην περιέχει πάνω από R εναπομείναντα σφάλματα { 1 C= S S+R+ 1 25 n>r n R } Αν δεν έχουν βρεθεί όλα τα εμφυτευμένα σφάλματα; C= { 1 S s 1 n>r ( ) ( S+R+ 1 R+s ) n R }

Ανεξάρτητες Ομάδες Ελέγχου x: Αριθμός εμφυτευμένων σφαλμάτων που εντοπίστηκαν από την ομάδα ελέγχου 1 y: Αριθμός εμφυτευμένων σφαλμάτων που εντοπίστηκαν από την ομάδα ελέγχου 2. q: Αριθμός κοινών εντοπισθέντων εμφυτευμένων σφαλμάτων q<=x, q<=y Αποτελεσματικότητα ομάδων ελέγχου: 26 Ε1 = x/n, E2 = y/n Όμως μπορούμε να θεωρήσουμε ότι Ε1 = q/y και E2 = q/x Τότε, N = q/(e1*e2)

Έλεγχος Ολοκλήρωσης Γιατί χρειάζεται; Μη αυξητική ολοκλήρωση Προσέγγιση Big-Bang Εξέταση συνολικά του προγράμματος 27 Συνήθως χάος Δεν μπορούν να απομονωθούν τα αίτια των προβλημάτων Ενίοτε για κάθε λάθος που διορθώνεται εμφανίζεται ένα άλλο Αυξητική ολοκλήρωση Από πάνω προς τα κάτω Από κάτω προς τα πάνω

Προσέγγιση από Πάνω προς τα Κάτω Από τη main() προς τα υποκείμενα τμήματα Κατά βάθος Αρχίζουμε από ένα «ισχυρό» μονοπάτι ελέγχου 28 Ανάλογα με τη δομή του προγράμματος Προσθέτουμε τμήματα Ή κατά πλάτος Συμπληρώνουμε κάθε επίπεδο

Προσέγγιση από Πάνω προς τα Κάτω: Διαδικασία 29 1. Βάζουμε το βασικό τμήμα ελέγχου και αντικαθιστούμε τα υπόλοιπα τμήματα με placebo (χαζά, πρακτικά άδεια τμήματα) 2. Ανάλογα με τη στρατηγική ολοκλήρωσης (κατά πλάτος ή βάθος) αντικαθιστούμε ένα placebo με πραγματικό τμήμα 3. Πραγματοποιούμε ελέγχους κατά την εισαγωγή κάθε τμήματος 4. Πίσω στο 2 5. Παλινδρομικός Έλεγχος!

Προσέγγιση από Κάτω προς τα Πάνω 30 Ξεκινάμε από τα τμήματα στα χαμηλότερα επίπεδα της δομής του προγράμματος και πηγαίνουμε προς τα πάνω Δε χρειαζόμαστε placebo

Προσέγγιση από Κάτω προς τα Πάνω: Διαδικασία 31 1. Τμήματα χαμηλού επιπέδου οργανώνονται σε «συστάδες» που επιτελούν συγκεκριμένο έργο 2. Εισαγωγή ενός τμήματος «οδηγού» που ελέγχει είσοδο και έξοδο 3. Έλεγχος συστάδας 4. Αφαίρεση οδηγού, εισαγωγή παραπάνω συστάδων

Παλινδρομικός Έλεγχος 32 Με την εισαγωγή κάθε τμήματος το λογισμικό αλλάζει Αντίστοιχα, αλλαγές με τη διόρθωση σφαλμάτων Πιθανά προβλήματα σε τμήματα που πριν δούλευαν σωστά Παλινδρομικός έλεγχος: Επανάληψη, σε κάθε βήμα, ενός υποσυνόλου των ελέγχων που έχουν ήδη πραγματοποιηθεί Άσκηση ισορροπίας μεταξύ πλήθους ελέγχων που επανεκτελούνται και αποδοτικότητας.