ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ» της ΜΑΡΙΑΣ ΜΟΥΡΑΤΙΔΟΥ

Σχετικά έγγραφα
ΜΕΤΑΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Επιβλέπων Καθηγητής: Αλέξανδρος Χατζηγεωργίου Εξεταστές: Χρήστος Γεωργιάδης. Τμήμα Εφαρμοσμένης Πληροφορικής

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΜΑΘΗΜΑ: Διαδικτυακές Εφαρμογές

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

Πληροφορική στιςεπιχειρήσεις

Εισαγωγή στη J2EE. Μέρος 2

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

Ανάπτυξη εφαρμογής διαχείρισης μαθημάτων με χρήση τεχνολογιών Java 2 Enterprise Edition (J2EE)

Τι είναι η Spring. Η Spring είναι ένα ελεύθερο (open source) περιβάλλον εργασίας για εφαρμογές Java. Μπορεί να περιγραφεί ως:

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. J2EE Εφαρµογή Ηλεκτρονικής Απεικόνισης Λογαριασµών ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ

Διαδικτυακές Εφαρμογές Ενότητα 1: JPA

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

Αξιολόγηση Υπηρεσιών ιαδικτύου µέσω Περιπτώσεων Μελέτης

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

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

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

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

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

BPMN Abstraction Tool ΠΑΡΟΥΣΙΑΣΗ ΕΡΓΑΛΕΙΟΥ ΑΦΑΙΡΕΣΗΣ ΕΠΙΧΕΙΡΗΣΙΑΚΩΝ ΔΙΑΔΙΚΑΣΙΩΝ

Εισαγωγή στις Σελίδες Εξυπηρετητή Java Java Server Pages (JSP)

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

Διαδικτυακές Εφαρμογές Ενότητα 3: Ανάπτυξη JavaEE 6 εφαρμογής με JSF2, EJB3 και JPA

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

Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών

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

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Μαλούτα Θεανώ Σελίδα 1

Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων ιαχείριση ικτύων ρ.αρίστη Γαλάνη Ακαδημαϊκό Έτος

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

Σύστημα υποβολής αιτήσεων υποψήφιων συνεργατών ΕΚΤ

Τεχνολογίες Ανάπτυξης Ηλεκτρονικού Καταστήματος Μικρομεσαίας Επιχείρησης. Μικρομεσαίες Επιχειρήσεις και Καινοτομία

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP)

Προβλήµατα CGI, SSI CGI: Απόδοση Έναρξη νέας διαδικασίας για εκτέλεση (2 διαδικασιών σε περίπτωση διερµηνευόµενης γλώσσας, π.χ. perl). Κοινές διαδικασ

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

Ανάλυση Περιπτώσεων Χρήσης

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. DICOM Επικοινωνία Γενικά

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

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

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 10η Διάλεξη: Web Services

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

Δομή και Στόχοι του Μαθήματος - Εισαγωγή

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Java & Java EE 1o Μέρος: Servlets και Java Server Pages. Κακαρόντζας Γεώργιος

Διαχείριση Πολιτισμικών Δεδομένων

Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture)

Υπολογιστική Νέφους Cloud computing

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

Κεφ. 2 Θέματα Θεωρητικής Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Δεδομένα και Πληροφορίες

Σύστημα Αναθέσεων. Σχεδιασμός Υποσυστημάτων

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

Αρχιτεκτονική Υπολογιστών

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

Δομή παρουσίασης. Σχεδιασμός και υλοποίηση συστήματος παρακολούθησης και ελέγχου πωλητών και δημιουργία εφαρμογής σε έξυπνο κινητό

Βασικές Έννοιες Web Εφαρμογών

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

GoDigital.Store E-Commerce Platform

Ανάπτυξη Υπηρεσίας Τηλεκπαίδευσης σε ΙP Δίκτυα. Υλοποίηση Σύγχρονης Τηλεκπαίδευσης

Κεφάλαιο 1. Βασικά Στοιχεία της Java... 13

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

ΑΠΟΘΕΤΗΡΙΟ ΕΦΑΡΜΟΓΩΝ ΥΠΠΕΘ ΚΑΙ ΕΠΟΠΤΕΥΟΜΕΝΩΝ ΦΟΡΕΩΝ (git.minedu.gov.gr)

