Μεθοδολογία ποσοτικοποίησης σύζευξης και συνοχής σε επίπεδο πακέτου με στόχο τη βελτίωση της σχεδιαστικής ποιότητας αντικειμενοστρεφών συστημάτων
Abstract
Περίληψη
Ο σκοπός της συγκεκριμένης διπλωματικής εργασίας ήταν η ανάπτυξη μεθοδολογίας ποσοτικοποίησης συνοχής και σύζευξης σε επίπεδο πακέτου προκειμένου να προταθούν λύσεις για τη βελτίωση της σχεδιαστικής ποιότητας αντικειμενοστρεφών συστημάτων.
Η συνοχή των κλάσεων σε ένα πακέτο είναι επιθυμητή από τη στιγμή που προωθεί την ενθυλάκωση. Αποδίδει πόσο ισχυρές είναι οι λειτουργίες σε κάθε πακέτο του προγράμματος. Καλά δομημένα πακέτα, οδηγούν σε ιδιαίτερα συνεκτικά προγράμματα. Η ασθενής ή η απουσία συνοχής υποδηλώνει ότι το πακέτο πιθανώς να πρέπει να διασπαστεί σε δύο ή περισσότερα πακέτα ή ότι κάποιες κλάσεις πρέπει να μετακινηθούν σε κάποιο άλλο πακέτο στο οποίο οι εξαρτήσεις είναι πιο ισχυρές.
Η σύζευξη μετρά πόσο εξαρτάται η κάθε ενότητα από τις άλλες ενότητες του προγράμματος. Αλληλεπιδράσεις μεταξύ κλάσεων συμβαίνουν επειδή υπάρχει σύζευξη. Τα χαλαρά συνδεδεμένα προγράμματα έχουν υψηλή ευελιξία και δυνατότητα επέκτασης. Αυξημένα επίπεδα σύζευξης είναι ανεπιθύμητα σε συστήματα αποτελούμενα από υπό-μονάδες και αποτελούν τροχοπέδη στην επαναχρησιμοποίηση.
Η έλλειψη συνοχής και σύζευξης αυξάνει την πολυπλοκότητα και την πιθανότητα εμφάνισης λαθών κατά τα στάδια ανάπτυξης, συντήρησης και επέκτασης ενός λογισμικού. Η χαλαρή σύζευξη και η ισχυρή συνοχή παρέχουν το καλύτερο λογισμικό.
Η μεθοδολογία που αναπτύχθηκε, υλοποιήθηκε σε γλώσσα προγραμματισμού Java. Δέχεται ως είσοδο ένα πρόγραμμα λογισμικού, ακολουθεί συντακτική ανάλυση των σχέσεων μεταξύ κλάσεων και πακέτων και υπολογίζει μετρικές συνοχής και σύζευξης. Στη συνέχεια, δημιουργεί ομάδες κλάσεων n πλήθους (n = 1,2,3,..) με σκοπό τη μεταφοράς τους σε κάποιο άλλο πακέτο όπου οι παραπάνω μετρικές βελτιώνονται. Ο στόχος είναι να εξαχθούν συμπεράσματα σχετικά με το πλήθος των ομάδων κλάσεων το οποίο επιφέρει το βέλτιστο αποτέλεσμα σε επίπεδο συνοχής και σύζευξης.
Η εγκυρότητα της μεθοδολογίας ελέγχθηκε σε προγράμματα ελεύθερου λογισμικού γραμμένα σε java και υλοποιημένα με πρότυπα αντικειμενοστρεφούς προγραμματισμού.