Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Kεφάλαιο Tέσσερα - Πρότυπα, Yποδοµές και Aρχιτεκτονικές

Σχετικά έγγραφα
Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Προοπτικές. Kεφάλαιο Tρία - Mεγέθους και ιαµελισµού Eνός Συστήµατος σε Συστατικά

Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Kεφάλαιο Έξη - Συνδετικά Kριτήρια Aντικειµένων και Συστατικών

Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Kεφάλαιο ύο - Tι Eίναι και Tι δεν Eίναι Συστατικό

Ελληνικό Ανοικτό Πανεπιστήµιο. Βασικές έννοιες αντικειµενοστρεφούς τεχνολογίας. ρ. Πάνος Φιτσιλής

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Kεφάλαιο ώδεκα - Kαθορισµός Προτύπων Περιοχών

Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Kεφάλαιο εκαέξη - Συναρµολόγηση Συστατικών

Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Kεφάλαιο εκατρία - Aρχιτεκτονική Συστατικών

Αρχιτεκτονική Λογισμικού

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα. Kεφάλαιο Ένδεκα - Στρατηγική Σύγκριση

ΣΧΕ ΙΑΣΗ ΑΝΤΙΚΕΙΜΕΝΩΝ ΜΕ ΑΡΜΟ ΙΟΤΗΤΕΣ. Ορισµός σχεδιαστικών προτύπων Εφαρµογή των 9 GRASP προτύπων

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Αξιολόγηση των Σχεδιαστικών Προτύπων και της Ποιότητας του Λογισμικού μέσω Μετρικών, στις Περιπτώσεις Προσθήκης Λειτουργικότητας και

Εισαγωγή στη Σχεδίαση Λογισμικού

Aρχές Σπονδυλωτού Προγραµµατισµού σε Kατανεµηµένα Συστήµατα

Μαθησιακές δραστηριότητες με υπολογιστή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Κεφάλαιο 7: Τεχνολογία Λογισμικού

Η αναδιοργάνωση της εσωτερικής λειτουργίας των ηµοσίων Υπηρεσιών (back-office) είναι προϋπόθεση για ποιοτικές ηλεκτρονικές υπηρεσίες.

Προδιαγραφές Απαιτήσεων Γιάννης Σμαραγδάκης

Πληροφορική 2. Τεχνολογία Λογισμικού

Εισαγωγή στην Τεχνολογία Λογισμικού

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Ενότητα 1: Εισαγωγή στις Βάσεις Δεδομένων. Αθανάσιος Σπυριδάκος Διοίκηση Επιχειρήσεων

ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

ΠΡΟΒΛΗΜΑΤΑ Υ/Υ ΕΚΧΥΛΙΣΗΣ Κ. Μάτης

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Μοτίβα Σχεδίασης (Design Patterns)

2 ΕΙΣΑΓΩΓΙΚΕΣ ΕΝΝΟΙΕΣ ΙΟΙΚΗΣΗΣ ΕΡΓΩΝ

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Αποµακρυσµένη κλήση διαδικασιών

Εισαγωγή στην. Γιάννης Σμαραγδάκης

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

Πίνακας Περιεχομένων. μέρος A 1 Εισαγωγή στην Τεχνολογία Λογισμικού

Χρηματοδότηση Δικτύου ΦΥΣΗ Παράγοντες επιτυχίας. Λευκωσία, 18 Μαΐου 2006 Παναγιώτα Μαραγκού, WWF Ελλάς

Εισαγωγή στην Πληροφορική

Στοιχείαδιδακτικής. Στόχοι μαθήματος φύλλα εργασίας ΒΙΟΛΟΓΙΑ. Γεωργάτου Μάνια ΣχολικήΣύμβουλοςΠΕ04

Μεθοδολογίες Παραγωγής Λογισµικού

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Βάσεις εδοµένων. Βασίλειος Βεσκούκης, Εµµ. Στεφανάκης ΣΥΣΤΗΜΑΤΑ ΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ

Εισαγωγή στην Τεχνολογία Λογισµικού

Η συμβολή στην επιτυχία ενός οργανισμού, παρουσιάζοντας σχετικά δεδομένα με τη χρήση τεχνικών 2Δ ή 3Δ τεχνολογίας. Αρμοδιότητα

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ. Τμήμα Μηχανικών Οικονομίας και Διοίκησης ΕΠΙΠΕΔΟ ΣΠΟΥΔΩΝ Προπτυχιακό ΚΩΔΙΚΟΣ ΜΑΘΗΜΑΤΟΣ ΓΕ0175 ΕΞΑΜΗΝΟ ΣΠΟΥΔΩΝ 9

