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

Σχετικά έγγραφα
Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού:Γενική Επισκόπηση - επισηµάνσεις

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Ανάπτυξη και Σχεδίαση Λογισμικού

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

Μεθόδων Επίλυσης Προβλημάτων

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΠαράδειγµαΠρογραµµατισµού

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

Η γλώσσα προγραμματισμού Strange

Μεθόδων Επίλυσης Προβλημάτων

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

οµές Επιλογής Εντολές if και switch

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Οι εντολές ελέγχου της ροής ενός προγράμματος.

scanf() scanf() stdin scanf() printf() int float double %lf float

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Εισαγωγή στον δομημένο προγραμματισμό

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Βασικές Αρχές Προγραμματισμού

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Δομημένος Προγραμματισμός (ΤΛ1006)

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

Συναρτήσεις. Εισαγωγή

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διαδικασιακός Προγραμματισμός

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

Διάλεξη 9η: Πίνακες (arrays)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Η βασική συνάρτηση προγράμματος main()

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

Δομημένος Προγραμματισμός (ΤΛ1006)

Ανάπτυξη και Σχεδίαση Λογισμικού

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

ΗΥ-150. Προγραμματισμός

Visual Basic Βασικές Έννοιες

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

(McCabe, 1976) (1/4) C = e n + 2p 29/4/2009

Ενδεικτικές λύσεις και στατιστικά

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Transcript:

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού - Μετρικές Τµήµα Διοίκησης Επιχειρήσεων Τει Δυτικής Ελλάδας Μεσολόγγι Δρ. Α. Στεφανή Διάλεξη 3

Μετρικές διαδικασίας Η λογική της βελτίωσης µιας διαδικασίας ανάπτυξης λογισµικού στηρίζεται στην αντίληψη ότι µετρώντας συγκεκριµένα χαρακτηριστικά της διαδικασίας και αναπτύσσοντας κατάλληλες µετρικές, είναι δυνατόν να εξαχθούν συγκεκριµένοι δείκτες για την βελτίωση της ακολουθούµενης στρατηγικής.

Μετρικές διαδικασίας Παράγοντες διαδικασίας

Μετρικές Έργου Η εφαρµογή µετρικών κατά τη διάρκεια ανάπτυξης ενός συγκεκριµένου έργου και η εξαγωγή κατάλληλων δεικτών, χρησιµοποιείται από τη διοίκηση του έργου και την οµάδα ανάπτυξης για την τροποποίηση των δραστηριοτήτων (τεχνικών ή µη) ώστε να επιτευχθούν οι επιδιωκόµενοι στόχοι. Π.χ. εκτίµηση της διάρκειας κόστος έργου

Μετρικές Προϊόντος Ως προϊόν σε ένα έργο λογισµικού, δεν θεωρείται µόνο ο κώδικας που η διοίκηση του έργου έχει δεσµευθεί να παραδώσει στον πελάτη. Το σύνολο της τεκµηρίωσης που αναπτύσσεται σε ολόκληρο τον κύκλο ζωής του προϊόντος, από τα έγγραφα που συνοδεύουν το λογισµικό και παραδίδονται στον πελάτη µέχρι τα έγγραφα που παράγονται για εσωτερική χρήση της εταιρείας, αποτελούν τµήµα του προϊόντος.

ΑΡΧΕΣ ΜΕΤΡΗΣΕΩΝ Μία διαδικασία µέτρησης χαρακτηρίζεται από πέντε δραστηριότητες : 1. διατύπωση: Ο καθορισµός των µετρικών που είναι κατάλληλες για το λογισµικό το οποίο εξετάζεται. 2. συλλογή: Ο µηχανισµός που χρησιµοποιείται για τη συγκέντρωση των δεδοµένων που απαιτούνται για τον υπολογισµό των αντίστοιχων µετρικών. 3. ανάλυση: Ο υπολογισµός των µετρικών και η εφαρµογή µαθηµατικών µεθόδων.

ΑΡΧΕΣ ΜΕΤΡΗΣΕΩΝ ερµηνεία: Η αξιολόγηση των µετρικών για την απόκτηση γνώσης των ποιοτικών χαρακτηριστικών του υπό εξέταση λογισµικού. ανάδραση: Συστάσεις προς την οµάδα ανάπτυξης λογισµικού που είναι δυνατόν να προκύψουν µετά την ερµηνεία των µετρικών.

