Designing and developing service-oriented software with respect to fundamental object-oriented principles
Authors: Αθανασόπουλος Διονύσιος 
Published: September 2021

Στην παρούσα διατριβή προτείνουμε τεχνικές για τη σχεδίαση και την ανάπτυξη υπηρεσιο-κεντρικού λογισμικού (service-oriented software) με βάση θεμελιώδεις αρχές αντικειμενοστρέ-φειας (fundamental design principles). Υπηρεσιοκεντρικό είναι το είδος του λογισμικού τοοποίο χρησιμοποιεί ως βασικά δομικά συστατικά του (components) μονάδες λογισμικού, πουέχουν σχεδιαστεί και αναπτυχθεί από τρίτους παρόχους λογισμικού. Αυτά τα δομικά συστατικάείναι γνωστά ως υπηρεσίες (services) και συνήθως προσπελάσσονται από το υπηρεσιοκεντρικόλογισμικό διαμέσου του διαδικτύου (Web) χρησιμοποιώντας την τεχνολογία των υπηρεσιώνδιαδικτύου (Web-service technology). Οι θεμελιώδεις αρχές αντικειμενοστρέφειας είναι ένασύνολο από οδηγίες σχεδίασης και ανάπτυξης αντικειμενοστρεφούς λογισμικού των οποίωνη παραβίαση δημιουργεί προβλήματα συντήρησης του λογισμικού. Στην παρούσα διατριβή,αυτές οι αρχές οργανώνονται σε δύο ομάδες: (α) τις αρχές σύμφωνα με τις οποίες το λογισμικόπρέπει να αναπτύσσεται με βάση δομές αφαίρεσης (abstractions), και (β) τις αρχές σύμφωνα μετις οποίες το λογισμικό πρέπει να αναπτύσσεται με βάση μικρά και συνεκτικά δομικά συστατικά(cohesive components).Όταν αυτές οι σχεδιαστικές αρχές παραβιάζονται, τα προβλήματα συντήρησης του υπηρεσιο-κεντρικού λογισμικού είναι απροσδόκητα και πιο συχνά σε σχέση με την περίπτωση του αντικει-μενοστρεφούς λογισμικού. Aυτό οφείλεται στην ιδιαιτερότητα του υπηρεσιοκεντρικού λογισμι-κού που σχετίζεται με το γεγονός ότι κάθε βασικό δομικό συστατικό του δεν ανήκει στον ιδιοκτή-τη του, αλλά απλά χρησιμοποιείται από το λογισμικό. Η παρούσα διατριβή διαιρείται σε δύοτμήματα. Το πρώτο τμήμα ασχολείται με την εφαρμογή της πρώτης ομάδας σχεδιαστικώναρχών στην περίπτωση του υπηρεσιοκεντρικού λογισμικού, και το δεύτερο τμήμα ασχολείταιμε την εφαρμογή των αρχών της δεύτερης ομάδας.Για την εφαρμογή της πρώτης ομάδας αρχών, προτείνουμε ότι το υπηρεσιοκεντρικό λογισμι-κό πρέπει να αναπτύσσεται με βάση αφηρημένες υπηρεσίες (abstract services). Ωστόσο, στηνπράξη, αφηρημένες υπηρεσίες δεν είναι διαθέσιμες. Έτσι, προτείνουμε μία μέθοδο εξόρυξης(mining) αφηρημένων υπηρεσιών από ένα σύνολο υπαρχόντων υπηρεσιών. Η προτεινόμενημέθοδος βασίζεται σε έναν αλγόριθμο σύγκρισης και συσχέτισης υπηρεσιών (service matching).Δεδομένου ότι τα δεδομένα εισόδου και εξόδου των λειτουργιών των υπηρεσιών (service operations)είναι πολύπλοκες XML γραμματικές (XML schemas), προτείνουμε έναν αποτελεσματκό(effective) και αποδοτικό (efficient) αλγόριθμο σύγκρισης τέτοιων γραμματικών.Η προτεινόμενη μέθοδος εξόρυξης αφηρημένων υπηρεσιών συγκρίνει υπηρεσίες με δύοτρόπους: (i) προοδευτικά σε ζευγάρια (incremental pair-wise) ή (ii) περισσότερες από δύουπηρε-σίες ταυτόγχρονα (holistic). Συγκρίνοντας αυτούς τους δύο τρόπους εξόρυξης αφηρημέ-νων υπηρεσιών, τα πειραματικά αποτελέσματα έδειξαν, ότι ο πρώτος τρόπος είναι πιο αποδοτι-κός αλλά λιγότερο αποτελεσματικός σε σχέση με το δεύτερο τρόπο.Για την εφαρμογή της δεύτερης ομάδας αρχών, προτείνουμε μία μέθοδος διάσπασης (decomposition)μίας υπηρεσίας σε μικρότερες και πιο συνεκτικές υπηρεσίες. Για να υπολογίσουμετη συνεκτικότητα μίας υπηρεσίας, προτείνουμε τρεις εναλλακτικές μετρικές. Η πρώτη μετρική,που εφαρμόζεται στα μηνύματα των λειτουργιών υπηρεσιών (message-level metric), βρίσκεισχέσεις μεταξύ των λειτουργιών που έχουν παρόμοια δεδομένα εισόδου και εξόδου. Η δεύτερημετρική, που βασίζεται στην ανταλλαγή μηνυμάτων μεταξύ των λειτουργιών υπηρεσιών (conversation-levelmetric), βρίσκει τέτοιες σχέσεις ώστε τα δεδομένα εξόδου μίας λειτουργίας να είναιπαρόμοια με τα δεδομένα εισόδου μιας άλλης λειτουργίας. Η τρίτη μετρική βρίσκει σχέσειςμεταξύ λειτουργιών των οποίων τα ονόματα χαρακτηρίζονται από όρους (terms), που ανήκουνσε παρόμοια θεματικά πεδία (domain-level metric). Αποτιμώντας την αποτελεσματικότητα καιτη χρησιμότητα της προτεινόμενης μεθόδου σε πραγματικές υπηρεσίες διαδικτύου, τα πειραματι-κά αποτελέσματα έδειξαν, ότι η μέθοδος μπορεί να βελτιώσει τη συνεκτικότητα μία υπηρεσίαςδιασπώντας την σε μικρότερες και πιο συνεκτικές υπηρεσίες. Επίσης, τα πειραματικά αποτελέ-σματα έδειξαν, ότι όταν η προτεινόμενη μέθοδος συνδυάζεται με την τρίτη μετρική, τότε ηαποτελεσματικότητα της μεθόδου είναι υψηλότερη σε σχέση με τους συνδυασμούς της μεθόδουμε τις άλλες δύο μετρικές.