Σχεδίαση Κλάσεων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:

Αντικειμενοστρεφής Προγραμματισμός

Επιµέλεια Θοδωρής Πιερράτος

Πρότυπα Σχεδίασης. Design Patterns

Δομημένος Προγραμματισμός

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Μεθοδική Ανάπτυξη Δικτυακής Υποδομής. Παρουσίαση στην ημερίδα για Σύγχρονες τάσεις στις Τηλεπικοινωνίες και Τεχνολογίες Αιχμής

Πληροφορική ΙΙ Εισαγωγή στις Βάσεις Δεδομένων. Τμήμα Λογιστικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Εισαγωγή στην Τεχνολογία Λογισµικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Γενικό πλαίσιο. Software Evolution Monitor Requirements. Απόστολος Ζάρρας

Η Διαλειτουργικότητα στην Υπηρεσία του Πολίτη

Κωδικός: <Κωδ.Αρ.Εγγράφου/ΚωδικόΌνομαΈργου/Αρ. Έκδοσης> <Company Name> <Όνομα - Κωδικό Όνομα Έργου> Έγγραφο Περιγραφής Σχεδίου Λογισμικού

Εισαγωγή, Βασικές Έννοιες, Οφέλη και Κίνδυνοι

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

Εννοιολογική χαρτογράφηση: Διδακτική αξιοποίηση- Αποτελέσματα για το μαθητή

ΚΟΥΚΟΥΛΟΠΟΥΛΟΣ Πάρης. Πρόεδρος της Κεντρικής Ενωσης ήµων και Κοινοτήτων Ελλάδος (Κ.Ε..Κ.Ε.)

Περιεχόµενα. Πληροφοριακά Συστήµατα: Κατηγορίες και Κύκλος Ζωής. Π.Σ. ιαχείρισης Πράξεων. Π.Σ. ιοίκησης. Κατηγορίες Π.Σ. Ο κύκλος ζωής Π.Σ.

ΣΧΕΔΙΑΣΗ & ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ

Διαφορές single-processor αρχιτεκτονικών και SoCs

Στρατηγικό Σχεδιασµό Πληροφοριακών Συστηµάτων

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Περίληψη ιπλωµατικής Εργασίας

Επεξεργασία πραγµατικού χρόνου Κατάτµηση της µνήµης

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ως ανάπτυξη προϊόντος ορίζεται όλο το σύνολο των δραστηριοτήτων από την έρευνα αγοράς, µέχρι την παράδοσή του στον πελάτη.

ΚΑΙΝΟΤΟΜΙΕΣ ΓΙΑ ΤΗΝ ΑΕΙΦΟΡΟ ΓΕΩΡΓΙΑ. Α. Κουτσούρης Γεωπονικό Παν/μιο Αθηνών

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΟΡΓΑΝΩΣΗ ΚΑΙ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ. Μάθηµα 6ο: Θεµελιώδεις Αρχές της Οργάνωσης και Οργανωτικός Σχεδιασµός

ΟΡΓΑΝΩΣΗ ΚΑΙ ΔΙΟΙΚΗΣΗ ΕΠΙΧΕΙΡΗΣΕΩΝ. Μάθηµα 5ο: Θεµελιώδεις Αρχές της Οργάνωσης και Οργανωτικός Σχεδιασµός. Ερωτήσεις Μελέτης Στόχοι Μαθήµατος 6

Σχεδιασµός βασισµένος σε συνιστώσες

Ανάλυση Απαιτήσεων Mεθοδολογίες Ανάπτυξης

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

Αλγόριθμοι. Σενάριο για μαθητές της Γ γυμνασίου, διάρκειας 4 ωρών διδασκαλίας

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Από τα Δεδομένα στις Πληροφορίες - Μέρος Ι (Ταξινόμηση, Επιλογή, Μερικά Αθροίσματα)

11/5/2015. Οι επιχειρήσεις

Εισαγωγή στην Τεχνολογία Λογισµικού

Προγραµµατιστικές τεχνικές

Αρχές Προγραμματισμού Υπολογιστών

Σχεδιαστικά Προγράμματα Επίπλου

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

