Ανάπτυξη επιχειρησιακών εφαρμογών Πρότυπα σχεδίασης, πλαίσια και ενδιάμεσο λογισμικό Ανδρέας Παπασαλούρος Τμήμα Μαθηματικών

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Advertisements

Παρουσίαση PocketBiz Field Service Κωνσταντίνος Τζαβάρας Sales Manager.
ΠΜΣ ΠΡΟΗΓΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Κατεύθυνση ΤΕΔΑ Τεχνολογίες Διαχείρισης Ασφάλειας Security Management Engineering Τμήμα Πληροφορικής ΠΑΝΕΠΙΣΤΗΜΙΟ.
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
MySQL + Γλώσσα Προγραμματισμού
Βάσεις Δεδομένων 1 T.Manavis– N.Kyritsis.
ΕΠΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ – ΜΗΧΑΝΗΣ Εαρινό Εξάμηνο 2007 Παρουσίαση Εργαλείου Ανάπτυξης JBuilder Τσουρού Σταυρούλα, ΑΜ 708 Μαδεμλής Ιωάννης, ΑΜ 669.
Πρότυπα Σχεδίασης (Design Patterns)
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
Σχεδιάζοντας Εφαρμογές DNA A Crash Course Άρης Οικονομόπουλος.
Βάσεις Δεδομένων (ΚΒΔ)
Σχεδιασμός ηλεκτρονικών υπηρεσιών μεγάλης κλίμακας και πολυπλοκότητας 24/10/2002.
Κατεύθυνση Τεχνολογιών Ηλεκτρονικών και Κινητών Υπηρεσιών
JAVA και SQL Δαμιανός Χατζηαντωνίου
Ε ΝΤΟΠΙΣΜΟΣ Κ ΙΝΟΥΜΕΝΩΝ Α ΝΤΙΚΕΙΜΕΝΩΝ ΠΑΡΟΥΣΙΑΣΗ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗΣ ΕΡΓΑΣΙΑΣ Βόγκλης Κωνσταντίνος Τσίπουρας Μάρκος.
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
1 Εισαγωγή στις Βάσεις Δεδομένων  Ανάγκη Αποθήκευσης και Διαχείρισης Δεδομένων  Συστήματα Αρχείων  Συστήματα Βάσεων Δεδομένων  Παραδοσιακές και Σύγχρονες.
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
Open Source από την μεριά του ΙΤ provider Μάνος Μαργαρίτης CTO EXODUS AE.
ΕΡΓΑΛΕΙΑ ΓΙΑ ΤΗΝ ΑΝΑΠΤΥΞΗ ΔΟΜΩΝ ΑΠΑΣΧΟΛΗΣΗΣ ΚΑΙ ΣΤΑΔΙΟΔΡΟΜΙΑΣ ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΚΑΙ ΔΙΑΔΥΚΤΙΑΚΗ ΠΥΛΗ ΔΑΣΤΑ Κ. Κοντογιάννης Αν. Καθηγητής ΣΗΜΜΥ, Ε.Μ.Π.
1 Εισαγωγή στις Βάσεις Δεδομένων  Ανάγκη Αποθήκευσης και Διαχείρισης Δεδομένων  Συστήματα Αρχείων  Συστήματα Βάσεων Δεδομένων  Παραδοσιακές και Σύγχρονες.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ Π.Μ.Σ. ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ. Καθηγητής, Ε.Μ.Π.
PHP/MYSQL ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΟΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ ΤΥΡΟΛΟΓΟΥ ΓΛΥΚΕΡΙΑ ΑΜ 875 ΡΙΖΟΥ ΔΕΣΠΟΙΝΑ ΑΜ 816.
Ημέρα 1η.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Διασύνδεση Java Εφαρμογών με ΒΔ Π. Φιτσιλής 1.
3 Αρχιτεκτονική Συστημάτων  Κατηγορίες χρηστών ΣΔΒΔ  Αρχιτεκτονική ANSI/SPARC  Γλώσσες ερωτημάτων  Μοντέλα δεδομένων  Λειτουργίες ΣΔΒΔ.
Network Inference Μπαλάφα Κασιανή - Αδριανή Πλασταρά Κατερίνα.
ΟΡΙΣΜΟΣ ΣΥΜΠΕΡΙΦΟΡΑΣ ΔΙΑΓΡΑΜΜΑTA ΑΛΛΗΛΕΠΙΔΡΑΣΗΣ
Microsoft BizTalk Server 2002 Αθανασίου Σπύρος Ιωάννης Κουβάρας.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
University of Crete HY566-Semantic Web CS566 – Semantic Web Computer Science Department - UoC Heraklion 1 April, 2003 Παπαγγελής Μάνος, Κοφφινά Ιωάννα,
Τμήμα Πληροφορικής και Τηλεπικοινωνιών
Πανεπιστήμιο Κύπρου – Τμήμα Πληροφορικής ΕΠΛ446-Προχωρημένες Βάσεις Δεδομένων Ζωγραφάκης Ιωάννης.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
Πρότυπα Σχεδίασης Design Patterns Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφ. Πληροφορικής.
Τεχνολογία ΛογισμικούSlide 1 Τεχνολογία Απαιτήσεων u Καθορίζει τι θέλει ο πελάτης από ένα σύστημα λογισμικού.
Μπόλαρη Αγγελικη(1451) Επιβλέπων Βολογιαννίδης Σταύρος ΑΤΕΙ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ Σέρρες 2013.
Αρχιτεκτονική Λογισμικού. Αρχιτεκτονική Συστήματος Λογισμικού Η Αρχιτεκτονική περιγράφει τη γενική στατική δομή του συστήματος, τα βασικά δομικά του στοιχεία,
2 Μικρές Επιχειρήσεις Μεσαίες Επιχειρήσεις Μεγάλες Επιχειρήσεις Καταναλωτές Κατηγορία Πελατών Ολοκληρωμένες Λύσεις Servers Γενικής Χρήσης Αριθμός Χρηστών.
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο 1: Εισαγωγή.
Εισαγωγή στη C# Μαρίνος Θεμιστοκλέους Ανδρούτσου 150 Γραφείο 206 Τηλ Ώρες Γραφείου: Τετάρτη 5-6 μμ.
Προγραμματισμός και Διαχείριση Επιχειρηματικών Πόρων - ERP Μάθημα 4: Τεχνολογική Υποδομή ERP.
1 ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ Μηχανογράφηση υπηρεσιών καταστημάτων Self-Video TMHMA ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τ.Ε.Ι. ΣΕΡΡΩΝ.
ΥΠΟΛΟΓΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ ΓΙΑ ΣΥΣΤΗΜΑΤΑ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Αντικειμενοστραφής προγραμματισμός Web Site: ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ.
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κ.ΑΛΑΦΟΔΗΜΟΣ καθηγητής Δ.Παπαχρήστος μέλος ΕΔΙΠ ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΠΑΝΕΠΙΣΤΗΜΙΟ Α ΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.
Βάσεις Δεδομένων Ι 4η διάλεξη
ΤΙΤΛΟΣ ΕΡΓΑΣΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ανδρέου Βασίλης.
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΔΙΑΧΕΙΡΙΣΗ ΤΕΧΝΙΚΩΝ ΕΡΓΩΝ
Cloud Computing Το cloud computing παρέχει υπηρεσίες υπολογισμού, λογισμικού, πρόσβασης σε δεδομένα και αποθήκευσης που δεν απαιτούν ο τελικός χρήστης.
Αρχιτεκτονική Συστημάτων
Βάσεις Δεδομένων Ι Εισαγωγή
Software Engineering for Web Applications
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Εισαγωγή στις βάσεις δεδομένων ISBN
Java DataBase Connectivity
Wrapper Classes, Abstract Classes and Interfaces
Αρχιτεκτονική Συστημάτων
ΕΝΟΤΗΤΑ 1 – Υλικό, Λογισμικό και Εφαρμογές
Ειδικά Θέματα στον προγραμματισμό Υπολογιστών
Αρχιτεκτονική Συστημάτων
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
ΕΙΣΑΓΩΓΗ ΣΤΗ UML ΕΙΣΑΓΩΓΗ ΣΤΗ UML.
Databases Θ. Βαρβαρίγου Καθηγήτρια ΕΜΠ Τηλ
Συγγραφέας: Ζαγκότας Στεφανος Επιβλέπων Καθηγητής: Ούτσιος Ευάγγελος
Εφαρμογές ιστού και δημιουργία ιστοσελίδων
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Μεταγράφημα παρουσίασης:

