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

Σχετικά έγγραφα
Ποιότητα Λογισμικού. Μετρικές Αντικειμενοστραφούς Σχεδίασης

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Μετρικές Αντικειμενοστραφούς Σχεδίασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Ποιότητα Λογισμικού. Μετρικές Αντικειμενοστραφούς Σχεδίασης

Comparative Study of API vs. Open-Source Software ZAPROUDI A. PASCHALIA. Supervisor: CHATZHGEORGIOU ALEXANDROS

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. «Ανάπτυξη εργαλείου διαχείρισης έργων λογισμικού» Αρ. Μητρώου: 06/3059

ΠοιότηταΛογισµικού. Μετρικές Αντικειµενοστραφούς Σχεδίασης

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

Εμπειρική Μελέτη της Εξέλιξης της Ποιότητας του Κώδικα Ανοιχτού Λογισμικού

ΕΡΓΟ: Συγκριτική Μελέτη Λογισμικού Βιβλιοθηκών, Λογισμικού Εφαρμογών Ανοικτού Κώδικα και Βιομηχανικού Λογισμικού MIS:

Διαγράμματα Κλάσεων στη Σχεδίαση

Η ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΞΕΙΔΙΚΕΥΣΗΣ. Υ7ΐοβάλλεται στην

Διερεύνηση της Συσχέτισης Μεταξύ Δεικτών Συντηρησιμότητας και Μετρικών Λογισμικού σε Έργα Ανοικτού Κώδικα

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

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

Διαγράμματα UML στην Ανάλυση. Μέρος Β Διαγράμματα Κλάσεων Διαγράμματα Αντικειμένων

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Σύνθεση και Κληρονομικότητα

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Φοιτητόσ : Κουκϊρασ Παραςκευϊσ ΑΜ : 06/3059 Ίδρυμα/Τμόμα : Αλεξϊνδρειο Τεχνολογικό Εκπαιδευτικό Ιδρυμα/Πληροφορικόσ

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

Μπιτσάκη Αντωνία-Χρυσάνθη Ταουσάκος Θανάσης

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

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

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

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

Σύνθεση και Κληρονομικότητα

(Διαφάνειες Νίκου Βιδάκη)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ Τάξη Ηµερήσιου Γενικού Λυκείου

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 13: Παραλλαγές Μηχανών Turing και Περιγραφή Αλγορίθμων

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

Θέματα Μεταγλωττιστών

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

Αντικειμενοστρεφής προγραμματισμός Object Oriented Programming (OOP) Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ ΕΙΔΙΚΕΥΣΗΣ (MSc) στα ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΠΛΩΜΑΤΙKH ΕΡΓΑΣΙΑ

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

Java Μέρος Ι Αντικειμενοστρεφής Προγραμματισμός - 7

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 7 ο Εργαστήριο. Διανύσματα-Πίνακες 2 ο Μέρος

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

! ΘΕΜΑ A Α2. ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΛΥΚΕΙΟΥ. Ονοµατεπώνυµο:

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Κλάσεις. Τροποποιητές, ιασυνδέσεις, Πακέτα. Τροποποιητές ελέγχου προσπέλασης µεταβλητών και µεθόδων

Μέθοδοι. Υποσυστήµατα και πακέτα. Μοντέλα αντικειµενοστραφούς σχεδίασης. Αντικειµενοστραφής Σχεδίαση. Στα πρώτα στάδια της ανάλυσης

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

Οντοκεντρικός Προγραμματισμός

ΚΕΦΑΛΑΙΟ Μηχανική Μάθηση

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA

Καλές επιτυχίες παιδιά στα υπόλοιπα μαθήματά σας και καλές γιορτές!!!!

Υπερπροσαρμογή (Overfitting) (1)

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

Wrapper Classes, Abstract Classes and Interfaces

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

ΕΝΔΕΙΚΤΙΚΕΣ ΑΣΚΗΣΕΙΣ 1,2

2.1 Αντικειµενοστρεφής προγραµµατισµός