Κυριακή Αγγελοπούλου. Επιβλέπων Καθηγητής: Μανώλης Πατηνιώτης

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού

κώστας βεργίδης εισαγωγή στις βασικές έννοιες των επιχειρησιακών διεργασιών γραφείο 322 κτίριο Γ

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 4 : Τεχνολογία λογισμικού. Δρ.

ΠΡΟΚΗΡΥΞΗ ΚΕΝΗΣ ΘΕΣΗΣ ΓΙΑ ΤΗΝ ΚΑΤΑΡΤΙΣΗ ΕΦΕΔΡΙΚΟΥ ΠΙΝΑΚΑ

Α. Ερωτήσεις Ανάπτυξης

Transcript:

Kεφάλαιο Tέσσερα - Πρότυπα, Yποδοµές και Aρχιτεκτονικές 1

Eισαγωγή Η µηχανική λογισµικού ακολουθεί καθοδηγήσεις και παραδείγµατα από έµπρακτους σχεδιασµούς, έτσι ώστε να καταλήγει στις σωστές αποφάσεις. Yπάρχει δηλαδή συνδυασµός λίγης θεωρίας για τη διαχείρηση των συστατικών µε πολλή εµπειρία στο σχεδιασµό συστηµάτων µε επαναχρησιµοποιούµενα συστατικά. Η δηµιουργία προϊόντων που ικανοποιούν τεχνικές και µη τεχνικές προϋποθέσεις βασίζεται σ αυτό το µίγµα. Aυτό προϋποθέτει την ύπαρξη αποτελεσµατικών µηχανισµών για την ανταλλαγή πληροφοριών µεταξύ έµπρακτων παραδειγµάτων. Στην ουσία της µηχανικής λογισµικού, είναι σηµαντική η πλήρης κατανόηση των τεχνικών επαναχρησιµοποίησης εδραιοµένων σχεδιασµών. Η πλήρης αξιοποίηση τέτοιων µεθόδων σχεδιασµού υποθέτει τη χρησιµοποίηση µίας καθιερωµένης µεθοδολογίας που έχει αποδεικτεί εµπειρικά. 4.1Tύποι Eπαναχρησιµοποίησης Eπιπέδου Σχεδιασµού Η επαναχρησιµοποίηση αποδεδειγµένων εµπειρικά σχεδίων, είναι βασική,αλλά δεν υπάρχει προσέγγιση που να καλύπτει όλα τα επίπεδα διαµελισµού. Υπάρχει µεγάλη διαφορά µεταξύ τού να ταξινοµείς µία σειρά αριθµών και να κτίζεις πολύπλοκα αλληλοεπιδρώντα συστήµατα. Ο σχεδιασµός επαναχρησιµοποίησης µπορεί να γίνει κατανοητός σαν µία προσπάθεια να γίνουν κοινές (shared), δηλ. να διαµοιρασθούν ορισµένες προοπτικές µίας προσέγγισης δια µέσου διαφόρων µελετών. Tέτοια είδη σχεδιασµών παρατίθενται πιό κάτω µε τα επίπεδα χρήσης τους. ιαµοίρασµα συνοχής: γλώσσες προγραµµατισµού. ιαµοίρασµα συγκεκριµένων κοµµατιών επιλύσεως: βιβλιοθήκες. ιαµοίρασµα συµβάσεων: διασυνδέσεις. ιαµοίρασµα αρχιτεκτονικής αλληλεπίδρασης: πρότυπα. ιαµοίρασµα αρχιτεκτονικής υποσυστηµάτων: υποδοµές. ιαµοίρασµα ολικής δοµής: αρχιτεκτονικές. Πρότυπα, Yποδοµές και Aρχιτεκτονικές 2

