1. Σχεδίαση μιας Εξειδικευμένης Πλατφόρμας
Συστήματος διαδικτυακών υπηρεσιών REST και
αυτόματη παραγωγή εκτελέσιμου κώδικα
Επιβλέποντες
Επίκουρος Καθηγητής Ανδρέας Λ. Συμεωνίδης
Υποψήφιος Διδάκτωρ Χριστόφορος Ζολώτας
Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Τομέας Ηλεκτρονικής
Ιούλιος 2016
Δούμας Οδυσσέας ΑΕΜ:7168
2. Περιεχόμενα
Εισαγωγή σε Rest και MDE
Στόχος της διπλωματικής εργασίας.
Παρουσίαση της υλοποίησης
• PSM μετα-μοντέλο (Ecore, EVL)
• PIM to PSM μετασχηματισμός (ATL)
• PSM to Code μετασχηματισμός (Acceleo)
Επίδειξη λειτουργίας και πιθανές βελτιώσεις.
3. REST και ROA
Representational State Transfer
(REST)
• Addressability
• Statelessness
• Connectedness
• Uniform Interface
Resource Oriented Architecture
• Resources
• URI
• Resource Representation
• Hypermedia Links
• HTTP
RESTful Web API
cache
client
cache
client
Stateless
server
GET a/resource/uri
200 OK
Resource Representation:{
...
Hypermedia Links
}
4. Αυξανόμενη τάση για RESTful Web APIs
Αυτή τη στιγμή
2016 – πάνω από 15.000 APIs
10.000 RESTful Web APIs
2.500 SOAP APIs
Γενική στροφή προς το REST
στυλ από μεγάλες εταιρίες
διαδικτυακών εφαρμογών
Πλεονεκτήματα REST
Απλότητα
Ελαφριά υλοποίηση
Scalability
5. Αύξηση παραγωγικότητας με την χρήση
MDE τεχνικών
Model Driven Engineering
• Χρήση μοντέλων ως ενεργά
στοιχεία κατά την διαδικασία
ανάπτυξης.
• Χρήση μετασχηματισμών και
γεννητριών παραγωγής κώδικα.
Model Driven Architecture
• Μια πρόταση του Object Management Group.
• Τρία βασικά επίπεδα μοντελοποίησης:
μοντέλα, μετα-μοντέλα, μετα-μετα-μοντέλα
• Πληθώρα εργαλείων που υποστηρίζουν την
MDA.
• Ορίζει μια σαφή αλληλουχία
μετασχηματισμών με σκοπό την
αυτοματοποιημένη παραγωγή ενός
προγράμματος.
6. Model Driven Architecture
CIM
PIM
PSM
Source code
Documentation
Config files
CIM: Απαιτήσεις και
προδιαγραφές.
PIM: Δομή και λειτουργικότητα
ανεξαρτήτως της πλατφόρμας
υλοποίησης. Αρχιτεκτονική.
PSM: Δομή και λειτουργικότητα,
λαμβάνοντας υπόψιν τους
περιορισμούς που επιβάλει μια
συγκεκριμένη πλατφόρμα
υλοποίησης
Πλεονεκτήματα
• Αύξηση παραγωγικότητας
• Ευκολία συντήρησης και
επέκτασης
• Επαναχρησιμοποίηση των
μοντέλων.
• Τεκμηρίωση κώδικα.
7. S-CASE Project
Εισαγωγή λειτουργικών
απαιτήσεων.
Μετασχηματισμός των
απαιτήσεων σε μοντέλα.
Εφαρμογή της MDA
μεθοδολογίας για την αυτόματη
παραγωγή κώδικα.
Παραγωγή πλήρως
λειτουργικού RESTful Web API.
S-CASE JAVA MDE Engine
CIM
Generator
PIM
Generator
Java PSM
Generator
Java Code
Generator
Παραγωγή λογισμικού με το
S-CASE
8. Στόχος της διπλωματικής εργασίας
Δημιουργία μιας MDA πλατφόρμας για την ανάπτυξη λογισμικού.
Συμβατότητα με την S-CASE MDE Engine.
Αυτόματη παραγωγή RESTful WEB APIs υλοποιημένα στην πλατφόρμα .NET της
Microsoft, και γραμμένα σε C#.
Υλοποίηση έτοιμη για εκτέλεση, με δυνατότητες εξυπηρέτησης CRUD αιτημάτων.
Semantic
Parsing and
Software
Entities
Extraction
S-CASE JAVA MDE Engine
Java Restful
Service
PrototypeCIM
Generator
PIM
Generator
Java PSM
Generator
Java Code
Generator
C# MDE Engine
C# PSM
Generator
C# Code
Generator
C# Restful
Service
Prototype
9. Δομή της διπλωματικής εργασίας
PSM μετα-μοντέλο
Model-to-Model ATL PIM to PSM μετασχηματισμός
Model-to-Text Acceleo μετασχηματισμός για την παραγωγή πηγαίου κώδικα
XMI PIM
ASP.NET
Web API
PIM-To-PSM
ATL
Trasnformation
XMI PSM
PSM-To-Code
Acceleo
Trasnformation
10. Λογική σχεδίασης του PSM μετα-μοντέλου
ASP.NET WEB API: Υλοποιεί την
επικοινωνία μέσω HTTP και την λήψη
αιτημάτων, καθώς και την μετατροπή
ενός resource σε XMLJSON.
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 JSON
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.
14. 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
15. 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 ;
else
return getSiblingLinks
-> one(l|l.hasTargetCSharpRController = self.HypermediaLinkFunctionContainer()) ;
}
}
Παράδειγμα 2
16. PIM to PSM ATL μετασχηματισμός (1/2)
Γλώσσα για τον ορισμό μετασχηματισμών μεταξύ μοντέλων.
Στηρίζεται στα πρότυπα που ορίζει η MDA.
Δηλωτική γλώσσα, συνδυασμός με OCL.
Atlas Transformation Language
Δέχεται σαν είσοδο ένα PIM μοντέλο.
Παράγει ένα PSM μοντέλο.
Κυρίως ορίζει κανόνες αντιστοιχίας μεταξύ στοιχείων.
Μετατροπή της γενικής αρχιτεκτονικής σε αρχιτεκτονική εξειδικευμένη ως
προς την πλατφόρμα υλοποίησης.
PIM to PSM μετασχηματισμός
17. PIM to PSM ATL μετασχηματισμός (2/2)
Παράδειγμα
rule ResourceModelManager2CSharpResourceModelManager {
from
s: PIMMetamodel!ResourceModelManager
to
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]'
)
}
18. PSM to Code Acceleo μετασχηματισμός (1/2)
Χρήση templates για την παραγωγή αρχείων κειμένου.
Υποστηρίζει τα πρότυπα της MDA.
Ενσωματώνει την OCL γλώσσα.
Acceleo Model to Text Transformation Language
Παράδειγμα
19. PSM to Code Acceleo μετασχηματισμός (2/2)
Αρχεία πηγαίου κώδικα.
Αρχεία ρυθμίσεων.
Αρχεία για την δημιουργία των
εκτελέσιμων αρχείων.
Αρχεία για την υποστήριξη του
Visual Studio.
PSM to Code Δομή παραγόμενων αρχείων