Σχεδιασµός βασισµένος σε συνιστώσες 1 Ενδεικτικά περιεχόµενα του κεφαλαίου Ποια είναι τα "άτοµα", από τα οποία κατασκευάζονται οι υπηρεσίες; Πώς οργανώνουµε τις συνιστώσες σε ένα αρµονικό σύνολο; Τι είναι η αρχιτεκτονική υπηρεσιών; Ποιες είναι οι έτοιµες λύσεις και πως µπορεί να µειωθεί ο χρόνος δηµιουργίας της νέας υπηρεσίας; Ποιων ειδών συνιστώσες έχουµε διαθέσιµες (σταθερές και κινητές) για να χτίσουµε υπηρεσίες; Πώς θα σπάσουµε την υπηρεσία στις κατάλληλες συνιστώσες; Πώς θα κάνουµε τις συνιστώσες ούτε πολύ µικρές ούτε πολύ µεγάλες; Πώς σκορπίζουµε τις συνιστώσες των υπηρεσιών πάνω από τα δίκτυα; 2 1
Πλεονεκτήµατα χρήσης συνιστωσών Με τη χρήση συνιστωσών επιτυγχάνεται: την επαναχρησιµοποίηση διαθέσιµου λογισµικού, τον χωρισµό του συστήµατος σε τµήµατα, µε σκοπό τον καλύτερο έλεγχο ενός πολύπλοκου συστήµατος κατά τη δηµιουργία και τη συντήρηση, την καλύτερη κατανοµή του λογισµικού µέσα στο δίκτυο. 3 Ορισµοί της συνιστώσας "Συνιστώσα λογισµικού είναι µια φυσική συσκευασία εκτελέσιµου λογισµικού µε καλά καθορισµένη και γνωστή διεπαφή." Η συνιστώσα είναι ανεξάρτητη εκτελέσιµη οντότητα. Η πηγαίος κώδικας της συνιστώσας δεν είναι διαθέσιµος, κατά συνέπεια η συνιστώσα δεν περνάει από compiler µαζί µε τις άλλες συνιστώσες του συστήµατος. Η διεπαφή της συνιστώσας είναι δηµόσια ανακοινωµένη. Όλες οι αλληλεπιδράσεις περνούν µόνο µέσα από αυτήν την διεπαφή. Η διεπαφή εκφράζεται µέσω παραµετροποιηµένων λειτουργιών, ενώ η εσωτερική κατάσταση της συνιστώσας δεν είναι εξωτερικά παρατηρήσιµη. 4 2
«Μέγεθος» και θέση της συνιστώσας Πέντε επίπεδα αφαίρεσης: Λειτουργική αφαίρεση: Η συνιστώσα υλοποιεί µια και µοναδική λειτουργία, π.χ. µια µαθηµατική συνάρτηση. Περιστασιακές οµαδοποιήσεις: Η συνιστώσα είναι µια συλλογή χαλαρά συσχετισµένων οντοτήτων, που µπορεί να είναι δηλώσεις δεδοµένων, συναρτήσεις κ.λπ. Η διεπαφή παροχής υπηρεσιών αποτελείται από τα ονόµατα όλων των οντοτήτων της οµάδας. Αφαιρέσεις δεδοµένων: Η συνιστώσα αντιπροσωπεύει µια αφαίρεση δεδοµένων (data abstraction) ή µια κλάση (class) σε µια αντικειµενοστρεφή γλώσσα. Η διεπαφή παροχής αποτελείται από λειτουργίες για τη δηµιουργία, τροποποίηση ή πρόσβαση στην αφαίρεση δεδοµένων. Αφαιρέσεις οµάδων (cluster abstractions): Η συνιστώσα είναι οµάδα συσχετισµένων κλάσεων, που συνεργάζονται. Αφαίρεση συστήµατος: Η συνιστώσα είναι ολόκληρο αυτάρκες σύστηµα. 5 Το παράδειγµα της CORBA H CORBA (Common Object Request Broker Architecture) είναι µια αρχιτεκτονική που επιτρέπει σε κοµµάτια προγραµµάτων, που καλούνται αντικείµενα, να επικοινωνούν µεταξύ τους ανεξάρτητα από τη γλώσσα προγραµµατισµού, στην οποία έχουν γραφτεί, από το λειτουργικό σύστηµα, πάνω από το οποίο τρέχουν, από τη συγκεκριµένη µηχανή ή από το δίκτυο. Η CORBA αναπτύχθηκε από ένα επιχειρηµατικό consortium που λέγεται Object Management Group (OMG). Υπάρχουν περισσότερες της µιας υλοποιήσεις της CORBA, από τις πιο γνωστές είναι η SOM και DSOM της ΙΒΜ. Η Αρχιτεκτονική ιαχείρισης Αντικειµένων (OMA - Object Management Architecture) ταξινοµεί τα αντικείµενα σε τέσσερις κατηγορίες: CORBAservices, CORBAfacilities, CORBAdomain objects, and Application Objects. Οι µεταξύ τους σχέσεις φαίνονται στο ακόλουθο διάγραµµα αρχιτεκτονικής: 6 3
Το παράδειγµα της ΤΙΝΑ 7 Το παράδειγµα της ΤΙΝΑ ΗΤΙΝΑ ολοκληρώνει όλες τις λειτουργίες ελέγχου και διαχείρισης σε µια ενοποιηµένη αρχιτεκτονική λογισµικού. Η ΤΙΝΑ υποστηρίζεται από ένα και µοναδικό Κατανεµηµένο Περιβάλλον Επεξεργασίας (Distributed Processing Environment, συντοµογρ. DPE, δηλαδή ένα περιβάλλον, που υποστηρίζει την τοποθέτηση και επικοινωνία αντικειµένων µεταξύ τους). Ορίζει ένα σύνολο από σηµεία διεπαφής, που ονοµάζονται Σηµεία Αναφοράς (Reference Points). 8 4
Το παράδειγµα της ΤΙΝΑ Προκειµένου να γίνει ένα σύστηµα πιο εύκολα κατανοητό υιοθετούνται τρεις διαφορετικές οπτικές γωνίες: Η πληροφοριακή άποψη (information viewpoint) περιγράφει τις οντότητες που είναι φορείς πληροφορίας, τις σχέσεις µεταξύ τους, τους περιορισµούς και τους κανόνες, που επηρεάζουν τη συµπεριφορά τους. Η υπολογιστική άποψη (computational viewpoint) περιγράφει τα υπολογιστικά αντικείµενα και τις µεταξύ τους σχέσεις. Με απλά λόγια περιγράφει τα κοµµάτια του προγράµµατος, που αλληλεπιδρούν µεταξύ τους και µε τις διεπαφές έτσι ώστε να υλοποιείται η εφαρµογή. Η µηχανική άποψη (engineering viewpoint) περιγράφει την οργάνωση µιας αφηρηµένης υποδοµής, που χρειάζεται για να υποστηρίξει την κατανοµή των συνιστωσών στους υπολογιστικούς κόµβους. 9 Το µέγεθος των συνιστωσών Ηπροσαρµογή σε συγκεκριµένη αρχιτεκτονική ή σε συγκεκριµένο µοντέλο: Π.χ. αν ακολουθείται το µοντέλο της TINA, µερικές τουλάχιστον από τις συνιστώσες είναι εν µέρει δεδοµένες ως προς το σκοπό και τις λειτουργίες. Η επίδραση του επιχειρηµατικού µοντέλου: Λειτουργίες, που αναµένεται ότι µπορεί να ασκούνται από διαφορετικούς ρόλους (και άρα να καταλήξουν σε διαφορετικούς παίκτες), πρέπει να εκτελούνται από διαφορετικές συνιστώσες, ώστε να είναι δυνατή η κατανοµή τους σύµφωνα µε το µοντέλο. Η ευελιξία της συνιστώσας σε περίπτωση επαναχρησιµοποίησης: Μια συνιστώσα µπορεί να εξυπηρετεί καλά τους σκοπούς ενός µοντέλου, αλλά να υλοποιηθεί µε διευρυµένες ικανότητες προκειµένου να καλυφθούν µελλοντικές ή εναλλακτικές ανάγκες. Η καλή κατάτµηση του συστήµατος µε λειτουργικά και σχεδιαστικά κριτήρια: Πολλές φορές ο σχεδιαστής χωρίζει τις λειτουργίες µε όποιο τρόπο τον βοηθάει να κατανοήσει καλύτερα το σύστηµα και τις αλληλεπιδράσεις ανάµεσα στα µέρη του. Άλλοτε προσθέτει σε συνιστώσες ικανότητες, που θα είναι βοηθητικές στα στάδια των δοκιµών ή της συντήρησης του συστήµατος. Με κριτήρια διανοµής στη δικτυακή υποδοµή: Οι διαφορετικές συνιστώσες είναι πιθανό να καταλήξουν σε διαφορετικούς κόµβους του δικτύου. Ωστόσο αν κάποιες λειτουργίες πρόκειται να είναι µόνιµα στενά συνδεδεµένες κατά τρόπο ώστε να είναι επιθυµητό να εµφανίζονται πάντοτε στον ίδιο πάντοτε κόµβο, ένας τρόπος να γίνει αυτό υποχρεωτικό είναι να συστεγασθούν τελικά σε µια και µόνη συνιστώσα. 10 5
Ηδιανοµή των συνιστωσών στο δίκτυο 11 Με ποιο τρόπο εκτιµούµε τον όγκο της κίνησης ανάµεσα σε δυο συνιστώσες; 12 6