8 Χαρακτηριστικά Λογισµικού n Εσωτερικά n Εξωτερικά

9 Μετρικές Τι είναι? Τα χαρακτηριστικά δεν µετριούνται! You can t control what you can't measure DeMarco, T. (1982) Μετρικές: Ανάθεση αριθµού ή συµβόλου σε µία οντότητα που χαρακτηρίζει µία συγκεκριµένη ιδιότητά της (attribute).

10 Κατηγοριοποίηση Μετρικών- Χαρακτηριστικά Εσωτερικές Εξωτερικές

11 Κατηγοριοποίηση Μετρικών- Στόχος Μετρικές Διαδικασιών Πόρων Προϊόντων CMM ISO Μεγέθους Δοµής Δεδοµένων Halstead McCabe Tsai

12 Παραδείγµατα Μετρικών Μετρικές Διαδικασίας: # λαθών ανά ώρα προγραµµατισµού # αλλαγών στις προδιαγραφές # διαθέσιµων και χρησιµοποιηµένων ωρών προγραµµατιστή την εβδοµάδα # patch releases µετά την πρώτη παράδοση

13 Παραδείγµατα Μετρικών Μετρικές Πόρων: Ανθρώπινο δυναµικό Εξοπλισµός Αναλώσιµα

14 Κριτική! Είναι ανήθικο να µετράς την αποδοτικότητα µόνο µε αριθµούς (π.χ. τι γίνεται όταν ένας καλός προγραµµατιστής αναλαµβάνει το πιο δύσκολο κοµµάτι?) Υποτιµητικό: Management by numbers αντί για managing people. ( δεν λαµβάνεται υπόψη η εµπειρία του προγραµµατιστή) Ασύµµετρο: επηρεασµός µετρήσεων από τους προγραµµατιστές. Ανακριβές: καµία µετρική δεν συνδυάζει ακρίβεια και σηµαντικότητα. (τα LOC δεν µετράνε τη δυσκολία του προγράµµατος, τα Function Points Lines τη µετρούν αλλά είναι υποκειµενικά)

15 Συσχέτιση Εξ. & Εσ. Μετρικών Απόλυτη συσχέτιση: Αδύνατη! (π.χ. µεγάλος LOC -> εύχρηστο λογισµικό?) Εµπειρικά έχει αποδειχθεί: 1. Τήρηση ορίων Εσ. Μετρικών -> µάλλον ποιοτικό λογισµικό 2. Μη-τήρηση ορίων Εσ. Μετρικών -> µάλλον κακής ποιότητας λογισµικό

16 Εσωτερικές Μετρικές Μέγεθος: LOC Μετρικές Halstead Function Points Πολυπλοκότητα: Κυκλωµατική Πολυπλοκότητα

17 Lines Of Code LOC Lines of Code ή SLOC (Source Lines of Code) Χρησιµοποιείται για την εκτίµηση του φόρτου και της παραγωγικότητας 2 είδη Physical SLOC: # των γραµµών µαζί µε τα σχόλια και τις κενές γραµµές. Logical SLOC: # των εντολών (στη C των «;»)

18 Παράδειγµα for (i=0; i<100; ++i) printf("hello"); /* Πόσες γραμμές κώδικα είναι; */ P-LOC = 1 L-LOC = 2 (1 για την for και 1 για την printf) 1 σχόλιο Comment Line for (i=0; i<100; ++i) { printf("hello"); } /* και αυτό;*/ P-LOC=4 L-LOC=2

19 Μέγεθος έργων λογισµικού Έτος Operating System SLOC (Million) 1993 Windows NT 3.1 6 1994 Windows NT 3.5 10 1996 Windows NT 4.0 16 2000 Windows 2000 29 2001 Windows XP 40 2005 Windows Vista Beta 2 50

20 Πλεονεκτήµατα &Μειονεκτήµατα + Απλό στη µέτρηση - περιορίζεται στον κώδικα (π.χ. δεν µετρά το µέγεθος των προδιαγραφών) δεν παίρνει υπόψη τη λειτουργία ή την πολυπλοκότητα δεν αποτελεί µέτρο για την αξιολόγηση της ποιότητας του κώδικα εξαρτάται από τη γλώσσα

