1 / 11

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

Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού. Παναγιώτης Σφέτσος , PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr. Cyclomatic Complexity ( CC). :: Κυκλωματική Πολυπλοκότητα (1/ 2 ). if ( V == 0 && V1 == 0 || C() )

hop
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr

  2. Cyclomatic Complexity (CC) ::Κυκλωματική Πολυπλοκότητα (1/2) if ( V == 0 && V1 == 0 || C() ) {…. ……. } entoli; ... entoli; CC = 3, (3 – συνθήκες) entoli; ……… switch( V) case 1: .... case 2: .... default: .... ... entoli; entoli; ... switch( someVariable ) case 1: .... case 2: .... case 3: .... case 4: .... ... entoli; CC = 4, (4 – cases) CC = 2, (2 – cases) Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  3. Cyclomatic Complexity (CC) ::Κυκλωματική Πολυπλοκότητα (2/3) public void one(){ if(true) { while(false) { two(); } } else { for(int i=0;i<10;i++) { two(); } } } Στη μέθοδο υπάρχει μια if – εντολή που περιλαμβάνει μια while, ενώ το τμήμα elseπεριλαμβάνει μια for – εντολή. Ποια θα είναι η CC; Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  4. Cyclomatic Complexity (CC) ::Κυκλωματική Πολυπλοκότητα (3/3) CC = 8 – 6 + 2(1) = 4 CC = V(G) = e – n +2p Στη μέθοδο υπάρχουν 4-διακριτά μονοπάτια . public void one(){ if(true) { while(false) {two();} } else { for(int i=0;i<10;i++) {two();} }} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  5. Weighted Methods per Class (WMC) ::Σταθμισμένες Μέθοδοι ανά Κλάση (1/2) • Η WMPC1 αθροίζει τις τιμές της CC σε όλες τις μεθόδους της κλάσης. • Όπου: • n, ο αριθμός των μεθόδων ανά κλάση και • ci,η πολυπλοκότητα κάθε μεθόδου • Η WMPC2 αθροίζει το πλήθος των μεθόδων και το πλήθος των παραμέτρων. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  6. Weighted Methods per Class (WMC) ::Σταθμισμένες Μέθοδοι ανά Κλάση (2/2) cc 3 2 1 6 mc 1 1 2 4 public class WMPC { public void one(){ if(true) { two(); } else {} if(true && !false){} } public void two(){ if(true){} } public void three(int i){} } <= 1 - μέθοδος <= 1 - μέθοδος <= 1 – μέθοδος και 1-παράμετρος Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  7. Lack of Cohesion of Methods (1/5) Παράδειγμα - 1: Mία κλάση έχει τις μεθόδους m1, m2, m3, και m4 και τα πεδία f1, f2, f3, και f4. Τα πεδία που χρησιμοποιεί κάθε μέθοδος είναι: m1 f1, f2m2 f3m3 f2, f4m4 f1 Υπολογίζουμε του όρους P και Q. Παίρνουμε όλα τα ζεύγη των μεθόδων και εξετάζουμε εάν έχουν κοινά πεδία. Το P = 4, επειδή τα ζεύγη m1-m2, m2-m3, m2-m4, m3-m4 δεν έχουν κάποιο κοινό πεδίο. Το Q = 2, επειδή τα ζεύγη m1-m3 και m1-m4 χρησιμοποιούν κοινά πεδία.Άρα η LCOM1 = 2. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  8. Lack of Cohesion of Methods (2/5) Παράδειγμα - 2: Έστω μία κλάση με τις μεθόδους: M1, M2, M3 και τα πεδία που περιέχουν αντίστοιχα είναι: I1 = {a, b, c, d, e} I2 = {a, b, e} I3 = {x, y, z} τότε: P = {(I1, I3), (I2, I3)} Q = {(I1, I2)} Έτσι η LCOM = 1 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  9. Lack of Cohesion of Methods (3/5) Παράδειγμα υπολογισμού LCOM: Επτά ζευγάρια: (m1, m3), (m1, m4), (m2, m4), (m5, m1), (m5, m2), (m5, m3), (m5, m4), δεν έχουν κοινές μεταβλητές. Άρα LCOM = 10 – 3 = 7. Fig. mi- μέθοδοι που έχουν πρόσβαση σε ajμεταβλητές Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  10. Lack of Cohesion of Methods (4/5) Παράδειγμα: public PersonDetails{Το LCOM; private String firstname; private String surname; private String street; private String city; public PersonDetails() {}//I1 = { } public setName(String f, String s){//I2 = { firstname, surname } firstname= f; surname = s;} public setAddress(String st, String c){// I3 = { street, city } street = st; city = c;} public void printAddress() {//I4 = { street, city } System.out.println( street); System.out.println( city);} public void printName() {// I5 = { firstname, surname } System.out.println( firstname + " " + surname);}} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

  11. Lack of Cohesion of Methods (5/5) Pair (mi, mj) Ii ∩ Ij PersonDetails, setName 0 PersonDetails, setAddress 0 PersonDetails, printAddress 0 PersonDetails, printName 0 setName, setAddress 0 setName, printAddress 0 setName, printName {_firstname, _surname} setAddress, printAddress {_street, _city} setAddress, printName 0 printAddress, printName 0 LCOM8 Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

More Related