Με τον όρο συνεκτικότητα (cohesion) στην τεχνολογία λογισμικού αναφερόμαστε στον
βαθμό στον οποίο τα στοιχεία εντός μιας δομής σχετίζονται μεταξύ τους. Ουσιαστικά,
αποτελεί ένα μέτρο «δύναμης» των σχέσεων των στοιχείων μιας κλάσης.
Αντίστοιχα, ο όρος σύζευξη (coupling) αναφέρεται στον βαθμό αλληλεξάρτησης μεταξύ 2
διαφορετικών δομικών στοιχείων. Αποτελεί δηλαδή ένα μέτρο του πόσο στενά σχετίζονται τα
στοιχεία των δύο αυτών δομών.
Οι 2 παραπάνω έννοιες είναι πολύ σημαντικές και λαμβάνονται σε πολύ μεγάλο βαθμό
υπόψη όταν σχεδιάζουμε ένα λογισμικό. Γενικά, η καλή γνώση και των δύο εννοιών είναι
αναγκαία για τον σχεδιασμό συστημάτων που είναι επεκτάσιμα, εύκολα κατανοητά και
διαχειρίσιμα. Κυρίως, επιδιώκουμε χαμηλή σύζευξη και υψηλή συνεκτικότητα. Συστήματα
με χαμηλή σύζευξη και υψηλή συνεκτικότητα επηρεάζονται λιγότερο από αλλαγές, είναι πιο
κατανοητά και επαναχρησιμοποιούνται με μεγαλύτερη ευκολία. Στην παρούσα μεταπτυχιακή εργασία μελετάμε τις έννοιες της σύζευξης και της
συνεκτικότητας σε σχήματα βάσεων δεδομένων. Συγκεκριμένα, ξεκινώντας από SQL
περιγραφές σχημάτων, παράγουμε γραφήματα σύζευξης/συνεκτικότητας. Κατόπιν
προτείνουμε μετρικές για την αξιολόγηση των παραπάνω εννοιών. Ορίζουμε τις
προτεινόμενες μετρικές φορμαλιστικά και αποδεικνύουμε ότι είναι καλά ορισμένες, με βάση
ένα σύνολο από ιδιότητες που πρέπει να πληρούνται από τις μετρικές ποιότητας λογισμικού
γενικότερα. Τέλος, με βάση τις προτεινόμενες μετρικές, πραγματοποιούμε μια εκτενή
εμπειρική μελέτη σε ένα σύνολο σχημάτων που προέρχονται από συστήματα ανοιχτού
λογισμικού.
(EL)
The term cohesion in software refers to the extent to which elements within a structure are
related to each other. Essentially, it is a measure of strength of the relationships of the
elements of a class. Correspondingly, the term coupling refers to the degree of
interdependence between two different structural elements. It is a measure of how closely the
elements of these two structures are closely related.
The above two concepts are very important and are taken into account very much when
designing a software. In general, good knowledge of both concepts is necessary to design
systems that are scalable, easily understood and manageable. Above all, we seek low coupling
and high consistency. Systems with low coupling and high consistency are less affected by
changes, are more understandable and reusable with greater ease.
In this thesis we study the concepts of coupling and cohesion in database schemas. In
particular, starting with SQL schema descriptions, we produce coupling/cohesion graphs.
Then we recommend metrics to evaluate the above concepts. We define the proposed metric
formulas and prove that they are well defined, based on a set of properties that must be met by software quality metrics in general. Finally, based on the proposed metrics, we conduct an
extensive empirical study on a set of shapes derived from open source systems.
(EN)