Συστήματα Ανάκτησης Πληροφοριών ΗΥ-463

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Πληροφορική 2. Γλώσσες Προγραμματισμού

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

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 1: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (1ο Μέρος)

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

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Τυχαίοι αριθμοί struct Αρχεία Διαμορφώσεις Συναρτήσεις Χειρισμός σφαλμάτων ΠΕΜΠΤΗ ΔΙΑΛΕΞΗ

Κλάσεις και Αντικείµενα

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ ΕΙΔΙΚΕΥΣΗΣ (MSc) στα ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΠΛΩΜΑΤΙKH ΕΡΓΑΣΙΑ

Προγραμματισμό για ΗΜΥ

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

HY240 : Δομές Δεδομένων. Φροντιστήριο Προγραμματιστικής Εργασίας 2 ο και 3 ο Μέρος

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ ÈÅÌÅËÉÏ

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων

Γ. ίνεται το παρακάτω πρόγραµµα και υποπρογράµµατα: ΠΡΟΓΡΑΜΜΑ Κύριο ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Α, Β, Γ ΑΡΧΗ ΙΑΒΑΣΕ Α, Β, Γ ΚΑΛΕΣΕ ιαδ1(α, Β, Γ)

Τελικό τεστ - απαντήσεις

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

Προγραµµατιστικές τεχνικές

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

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

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

Αλγόριθµοι και Πολυπλοκότητα

Transcript:

Ανάπτυξη & Σχεδίαση Λογισµικού (ΗΥ420) ιάλεξη 9: Μετρικές Ποιότητας Λογισµικού

Μετρικές Προϊόντος: Γραµµές Κώδικα 2 Γραµµές κώδικα Απλό; Αποδοτικό; Καλά ορισµένο; ; Όχι! Καλύτερος ορισµός (π.χ. για C/C++): Ο αριθµός των ;

Κυκλωµατικός Αριθµός (McCabe, 1976) (1/4) 3 Ποσοτικοποιεί την πολυπλοκότητα Παραδοχή: Πολυπλοκότητα εξαρτάται απότη «ροή ελέγχου» του προγράµµατος Εφαρµόζεται πάνω στο διάγραµµα ροής C = e n + 2p C: Κυκλωµατικός αριθµός (πολυπλοκότητα) e: Αριθµός ακµών n: Αριθµός κόµβων στο γράφο p: Αριθµός ισχυρά συνδεδεµένων τµηµάτων του γράφου (κατά κανόνα 1) Καλός αριθµός: Έως 10!

Κυκλωµατικός Αριθµός (McCabe, 1976) (2/4) 4 Αριθµός κόµβων: 8 Αριθµός ακµών: 11 C = 11 8 + 2 = 5

Κυκλωµατικός Αριθµός (McCabe, 1976) (3/4) 5 Εναλλακτικά: Για επίπεδους γράφους, κυκλωµατικός αριθµός = αριθµός περιοχώνστις οποίες χωρίζει ο γράφος το επίπεδο Τάδε έφη Euler

Κυκλωµατικός Αριθµός (McCabe, 1976) (4/4) 6 Πρόβληµα: Χρονοβόρο να φτιαχτεί ο γράφος Χρονοβόρο να υπολογιστεί ο κυκλωµατικός αριθµός από το γράφο Λύση: ΜcCabe (και πάλι) Εφόσον υπάρχει τελικός κόµβος C = π + 1 π: Ο αριθµός των εντολών απόφασης στο πρόγραµµα

Η Επιστήµη Λογισµικού (Halstead, 1970s) 7 Πρόγραµµα: Σύνολο από tokens Έντελα Μεταβλητές, σταθερές η2: Αριθµός διαφορετικών εντέλων στο πρόγραµµα Τελεστές Όλα τα υπόλοιπα η1: Αριθµός διαφορετικών τελεστών στο πρόγραµµα Tokens που εµφανίζονται πάντα σε 2αδες, 3αδες κοκ µετρώνται σαν 1 ε µετράµε δηλώσεις, εντολές I/O, σχόλια η = η1 + η2 η: Αριθµός διαφορετικών tokens (µέτρο µεγέθουςπρογράµµατος)