Λιόλιου Γεωργία. ιατµηµατικό Πρόγραµµα Μεταπτυχιακών Σπουδών στα Πληροφοριακά Συστήµατα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Τεχνολογίες και Εφαρμογές Διαδικτύου

Θέματα Ατομικής Διπλωματικής Εργασίας - DRAFT Ακαδημαϊκό Έτος 2015/2016. Γεωργία Καπιτσάκη (Λέκτορας)

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

2η Προγραµµατιστική Εργασία

Περιεχόμενα. Visio / White paper 1

Ενότητα 12 (κεφάλαιο 28) Αρχιτεκτονικές Εφαρμογών

Salespoint. hovernet Το τηλέφωνό µας: Η διεύθυνσή µας: 25 Μαρτίου 44, Νέοι Επιβάτες Θεσσαλονίκη

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

Ψηφιακό Σχολείο 2.0. Βασικές έννοιες Υποδομές Ηλεκτρονική Μάθηση Διαχείριση Ηλεκτρονικής Τάξης Οργάνωση Ηλεκτρονικού Μαθήματος

ΠΑΡΟΥΣΙΑΣΗ ΔΙΠΛΩΜΑΤΙΚΗΣ ΕΡΓΑΣΙΑΣ

Παρουσίαση της πλατφόρμας Java EE για την ανάπτυξη web-εφαρμογών και services.

Συστήματα Πληροφοριών Διοίκησης

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

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

Ασφάλεια Πληροφοριακών Συστημάτων

Σύστημα διαχείρισης περιεχομένου (Content Management System)

1 η ΑΣΚΗΣΗ ΕΡΓΑΣΤΗΡΙΟΥ (ομαδική: 2 ή 3 ατόμων) (Ημερομηνία Παράδοσης: 18/11/2017) (Ζητούμενο)

Οι διαδικασίες ενος CMS είναι σχεδιασμένες για να:

Αρχιτεκτονική Υπολογιστών

. Μεθοδολογία Προγραμματισμού. Καλή και κακή σχεδίαση. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Έλεγχος Συνένωσης και Διασφάλιση Ποιότητας

Διπλωματική Εργασία. Μέλλιος Θωμάς, Πετρίδης Κοσμάς. Επιβλέπων Καθηγητής: Πρωτόγερος Νικόλαος

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

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

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Περιεχόμενα. Πρόλογος... xiii

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΕΤΑΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΕΙΔΙΚΕΥΣΗΣ «ΣΥΣΤΗΜΑΤΑ ΥΠΟΛΟΓΙΣΤΩΝ» ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: «ΑΝΑΠΤΥΞΗ JAVA EE ΕΦΑΡΜΟΓΩΝ ΜΕ ΧΡΗΣΗ ΛΟΓΙΣΜΙΚΟΥ ΑΝΟΙΚΤΟΥ ΚΩΔΙΚΑ ΚΑΙ ΑΞΙΟΠΟΙΗΣΗ ΠΡΟΤΥΠΩΝ ΣΧΕΔΙΑΣΗΣ» της ΜΑΡΙΑΣ ΜΟΥΡΑΤΙΔΟΥ ΕΠΙΒΛΕΠΩΝ: ΧΑΤΖΗΓΕΩΡΓΙΟΥ ΑΛΕΞΑΝΔΡΟΣ ΕΞΕΤΑΣΤΕΣ: ΧΡΗΣΤΟΣ ΓΕΩΡΓΙΑΔΗΣ Ιανουάριος 2007

Στόχος της εργασίας Στόχος της εργασίας είναι η διερεύνηση των αρχών που πρέπει να διέπουν τη σχεδίαση μιας Java EE εφαρμογής, ώστε αυτή να συντηρείται και να επεκτείνεται με ευκολία καθώς και ο ποιοτικός και ποσοτικός υπολογισμός του οφέλους που προκύπτει από την εφαρμογή προτύπων σχεδίασης σε μία επιχειρησιακή εφαρμογή επίδειξης. Τα πρότυπα σχεδίασης που θα χρησιμοποιηθούν για τον υπολογισμό του οφέλους είναι τα: Front Controller Model-View View-Controller Transfer Object Service to Worker