Ανάπτυξη επιχειρησιακών εφαρμογών Πρότυπα σχεδίασης, πλαίσια και ενδιάμεσο λογισμικό Ανδρέας Παπασαλούρος Τμήμα Μαθηματικών

Περίγραμμα Βασικές έννοιες  Σχεδιαστικά πρότυπα  Πλαίσια Σχεδίαση επιχειρησιακών εφαρμογών Ενδιάμεσο λογισμικό για επιχειρησιακές εφαρμογές: Η πλατφόρμα Java Enterprise Edition  Μια μελέτη περίπτωσης

Σχεδιαστικά πρότυπα (design patterns) Σχεδιαστικές λύσεις οι οποίες παρατηρούνται επανειλημένα σε παρόμοια προβλήματα. Αρχικά προτάθηκαν από τον αρχιτέκτονα C. Alexander για το πεδίο της αρχιτεκτονικής. Ιδιαίτερα διαδεδομένη είναι η χρήση τους στο πεδίο της αντικειμενοστρεφούς σχεδίασης.  Προάγουν την δημιουργία επαναχρησιμοποιήσιμου κώδικα Εμποδίζουν το πρόβλημα της “ανακάλυψης του τροχού.

Ένα παράδειγμα: Observer Σκοπός  Δημιουργία μιας σχέσης ένα προς πολλά μεταξύ αντικειμένων έτσι όταν ένα αλλάζει, όλα τα αντικείμενα που εξαρτώνται από αυτό να ειδοποιούνται και να αλλάζουν αυτόματα.  Επιτρέπει το συγχρονισμό αλληλεπιδρώντων αντικειμένων μέσω ενός μηχανισμού διάδοσης των αλλαγών

