Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dontsios Dimitris

171 views

Published on

Μοντελοποίηση μη λειτουργικών απαιτήσεων λογισμικού σε
μοντέλα διαδικτυακών συστημάτων REST

Published in: Education
  • Be the first to comment

  • Be the first to like this

Dontsios Dimitris

  1. 1. Μοντελοποίηση μη λειτουργικών απαιτήσεων λογισμικού σε μοντέλα διαδικτυακών συστημάτων REST Θεσσαλονίκη, 16 Μαρτίου 2017 ΦΟΙΤΗΤΗΣ Δόντσιος Δημήτριος 7526 ― dontsios@gmail.com ΕΠΙΒΛΕΠΟΝΤΕΣ Ανδρέας Λ. Συμεωνίδης Χριστόφορος Ζολώτας
  2. 2. Δομή της παρουσίασης Επισκόπηση Παρουσίαση της Μεθοδολογίας Θεωρητικό Υπόβαθρο Στόχος της Διπλωματικής Εισαγωγή 2
  3. 3. Richardson Maturity Model Representational State Transfer: • Σετ κανόνων και περιορισμών για την αρχιτεκτονική διαδικτυακών υπηρεσιών • Επίτευξη εξαιρετικής απόδοσης, επεκτασιμότητας, απλότητας, εύκολης τροποποίησης , αξιοπιστία και μεταφερσιμότητα • Όλα είναι πόροι • Χρήση του HTTP ρημάτων με URI για τη μετάβαση καταστάσεων Glory of REST LEVEL 3 Hypermedia Controls LEVEL 2 HTTP Verbs LEVEL 1 Resources LEVEL 0 The Swamp of POX RESTful διαδικτυακή υπηρεσία 3
  4. 4. Έκρηξη ανάγκης για Web / RESTful API 4
  5. 5. Μηχανές παραγωγής RESTful API 5
  6. 6. Code Implementation X Code Implementation Y Code Implementation Z CIM PIM PSM Y PSM X PSM Z Πρώτη Φάση Δεύτερη Φάση Τρίτη Φάση Τέταρτη Φάση S-CASE MDE Engine Εργαλείο μοντελοστραφούς προσέγγισης MDA που επιτυγχάνει γρήγορη ημιαυτοματοποιημένη παραγωγή κώδικα για RESTful API 3ου επιπέδου στο RMM 6
  7. 7. Επέκταση υπάρχοντος δισδιάστατου μηχανισμού μοντελοστραφούς σχεδίασης διαδικτυακών υπηρεσιών REST, S-CASE, ώστε να μπορεί να λαμβάνει υπόψη και μη λειτουργικές απαιτήσεις. Στόχος της διπλωματικής 7  Εστίαση στις λειτουργικές απαιτήσεις  Καμία αυτοματοποίηση για την κάλυψη των μη λειτουργικών απαιτήσεων
  8. 8. Μεθοδολογία ανάπτυξης λογισμικού βασισμένη σε μοντέλα – αφαιρετικές αναπαραστάσεις της πληροφορίας και των ενεργειών που απαιτούνται για τη σχεδίαση και την υλοποίηση ενός συστήματος. Model Driven Engineering Γιατί MDE: • Αυτοματοποιημένη παραγωγή κώδικα • Φθηνό και ποιοτικό λογισμικό γρήγορα • Σχεδιασμός προσανατολισμένος στο πρόβλημα • Παραγωγή κώδικα για πολλαπλές πλατφόρμες 8
  9. 9. S-CASE MDE Engine – Μηχανισμός Επεκτάσεων S-CASE Architecture Extension Metamodel 9
  10. 10. Model to Model μετασχηματισμός EMF Ecore TechnologyAtlas transformation Language  Δηλωτική και Προστακτική  Κομμάτι του Eclipse M2M  Matched Rules  Lazy Rules  Unique Lazy Rules  Called Rules unique lazy rule createAnnCRUDActivityHandler{ from CRUDActivityHandler : COREPIMIN!CRUDActivityHandler to AnnCRUDActivityHandler: DESPIMOUT!AnnCRUDActivityHandler ( annotatesCRUDActivityHandler <- CRUDActivityHandler ) } 10
  11. 11. Model to Text μετασχηματισμός [if (anAnnotationStack.bHasDesignPatternsLayer)] [if (anAnnotationStack.hasObserverPattern())] [javaObserver()/] [/if] [if (anAnnotationStack.hasBuilderPattern())] [javaRepresentationModel()/] [/if] [if(anAnnotationStack.hasMementoPattern()>0)] [javaMemento()/] [/if] [/if] 11
  12. 12. Μη λειτουργικές απαιτήσεις Ιδιότητες τους συστήματος και περιορισμοί στις υπηρεσίες ή τις λειτουργίες που προσφέρει το σύστημα. 12  Έλεγχος συστήματος – Παρακολούθηση συμβάντων (audit trail)  Reporting  Συμβατότητα  Επεκτασιμότητα  Εύκολη τροποποίηση κώδικα  Επαναχρησιμοποίηση κώδικα  Διατηρησιμότητα  Πολλαπλές αναπαραστάσεις πόρων και έλεγχος πρόσβασης και προσπέλασης δεδομένων  Δυνατότητα απομνημόνευσης παλαιότερης κατάστασης πόρων και ανάκτησης παλαιότερων καταστάσεων
  13. 13. Πρότυπο ΜΛΑ Χτίστη Παρατηρητή Μνήμης Γέφυρας Έλεγχος Συστήματος ✓ ✓ Reporting ✓ Συμβατότητα ✓ ✓ Επεκτασιμότητα ✓ Διατηρησιμότητα ✓ ✓ Εύκολη Τροποποίηση ✓ Επαναχρησιμοποίηση ✓ Πολλαπλές αναπαραστάσεις πόρων ✓ Έλεγχος πρόσβασης στα δεδομένα ✓ ✓ Δυνατότητα απομνημόνευσης και ανάκτησης παλαιότερης κατάστασης ✓ Πρότυπα σχεδίασης και ΜΛΑ που καλύπτουν 13
  14. 14. Δημιουργία στιγμιότυπων αναπαράστασης (υποσύνολο των properties ενός resource/endpoint) κατά την εκτέλεση. Παρακολούθηση συμβάντων/ενεργειών σε κάποιο resource/endpoint του συστήματος – Εκτέλεση κάποιας ενέργειας αντίδρασης. Διατήρηση παλαιότερης κατάστασης ενός resource/endpoint στη βάση και δυνατότητα ανάκτησής της. «Αφαίρεση» των χειριστών των HTTP ρημάτων των αλγοριθμικών resources/endpoints. Πρότυπα σχεδίασης και ο τρόπος με τον οποίο καλύπτουν τις ΜΛΑ Builder Observer Memento Bridge 14
  15. 15. •Ορισμός του CIM μεταμοντέλου •Δημιουργία του CIM Wizard CIM Generator •Ορισμός του PIM μεταμοντέλου •ATL m2m CIMtoPIM μετασχηματισμός PIM Generator •Ορισμός του PSM μεταμοντέλου •ATL m2m PIMtoPSM μετασχηματισμός PSM Generator •Ορισμός νέων Acceleo m2t μετασχηματισμών για την παραγωγή κώδικα •Μετασχηματισμός παλαιών Acceleo m2t μετασχηματισμών •AnnotationLayer Stack.ecore Code Generator Μεθοδολογία ανάπτυξης της επέκτασης •RESTful API με JAX RS και Hibernate Annotations •Πρότυπα Σχεδίασης RESTful API 15
  16. 16. DesignPatternsLayerCIM Metamodel Πρότυπο Χτίστη 16 Στοιχεία του ecore μεταμοντέλου που μοντελοποιούν την υπηρεσία με χρήση του προτύπου Χτίστη
  17. 17. DesignPatternsLayerPIM Metamodel Πρότυπο Χτίστη 17 Στοιχεία του ecore μεταμοντέλου που μοντελοποιούν την υπηρεσία με χρήση του προτύπου Χτίστη
  18. 18. DesignPatternsLayerPSM Metamodel Πρότυπο Χτίστη Στοιχεία του ecore μεταμοντέλου που μοντελοποιούν την υπηρεσία με χρήση του προτύπου Χτίστη 18
  19. 19. DesignPatternsLayerCIM Metamodel Πρότυπο Παρατηρητή 19
  20. 20. DesignPatternsLayerPIM Metamodel Πρότυπο Παρατηρητή 20
  21. 21. DesignPatternsLayerPSM Metamodel Πρότυπο Παρατηρητή 21
  22. 22. DesignPatternsLayerCIM Metamodel Πρότυπο Γέφυρας 22
  23. 23. DesignPatternsLayerPIM Metamodel Πρότυπο Γέφυρας 23
  24. 24. DesignPatternsLayerPSM Metamodel Πρότυπο Γέφυρας 24
  25. 25. DesignPatternsLayerCIM Metamodel Πρότυπο Μνήμης 25
  26. 26. DesignPatternsLayerPIM Metamodel Πρότυπο Μνήμης 26
  27. 27. DesignPatternsLayerPSM Metamodel Πρότυπο Μνήμης 27
  28. 28. account tag -descritpion: String -username: String -email: String -password: String bookmark -url : String AlgoTagSearch [1..*] [1..*] [1..*] has attributes depending on the searchable resource RESTMarks - ERD 28 Υπηρεσία κοινωνικής δικτύωσης. Χρήστες που έχουν σελιδοδείκτες, οι οποίοι έχουν ετικέτες, στις οποίες μπορεί κανείς να εκτελέσει αναζήτηση.
  29. 29. Code Generation 29
  30. 30. Code Generation 30
  31. 31. Code Generation 31
  32. 32. API Test
  33. 33. Έννοιες  Model Driven Engineering – Model Driven Architecture  REST  Μη λειτουργικές απαιτήσεις λογισμικού  Πρότυπα σχεδίασης Φόρτος • 4 νέα μεταμοντέλα .ecore • 49 νέα ζευγάρια πακέτα κώδικα μέσω του .genmodel των ecore μεταμοντέλων. • 3 ATL μετασχηματισμοί – 900 γραμμές κώδικα ATL • 25 Acceleo μετασχηματισμοί – 7500 γραμμές κώδικα Acceleo • 1 νέος wizard – 2000 γραμμές κώδικα Java Μελλοντικές Επεκτάσεις • Εισαγωγή νέων προτύπων • Μιξάρισμα των υπαρχόντων • Επέκταση των προτύπων που υλοποιήθηκαν Απολογισμός – 1 Τεχνολογίες  Java EE  Ecore  ATL  Acceleo  JAX-RS  Hibernate  PostgreSQL  Jetty  Maven  Postman 32
  34. 34. Απολογισμός – 2 Πρότυπο Παρατηρητή  Nέες java κλάσεις Observe και ObservableHandlers  Μεταβολή των Controller, Handler, Hibernate java classes  Νέοι πίνακες με τους παρατηρητές στη βάση δεδομένων Πρότυπο Χτίστη  Νέα java κλάση resourceRepresentationModel.j ava  Μεταβολή των Controller και Handler  Νέα Hibernate Annotations Πρότυπο Γέφυρας  Nέες abstract κλάσεις που υλοποιούν τους Controllers και τους Handlers αλγοριθμικών πόρων  Νέες κλάσεις που επεκτείνουν τους Controllers και Handlers Πρότυπο Μνήμης  Νέα java κλάση resourceModelMemento.java  Μεταβολή των Controller, Handler, Hibernate java classes  Νέοι πίνακες με τα στιγμιότυπα μνήμης στη βάση δεδομένων 33
  35. 35. Απολογισμός – 3 0 1000 2000 3000 4000 5000 6000 Without any Patterns 1 Pattern: Observer 2 Patterns: Observer + Memento 4 Patterns Γραμμές κώδικα παραγόμενου RESTful API - RESTMarks Least Most * Καθαρές γραμμές κώδικα – χωρίς brackets, κενά και σχόλια ** Στοιχεία μέσω του LocMetrics 34
  36. 36. Ευχαριστώ Θεσσαλονίκη, 16 Μαρτίου 2017

×