Μετρικές Ηalstead Οι µετρικές που αναπτύχθηκαν από τον Halstead για τον υπολογισµό της υπολογιστικής πολυπλοκότητας ενός προγράµµατος επιχειρούν να συσχετίσουν ποσοτικά την πολυπλοκότητα µε τον αριθµό των τελεστών και τελεστέων σε έναν αλγόριθµο.

22 Μετρικές Ηalstead Ποσοτικές Μετρικές για τον πηγαίο κώδικα Επιστήµη Λογισµικού: Κώδικας = Τελεστές, Έντελα Τελεστές: συµβολοσειρές που καθορίζουν δράση πάνω στα έντελα Έντελα: σ υ µ β ο λ ο σ ε ι ρ έ ς π ο υ αντιπροσωπεύουν αποδέκτες της δράσης των τελεστών

23 Τελεστές ονόµατα εντολών, ονόµατα συναρτήσεων, σύµβολα πράξεων, ακόµα και σύµβολα στίξης π.χ. Printf(), ++, ;, {} Πως τα µετράµε: Παρενθέσεις, άγκιστρα ανά ζεύγη: {}, () Go to µαζί µε την ετικέτα: Go to 10 10: Εντολή διακλάδωσης: ΙF()-Then, IF()-Then-Else (µαζί µε τις παρενθέσεις τους!) Βρόγχοι: while()-do, do-while(), For(; ;), repeat-until() Άλλα: ;, printf(), return, scanf(), +, *, -, /, ==, κτλ.

24 Έντελα ονόματα μεταβλητών και σταθερές π.χ. i, j, 10, %d\n

25 Μετρικές Ηalstead Bασικές Οντότητες n1 ο αριθµός των διακριτών τελεστών που εµφανίζονται στο πρόγραµµα. n2 ο αριθµός των διακριτών εντέλων που εµφανίζονται στο πρόγραµµα. N1 ο αριθµός των συνολικών εµφανίσεων τελεστών στο πρόγραµµα. N2 ο αριθµός των συνολικών εµφανίσεων εντέλων στο πρόγραµµα

Παράδειγμα (1) 26

27 Παράδειγμα (2) #include <stdio.h> main() { int i,j; double k; i=0; while(i<10) { k=(i+20)/2; j=i*i; if(k>j) { if(i>j) printf("k=%f\n", k); else printf("i=%d j=%d\n",i,j); } i++; } i=-2; } Δεν µετράµε: include main() τις δηλώσεις int i, j; τα άγκιστρα της main

28 Παράδειγμα (2)- Tελεστές #include <stdio.h> main() { int i,j; double k; i=0; while(i<10) { k=(i+20)/2; j=i*i; if(k>j) { if(i>j) printf("k=%f\n", k); else printf("i=%d j=%d\n",i,j); } i++; } i=-2; }

29 Παράδειγμα (2)- Έντελα #include <stdio.h> main() { int i,j; double k; i=0; while(i<10) { k=(i+20)/2; j=i*i; if(k>j) { if(i>j) printf("k=%f\n", k); else printf("i=%d j=%d\n",i,j); } i++; } i=-2; } Άρα: n1=15 n2=10 N1=29 N2=23

30 Μετρικές του Halstead (1) Λεξιλόγιο: Μήκος προγράµµατος: n = n 1 + n 2 N = N 1 + N 2 Εκτιµητής Μήκους: N est = n 1 log 2 n 1 + n 2 log 2 n 2 υπάρχει εξάρτηση του µήκους του προγράµµατος µόνο από τους διακριτούς τελεστές και έντελα Όγκος: V = N log 2 n, αριθµός των bits που απαιτούνται για να αποθηκευθεί το πρόγραµµα Δυναµικός όγκος V* είναι ο όγκος που θα είχε η πιο συνοπτική (υψηλού επιπέδου) θεωρητική υλοποίηση του προγράµµατος (Minimal µέγεθος λύσης)