4.1.1 ιαµοίρασµα Συνοχής: Γλώσσες Προγραµµατισµού Ένας από τους παλαιότερους τύπους επαναχρησιµοποίησης αποδεδειγµένων µεθόδων είναι η χρησιµοποίησή τους σε γλώσσες προγραµµατισµού. Mε την κατασκευή της µία γλώσσα προγραµµατισµού καθοδηγεί τον προγραµµατιστή πώς πρέπει να γίνονται ή να µην γίνονται ορισµένα πράγµατα. Για παράδειγµα µία γλώσσα µπορεί να παρουσιάζει δυσκολίες στη δηµιουργία δυναµικά µεταβαλλόµενων πινάκων, και στο τέλος ο προγραµµατιστής να καταλήξει στο συµπέρασµα ότι δεν χρειάζονται. Tελικά οι πλέον επιτυχηµένες γλώσσες είναι αυτές που συνδυάζουν την καθοδήγηση µε την ελαστικότητα για απρόβλεπτες καταστάσεις. Kαθώς αυξάνει το µέγεθος και η πολυπλοκότητα, η σηµασία της αρχιτεκτονικής κερδίζει έδαφος και οι πιό απαιτητικές γλώσσες γίνονται περισσότερο δηµοφιλής. H καθοδήγηση τέτοιων γλωσσών απλά αποτρέπει πράγµατα που µπορούν να προκαλέσουν προβλήµατα. Έτσι υπάρχουν στη ανάπτυξη του συστήµατος ιδεατές έννοιες, δοµές και µέσα σύνθεσης, που είναι: Στατικού τύπου συστήµατα µε µηχανισµούς παραµετρικού πολυµορφισµού ή οριακού πολυµορφισµού. Συναρτήσεις, ψηλού βαθµού συναρτήσεις και συναρτησιακές συνθέσεις. Ενότητες (closures or blocks). Κατ ανάγκη εκτέλεση (lazy evaluation). Περιλήψεις διεργασίας (procedural abstractions). Εξαιρέσεις και χειρισµός εξαιρέσεων (exceptions). Τάξεις και διαδοχή εφαρµογών. υναµικοί τύποι συστηµάτων µε πολυµορφισµό. Υποστήριξη διαστήµατος ανοικτού αντικειµένου. Αργή σύνδεση (late binding) και απόσπαση κατά τύπο. Υποστήριξη συγχρονισµού ταυτόχρονων διεργασιών. Συστήµατα διαµορφωτών και πακέτων (modulesand package systems). Οι υβριδικές αντικειµενοστρεφείς γλώσσες είναι οι πιό πετυχηµένες στο σύγχρονο σπονδυλωτό προγραµµατισµό. Πρότυπα, Yποδοµές και Aρχιτεκτονικές 3

4.1.2 ιαµοίρασµασυγκεκριµένων Kοµµατιών Eπίλυσης: Bιβλιοθήκες Την αρχική τάση για γλώσσες που παρέχουν όλες τις πιθανές συναρτήσεις, αντικατέστησαν γλώσσες µε διαµορφωτές που µετέθεσαν της συναρτήσεις σε διαµορφωτές-βιβλιοθήκες. Mε αυτό τον τρόπο δεν εξελίσσεται η γλώσσα αλλά οι διαµορφωτές. 4.1.3 ιαµοίρασµασυµβάσεων: ιασυνδέσεις Οι αυτοτελείς διεργασίες µίας διασύνδεσης µεταξύ πελάτη και εξυπηρετητή δεν έχουν νόηµα από µόνες τους εκτός και αν πληρούν κάποιες συµβάσεις. Οι διασυνδέσεις και οι συνθήκες τους είναι λογικά οι µικρότερες οντότητες σε ένα σύστηµα. Οι διεργασίες διασύνδεσης δεν έχουν νόηµα από µόνες τους. Όλες µαζί συνθέτουν τα θεµέλεια για αλληλεπίδραση πελάτη και εξυπηρετητή. Πρότυπα, Yποδοµές και Aρχιτεκτονικές 4

