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

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

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

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

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

Προγραμματισμός ΙI (Θ)

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Ε-85: Ειδικά Θέµατα Λογισµικού

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

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

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

Καλώς ήλθατε στην παρουσίαση του έργου SmartGov.

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Περιεχόμενο του μαθήματος

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Σύστηµα CORBA. Κατανεµηµένα Συστήµατα 18-1

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

Εγγραφές Δραστηριοποίησης

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

Αρχιτεκτονική πελάτη-εξυπηρέτη Οι διεργασίες που εκτελούνται στο δίκτυο είναι είτε πελάτες (clients) είτε εξυπηρέτες (servers). Εξυπηρέτης: παθητικός,

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

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

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

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Προγραμματισμός Ι (ΗΥ120)

Κατανεμημένα Συστήματα

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

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

Παράλληλη Επεξεργασία

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΤρόποςΑξιολόγησης: α) Εργαστήρια (Προαιρετικάµε 20% - 35% βαρύτητα µόνοθετικά) β) Τελική Γραπτή Εξέταση

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

ΑΕΠΠ Ερωτήσεις θεωρίας

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

Κεφάλαιο 6 ο. Διαχείριση στοιχείων λογισμικού

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Ανάλυση Απαιτήσεων Απαιτήσεις Λογισµικού

Η γλώσσα προγραμματισμού C

Περιπτώσεις αλλαγής Λογιστικού Σχεδίου.

ALERTS ή EDA (Event Driven Actions)

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή

Απλοποιεί τα γεγονότα έτσι ώστε να περιγράφει τι έχει γίνει και όχι πως έχει γίνει.

Κλάσεις και Αντικείµενα

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

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

Περιεχόμενο του μαθήματος

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

Το λειτουργικό σύστημα. Προγραμματισμός II 1

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Γενικά. Σχήµα Ι: Επικοινωνία Client-Server, ExecuteCommand TuniConnection

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

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Καρακασίδης Αλέξανδρος Καστίδου Γεωργία Παπαφώτη Μαρία Πέτσιος Κων/νος Στέφανος Σαλτέας Καλογεράς Παναγιώτης. Threads in Java ΝΗΜΑΤΑ ΣΤΗ JAVA

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

Εργαλεία του JDK. Β.1 Εργαλεία του JDK. Β.2 Μεταγλωττιστής javac. Τα πιο βασικά εργαλεία του JDK είναι τα παρακάτω.

Εισαγωγή στον προγραμματισμό

Εισαγωγή στα Αντικείμενα

Κεφάλαιο 2: Μεταφραστές

Κατανεμημένα Συστήματα: Θεωρία και Προγραμματισμός. Ενότητα # 6: Κατανομή φόρτου Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

J. Glenn Brookshear. Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

Δημιουργία & Τερματισμός Διεργασιών. Προγραμματισμός II 1

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Εγγραφές Δραστηριοποίησης

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

Εικονική Μνήμη (Virtual Μemory)

VOICE MODULE Πλακέτα χειρισμού / τηλεφωνητή Ο ΗΓΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. ΟΛΟΚΛΗΡΩΜΕΝΗ ΣΕΙΡΑ ΣΥΣΤΗΜΑΤΩΝ ΣΥΝΑΓΕΡΜΟΥ IDS HELLAS

ιαχείριση Τηλεφωνικών Κλήσεων

Το λειτουργικό σύστημα. Προγραμματισμός II 1

Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

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

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

12.6. Άσκηση 6 - [αξιοποίηση γραφικής διεπαφής (GUI)] (έκδοση 2006)

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

Εγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting)

A ΣΥΡΜΑΤΟΣ ΣΥΝΑΓΕΡΜΟΣ GSM GSM 020 Ο ΗΓΙΕΣ ΧΡΗΣΗΣ

Οδηγίες χρήσης για το τηλεφωνικό κέντρο: TC-206D

Transcript:

Kεφάλαιο Πέντε - Tα Όρια του Προγραµµατισµού 1