Η Java EE πλατφόρμα Η Java EE πλατφόρμα είναι μια πλατφόρμα για ανάπτυξη, εγκατάσταση και εκτέλεση επιχειρησιακών εφαρμογών σε κατανεμημένο περιβάλλον. Χρησιμοποιεί ένα κατανεμημένο μοντέλο πολλών επιπέδων. Τα επίπεδα αυτά είναι: το επίπεδο πελάτη που εκτελείται στο μηχάνημα του πελάτη το επίπεδο web που εκτελείται στο Java EE διακομιστή το επίπεδο επιχείρησης που εκτελείται στο Java EE διακομιστή το επίπεδο συστήματος επιχειρησιακών πληροφοριών (Enterprise Information System ή EIS) που εκτελείται στο EIS διακομιστή Τα Java EE στοιχεία είναι λειτουργικές μονάδες λογισμικού που επικοινωνούν μεταξύ τους και συγκεντρώνονται σε μία Java EE εφαρμογή περιλαμβάνοντας σχετικές κλάσεις και αρχεία. Ως Java EE στοιχεία είναι: οι εφαρμογές πελάτη και τα applets (εκτελούνται στο πελάτη). τα Java Servlets και Java Server Pages (JSP)) (εκτελούνται( στον διακομιστή). τα Enterprise JavaBeans (EJB) γνωστά ως enterprise beans (εκτελούνται στον διακομιστή).

Container Module Packing εφαρμογών Container είναι η διεπιφάνεια μεταξύ ενός στοιχείου και της λειτουργίας χαμηλού επιπέδου μιας συγκεκριμένης πλατφόρμας που υποστηρίζει το στοιχείο. Ο Java EE διακομιστής παρέχει Ένα module αποτελείται από ένα ή υπηρεσίες με τη μορφή ενός περισσότερα Java EE στοιχεία που container για κάθε τύπο χρησιμοποιούν τον ίδιο τύπο container και στοιχείου. Οι υπηρεσίες αυτές ένα xml αρχείο (deployment descriptor) το είναι: οποίο καθορίζει τις ρυθμίσεις του container. Ασφάλεια, Οι τύποι των module είναι: Συναλλαγές, EJB modules,, (σε(.jar αρχείο) JNDI αναζήτησης και Web modules,, (σε(.war αρχείο) απομακρυσμένη σύνδεση Modules εφαρμογών πελάτη (σε.jar Ενώ υπάρχουν οι εξής τύποι αρχείο) και container: Modules προσαρμογέων πηγών (σε.rar Enterprise JavaBeans (EJB) αρχείο) container Web container Μια Java EE εφαρμογή μεταφέρεται σε ένα Container εφαρμογής πελάτη αρχείο.ear αρχείο που περιέχει τα module από τα οποία αποτελείται και deployment Applet container descriptors.

Enterprise JavaBeans (EJB) Ένα Enterprise JavaBean (EJB) είναι μια δομημένη μονάδα που μπορεί να χρησιμοποιηθεί μόνη ή με άλλα EJB για την εκτέλεση της επιχειρησιακής λογικής στον Java EE διακομιστή. Τα είδη των EJB είναι: session beans τα οποία διακρίνονται σε stateful και stateless, message-driven beans και entity beans τα οποία αντικαθίστανται από τα persistent entities. Ο πελάτης καλεί ένα EJB: Αναζητώντας το αντικείμενο Home μέσω της JNDI τεχνολογίας και μέσω του αντικειμένου Home δημιουργεί το EJB και καλεί τις μεθόδους του. Από την Java 2 Από την Διανομή του EJB Από τον προγραμματιστή Παράγεται από το Container <Διασύνδεση> javax.ejb.ejbhome <home Διασύνδεση> SessionRemoteHome Αντικείμενο Home <Διασύνδεση> Java.rmi.Remote <Διασύνδεση> javax.ejb.ejbobject <remote Διασύνδεση> SessionRemote Αντικείμενο EJB <Διασύνδεση> java.io.serializable <Διασύνδεση> javax.ejb.enterprizebean <Διασύνδεση> javax.ejb.sessionbean <session bean> SessionBean Μοντέλο session bean

JSPs, Servlets Μια JSP σελίδα είναι ένα έγγραφο βασισμένο σε κείμενο που περιέχει δύο τύπους κειμένου, α) τα στατικά δεδομένα (HTML, WML και XML) και β) JSP στοιχεία. Τα διαφορετικά είδη του κώδικα Java που μπορούν να εισαχθούν σε μία JSP σελίδα ονομάζονται στοιχεία σεναρίων (scripting elements). Τα στοιχεία σεναρίων είναι τα εξής: εκφράσεις (expressions), τμήματα κώδικα (scriptlets) και δηλώσεις (declarations) Όταν ζητείται μία JSP σελίδα ο διακομιστής web την μεταφράζει σε servlet και την εκτελεί. Τα πλεονεκτήματα των Servlets: βασίζονται και αναπτύσσονται στην Java και όχι σε μία script γλώσσα, υπάρχει η έννοια της συνόδου (session) και δυνατότητα πρόσβασης σε βάσεις δεδομένων μέσω του JDBC API. Τα servlets είναι πιο κατάλληλα για εκείνα τα στοιχεία μιας web εφαρμογής που έχουν αρκετή προγραμματιστική λογική (π.χ. δημιουργούν αντικείμενα, προσπελάζουν βάσεις δεδομένων κλπ.) και ελάχιστα ή καθόλου στοιχεία απόκρισης προς τον χρήστη.

Δημιουργία ηλεκτρονικού βιβλιοπωλείου Για λόγους επίδειξης δημιουργήθηκε μια επιχειρησιακή εφαρμογή, ένα ηλεκτρονικό κατάστημα (βιβλιοπωλείο). Το διαχειριστικό τμήμα Ενώ ο πελάτης μπορεί: (http://localhost localhost:8080/mybookstore- να δει τα διαθέσιμα βιβλία, WebModule/admin/ admin/pages/admincatalog) της εφαρμογής παρέχει στον να αναζητήσει κάποιο βιβλίο, διαχειριστή τη δυνατότητα: να δει τα στοιχεία κάποιου βιβλίου, να ενημερώνει την ποσότητα κάθε να προσθέτει βιβλία στο καλάθι αγορών, βιβλίου, να δει τα περιεχόμενα του καλαθιού να ανανεώνει την τιμή κάθε βιβλίου, αγορών του να διαγράφει κάποιο βιβλίο, να αφαιρέσει κάποιο από τα περιεχόμενα να εισάγει κάποιο βιβλίο, του καλαθιού αγορών του, να ενημερωθεί για τις συναλλαγές να αδειάσει εντελώς το καλάθι αγορών, που έχουν ολοκληρωθεί, να αλλάξει όλα τα προσωπικά του να αλλάζει τα στοιχεία των χρηστών, στοιχεία και τον κωδικό του πρόσβασης, να διαγράφει κάποιους χρήστες. να δει μήνυμα για την κατηγορία βιβλίων που προτιμά σύμφωνα με τις Μια υπηρεσία web δέχεται τον κωδικό προηγούμενες αγορές του. ISBN ενός βιβλίου και επιστρέφει τον (http://localhost localhost:8080/mybookstore- τίτλο του. WebModule/pages/enter) (http://localhost localhost:8080/bookinfoclient)

Υλοποίηση ηλεκτρονικού βιβλιοπωλείου Η εφαρμογή χρησιμοποιεί δύο enterprise beans (ένα stateful και ένα stateless). το stateful υλοποιεί τη λειτουργικότητα του καλαθιού αγορών ενός πελάτη και το stateless περιλαμβάνει μεθόδους που υλοποιούν την λογική της επιχείρησης Η web υπηρεσία αναπτύχθηκε χρησιμοποιώντας το Java API για XML RPC (Remote Procedure Calls). Η κλήση της web υπηρεσίας γίνεται χρησιμοποιώντας το πρωτόκολλο SOAP. Στην διασύνδεσης BookInfoServiceSEI που επεκτείνει την java.rmi.remote δηλώνονται οι μέθοδοι που ο πελάτης μπορεί να καλέσει. Η εφαρμογή πελάτη καλεί την web υπηρεσία μέσω του αρχείου wsdl που περιγράφει την υπηρεσία. Επίσης χρησιμοποιούνται τα servlets: AdminCatalogServlet, BookDetailsServlet, BookStoreServlet, CashierServlet, CatalogServlet, ChangeUserServlet, CreateUserServlet, LogoutServlet, ReceiptServlet και ShowCartServlet Τέλος, χρησιμοποιούνται και 2 φίλτρα: το HitCounterFilter και το OrderFilter

Πρότυπα Σχεδίασης Πρότυπο σχεδίασης είναι μια καλά ορισμένη λύση σε ένα επαναλαμβανόμενο πρόβλημα. Στο επίπεδο παρουσίασης υπάρχουν τα πρότυπα: Model-View View-Controller (διαχωρίζει το μοντέλο, την παρουσίαση και την επεξεργασία), Front Controller (συγκεντρώνει την κοινή λειτουργικότητα), Intercepting Filter (προσθέτει λειτουργίες), Service to Worker (διατηρεί το διαχωρισμό ανάμεσα σε ενέργειες (actions), όψεις και ελεγκτές), View Helper (μειώνει την εξειδίκευση στις όψεις), Composite View (για την επαναχρησιμοποίηση κοινών τμημάτων όψεων), Context Object (ενσωματώνει τα δεδομένα του συστήματος ανεξαρτήτως πρωτοκόλλου), Application Controller (προσδιορίζει την κλήση εντολών και τον καθορισμό και την προώθηση των όψεων για ένα είδος αιτήματος), Dispatcher View (προωθεί την κατάλληλη όψη όταν υπάρχει μικρή επιχειρησιακή λογική).

Πρότυπα Σχεδίασης Στο επίπεδο επιχείρησης υπάρχουν τα πρότυπα: Business Delegate (αποκρύπτει λεπτομέρειες της υλοποίησης της επιχείρησης), Service Locator (αποκρύπτει λεπτομέρειες πρόσβασης σε ένα στοιχείο), Session Façade ade (αποκρύπτει την πολυπλοκότητα χειρισμού της επιχείρησης), Application Service (συγκεντρώνει την λογική της επιχείρησης), Business Object (διαχωρίζει τα δεδομένα και τη λογική της επιχείρησης), Composite Entity (εκμεταλλεύεται τα χαρακτηριστικά της EJB αρχιτεκτονικής), Transfer Object (μεταφέρει πολλά δεδομένα μεταξύ επιπέδων), Transfer Object Assembler (συναθροίζει πολλά Transfer Objects) και Value List Handler (διαχειρίζεται προσωρινά δεδομένα) Στο επίπεδο συστήματος επιχειρησιακών πληροφοριών υπάρχουν: Data Access Object (ενσωματώνει όλη την πρόσβαση στη Βάση Δεδομένων), Service Activator (για την ασύγχρονη επεξεργασία αιτημάτων), Web Service Broker (υπηρεσία που εξυπηρετεί ως μεσολαβητής άλλες) και Domain Store (με διαφανή τρόπο διατηρεί ένα μοντέλο δεδομένων).

Εφαρμογή προτύπων σχεδίασης Front Controller: Στα servlets α) BookDetailsServlet, β) BookStoreServlet, γ) CashierServlet, δ) το CatalogServlet, ε) ChangeUserServlet, στ) LogoutServlet, ζ) ReceiptServlet και η) ShowCartServlet υπάρχει μια κοινή λειτουργία, ο έλεγχος για αν ο χρήστης έχει εισαχθεί στο ηλεκτρονικό βιβλιοπωλείο είτε ανώνυμα είτε εισάγοντας το όνομα χρήστη και τον κωδικό πρόσβασής του, η οποία μεταφέρεται σε ένα servlet που καλείται πριν την κλήση των άλλων servlets. Model-View View-Controller: Στα servlets υπάρχει και ο κώδικας που σχετίζεται με τη λειτουργικότητα και ο κώδικας που σχετίζεται με την παρουσίαση της εφαρμογής. Ο κώδικας που σχετίζεται με την παρουσίαση μεταφέρεται σε JSP σελίδες ( α) BookDetails.jsp jsp, β) BookStore.jsp jsp, γ) Cashier.jsp jsp, δ) το Catalog.jsp jsp, ε) ChangeUser.jsp jsp, στ) Logout.jsp jsp, ζ) Receipt.jsp jsp, η) ShowCart.jsp jsp, θ) CreateUser.jsp jsp, ι) AdminCatalog.jsp jsp, κ) AdminLogin.jsp jsp, λ) AdminLogout.jsp jsp, μ) InsertBook.jsp jsp, ν) Transactions.jsp και ξ) Users.jsp jsp).