Observer Περιβάλλον  Ένα σύνολο από αλληλεπιδρώντα αντικείμενα Πρόβλημα  Η ενημέρωση των αντικειμένων για την αλλαγή της κατάστασης ενός από αυτά Λύση  Ένα αντικείμενο (subject) καταγράφει και ενημερώνει τα υπόλοιπα που ενδιαφέρονται για την κατάστασή του (observers)

Observer: Δομή Subject attach() detach() notify() Observer > update() * observers * ConcreteObserver observerState update() ConcreteSubject subjectState getState() setState() subject for all o in observers { o.update() } observerState = subject.getState()

Observer: Λειτουργία s : ConcreteSubjecto1 : ConcreteObservero2 : ConcreteObserver setState() notify() update() getState() update() getState()

Observer: Παράδειγμα

Observer

Observer: Παράδειγμα abstract class GraphMode { //Mode of mouse functions int mode; //The list of the observers Vector modeListeners = new Vector(); void notify() { for (Enumeration e = modeListeners.elements();e.hasMoreElements();) { ModeListener listener= (ModeListener) e.nextElement(); listener.update(); } void addModeListener(ModeListener listener) { modeListeners.add(listener); }

Observer : Παράδειγμα class ConcreteCanvasMode extends CanvasMode { void setMode(int mode) { this.mode = mode; notifyListeners(); } int getMode() { return this.mode; }

Observer: Παράδειγμα public interface ModeListener { void update(); } public class GraphFrame extends JFrame implements ModeListener { GraphCanvas canvas; ConcreteCanvasMode mode; public GraphFrame() { canvas=new GraphCanvas(); mode=GraphCanvas.getMode(); mode.addModeListener(this); } public void update() { int mode = canvas.getMode(); }

Observer Συνέπειες  Χαλαρή σύζευξη μεταξύ Subject και Observer  Υποστήριξη της επικοινωνίας  Μη αναμενόμενες ανανεώσεις (αρνητική) Γνωστές Χρήσεις  Ενδεικτικά: Java Observable core API class, User interface frameworks: GEF (Eclipse), MVC (Smalltalk) Άλλες ονομασίες  Dependents, Publish-Subscribe

Πλαίσια (frameworks) Ένα σύνολο από συνεργαζόμενες κλάσεις οι οποίες συνιστούν ένα επαναχρησιμοποιούμενο σχέδιο για μια συγκεκριμένη κατηγορία λογισμικού Παραδείγματα  Graphics Editing Framework  Spring  Rails (Ruby)

Επιχειρησιακές εφαρμογές (enterprise applications) Εφαρμογές για τη διαχείριση δεδομένων σε εταιρείες, οργανισμούς Άλλη ονομασία: Πληροφοριακά συστήματα Παραδείγματα:  συστήματα χρηματιστηριακών συναλλαγών  τραπεζικά συστήματα  Συστήματα διαχείρισης αποθηκών και ανεφοδιασμού  Συστήματα ηλεκτρονικού εμπορίου (B2B και B2C)

Χαρακτηριστικά Ε.E. Διαχείριση μεγάλου όγκου δεδομένων Διαχείριση αποθηκευμένων (persistent) δεδομένων Ταυτόχρονη πρόσβαση στα δεδομένα (για ανάγνωση και καταχώρηση Πρόσβαση από ετερογενείς διασυνδέσεις χρήστη  Web  Κινητά τηλέφωνα  Εφαρμογές desktop σε περιβάλλον τοπικού δικτύου

Απαιτήσεις Ε.E. (2) Ολοκλήρωση / διασύνδεση με άλλες επιχειρησιακές εφαρμογές  Συστήματα άλλων οργανισμών  Βάσεις δεδομένων  Προϋπάρχοντα (legacy) συστήματα Σύνθετη επιχειρησιακή λογική  Σύνθετο μοντέλο δεδομένων  Λειτουργικές και μη λειτουργικές απαιτήσεις οι οποίες είναι πιθανό να μεταβάλλονται με το χρόνο

Προσεγγίσεις για την ανάπτυξη Ε. Ε. Αρχιτεκτονική δύο ζωνών  (2-tier ή client-server) Αρχιτεκτονική τριών ζωνών (3-tier ή, γενικά, n-tier)

Αρχιτεκτονική δύο ζωνών Το στρώμα παρουσίασης περιέχει  Την επιχειρησιακή λογική  Τη διασύνδεση με τη βάση δεδομένων

Αρχιτεκτονική δύο ζωνών -2 Παραδείγματα:  MS Windows Data Access Controls  Frontpage Data Access Pages Πλεονεκτήματα  Ευκολία  Ταχύτητα στην ανάπτυξη

Προβλήματα της αρχιτεκτονικής δύο ζωνών Ισχυρή σύζευξη (tight coupling) μεταξύ κώδικα παρουσίασης (φόρμες) και επιχειρησιακής λογικής Ισχυρή σύζευξη μεταξύ υποσυστήματος παρουσίασης και του υποσυστήματος αποθήκευσης δεδομένων Πλεονασμός (επανάληψη) κώδικα σε ετερογενείς εφαρμογές πελάτη  (π.χ. Web, mobile, desktop, command line) Δυσκολία διαχείρισης αλλαγών στην επιχειρησιακή λογική

Αρχιτεκτονική τριών ζωνών

Πλεονεκτήματα  Ευκολία στη διαχείριση  Δυνατότητα σύνδεσης ετερογενών εφαρμογών πελάτη (π.χ. εφαρμογές Windows, Web, mobile, κλπ)  Πρόσβαση στην εφαρμογή μέσα από ένα ενιαίο API Μειονεκτήματα  Μεγάλο μέγεθος εφαρμογής  Η διαχείριση αντικειμένων της εφαρμογής στη μνήμη και συγχρονισμός τους με τη βάση δεδομένων έχουν υψηλό κόστος ανάπτυξης (ακόμη και με τη χρήση εξειδικευμένου λογισμικού)

Ε. Ε. : Αντικειμενοστρεφής σχεδίαση και σχεσιακές βάσεις δεδομένων Το αντικειμενοστρεφές σχέδιο ενός λογισμικού συστήματος απεικονίζεται άμεσα σε αντικειμενοστρεφείς γλώσσες προγραμματισμού (Java, C++, C#, κλπ) Στις επιχειρησιακές εφαρμογές είναι απαραίτητη η αποθήκευση των αντικειμένων σε βάσεις δεδομένων (persistent object storage) Η χρήση αντικειμενοστρεφών συστημάτων διαχείρισης βάσεων δεδομένων δεν αποτελεί λύση  Έλλειψη ωριμότητας  Ευρεία διάδοση σχεσιακών Συστημάτων Διαχείρισης Βάσεων Δεδομένων (Oracle, SQL Server, MySQL, PostgreSQL, κλπ)

Το πρόβλημα Πώς σχεδιάζουμε (και υλοποιούμε) μια εφαρμογή ώστε  Να ικανοποιεί τις αρχές της αντικειμενοστρεφούς σχεδίασης  Υποσύνολο των αντικειμένων του συστήματος να αποθηκεύονται σε υπάρχοντα σχεσιακά συστήματα βάσεων δεδομένων … με δεδομένο ότι τα δύο μοντέλα είναι εγγενώς διαφορετικά (Object-Relational Impedance Mismatch)

Οργάνωση της ζώνης επιχειρησιακής λογικής: Σχεδιαστικά πρότυπα Ορισμός κλάσεων που αντιστοιχούν σε μια (ή περισσότερες) κλήσεις προς τη βάση δεδομένων (Transaction Script) Ορισμός μιας κλάσης (και ενός αντικειμένου) για κάθε πίνακα στη βάση δεδομένων (Table Module) Ορισμός ενός πλήρους αντικειμενοστρεφούς μοντέλου των δεδομένων της εφαρμογής (Domain Model)

Transaction Script Κλάσεις που υλοποιούν τη λογική της εφαρμογής ως διαδικασίες που καλούν τη βάση δεδομένων Οι διαδικασίες αποτελούν μεθόδους της κλάσης Transaction Script Κάθε τέτοια μέθοδος ορίζει στην ουσία μια δοσοληψία (transaction) στο σύστημα Κατάλληλο για μικρές εφαρμογές

Table Module Κάθε κλάση αντιστοιχεί σε έναν πίνακα της βάσης Ένα μοναδικό αντικείμενο της κλάσης χρησιμοποιείται για την πρόσβαση σε όλα τα στοιχεία του πίνακα στη βάση Έτσι, ένα στιγμιότυπο (instance) μιας κλάσης Table Module αντιστοιχεί σε όλες τις γραμμές (rows) του αντίστοιχου πίνακα στη βάση Μια κλάση Table Module είτε παρέχει ένα μοναδικό στιγμιότυπο (singleton) είτε αποτελεί μια συλλογή από στατικές μεθόδους.

Παράδειγμα Table Module Για κάθε πίνακα στη βάση ορίζεται μια κλάση Table Module Δεν ορίζονται συσχετίσεις μεταξύ των κλάσεων, καθώς τα στιγμιότυπα των κλάσεων δεν αντιστοιχούν σε γραμμές του αντίστοιχου πίνακα

Domain Model Οι πίνακες της βάσης απεικονίζονται ως αντικείμενα στη μνήμη Κάθε στιγμιότυπο μιας κλάσης αντιστοιχεί σε μια γραμμή του αντίστοιχου πίνακα Πλεονεκτήματα του Domain Model είναι η φυσική αναπαράσταση των οντοτήτων του πεδίου εφαρμογής σε κλάσεις της εφαρμογής  Κατανοητή σχεδίαση, ευανάγνωστος κώδικας, εύκολη συντήρηση του προγράμματος Προκύπτουν προβλήματα όπως:  Ο συγχρονισμός των δεδομένων στη μνήμη και στο δίσκο  Ο συγχρονισμός της ταυτόχρονης προσπέλασης των αντικειμένων από πολλούς πελάτες  Διαχείριση δοσοληψιών (ACID transactions) Εξειδικευμένο λογισμικό είναι διαθέσιμο για την για την απεικόνιση αντικειμένων στη βάση δεδομένων και την αντιμετώπιση των παραπάνω προβλημάτων (Object/Relational Mapping tools) Ο απ’ ευθείας προγραμματισμός απεικόνισης αντικειμένων στη βάση είναι συνήθως ιδιαίτερα σύνθετος και δε συνίσταται.

Παράδειγμα Domain Model

Τεχνικές για την απεικόνιση κλάσεων σε πίνακες Table Data Gateway  Αντικείμενο που ενσωματώνει την πρόσβαση σε έναν πίνακα της βάσης δεδομένων (μέσω μεθόδων Create, Read, Update, Delete – CRUD) Row Data Gateway  Αντικείμενο που ενσωματώνει την πρόσβαση σε μια εγγραφή πίνακα (μέσω μεθόδων Insert, Update, Delete) Active Record  Αντικείμενο που ενσωματώνει την πρόσβαση σε μια εγγραφή πίνακα καθώς και τη λογική της εφαρμογής που σχετίζεται με το συγκεκριμένο αντικείμενο Data Mapper  Χρησιμοποιείται για την απεικόνιση κλάσεων σε πίνακες κυρίως όταν η σχέση μεταξύ τους δεν είναι ένα προς ένα.

Απεικόνιση διαγράμματος κλάσεων σε σχεσιακή βάση δεδομένων Απεικόνιση κλάσεων Απεικόνιση σχέσεων

Απεικόνιση κλάσεων Μια κλάση απεικονίζεται σε έναν πίνακα της σχεσιακής βάσης δεδομένων Κάθε χαρακτηριστικό της κλάσης απεικονίζεται σε ένα πεδίο του πίνακα Είναι δυνατόν περισσότερες από μια κλάσεις να απεικονιστούν στον ίδιο πίνακα

Απεικόνιση συσχέτισης ένα προς πολλά * *

Απεικόνιση συσχέτισης πολλά προς πολλά Ορίζεται ένας πίνακας συσχέτισης * * employees skills

Απεικόνιση κληρονομικότητας Κληρονομικότητα «συγκεκριμένου» πίνακα (Concrete Table Inheritance) αναπαράσταση μιας ιεραρχίας κλάσεων με ένα πίνακα για κάθε συγκεκριμένη κλάση Κληρονομικότητα απλού πίνακα (Single Table Inheritance) αναπαράσταση μιας ιεραρχίας κλάσεων με ένα πίνακα για όλες τις κλάσεις Κληρονομικότητα πίνακα κλάσεων (Class table Inheritance) αναπαράσταση μιας ιεραρχίας κλάσεων με ένα πίνακα για κάθε κλάση

Concrete Table Inheritance Εφαρμόζεται σε μια σχέση κληρονομικότητας μεταξύ μιας αφηρημένης κλάσης και συγκεκριμένων απογόνων της Ορίζεται ένας πίνακας ανά συγκεκριμένη κλάση

Concrete Table Inheritance: Παράδειγμα

Single Table Inheritance Στον πίνακα της βάσης ορίζεται ένα πεδίο που καθορίζει τον τύπο της εγγραφής Σε κάθε εγγραφή ενδέχεται να υπάρχουν πεδία που χρησιμοποιούνται μόνο από συγκεκριμένες υποκλάσεις με αποτέλεσμα τη σπατάλη χώρου

Single Table Inheritance: Παράδειγμα

Class Table Inheritance Ορίζεται σχέση ξένου κλειδιού μεταξύ των πινάκων που αντιστοιχούν στις κλάσεις με σχέση κληρονομικότας Για την πρόσβαση στα στοιχεία μιας κλάσης απαιτείται η προσπέλαση περισσότερων από ενός πινάκων στη βάση

Class Table Inheritance (παράδειγμα)

Διασύνδεση με βάσεις δεδομένων Βιβλιοθήκες κλάσεων που επιτρέπουν τη σύνδεση με βάσεις δεδομένων και εκτέλεση ερωτημάτων σε μορφή SQL μέσα από γλώσσες προγραμματισμού JDBC (Java) DAO, ADO.NET Άλλες (π.χ. σύνδεση PHP scripts με ΣΔΒΔ όπως PostgreSQL, MySQL, κλπ)

Παράδειγμα: JDBC import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; //... try { Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=some"); // Do something with the Connection //... } catch (SQLException ex) { // handle any errors System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); //... MySQL Connector/J Documentation

Παράδειγμα: JDBC (συνέχ.) ResultSet rs = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT foo FROM bar"); // or alternatively, if you don't know ahead of time that // the query will be a SELECT... if (stmt.execute("SELECT foo FROM bar")) { rs = stmt.getResultSet(); } // Now do something with the ResultSet.... } catch (SQLException sqe) { // it is a good idea to release }

Πλαίσια απεικόνισης O/R Τι προσφέρουν  Διαφανή υποστήριξη «παραμενόντων αντικειμένων» (transparent persistence)  Caching  Διαχείριση δοσοληψιών (Transaction management) Τεχνικές  Patterns που αναφέρθηκαν παράπάνω  Εμπλουτισμός πηγαίου κώδικα και αντικειμενικού κώδικα  Απεικόνιση με βάση την ανίχνευση τύπων σε χρόνο εκτέλεσης (reflection) και μετα-δεδομένα

Ένα παράδειγμα με το Hibernate Δύο κλάσεις του πεδίου εφαρμογής:  Book  Author  Με σχέση πολλά προς πολλά.

Η κλάση Book package public class private Integer id; private String title; private String private Set authors = new HashSet (); private Date publicationDate; public Book() { } // standard getters/setters follow here... }

Η κλάση Author package public class private Integer id; private String name; public Author() { } // standard getters/setters follow here... }

Η κλάση Book Manager class BookManager { private void createAndStoreBook(String title, Date theDate) { Session session = HibernateUtil.currentSession(); Transaction tx = session.beginTransaction(); Book aBook = new Book(); aBook.setTitle(“Introduction to Software Engineering”); //... session.save(theBook); tx.commit(); HibernateUtil.closeSession(); }

Πλαίσια απεικόνισης O/R Java  TopLink (Oracle)  JDO (Sun)  Hibernate (RedHat).ΝΕΤ  Object Spaces (MS Visual Studio)  Deklarit  Vanatec Άλλα  Ruby on Rails Active Records Framework  …

.NET O/R Mapping frameworks Object Spaces (MS Visual Studio) Deklarit Vanatec

Άλλες προσεγγίσεις Ψηφιδοστρεφείς (component based) τεχνολογίες  J2EE Entity Beans  COM+ components Οι παραπάνω προσεγγίσεις είναι δυνατόν να χρησιμοποιηθούν σε συνδυασμό με τα patterns που παρουσιάστηκαν

Τεχνολογικά χαρακτηριστικά Επ. Εφ. Κατανεμημένες – υποστήριξη από cluster αρχιτεκτονικές υλικού Ανάγκη για διαχείριση φορτίου (load balancing) Αυτόματη/διαφανής ανάκαμψη (fail-over) Διαχείριση δοσοληψιών (ιδιότητες ACID) Ασφάλεια Οργάνωση πόρων (resource pooling)

Ενδιάμεσο Λογισμικό (middleware) Τα παραπάνω χαρακτηριστικά καλύπτονται από κατάλληλες πλατφόρμες ενδιάμεσου λογισμικού (middleware) Κυριότερες πλατφόρμες: Java Enterprise Edition (Java EE).NET

Απεικόνιση της Java EE στην αρχιτεκτονική τριών ζωνών

Προδιαγραφές Web (ζώνης παρουσίασης Servlets (μικροϋπηρεσίες)  web components ικανά για τη δημιουργία δυναμικού περιεχομένου  για διάδραση μεταξύ πελάτη που βρίσκεται σε Web περιβάλλον και του κομματιού business logic της εφαρμογής που βρίσκεται στο server Java Server Pages – JSPs

EJB Enterprise Java Beans - EJBs (Επιχειρησιακά συστατικά λογισμικού) Η προδιαγραφή EJB αποτελεί τον πυρήνα της πλατφόρμας Java EE

Άλλες σχετικές τεχνολογίες και API Java Database Connectivity (JDBC) Java Naming and Directory Interface (JNDI) Java Message Service (JMS) Java Authentication and Authorization Service (JAAS) Remote Method Invocation (RMI) Java Transaction API

Διακομιστές εφαρμογών (application servers) Λογισμικό το οποίο υλοποιεί τις προδιαγραφές των υπηρεσιών της Java EE “An application server, in an n-tier architecture, is a server that hosts an API to expose business logic and business processes for use by third-party applications” [Wikipedia] Παραδείγματα:  Jboss (Red Hat)  Oracle OC4J (Oracle Corporation)  Websphere (IBM)

Υποδοχείς (containers) - 1 Οντότητες λογισμικού οι οποίες εκτελούνται εντός των εξυπηρετητών (servers) και είναι υπεύθυνές, η κάθε μια για διαχείριση ειδικών τύπων συστατικών λογισμικού. Παρέχουν το περιβάλλον εκτέλεσης των συστατικών λογισμικού που ένας προγραμματιστής αναπτύσσει.

Τύποι υποδοχέων Υποδοχέας εφαρμογών (Application container)  Φιλοξενεί αυτόνομες Java εφαρμογές (JVM) Υποδοχέας μικροεφαρμογών (Applet container)  Παρέχει ένα περιβάλλον εκτέλεσης για μικροεφαρμογές (applets). (JVM) Υποδοχέας Ιστού (Web container)  Φιλοξενεί web εφαρμογές Ιστού, όπως servlets και Java Server Pages (JSP) – Παράδειγμα: Apache Tomcat Υποδοχέας επιχειρησιακών εφαρμογών (Enterprise container)  Φιλοξενεί EJB συστατικά λογισμικού

Υποδοχείς -3

Enterprise Java Beans Τ ριών ειδών συστατικά  Session beans : προορίζονται για την υλοποίηση υπηρεσιών κα μεταφορά δεδομένων.  Entity beans: ύλοποίηση αντικειμένων του πεδίου εφαρμογής (domain objects) και αποθήκευσή τους στη βάση  Message-driven beans : έχουν σχεδιαστεί για να παρέχουν ασύγχρονή ανταλλαγή μηνυμάτων, δηλαδή ό καλών δεν περιμένει απάντηση κατά την κλήση μιας υπηρεσίας

Stateless Session EJBeans Ένα stateless session bean είναι φτιαγμένο για να φέρει εις πέρας, τους στόχους μιας λειτουργίας εντός του χρόνου μιας απλής μεθόδου. Τα stateless beans επιτρέπεται να υλοποιούν πολλές business λειτουργίες, άλλα κάθε μέθοδος δεν μπορεί να θεωρεί ότι κάποια άλλη είχε κληθεί πριν από αυτή.

Stateless Session EJBeans -2 Τα stateless session beans αποτελούνται από τα ακόλουθα στοιχεία:  Τα business interfaces : τα οποία περιέχουν τις δηλώσεις των business μεθόδων οι οποίες πρέπει να είναι ορατές από τις εφαρμογές πελάτη.  Από μια κλάση bean: η οποία περιέχει την υλοποίηση κάθε business μεθόδου που εκτελείται από αυτό.

Stateless Session EJBeans -3 Απομακρυσμένη και τοπική διασύνδεση (interface)

Παράδειγμα τοπικής διασύνδεσης

Παράδειγμα stateless session bean

Stateful Session Bean Προσφέρουν τη δυνατότητα για πολλαπλές κλήσεις σε μια υπηρεσία από τους πελάτες και να έχουν τη δυνατότητα κάθε κλήση τους να μπορεί να έχει πρόσβαση ή να μπορεί να αποκτήσει τα αποτελέσματα προηγούμενων κλήσεων. Η κάρτα αγοράς(shopping cart) μιας εφαρμογής οn-line αγορών(e-commerce).

Entity Beans Τα entity beans είναι αντιπροσωπεύουν μόνιμα δεδομένα (persistent). Επίσης επιτρέπουν διαμοιραζόμενη πρόσβαση, έχουν πρωτεύοντα κλειδιά, και μπορούν να λάβουν μέρος σε συσχετίσεις με άλλα entity beans. Απλές Java classes με κατάλληλες επισημάνσεις (annotations) Καλύνται μέσω session beans υλοποιούν την επιχειρησιακή λογική της εφαρμογής.

Παράδειγμα Entity Bean

Παράδειγμα: Μια εφαρμογή διαχείρισης μαθημάτων SchoolApp

SchoolApp: Διάγραμμα κλάσεων πεδίου εφαρμογής

SchoolApp: Σχεσιακό διάγραμμα

SchoolApp

Μειονεκτήματα Πολύπλοκες τεχνολογίες, σχετικά δύσκολες στην εκμάθηση Δεν είναι κατάλληλη για μικρές εφαρμογές. Διαρκώς εξελισσόμενη προδιαγραφή: Τρέχουσα προδιαγραφή: Java EE 5. Προηγούμενη: J2EE 1.4.  Αντίστοιχη εξέλιξη στους application servers  Απαιτείται διαρκής ενημέρωση Σχετικά μεγάλος αριθμός αρχείων ρυθμίσεων και μεταδεδομένων:  Απαραίτητη η χρήση εξειδικευμένων εργαλείων ανάπτυξης

Εργαλεία ανάπτυξης NetBeans Eclipse (Eclipse IDE for Java EE Developers ) JDeveloper  Χρησιμοποιεί τεχνικές UML modelling Model Driven Architecture (MDA) για την απλοποίηση της σχεδίασης/ ανάπτυξης.

Βιβλιογραφία Fowler, M., Patterns of Enterprise Application Architecture, Addison-Wesley, Hibernate Reference Documentation, Matthews, M., MySQL Connector/J Documentation