5.1 ιαφορετικές Mεθόδοι Προγραµµατισµού για ιαφορετικούς Προγραµµατιστές Πρότυπες δραστηριότητες που δεν συνταυτίζονται µε τον καθ αυτό προγραµµατισµό αλλά είναι σχετικές. Σύνταξη απαιτήσεων. Eισαγωγή των οντοτήτων µίας εφαρµογής. Περιοδικές σχέσεις και µεταβολές. Κατασκευή οπτικών εφαρµογών και αρµολόγηση συστατικών. Eισδοχή και λειτουργία προκατασκευασµένων συστατικών, βάση σταθερών εξαρτήσεων. Eστιασµός στη λειτουργικότητα. υτό είναι καλό για µικρό αριθµό συστατικών. Για µεγαλύτερους αριθµούς χρειάζεται η προσθήκη οπτικών ιδιοτήτων για βελτίωση της αντίληψης του συστήµατος. Γραφή. Στις οπτικές εφαρµογές τα σύµβολα µπορούν να χρησιµοποιούνται σαν λέξεις. Εισαγωγή συµπεριφοράς αλλά όχι νέων θέσεων.στοχεύει στο να δέσει τα υπάρχοντα συστατικά (σε ψηλό επίπεδο). υτό είναι πιθανό να καταλήξη σε συστατικά γραφής. Για κάθε µία από τις πρότυπες δραστηριότητες υπάρχει και το κατάλληλο πρότυπο προγραµµατισµού. Tα Όρια του Προγραµµατισµού 2

5.2 Προγραµµατισµός για ένα Σύστηµα Oι κατάλληλες θεωρητικές έννοιες για υποστήριξη του προγραµµατισµού εξαρτώνται από το πρότυπο προγραµµατισµού. Στο παραδοσιακό πρότυπο υπάρχει σύνθεση από βιβλιοθήκες εννοιών επεξεργασίας, συν η αυστηρή και άµεση αξιολόγηση (πρότυπο καλέσµατος επεξεργασίας). Eπίσης το ίδιο συµβαίνει µε τον αντικειµενοστρεφή προγραµµατισµό µε το κάλεσµα µεθόδων. Παροµοίως και σε ψηλότερες βαθµίδες προγραµµατισµού όπου δεν υπάρχουν στατικές αναφορές σε συγκεκριµένες επεξεργασίες ή µεθόδους. Ο καλών και ο καλούµενος δεν ελέγχουν το σύνδεσµό τους και οι διασυνδέσεις περιγράφουν και τους δύο. Tα καινούργια πρότυπα κοιτούν για συνδέσµους παρά για κλήσεις. Οι σύνδεσµοι είναι συµµετρικοί σε αντίθεση µε τις ασύµµετρες κλήσεις. Στις διασυνδέσεις εισαγωγής υπάρχουν κλήσεις σηµείων. Οι διασυνδέσεις εξαγωγής δίδουν τις δυναµικές διεργασίες (πιθανά συµβάντα). Tα Όρια του Προγραµµατισµού 3

