Successfully reported this slideshow.
Your SlideShare is downloading. ×

Dontsios Dimitris

More Related Content

Slideshows for you

More from ISSEL

Related Audiobooks

Free with a 30 day trial from Scribd

See all

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

Editor's Notes

  • Καλησπέρα

    Ονομάζομαι Δόντσιος Δημήτριος και ο τίτλος της διπλωματικής μου είναι «Μοντελοποίηση μη λειτουργικών απαιτήσεων λογισμικού σε μοντέλα διαδικτυακών συστημάτων REST»
  • Αρχικά θα γίνει μια γενική εισαγωγή και θα παρουσιαστεί ο λόγος για τον οποίο είναι αναγκαία η ύπαρξη της διπλωματικής αυτής.

    Έπειτα θα παρουσιαστεί ο στόχος της και το θεωρητικό υπόβαθρο για την κατανόηση των βασικών εννοιών.

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

    Τέλος θα παρουσιαστεί ένας απολογισμός των όσων έγιναν + βίντεο με τεστ της υπηρεσίας.
  • Τι είναι RESTful διαδικτυακή υπηρεσία;
    Representational State Transfer (Μεταφορά Αναπαραστάσεων Κατάστασης) και ορίζει έναν τύπο αρχιτεκτονικής λογισμικού υπηρεσιών του World Wide Web. To REST παρέχει ένα σετ από περιορισμούς και οδηγίες για τη σχεδίαση διανεμημένων υπηρεσιών (κυρίως web) με στόχο την καλύτερη απόδοση και μια περισσότερο διατηρήσιμη και επεκτάσιμη αρχιτεκτονική.

    Πόροι (resources) είναι οι θεμέλιοι λίθοι όλων web based συστημάτων

    Για να γίνει χρήση ενός πόρου χρειάζονται τρόποι αναγνώρισής του και διαχείρισής του. Το Web παρέχει το URI (Uniform Resource Identifier – Ενιαίο Αναγνωστικό Πόρων) για τους σκοπούς αυτούς. Ένα URI χαρακτηρίζει μοναδικά έναν πόρο, ενώ ταυτόχρονα παρέχει και μια διεύθυνση για τον πόρο αυτόν, μια δυνατότητα δηλαδή μεταχείρισης του πόρου μέσω ενός πρωτοκόλλου, όπως πχ το HTTP.


    Eξήγηση του RMM
    Το μοντέλο αυτό καθορίζει στην ουσία τα επίπεδα τα οποία πρέπει να ακολουθήσει κανείς για να χτίσει μια RESTful υπηρεσία, προσθέτοντας κάθε φορά ένα επίπεδο το οποίο καλύπτει κάποιους από τους περιορισμούς.

    Στην ουσία δημιουργείται ένας μηχανισμός tunneling – transport protocol - μέσα από τον οποίο ανταλλάσσονται αιτήσεις (συνήθως POST) μέσω ενός URI, πχ profilebook.org/Users, και υπάρχει απόκριση που παραδίδεται συνήθως σε μορφή XML.

    Εισαγωγή της έννοια των πόρων. Πλέον

    Στο επίπεδο 2 υπάρχουν πλέον πολλοί πόροι. Οι υπηρεσίες επιπέδου 2 υποστηρίζουν τη διαχείριση των πόρων με τη χρήση μεθόδων του πρωτοκόλλου HTTP και κωδικών απάντησης πετυχαίνοντας έτσι ένα εύρωστο σύστημα με μεγάλη λειτουργικότητα.

    Στο τελευταίο επίπεδο εισάγεται το HATEOAS (Hypertext As The Engine Of Application State), μηχανισμός o οποίος μετατρέπει την υπηρεσία επιπέδου 2 σε μια RESTful υπηρεσία, μια υπηρεσία που λειτουργεί σαν πεπερασμένο αυτόματο.
    Στο 3ο επίπεδο δεν υπάρχουν πλέον καταστάσεις -> υπάρχουν τα hypermedia controls
    Hypermedia controls are the combinations of protocol methods and link relations in an hypermedia format that tells the client what state transitions are available and how to perform them. 

    An hypermedia format defines the contract between client and server. It's the hyperlink-enabled data format you are using for a particular representation of a resource in an hypermedia application.
    The point of hypermedia controls is that they tell us what we can do next, and the URI of the resource we need to manipulate to do it.
  • Διαδίκτυο : ως η πιο σημαντική ανθρώπινη εφεύρεση του 20ου αιώνα.

    Παρόλο που ο πρωταρχικός του στόχος ήταν ο διαμοιρασμός εγγράφων

    τις τελευταίες δεκαετίες αναδείχθηκε ως μέσο διασύνδεσης διαφορετικών εφαρμογών, γεγονός στο οποίο οδήγησαν η ευρεία χρήση και υποστήριξη του

    Έτσι, το διαδίκτυο μεταμορφώθηκε σε μια παγκόσμια πλατφόρμα ανταλλαγής και διασύνδεσης δεδομένων και πληροφοριών για ένα οικοσύστημα υπηρεσιών που εκτελούνται στο διαδίκτυο, τις διαδικτυακές εφαρμογές.


    Είναι πολύ δύσκολο να γίνει ακριβής εκτίμηση όλων των Web APIs που υπάρχουν αυτή τη στιγμή, καθώς, εκτός από αυτά σε οποία έχουν πρόσβαση όλοι μέσω του διαδικτύου, υπάρχουν και ιδιωτικά τα οποία λειτουργούν στα πλαίσια ιδιωτικών εφαρμογών (από Web APIs για ενδοεταιρεικά δίκτυα μέχρι και για Internet of things εφαρμογές). Μια από τις πιο γνωστές ιστοσελίδες – ευρετήρια για τα APIs, το www.programmableweb.com , φιλοξενεί αυτή τη στιγμή πάνω από 16.600 APIs, εκ των οποίων περίπου 9.500 είναι υλοποιημένα σε RESTful αρχιτεκτονική

    Αντίστοιχα για το 2ο διάγραμμα δείχνει ότι υπάρχουν ανάγκες ανάπτυξης εργαλείων που διευκολύνουν την παραγωγή κώδικα.

    Εκθετική αύξηση API – γραμμική αύξηση προγραμματιστών

    Μια άλλη σημαντική εκτίμηση για τον αριθμό των APIs που υπάρχουν αυτή τη στιγμή, εκτίμηση που πραγματοποιήθηκε από το www.apihound.com, υπολογίζει ότι ο αριθμός των APIs αυτή τη στιγμή κυμαίνεται στις 50.000

    4πλασιαστεί μέχρι το 2020

    Επιπλέον, όπως φαίνεται και στο παρακάτω διάγραμμα, οι ανάγκες για Web APIs έχουν φτάσει σε μέγεθος το οποίο δεν μπορεί να καλυφθεί από τον αριθμό των επαγγελματιών προγραμματιστών και μηχανικών λογισμικού. Το γεγονός αυτό οδηγεί στην ανάγκη δημιουργίας εργαλείων που βοηθούν στην παραγωγή τους.

    Από τα παραπάνω μπορεί να εξαχθεί το συμπέρασμα ότι η ανάγκη για web APIs, και κυρίως για RESTful Web APIs, αυξάνεται συνεχώς.
    Για τον λόγο αυτό έχουν αναπτυχθεί εργαλεία που αυτοματοποιούν την παραγωγή WEB API, πχ το Django, EMF-REST και Ruby on Rails. Κανένα όμως από τα εργαλεία που αναπτύχθηκε δεν λαμβάνει υπόψιν του μη λειτουργικά χαρακτηριστικά του συστήματος που θέλουμε να παραχθεί.
  • To Ruby on Rails είναι ένα πλαίσιο (framework) ανοιχτού κώδικα για τη δημιουργία διαδικτυακών εφαρμογών χρησιμοποιώντας τη γλώσσα προγραμματισμού Ruby. Open Source – MVC – Ευκολη Ruby

    Το EMF-Rest, είναι ένα framework που βασίζεται στον Eclipse και επιτρέπει την ανάπτυξη μιας διαδικτυακής υπηρεσίας χρησιμοποιώντας τα μεταμοντέλα του Ecore. Όπως φαίνεται και στην παρακάτω εικόνα, o χρήστης του EMF-REST ξεκινάει μοντελοποιώντας τη web υπηρεσία του χρησιμοποιώντας το μεταμοντέλο Ecore. Όταν τελειώσει με αυτό, το EMF-Rest δημιουργεί την υπηρεσία χρησιμοποιώντας JAX-RS, JSON και JavaScript API.

    Το Django-REST-Framework είναι ακόμα ένα framework για τη δημιουργία RESTful υπηρεσιών. Το συγκεκριμένο βασίζεται στη γλώσσα python.

    Παραπάνω παρουσιάζονται οι πιο σοβαρές προσπάθειες που έχουν γίνει για να δημιουργηθούν συστήματα που εκτελούν αυτόματη παραγωγή κώδικα για RESTful web υπηρεσίες.

    Κάποιες από αυτές πετυχαίνουν υψηλότερη κάλυψη των επιπέδων που ορίζει το RMM, ενώ άλλες καταφέρνουν καλύτερη αυτοματοποίηση της διαδικασίας παραγωγής του κώδικα.

    Το κύριο μειονέκτημα των παραπάνω frameworks είναι η μη ικανότητα παραγωγής Hypermedia controls, του ανωτέρου δηλαδή επιπέδου του RMM. Ακόμα και στις λίγες περιπτώσεις που γίνεται η εισαγωγή και η παραγωγή των hypermedia controls, αυτή είναι συνήθως ελλιπής και αφήνεται στην ευχέρεια ενός προγραμματιστή η μεταβολή της web υπηρεσίας ώστε να ενσωματωθούν σωστά
  • Tα κυριότερα πλεονεκτήματα του S-CASE σε σχέση με τις υπόλοιπες υπάρχουσες τεχνολογίες είναι:

    H πλήρης κάλυψη του 3ου επιπέδου του RMΜ, κάτι που σημαίνει ότι οι παραγόμενες υπηρεσίες δεν παραβιάζουν κανέναν από τους περιορισμούς που απαιτείται να ικανοποιούνται έτσι ώστε ένα σύστημα να είναι RESTful.

    Οι πόροι που παράγονται είναι σημασιολογικά συνδεδεμένοι με hypermedia controls. Έτσι, κάθε φορά που ένας client θέλει να αλληλεπιδράσει με τους πόρους αυτούς μέσω HTTP ερωτημάτων, στις απαντήσεις από τον server ενσωματώνονται όλα τα hypermedia links του πόρου αυτού. Τα links αυτά περιέχουν το URI που απαιτείται έτσι ώστε η συσχέτιση να είναι σαφής και σωστή. Επίσης, στις απαντήσεις εμπεριέχεται και μια λίστα με τις υπόλοιπες επιτρεπόμενες ενέργειες που επιτρέπονται στον πόρο αυτόν.

    Η εφαρμογή του μοντελοστραφούς προγραμματισμού για την ανάπτυξη RESTful υπηρεσιών. Το MDE Engine ακολουθεί ρητά τα στάδια της MDE προσέγγισης και άρα κληρονομεί όλα τα πλεονεκτήματά της. Το MDE Engine του S-CASE παρέχει έναν κατανοητό μηχανισμό που είναι εύκολα επεκτάσιμος και μπορεί να συνδυάσει και να υποστηρίξει πολλές γλώσσες προγραμματισμού για τη δημιουργία RESTful API που καλύπτουν τις απαιτήσεις του 3ου επιπέδου του RMM.

    Η χρήση πλήρως διαφανών και κατανοητών μετασχηματισμών με τη χρήση της ATL γλώσσας αυξάνει την εύκολη ανάγνωση και την ακολουθήσει της διαδικασίας του MDE Engine.
  • Γιατί όμως η διπλωματκή αυτή;

    Όλα τα παραπάνω συστήματα, και καλύτερα από όλα το S-CASE, μπορούν να καλύψουν στην πλειοψηφία τους όλες τις λειτουργικές απαιτήσεις λογισμικού που θα είχε ένα RESTful API. Η κάλυψη όμως των μη λειτουργικών απαιτήσεων, κυρίως με αυτοματοποιημένη εφαρμογή προτύπων σχεδίασης σε συνδυασμό με τη χρήση μοντελοστραφών μεθόδων σε RESTful υπηρεσίες είναι μια ιδέα που βρίσκεται σε βρεφικό στάδιο.

    Ένα σύστημα για το οποίο δεν τηρούνται οι ΜΛΑ μπορεί να χαρακτηριστεί από αδύναμο έως άχρηστο. Παράδειγμα μια τραπεζική συναλλαγή που πραγματοποιείται σε 2 λεπτά. Ποιος θα χρησιμοποιούσε την υπηρεσία αυτή;
  • Γιατί MDE?

    Υλοποίηση βάση της σχεδίασης και όχι βάση της πλατφόρμας
    Σχεδιασμός δηλαδή προσανατολισμένος στο πρόβλημα
  • Τι είναι το S-CASE?

    Το S-CASE είναι το σύστημα δισδιάστατους μοντελοστραφούς σχεδίασης διαδικτυακών υπηρεσιών REST που θα επεκταθεί, καθώς, όπως αναφέρθηκε σε προηγούμενη ενότητα, είναι αυτό που επιτυγχάνει την καλύτερη κάλυψη των απαιτήσεων του 3ου επιπέδου του RMM. Στην πραγματικότητα, το S-CASE αποτελεί ένα εργαλείο το οποίο παρέχει σε στους χρήστες του τη δυνατότητα να επιταχύνουν τη διαδικασία ανάπτυξης ενός RESTful Web API.

    Το σύστημα επεκτάσεων που ακολουθεί είναι αυτό που φαίνεται στην εικόνα.

    Τα μεταμοντέλα επεκτάσεις έχουν τη μορφή που φαίνεται δίπλα

    Σχηματισμός του Computational Independent Model (CIM – Υπολογιστικά Ανεξάρτητο Μοντέλο). Το μοντέλο αυτό είναι η πιο αφαιρετική προσέγγιση του προς σχεδιασμό συστήματος. Περιλαμβάνει έννοιες, οντότητες και ιδιότητες που ανήκουν αυστηρά στο πεδίο της εφαρμογής. Σε αυτό το στάδιο δεν υπάρχει καμία έννοια που αφορά το σχεδιασμό, την αρχιτεκτονική και την υλοποίηση το συστήματος. Στην προσέγγιση που θα ακολουθηθεί σε αυτήν την εργασία, το πεδίο εφαρμογής είναι το RESTful πεδίο. Κύριες έννοιες του μοντέλου είναι οι αναπαραστάσεις, οι διεπαφές web, οι ιδιότητες των αναπαραστάσεων, οι συσχετίσεις των αναπαραστάσεων κλπ.

    Μετασχηματισμός M2M (model to model) του CIM για τη δημιουργία του αντίστοιχου Platform Independent Model (PIM – Μοντέλο Ανεξάρτητο της Πλατφόρμας Υλοποίησης). Στο στάδιο αυτό εισάγεται μια αφηρημένη σχεδίαση του συστήματος χωρίς λεπτομέρειες της υλοποίησης.

    Μετασχηματισμός του PIM για τη δημιουργία Platform Specific Models (PSM – Μοντέλα Εξαρτημένα της Πλατφόρμας Υλοποίησης). Το PSM συμβιβάζεται στη σχεδίαση που προτείνει το PIM αλλά καθορίζει και τον τρόπο με τον οποίο θα υλοποιηθεί η σχεδίαση εισάγοντας πληροφορίες για τη γλώσσα υλοποίησης, για τα frameworks που χρειάζονται, για βιβλιοθήκες, πρότυπα σχεδίασης κλπ.

    Δημιουργία κώδικα με χρήση προτύπων και μεταδεδομένων που ορίζει το PSM. Κάποια κομμάτια κώδικα μπορεί να είναι πλήρως υλοποιημένα, κάποια μερικώς.
  • ATL (ATL Transformation Language) is a model transformation language and toolkit. In the field of Model-Driven Engineering (MDE), ATL provides ways to produce a set of target models from a set of source models.
    Developed on top of the Eclipse platform, the ATL Integrated Environnement (IDE) provides a number of standard development tools (syntax highlighting, debugger, etc.) that aims to ease development of ATL transformations.

    Γλώσσα μετασχηματισμού μοντέλων. Παρέχει τρόπους για να παράγεις ένα μοντέλο από ένα άλλο. Και τα δύο μοντέλα πρέπει να συμμορφώνονται με ecore μεταμοντέλα.

    Matched Rule: Είναι δηλωτικοί κανόνες. Επιτρέπουν την αντιστοίχιση κάποιων στοιχείων με το πηγαίο μοντέλο και τη δημιουργία ενός αριθμού ξεχωριστών μοντέλων ως έξοδο. Ο μηχανισμός της ATL καλεί τους matched rules αυτόματα κάθε φορά που κάποιο στοιχείο του κανόνα «ταιριάζει» με κάποιο στοιχείο του μοντέλου που δόθηκε ως είσοδος.

    Lazy Rules: Μια υποκατηγορία των matched rules είναι οι lazy rules. Η βασική τους διαφορά έγκειται στο γεγονός ότι οι lazy rules πρέπει να καλεστούν από άλλους κανόνες.

    Unique Lazy Rules: Λειτουργεί όπως ο Lazy Rule, αλλά εκτελείται ακριβώς μια φορά για κάθε στοιχείο για το οποίο καλείται. Με άλλα λόγια, όσες κλήσεις και να γίνουν σε αυτόν τον κανόνα σε ένα συγκεκριμένο στοιχείο, ο κανόνας θα εκτελεστεί μια φορά ακριβώς, την πρώτη, και τις υπόλοιπες φορές επιστρέφει το ίδιο μετασχηματισμένο στοιχείο.

    Called Rules: Είναι προστακτικοί κανόνες που πρέπει να καλεστούν από άλλους κανόνες και δεν έχουν κανένα στοιχείο ως είσοδο. Χρησιμοποιούνται για τη γέννηση στοιχείων σε ένα μοντέλο για τα οποία δεν υπάρχει αντιστοιχία στο μοντέλο που θα μετασχηματιστεί.
  • Acceleo is an open-source code generator from the Eclipse Foundation that allows people to use a model-driven approach to building applications. It is an implementation of the "MOFM2T" standard, from the Object Management Group (OMG), for performing model-to-text transformation.

    Open-source μηχανή παραγωγής κώδικα. Βασίζεται σε μοντέλα που υπακούν σε ecore μεταμοντέλα και υλοποιεί model to text μετασχηματισμούς με χρήση «προτύπων»
  • Ότι δεν είναι λειτουργική είναι μη λειτουργική απαίτηση. Απαντάει στο πως ή το πόσο καλά κάνει κάτι το σύστημα.

    Έλεγχος συστήματος – Παρακολούθηση συμβάντων (audit trail). Είναι πολύ σημαντικό, για την καταγραφή κακόβουλων ενεργειών σε ένα σύστημα, για την αναγνώριση σφαλμάτων αλλά και για στατιστικούς λόγους να γίνεται κάποιου είδους παρακολούθηση (auditing) σε συγκεκριμένους πόρους. Παράδειγμα οι κινήσεις σε έναν τραπεζικό λογαριασμό, όταν ο λογαριασμός είναι κοινός μεταξύ 2 ή περισσότερων ατόμων.
    Reporting. Πολλές φορές υπάρχει ανάγκη ώστε να γίνονται αναφορές. Για παράδειγμα κατά την χρέωση ενός λογαριασμού, ο κάτοχος του θα ήθελε να ενημερώνεται για την ενέργεια αυτή.
    Συμβατότητα. Είναι θεμιτό μια παραγόμενη υπηρεσία να είναι συμβατή με ήδη υπάρχοντα κομμάτια κώδικα και τεχνολογίες.
    Επεκτασιμότητα. Η προσθήκη νέων λειτουργικών σε ένα υπάρχον σύστημα λογισμικού και η επιπλέον παραμετροποίησή του όταν αυτό είναι υπό εκτέλεση.
    Εύκολη τροποποίηση κώδικα. Ένα σύστημα λογισμικού πρέπει να είναι ευανάγνωστο και να μπορεί να τροποποιηθεί εύκολα.
    Επαναχρησιμοποίηση κώδικα. Είναι θεμιτό κομμάτια κώδικα να μπορούν να επαναχρησιμοποιηθούν.
    Διατηρησιμότητα. Ένα σύστημα πρέπει να είναι διατηρήσιμο. Να μπορεί να επεκταθεί και να αναβαθμιστεί έτσι ώστε να μπορεί να εκτελεστεί παρά την αλλαγή των τεχνολογιών με τις οποίες συνδέεται.
    Κάποιες μη λειτουργικές απαιτήσεις για μια RESTful υπηρεσία.
    Πολλαπλές αναπαραστάσεις πόρων και έλεγχος πρόσβασης και προσπέλασης δεδομένων. Σε πολλές RESTful υπηρεσίες απαιτείται η ύπαρξη ενός μηχανισμού που θα δημιουργεί αναπαραστάσεις πόρου – έναν πόρο αντίγραφο με ιδιότητες ένα υποσύνολο των ιδιοτήτων του αρχικού πόρου. Οι αναπαραστάσεις αυτές μπορούν να χρησιμοποιηθούν για τον έλεγχο των πληροφοριών που βλέπει ένας πελάτης.
    Δυνατότητα απομνημόνευσης παλαιότερης κατάστασης πόρων και ανάκτησης παλαιότερων καταστάσεων. Εξ ’ορισμού, ένα RESTful API είναι stateless (χωρίς κατάσταση), λόγος στον οποίο οι περισσότερες RESTful υπηρεσίες δεν κρατούν ιστορικό καταστάσεων. Πολλές φορές όμως συναντάται η ανάγκη διατήρησης ιστορικού των καταστάσεων έτσι ώστε να μπορεί να εκτελεστεί ένας μηχανισμός rollback. Παράδειγμα ένα edit σε ένα post σε ένα blog και η επιλογή undo.
  • Βασικός τροπος ικανοποιησης ΜΛΑ είναι τα πρότυπα σχεδίασης.
  • Builder:
    Χρήση query parameter για την επιλογή συγκεκριμένης αναπαράστασης.
    Αν αυτή έχει οριστεί κατά τη σχεδίαση θα επιστραφεί.
    Αν όχι θα επιστραφεί ένα κενό σώμα με οδηγίες.

    Observer:
    Δημιουργία παρατηρητών, εγγραφή σε ενέργειες, διαγραφή από ενέργειες, δυνατότητα αποστολής e-mail
    Χρήση query παραμέτρων για τα παραπάνω

    Memento:
    Δυνατόητα διατήρησης της παλαιότερης κατάστασης. Τόσα στιγμιότυπα όσα ορίστηκαν κατά τη σχεδίαση.
    Command: Rollback

    Bridge:
    Δυνατότητα προσθήκης επιπλέον αλγορίθρμων.
    Command: Επιλογή αλγορίθμου κατά την εκτέλεση.
  • H αλυσίδα ενεργειών για την διεκπεραίωση της διπλωματικής
  • Builder Pattern:
    Σκοπός του προτύπου αυτού είναι ο διαχωρισμός της κατασκευής ενός σύνθετου αντικειμένου από τις αναπαραστάσεις του, έτσι ώστε η ίδια διαδικασία της κατασκευής να μπορεί να δημιουργήσει διάφορες αναπαραστάσεις.

    Ένας client δημιουργεί το αντικείμενο Director, και παραμετροποιεί το επιθυμητό αντικείμενο Builder. Στη συνέχεια ο Director ειδοποιεί τον Βuilder οποτεδήποτε ένα προϊόν πρέπει να κατασκευαστεί. O Builder δέχεται και διαχειρίζεται τις αιτήσεις του Director και προσθέτει συστατικά μέρη στο προϊόν. Τελικά ο client ανακτά το αντικείμενο από τον Βuilder
  • Επεξήγηση του κάθε pattern Ξεχωριστά
  • Επεξήγηση του κάθε pattern Ξεχωριστά
  • Το πρότυπο ορίζει μια-προς-πολλά σχέσεις εξάρτησης ανάμεσα σε αντικείμενα, έτσι ώστε όταν ένα αντικείμενο αλλάζει κατάσταση, όλα τα υπόλοιπα που εξαρτώνται από αυτό ειδοποιούνται και ανανεώνονται αυτόματα. To αντικείμενο υποκείμενο (subject) διατηρεί μια λίστα με αντικείμενα που καλούνται παρατηρητές (observers) και ενημερώνει τη λίστα αυτή σε κάθε αλλαγή της κατάστασής του

    To Subject γνωρίζει τους παρατηρητές του. Παρέχει μια διεπαφή για την καταχώρηση και την διαγραφή αντικειμένων που των Observers. Tο ConcreteSubject αποθηκεύει την κατάσταση που θέλει να παρακολουθεί ο ConcreteObserver και τον ενημερώνει σε περίπτωση αλλαγής της κατάστασης. Ο observer με τη σειρά του, ορίζει μια διεπαφή για να ανανεώνει αντικείμενα που πρέπει να ανανεώνονται όταν γίνονται αλλαγές σε ένα subject. Τέλος, o ConcreteObserver διατηρεί την κατάσταση και υλοποιεί τη διαδικασία μέσω της οποίας αποθηκεύεται η κατάσταση που παρακολουθείται
  • Επεξήγηση του κάθε pattern Ξεχωριστά
  • Επεξήγηση του κάθε pattern Ξεχωριστά
  • Το πρότυπο διαχωρίζει μια αφαίρεση (abstraction) από την υλοποίησή της έτσι ώστε οι δυο τους να υπάρχουν ανεξάρτητα. Χρησιμοποιείται όταν κάτω από την ίδια διεπαφή πρέπει να ενσωματωθούν διάφορες λειτουργικότητες. Το πρότυπο χρησιμοποιεί την ενθυλάκωση, τη συνάθροιση και ενίοτε την κληρονομικότητα για να πετύχει τους στόχους του


    Στο πρότυπο αυτό ως Abstraction ορίζεται η αφαίρεση(διεπαφή/αφηρημένη δομή) της λύσης, η οποία διατηρεί συσχέτιση με τον Implementor. Ο Implementor ορίζει τη διεπαφή για κλάσεις. Οι RefinedAbstractions κληρονομούν την Abstraction για να εισάγουν επιπλέον λειτουργικότητα και ο ConcreteImplementor υλοποιεί την κλάση που απαιτείται από τη λύση
  • Επεξήγηση του κάθε pattern Ξεχωριστά
  • Επεξήγηση του κάθε pattern Ξεχωριστά
  • Το πρότυπο Memento (Μνήμης), είναι ένα συμπεριφορικό πρότυπο που παρέχει τη δυνατότητα ανάκτησης μιας προγενέστερης κατάστασης ενός αντικειμένου. Στόχος της χρήσης του είναι να επιτευχθεί η λήψη ενός στιγμιότυπου – αντιγράφου της σύστασης ενός αντικειμένου, χωρίς να παραβιάζονται τα περιεχόμενα και η δομή του αντικειμένου, με στόχο την επαναφορά της κατάστασης στο στιγμιότυπο αυτό.
  • Επεξήγηση του κάθε pattern Ξεχωριστά
  • Επεξήγηση του κάθε pattern Ξεχωριστά

×