Εφαρμογή προτύπων σχεδίασης Transfer Object: Η λίστα βιβλίων, χρηστών και αγορών δεν χωρά σε μία σελίδα. Για αυτό επιστρέφονται αυτά που χωράνε σε μία σελίδα και δημιουργούνται σύνδεσμοι για τις άλλες. Τα αντικείμενα μιας σελίδας καθώς και ο συνολικός αριθμός των αντικειμένων επιστρέφονται μαζί (με μία ανάκτηση). Service to Worker: Τα servlets καταργούνται και όλες οι ενέργειες της εφαρμογής που εμπεριέχονται στα servlets μεταφέρονται σε διαφορετικές κλάσεις. Την επιλογή της κατάλληλης ενέργειας που θα πρέπει να εκτελεστεί καθώς και η επιλογή της κατάλληλης όψης αναλαμβάνουν δύο αντικείμενα (ένα για το διαχειριστικό τμήμα και ένα για το τμήμα των πελατών), Dispatcher.

Μετρικές Η ποιότητα του κώδικα της εφαρμογής θα μετρηθεί μέσω μετρικών. Η μείωση των τιμών των μετρικών που ακολουθούν σημαίνει αυτόματα και βελτίωση του κώδικα. Οι μετρικές που μεταβάλλονται από την εφαρμογή των προτύπων σχεδίασης είναι: ΗμετρικήCoupling Between Objects (CBO) αναπαριστά τον αριθμό των άλλων κλάσεων με τις οποίες έχει σύζευξη η κλάση. ΗμετρικήChanging Methods (CM) προσδιορίζει τον αριθμό διακριτών μεθόδων στο σύστημα που είναι πιθανόν να επηρεαστούν από αλλαγές σε μία κλάση. ΗμετρικήChanging Classes (ChC) προσδιορίζει τον αριθμό των κλάσεων του πελάτη όπου οι αλλαγές που πρέπει να γίνουν είναι αποτέλεσμα μιας αλλαγής της κλάσης του διακομιστή. ΗμετρικήResponse For Class (RFC) ορίζει το μέγεθος της απόκρισης για μία κλάση. ΗμετρικήWeighted Methods Per Class 1 (WMPC1) είναι το άθροισμα της πολυπλοκότητας όλων των μεθόδων μιας κλάσης. ΗμετρικήWeighted Methods Per Class 2 (WMPC2) μετρά την πολυπλοκότητα μιας κλάσης υποθέτοντας πως μια κλάση με περισσότερες μεθόδους από μια άλλη είναι πιο πολύπλοκη.

