Δούμας Οδυσσέας 7168

23
Σχεδίαση μιας Εξειδικευμένης Πλατφόρμας Συστήματος διαδικτυακών υπηρεσιών REST και αυτόματη παραγωγή εκτελέσιμου κώδικα Επιβλέποντες Επίκουρος Καθηγητής Ανδρέας Λ. Συμεωνίδης Υποψήφιος Διδάκτωρ Χριστόφορος Ζολώτας Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Ηλεκτρονικής Ιούλιος 2016 Δούμας Οδυσσέας ΑΕΜ:7168

Transcript of Δούμας Οδυσσέας 7168

Page 1: Δούμας Οδυσσέας 7168

Σχεδίαση μιας Εξειδικευμένης Πλατφόρμας

Συστήματος διαδικτυακών υπηρεσιών REST και

αυτόματη παραγωγή εκτελέσιμου κώδικα

ΕπιβλέποντεςΕπίκουρος Καθηγητής Ανδρέας Λ. ΣυμεωνίδηςΥποψήφιος Διδάκτωρ Χριστόφορος Ζολώτας

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

Δούμας Οδυσσέας ΑΕΜ:7168

Page 2: Δούμας Οδυσσέας 7168

Περιεχόμενα

Εισαγωγή σε Rest και MDE Στόχος της διπλωματικής εργασίας. Παρουσίαση της υλοποίησης

• PSM μετα-μοντέλο (Ecore, EVL)• PIM to PSM μετασχηματισμός (ATL)• PSM to Code μετασχηματισμός (Acceleo)

Επίδειξη λειτουργίας και πιθανές βελτιώσεις.

Page 3: Δούμας Οδυσσέας 7168

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}

Page 4: Δούμας Οδυσσέας 7168

Αυξανόμενη τάση για RESTful Web APIs

Αυτή τη στιγμή 2016 – πάνω από 15.000

APIs 10.000 RESTful Web APIs 2.500 SOAP APIs Γενική στροφή προς το

REST στυλ από μεγάλες εταιρίες διαδικτυακών εφαρμογών

Πλεονεκτήματα REST Απλότητα Ελαφριά υλοποίηση Scalability

Page 5: Δούμας Οδυσσέας 7168

Αύξηση παραγωγικότητας με την χρήση MDE τεχνικώνModel Driven Engineering• Χρήση μοντέλων ως ενεργά

στοιχεία κατά την διαδικασία ανάπτυξης.

• Χρήση μετασχηματισμών και γεννητριών παραγωγής κώδικα.

Model Driven Architecture• Μια πρόταση του Object Management

Group.• Τρία βασικά επίπεδα μοντελοποίησης:

μοντέλα, μετα-μοντέλα, μετα-μετα-μοντέλα• Πληθώρα εργαλείων που υποστηρίζουν την

MDA.• Ορίζει μια σαφή αλληλουχία

μετασχηματισμών με σκοπό την αυτοματοποιημένη παραγωγή ενός προγράμματος.

Page 6: Δούμας Οδυσσέας 7168

Model Driven Architecture

CIM

PIM

PSM

Source codeDocumentationConfig files

CIM: Απαιτήσεις και προδιαγραφές.

PIM: Δομή και λειτουργικότητα ανεξαρτήτως της πλατφόρμας υλοποίησης. Αρχιτεκτονική.

PSM: Δομή και λειτουργικότητα, λαμβάνοντας υπόψιν τους περιορισμούς που επιβάλει μια συγκεκριμένη πλατφόρμα υλοποίησης

Πλεονεκτήματα• Αύξηση

παραγωγικότητας• Ευκολία συντήρησης και

επέκτασης• Επαναχρησιμοποίηση

των μοντέλων.• Τεκμηρίωση κώδικα.

Page 7: Δούμας Οδυσσέας 7168

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

Page 8: Δούμας Οδυσσέας 7168

Στόχος της διπλωματικής εργασίας Δημιουργία μιας 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