Η Επιστήµη Λογισµικού. Παράδειγµα 8 Έντελα: Χ Υ Ζ 0 1 Σύνολο 5 Τελεστές: : = ; while/end-while > + - () Σύνολο 7

Η Επιστήµη Λογισµικού: υνατά (εφικτά) έντελα 9 η2*: O ελάχιστος δυνατόςαριθµός εντέλων για την υλοποίηση ενός δεδοµένου αλγορίθµου

Η Επιστήµη Λογισµικού: Μέγεθος Προγράµµατος 10 Ν: Μέγεθοςπρογράµµατος Ν1: Αριθµός τελεστών Ν2: Αριθµός εντέλων Ν = Ν1 + Ν2 Παράδειγµα: Τελεστές: = 3 ; 5 while-endwhile 1 > 1 + 1-1 () 1 Έντελα: Ζ 4 0 2 Χ 3 Υ 1 1 1 Ν = 13 + 11 = 24

Η Επιστήµη Λογισµικού: Εκτίµηση Μεγέθους Προγράµµατος 11 est N = η1 log2η1 + η2 log2η2 Παράδειγµα: η1 1 = 7 η2 = 5 est N = 7 log27 + 5 log25 = 24 + 11.6 = 31.26 Εµπειρική παρατήρηση: Aν σχετικό σφάλµα µεταξύ N και est N > 30%, η µέθοδος επιστήµης λογισµικού µη εφαρµόσιµη

Η Επιστήµη Λογισµικού: Όγκος Προγράµµατος V = N log2(η1 + η2) 12 Φυσική σηµασία; Ο αριθµός των bits που απαιτούνται για την κωδικοποίηση του προγράµµατος υνατός (εφικτός) όγκος προγράµµατος V* 2 τελεστές Όνοµα συνάρτησης Τελεστής οµαδοποίησης V* = (2 + η2*) log2(2 + η2*)

Η Επιστήµη Λογισµικού: Άλλες Μετρικές 13 L = V* / V Μετράει την «ποιότητα» της υλοποίησης σε σχέση µε την ελάχιστη δυνατή Μη χρησιµοποιούµενες µετρικές Προσπάθεια ανάπτυξης (Ε) Ε = V / L Μονάδα: emd (Elementary Mental Discriminations) Χρόνος ανάπτυξης (T) T = E / S S: Σταθερά Stroud, ίση µε 18 emd/sec

Ροή Πληροφορίας (Henry Kafura) Ποσοτικοποιεί την πολυπλοκότητα διασύνδεσης µεταξύ διαφορετικών µονάδων λογισµικού Ροή πληροφορίας ανάµεσα στις µονάδες ΗΚi = weighti * (fanouti * fanini) 2 HKi: Ροή πληροφορίας module i fanouti: Αριθµός εξόδων module i fanini: Αριθµός εισόδων module i weighti: Πολλαπλασιαστικός παράγοντας. Εξαρτάται από γραµµές κώδικα, πολυπλοκότητα module 14 HK = Σ i=1n HK i

Παραγωγικότητα 15 Γραµµές Κώδικα / Εργατοµέρα Προγραµµατιστή 60s: Ακόµα και 1 LOC/workday Τυπική τιµή: 2 20 LOC/workday Σε µικρά έργα µπορεί να είναι πολύ µεγαλύτερη

Chidamber - Kemerer Ζυγισµένος αριθµός µεθόδων ανά κλάση (weighted methods per class WMC) 16 WMC n: Αριθµός κλάσεων Μ i : Μέθοδοικλάσης i = n 1 i = 0 c i : Πολυπλοκότητακλάσης i (άγνωστοπώς υπολογίζεται ) Ένδειξη της πολυπλοκότητας του λογισµικού c i n M i

