Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα Τµήµα Διοίκησης Επιχειρήσεων Τει Δυτικής Ελλάδας Μεσολόγγι Δρ. Α. Στεφανή Διάλεξη 5
2 Εγκυροποίηση Λογισµικού Εγκυροποίηση Λογισµικού Επαλήθευση - Verification Επικύρωση - Validation Αναπτύσσουµε σωστά το προϊόν; Αξιολόγηση αναφορικά µε τις προδιαγραφές που τέθηκαν στην αρχή κάθε φάσης. Αναπτύξαµε το σωστό προϊόν; Αξιολόγηση αναφορικά µε τις απαιτήσεις των χρηστών.
Κατηγοριοποίηση Τεχνικών 3
4 Σφάλµα (bug, fault) Κάποια αναπαράσταση του λογισµικού είναι: ελλιπής, ασυνεπής λανθασµένη 3 κατηγορίες σφαλµάτων: προδιαγραφών, σχεδιασµού, υλοποίησης
5 Στατικές τεχνικές Ε&Ε Επαλήθευση προδιαγραφών, σχεδίου ή κώδικα. Μέθοδοι: Στατικός Αναλυτής Αναθεώρηση (review) Περιήγηση (walkthrough)- άτυπη, στην αρχή του κύκλου ανάπτυξη Επισκόπηση (inspection)-τυπική, µετά το τέλος της ανάπτυξης
6 Δυναµικές τεχνικές Ε&Ε «Εκτέλεση» του λογισµικού! 1. Συµβολική εκτέλεση (symbolic execution) καταχώρηση συµβολικών τιµών στις µεταβλητές εισόδου και εκτέλεση->µελέτη τρόπου διάδοσης τιµών, εντοπισµός λαθών 2. Προσοµοίωση (simulation): Χρήση τεχνητών δεδοµένων εισόδου που προσοµοιώνουν την πραγµατικότητα, σε πραγµατικές συνθήκες λειτουργίας. Προσοµοίωση του τρόπου λειτουργίας τµηµάτων του λογισµικού που δεν έχουν ακόµη ολοκληρωθεί. Ιδιαίτερα δαπανηρή µέθοδος. 3. Ανάλυση ευαισθησίας (sensitivity analysis).
7 Στρατηγική ελέγχου λογισµικού 1. Το λογισµικό εκτελείται δοκιµαστικά και καταγράφονται τα αποτελέσµατα της εκτέλεσης. 2. συγκρίνονται µε τις προδιαγραφές εξόδου των περιπτώσεων ελέγχου 3. παράγονται οι αναφορές δοκιµών, µε βάση τις οποίες θα γίνουν οι απαραίτητες διορθώσεις
8 Στρατηγικές Ελέγχου Επαναλαµβανόµενη εφαρµογή περιπτώσεων ελέγχου («τρέξιµο» µε δοκιµαστικά δεδοµένα)
9 Έλεγχος Διαφανούς Κουτιού (white-box) n n n n Έλεγχος εκτέλεσης κάθε εντολής τουλάχιστον µία φορά. Έλεγχος εκτέλεσης για όλες τις πιθανές περιπτώσεις δοµών ελέγχου συνθηκών (αληθής ή ψευδής). Έλεγχος δοµών επανάληψης τόσο για συνήθεις όσο και για οριακές τιµές. Έλεγχος εγκυρότητας εσωτερικών δοµών δεδοµένων. n Ενδεικτικές τεχνικές: 1. Δοκιµή βασικών µονοπατιών (basic path testing). 2. Δοκιµή δοµών επανάληψης (loop testing). 3. Δοκιµή συνθηκών (condition testing).
10 Πότε τελειώνει ο έλεγχος; Ουσιαστικά ποτέ! Ποια είναι καλά κριτήρια τερµατισµού των δοκιµών; (εκτός από την εξάντληση των διαθέσιµων πόρων!) Τα κριτήρια εξαρτώνται: 1. από το είδος του ελέγχου 2. αποδοτική σχεδίαση περιπτώσεων ελέγχου (πως θα βρούµε τα περισσότερα λάθη πιο γρήγορα και µε µικρό κόστος)
Τεχνικές σχεδιασµού περιπτώσεων Ελέγχου Λογισµικού 1. Λειτουργικός Έλεγχος (functional testing) ή Έλεγχος Αδιαφανούς Κουτιού black-box testing 2. Δοµικός Έλεγχος (structural testing) ή Έλεγχος Διαφανούς Κουτιού white-box testing 3. Έλεγχος Διεπαφών (interface testing): έλεγχος συµπεριφοράς τµηµάτων σε σχέση µε συσχετιζόµενα τµήµατα. 11
12 Δοκιµή Βασικών Μονοπατιών 1. Προσδιόρισε τα βασικά µονοπάτια του προγράµµατος -µονοπάτι: ξεκινά από τον κόµβο εισόδου, τελειώνει στον κόµβο εξόδου -ένα βασικό µονοπάτι δεν µπορεί να παραχθεί συνενώνοντας 2 ή περισσότερα µονοπάτια 2. Σχεδίασε περιπτώσεις ελέγχου για τα µονοπάτια αυτά - εάν κάθε βασικό µονοπάτι δοκιµαστεί µία φορά τότε έχουν ελεγχθεί όλες οι εντολές του προγράµµατος και οι συνθήκες (true και false) Δεν ανακαλύπτονται όλα τα ελαττώµατα που κώδικα
13 Διάγραµµα ροής Ροή ελέγχου (και όχι δεδοµένων) Απεικονίζει την πολυπλοκότητα του κώδικα Προσδιορίζει το πλήθος των βασικών µονοπατιών Κυκλωµατική Πολυπλοκότητα = Πλήθος ΒΜ = Άνω όριο περιπτώσεων ελέγχου
14 Δοκιµή Βασικών Μονοπατιών n Διαδικασία σχεδίασης περιπτώσεων ελέγχου: Υπολογισµός της κυκλωµατικής πολυπλοκότητας (V) του γραφήµατος ροής (G) αντιστοιχεί στον αριθµό των βασικών µονοπατιών που υπάρχουν: n n n V(G) = αριθµός περιοχών του G V(G) = E N + 2 (όπου E: ακµές και N: κόµβοι) V(G) = P + 1 (όπου Ρ το πλήθος των απλών συνθηκών ελέγχου του κώδικα) Εύρεση βασικών µονοπατιών n n Κάθε βασικό µονοπάτι περιλαµβάνει τουλάχιστον µία ακµή που δεν υπάρχει σε άλλο βασικό µονοπάτι. Όλα τα µη βασικά µονοπάτια προκύπτουν συνδυάζοντας τα βασικά. Δεν βρίσκει λάθη αλλά το άνω όριο των περιπτώσεων ελέγχου
Γράφος Κυκλωµατικής Πολυπλοκότητας 15 Βήµατα 1. Οµαδοποιούµε τις εντολές (αγνοούνται οι δηλώσεις, κάθε λογική έκφραση θεωρείται ξεχωριστός κόµβος, ακολουθιακές εντολές =1 κόµβος) 2. Κατασκευάζουµε το γράφο χρησιµοποιώντας τα σύµβολα:
16 Άσκηση Θεωρήστε το παρακάτω πρόγραµµα γλώσσας C, το οποίο ζητά από το χρήστη να γεµίσει έναν πίνακα ακεραίων 8 θέσεων και στη συνέχεια βρίσκει τη µέγιστη και την ελάχιστη τιµή του πίνακα, τις θέσεις (στον πίνακα) των τιµών αυτών και το µέσο όρο της µέγιστης και της ελάχιστης τιµής. Για το πρόγραµµα αυτό καλείστε να κατασκευάσετε το γράφο ροής του και να υπολογίσετε την κυκλωµατική πολυπλοκότητα.
17 6 7
18 Άσκηση Πριν από το for δεν υπάρχουν εντολές οπότε βάζουµε κόµβο κατευθείαν για τη λογική συνθήκη του for
19 Άσκηση Εάν η συνθήκη είναι αληθής, εκτελούνται οι δύο εντολές που οµαδοποιούνται µε την αγκύλη 1, και συνιστούν έναν κόµβο:
20 Άσκηση Η 1 επαναλαµβάνεται µέχρι η συνθήκη του for να γίνει ψευδής, άρα χρειάζεται και ένα βέλος προς τα πίσω
21 Άσκηση Όταν γίνεται ψευδής, εκτελείται τα επόµενο σύνολο εντολών, το 2. Αυτές οι εντολές επειδή δεν περιέχουν λογικές συνθήκες οµαδοποιούνται σε έναν κόµβο: Αυτό είναι και το σχήµα µίας εντολής for
22 Άσκηση εάν η συνθήκη της for είναι αληθής, τότε θα εκτελεστεί το 3
23 Άσκηση Στη συνέχεια ακολουθεί if-then (χωρίς else), που απεικονίζεται µε 3 κόµβους: 4
24 Άσκηση Επειδή το 3 θα εκτελεστεί οπωσδήποτε, ενοποιούµε τον κόµβο της λογικής συνθήκης µε το 3. Στο παραπάνω, εάν η συνθήκη είναι αληθής θα εκτελεστεί το 4 και θα πάει κατευθείαν στον έλεγχο του επόµενου if, αλλιώς θα πάει εκεί κατευθείαν. Το επόµενο if είναι ακριβώς το ίδιο οπότε: 4 6
25 Άσκηση Το for τελειώνει στο 6 και επιστρέφει. Τέλος, µένει να θέσουµε τη ροή ελέγχου όταν δεν είναι αληθής η συνθήκη του for και τελειώνει ο κώδικας στον κόµβο 7 4 6 7
26 Άσκηση Υπολογισµός Κυκλ. Πολυπλοκότητας 3 τρόποι: 1. V(g) = e n + 2p=13-10+2=5 2. Περιοχές = 5 3. Μπορεί να ελέγξει κανείς την ορθότητα της λύσης µε έναν απλό τρόπο: η V(g) είναι ο αριθµός των απλών λογικών συνθηκών +1 δηλ. 4+1=5 (απλές λογικές συνθήκες µαρκαρισµένες µε κίτρινο στον κώδικα) Χρειάζονται το πολύ 5 περιπτώσεις ελέγχου για να ελεγχτεί η ορθότητα όλων των µονοπατιών του κώδικα