5.3 Συνδεσµοστρεφής Προγραµµατισµός Στις κλήσεις του σπονδυλωτού προγραµµατισµού υπάρχει αλληλοδιαδοχή συστατικών. Eπίσης µπορεί ένα συστατικό να κληθεί από άλλο που έχει παρατηρήσει ένα συγκεκριµένο συµβάν (event).σε αυτή τη µεθοδολογία µε την εξάρτηση παρατηρητών από συµβάντα οι πληροφορίες ωθούνται προς τα έξω αµέσως µετά τη λήψη τους (πρότυπο ωθήσεως). Στόν παραδοσιακό προγραµµατισµό η κάθε επεξεργασία ξέρει πια άλλη καλεί και υπάρχει σύνδεσµος ή παράκαµψη (indirection) µεταξύ καλούσης και καλούµενης (πρότυπο έλξεως). Στο πρότυπο ωθήσεως, οι παρακάµψεις είναι αναπόφευκτες λόγω άγνοιας της πηγής του συµβάντος για τους ενδιαφερόµενους παραλήπτες. Και στις δύο περιπτώσεις παρακάµψης τα πρότυπα τα χειριζόµαστε µε τον ίδιο τρόπο. Όταν οι παρακάµψεις (µε ρύθµιση κατά την εκτέλεση µίας διεργασίας) αντικαθιστούν τις εξαρτήσεις κλήσεων, αυτό καλείται συνδεσµοστρέφεια (connection-oriented program ming). υτοί οι µηχανισµοί συνδέσµων µπορούν να αποτελέσουν ένα ενδιάµεσο συστηµα επικοινωνιών, µε βάση τη διανοµή µηνυµάτων. Αυτό καλείται µηνυµατοστρεφής ενδιάµεσος (message-oriented middleware).σε αντικειµενοστρεφείς ενδιάµεσους όπως η DCO M και η COR τα συµβάντα και τα µηνύµατα είναι το ίδιο σηµαντικά. O συνδεσµοστρεφής προγραµµατισµός εφαρµόζεται κυρίως στο συνδυασµό προκατασκευασµένων συστατικών ή παραγώγων τους αντικειµένων. υτό µπορεί να παροµοιαστεί µε την περίπτωση ενώσεως ολοκληροµένων κυκλωµάτων στα οποία υπάρχει συµµετρία συνδέσµων για εισαγωγή και εξαγωγή πληροφοριών. Η διαφορά στις διασυνδέσεις εισαγωγής και εξαγωγής έγκειται στη σχέση τους µε ένα συστατικό. Στη περίπτωση διασύνδεσης εξαγωγής, αυτή καθορίζει τα δυνατά συµβάντα και µηνύµατα. Στη περίπτωση του ασύνδετου συµβατού προτύπου, καθορίζονται άµεσοι ή στατικοί συνδέσµοι, δηλ.υπάρχει άµεση παραµετροποίηση µε αναφορές διεργασιών και µεθόδων. Tα Όρια του Προγραµµατισµού 4

Συνδεσµοστρεφής Προγραµµατισµός Οι ίδιες οι συνδέσεις είναι ανεξάρτητες από τις έννοιες της εισαγωγής, εξαγωγής και επιπέδων. Ένα συστατικό υποδοµής µπορεί να δίνει σε ένα κοινό επίπεδο πολλές διασυνδέσεις. Ένα συστατικό γι αυτή την υποδοµή εισάγει το κοινό επίπεδο και δηλώνει ποιές διασυνδέσεις χρησιµοποιεί. Tέτοιες συνδέσεις υπάρχουν οριζόντια σε αυτό το επίπεδο των συστατικών ή λογικά σ ένα ψηλότερο επίπεδο που εδραιώνει τις συνδέσεις. Στο σχήµα 5.1 επεξηγούνται οι συνδέσµοι δύο αντοκειµένων. Tο συστατικό Ψ1 έχει διασυνδέσεις εξαγωγής και V και εισαγωγής και U. Σύνδεσµοι έχουν αποκατασταθεί µεταξύ των διασυνδέσεων και. U X C1 C2 V Y Σχ. 5.1 Συνδέσεις, διασυνδέσεις εισαγωγής - εξαγωγής. Tα Όρια του Προγραµµατισµού 5

5.4 νώτερος Συνδεσµοστρεφής Προγραµµατισµός Πολλαπλές συνδέσεις γίνονται από µία διασύνδεση εξαγωγής σε µία οµάδα εισαγωγής. Στο σχ. 5.2 η εξαγωγή συνδέεται µε δύο διασυνδέσεις εισαγωγής των συστατικών C2 και C3. Φυσικά µπορεί να συµβεί και το αντίθετο. U X C2 C1 Y V Z C3 Σχ. 5.2 Πολλαπλές συνδέσεις. Tα Όρια του Προγραµµατισµού 6

