Προγραμματισμός

Σχεδιασμός για αλλαγή: Σύζευξη και συνοχή σε αντικειμενοστρεφή συστήματα

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

Ωστόσο, μια καλή γνώση και των δύο είναι απαραίτητη για τη δημιουργία συστημάτων που είναι επεκτάσιμα, διαχειρίσιμα και μπορούν να επεκταθούν με την πάροδο του χρόνου. Σε αυτήν την ανάρτηση, θα συζητήσω και τα δύο. Θα παρουσιάσω παραδείγματα κώδικα στις μελλοντικές αναρτήσεις μου σχετικά με αυτό το θέμα.

Πώς διαφέρουν η συνοχή και η ζεύξη; Πώς σχετίζονται οι έννοιες της συνοχής και της σύζευξης με καλά ή κακά σχέδια λογισμικού; Προτού διερευνήσουμε τη συνοχή και τη σύζευξη και τον τρόπο με τον οποίο επηρεάζουν τα σχέδια λογισμικού, ας καταλάβουμε τι είναι κάθε μία από αυτές τις έννοιες και τους τύπους τους.

Σύζευξη

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

  • Σύζευξη περιεχομένου - αυτός είναι ένας τύπος ζεύξης στον οποίο μια συγκεκριμένη ενότητα μπορεί να έχει πρόσβαση ή να τροποποιήσει το περιεχόμενο οποιασδήποτε άλλης μονάδας. Στην ουσία, όταν ένα συστατικό περνά παραμέτρους για τον έλεγχο της δραστηριότητας κάποιου άλλου συστατικού, υπάρχει μια ζεύξη ελέγχου μεταξύ των δύο συστατικών.
  • Κοινή σύζευξη - αυτός είναι ένας τύπος ζεύξης στον οποίο έχετε πολλές μονάδες που έχουν πρόσβαση σε κοινόχρηστα παγκόσμια δεδομένα
  • Σφραγίδα ζεύξης - αυτός είναι ένας τύπος ζεύξης στον οποίο η δομή δεδομένων χρησιμοποιείται για τη μετάδοση πληροφοριών από ένα στοιχείο στο σύστημα σε άλλο
  • Σύζευξη ελέγχου - αυτός είναι ένας τύπος ζεύξης στον οποίο μια μονάδα μπορεί να αλλάξει τη ροή εκτέλεσης μιας άλλης μονάδας
  • Σύζευξη δεδομένων - σε αυτόν τον τύπο ζεύξης, δύο μονάδες αλληλεπιδρούν ανταλλάσσοντας ή μεταβιβάζοντας δεδομένα ως παράμετρο

Συνοχή

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

  • Συμπτωματική συνοχή - αυτή είναι μια μη προγραμματισμένη τυχαία συνοχή που μπορεί να είναι αποτέλεσμα της διάσπασης μιας ενότητας σε μικρότερες ενότητες.
  • Λογική συνοχή - αυτός είναι ένας τύπος συνοχής στον οποίο πολλαπλές συναφείς λογικές συναρτήσεις ή στοιχεία δεδομένων τοποθετούνται στο ίδιο στοιχείο
  • Χρονική συνοχή - αυτός είναι ένας τύπος συνοχής στον οποίο τα στοιχεία μιας ενότητας ομαδοποιούνται με τρόπο με τον οποίο υποβάλλονται σε επεξεργασία την ίδια χρονική στιγμή. Ένα παράδειγμα θα μπορούσε να είναι ένα στοιχείο που χρησιμοποιείται για την προετοιμασία ενός συνόλου αντικειμένων.
  • Διαδικαστική συνοχή - αυτός είναι ένας τύπος συνοχής στον οποίο οι συναρτήσεις σε ένα στοιχείο ομαδοποιούνται κατά τρόπο που να τους επιτρέπει να εκτελούνται διαδοχικά και να τις κάνουν διαδικαστικά συνεκτικές
  • Επικοινωνιακή συνοχή - σε αυτόν τον τύπο συνοχής τα στοιχεία μιας ενότητας ομαδοποιούνται λογικά με τρόπο που εκτελούνται διαδοχικά και λειτουργούν με τα ίδια δεδομένα
  • Διαδοχική συνοχή - σε αυτόν τον τύπο συνοχής τα στοιχεία μιας ενότητας ομαδοποιούνται με τέτοιο τρόπο ώστε η έξοδος ενός από αυτά να γίνει η είσοδος του επόμενου - όλα εκτελούνται διαδοχικά. Στην ουσία, εάν η έξοδος ενός μέρους ενός στοιχείου είναι η είσοδος ενός άλλου, λέμε ότι το στοιχείο έχει διαδοχική συνοχή.
  • Λειτουργική συνοχή - αυτός είναι ο καλύτερος και ο πιο προτιμώμενος τύπος συνοχής στον οποίο ο βαθμός συνοχής είναι ο υψηλότερος. Σε αυτόν τον τύπο συνοχής, τα στοιχεία μιας ενότητας ομαδοποιούνται λειτουργικά σε μια λογική μονάδα και λειτουργούν μαζί ως λογική μονάδα - αυτό προωθεί επίσης την ευελιξία και την επαναχρησιμοποίηση.

Οι βέλτιστες πρακτικές

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

Θα πρέπει να σχεδιάσετε τάξεις που περιέχουν τον μικρότερο αριθμό μεταβλητών παρουσίας, δηλαδή, ο σχεδιασμός της τάξης σας είναι "καλός" εάν περιέχει μικρό αριθμό μεταβλητών παρουσίας. Στην ιδανική περίπτωση, καθεμία από τις μεθόδους στην τάξη σας θα πρέπει να χειρίζεται μία ή περισσότερες από αυτές τις μεταβλητές παρουσίας. Θεωρητικά, μια κλάση είναι μέγιστη συνεκτική εάν κάθε μία από τις μεταβλητές παρουσίας της κλάσης χρησιμοποιείται ή χειρίζεται από καθεμία από τις μεθόδους αυτής της κλάσης. Όταν η συνοχή στην τάξη είναι υψηλή, οι μέθοδοι και τα μέλη των δεδομένων της τάξης είναι συνυφασμένα και συνεργάζονται ως μία λογική ενότητα. Ωστόσο, στην πραγματικότητα δεν είναι δυνατό να σχεδιαστούν τέτοιες τάξεις ή θα προτιμούσα να πω, δεν είναι σκόπιμο να σχεδιάσετε τάξεις που είναι μέγιστα συνεκτικές.

$config[zx-auto] not found$config[zx-overlay] not found