31 Μετρικές του Halstead (2) Επίπεδο προγράµµατος: L = V V * Εκφράζει το ποσοστό µε το οποίο το πρόγραµµα πλησιάζει το υψηλότερο δυνατό επίπεδο (κατά πόσο η υλοποίηση είναι κοντά στη Minimal) Εκτίµηση L est = 2 n2 n N 1 2

32 Μετρικές του Halstead (3) Δυσκολία προγράµµατος: 1 n N D = = L 2 n 1 2 η δυσκολία ενός προγράµµατος θα αυξάνει όσο χαµηλότερο είναι το επίπεδο υλοποίησης Επίπεδο γλώσσας: λ = LV* = L 2 V 2 2 n2 λ = L V = n N 1 2 δηλαδή το επίπεδο του προγράµµατος εξαρτάται άµεσα από τη γλώσσα προγραµµατισµού 2 2 N log 2 n

33 Μετρικές του Halstead (4) Προσπάθεια υλοποίησης: E = DV E D V V n1 N 2 = = = N log2 n L 2 n2 επίδραση του όγκου του προγράµµατος και του επιπέδου του στην προσπάθεια που έγινε για την υλοποίησή του Χρόνος υλοποίησης: T = E/S, S=18 (νοητικές επιλογές/sec) E n1 N 2 N log2 n T = = S 2 n S Εκτίµηση αριθµού λαθών: E 0 in [3000, 3200] 2 2 3 B = E = E 0 n N 2 n 1 2 2 N log E 0 2 n 2 3

34 Πλεονεκτήματα των μετρικών Halstead δεν χρειάζεται σε βάθος ανάλυση της δοµής του προγράµµατος Υπολογίζει το rate of error. Υπολογίζει το φόρτο συντήρησης Χρήσιµη στο προγραµµατισµό και αναφορά προόδου έργων λογισµικού Εύκολο να υπολογιστούν Ισχύουν για όλες τις γλώσσες προγραµµατισµού (ΟΟ?) Υποστηρίζονται από εµπειρικά δεδοµένα Χρήσιµες στην αναγνώριση κώδικα υψηλού φόρτου επεξεργασίας (µεγάλος κίνδυνος λάθους)

35 Μειονεκτήματα των μετρικών Halstead Modularity : παίρνεται υπόψην - όµως διαφορετική βαρύτητα πρέπει να έχει ένα call σε ρουτίνα του προγραµµατιστή και σε µία εξωτερική. Data-Type Distinctions : εάν µία γλώσσα χρησιµοποιεί τον τελεστή "+ +", αυτός µπορεί να εµφανιστεί εκατέρωθεν ενός εντέλου τύπου INT, FLOAT ή DOUBLE. Θα πρέπει να διαχωριστούν 6 διαφορετικές περιπτώσεις Call Depth : δεν λαµβάνεται υπόψη το βάθος των κλήσεων (nesting depth), που επηρεάζει το φόρτο. Θα πρέπει να µπουν τα ανάλογα βάρη. Τύποι τελεστών: ένα IF - THEN - ELSE έχει το ίδιο βάρος µε ένα FOR.. NEXT, ενώ είναι γνωστό ότι οι βρόγχοι είναι πιο δύσκολο να κατασκευαστούν. Η θεωρία του Halstead δεν προτείνει τρόπους δοκιµών ή βελτίωσης του κώδικα

Άσκηση

Άσκηση

Υποδείξεις

Υποδείξεις

Λύση

Λύση: Μήκος προγράµµατος Ν Μήκος προγράµµατος Ν Εκτίµηση Μήκους προγράµµατος Ν est

Λύση: όγκoς Προγράµµατος V

Λύση:

Λύση: επίπεδο γλώσσας

Λύση: Δυσκολία προγράµµατος D

Λύση: Προσπάθεια υλοποίησης Ε

Λύση: Χρόνος υλοποίησης Τ S είναι ο αριθµός των νοητικών επιλογών που µπορεί να κάνει το ανθρώπινο µυαλό ανά δευτελόλεπτο προσδιόρισε το S= 18

Λύση: Εκτίµηση αριθµού λαθών Β Ε 0 το µέσο αριθµό νοητικών επιλο γων που κάνει ο προγραµµατιστής ανάµεσα σε δύο διαδοχικά λάθη