νώτερος Συνδεσµοστρεφής Προγραµµατισµός H συσχέτηση διασυνδέσεων µπορεί να γίνεται µέσω άλλων συστατικών-αντικειµένων, όπως φαίνεται από το σχ. 5.3. Tέτοια συστατικά-διόδοι διηθούν, µετρούν,καταχωρούν για επανάληψη και γενικά διαχειρίζονται κλήσεις. U X C2 C1 Y G V Z C3 Σχ. 5.3 O διαχωρισµός της οµάδας των παραληπτών από τις πηγές και υποδοχές των µηνυµάτων (ή της διόδου των συµβάντων από τις πηγές και τις υποδοχές των συµβάντων). Tα Όρια του Προγραµµατισµού 7

νώτερος Συνδεσµοστρεφής Προγραµµατισµός ν µία οµάδα υποστηρίζει συγκεκριµένες διασυνδέσεις όπως η (σχ. 5.3), τότε απλά η διαχείρηση της οµάδας περνά µηνύµατα στα µέλη. ν οι κλήσεις γίνονται δια µέσου των ιδίων µεθόδων ή διαδικασιών (µεταβιβαζόµενες µεταξύ συστατικών), τότε η δηµιουργία οµάδων διόδων για την µετάδοσή τους είναι εύκολη. Tέτοια τυποποιηµένα µυνήµατα αποκαλούνται αντικείµενα συµβάντων. Ο κώδικας που ακολουθεί επεξηγεί την µετάδοση µηνυµάτων σε οµάδες. Η σύνταξηείναι ComponentPascal. DEFINITION MessageGroups; TYPE Sink()=POINTER TO STRCT RECORD (s:sink()) Receive (VR message: ), NEW, SRCT END Group()= POINTER TO STRCT RECORD (g:group()) Register (s:sink()),new,srct; (g:group()) Unregister (s:sink()),new,strct; (g:group()) Send(VR message: ),NEW,STRCT END; END MessageGroups. Η παράµετρος NEW ορίζει την µέθοδο σαν νέα. Η παράµετρος STRCT ορίζει την µέθοδο σαν µη συγκεκριµένη. Η χρησιµοποίηση παραµέτρων στους διαµορφωτές µηνυµάτων εξασφαλίζει τη συµβατότητά τους µε τους υποδοχείς. Σε αυτό το παράδειγµα η παραµετροποίηση δείχνει ότι οι τύποι οµάδων και υποδοχέων µπορούν να εφαρµοσθούν µε απόλυτους τύπους µηνυµάτων. Mία υποδοχή που δέχεται µόνο µηνύµατα τύπου MyMessage θα δηλωθεί σαν: TYPE MyMessage=RECORD END; MySink=RECORD (MessageGroups,Sink(MyMessage)) END; Και για να δέχεται υπο-τύπους του MyMessage: TYPE MyMessage=EXTENSILE RECORD END; H ιδιότητα EXTENSILE δείχνει ότι ο τύπος του My Message δεν είναι τελικός. Tα Όρια του Προγραµµατισµού 8

νώτερος Συνδεσµοστρεφής Προγραµµατισµός Ο πάρακάτω κώδικας δείχνει την οµαδοποίση µετάδοσης από το διαµορφωτή roadcast. MODULE roadcast; IMPORT Sets, MessageGroups; TYPE caster(a)=pointer TO RECORD(MessageGroups.Group()) sinks: Sets.Set(MessageGroups.Sink()) END; PROCEDURE<> SendOne(s:MessageGroups.Sink(a);VR message: ); (* aux for send *) EGIN s.send(message) END SendOne; PROCEDURE<> (g:caster()) Register(s:MessageGroups.Sink()); EGIN g.sinks.include(s) END Register; PROCEDURE<> (g:caster()) Unregister (s:messagegroups.sink()); EGIN g.sinks. Exclude(s) END Unregister; PROCEDURE<> (g:caster()) Send(VR message:); EGIN Sets.Do(g.sinks,SendOne,m) END Send; PROCEDURE<> New*():MessageGroups.Group(); (*simple factory*) VR bc:caster(); EGIN NEW(bc);bc.sinks:=Sets.New(); RETURN bc END New; END roadcast. Tα Όρια του Προγραµµατισµού 9

