This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Σχεδίαση μιας Εξειδικευμένης Πλατφόρμας
Συστήματος διαδικτυακών υπηρεσιών REST και
αυτόματη παραγωγή εκτελέσιμου κώδικα
ΕπιβλέποντεςΕπίκουρος Καθηγητής Ανδρέας Λ. ΣυμεωνίδηςΥποψήφιος Διδάκτωρ Χριστόφορος Ζολώτας
Αριστοτέλειο Πανεπιστήμιο ΘεσσαλονίκηςΤμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΥπολογιστώνΤομέας ΗλεκτρονικήςΙούλιος 2016
Δούμας Οδυσσέας ΑΕΜ:7168
Περιεχόμενα
Εισαγωγή σε Rest και MDE Στόχος της διπλωματικής εργασίας. Παρουσίαση της υλοποίησης
• PSM μετα-μοντέλο (Ecore, EVL)• PIM to PSM μετασχηματισμός (ATL)• PSM to Code μετασχηματισμός (Acceleo)
Επίδειξη λειτουργίας και πιθανές βελτιώσεις.
REST και ROARepresentational State Transfer (REST)• Addressability • Statelessness• Connectedness• Uniform InterfaceResource Oriented Architecture• Resources • URI• Resource Representation• Hypermedia Links• HTTP
RESTful Web API
cache
client
cache
client
Statelessserver
GET a/resource/uri
200 OK Resource Representation:{...Hypermedia Links}
Αυξανόμενη τάση για RESTful Web APIs
Αυτή τη στιγμή 2016 – πάνω από 15.000
APIs 10.000 RESTful Web APIs 2.500 SOAP APIs Γενική στροφή προς το
REST στυλ από μεγάλες εταιρίες διαδικτυακών εφαρμογών
Αύξηση παραγωγικότητας με την χρήση MDE τεχνικώνModel Driven Engineering• Χρήση μοντέλων ως ενεργά
στοιχεία κατά την διαδικασία ανάπτυξης.
• Χρήση μετασχηματισμών και γεννητριών παραγωγής κώδικα.
Model Driven Architecture• Μια πρόταση του Object Management
Group.• Τρία βασικά επίπεδα μοντελοποίησης:
μοντέλα, μετα-μοντέλα, μετα-μετα-μοντέλα• Πληθώρα εργαλείων που υποστηρίζουν την
MDA.• Ορίζει μια σαφή αλληλουχία
μετασχηματισμών με σκοπό την αυτοματοποιημένη παραγωγή ενός προγράμματος.
Model Driven Architecture
CIM
PIM
PSM
Source codeDocumentationConfig files
CIM: Απαιτήσεις και προδιαγραφές.
PIM: Δομή και λειτουργικότητα ανεξαρτήτως της πλατφόρμας υλοποίησης. Αρχιτεκτονική.
PSM: Δομή και λειτουργικότητα, λαμβάνοντας υπόψιν τους περιορισμούς που επιβάλει μια συγκεκριμένη πλατφόρμα υλοποίησης
Πλεονεκτήματα• Αύξηση
παραγωγικότητας• Ευκολία συντήρησης και
επέκτασης• Επαναχρησιμοποίηση
των μοντέλων.• Τεκμηρίωση κώδικα.
S-CASE Project
Εισαγωγή λειτουργικών απαιτήσεων.Μετασχηματισμός των απαιτήσεων σε μοντέλα.Εφαρμογή της MDA μεθοδολογίας για την αυτόματη παραγωγή κώδικα.Παραγωγή πλήρως λειτουργικού RESTful Web API.
S-CASE J AVA MDE Engine
CIM Generator
PIM Generator
J ava PSM Generator
J ava Code Generator
Παραγωγή λογισμικού με το S-CASE
Στόχος της διπλωματικής εργασίας Δημιουργία μιας MDA πλατφόρμας για την ανάπτυξη λογισμικού. Συμβατότητα με την S-CASE MDE Engine. Αυτόματη παραγωγή RESTful WEB APIs υλοποιημένα στην
πλατφόρμα .NET της Microsoft, και γραμμένα σε C#. Υλοποίηση έτοιμη για εκτέλεση, με δυνατότητες εξυπηρέτησης CRUD
αιτημάτων.
Semantic Parsing and Software Entities
Extraction
S-CASE JAVA MDE EngineJ ava Restful
Service PrototypeCIM
GeneratorPIM
GeneratorJ ava PSM Generator
J ava Code Generator
C# MDE Engine
C# PSM Generator
C# Code Generator
C# Restful Service
Prototype
Δομή της διπλωματικής εργασίας PSM μετα-μοντέλο Model-to-Model ATL PIM to PSM μετασχηματισμός Model-to-Text Acceleo μετασχηματισμός για την παραγωγή πηγαίου
κώδικα
XMI PIM ASP.NET Web API
PIM-To-PSMATL
TrasnformationXMI PSM
PSM-To-CodeAcceleo
Trasnformation
Λογική σχεδίασης του PSM μετα-μοντέλου ASP.NET WEB API: Υλοποιεί την
επικοινωνία μέσω HTTP και την λήψη αιτημάτων, καθώς και την μετατροπή ενός resource σε XML\JSON.
Entity Framework: Υλοποιεί την Object Relation Mapping (ORM) διαδικασία.
Τεχνολογίες
C# κλάσεις μοντελοποιούν τα Model και Controller.
Handlers εξυπηρετούν τα αιτήματα.
Μοναδικό Data Access Object. Παραγωγή Hypermedia Links
στους Handlers.
Γενικά
Model
Controller
The model is annotated with Data Contract annotations,
for XML or J SON serialization.
The model is annotated with Data Annotations, which in conjunction with the
Entity Framework perform the object-relational mapping.
The controller is annotated with
Attribute Routing annotations to expose all the endpoints of
the Web API.
Ecore PSM μετα-μοντέλο (1/3) Service
Ecore PSM μετα-μοντέλο (2/3)CRUD Resource
Ecore PSM μετα-μοντέλο (3/3) HTTP Action
PSM μετα-μοντέλο : EVL έλεγχοι (1/2) OCL σύνταξη Δηλωτική γλώσσα Επιτρέπει την εφαρμογή ελέγχων και ερωτημάτων σε μοντέλα
constraint TableEntityAnnotation{check {
return self.CSharpRModelHasEntityAnnotation.EntityAnnotationText.startsWith("[Table(")and self.CSharpRModelHasEntityAnnotation.EntityAnnotationText.endsWith(")]") ;}message{return "Every CSharpResourceModel must have exactly one [Table] Entity Annotation : " + self;
}}
Παράδειγμα 1
PSM μετα-μοντέλο : EVL έλεγχοι (2/2)
constraint RCGetActionAddsGetLinkToSelf {
guard : self.HypermediaLinkFunctionContainer().isTypeOf(CSharpResourceController) and self.HypermediaLinkFunctionVerb() = HTTPVerb#GET
-> select(l|l.linkHTTPVerb = HTTPVerb#GET and l.linkType = LinkType#Sibling);
if (getSiblingLinks.size() = 0 or getSiblingLinks.size() > 1)return false ;elsereturn getSiblingLinks -> one(l|l.hasTargetCSharpRController = self.HypermediaLinkFunctionContainer()) ;
}}
Παράδειγμα 2
PIM to PSM ATL μετασχηματισμός (1/2)
Γλώσσα για τον ορισμό μετασχηματισμών μεταξύ μοντέλων. Στηρίζεται στα πρότυπα που ορίζει η MDA. Δηλωτική γλώσσα, συνδυασμός με OCL.
Atlas Transformation Language
Δέχεται σαν είσοδο ένα PIM μοντέλο. Παράγει ένα PSM μοντέλο. Κυρίως ορίζει κανόνες αντιστοιχίας μεταξύ στοιχείων. Μετατροπή της γενικής αρχιτεκτονικής σε αρχιτεκτονική
PSM to Code Acceleo μετασχηματισμός (1/2) Χρήση templates για την παραγωγή αρχείων κειμένου. Υποστηρίζει τα πρότυπα της MDA. Ενσωματώνει την OCL γλώσσα.
Acceleo Model to Text Transformation Language
Παράδειγμα
PSM to Code Acceleo μετασχηματισμός (2/2)
Αρχεία πηγαίου κώδικα. Αρχεία ρυθμίσεων. Αρχεία για την δημιουργία των
εκτελέσιμων αρχείων. Αρχεία για την υποστήριξη του
Visual Studio.
PSM to Code Δομή παραγόμενων αρχείων
Επίδειξη Λειτουργίας
Eclipse IDE Modeling Package .NET 4.5 NuGet Package Manager MsBuild IIS Express Server
Προαπαιτούμενα
Βελτιώσεις Παραγωγή APIs με επιπλέον λειτουργικότητα• 3d Party Web Services• Αναζήτηση στην βάση δεδομένων• Authentication• Authorization