Μηχανική Οδηγούμενη από Μοντέλα Δρ Νικόλαος Σπανουδάκης ΕΕΔΙΠ ΙΙ Γενικό Τμήμα Πολυτεχνείου Κρήτης Χανιά, 6 Φλεβάρη 2012 6/1/20151.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Γραφήματα & Επίπεδα Γραφήματα
Advertisements

Τεχνολογίες Web Απαραίτητες γνώσεις για την υλοποίηση της άσκησης.
Ερωτηματολόγιο Συλλογής Απαιτήσεων Εφαρμογών Υψηλών Επιδόσεων
Πέτσας Δημήτριος Παρουσίαση στο μάθημα: Ψηφιακές Βιβλιοθήκες
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
Μια πολυκριτήρια συγκριτική αξιολόγηση ενός Τμήματος Μηχανικών
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
HTML.
Χαρακτηριστικά συνθετικής κίνησης 1 Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Χρήση και αξιοποίηση των ΤΠΕ κατά τη διδασκαλία των μαθηματικών στη δευτεροβάθμια ελληνική εκπαίδευση Δρ. Σάλτας Βασίλειος, Ιωαννίδου Ευφροσύνη Τμήμα.
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
THE AGENT SYSTEMS ENGINEERING METHODOLOGY (ASEME) Νικόλαος Σπανουδάκης ΕΕΔΙΠ ΙΙ Γενικό Τμήμα Πολυτεχνείου Κρήτης Αθήνα, 18 Μαΐου,
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Μηχανική Λογισμικού ΙΙ
HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές.
-17 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Σεπτέμβριος 2013 Δείκτης > +20 Δείκτης 0 a +20 Δείκτης 0 a -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
Προγραμματισμός στο ΜatLab
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αναγνώριση Προτύπων.
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
ΑΠΕΙΚΟΝΙΣΗ ΕΝΝΟΙΩΝ 1. 2 Χρήστης Στόχος Ταμίας διενέργεια πώλησης διενέργεια ενοικίασης εισαγωγή ταμείου εξαγωγή ταμείου * 1 Μοντέλο Πεδίου Προβλήματος.
Αποκεντρωμένη Διοίκηση Μακεδονίας Θράκης ∆ιαχείριση έργων επίβλεψης µε σύγχρονα µέσα και επικοινωνία C2G, B2G, G2G Γενική Δ/νση Εσωτερικής Λειτουργίας.
1/5/ ΧΡΗΣΕΙΣ ΤΗΣ ΗΛΙΑΚΗΣ ΑΝΤΙΝΟΒΟΛΙΑΣ 1/5/ (πηγή: HELIOAKMI).
13ο Πανελλήνιο Συνέδριο Ακαδημαϊκών Βιβλιοθηκών – Κέρκυρα Οκτωβρίου 2004 Το σύστημα COINE για την προβολή της πολιτιστικής κληρονομιάς και την υποστήριξη.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Ανάκτηση Πληροφορίας (Information Retrieval – IR) Πανεπιστήμιο Θεσσαλίας Πολυτεχνική Σχολή Τμήμα Μηχ. Η/Υ, Τηλ/νιών & Δικτύων Ακαδημαϊκό Έτος
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Dr. Holbert Νικ. Α. Τσολίγκας Χρήστος Μανασής
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Χειμερινό Εξάμηνο (Ε') - Κωδ. Μαθήματος:
Συνδυαστικά Κυκλώματα
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Ανάπτυξη Πρωτοτύπου Λογισμικού
HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ. Καθηγητής, Ε.Μ.Π.
ΟΠΑ - Τεχνολογία Λογισμικού - Εμμ. Γιακουμάκης
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
ΑΝΑΚΕΦΑΛΑΙΩΣΗ 26 Οκτωβρίου Αντικειμενοστρεφής Προγραμματισμός Ένα νέο προγραμματιστικό μοντέλο (paradigm) το οποίο στηρίζεται στις κλάσεις και τα.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΡΑΛΛΕΙΑ ΣΧΟΛΕΙΑ: 155 ΧΡΟΝΙΑ ΙΣΤΟΡΙΑΣ ΚΑΙ ΠΡΟΣΦΟΡΑΣ.
ΟΡΙΣΜΟΣ ΣΥΜΠΕΡΙΦΟΡΑΣ ΔΙΑΓΡΑΜΜΑTA ΑΛΛΗΛΕΠΙΔΡΑΣΗΣ
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Μηχανική Οδηγούμενη από Μοντέλα και Γλώσσες Ειδικού Σκοπού
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο 1: Εισαγωγή.
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Εισαγωγή στον Προγ/μό Η/Υ
Software Engineering for Web Applications
Εισαγωγή στον Προγ/μό Υπολογιστών
ΤΕΧΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ
Διδάσκων: Κων/νος Κώτης
ΕΙΣΑΓΩΓΗ ΣΤΗ UML ΕΙΣΑΓΩΓΗ ΣΤΗ UML.
Μεταγράφημα παρουσίασης:

Μηχανική Οδηγούμενη από Μοντέλα Δρ Νικόλαος Σπανουδάκης ΕΕΔΙΠ ΙΙ Γενικό Τμήμα Πολυτεχνείου Κρήτης Χανιά, 6 Φλεβάρη /1/20151 Ν. Σπανουδάκης

Περιεχόμενα παρουσίασης Εισαγωγή Οδηγούμενη από Μοντέλα Μηχανική Λογισμικού Model Driven Engineering (MDE)  Οδηγούμενη από Μοντέλα Αρχιτεκτονική Λογισμικού Model Driven Architecture (MDA)  Ένα παράδειγμα για τη γλώσσα UML Διαγράμματα Καταστάσεων Statecharts  Μετατροπή statechart σε κώδικα  Μεταμοντέλο statechart  Αυτόματη παραγωγή κώδικα με την xPand Συμπεράσματα 6/1/ Ν. Σπανουδάκης

Ο ευρύτερος επιστημονικός χώρος Η Μηχανική Λογισμικού ή Τεχνολογία Λογισμικού (Software Engineering, IEEE, 1990) εφαρμόζει μια συστηματική, μεθοδική προσέγγιση στην ανάπτυξη, λειτουργία και συντήρηση του λογισμικού Μια διαδικασία ανάπτυξης λογισμικού (software process) απαντά στα ερωτήματα (Boehn, 1988):  Τι θα κάνουμε μετά;  Για πόσο χρόνο θα συνεχίσουμε να το κάνουμε; Μια μεθοδολογία ανάπτυξης λογισμικού (software methodology) είναι ένα προδιαγεγραμμένο και οργανωμένο σύνολο τεχνικών και κανόνων οι οποίοι ορίζουν από ποιον και με ποια σειρά θα χρησιμοποιηθούν οι τεχνικές (Tolvanen, 1998) 6/1/20153 Ν. Σπανουδάκης

Μηχανική Οδηγούμενη από Μοντέλα Model Driven Engineering (MDE) MDE (Beydeda et al., 2005) είναι η συστηματική χρήση μοντέλων ως πρωταρχικά εργαλεία καθόλο τον κύκλο ζωής του έργου λογισμικού στοχεύοντας στην φορητότητα, διαλειτουργικότητα και επαναχρησιμότητα του λογισμικού Βασίζεται σε μετασχηματισμούς μοντέλων και σε μεταμοντέλα (Jouault and Bézivin, 2006) Είναι η δεύτερη επανάσταση της προηγούμενης δεκαετίας μετά την Προσανατολισμένη στις υπηρεσίες μηχανική λογισμικού (Service-oriented Software Engineering – SOSE) 6/1/20154 Ν. Σπανουδάκης

Αρχιτεκτονική Οδηγούμενη από Μοντέλα (Model-Driven Architecture, MDA) Η MDA είναι μια αρχιτεκτονική συστημάτων που βασίζεται στην φιλοσοφία του MDE και ορίζει τρία επίπεδα μοντελοποίησης ενός συστήματος λογισμικού: 1. Υπολογιστικά Ανεξάρτητο Μοντέλο Computation Independent Model (CIM) 2. Μοντέλο Ανεξάρτητο Πλατφόρμας Platform Independent Model (PIM) 3. Μοντέλο Συγκεκριμένης Πλατφόρμας Platform Specific Model (PSM) Ορίστηκε από την Object Management Group (OMG) το /1/2015 Ν. Σπανουδάκης 5

Μετασχηματισμοί Μοντέλων Στη UML - Αφού δημιούργησα του διάγραμμα περίπτωσης χρήσης της UML γιατί να ξεκινήσω πάλι τα άλλα διαγράμματα από την αρχή; - Με ποια σειρά να πάρω τα διαγράμματα; Πρώτα τα διαγράμματα τάξεων; Μετά αυτά των δραστηριοτήτων; - Γιατί πρέπει και όλα αυτά να τα ξεκινήσω από την αρχή; Και αν ξεχάσω κάτι; - Πως μπορεί να με βοηθήσει αυτή η «Μοντελο-στραφής» μηχανική; Για να δούμε πως γίνεται αυτό… 6/1/2015 Ν. Σπανουδάκης 6

Ορισμός Περίπτωσης Χρήσης Use Case: Vehicle Reservation  Precondition: A customer wants to make a reservation for a vehicle.  Description: The customer selects pickup and return locations, as well as the pickup and return dates and times. The customer selects the vehicle type. The system presents all matching vehicles. If the customer requests detail information on a particular vehicle, the system presents detail information to the customer. If the customer selects a vehicle, the system gets the customer information (full name, telephone number, address). The system presents information on protection products (such as damage waiver, personal accident insurance). If the customer either accepts the reservation or rejects it and the use case finishes. 6/1/2015 Ν. Σπανουδάκης 7

Μετασχηματισμός Κειμένου σε Μοντέλο (Text to Model Trans. – T2M) Είσοδος: Περιγραφή Περίπτωσης Χρήσης Έξοδος: Διάγραμμα Τάξεων Κανόνες Μετασχηματισμού:  Ουσιαστικά (Λέξεις με Έντονα Γράμματα) -> Τάξεις  Ουσιαστικά προσδιοριστικά άλλων (Λέξεις με Έντονα Πλάγια Γράμματα) -> Ιδιότητες Τάξεων  Ρήματα (Λέξεις με Πλάγια Γράμματα) -> Συσχετίσεις τάξεων εφόσον ενώνουν τέτοιες Μέθοδοι τάξεων εφόσον αναφέρονται μόνο σε μία 6/1/2015 Ν. Σπανουδάκης 8

Συντακτική Ανάλυση του Ορισμού Περίπτωσης Χρήσης A customer wants to make a reservation for a vehicle. The customer selects pickup and return locations, as well as the pickup and return dates and times. The customer selects the vehicle type. The system presents all matching vehicles. If the customer requests detail information on a particular vehicle, the system presents detail information to the customer. If the customer selects a vehicle, the system gets the customer information (full name, telephone number, address). The system presents information on protection products (such as damage waiver, personal accident insurance) The customer either accepts the reservation or rejects it and the use case finishes. 6/1/2015 Ν. Σπανουδάκης 9

Αυτόματη Δημιουργία Διαγράμματος Τάξεων 6/1/2015 Ν. Σπανουδάκης 10 Δεν το είχα σκεφτεί!!! Μπορώ να κρατώ ιστορικό με τις επιλογές του χρήστη

6/1/2015 Ν. Σπανουδάκης 11 Επεξεργασία Διαγράμματος Τάξεων

Μετασχηματισμός Μοντέλου σε Μοντέλο (Model to Model Trans. – M2M) Για την αποθήκευση αντικειμένων σε σχεσιακή βάση δεδομένων πρέπει να μετατρέψω το διάγραμμα τάξεων σε Διάγραμμα Οντοτήτων Σχέσεων (Entity Relationship – ER Diagram, Wimmer et al., 2007) Είσοδος: Διάγραμμα Τάξεων Έξοδος: Διάγραμμα Οντοτήτων Συσχετίσεων Κανόνες Μετασχηματισμού  Τάξη (Class) -> Οντότητα (Entity)  Ιδιότητα (Property) -> Χαρακτηριστικό (Attribute)  Συσχέτιση (Association) -> Σχέση (Relationship)  Ιδιότητα Συσχέτισης (Association property) -> Ρόλος (Role) 6/1/2015 Ν. Σπανουδάκης 12

Δίάγραμμα Τάξεων σε Διάγραμμα Οντοτήτων Σχέσεων 6/1/2015 Ν. Σπανουδάκης 13 Μετασχηματισμός Επεξεργασία

Μετασχηματισμός Μοντέλου σε Κείμενο (Model to Text Trans. – M2T) Για την υλοποίηση του συστήματος σε Java Είσοδος: Διάγραμμα Τάξεων Έξοδος: Κώδικας Java Κανόνες Μετασχηματισμού  Κλάση (Class) -> Java class  Ιδιότητα (Property) -> Java class property  Ιδιότητα Συσχέτισης (Association property) -> Java class property Εάν είναι με πολλαπλότητα > 1 τότε χρησιμοποίησε την κλάση java.util.Vector  Μέθοδος (Method) -> Java method που ρίχνει (throws) ένα UnsupportedOperationException Παρομοίως και για C++ 6/1/2015 Ν. Σπανουδάκης 14

Υλοποίηση Java 6/1/2015 Ν. Σπανουδάκης 15  Αρχείο Customer.java import java.util.Vector; public class Customer { private String _fullName; private int _telephoneNumber; private String _ Address; public Vector _myReservations = new Vector (); public VehicleType _select; public String getCustomerInformation() { return new String("Name: "+_fullName+ "\nTel.: "+_telephoneNumber+ "\n "+_ Address); }..... }  Αρχείο Customer.java import java.util.Vector; public class Customer { private String _fullName; private int _telephoneNumber; private String _ Address; public Vector _myReservations = new Vector (); public VehicleType _select; public String getCustomerInformation() { return new String("Name: "+_fullName+ "\nTel.: "+_telephoneNumber+ "\n "+_ Address); }..... }  Αρχείο Customer.java import java.util.Vector; public class Customer { private Object _fullName; private Object _telephoneNumber; private Object _ Address; public Vector _myReservations = new Vector (); public VehicleType _select; public void getCustomerInformation() { throw new UnsupportedOperationException(); }  Αρχείο Customer.java import java.util.Vector; public class Customer { private Object _fullName; private Object _telephoneNumber; private Object _ Address; public Vector _myReservations = new Vector (); public VehicleType _select; public void getCustomerInformation() { throw new UnsupportedOperationException(); } Επεξεργασία

Υλοποίηση C++ 6/1/2015 Ν. Σπανουδάκης 16  Αρχείο Customer.cpp #include using namespace std; #include "Customer.h" #include "Reservation.h" #include "VehicleType.h" void Customer::getCustomerInformation() { throw "Not yet implemented"; }  Αρχείο Customer.cpp #include using namespace std; #include "Customer.h" #include "Reservation.h" #include "VehicleType.h" void Customer::getCustomerInformation() { throw "Not yet implemented"; }  Αρχείο Customer.h #include using namespace std; #ifndef __Customer_h__ #define __Customer_h__ #include "Reservation.h“ class Reservation; class VehicleType; class Customer; class Customer { private: string _fullName; private: string _telephoneNumber; private: string _ Address; public: std::vector _myReservations; public: VehicleType* _select; public: void getCustomerInformation(); }; #endif  Αρχείο Customer.h #include using namespace std; #ifndef __Customer_h__ #define __Customer_h__ #include "Reservation.h“ class Reservation; class VehicleType; class Customer; class Customer { private: string _fullName; private: string _telephoneNumber; private: string _ Address; public: std::vector _myReservations; public: VehicleType* _select; public: void getCustomerInformation(); }; #endif

Ένα Εργαλείο CASE (Computer Aided Software Engineering) 6/1/2015 Ν. Σπανουδάκης 17

Γλώσσες Ειδικού Σκοπού (Πεδίου) - Ωραία όλα αυτά αλλά εγώ θέλω περαιτέρω να αυτοματοποιήσω την παραγωγή του λογισμικού… - Πως μπορώ να ορίσω έναν δικό μου μετασχηματισμό; Για να δούμε και τις: 6/1/2015 Ν. Σπανουδάκης 18

Γλώσσες Ειδικού Σκοπού (ή πεδίου) Domain Specific Languages – DSLs Οι Γλώσσες Ειδικού Πεδίου αποτελούν μια κατηγορία γλωσσών προγραμματισμού, οι οποίες έχουν ως στόχο την αντιμετώπιση εξειδικευμένων προβλημάτων στην διαδικασία ανάπτυξης λογισμικού αλλά και να υποστηρίξουν την εξέλιξη των γλωσσών μοντελοποίησης Π.χ.  γλώσσα για παράλληλο προγραμματισμό (Ada)  γλώσσα ερωταπαντήσεων βάσεων δεδομένων SQL 6/1/2015 Ν. Σπανουδάκης 19

Η Γραμμή μηδέν και η εικονική γραμμή μηδέν (Kleppe, 2009) 6/1/2015 Ν. Σπανουδάκης 20 Memory locationInstruction Subroutine Method If statement Loop Accumulator Object/Class ASCII Database table Abstraction Hardware zero line Business Concepts Virtual zero line Design pattern Component Entity bean Association XML Agent Aspect Autonomous Negotiation Business ProcessWarehouse Run a nuclear power plant

Μοντέλα, Μεταμοντέλα και Μεταμεταμοντέλα Για να δούμε τη σχέση τους: 6/1/2015 Ν. Σπανουδάκης 21

Μετασχηματισμοί Μοντέλων Model Transformation Μετασχηματισμός:  Είσοδος: το μοντέλο πηγής Ma που είναι σύμφωνο με το μεταμοντέλο MMa  Έξοδος: το μοντέλο στόχος Mb που είναι σύμφωνο με το μεταμοντέλο MMb Τέσσερις τύποι:  Μοντέλο σε μοντέλο (M2M)  Μοντέλο σε κείμενο (M2T)  Κείμενο σε μοντέλο (T2M)  Κείμενο σε κείμενο (T2T) 6/1/ Ν. Σπανουδάκης

Το μεταμεταμοντέλο ecore Του Eclipse Modeling Framework (EMF) 6/1/2015 Ν. Σπανουδάκης 23

Ένα μεταμοντέλο για τα Διαγράμματα Καταστάσεων − Νάτα πάλι τα «κινέζικα»: μεταμοντέλα, μοντέλα, γλώσσες, καλά πως χρησιμοποιούνται αυτά; Μήπως είναι πολύ θεωρητικά για μένα; − Εσείς γνωρίζετε καμία γλώσσα μοντελοποίησης; − Α ναι, η UML 6/1/2015 Ν. Σπανουδάκης 24

Διάγραμμα Καταστάσεων για την Τάξη Reservation Κρατάμε το κομμάτι της τάξης Reservation από το Διάγραμμα Τάξεων 6/1/2015 Ν. Σπανουδάκης 25

Διαγράμματα Καταστάσεων Σύμβολα:  Start state  End state  Basic state  And state  Or state  Condition state  History state  Transition  Transition Expression e[c]/a 6/1/2015 Ν. Σπανουδάκης 26

Διάγραμμα Καταστάσεων για την Τάξη Reservation (συν.) Assume that once a reservation becomes accepted, then it is in a waiting state until the client picks up the vehicle. The client then returns the vehicle and completes the lifecycle of the reservation. Before the client picks up the vehicle he can cancel the reservation. 6/1/2015 Ν. Σπανουδάκης 27

Μετασχηματισμός Μοντέλου σε Κείμενο (Model to Text Trans. – M2T) Είσοδος: Διάγραμμα Τάξεων, Διάγραμμα Καταστάσεων Έξοδος: Κώδικας Java Κανόνες Μετασχηματισμού  Κλάση (Class) -> Java class  Ιδιότητα (Property) -> Java class property  Ιδιότητα Συσχέτισης (Association property) -> Java class property  Μέθοδος (Method) -> Java method που ρίχνει (throws) ένα UnsupportedOperationException  Basic state -> Java class public static final int property  Event -> Java method. Η μέθοδος έχει ένα switch για κάθε basic state. Δημιουργείται μια int μεταβλητή state που δείχνει στο ενεργοποιημένο basic state (Douglass, 1998) 6/1/2015 Ν. Σπανουδάκης 28

Reservation Class public class Reservation { private boolean _accepted; public Customer _myReservations; public ReservationSubSystem _hasReservations; public Pickup _selectedPickUp; public Return _selectedReturn; public Vehicle _selectedVehicle; public static final int Not_accepted = 1; public static final int Not_started = 2; public static final int Picked_up = 3; public static final int Completed = 4; public static final int Cancelled = 5; private int state = Not_accepted; public void setPickup() { throw new UnsupportedOperationException(); } public void accept() { switch (state){ case Not_accepted: state = Not_started; break; case Not_started: break; case Picked_up: break; case Completed: break; case Cancelled: break; } public void pickup() { switch (state){ case Not_accepted: break; case Not_started: state = Picked_up; break; case Picked_up: break; case Completed: break; case Cancelled: break; } }… 6/1/2015 Ν. Σπανουδάκης 29

Ένα Διάγραμμα Καταστάσεων με περισσότερη λεπτομέρεια 6/1/2015 Ν. Σπανουδάκης 30

Ένα Διαφορετικό Διάγραμμα Καταστάσεων (Niaz 2005) 6/1/2015 Ν. Σπανουδάκης 31

Προϋπόθεση μετασχηματισμού: Το μεταμοντέλο Το μεταμοντέλο επιτρέπει  Να γράψουμε με τυπικό τρόπο αυτά που γράψαμε πριν με ελεύθερο κείμενο  Να χρησιμοποιήσουμε το Eclipse Modeling Framework για να πάρουμε αυτόματα εργαλεία επεξεργασίας του μεταμοντέλου και αναπαράσταση σε Java  Να χρησιμοποιήσουμε την Java ή πιο υψηλού επιπέδου εργαλεία για να κάνουμε μετασχηματισμούς 6/1/2015 Ν. Σπανουδάκης 32

Μεταμοντέλο Διαγράμματος Καταστάσεων 6/1/ Ν. Σπανουδάκης

Χρησιμοποιώντας την Xpand του EMF 6/1/2015 Ν. Σπανουδάκης 34

Επίπεδα MDA στο παράδειγμά μας CIM  Διάγραμμα Περίπτωσης Χρήσης PIM  Διάγραμμα Τάξεων  Διάγραμμα Οντοτήτων-Σχέσεων  Διάγραμμα Καταστάσεων PSM  Java  C++ 6/1/2015 Ν. Σπανουδάκης 35

Μετασχηματισμός Κείμενου σε Κείμενο (Text to Text Trans. – T2T) Μπορείτε να σκεφτείτε έναν τέτοιο; Γίνεται όποτε προγραμματίζετε… Όταν κάνετε compile…  C source file (*.c) to executable program (machine language)  Java source file (*.java) to Java interpreted file (*.class) 6/1/2015 Ν. Σπανουδάκης 36

Ποια είναι η διαδικασία που ακολουθήσαμε; Ορίζεται σύμφωνα με το Μεταμοντέλο Περιγραφής Διαδικασιών Ανάπτυξης Λογισμικού SPEM (Software Process Engineering Metamodel) της OMG Συμβολισμοί: 6/1/2015 Ν. Σπανουδάκης 37

Μια Διαδικασία Ανάπτυξης Λογισμικού 6/1/2015 Ν. Σπανουδάκης 38

Σύνοψη - Συμπεράσματα Σήμερα είδαμε τα  MDE: Model-Driven Engineering  MDA: Model-Driven Architecture, CIM, PIM, PSM  M2M, M2T, T2M, T2T transformations  EMF, Ecore, Xpand  DSL: Domain Specific Language  Automatic code generation for UML statecharts 6/1/2015 Ν. Σπανουδάκης 39

Είδαμε τις τεχνολογίες Object Management Group  IBM method: Getting form Use Cases to code  Eclipse Modeling Tools IDE  Visual Paradigm tool  6/1/2015 Ν. Σπανουδάκης 40

Ευχαριστώ για την προσοχή σας Είμαι διαθέσιμος για περισσότερες πληροφορίες και ερωτήσεις Νίκος Σπανουδάκης ΕΕΔΙΠ ΙΙ Εργαστήριο Εφαρμοσμένων Μαθηματικών και Ηλεκτρονικών Υπολογιστών Γενικό Τμήμα Πολυτεχνείο Κρήτης Δ.νση: Πολυτεχνειούπολη, Κουνουπιδιανά, 73100, Χανιά Γραφείο: 137.B.94 Τηλ.: Φαξ: Ηλ. ταχ/μείο: Ιστόσελίδα: 6/1/2015 Ν. Σπανουδάκης 41