νώτερος Συνδεσµοστρεφής Προγραµµατισµός Στη Component Pascal ο αστερίσκος χρησιµοποιείται για να προσδιορίζει διεργασίες που δύνανται να εισαχθούν και σε άλλους διαµορφωτές. υτό συµβαίνει µε τη διεργασία roadcast.new. Οι διεργασίες δεν παραµετροποιούνται άµεσα. Υπονοούνται στις παραµέτρους τη στιγµή της κλήσης. Ο ορισµός του διαµορφωτή Sets: DEFINITION Sets; TYPE Set()=POINTER TO LIMITED RECORD (s:set()) Include (elem: POINTER TO ); (s:set()) Exclude (elem:pointer TO ); (s:set()) Contains(elem:POINTER TO ):OOLEN; (s:set()) Size():INTEGER END; Op(,)=PROCEDURE (elem:pointer TO ;VR arg: ); PROCEDURE<> New():Set(); PROCEDURE<> Do(s:Set();op:Op(<);VR arg:); (*other definitions deleted*) END Sets. Η ιδιότητα LIMITED εµποδίζει την επέκταση του καταχωρητή και περιορίζει την ενεργοποίησή του στο συγκεκριµένο διαµορφωτή. Ο διαµορφωτής Sets µπορεί να διαθέσει το αντικείµενο Set. Η µέθοδος Send (του roadcast) χρησιµοποιεί τη διεργασία Sets.Do για να καλέσει την SendOne άπαξ για κάθε στοιχείο του Set. Αντίθετα µε την Java η Component Pascal µπορεί να ορίσει απλαισίωτους τύπους αντικειµένων. Η γενική παράµετρος µπορεί να δοθεί στο πλαίσιο της καλούσης διεργασίας. Tα Όρια του Προγραµµατισµού 10

5.5 Συµβάντα και Mηνύµατα ήλωση και µετάδοση µηνυµάτων. Με µικρές διαφοροποιήσεις έτσι δουλεύει η Javaeans, η COR Event Service, η CO M connection points,και η Microsoft messaging service. Στο παράδειγµα της Connection Pascal ο καλών µία διεργασία πρέπει να περάσει από δύο στάδια. ηµιουργία του αντικειµένου (µηνύµατος) και παροχή αρχικών τιµών. Αντίθετα µε τη Component Pascal(απλαισίωτοι τύποι αντικειµένων) η δηµιουργία αντικειµένων-τάξεων στην Javaeans είναι δαπανηρή. Επίσης απαραίτητη είναι η χρησιµοποίηση κατασκευαστών συµβάντων-αντικειµένων που να εξασφαλίζουν την παροχή αρχικών τιµών. Αποστολή µηνύµατος στις υποδοχές. Ο παραµετρικός πολυµορφισµός της Component Pascal υποστηρίζει τον προσδιορισµό του τύπου µηνύµατος που πρέπει να περασθεί. Ενώ µε τις Javaeans και COR Event Service η χρησιµοποίηση συγκεκριµένων τύπων συµβάντων- αντικειµένων, αφήνει την πιθανότητα χρησιµοποίησης αγνώστων τύπων µηνυµάτων στις πηγές και τις υποδοχές. Oι διόδοι µετάδοσης: Μπορούν να ορίζονται από το Event Service (COR ). Μπορούν να διασυνδέονται µε παρακάµψεις από το σύστηµα (ή τα µηνύµατα θα ταξιδεύουν κατ ευθείαν από την πηγή στην υποδοχή -Javaeans,CO M). Σχετικά µε τις υποδοχές οι υποδοχές: Μπορεί να υπάρχει ξεχωριστή υποδοχή-αντικείµενο για κάθε σύνδεση στο ίδιο αντικείµενο (CO M). Μπορεί να χρησιµοποιηθεί αποδιανοµέας-µετασχηµατιστής για ξεχωρισµό διαφορετικών καλεσµάτων από διαφορετικές πηγές (Javaeans). Tα δυνατά συµβάντα ή διασυνδέσεις είναι γνωστά αν καθορίζονται στον ορισµό του συστατικού. Στη Javaeans η διασύνδεση των αντικειµένων περιέχει µία µέθοδο για κάθε δυνατό συµβάν που µπορεί να ακουστεί. Mέ τη δυναµική απόσπαση των µεθόδων αυτών γίνονται γνωστά και τα αντίστοιχα συµβάντα. Tα Όρια του Προγραµµατισµού 11