Page 9: Δούμας Οδυσσέας 7168

Δομή της διπλωματικής εργασίας 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

Page 10: Δούμας Οδυσσέας 7168

Λογική σχεδίασης του 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.

Page 11: Δούμας Οδυσσέας 7168

Ecore PSM μετα-μοντέλο (1/3) Service

Page 12: Δούμας Οδυσσέας 7168

Ecore PSM μετα-μοντέλο (2/3)CRUD Resource

Page 13: Δούμας Οδυσσέας 7168

Ecore PSM μετα-μοντέλο (3/3) HTTP Action

Page 14: Δούμας Οδυσσέας 7168

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

Page 15: Δούμας Οδυσσέας 7168

PSM μετα-μοντέλο : EVL έλεγχοι (2/2)

constraint RCGetActionAddsGetLinkToSelf {

guard : self.HypermediaLinkFunctionContainer().isTypeOf(CSharpResourceController) and self.HypermediaLinkFunctionVerb() = HTTPVerb#GET

check {var getSiblingLinks = self.hasPSMHypermediaLink

-> 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

Page 16: Δούμας Οδυσσέας 7168

PIM to PSM ATL μετασχηματισμός (1/2)

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

Atlas Transformation Language

Δέχεται σαν είσοδο ένα PIM μοντέλο. Παράγει ένα PSM μοντέλο. Κυρίως ορίζει κανόνες αντιστοιχίας μεταξύ στοιχείων. Μετατροπή της γενικής αρχιτεκτονικής σε αρχιτεκτονική

εξειδικευμένη ως προς την πλατφόρμα υλοποίησης.

PIM to PSM μετασχηματισμός

Page 17: Δούμας Οδυσσέας 7168

PIM to PSM ATL μετασχηματισμός (2/2)Παράδειγμα

rule ResourceModelManager2CSharpResourceModelManager {from

s: PIMMetamodel!ResourceModelManagerto

t: PSMMetamodel!CSharpResourceModelManager (name <- s.parentName.concat('Manager').toUpperFirst(),parentName <- s.parentName,CSharpRMManagerHasProperty <- s.hasRMManagerProperty,hasRelatedCSharpRModel <- s.hasRelatedModel,CSharpRMManagerHasGetter <- s.rMManagerHasGetter,CSharpRMManagerHasSetter <- s.rMManagerHasSetter,CSharpRMManagerHasDataAnnotation <- dataContractAnnotation

),dataContractAnnotation: PSMMetamodel!DataContractAnnotation( dataContractAnnotationText <- '[DataContract]')

}

Page 18: Δούμας Οδυσσέας 7168

PSM to Code Acceleo μετασχηματισμός (1/2) Χρήση templates για την παραγωγή αρχείων κειμένου. Υποστηρίζει τα πρότυπα της MDA. Ενσωματώνει την OCL γλώσσα.

Acceleo Model to Text Transformation Language

Παράδειγμα

Page 19: Δούμας Οδυσσέας 7168

PSM to Code Acceleo μετασχηματισμός (2/2)

Αρχεία πηγαίου κώδικα. Αρχεία ρυθμίσεων. Αρχεία για την δημιουργία των

εκτελέσιμων αρχείων. Αρχεία για την υποστήριξη του

Visual Studio.

PSM to Code Δομή παραγόμενων αρχείων

Page 20: Δούμας Οδυσσέας 7168

Επίδειξη Λειτουργίας

Eclipse IDE Modeling Package .NET 4.5 NuGet Package Manager MsBuild IIS Express Server

Προαπαιτούμενα

Page 21: Δούμας Οδυσσέας 7168
Page 22: Δούμας Οδυσσέας 7168

Βελτιώσεις Παραγωγή APIs με επιπλέον λειτουργικότητα• 3d Party Web Services• Αναζήτηση στην βάση δεδομένων• Authentication• Authorization

Page 23: Δούμας Οδυσσέας 7168

Ευχαριστώ!