4.1.4 ιαµοίρασµα A ρχιτεκτονικής Aλληλεπίδρασης: Πρότυπα. Η συστηµατική ταξινόµηση της µικρότερης επαναλαµβανόµενης αρχιτεκτονικής σε αντικειµενοστρεφή λογισµικά έχει καταλήξει στην ταξινόµηση προτύπων σύµφωνα µε τα ακόλουθα τέσσερα στοιχεία. Όνοµα προτύπου. Το πρόβληµα που λύει το πρότυπο περιλαµβανοµένων και των συνθηκών εφαρµογής του προτύπου. Η λύση του προβλήµατος: Παράγοντες και ο ρόλος τους, ευθύνες, σχέσεις και συνεργασίες. Ο γενικός σχεδιασµός και η εφαρµογή. Επακόλουθα: Αναλογίες χώρου και χρόνου. Θέµατα γλώσσας και εφαρµογής. Επενέργειες στην ελαστικότητα (flexibility), επέκταση (extensibility) και φορητότητα (portability). Ένα από τα ταξινοµηθέντα πρότυπα είναι το Observer(βλ. σχ.41) που ορίζει µίαπρος-πολλές εξάρτηση αντικειµένων: όταν ένα αντικείµενο αλλάζει όλες οι εξαρτήσεις ενηµερώνονται για την αλλαγή. Tοπρότυπο παρουσιάζεται στο διάγραµµα που ακολουθεί. H ιδέα είναι ότι αν το πρόβληµα αποµονωθεί, το κατάλληλο πρότυπο µπορεί να επιλεγεί. Aνδηλαδή οι συνθήκες στις οποίες το πρότυπο προσαρµόζεται απαιτούν όπως ένα υποκείµενο (Subject) πρέπει να παρατηρηθεί από N παρατηρητές (observers) τότε το πρότυπο Observer επιλέγεται, η δε µέθοδος Update() µπορεί να χρειάζεται επιπλέον στοιχεία για να πληροφορήσει τους παρατηρητές για τις αλλαγές. Tα πρότυπα είναι µικροαρχιτεκτονικές που δείχνουν την αλληλεπίδραση µεταξύ αντικειµένων στη λύση ενός προβλήµατος. Σε σύγκριση µε τις υποδοµές είναι: Περισσότερο θεωρητικά και λιγότερο εξειδικευµένα (οι υποδοµές είναι εφαρµογές υποσυστηµάτων ενώ τα πρότυπα δεν έχουν καµµία άµεση εφαρµογή). Μικρότερα αρχιτεκτονικά στοιχεία από τις υποδοµές (µερικά πρότυπα υπάρχουν από το διαµελισµό συγκεκριµένων µεθόδων). Πρότυπα, Yποδοµές και Aρχιτεκτονικές 5

ιαµοίρασµα Aρχιτεκτονικής Aλληλεπίδρασης: Πρότυπα Subject Attach(Observer) Detach(Observer) N otify() observers Observer Update() For For all all O O observers{ observers{ O, O, in in Update()} Update()} ConcreteSubject subject ConcreteSubject GetState() SetState() subjectstate Update() observerstate return subjectstate observerstate= Subject,GetState() Σχ. 4.1 TοΠρότυπο Observer Πρότυπα, Yποδοµές και Aρχιτεκτονικές 6

4.1.5 ιαµοίρασµα Yποσυστηµάτων Aρχιτεκτονικής : Yποδοµές Οι υποδοµές είναι σύνολα συνεργαζόµενων τάξεων που συναρµολογούν ένα επαναχρησιµοποιούµενο συστατικό. εν εστιάζονται κατ ανάγκη σε συγκεκριµένες περιοχές εφαρµογών, έχουν όµως συγκεκριµένες έννοιες εφαρµογών, παρόλο που η λειτουργικότητα των τάξεων µπορεί να παραµένει άγνωστη. Οι τάξεις πρέπει να είναι ανοικτές για διαδοχή εφαρµογών (υποτάξεις). Παροχή αυτόµατων επιλογών για ελάττωση του φόρτου ελαφριάς χρήσης µίας υποδοµής. Οι παραδοσιακές υποδοµές ασχολούνται πλήρως µε τις τάξεις και τη διαδοχή τους. M ία εφαρµογή διαδοχής τάξεων τείνει να βασίζεται στη γνώση της λειτουργικότητας των υπερτάξεων και γι αυτό καλείται διαφανής (whitebox) επαναχρησιµοποίηση. Aντίθετα η σύνθεση αντικειµένων (τάξεων), που βασίζεται στη µεταβίβαση, απλά στηρίζεται στις διασυνδέσεις των εµπλεκόµενων αντικειµένων και γι αυτό καλείται αδιαφανής (blackbox) επαναχρησιµοποίηση. Ο ρόλος των υποδοµών:pυθµίζουν την αλληλεπίδραση των εµπλεκοµένων τάξεων. M ετηνπαγοποίησηορισµένων αποφάσεων σχεδιασµού στην υποδοµή, οι κρίσιµες πλευρές των διεργασιών µπορούν να σταθεροποιηθούν. Έτσι επιταχύνεται η δηµιουργία συγκεκριµένων λύσεων. Εφαρµογές µε πολλά πρότυπα σε µία υποδοµή: το πρότυπο Model View Controller (MVC) µπορεί να διαχωρισθεί στούς εξής ρόλους-πρότυπα: Παρατηρητής (Observer). Σύνθετος (Composite). Στρατηγική (Stragety). Σ αυτό το πρότυπο υπάρχουν τρείς βασικές λειτουργικότητες. Η αντιπροσώπευση πληροφοριών (Model),η παρουσίαση πληροφοριών (View) και η ερµηνεία των χειρισµών (Controller).Πολλές παρουσιάσεις όπως text outline,textpreview, word count, Flesch reading Easescore,graphics,scrolling- panning- zooming views, κ.α. µπορούν να συσχετισθούν µε µία και µόνο αντιπροσώπευση ενώ κάθε παρουσίαση έχει τη δική της ερµηνεία χειρισµών (βλ. σχ. 2). Πρότυπα, Yποδοµές και Aρχιτεκτονικές 7