5.6 Συµβάντα Έναντι Kλήσεων Tα συµβάντα αντιστοιχούν µε κλήσεις διαδικασιών µε τη διαφορά ότι Έχουν άγνωστες υποδοχές. εν αναµένονται αποτελέσµατα. Ειδοποιούν άλλες διεργασίες. H COR EventServices και η Javaeans δεν επιτρέπουν επιστροφή τιµών µε συµβάντα. Σε περίπτωση που απαιτείται ανταπόκριση τότε το συµβάν-αντικείµενο µπορεί να µεταφέρει κάποια αναφορά στη διεργασία που το συλλέγει, που να προκαλεί την αποστολή απαντητικού συµβάντος. Άλλοι µηχανισµοί όπως το CO M Connectable Objects υποστηρίζουν απ ευθείας επιστροφή αποτελεσµάτων σε αντικείµενα-συµβάντα. Tα Όρια του Προγραµµατισµού 12

5.7 ιαδοχή Συµβάντων -ιτιότητα, Συναγωνισµός και στάθεια Kαταστάσεων H επικοινωνία βασιζόµενη σε συµβάντα είναι ασύγχρονη. H σχετική σειρά µε την οποία τα συµβάντα φθάνουν στις υποδοχές είναι ακαθόριστη. Στο σχ. 5.4 παρατείθεται ένα παράδειγµα. νη πηγή πυροδοτεί το συµβάν σ1 ενώ οι υποδοχές και Γ προσέχουν, η υποδοχή δέχεται το σ1 και αµέσως πυροδοτεί το σ2, για το οποίο προσέχουν η Γ και η. H σειρά µε τη οποία τα συµβάντα παρατηρούνται από τη Γ δεν καθορίζεται.σε µονονηµατικό (single-threaded) σύστηµα ευνοήται η άφιξη του σ2 πριν από το σ1 στη Γ. Tοπέρασµα του συµβάντος ελέγχεται από τη που προκαλεί την παρατήρηση του σ2 από τη Γ.Συνήθως η παρατήρηση των συµβάντων µε τη σειρά που πηγάζουν εξασφαλίζεται µόνο όταν αυτά έχουν την ίδια πηγή. σ2 Γ σ1 Σχ. 4 Προώθηση συµβάντων Το ακόλουθο σχήµα 5.5περιγράφει τη φυσική σειρά δηλ. αυτήν που είναι πιό κοντά στην αιτιατή κατανοµή των συµβάντων. Το κάτω του σχήµατος περιγράφει την επαναληπτική σειρά κλήσεων, που είναι και η φυσική σειρά σε συστήµατα που δεν χρησιµοποιούν ενδιάµεσους καταχωρητές και ξεχωριστά νήµατα κατανοµής συµβάντων.h σειρά κατανοµής είναι τυχαία. Ένα ακόµη πιο σοβαρό θέµα στην υποδοχή σηµάτων είναι αυτό της ασταθούς κατάστασης την ώρα της λήψης του συµβάντος. υτή η αστάθεια γίνεται αισθητή σε άλλα αντικείµενα για ένα µικρό χρονιικό διάστηµα. υτό διορθώνεται µε µηχανισµό καθυστέρησης. Άν η σχετική σειρά της άφιξης γεγονότων εξαρτάται από δυναµικές συνθήκες, τότε τα συµβάντα µπορεί να φθάσουν στη σωστή σειρά µόνο σε ορισµένες περιπτώσεις. Κατά κάποιο τρόπο υπάρχει συναγωνισµός στα συµβάντα για το πιο θα φθάσει πρώτο στο στόχο του. H µη αιτοκρατία στο χρόνο αντικαθίσταται από ένα πολύ µεγάλο αριθµό σειρών καταστάσεων, σε ένα πολύπλοκο σύστηµα συστατικών. Tα Όρια του Προγραµµατισµού 13

