Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Γραφήματα & Επίπεδα Γραφήματα
Advertisements

Βασικές έννοιες αλγορίθμων
Τι είναι ο προγραμματισμός
Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
7.5.2 Αντικειμενοστραφής προγραμματισμός
Slide 1 Δίκτυα Τηλεπικοινωνιών ENOTHTA 7 η ΔΙΑΚΙΝΗΣΗ ΤΗΛΕΦΩΝΙΚΩΝ ΚΛΗΣΕΩΝ (ΜΕΡΟΣ Α’) 1. ΘΕΩΡΙΑ ΤΗΣ ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΗΣ ΚΙΝΗΣΗΣ  Εκτός από τις τερματικές.
Διαχείριση Έργου Οργάνωση, σχεδιασμός και προγραμματισμός έργων ανάπτυξης λογισμικού.
Πιθανοκρατικοί Αλγόριθμοι
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Μετρικές Λογισμικού για Αντικειμενοστρεφή Συστήματα
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Αξιολόγηση της επίδρασης της χρήσης προτύπων σχεδίασης στις τιμές των μετρικών αντικειμενοστρεφούς σχεδίασης. Εφαρμογή σε εργαλείο σχεδίασης λογισμικού.
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Η ποιότητα της πληροφορίας στο εκπαιδευτικό υλικό που χρησιμοποιείται ή διανέμεται μέσω του Internet Χρήστος Σαβρανίδης Πανεπιστήμιο Ιωαννίνων Τμήμα ΦΠΨ.
Αναγνώριση Προτύπων.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Γραφήματα & Επίπεδα Γραφήματα
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
1 Θεματική Ενότητα Γραφήματα & Επίπεδα Γραφήματα.
ΑΠΕΙΚΟΝΙΣΗ ΕΝΝΟΙΩΝ 1. 2 Χρήστης Στόχος Ταμίας διενέργεια πώλησης διενέργεια ενοικίασης εισαγωγή ταμείου εξαγωγή ταμείου * 1 Μοντέλο Πεδίου Προβλήματος.
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Ανάλυση Πολλαπλής Παλινδρόμησης
Ηλεκτρονική Ενότητα 5: DC λειτουργία – Πόλωση του διπολικού τρανζίστορ
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
ΕΙΣΑΓΩΓΗ ΣΤΑ ΓΕΩΓΡΑΦΙΚΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΩΝ
Τεχνολογία ΛογισμικούSlide 1 Σχεδιασμός Λογισμικού u Ανάπτυξη λύσης που ικανοποιεί τις απαιτήσεις λογισμικού.
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Συνδυαστικά Κυκλώματα
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Ανάπτυξη Πρωτοτύπου Λογισμικού
2009ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Κατασκευή Λογισμικού (2/2) Μανόλης.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Ποιότητα Λογισμικού Ενότητα 10: Μετρικές Ποιότητας Κώδικα. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής.
2-1 Ανάλυση Αλγορίθμων Αλγόριθμος Πεπερασμένο σύνολο εντολών που, όταν εκτελεστούν, επιτυγχάνουν κάποιο επιθυμητό αποτέλεσμα –Δεδομένα εισόδου και εξόδου.
Ενότητα Α.4. Δομημένος Προγραμματισμός
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Παρασκευή, 3 Απριλίου 2015Τμ.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)
Τεχνολογία ΛογισμικούSlide 1 Τεχνολογία Απαιτήσεων u Καθορίζει τι θέλει ο πελάτης από ένα σύστημα λογισμικού.
Εκτίμηση της Απόδοσης των Οργανισμών Αθλητικής Αναψυχής
Επίσημος ορισμός Ποιότητας (πρότυπο ISO 8402) Σύνολο χαρακτηριστικών μιας οντότητας για την ικανοποίηση εκφρασμένων και συνεπαγόμενων αναγκών. Αντικείμενο.
Κλάσεις και αντικείμενα
Τεχνολογία λογισμικού
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Μεταγράφημα παρουσίασης:

Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 2 Στόχοι  Ποιότητα Λογισμικού  Μετρήσεις - Μετρικές Λογισμικού  Αντικειμενοστρεφείς Μετρικές

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 3 Ποιότητα Λογισμικού ISO / IEC 9126: Το πρότυπο ISO / IEC 9126: Στοχεύει στη διασφάλιση της ποιότητας των προϊόντων του λογισμικού, καθορίζοντας τα χαρακτηριστικά και τα υπό-χαρακτηριστικά της ποιότητας καθώς και τις συνδεδεμένες μετρικές.  Εξωτερικές μετρικές: εφαρμόζονται στο λογισμικό όταν είναι σε λειτουργία.  Εσωτερικές μετρικές: δεν στηρίζονται στην λειτουργία του λογισμικού, είναι συνήθως μετρικές κώδικα (στατικές μετρικές).  Σε χρήση μετρικές: είναι διαθέσιμες όταν το λογισμικό χρησιμοποιείται σε πραγματικές συνθήκες. :: ISO / IEC 9126 (1/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 4 Ποιότητα Λογισμικού Το μοντέλο Εξωτερικής/Εσωτερικής Ποιότητας του προτύπου ISO/IEC :: ISO / IEC 9126 (2/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 5 Μετρήσεις - Μετρικές Μέτρηση Μέτρηση (measure) ονομάζεται η διαδικασία κατά την οποία αριθμοί και σύμβολα συνδέονται με ιδιότητες οντοτήτων του πραγματικού κόσμου έτσι ώστε να τα περιγράφουν σύμφωνα με αυστηρά καθορισμένους κανόνες [Norman Fenton]. Οφέλη:  Ποσοτική και αντικειμενική θεώρηση των δυνατοτήτων και αδυναμιών των διαδικασιών, προϊόντων και πόρων.  Ερευνητές και Επαγγελματίες: Κατανόηση συμπεριφορών και αποτελεσμάτων για καλύτερη επιλογή τεχνικών και εργαλείων.  Κατασκευαστές: μετρούν τα χαρακτηριστικά του λογισμικού, για να διαπιστώσουν 1) την πρόοδο του έργου, 2) εάν ικανοποιούνται πλήρως οι απαιτήσεις των πελατών και 3) για να εξακριβώσουν εάν ο σχεδιασμός είναι σωστός.  Διευθυντές: συμβουλεύονται τις μετρήσεις, για να διαπιστώσουν την πορεία του έργου σε σχέση με τα χρονοδιαγράμματα και τους καθορισμένους προϋπολογισμούς. :: Τι είναι μέτρηση (1/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 6 Μετρήσεις - Μετρικές  “You cannot control what you cannot measure” [Τοm De Marco]  “The degree to which you can express something in numbers is the degree to which you really understand it.” [Lord Kelvin]  Για την παρακολούθηση, διαχείριση, ποιοτική μελέτη και βελτίωση οποιουδήποτε τεχνικού έργου είναι απαραίτητη η έννοια της μέτρησης.  Η εξαγωγή μέτρων είναι υποκειμενική, π.χ. αξιολόγηση της ικανοποίησης του πελάτη, της πολυπλοκότητας του λογισμικού, κλπ. :: Τι είναι μέτρηση (2/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 7 Μετρήσεις - Μετρικές Μετρική Μετρική (metric) είναι μια εμπειρική αντικειμενική αντιστοίχηση ενός αριθμού ή συμβόλου σε μια οντότητα με στόχο να χαρακτηρίσει ένα συγκεκριμένο χαρακτηριστικό της [Norman Fenton].  Μέτρο: ποσοτική ένδειξη αριθμού, διαστάσεων, χωρητικότητας, όγκου κτλ. προϊόντος ή διαδικασίας.  Μέτρηση: Διαδικασία υπολογισμού μέτρου/ων.  Μετρική: ποσοτική εκτίμηση του βαθμού κατά τον οποίο ένα σύστημα κατέχει ένα χαρακτηριστικό. Αριθμός λαθών σε ένα πρόγραμμα = Μέτρο Συλλογή και καταμέτρηση λαθών = Μέτρηση Συσχετισμός λαθών με κάποιο χαρακτηριστικό, π.χ. ποιότητα (πάνω από 100 λάθη => κακή ποιότητα, κάτω από 10 λάθη => καλή ποιότητα) = Μετρική :: Μετρικές Λογισμικού (1/5)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 8 Μετρήσεις - Μετρικές Μια μετρική είναι καλή όταν η αριθμητική της τιμή χαρακτηρίζει με ακρίβεια την συγκεκριμένη ιδιότητα του αντικειμένου [Fenton]. Μια ιδανική μετρική θα πρέπει να είναι:  Απλή και υπολογίσιμη  Εμπειρικά και διαισθητικά πειστική  Συνεπής και αντικειμενική  Συνεπής ως προς τη χρήση ποσοτικών μονάδων  Ανεξάρτητη από γλώσσες προγραμματισμού και διαδικασίες ανάπτυξης  Ελέγξιμη και ‘ανοικτή’ σε ουσιαστικούς μηχανισμούς ανάδρασης :: Μετρικές Λογισμικού (2/5)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 9 Μετρήσεις - Μετρικές Μια ιδανική μέτρηση θα πρέπει να περιλαμβάνει τις δραστηριότητες:  Διατύπωση (καθορισμός μετρικών)  Συλλογή (συγκέντρωση δεδομένων)  Ανάλυση (υπολογισμός μετρικών)  Ερμηνεία (αξιολόγηση μετρικών)  Ανάδραση (συστάσεις για βελτίωση) :: Μετρικές Λογισμικού (3/5)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 10 Μετρήσεις - Μετρικές Αρχές Διατύπωσης Μετρικών Καθορισμός στόχων των μετρήσεων πριν τη συλλογή των δεδομένων Ακριβής ορισμός των μετρικών Χρήση μετρικών προσαρμοσμένων στα προϊόντα και τις διαδικασίες Αρχές Συλλογής και Ανάλυσης Μετρικών Αυτοματοποίηση στη συλλογή και ανάλυση των μετρικών (όπου είναι δυνατή) Χρήση αξιόπιστων στατιστικών τεχνικών για διερεύνηση εσωτερικών και εξωτερικών χαρακτηριστικών Καθορισμός συγκεκριμένων κανόνων ερμηνείας των μετρικών :: Μετρικές Λογισμικού (4/5)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 11 Μετρήσεις - Μετρικές Οι μετρικές διακρίνονται σε:  μετρικές προϊόντος (product metrics)  μετρικές διαδικασίας (process metrics)  μετρικές έργου (project metrics) Οι μετρικές προϊόντος χωρίζονται στις: Εσωτερικές: π.χ. αριθμός γραμμών (LOC), χρόνος εκτέλεσης, λάθη του κώδικα Εξωτερικές: π.χ. λειτουργικότητα (functionality), ποιότητα (quality), πολυπλοκότητα (complexity), αποτελεσματικότητα (efficiency), αξιοπιστία (reliability), συντηρησιμότητα (maintainability). Μετρικές διαδικασίας: μετρούν τη διαδικασία κατασκευής ενός προϊόντος, για παράδειγμα το σχεδιασμό, τη συγγραφή κώδικα, τους απαιτούμενους πόρους. Μετρικές έργου: χρησιμοποιούνται για τον καθορισμό στρατηγικής, σχετίζονται με την τακτική εκτέλεσης του έργου και καθορίζουν τη ροή του και τις τεχνικές που θα ακολουθηθούν. :: Μετρικές Λογισμικού (5/5)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 12 Μετρήσεις - Μετρικές Βασικές κατηγορίες αντικειμενοστρεφών μετρικών:  Πολυπλοκότητας  Κληρονομικότητας  Μεγέθους  Σύζευξης  Συνοχής Οι Chidamber & Kemerer (1991) πρότειναν την πρώτη σουίτα αντικειμενοστρεφών μετρικών. Στη συνέχεια προέκυψαν αρκετές παραλλαγές. :: Αντικειμενοστρεφεις Μετρικές

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 13 Μετρήσεις - Μετρικές  Το πλήθος και η πολυπλοκότητα των μεθόδων μιας κλάσης, είναι ενδεικτικά του πόσος χρόνος και προσπάθεια χρειάζεται για την ανάπτυξη και την συντήρηση της.  Όταν το πλήθος των μεθόδων μιας κλάσης είναι μεγάλο, τότε είναι μεγάλη και η εξάρτηση των υποκλάσεων της από αυτήν.  Μεγάλο πλήθος μεθόδων σημαίνει μειωμένη επαναχρησιμοποίηση. Ωστόσο υπάρχουν εφαρμογές που απαιτούν μεγάλο πλήθος μεθόδων. :: Πολυπλοκότητα (1/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 14 Μετρήσεις - Μετρικές Τρεις μετρικές πολυπλοκότητας:  Cyclomatic Complexity (CC), κυκλωματική πολυπλοκότητα (πολυπλοκότητα μεθόδου)  Weighted Method per Class 1 (WMPC1), πολυπλοκότητα κλάσης  Weighted Method per Class 2 (WMPC2), πολυπλοκότητα κλάσης :: Πολυπλοκότητα (2/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 15 Cyclomatic Complexity Η ‘Κυκλωματική Πολυπλοκότητα’ προτάθηκε από τον McCabe το Μετρά τον αριθμό των πιθανών μονοπατιών μέσα στον αλγόριθμο μιας μονάδας λογισμικού (π.χ. μεθόδου), ελέγχοντας τις διακριτές περιοχές του γράφου ροής (flow graph), δηλαδή τον αριθμό των if, switch, for, while (και do..while) εντολών στο σώμα της μεθόδου. Ο τύπος υπολογισμού: Cyclomatic Complexity : CC = E - N + 2P (δεν θα πρέπει να ξεπερνά το 10) όπου : E, είναι ο αριθμός των ακμών γράφου N, είναι ο αριθμός των κόμβων γράφου P, είναι ο αριθμός των συνδεδεμένων τμημάτων ή συνεκτικών συνιστωσών. :: Κυκλωματική Πολυπλοκότητα (1/6)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 16 Cyclomatic Complexity Ένας πρακτικός οδηγός μέτρησης χωρίς τους γράφους: Βήματα: Κατηγορία Προσθήκη μονάδας για καθένα από: Μεθόδους Κάθε return (όχι τελευταία εντολή της μεθόδου) Επιλογέςif, else, case, default Επαναλήψειςfor, while, do-while, break, και continue Τελεστές&&, ||, ?, and : Εξαιρέσειςcatch, finally, throw, ή throws clause :: Κυκλωματική Πολυπλοκότητα (2/6)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 17 Cyclomatic Complexity CC = 2 public class Hello { public static void main(String[] args) { if(args.length == 0) {System.out.println("Hello, World!"); } else { System.out.println("Hello, " + args[0] + "!"); } } } CC = 3 public class Hello { public static void main(String[] args) { if(args.length == 0) {System.out.println("Hello, World!"); } else if(args.length == 1){ System.out.println("Hello, " + args[0] + "!"); } else { System.out.println("Aargh, too many people to say hello to!"); } } } :: Κυκλωματική Πολυπλοκότητα (3/6)

Οι τέσσερις περιπτώσεις οι οποίες συναντιόνται συχνότερα στο γράφο ροής είναι: Ακολουθιακές Εντολές Επανάληψη Επανάληψη εντολές Διακλάδωσης με έξοδο με έξοδο (if -else ) στην αρχή στο τέλος (while) (do..while) Οι τέσσερις περιπτώσεις οι οποίες συναντιόνται συχνότερα στο γράφο ροής είναι: Ακολουθιακές Εντολές Επανάληψη Επανάληψη εντολές Διακλάδωσης με έξοδο με έξοδο (if -else ) στην αρχή στο τέλος (while) (do..while) Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 18 Cyclomatic Complexity :: Κυκλωματική Πολυπλοκότητα (4/6)

Δύο ξεχωριστές απεικονίσεις if-else : Αριστερ ή απεικόνιση : H συνθήκη ικανοποιείται (επίσκεψη στον κόμβο 3). Δεξιά απεικόνιση: H συνθήκη δεν ικανοποιείται (επίσκεψη στον κόμβο 4). Δύο ξεχωριστές απεικονίσεις if-else : Αριστερ ή απεικόνιση : H συνθήκη ικανοποιείται (επίσκεψη στον κόμβο 3). Δεξιά απεικόνιση: H συνθήκη δεν ικανοποιείται (επίσκεψη στον κόμβο 4). Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 19 Cyclomatic Complexity :: Κυκλωματική Πολυπλοκότητα (5/6) Η CC = 2 και στις δύο περιπτώσεις

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 20 Cyclomatic Complexity :: Κυκλωματική Πολυπλοκότητα (6/6) Amethod() { if (x = = a) do { x++; y = y+a; } while(x< = b); else { x = a; y = 2*a+4*b; } while (y! = a) { y++; x+ = a; } z = x+y*y; } Αριθµός ακµών = 9, Αριθµός κόµβων = 7 Συνεκτικές συνιστώσες P = 1. Κυκλωµατική πολυπλοκότητα = 9-7+2=4

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 21 Weighted Methods per Class (WMC) :: Σταθμισμένες Μέθοδοι ανά Κλάση (1/3) Η WMC υπολογίζεται ως το άθροισμα των μετρικών της πολυπλοκότητας κάθε μεθόδου για όλες τις μεθόδους [Chidamber 94]. Υπολογίζεται ως εξής: n WMC = Σ c i i = 1 Όπου: n, ο αριθμός των μεθόδων ανά κλάση και ci, η πολυπλοκότητα κάθε μεθόδου Υπάρχουν δυο υποκατηγορίες σε αυτήν τη μετρική: WMPC1 - Weighted Methods Per Class 1 WMPC2 - Weighted Methods Per Class 2

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 22 WMPC1 - Weighted Methods Per Class 1 :: Σταθμισμένες Μέθοδοι ανά Κλάση - 1 (2/3)  Μετρά το ποσό της πολυπλοκότητας όλων των μεθόδων σε μια κλάση, όπου κάθε μέθοδος σταθμίζεται από την κυκλωματική πολυπλοκότητά της.  Η πολυπλοκότητα των μεθόδων μετριέται με χρήση της Κυκλωματικής Πολυπλοκότητας (CC).  WMPC1 μιας κλάσης ορίζεται ο μέσος όρος ή το άθροισμα των CC όλων των μεθόδων της.  Στη διαδικασία της μέτρησης δεν συμπεριλαμβάνονται μέθοδοι που κληρονομούνται από υπερκλάσεις.  Η τιμή της μετρικής για τις μεθόδους δεν πρέπει να υπερβαίνει το 10 ενώ για τις κλάσεις το 30. Για να μειωθούν οι τιμές πρέπει να σπάμε τις μεθόδους και τις κλάσεις.

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 23 WMPC1 - Weighted Methods Per Class 2 :: Σταθμισμένες Μέθοδοι ανά Κλάση - 2 (3/3)  Η μετρική αυτή βασίζεται στην υπόθεση ότι μια κλάση με περισσότερες μεθόδους από μία άλλη είναι πιο σύνθετη.  Επιπλέον, θεωρεί ότι μια μέθοδος με περισσότερες παραμέτρους από μια άλλη είναι και πιο σύνθετη.  Η μετρική αθροίζει τις μεθόδους και τις παραμέτρους των μεθόδων μιας κλάσης. Αποφεύγονται οι κλάσεις με τιμή μετρικής άνω του 100.  Στη διαδικασία δεν περιλαμβάνονται μέθοδοι που κληρονομούνται από υπερκλάσεις.

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 24 Μετρικές Κληρονομικότητας Δύο μετρικές κληρονομικότητας:  Depth of Inheritance Tree (DIT)  Number of Child Classes (NOCC)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 25 Depth of Inheritance Tree (DIT)  Η κληρονομικότητα είναι σημαντική έννοια και πρέπει να την χειριζόμαστε προσεκτικά.  Όσο βαθύτερα είναι μια κλάση στο κληρονομικό δένδρο, τόσο δυσκολότερα την αναπτύσσουμε, ελέγχουμε και συντηρούμε. Επομένως, πρέπει να γνωρίζουμε και να υπολογίζουμε αυτό το βάθος.  Η μετρική αυτή παρέχει την θέση της κλάσης στην ιεραρχία. Η Java δεν υποστηρίζει την πολλαπλή κληρονομικότητα. Στο παράδειγμα: DIT (C0) = 0 DIT (C0’) = 0 DIT (C1) = 1 DIT (C2) = 2 DIT (C3) = 3 DIT (C4) = 4

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 26 Number of Child Classes (NOCC) - 1/2  Μετράει τον αριθμό των κλάσεων που κληρονομούν την υπό εξέταση κλάση.  Μη μηδενική τιμή της μετρικής συνιστά ότι η συγκεκριμένη κλάση επαναχρησιμοποιείται.  Παρόλα αυτά, η αφαίρεση της κλάσης μπορεί να είναι φτωχή αν υπάρχουν πάρα πολλές υποκλάσεις - παιδιά.  Επιπλέον, υψηλές τιμές της μετρικής δείχνουν ότι θα χρειαστεί αυξημένος αριθμός ελέγχων για κάθε κλάση – παιδί

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 27 Number of Child Classes (NOCC) - 2/2 Στο παράδειγμα: NOCC (interface) = 7 NOCC (EventSupport) = 6

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 28 Μετρικές μεγέθους κώδικα Δύο μετρικές μεγέθους: Lines of Code Lines of Code (LOC): Μετρά τον αριθμό των γραμμών κώδικα. Σχόλια και κενές γραμμές δεν υπολογίζονται. Number of Classes Number of Classes (NOC): Μετρά τον αριθμό των κλάσεων του συστήματος. Υπολογίζεται μόνο σε επίπεδο πακέτου ή συστήματος.

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 29 Coupling  Αυξημένα επίπεδα σύζευξης: είναι ανεπιθύμητα σε συστήματα με πολλές υπό-μονάδες. Τροχοπέδη στην επαναχρησιμοποίηση.  Όσο πιο ανεξάρτητο είναι ένα αντικείμενο τόσο πιο εύκολα επανα- χρησιμοποιείται.  Όσο πιο αυξημένη είναι η σύζευξη μεταξύ των αντικειμένων ενός συστήματος, τόσο πιο ευαίσθητο είναι σε αλλαγές σε διάφορα μέρη του σχεδίου. Δυσκολότερη συντήρηση. :: Μετρικές Σύζευξης (1/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 30 Coupling Τέσσερις μετρικές σύζευξης: Coupling Factor (CF)  Coupling Factor (CF) - Παράγοντας Σύζευξης: σύζευξη σε επίπεδο συστήματος. Coupling Between Objects (CBO)  Coupling Between Objects (CBO) - Σύζευξη μεταξύ Αντικειμένων Κλάσεων: σύζευξη σε επίπεδο κλάσης. Fan Out (FO) -  Fan Out (FO) - σύζευξη σε επίπεδο κλάσης. Fan In (FI) -  Fan In (FI) - σύζευξη σε επίπεδο κλάσης. :: Μετρικές Σύζευξης (2/2)

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 31 Coupling Factor (CF)  Υπολογίζεται μόνο σε επίπεδο συστήματος.  Υπολογίζεται ως κλάσμα.  Ο αριθμητής αντιπροσωπεύει τον αριθμό μη-κληρονομικών συζεύξεων.  Ο παρονομαστής είναι ο μέγιστος πιθανός αριθμός συζεύξεων σε ένα σύστημα. :: Παράγοντας Σύζευξης

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 32 Coupling Between Objects (CBO)  Μετράει τον αριθμό των κλάσεων με τις οποίες συνδέεται μια κλάση.  Με τον όρο η κλάση Α συνδέεται με την κλάση Β εννοούμε: Δήλωση μιας ιδιότητας τύπου Β, στην κλάση Α επιστροφή τύπου Β, σε μια μέθοδο της κλάσης Α. Η κλάση Β κληρονομεί την Α. Διαφορά με CF: Συμπεριφορά ως προς κληρονομικότητα: Στην CF αμφίδρομες κλήσεις μετράνε ως 2, ενώ στην CBO ως 1. :: Σύζευξη μεταξύ Αντικειμένων Κλάσεων

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 33 Fan Out – Fan In  Κάθε συσχέτιση για τον υπολογισμό της CBO μπορεί να θεωρηθεί είτε ότι “φεύγει” σε μία κλάση είτε ότι “έρχεται” από μια κλάση.  Ο αριθμός των ακμών που φεύγουν από μια κλάση ονομάζεται Fan-Out (outputs). Υποδηλώνει τον αριθμό των συναρτήσεων που καλεί η εξεταζόμενη συνάρτηση (δεν πρέπει η τιμή της μετρικής να είναι άνω του 15).  Ο αριθμός των ακμών που καταλήγουν σε μια κλάση ονομάζεται Fan-In (inputs). Υποδηλώνει τον αριθμό των συναρτήσεων που καλούν την εξεταζόμενη συνάρτηση.  Μεγάλο Fan-Out = > Η κλάση δεν είναι αυτάρκης  Μεγάλο Fan-In => Η κλάση παρέχει μεγάλη λειτουργικότητα FI=2, FO=3

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 34 Lack Of Cohesion Of Methods (LOCOM)  Σύμφωνα με την μετρική, κάθε μέθοδος σε μια κλάση θεωρείται ότι προσπελαύνει ένα ή περισσότερα κοινά μέλη δεδομένων. Δύο μέθοδοι είναι συνεκτικές εάν τα μέλη δεδομένων που χρησιμοποιούν έχουν κοινά στοιχεία.  Συνεκτικότητα (cohesion) αναφέρεται στο βαθμό εσωτερικής λειτουργικής συνάφειας μεταξύ των τμημάτων ενός συστατικού.  Η συνοχή των μεθόδων σε μία κλάση είναι επιθυμητή από την στιγμή που προωθεί την ενθυλάκωση.  Η έλλειψη συνοχής υποδηλώνει ότι η κλάση πιθανώς να πρέπει να διασπαστεί σε δύο ή περισσότερες κλάσεις.  Η έλλειψη συνοχής αυξάνει την πολυπλοκότητα και την πιθανότητα εμφάνισης λαθών κατά την ανάπτυξη. Τρείς Μετρικές Συνοχής: Lack Of Cohesion of Methods 1 (LOCOM1) Lack Of Cohesion of Methods 2 (LOCOM2) Lack Of Cohesion of Methods 3 (LOCOM3) :: Έλλειψη συνεκτικότητας μεταξύ των Μεθόδων

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 35 Lack of Cohesion of Methods 1 (1/2)  Παίρνουμε κάθε ζευγάρι μεθόδων σε μια κλάση. Αν μοιράζονται ασύνδετα σύνολα μεταβλητών αυξάνουμε το P κατά 1 (καμία κοινή μεταβλητή). Αν μοιράζονται τουλάχιστον μια μεταβλητή, τότε αυξάνουμε το Q κατά 1. LCOM1 = P – Q (αν P > Q), διαφορετικά LCOM1 = 0  LCOM1 = 0, σημαίνει συνεκτική κλάση.  LCOM1 > 0, σημαίνει ότι η κλάση πρέπει να ‘σπάσει’ σε δύο ή περισσότερες κλάσεις, καθότι οι μεταβλητές τους ανήκουν σε διαφορετικά σύνολα. Η γενική μορφή της μετρικής: :: Έλλειψη συνεκτικότητας μεταξύ των Μεθόδων - 1

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 36 Lack of Cohesion of Methods 1 (2/2) Κριτική για την LCOM1:  Δίνει τιμή 0 για πολύ διαφορετικές κλάσεις.  O Gupta ισχυρίζεται ότι η LCOM1 δεν είναι η κατάλληλη μετρική για να υπολογίσει την συνεκτικότητα μιας κλάσης και αυτό γιατί βασίζεται στην αλληλεπίδραση των δεδομένων της μεθόδου (μη σωστός τρόπος για τον ορισμό της συνεκτικότητας). Πολύ διαφορετικές κλάσεις μπορεί να έχουν ίδιο LCOM1.  Για κλάσεις που ορίζουν και προσπελούν τα εσωτερικά τους δεδομένα μέσω sets και gets και όχι μέσω read/write εντολές μπορεί να δείξουν υψηλό LCOM1.  Για να λυθούν αυτά τα πρόβλημα προτάθηκαν η LCOM2 και LCOM3. :: Έλλειψη συνεκτικότητας μεταξύ των Μεθόδων - 1

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 37 Lack of Cohesion of Methods 2 H LCOM2 ισούται με το ποσοστό των μεθόδων που δεν προσπελούν κάποιο χαρακτηριστικό της κλάσης σε σχέση με όλα τα χαρακτηριστικά της κλάσης (εξάγοντας το μέσο όρο όλων των χαρακτηριστικών στην κλάση). Ορισμός της LCOM2: LCOM2 = 1 - sum(mA)/(m*a) Όπου: mαρ. των μεθόδων της κλάσης aαρ. των χαρακτ./μεταβλητών της κλάσης mAαρ. των μεθόδων που έχουν πρόσβαση σε ένα χαρακτ./μεταβλητή sum(mA)άθροισμα όλων των mA στο σύνολο των χαρακτ./μεταβλητών της κλάσης  Αν ο αρ. των μεθόδων ή χαρακτ./μεταβλητών έχουν τιμή 0, τότε η LCOM2 ορίζεται σαν απροσδιόριστη και λαμβάνει τιμή 0. :: Έλλειψη συνεκτικότητας μεταξύ των Μεθόδων - 2

Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ 38 Lack of Cohesion of Methods 3 H LCOM3 (Henderson-Sellers το 1995). Οι τιμές μεταξύ 0 και 2. Από 1-2 θεωρούνται προβληματικές. Όταν η LCOM3=0, τότε κάθε μέθοδος έχει πρόσβαση σε όλες τις μεταβλητές. Ορισμός της LCOM3: LCOM3 = (m - sum(mA)/a) / (m-1) Όπου: mαρ. των μεθόδων της κλάσης aαρ. των χαρακτ./μεταβλητών της κλάσης mAαρ. των μεθόδων που έχουν πρόσβαση σε ένα χαρακτ./μεταβλητή sum(mA)άθροισμα όλων των mA στο σύνολο των χαρακτ./μεταβλητών της κλάσης :: Έλλειψη συνεκτικότητας μεταξύ των Μεθόδων - 3