Chidamber - Kemerer 17 Βάθος δέντρου κληρονοµικότητας (Depth of Inheritance Tree DIT) Κληρονοµικότητα: Προσθέτει πολυπλοκότητα στο λογισµικό Μετρική: Μέγιστη απόστασηαπό ένα φύλλο (κλάση) ως τη ρίζα του δέντρου κληρονοµικότητας Αριθµός παιδιών (Number Of Children NOC) Ποσοτικοποιεί το πλάτος του δέντρου κληρονοµικότητας Αριθµός υποκλάσεων άµεσα υποκείµενων µιας συγκεκριµένης κλάσης στο δέντρο κληρονοµικότητας Υπολογίζεται για κάθε κλάση

Chidamber - Kemerer Συσχέτισηµεταξύ κλάσεων (Coupling Between Object classes CBO) Υπάρχει συσχέτιση εφόσον attributes / µέθοδοι µιας κλάσης χρησιµοποιούνται από µια άλλη Συµµετρική σχέση! Υπολογίζεται για κάθε κλάση Είναι ο αριθµός των κλάσεων µε τις οποίες η κλάση συσχετίζεται 18

Chidamber - Kemerer Απόκριση κλάσης (Response set For Class RFC) Σύνολο απόκρισηςκλάσης ( {RS} ): Το σύνολο των µεθόδων που µπορεί πιθανά να εκτελεστούν ως απόκριση σε ερέθισµα που θα ληφθεί από την κλάση Ένωση συνόλου µεθόδων στην κλάση και µεθόδων που καλούνται από αυτές Σε ένα επίπεδο µόνο RFC = RS Υπολογίζεται για κάθε κλάση 19

Chidamber - Kemerer Έλλειψη συνοχήςστις µεθόδους (Lack of Cohesion Of Methods LCOM) Ποσοτικοποιεί τη συνοχή (την έλλειψήτης) στις µεθόδους LCOM = max ( P - Q, 0) Ii: Σύνολο κοινόχρηστων attributes που χρησιµοποιούνται από τη µέθοδο i P: Το σύνολο των κενών τοµών ανά δύο των Ii Q: Το σύνολο των µη κενών τοµών ανά δύο των Ii 20

Chidamber - Kemerer 21 LCOM µε απλά ελληνικά ιµερής γράφος Αριστερό σύνολο κόµβων: µεταβλητές Έστω πλήθος m εξιό σύνολο κόµβων: µέθοδοι Έστω πλήθος n Ακµές: Χρήση µεταβλητής από µέθοδο (σύνολο Q) P = m*n - Q = m*n -ακµές LCOM = max( P - Q, 0) = max(m * n 2 * ακµές, 0)

Chidamber Kemerer: Παράδειγµα 22

Chidamber Kemerer: Παράδειγµα 23

Chidamber Kemerer: Παράδειγµα 24 WMC Κλάση Μέθοδοι point 3 rectangle 3 linklistnode 4 rectanglelist 3 WMC = ¼ *(3+3+4+3) = 3.25 µέθοδοι/κλάση

Chidamber Kemerer: Παράδειγµα 25 DIT: εν υπάρχει κληρονοµικότητα NOC: εν υπάρχει κληρονοµικότητα

Chidamber Kemerer: Παράδειγµα 26 Συσχέτιση µεταξύ κλάσεων (CBO) Κλάση Σχετιζόµενες CBO point rectangle 1 rectangle point, rectanglelist 2 linklistnode rectanglelist 1 rectanglelist rectangle, linklistnode2

Chidamber Kemerer: Παράδειγµα RFC Κλάση Σύνολο απόκρισης RFC point point, getx, gety 3 rectangle rectangle, point, length 6 getx, gety, area linklistnode linklistnode, getnext 4 getrectangle, setnext rectanglelist rectanglelist, addrectangle 9 rectangle, setnext, totalarea getrectangle, area, getnext, linklistnode 27

Chidamber Kemerer: Παράδειγµα 28 LCOM Κλάση LCOM point max ((6-4)-4, 0)=0 rectangle max((12-9)-9, 0)=0 linklistnode max((8-5)-5, 0)=0 rectanglelist max((3-3)-3, 0)=0