ιαδοχή Συµβάντων -ιτιότητα, Συναγωνισµός και στάθεια Kαταστάσεων σ1 Γ σ2 σ1 Γ σ2 Σχ. 5.5 Σειρά συµβάντων.φυσική σειρά (πάνω) έναντι σειράς επαναληπτικής κλήσης (κάτω). Tα Όρια του Προγραµµατισµού 14

5.8 ργή Σύνδεση: πόσπαση ιασυνδέσεων και Mεταπρογραµµατισµός Οι διασυνδέσεις, ειδοποιήσεις και συµβάντα είναι περιπτώσεις αργής σύνδεσης (very late binding). Oι τύποι διασύνδεσης είναι γνωστοί αφού γίνει η µεταγλώττιση. Η σύνδεση καλούντως και καλουµένου συµβαίνει αφού αρχίσει η εκτέλεση. Συµβαίνει εντούτοις οι τύποι των διασυνδέσεων να γίνονται γνωστοί την ώρα της εκτέλεσης (περιπτώσεις µεταφραστών- Web browser-applets). Φύλαξη πληροφοριών από µεταγλώττιση για έλεγχο την ώρα της εκτέλεσης (διαδικασία επαναυπόθεσης - reification) - αντανακλαστικά λέγονται τα συστήµατα που χρησιµοποιούν τέτοιες πληροφορίες. Ο χειρισµός τέτοιων πληροφοριών λέγεται µεταπρογραµµατισµός. Tο I M s system objectmodel(som) είναι ένα τέτοιο σύστηµα που υποστηρίζει µεταπρογραµµατισµό - ορισµός νέων διασυνδέσεων και σύνθεση νέων τάξεων κατά την εκτέλεση καθώς και δηµιουργία νέων περιπτώσεων.το SO M εποµένως µπορεί να επεµβαίνει στο εκτελεστικό πρότυπο. Tο Java Core Reflection Service: δέν επιτρέπει µεταπρογραµµατισµό. Αφήνει στοιχειώδεις εκτελεστικού τυπου πληροφορίες στη Java Language, δηλ. Επιτρέπει τη διαδικασία επαναυπόθεσης για όλες τις πλευρές ενός αντικειµένου, ή µίας τάξης, ή µίας διασύνδεσης και δυναµική ενεργοποίηση του. Tο CO M type library που εξοπλίζει συστατικά µε τύπους διασυνδέσεων αποσπάσεως (dispatch interface) για τους οποίους επιτρέπει τον έλεγχο (σύµφωνα µε τους τύπους που περιέχει). Οι διασυνδέσεις απόσπασης µπορούν να ενεργοποιηθούν δυναµικά. H παροχή διασυνδέσων αποσπάσης έχει µεγαλύτερο κόστος από την απ ευθείας κλήση διαδικασιών. H παροχή διαδικασιών σε συστατικά και µε τους δύο τρόπους καλείται διπλή διασύνδεση. Tέλος στην COR αποθήκες διασυνδέσεων επαναυποθέτουν όλες τις Object Management Group /Interface Definition Language πληροφορίες (αν συγκεκριµένα αντικείµενα µπορούν να εφαρµόσουν συγκεκριµένες διασυνδέσεις). Οι κλήσεις σε τέτοιες διασυνδέσεις γίνονται µε δυναµικές ενεργοποιήσεις διασυνδέσεων και δυναµικές διασυνδέσεις προσαρµογής. Tα Όρια του Προγραµµατισµού 15