ιαµοίρασµα Aρχιτεκτονικής Yποσυστηµάτων: Yποδοµές Ο µικρός αριθµός τάξεων (Model,View, Controller) θα οδηγούσε στο συµπέρασµα ότι το MVC είναι πρότυπο και όχι υποδοµή. Tοπραγµατικό MVC είναι πολυπλοκότερο και το πρότυπο Observer συσχετίζει τα πρότυπα Model και View. Tοπρότυπο Stragety βοηθά το Controller να ερµηνεύσει τα γεγονότα χρηστών σε διεργασίες του View. M ία υποδοµή αποτελεί ένα υψηλότερο επίπεδο αρχιτεκτονικής αλλά και υποδοµής που ολοκληρώνει χαµηλώτερου επιπέδου έννοιες όπως τα πρότυπα. O βαθµός επιβολής κανόνων ολοκλήρωσης εξαρτάται από την τεχνολογία υποδοµής που χρησιµοποιείται. Aν για παράδειγµα είναι τάξεις µε Smalltalk τότε δεν υπάρχουν σηµαντικοί περιορισµοί. Aνη υποδοµή περιορίζεται από κλειστούς διαµορφωτές ή πακέτα µε απρόσιτες εφαρµογές τότε υπάρχουν αρκετοί περιορισµοί ολοκλήρωσής της. User Display Controller View client Model client Σχ. 4.2 H Yποδοµή MVC Πρότυπα, Yποδοµές και Aρχιτεκτονικές 8

ιαµοίρασµα Aρχιτεκτονικής Yποσυστηµάτων: Yποδοµές Tρόποι σχεδιασµού υποδοµών: Από τη βάση στην κορυφή οδηγούµενοι από τεκµηριωµένα πρότυπα. Από την κορυφή προς τα κάτω οδηγούµενοι από καλά καθορισµένους στόχους. Οι στόχοι περιέχουν αλληλοεπιδράσεις και οντότητες. Oι περιοχές των υποδοµών περιέχουν τεχνικές ενώ οι στόχοι παρέχουν λύσεις σε πραγµατικές εφαρµογές. 4.1.6 ιαµοίρασµα ολικής δοµής: αρχιτεκτονικές Bασικές αρχές επιτυχηµένων αρχιτεκτονικών: Επίπεδα, αυστηρά και µη. Ιεραρχίες και ετεραρχίες. Σ ένα αυστηρά διαβαθµισµένο σύστηµα κάθε επίπεδο στηρίζεται στις λειτουργίες του αµέσως χαµηλότερου επιπέδου. Οι λειτουργίες κάθε επιπέδου γίνονται εύκολα κατανοητές από τις διασυνδέσεις του ανώτερου και του χαµηλώτερου επιπέδου (βλ. σχ 4.3). Όµως αυτή η εξάρτηση των επιπέδων από το πιό κάτω επίπεδο περιορίζει σηµαντικά τη δυνατότητα επεκτάσεων στο συγκεκριµένο επίπεδο, τη στιγµή που κάποιο άλλο πιό χαµηλό επίπεδο θα µπορούσε να υποστηρίξει την αντίστοιχη επέκταση. Γι αυτό κάθε επίπεδο ξεχωριστά πρεπει να είναι ανοικτό σε επεκτάσεις. Αυτό µπορεί τελικά να οδηγήσει και στην τακτική της απ ευθείας πρόσβασης σε ακόµη χαµηλώτερα επίπεδα (δηλ. χωρίς ενδιάµεσες διασυνδέσεις, βλ. σχ. 4.4). Tέτοια λογική πρόσβασης έχει και η χαλαρή διαβάθµιση, στην οποία όµως κάθε επέκταση στηρίζεται σε ένα και µόνο επίπεδο. Το κύριο µειονέκτηµα είναι ότι χάνεται η συνοχή (και ευκολία πρόσβασης) των εφαρµογών του κάθε επιπέδου (βλ. σχ. 4.5). Πρότυπα, Yποδοµές και Aρχιτεκτονικές 9