Μεταβολές των μετρικών CBO, RFC και WMPC1 μετά την εφαρμογή του Front Controller Μ.Ο. μείωσης της CBO: 15% (LogoutServlet( LogoutServlet: : 27%) Μ.Ο. μείωσης της RFC: 13% (BookStoreServlet( BookStoreServlet: : 28%) Μ.Ο. μείωσης της WMPC1: : 12% (LogoutServlet( LogoutServlet: : 20%) Μείωση συζεύξεων (CBO) Μείωση απόκρισης (RFC) Μείωση πολυπλοκότητας (WMPC1) Μείωση του κώδικα: 0,8% (από( 4562 γραμμές σε 4525) 50 40 30 20 10 0 Μεταβoλές μετρικών μετά την εφαρμογή του Front Controller BookDetail sservlet BookStore Servlet CashierSer vlet CatalogSe rvlet ChangeUs erservlet LogoutSer vlet ReceiptSer vlet ShowCartS ervlet CBO πριν 15 25 17 18 14 11 16 20 CBO μετά 13 21 14 17 12 8 14 18 RFC πριν 28 46 28 43 36 18 24 37 RFC μετά 25 33 25 38 33 15 21 34 WMPC1 πριν 6 19 15 25 16 5 10 11 WMPC1 μετά 5 16 14 23 15 4 9 10 CBO πριν CBO μετά RFC πριν RFC μετά WMPC1 πριν WMPC1 μετά

Μεταβολές των μετρικών RFC, WMPC1 και WMPC2 μετά την εφαρμογή του Model-View View-Controller Μ.Ο. μείωσης της RFC: 25% % (ChangeUserServlet( : 42%) Μ.Ο. μείωσης της WMPC1: 35% % (ChangeUserServlet( : 67%) Μ.Ο. μείωσης της WMPC2: 7,6% % (ChangeUserServlet( : 28,6%) Μείωση απόκρισης (RFC) Μείωση πολυπλοκότητας (WMPC1, WMPC2) 100 80 60 40 20 0 Μετάβολές μετρικών μετά την εφαρμογή του Model-View-Controller AdminC atalogs ervlet BookDet ailsserv let BookSto reservle t Cashier Servlet Catalog Servlet Change UserSer vlet CreateU serservl et Logout Servlet Receipt Servlet ShowCa rtservlet RFC πριν 88 25 33 25 38 33 35 15 21 34 RFC μετά 58 16 30 17 28 19 27 12 20 27 WMPC1 πριν 71 5 16 14 23 15 14 4 9 10 WMPC1 μετά 32 5 14 5 10 5 6 4 8 7 WMPC2 πριν 15 10 11 10 10 14 14 10 10 10 WMPC2 μετά 11 10 11 10 10 10 11 10 10 10 RFC πριν RFC μετά WMPC1 πριν WMPC1 μετά WMPC2 πριν WMPC2 μετά

Μεταβολές των μετρικών CM και ChC μετά την εφαρμογή του Model- View-Controller Η μείωση των μετρικών CM και ChC οφείλεται στο ότι λόγω της εφαρμογής του προτύπου το σύστημα επηρεάζεται λιγότερο από αλλαγές που μπορεί να προκύψουν από αλλαγές αυτών των κλάσεων. Μείωση του κώδικα: 45% (από( 4525 γραμμές σε 3121) 16 14 12 10 8 6 4 2 0 Μεταβολή μετρικών μετά την εφαρμογή του Model-View -Controller BookDetails ShoppingCartItem TransactionDetails Currency CM πριν 14 6 2 7 CM μετά 11 5 1 6 ChC πριν 9 4 3 7 ChC μετά 6 3 2 6 CM πριν CM μετά ChC πριν ChC μετά

Μεταβολή μετρικής CM μετά την εφαρμογή του Transfer Object Μ.Ο. μείωσης της CM: 13% % (BooksNotFoundException( : 16%) Μείωση των πιθανών αλλαγών στο σύστημα από αλλαγές των κλάσεων αυτών (CM) 35 30 25 20 15 Μεταβολή της μετρικής CM μετά την εφαρμογή του Transfer Object 10 5 0 TransactSessionRemot ebusiness BookDB BookDetails BooksNotFoundExcepti on CM πριν 30 19 11 6 CM μετά 27 16 10 5 CM πριν CM μετά

Μεταβολή μετρικής RFC μετά την εφαρμογή του Transfer Object Μ.Ο. μείωσης της RFC: 5% (TransactSessionRemoteBusiness( TransactSessionRemoteBusiness: 15%) Μείωση απόκρισης (RFC) 350 300 250 200 150 100 50 Μεταβολή μετρικής RFC μετά την εφαρμογή του Transfer Object 0 AdminCata logservlet BookStore Servlet CatalogSer vlet ReceiptSer vlet ShowCartS ervlet TransactSe ssionbean TransactSe ssionremo tebusiness BookDB RFC πριν 58 30 28 20 27 74 20 306 RFC μετά 56 29 26 21 26 71 17 276 RFC πριν RFC μετά

Μεταβολές των μετρικών WMPC1 και WMPC2 μετά την εφαρμογή του Transfer Object Μ.Ο. μείωσης της WMPC1: : 5% (TransactSessionRemoteBusiness:: 15%) Μ.Ο. μείωσης της WMPC2: : 3% (TransactSessionRemoteBusiness : 4,4%) Μείωση πολυπλοκότητας (WMPC1, WMPC2) Μείωση του κώδικα: 1% (από( 3121 γραμμές σε 3087) Μεταβολή των μετρικών WMPC1 και WMPC2 μετά την εφαρμογή του Transfer Object 100 80 60 40 20 0 BookStoreServlet TransactSessionBean TransactSessionRemo tebusiness BookDB WMPC1 πριν 14 50 20 58 WMPC1 μετά 13 53 17 55 WMPC2 πριν 11 75 69 82 WMPC2 μετά 11 72 66 79 WMPC1 πριν WMPC1 μετά WMPC2 πριν WMPC2 μετά

Μεταβολές των μετρικών CBO, RFC και ChC μετά την εφαρμογή του Service to Worker Μ.Ο. μείωσης της CBO: 28% % (LogoutServlet( LogoutServlet: 70%) Μ.Ο. μείωσης της RFC: 27% % (BookStoreServlet( BookStoreServlet: 67%) Μείωση συζεύξεων (CBO) Μείωση απόκρισης (RFC) Μείωση των πιθανών αλλαγών που μπορούν να προκληθούν από αλλαγές των κλάσεων αυτών (ChC) 60 50 40 30 20 10 0 AdminCa talogserv let Μεταβολές μετρικών μετά την εφαρμογή του Service to Worker FrontCont BookDeta rollerserv ilsservlet let CashierS ervlet CatalogS ervlet ChangeU LogoutSe ReceiptS serservlet rvlet ervlet ShowCart Servlet CBO πριν 26 22 14 16 18 13 10 15 18 CBO μετά 24 26 9 11 13 8 3 10 13 RFC πριν 56 30 16 17 26 18 12 21 26 RFC μετά 36 46 10 11 18 12 4 15 19 ChC πριν 2 2 2 2 2 2 2 2 2 ChC μετά 2 2 1 1 1 1 1 1 1 CBO πριν CBO μετά RFC πριν RFC μετά ChC πριν ChC μετά

Μεταβολές των μετρικών CBO, RFC και ChC μετά την εφαρμογή του Service to Worker Μ.Ο. μείωσης της WMPC1: 38% % (LogoutServlet( LogoutServlet: 75%) Μ.Ο. μείωσης της WMPC2: 61% % (ως( 80%) Μείωση πολυπλοκότητας (WMPC1, WMPC2) Μείωση του κώδικα: 8,4% % (από( 3087 γραμμές σε 2829) 35 30 25 20 15 10 5 Μεταβολές μετρικών μετά την εφαρμογή του Service to Worker 0 AdminCa talogser vlet FrontCon trollerser vlet BookDet ailsservl et CashierS ervlet CatalogS ervlet ChangeU serservle t LogoutS ervlet ReceiptS ervlet ShowCar tservlet WMPC1 πριν 32 9 5 5 10 5 4 8 7 WMPC1 μετά 11 17 2 2 7 2 1 5 4 WMPC2 πριν 11 11 10 10 10 10 10 10 10 WMPC2 μετά 11 12 2 2 2 2 2 2 2 WMPC1 πριν WMPC1 μετά WMPC2 πριν WMPC2 μετά

Συμπεράσματα Παρόλο που η Java EE πλατφόρμα είναι μια πλατφόρμα που δίνει τη δυνατότητα εύκολης συντήρησης και επέκτασης σε εφαρμογές, η υλοποίηση προτύπων σχεδίασης βελτιώνει σημαντικά την ποιότητα του κώδικα. Επίσης, κατά την υλοποίηση διαδοχικών προτύπων σχεδίασης που εφαρμόζονται στο ίδιο τμήμα κώδικα (π.χ. Front Controller, Model-View View-Controller και Service to Worker που επηρεάζουν τα servlets που απευθύνονται στον πελάτη) υπήρξε ολοένα και μεγαλύτερη βελτίωση της ποιότητας του κώδικα και επομένως της συντηρησιμότητάς του.