1 / 46

Σημερινή παρουσίαση (1/3)

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Κατασκευή Λογισμικού ( 2 /2) Μανόλης Γιακουμάκης αναπληρωτής καθηγητής ΟΠΑ. Σημερινή παρουσίαση (1/3). Έλεγχος συνένωσης Συνένωση big-bang Ανοδική συνένωση Καθοδική συνένωση Συνένωση σάντουιτς

Download Presentation

Σημερινή παρουσίαση (1/3)

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. ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥΚατασκευή Λογισμικού (2/2)Μανόλης Γιακουμάκηςαναπληρωτής καθηγητής ΟΠΑ ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  2. Σημερινή παρουσίαση (1/3) • Έλεγχος συνένωσης • Συνένωση big-bang • Ανοδική συνένωση • Καθοδική συνένωση • Συνένωση σάντουιτς • Συνένωση λειτουργικότητας • Συνένωση και οικοδόμηση ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  3. Σημερινή παρουσίαση (2/3) Διασφάλιση ποιότητας πέρα από τον έλεγχο Απόδειξη της ορθότητας των προγραμμάτων Τεχνικές ανασκοπήσεις Προγραμματισμός κατά ζεύγη Σχετικές επιδόσεις μεθόδων διασφάλισης ποιότητας Μετρικές Αυτόματες επιθεωρήσεις 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης 3

  4. Σημερινή παρουσίαση (3/3) Αναδόμηση Τι είναι η αναδόμηση Ένα παράδειγμα αναδόμησης Όρια αναδόμησης Ανάπτυξη καθοδηγούμενη από τον έλεγχο 2009 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης 4

  5. Έλεγχος συνένωσης Η συνένωση (integration) είναι η διαδικασία με την οποία οι διαφορετικές μονάδες λογισμικού συνδυάζονται, έτσι ώστε να προκύψει το σύστημα λογισμικού.

  6. Συνένωση big-bang

  7. Ανοδική συνένωση

  8. Καθοδική συνένωση

  9. ΤροποποιημένηΚαθοδική συνένωση

  10. Συνένωση σάντουιτς

  11. Συνένωση τροποποιημένουσάντουιτς

  12. Συνένωση λειτουργικότητας

  13. Συνένωση και οικοδόμηση • Η συνένωση των μονάδων λογισμικού σχετίζεται άμεσα και με την οικοδόμηση(build) του συστήματος. • Η οικοδόμηση του συστήματος είναι η μεταγλώττιση καιη συνένωση όλου του κώδικα, έτσι ώστε να προκύψει το λογισμικό ως σύστημα. • Η οικοδόμηση του λογισμικού, όταν αυτό αποτελείται από ένα αρχείο πηγαίουκώδικα και αναπτύσσεται από έναν και μόνο προγραμματιστή, δεν είναι ιδιαίτεραπροβληματική. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  14. Συνένωση και οικοδόμηση • Από τη στιγμή όμως που η ανάπτυξη του λογισμικού πραγματοποιείται από μία ομάδα και περιλαμβάνει δεκάδες, εκατοντάδες ή και χιλιάδεςαρχεία πηγαίου κώδικα, η οικοδόμηση του λογισμικού, προκειμένου να φθάσειστην εκτελέσιμη μορφή του, είναι αρκετά πολύπλοκη. Η οικοδόμηση του λογισμικού φέρνει και στην επιφάνεια και τα σφάλματα συνένωσης. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  15. Ημερήσια Οικοδόμηση • Η ημερήσια οικοδόμηση είναι μία στρατηγική, με την οποία το λογισμικό οικοδομείται καθημερινά. • Η οικοδόμηση συνοδεύεται από ένα γρήγορο έλεγχο (smoketest) ο οποίος, αν και δεν είναι εξαντλητικός, θεωρείται ως επαρκής για να διαπιστωθεί η υγεία της οικοδόμησης. Εάν η οικοδόμηση του συστήματος αποτύχει,τότε η ανάκαμψη σε σωστή οικοδόμηση θεωρείται για την ομάδα ανάπτυξης ωςπρώτη προτεραιότητα. • Επειδή η ημερήσια οικοδόμηση γίνεται καθημερινά, είναιαπαραίτητη η αυτοματοποίησή της. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  16. Ημερήσια Οικοδόμηση • Η ημερήσια οικοδόμηση παρέχει πολλά πλεονεκτήματα, όπως: • • Μείωση κινδύνων. • • Διατηρεί την υψηλή ποιότητα του λογισμικού. • • Η ημερήσια οικοδόμηση γίνεται καθημερινά άρα και ο γρήγορος έλεγχος θαπρέπει να εξασκείται καθημερινά. • • Η ημερήσια οικοδόμηση παρέχει συνεχή πληροφόρηση για την κατάστασητου έργου. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  17. Συνεχής συνένωση • Επειδή ακριβώς η συνένωση και η οικοδόμηση που τη συνοδεύει είναι μία επίπονηδιαδικασία, πολλοί προτείνουν την ακόμα πιο συχνή συνένωση και οικοδόμηση τουλογισμικού. • Η συνεχής συνένωση (continuous integration) [Duvall 07] μας προτείνεικαταρχήν ότι ένας προγραμματιστής θα πρέπει να υποβάλλει τον κώδικα (check-in)πολλές φορές την ημέρα. Αντιστοίχως το λογισμικό θα πρέπει να οικοδομείται επίσηςπολλές φορές την ημέρα. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  18. Συνεχής συνένωση • Η βασική ιδέα της συνεχούς συνένωσης είναι απόρροιαμίας εκ των βασικότερων αρχών της τεχνολογίας λογισμικού, ότι όσο νωρίτεραδιαπιστωθεί ένα σφάλμα, τόσο λιγότερο κοστίζει η διόρθωσή του. Είναι προφανέςότι στη συνεχή συνένωση οι ανάγκες αυτοματοποίησης είναι πιο επιτακτικές. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  19. Συνεχής συνένωση

  20. Απόδειξη της ορθότητας των προγραμμάτων • Θέλουμε κατά κάποιο τρόπο νακαταδείξουμε πως το πρόγραμμα είναι σωστό. • Ένας τρόπος για την εξέταση της ορθότητας του προγράμματος είναι να δούμετο πρόγραμμα ως κατάσταση λογικής ροής. • Αν μπορούμε να ξαναγράψουμε τοπρόγραμμα με όρους τυπικού λογικού συστήματος (όπως μια σειρά καταστάσεωνκαι πράξεων πάνω σε δεδομένα), τότε μπορούμε να ελέγξουμε την ορθότητααυτής της νέας διατύπωσης. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  21. Απόδειξη της ορθότητας των προγραμμάτων

  22. Μετρικές • Μετρική (metric) είναι η ποσοτικοποιημένη μέτρηση του βαθμού με τον οποίο ένασύστημα, μία συνιστώσα ή διαδικασία κατέχει κάποιο συγκεκριμένο χαρακτηριστικό[IEEE 90]. Με άλλα λόγια η μετρική μάς προσφέρει μία ποσοτικοποίηση κάποιουχαρακτηριστικού του λογισμικού. • Έχουμε για παράδειγμα το χαρακτηριστικό τηςπολυπλοκότητας του λογισμικού. • Θα πρέπει να ορίσουμε μία μετρική (ή μετρικές)με την οποία να μπορούμε να ποσοτικοποιήσουμε αυτό το χαρακτηριστικό. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  23. Μετρικές • Μία κατηγοριοποίηση των μετρικών για την ανάπτυξη λογισμικού είναι : • • Μετρικές του προϊόντος (product metrics). Είναι μετρικές που σχετίζονται μετο προϊόν που αναπτύσσεται. • • Μετρικές του έργου (project metrics). Είναι μετρικές που αφορούν το συγκεκριμένο έργο ανάπτυξης. • • Μετρικές της διαδικασίας (process metrics). Μετρικές που αφορούν την ίδιατη διαδικασία ανάπτυξης λογισμικού και αφορούν πολλά έργα ανάπτυξης στηνπάροδο του χρόνου. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  24. Μέγεθος • Η απλούστερη μετρικήείναι ο αριθμός των γραμμών κώδικα (Lines of Code ή LOC) ή χιλιάδων γραμμώνκώδικα (KLOC). • Η μέτρηση των γραμμών κώδικα (χωρίς τα σχόλια και κενές γραμμές) γίνεται σε επίπεδο μονάδας (μεθόδου ή κλάσης) ή ακόμα και στο σύνολο τουλογισμικού. Σε επίπεδο μεθόδου είναι μία ένδειξη για την πολυπλοκότητα και τηνκατανοησιμότητα της μεθόδου. Σε επίπεδο του συνόλου του λογισμικού είναι ένακριτήριο για να κατατάξουμε την πολυπλοκότητα και το μέγεθος του λογισμικούπου αναπτύσσουμε. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  25. Μέγεθος • Αν και οι γραμμές κώδικα δεν μετρούν την πολυπλοκότητα τουλογισμικού, είναι προφανές ότι σχετίζονται με αυτή. Όσο αυξάνονται οι γραμμέςτου κώδικα, τόσο αυξάνει και η πολυπλοκότητα του λογισμικού. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  26. Πολυπλοκότητα • Μία παλαιά μετρική που έχει αποδείξει την αξία της στο πέρασμα του χρόνουείναι η κυκλωματική πολυπλοκότητα (cyclomatic complexity – CC) [McCabe 76]. • Βασικό κριτήριο για την εκτίμηση της πολυπλοκότητας μίας μονάδας λογισμικού(π.χ. μίας μεθόδου) είναι η διακλάδωση στη ροή ελέγχου. Προτάσεις if, switch,for και while διακλαδώνουν τη ροή ελέγχου. Το αποτέλεσμα είναι η αύξησητης πολυπλοκότητας του λογισμικού. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  27. Πολυπλοκότητα • Η κυκλωματική πολυπλοκότητα μετρά τον αριθμό των διαφορετικών μονοπατιώνστη ροή μίας μονάδας. Περισσότερα μονοπάτια σημαίνει και μεγαλύτερη πολυπλοκότητα. Ο τύπος υπολογισμού της κυκλωματικής πολυπλοκότητας είναι:CC = P + 1Όπου P ο αριθμός των Boolean αποφάσεων σε μονάδα. Μία σειριακή εκτέλεσηεντολών μας δίνει CC=1 και κάθε εντολή ροής ελέγχου προσθέτει κατά ένα. • Ένας τρόπος υπολογισμού για κώδικα σε Java είναι να ξεκινήσουμε από ένα καινα προσθέτουμε κάθε φορά που συναντούμε προτάσεις if, for, while, caseκαι catch ή τους τελεστές &&, || και ?. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  28. Πολυπλοκότητα • Στο αντικειμενοστρεφές λογισμικό η κυκλωματική πολυπλοκότητα εφαρμόζεταιστο επίπεδο μίας μεθόδου. Μία μετρική για την πολυπλοκότητα μίας κλάσηςείναι οι Σταθμισμένες Μέθοδοι ανά Κλάση (Weighted Methods per Class – WMC)[Chidamber 94]. Υπολογίζεται ως εξής:nWMC = Σ cii = 1 • Η WMC υπολογίζεται ως το άθροισμα των μετρικών της πολυπλοκότητας κάθεμεθόδου για όλες τις μεθόδους (όπου n ο αριθμός των μεθόδων ανά κλάση καιci η πολυπλοκότητα κάθε μεθόδου). ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  29. Πολυπλοκότητα • Η χρήση της μετρικής είναι γενική και δενορίζει ποια είναι η μετρική ci της πολυπλοκότητας κάθε μεθόδου. Είναι προφανέςότι, αν θεωρήσουμε ως ci την κυκλωματική πολυπλοκότητα μίας μεθόδου, έχουμεμία μετρική πολυπλοκότητας στο επίπεδο της κλάσης. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  30. Συνεκτικότητα • Για την αντικειμενοστρεφή σχεδίαση μία κλάση πρέπει να απεικονίζει μία αφαίρεση. Η έλλειψη συνεκτικότητας σημαίνει ότι η κλάση μπορεί να αναπαριστάδύο αφαιρέσεις και ίσως θα πρέπει να αλλάξει η σχεδίαση σε περισσότερες τηςμίας κλάσης. • Θα εξετάσουμε δύο μετρικές για τη έλλειψη συνεκτικότητας των μεθόδων μίαςκλάσης (Lack of Cohesion in Methods – LCOM). • Η βασική ιδέα των παρακάτωμετρικών είναι να συσχετίσουμε τις μεθόδους μίας κλάσης με τα πεδία της. Μίακλάση θεωρείται συνεκτική, εάν οι μέθοδοι της κλάσης χρησιμοποιούν μεγάλομέρος των πεδίων της. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  31. Συνεκτικότητα • Η πρώτη μετρική LCOM1, [Chidamber 94] λαμβάνει υπόψη της δύο όρους Pκαι Q. Ο όρος P είναι ο αριθμός των ζευγών των μεθόδων της κλάσης που δενέχουν κάποιο κοινό πεδίο. Ο όρος Q είναι ο αριθμός των ζευγών των μεθόδων της κλάσης που χρησιμοποιούν έστω και ένα κοινό πεδίο. • Η μετρική LCOM1υπολογίζεται ως εξής:LCOM1 = P – Q εάν P > Q, ή 0 εάν P<=Q • Υψηλές τιμές της μετρικής σημαίνει και χαμηλότερη συνεκτικότητα. Αυτό με τησειρά του σημαίνει ότι οι μέθοδοι είναι ανόμοιες, επειδή δε χρησιμοποιούν κοινάπεδία της κλάσης. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  32. Συνεκτικότητα • Ας θεωρήσουμε, για παράδειγμα, ότι μία κλάση έχει τα πεδίαf1, f2, f3, και f4 και τις μεθόδους Μ1, Μ2, Μ3, και M4. Τα πεδία που χρησιμοποιεί κάθεμέθοδος είναι:Μ1 f1, f2M2 f3M3 f2, f4M4 f1 • Για να υπολογίσουμε του όρους P και Q, παίρνουμε όλα τα ζεύγη των μεθόδωνκαι εξετάζουμε εάν έχουν κοινά πεδία. Ο όρος P είναι 4, επειδή τα ζεύγη M1-M2,M2-Μ3, M2-M4, M3-M4 δεν έχουν κάποιο κοινό πεδίο. Ο όρος Q είναι 2, επειδή ταζεύγη M1-M3 και M1-M4 χρησιμοποιούν κοινά πεδία. • Η μετρική LCOM1 είναι 2. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  33. Συνεκτικότητα • Μία δεύτερη μέτρηση της έλλειψης συνεκτικότητας η LCOM2 έχει διαφορετικότρόπο υπολογισμού [Henderson-Sellers 96]. • Έστω:M: Το σύνολο των μεθόδων μίας κλάσης όπου ο αριθμός των μεθόδων ορίζεταιως m.F: Το σύνολο των πεδίων της κλάσης.p(f) ο αριθμός των μεθόδων της κλάσης που χρησιμοποιούν το πεδίο f το οποίοανήκει στο F.ap ο μέσος αριθμητικών των p(f) ως προς το F ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  34. Συνεκτικότητα • Η μετρική LCOM2 είναι: • LCOM2 = (ap – m) / (1 – m) • Η μετρική LCOM2 κινείται στο πεδίο [0-2]. Η τέλεια συνεκτικότητα είναι, όταν όλες οιμέθοδοι χρησιμοποιούν όλα τα πεδία της κλάσης και η τιμή της LCOM2 είναι 0. Εάνη LCOM2 είναι μεγαλύτερη του 1, έχουμε ένδειξη για χαμηλή συνεκτικότητα. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  35. Συνεκτικότητα • Για την προηγούμενη περίπτωση έχουμε: m=4p(f1) = 2p(f2) = 2p(f3) = 1p(f4) = 1ap=6/4Η LCOM2 υπολογίζεται:LCOM2 = 0,83 ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  36. Σύζευξη • Οι απλούστερες μετρικές της σύζευξης είναι το fan-in και το fan-out. Για μία μονάδα λογισμικού το fan-in υπολογίζεται ως ο αριθμός των μονάδων που χρησιμοποιούν τη συγκεκριμένη μονάδα. Το fan-out αποτυπώνει την αντίστροφη σχέση. Τον αριθμό των μονάδων λογισμικού που χρησιμοποιεί η συγκεκριμένη μονάδα. • Για το αντικειμενοστρεφές λογισμικό οι δύο μετρικές χρησιμοποιούνται σε επίπεδο κλάσης. Έτσι για μία κλάση υπολογίζουμε το fan-in ως τον αριθμό των κλάσεων που τη χρησιμοποιούν και το fan-out ως τον αριθμό των κλάσεων που χρησιμοποιεί η κλάση. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  37. Σύζευξη • Υψηλό fan-out θεωρείται ως ένδειξη υψηλής σύζευξης και πιθανή ένδειξη για τροποποίηση της σχεδίασης. Το fan-out το συναντούμε και ως μετρική για τη σύζευξη μεταξύ αντικειμένων (Coupling Between Objects – CBO) [Chidamber 94]. • Η αξιολόγηση υψηλού fan-in είναι πιο σύνθετη. Αν για παράδειγμα επιδιώκουμε να μεγιστοποιήσουμε την επαναχρησιμοποίηση μίας κλάσης, τότε υψηλό fan-in σημαίνει και υψηλό βαθμό επαναχρησιμοποίησης και δε θα πρέπει να θεωρείται αναγκαστικά ως κακό σημάδι. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  38. Σύζευξη • Οι μετρικές του fan-in και fan-out μπορούν να γενικευτούν και σε επίπεδο πακέτων [Martin 03]. Έτσι ορίζουμε: • Φυγόκεντρη Σύζευξη (Efferent Coupling-Ce). Είναι ο αριθμός των κλάσεων εντός του πακέτου οι οποίες εξαρτώνται από κλάσεις εκτός του πακέτου. • • Κεντρομόλος Σύζευξη (Afferent Coupling – Ca). Είναι ο αριθμός των κλάσεων εκτός του πακέτου οι οποίες εξαρτώνται από τις κλάσεις εντός του πακέτου. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  39. Σύζευξη • Μπορούμε να συνδυάσουμε τις δύο μετρικές Ca και Ce για να υπολογίσουμε την αστάθεια (instability) I ενός πακέτου ως εξής:I =Ce / (Ca + Ce) • Η μετρική I της αστάθειας κινείται στο [0-1], όπου το 0 δείχνει τη μέγιστη ευστάθεια και το 1 τη μέγιστη αστάθεια. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  40. Αναδόμηση • πώς θα βελτιώσουμε τη σχεδίαση του λογισμικού, ενώ ήδη έχουμε προχωρήσει στον προγραμματισμό; • Την απάντηση σε αυτό το ερώτημα τη δίνει η αναδόμηση η οποία είναι μία δομημένη και πειθαρχημένη μέθοδος που βελτιώνει τη σχεδίαση του λογισμικού σε υπάρχουσα βάση κώδικα [Fowler 99]. • Η αναδόμηση είναι η διαδικασία που βελτιώνει την εσωτερική δομή του λογισμικού, χωρίς όμως να αλλάζει τη συμπεριφορά του. • Κατά τη διάρκεια της αναδόμησης δεν προσθέτουμε κάτι στη λειτουργικότητα που παρέχει το λογισμικό, αλλά αλλάζουμε τον τρόπο με τον οποίο παρέχεται αυτή η λειτουργικότητα. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  41. Αναδόμηση • Ο σκοπός της αναδόμησης είναι η διατήρηση της καλής σχεδίασης που απεικονίζεται στον κώδικα. Η ποιότητα της σχεδίασης μπορεί να μειώνεται όσο γίνονται απείθαρχες αλλαγές στον κώδικα. • Η αναδόμηση βελτιώνει τη δομή του λογισμικού, έτσι ώστε να διευκολύνει περαιτέρω αλλαγές που ίσως κριθούν αναγκαίες. • Σε αντίθεση με τις απείθαρχες αλλαγές στον κώδικα, η αναδόμηση είναι μία διαδικασία που διαπιστώνει κάποιο συγκεκριμένο σύμπτωμα κακής σχεδίασης και με συγκεκριμένα και προβλέψιμα βήματα καταλήγει σε κάποια συγκεκριμένη βελτιωμένη εκδοχή του κώδικα. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  42. Αναδόμηση Ορισμένα συμπτώματα κακής σχεδίασης που μπορούν να διαπιστωθούν σε υφιστάμενο κώδικα είναι: • Διπλότυπα κώδικα. Δηλαδή η εμφάνιση του ίδιου τμήματος κώδικα σε δύο ή περισσότερα σημεία. • Μεγάλες μέθοδοι με πολλές γραμμές κώδικα. • Μεγάλες κλάσεις με χαμηλή συνεκτικότητα. • Μέθοδοι με πολλές παραμέτρους. • Μέθοδοι που βασίζονται περισσότερο σε παραμέτρους παρά στα πεδία της κλάσης στην οποία ανήκουν. • Χρήση προτάσεων if ή switch οι οποίες μπορεί να αντικατασταθούν με πολυμορφισμό. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  43. Αναδόμηση • Χρήση πρωταρχικών τύπων αντί κλάσεων και αντικειμένων τιμών • Παράλληλες ιεραρχίες κλάσεων όπου η εισαγωγή μίας υποκλάσης στη μία ιεραρχία οδηγεί αναγκαστικά και στην εισαγωγή μία άλλης υποκλάσης στη δεύτερη ιεραρχία. • Συμπτώματα υψηλής σύζευξης μεταξύ κλάσεων. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  44. Αναδόμηση Ας υποθέσουμε ότι για κάποιους λόγους επιλέξαμε τη χρήση της κληρονομικότητας μεταξύ των κλάσεων Person και Employee. Θέλουμε να αντικαταστήσουμε την κληρονομικότητα με τη μεταβίβαση σύμφωνα με το σχήμα 10-27.

  45. Αναδόμηση Τα βήματα για την αντικατάσταση της κληρονομικότητας από τη μεταβίβαση είναι: • Η δημιουργία ενός πεδίου στην υποκλάση με τύπο την υπερκλάση. Η αρχικοποίηση του πεδίου γίνεται σε this. • Αλλαγή κάθε μεθόδου της υποκλάσης, έτσι ώστε να αναφέρεται στο προανεφρθέν πεδίο. Μετά την αλλαγή κάθε μεθόδου γίνεται μεταγλώττιση και εκτέλεση των αυτόματων ελέγχων. • Διαγραφή της δήλωσης τη κληρονομικότητας και αρχικοποίηση του προανεφερθέντος πεδίου σε νέο αντικείμενο (αντί του this). ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

  46. Αναδόμηση • Για κάθε μέθοδο της υπερκλάσης που τη χρησιμοποιεί κάποιος κώδικας πελάτη εισάγεται μία νέα μέθοδος μεταβίβασης. • Μεταγλώττιση και εκτέλεση των ελέγχων. ΟΠΑ -Τεχνολογία Λογισμικού – Εμμ. Γιακουμάκης

More Related