ργή Σύνδεση: πόσπαση ιασυνδέσεων και Mεταπρογραµµατισµός Οι αποσπασµένες διασυνδέσεις µπορούν εύκολα να κατασκευάσουν διεργασίες αναµετάδοσης και προσαρµογής χωρίς εξειδικευµένο κώδικα. υτό βέβαια υπονοεί τη χρησιµοποίηση αντανακλαστικών διαδικασιών ακόµα και αν η διασύνδεση είναι στατικά γνωστή. Για διεργασίες που στοιχίζουν πολύ απο µόνες τους αυτό µπορεί να δικαιολογηθεί. Αλλοιώτικα εµποδίζει τον αποτελεσµατικό ευθύ προγραµµατισµό του ως συστατικού και πρέπει να αποφεύγεται. Επίσης τα στατικά είναι λιγότερο ασφαλούς τύπου από τις συµβατικές διασυνδέσεις.οι διπλές διασυνδέσεις είναι συµβιβασµός των δύο. λέποντας τις διαφορετικές µεθόδους κλήσεων και συνδέσεων: Κλήσεις διεργασιών και στατικές µεθόδοι κλήσεων: στατικός έλεγχος και σύνδεση στη µεταγλώττιση. Αντανακλαστικές κλήσεις: δυναµικός έλεγχος και σύνδεση κατά την εκτέλεση. Μεταβλητές διεργασίες και απόσπαση µεθόδων: στο ενδιάµεσο των προηγούµενων βρίσκεται ο στατικός έλεγχος µε δυναµική σύνδεση. Tα Όρια του Προγραµµατισµού 16

5.9 ιαβάθµηση Eλευθερίας: ποµόνωση Λαθών και Στατική σφάλεια Tο θέµα της ασφάλειας λαθών συνήθως το εξασφαλίζει η γλώσσα προγραµµατισµού. ν όχι τότε η ασφάλεια αφήνεται σε χαµηλότερα επίπεδα. Παραδοσιακά,στο επίπεδο του λειτουργικού συστήµατος εφαρµόζεται η αποµόνωση διεργασίας (process isolation), µε τη βοήθεια του µηχανικού εξοπλισµού. Στην περίπτωση των συστατικών αυτό κοστίζει πολύ. H µέθοδος αποµόνωσης λαθών λογισµικού συνίσταται στην ενίσχυση του κώδικα συστατικού κατά τη φόρτωση του. 5.10 Kαταγραφή και Γραφή Πρότυπα συµβάντων και αποσπασµένες διασυνδέσεις υποστηρίζουν την καταγραφή δραστηριοτήτων. Η αναµετάδοση όταν όλα τα σχετικά αντικείµενα είναι δραστήρια µπορεί να προκαλέση αστάθεια αναλόγως της κατάστασης των αντικειµένων. H καταχώρηση συµβάντων δεν είναι αρκετή στήν περίπτωση συστηµάτων αυτόµατης γραφής για επανεκτέλεση. Αυτή η γραφή θα πρέπει να είναι εφαρµόσιµη σε παρόµοιες παρά σε ίδιες καταστάσεις. Θα ήταν δηλαδή υπερβολικό να καταγράφεται επακριβώς η ταυτότητα των σχετικών αντικειµένων. θα ήταν βασικό να χρησιµοποιείται µία συµβολική αναφορά αντικειµένων που είναι κατανοητή στο πλαίσιο του αντικειµένου. Στην επανάληψη µία γραφή θα µπορεί να ερµηνευθεί στο τρέχων πλαίσιο και στις συµβολικές αναφορές. Tα Όρια του Προγραµµατισµού 17