MOOD 29 Ορατότητα (visibility) TC: Αριθµός κλάσεων στο σύστηµα M d (C i ): Αριθµόςµεθόδωνστηνκλάση C i M m,i : Μέθοδος m κλάσης i Is_Visible(M m,i, C j ) = 1 αν i!= j καιη Μ m,i είναιδιαθέσιµη στη C j 0 διαφορετικά V(M m,i )= TC j= 1 Is Visible (M TC 1 m,i, j)

MOOD: Εµφώλευση 30 Βαθµός απόκρυψης µεθόδων (MHF) TC M d (C ) ( 1 i= 1 m= 1 MHF= TC i V(M Βαθµός απόκρυψης χαρακτηριστικών (AHF) AHF= TC i= 1 A d M (C (C ) d i ) ( 1 i= 1 m= 1 TC i= 1 i A (C d i m, i V(A ) m, i )) ))

MOOD: Παράδειγµα TC = 3 31 Method is_vis(a) is_vis(b) is_vis(c) V(M m,i ) A::x() 0 1 1 1 A::y() 0 1 1 1 B::w() 0 0 0 0 B::z() 1 0 1 1 C::v() 0 0 0 0 MHF = {[(1-1)+(1-1)]+[(1-0)+(1-1)]+(1-0)} / (2+2+1) = 2/5 = 0.4 Attribute A(M m,i ) A.a 0 0 0 0 B.b 0 0 0 0 B.bb 0 0 0 0 C.c 0 0 0 0 AHF = {(1-0)+[(1-0)+(1-0)]+(1-0)} / (1+2+1) = 4/4 = 1.0

MOOD: Κληρονοµικότητα Βαθµός κληρονοµικότητας µεθόδων (MIF) M d (C i ): Αριθµός µεθόδων που δηλώθηκαν στην κλάση i M i (C i ): Αριθµός µεθόδων που κληρονοµήθηκαν στην κλάση i M α (C i ) = M d (C i ) + Mi(C i ) MIF = TC i= 1 TC i= 1 M i (Ci ) M a (C i ) 32 Βαθµός κληρονοµικότητας χαρακτηριστικών (AIF) Αντίστοιχα AIF = TC i= 1 TC i= 1 A (C A i a (C i i ) )

MOOD: Παράδειγµα 33 ΚλάσηΜ d M i A d A i A x(), y() a B w(), z(), y() A::x() b, bb A.a C v() B::w(),z(),y() c B.bb A::x() MIF = (0 + 1 + 4) / [(0 + 1 + 4) + (2 + 3 + 1)] = 5/11 AIF = (0 + 1 + 1) / [(0 + 1 + 1) + (1 + 2 + 1)] = 2/6 = 1/3

MOOD: Βαθµός Συσχέτισης Υπολογίζει τη συσχέτισηµεταξύ κλάσεων (CF) Εξαιρείται η συσχέτιση λόγω κληρονοµικότητας is_client(c i, c j ) =1 αν η κλάση i έχει σχέση µε την j 0 διαφορετικά Σχέση: Κλήση µεθόδου κλάσης j, αναφορά στην κλάση j, προσπέλαση χαρακτηριστικού κλάσης j 34 TC TC i= 1 j= 1 is CF = 2 TC client (c i TC,c j )

MOOD: Παράδειγµα 35 Κλάση Β&Β calendar bedroom customer Transaction reservation payment expense Κλάσεις is_client calendar, bedroom, customer, transaction reservation reservation reservation CF = (4+1+1+1+0+0+0) / (8 2-8) = 7/56 = 1/8

MOOD: Βαθµός Πολυµορφισµού Μέτρο «δυνατότητας» πολυµορφισµού M o (C i ): Αριθµός overriding µεθόδων κλάσης i M n (C i ): Αριθµός νέων µεθόδων κλάσης i DC(C i ): Αριθµός απογόνων κλάσης i PF= TC i= 1 TC i= 1 n M (C ) i o (M (C )DC(C )) i i 36

MOOD: Παράδειγµα 37 Κλάση M n M o DC A x(), y() 2 B w(), z() y() 1 C v() 0 PF = (0 + 1 + 0) / (2*2 + 2*1 + 0*1) = 1/6