ιαµοίρασµα ολικής δοµής: αρχιτεκτονικές εφαρµογές βιβλιοθήκες Πυρήνας λειτουργικού Οδηγοί Συσκευών Μηχανολογικός εξοπλισµός Σχ. 4.3 Aυστηρή αρχιτεκτονική διαβάθµηση. Πρότυπα, Yποδοµές και Aρχιτεκτονικές 10

ιαµοίρασµα ολικής δοµής: αρχιτεκτονικές Σχ. 4.4 Eπεκτάσηµη αυστηρή διαβάθµηση. Πρότυπα, Yποδοµές και Aρχιτεκτονικές 11

ιαµοίρασµα ολικής δοµής: αρχιτεκτονικές Σχ. 4.5 Xαλαρή διαβάθµηση. Πρότυπα, Yποδοµές και Aρχιτεκτονικές 12

4.1.7 Συστήµατα και Yποσυστήµατα -Iεραρχίες Yποδοµών Tα πρότυπα είναι µικροαρχιτεκτονικές. Οι υποδοµές είναι υποσυστήµατα αρχιτεκτονικών.tα περισσότερα µεγάλα συστήµατα αποτελούνται από πολλαπλές υποδοµές. Στις πολλαπλές αυτές υποδοµές βρίσκουµε τις υποδοµές τάξεων και σε πιό πάνω ιεραρχικό επίπεδο τις υποδοµές υποσυστήµατος. Η κάθε υποδοµή στο επίπεδο του υποσυστήµατος αποτελείται από προκατασκευασµένα συστήµατα, που µερικώς συνδυάζουν υποσυστήµατα-κλειδιά. Tελικά στα διάφορα επίπεδα ιεράρχισης, υπάρχουν οι ανάγκες των υψηλοτέρων επιπέδων (όπως νέοι οργανικοί ρόλοι) που πρέπει να ταιριάζουν µε τις συγκεκριµένες λεπτοµέρειες που διεκπεραιώνουν τα χαµηλότερα επίπεδα (όπως η σειρά εκτέλεσης). H λύση είναι η δηµιουργία µίας δεύτερης τάξης υποδοµών που η δοµή της ταιριάζει µε τις παραδοσιακές υποδοµές των τάξεων. 4.2 ιαλειτουργικότητα, εξέλιξη και ανακατασκευή Tα συστήµατα στη γένεσή τους συνήθως παρουσιάζουν µία συνεκτική αρχιτεκτονική µε καθαρούς στόχους στα χαµηλώτερα επίπεδα λειτουργικότητας. Στη εξέλιξή τους όµως η αρχιτεκτονική αποσαφινίζεται και στην προσπάθεια υϊοθέτησης νέας τεχνολογίας το σύστηµα χρειάζεται ανακατασκευή. Ένα καθαρό προτέρηµα των αρχιτεκτονικών που αποτελούνται από συστατικά είναι η υποστήριξη σε ανακατασκευές συγκεκριµένων περιοχών. Επιπλέον, η ιεραρχική αρχιτεκτονική επιτρέπει την επιλεκτική ανακατασκευή των υποσυστηµάτων. Η σύζευξη πρέπει να αποφεύγεται ιδιαίτερα στα υψηλά επίπεδα των υποσυστηµάτων. M ία διαφορετική αλλά σχετική προοπτική είναι της διαλειτουργικότητας δύο ξεχωριστών συστηµάτων.στο εννοιολογικό αυτό επίπεδο απαιτούνται κοινοί ορισµοί. Στο υποδοµικό αυτό επίπεδο απαιτούνται κοινές διασύνδέσεις. Tελικά σαν συµπέρασµα πρέπει να πούµε ότι η εισαγωγή κάθε νέας τεχνολογίας προϋποθέτει ικανοποιητική αρχιτεκτονική προσέγγιση όλων των σχετικών επιπέδων. Πρότυπα, Yποδοµές και Aρχιτεκτονικές 13