HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ
Οι Τεχνοτροπίες Ροής Δεδομένων (Data Flow) Κλήσης-Επιστροφής (Call-and-return) Αλληλεπιδρώντων Λειτουργιών (Interacting processes) Δεδομενο-κεντρικής αποθήκης (Data-oriented repository) Ιεραρχικές (Hierarchical) Στιβάδας (Layered) Κλειστής Αρχιτεκτονικής (Closed architecture - opaque layering) Ανοικτής Αρχιτεκτονικής (Open architecture – transparent layering) Διερμηνέας (Interpreter) Βαθμοτή (Tiered) Peer to Peer Βαθμοτή δύο επιπέδων (Two tier) Βαθμοτή τριών επιπέδων (Three tier) Βαθμοτή πολλαπλών επιπέδων (Multi tier) Ετερογενείς Αρχιτεκτονικές (heterogeneous architectures)
Συστήματα Τεχνοτροπίας Στιβάδας (Layered Systems) Τα συστήματα που έχουν σχεδιαστεί με τη τεχνοτροπία της στιβάδας έχουν ιεραρχική οργάνωση των υποσυστημάτων τους. Πιο συγκεκριμένα, τα υποσυστήματα οργανόνονται και ομαδοποιούνται σε «επίπεδα» (layers), το ένα πάνω από το άλλο. Κάθε επίπεδο προσφέρει υπηρεσίες στα υποσυστήματα που ανήκουν στο παραπάνω επίπεδο, και συμπεριφέρεται σαν πελάτης στα υποσυστήματα που βρίσκονται στο παρακάτω επίπεδο (βλ. ορισμό από τους Garlan and Shaw) Κάθε επίπεδο προσφέρει υπηρεσίες που αντιστοιχούν σε κάποιο συγκεκριμένο αφαιρετικό μοντέλο. Για παράδειγμα στην αρχιτεκτονική του πρωτοκόλλου TCP/IP οι υπηρεσίες που προσφέρονται στο επίπεδο IP έχουν να κάνουν με τη διαμεταγωγή των πακέτων (routing) ενώ οι υπηρεσίες που προσφέρονται από το επίπεδο TCP έχουν κυρίως να κάνουν με την σωστή μετάδοση μεταφορά και λήψη των πακέτων Στη πιο καθαρή μορφή αυτής της τεχνοτροπίας οι υπηρεσίες ενός επιπέδου είναι προσπελάσιμες μόνο από τα γειτονικά επίπεδα
Συστήματα Στιβάδας – Σχηματική Μορφή Επίπεδα σε ομόκεντρους κύκλους Επίπεδα σε στιβάδα Μονάδες Συλλογές από υποσυστήματα ή/και ψηφίδες Πυρήνας Βασικές Λειτουργίες Εφαρμογές Συνδέσεις Παίρνουν συνήθως τη μορφή κλήσεων διαδικάσιών (procedure calls) Εφαρμογές Βασικές Λειτ. Πυρήνας
Ιεραρχικά Συστήματα Στιβάδας – Γενική Σχηματική Μορφή (Hierarchical systems) Η αρχιτεκτονική δομή αυτών των συστημάτων μπορεί να περιγραφεί και με τη μορφή δένδρου
Συστήματα Στιβάδας Κλειστής Αρχιτεκτονικής Closed Architecture (Opaque Layering) VM4 VM3 VM2 VM1 C1 attr op Τα υποσυστήματα σε ένα επίπεδο μπορούν μόνο να καλέσουν υπηρεσίες από τα υποσυστήματα του αμέσα παρακάτω επιπέδου Ο σχεδιαστικός στόχος είναι να επιτύχουνμε υψηλό βαθμό συντηρησιμότητας και δομικής ευελιξίας
Συστήματα Στιβάδας Κλειστής Αρχιτεκτονικής Open Architecture (Transparent Layering) attr op C1 attr op C1 attr op VM1 Τα υποσυστήματα σε ένα επίπεδο μπορούν να καλέσουν υπηρεσίες από υποσυστήματα οποιουδήποτε παρακάτω επιπέδου Ο σχεδιαστικός στόχος είναι να επιτύχουμε υψηλό βαθμό επίδοσης κατά εκτέλεση του συστήματος (Runtime efficiency) C1 attr op C1 attr op VM2 C1 attr op C1 attr op VM3 C1 attr op C1 attr op VM4
Ιδιότητες των Συστημάτων Τεχνοτροπίας Στιβάδας Η τεχνοτροπία της Στιβάδας έχει σαν στόχο να μειώσει την πολυπλοκότητα της σχεδίασης διότι επιβάλλει χαμηλή σύζευξη ανάμεσα στα υποσυστήματα που βρίσκονται σε διαφορετικά επίπεδα (layers) Τα συστήματα Στιβάδας Κλειστής Αρχιτεκτονικής είναι πιο ευέλικτα σε αλλαγές (portable) Τα στυστήματα Στιβάδας Ανοικτής Αρχιτεκτονικής είναι πιο αποδοτικά κατά τη λειτουργία τους (efficient) Εάν ένα υποσύστημα ορίζει και ένα επίπεδο (layer) τότε αυτό το υποσύστημα καλείται εικονική μηχανή (virtual machine)
Συστήματα Τεχνοτροπίας Στιβάδας Εφαρμοσιμότητα Η τεχνοτροπία αυτή είναι κατάλληλη για μεγάλα συστήματα που χαρακτηρίζονται από υπηρεσίες σε διάφορα επίπεδα και οι υπηρεσίες στα υψηλότερα επίπεδα βασίζονται στις υπηρεσίες που προσφέρονται στα χαμηλότερα επίπεδα Μονάδες Συλλογές από υποσυστήματα που υλοποιούν κάποιες συγκεκριμένες λειτουργίες σε κάποιο αφαιρετικό επίπεδο (π.χ. Συγκεκριμένη τεχνική διαμεταγωγής πακέτων στο αφαιρετικό επίπεδο της διαμεταγωγής (routing) δεδομένων Συνδέσεις Πρωτόκολλα / διαπροσωπείες που ορίζουν το τρόπο με τον οποίο αλληλεπιδρούν υποσυστήματα σε γειτονικά επίπεδα
Συστήματα Τεχνοτροπίας Στιβάδας Σταθερά στοιχεία της Τεχνοτροπίας Περιορίζουμε τις αλληλεπιδράσεις / επικοινωνία μόνο σε υποσυστήματα που βρίσκονται σε γειτονικά επίπεδα Τυπικές παραλλαγές της Τεχνοτροπίας Υποσυστήματα μπορούν να αληλεπιδράσουν / επικοινωνήσουν με υποσυστήματα που βρίσκονται σε οποιοδήποτε επίπεδο πιο κάτω από αυτά Παραδείγματα χρήσης της Τεχνοτροπίας Πρωτόκολα δικτύων Λειτουργικά συστήματα
Κριτική για τα Συστήματα Στιβάδας (Layered Systems) Θετικά Σημεία Επιτρέπει την κατάτμηση πολύπλοκων συστημάτων σε υπηρεσίες / λειτουργίες που ανήκουν σε διαφορετικά αφαιρετικά επίπεδα Επιτρέπει την έυκολη συντήρηση του συστήματος (η αλλαγή σε ένα επίπεδο επηρεάζει μόνο τα γειτονικά επίπεδα) Επιτρέπει την επαναχρησιμοποίηση κώδικα (διαφορετικές υλοποιήσεις που προσφέρουν τις ίδιες υπηρεσίες σε κάποιο επίπεδο μπορούν να αντικαταστήσουν η μια την άλλη) Τυποποίηση που βασίζεται στον ορισμό των αφαιρετικών επιπέδων και των λειτουργιών που αυτά προσφέρουν
Κριτική για τα Συστήματα Στιβάδας (Layered Systems) Αρνητικά Σημεία Δεν είναι εφικτό να δομήσουμε όλα τα συστήμτα σε αφαιρετικά επίπεδα (π.χ. mobile robotics) Αυξημένο κόστος μηνυμάτων ανάμεσα σε υποσυστήματα σε διαφορετικά επίπεδα (οι ανοικτές αρχιτεκτονικές προσπαθούν νε μετριάσουν αυτό το πρόβλημα) Παρόμοια θετικά σημεία με τη τεχνοτροπία data abstraction / OO μόνο που εδώ εφαρμόζονται σε πολλαπλά επίπεδα (π.χ. Σαφείς διαπροσωπείες, απόκρυψη λεπτομερειών υλοποίησης). Παρόμοια σημεία και με τη τεχνοτροπία αυλού/φίλτρου μόνο που ε΄δς η επικοινωνία ανάμεσα στις μονάδες είναι πιο πολύπλοκη Ένα επίπεδο μπορεί να θεωρηθεί σαν μια «εικονική μηχανή» (virtual machine) που παρέχει ένα τυποποιημένο σύνολο διαπροσωπειών και υπηρεσιών στο αμέσως παραπάνω επίπεδο
Τεχνοτροπία: Διερμηνέας (Interpreter) Αυτή η αρχιτεκτονική τεχνοτροπία βασίζεται στη χρήση μιας «εικονικής μηχανής» που υλοποιείται με τη μορφή λογισμικού Είναι μια ειδική κατηγορία αρχιτεκτονικής Στιβάδας όπου το ένα επίπεδο προσφέρει υπηρεσίες διερμηνέα (interpreter) κάποιας γλώσσας προγραμματισμού ΟΙ μονάδες σε αυτή τη τεχνοτροπία είναι ο «διερμηνέας», τα προγράμματα που τρέχουν πάνω στο «διερμηνέα», και τα δεδομένα τους Παράδειγμα: Java Virtual Machine
Βαθμοτές Αρχιτεκτονικές (Tiered Architectures) Ειδική κατηγορία αρχιτεκτονικής τεχνοτροπίας Στιβάδας που αφαρμόζεται σε επιχειρηματικές εφαρμογές (enterprise applications) Παραλλαγές Βαθμοτή δύο επιπέδων (Two Tier) Βαθμοτή τριών επιπέδων (Three Tier) Βαθμοτή πολλαπλών επιπέδων (Multi Tier)
Βαθμοτή Τεχνοτροπία Δύο Επιπέδων Πελάτη – Εξυπηρετητή (Client Server) Αναπτύχθηκε στη δεκαετία του ’80 με στόχο να αποσυνδέσει τη διαπροσωπεία του χρήστη (user interface) από τις λειτουργίες / υπηρεσίες και τα δεδομένα (back end processing) Βοήθησε στην συντήρηση των συστημάτων (π.χ. αλλαγές στο UI δεν επηρεάζουν τα δεδομένα και τις υπηρεσίες) Βλ. http://www.sei.cmu.edu/str/descriptions/twotier.html#512860 Επίπεδο Πελάτη (User System Interface + Some Processing Management) Επίπεδο Εξυπηρετητή (Database Management, Services - Processing Management)
Βαθμοτή Τεχνοτροπία Δύο Επιπέδων Πελάτη – Εξυπηρετητή (Client Server) Αυτή η Τεχνοτροπία βρίσκει εφαρμογή συνήθως σε συστήματα βάσεων δεδομένων και διαχείρισης δεδομένων: Πελάτες (Front-end): Προγράμματα Διεπαφής (User applications) (client) Εξυπηρετητές (Back end): Προγράμματα και εφαρμογές προσπέλασης δεδομένων και διαχείρισης δεδομένων (Database access and manipulation) (server) Λειτουργίες που προσφέρονται από τα προγράμματα Πελάτες: Προγράμματα διεπαφής προσαρμοσμένα για συγκεκριμένες συσκευές και χρήστες (Customized user interface) Απλή διαχείριση αποτελεσμάτων που στέλνουν τα προγράμματα εξυπηρετητές σαν προϊόν κάποιας λειτουργίας που ζήτησε το πρόγραμμα Πελάτης (Front-end processing of data) Αποστολή αιτημάτων για διεκεραίωση λειτουργιών από προγράμματα εξυπηρετητές (RPC) Λειτουργίες που προσφέρονται από τα προγράμματα Εξυπηρετητές: Κεντρική διαχείριση δεδομένων (Centralized data management) Ακεραιότητα και Συνέπεια των δεδομένων (Data integrity and database consistency) Ασφάλεια δομής δεδομένων (Database security) Παράλληλες διεκπεραιώσεις αιτημάτων που λαμβάνονταοι από προγράμματα Πελάτες (Concurrent operations)
Σχεδιαστικοί Στόχοι για την Τεχνοτροπία Πελάτη Εξυπηρετητή Ευκολία Μεταφοράς Υπηρεσιών (Service Portability) Τα προγράμματα εξυπηρετητές να μπορούν να εγκατασταθούν σε διαφορετικούς υπολογιστές, λειτουργικά συστήματα, και δικτυακά περιβάλλοντα Διαφάνεια Υπηρεσίας και Διαφάνεια Θέσης (Transparency, Location-Transparency) Το πρόγραμμα ή τα προγράμματα εξυπηρετητές να μπορούν να κατανεμηθούν σε διαφορετικούς υπολογιστές, αλλά ο χρήστης βλέπει μια υπηρεσία ("logical" service vs. physical service) Απόδοση Διεκπεραίωσης (Performance) Τα προγράμματα πελάτες να μπορούν να προσαρμόζονται και να σχεδιάζονται για να διεκπεραιώνουν με ταχύτητα διαδικασίες που έχουν να κάνουν με την διεπαφή του χρήστη με το σύστημα (π.χ. γραφικά) Τα προγράμματα εξυπηρετητές να μπορούν να προσαρμόζονται και να σχεδιάζονται για να διεκπεραιώνουν με ταχύτητα διαδικασίες που έχουν να κάνουν με τις χορηγούμενες υπηρεσίες Επεκτασιμότητα (Scalability) Τα προγράμματα εξυπηρετητές και οι υπλογιστές που αυτά είναι εγκατεστημένα θα πρέπει να έχουν τη δυνατότητα επέκτασης ώστε να μπορούν να διαχειριστούν αυξημένο αριθμό πελατών και κλήσεων Ευελιξία (Flexibility) Το σύστημα θα πρέπει να επιτρέπει τη χρήση διαφορετικών τεχνικών και πρωτοκόλλων διαπαφής με τον χρήστη (WAP, wearable computer, desktop, palmtop κλπ.) Αξιοπιστία (Reliability) Το σύστημα θα πρέπει να μπορεί να διεκπεραιώνει τελικά τις υπηρεσίες ή να καταλήγει σε συνεπείς καταστάσεις εάν υπάρξουν προβλήματα επικοινωνίας ή προβλήματα λειτουργίας των προγραμμάτων εξυπηρετητών
Τεντοτροπία Peer-to-Peer Οι Πελάτες μπορούν να δρούν και σαν Εξυπηρετητές και οι Εξυπηρετητές σαν Πελάτες ανάλογα με τη περίσταση Η τεχνοτροπία μπορεί να οδηγήσει σε συστήματα με deadlocks Peer to Peer Client-Server
Βαθμοτή Αρχιτεκτονική Τεχνοτροπία Τριών Επιπέδων (Three Tier) Αναπτύχθηκε στη δεκαετία του ’90 για να αντιμετωπίσει τους περιορισμούς της τεχνοτροπίας Πελάτη-Εξυπηρετητη Εισάγει ένα ενδιάμεσο επίπεδο υπηρεσιών (middle tier) Αυτό το ενδιάμεσο επίπεδο παρέχει υπηρεσίες σχετικές με τη διαχείριση των διαδικασιών (process management) όπου εκτελείται η λογική της διεκπεραίωσης σύνθετων δραστηριοτήτων καθώς και άλλες γενικές υπηρεσίες όπως queuing, application execution, καια database staging. Βλ. http://www.sei.cmu.edu/str/descriptions/threetier.html
Βαθμοτή Αρχιτεκτονική Τεχνοτροπία Τριών Επιπέδων (Three Tier) - Σχηματικά Προγράμματα Διεπαφής Χρήστη-Συστήματος (User System Interface) Front end Middle tier (middleware) Προγράμματα Διαχείρισης Λειτουργιών (Processing Management) Back end Προγράμματα Διαχείρισης Δεδομένων και Υπηρεσίες (Database Management – Services)
Παράδειγμα Βαθμοτής Αρχιτεκτονικής Πολλαπλών Επιπέδων: Java 2 Platform, Enterprise Edition (J2EE)
Service Oriented Architecture (SOA)
Οι Τεχνοτροπίες Ροής Δεδομένων (Data Flow) Κλήσης-Επιστροφής (Call-and-return) Αλληλεπιδρώντων Λειτουργιών (Interacting processes) Δεδομενο-κεντρικής αποθήκης (Data-oriented repository) Ιεραρχικές (Hierarchical) Ετερογενείς Αρχιτεκτονικές (heterogeneous architectures) Ιεραρχικά Ετερογενείς Αρχιτεκτονικές (Hierarchical Heterogeneous) Σημειακά Ετερογενείς Αρχιτεκτονικές (Location Heterogeneous) Προοπτικά Ετερογενείς Αρχιτεκτονικές (Perspective Heterogeneous)
Ετερογενείς Αρχιτεκτονικές (Heterogeneous Architectures) Στη πρακτική, ένα μεγάλο βιομηχανικό σύστημα σχεδιάζεται και υλοποιείται σαν ένας συνδυασμός πολλών αρχιτεκτονικών τεχνοτροπιών. Λέμε λοιπόν ότι αυτά τα συστήματα έχουν ετερογενή τεχνοτροπία σχεδίασης. Υπάρχουν οι παρακάτων κατηγορίες ετερογενών συστημάτων: Ιεραρχικά Ετερογενείς (‘Hierarchical heterogeneous’): Μια μονάδα σε ένα σύστημα το οποίο έχει σχεδιαστεί σε μια αρχιτεκτονική τεχνοτροπία, μπορεί εσωτερικά να υλοποιείται σε κάποια άλλη τεχνοτροπία. Για παράδειγμα, σε ένα σύστημα που έχει υλοποιηθεί με τη τεχνοτροπία Αυλού/Φίλτρου κάποιο Φίλτρο (μονάδα) μπορεί να έχει υλοποιηθεί με τη τεχνοτροπία Object Oriented, ή σε ένα σύστημα που έχει υλοποιηθεί με τη τεχνοτροπία της Εν-δυνάμει Κλήσης μία μονάδα του να υλοποιθείται με τη τεχνοτροπία Στιβάδας Σημειακά Ετερογενείς (‘Locational heterogeneous’):¨Όταν το σύστημα έχει σχεδιαστεί σαν ένας συνδυασμός διαφορετικών αρχιτεκτονικών (πχ. Δεδομενοκεντρικής Αποθήκης και Κλήσης Επιστροφής). Σε αυτή τη περίπτωση οι μονάδες (components) μπορούν να ανταλλάσουν δεδομένα και στοιχεία με τη χρήση διαφορετικών τύπων συνδέσεων (connectors) π.χ. message invocation ή implicit invocation. Προοπτικά Ετερογενείς (‘Perspective heterogeneous’): Το σύστημα έχει διαφορετική τεχνοτροπία σχεδίασης ανάλογα με τη σκοπία που το αναλύουμε (από τη σκοπία της λογικής σχεδίασης, από τη σκοπιά της παράταξης του συστήματος, από τη δομική σκοπία κλπ.)
Παράδειγμα Ετερογενούς Αρχιτεκτονικής: Επιχειρησιακή Αρχιτεκτονική Enterprise Architecture Τεχνοτροπία Βαθμοτής Αρχιτεκτονικής Πολλαπλών Επιπέδων στο υψηλότερο αφαιρετικό (γενικό) επίπεδο Multi tier (at the highest level), με διαφορετικές εσωτερικές αρχιτεκτονικές σε κάθε επίπεδο distributed, transactional databases, event-based communication, implicit invocation, object-oriented, MVC, dataflow for workflow, κλπ.