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.

Οικονόμου Ναπολέων – Χρήστος

104 views

Published on

Call by Meaning: Κλήση πακέτων λογισμικού με βάση το νόημά τους

Published in: Education
  • Be the first to comment

  • Be the first to like this

Οικονόμου Ναπολέων – Χρήστος

  1. 1. ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Call by Meaning: Κλήση πακέτων λογισμικού με βάση το νόημά τους Θεσσαλονίκη, Μάρτιος 2018 Φοιτητής: Επιβλέποντες: Ναπολέων - Χρήστος Οικονόμου Επ. Καθηγητής, Ανδρέας Συμεωνίδης ΑΕΜ: 7952 Μετ. Ερευνητής, Κυριάκος Χατζηδημητρίου
  2. 2. Κίνητρο 2Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ Η συγγραφή κώδικα βασίζεται σε προϋπάρχον κώδικα. Έτσι η ανάπτυξη λογισμικού είναι μια διαδικασία που απαιτεί: 1/2 Εύρεση Κατανόηση Ενσωμάτωση Προσαρμογή Συντήρηση
  3. 3. Κίνητρο 3Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Η αναζήτηση είναι μια αργή, χειροκίνητη διαδικασία. ● Δεν υπάρχει δυνατότητα κλιμάκωσης και αυτοματοποίησης. ● Δεν υπάρχει τρόπος αλλαγής του περιεχομένου μιας υλοποίησης. ● Η υλοποίηση δεν είναι ευέλικτη σε μελλοντικές αλλαγές εξαρτημάτων της από τρίτους. Είναι προφανές ότι η σύμβαση της ονοματολογίας δημιουργεί αρκετά από αυτά τα προβλήματα. .getDate( ) ημερομηνία; ραντεβού; Date.getDate( ) βρίσκεται σε κάποια βιβλιοθήκη .returnsDate( ) σε νέα έκδοση έχει άλλο όνομα .myDateFunc( ) η συνάρτηση που ψάχνουμε .getDate( ) τι ακριβώς (μονάδες) επιστρέφει; 2/2
  4. 4. Προηγούμενες Προσπάθειες Επίλυσης του Προβλήματος 4Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Δύο κατηγορίες υλοποιήσεων μέχρι τώρα: Μοντελοποίηση εννοιών και οντοτή- των που υπάρχουν στο πεδίο στο οποίο γίνεται η ανάπτυξη λογισμικού με σκοπό να έχουν κοινή, αυστηρά ορισμένη σημασία. Δημιουργία νέων γλωσσών προγραμ- ματισμού βασισμένων στον προτασιακό λογισμό, με σκοπό να είναι δυνατή η αυστηρή περιγραφή της λειτουργίας των εξαρτημάτων. Sugumaran & Storey, 2003 Samimi, 2014
  5. 5. Σκοπός της Διπλωματικής Εργασίας 5Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ Δημιουργία μιας υποδομής που: ● Δεν θα έχει σύμβαση ονοματολογίας, αλλά θα βασίζεται στο νόημα των εξαρτη- μάτων και έτσι δεν υποφέρει από αυτά τα προβλήματα. ● Κάνει εύκολη την επέκταση σε άλλα πεδία. ● Δεν απαιτεί αλλαγές σε υπάρχουσες υλοποιήσεις για να τις συμπεριλάβει. ● Αποτελεί κομμάτι του οικοσυστήματος (JavaScript). ☞Ιδέα: Για την περιγραφή μιας συνάρτησης αρκεί η περιγραφή εισόδων και εξόδων.
  6. 6. cbmjs - Γενική Δομή Συστήματος 6Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ
  7. 7. cbmjs: Μοντελοποίηση Δεδομένων 7Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ 3 βασικές κλάσεις οντοτήτων για την μοντελοποίηση των δεδομένων:
  8. 8. cbmjs: Παράδειγμα Λειτουργίας 8Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ Ο χρήστης εισάγει Τάση(kV), Ρεύμα(Α) και ζητά Αντίσταση(MΩ). Το σύστημα βρίσκει τη σωστή συνάρτηση, μέσω συσχετίσεων μετασχηματίζει τις διάφορες έννοιες, εκτελεί την συνάρτηση και επιστρέφει στον χρήστη το αποτέλεσμα.
  9. 9. cbmjs: cbm-engine 9Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ Υλοποιεί τις λειτουργίες: ● Get by Name: Ο παραδοσιακός τρόπος εύρεσης πακέτων, με βάση το όνομά τους. ● Get by Meaning: Ο νέος προτεινόμενος τρόπος εύρεσης πακέτων με βάση το είδος των I/O τους. ● Call by Meaning: Ο νέος προτεινόμενος τρόπος κλήσης πακέτων με βάση το είδος αλλά και τη μορφή των I/O τους.
  10. 10. cbmjs: Δημιουργία Ερωτημάτων 10Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Για την δημιουργία ερωτημάτων ο χρήστης παρέχει στο σύστημα όλες τις απαιτούμενες παραμέτρους μέσω ενός Object της μορφής: ● Μπορεί επίσης να στείλει το αίτημά του σε φυσική γλώσσα, και μέσω του LUIS.ai, το σύστημα να το μετατρέψει αυτόματα στην πάνω μορφή: 1/2
  11. 11. cbmjs: Επεξεργασία Ερωτημάτων 11Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Ακρογωνιαίος λίθος για το σύστημα είναι η κατανόηση των εννοιών που δίνονται σε αυτό από τον χρήστη. ● Μια έννοια, όμως, μπορεί να περιγραφεί με πολλούς τρόπους. (π.χ. ασανσέρ, ανελκυστήρας, ανελκυστήρες, οι ανελκυστήρες) ● Επομένως, ακολουθείται μια μεθοδολογία για την λύση αυτού του προβλήματος: ○ Κάθε έννοια γίνεται tokenize (διαγραφή κατάληξης, σημείων στίξης, άρθρων κ.λπ.). ○ Μέσω μια βάσης λεκτικών δεδομένων που υπάρχει ενσωματωμένη, το σύστημα είναι ενήμερο για συνώνυμα, υποκλάσεις και υπερκλάσεις μια έννοιας κ.λπ. 2/2
  12. 12. Τεχνολογίες που χρησιμοποιήθηκαν 12Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ
  13. 13. Small DEMO 13Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ
  14. 14. Συμπεράσματα 14Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Επιτεύχθηκε ο αρχικός στόχος. ● Η εύρεση και κλήση των συναρτήσεων επιτρέπει μελλοντικές αλλαγές στο API τους, χωρίς τη δημιουργία προβλημάτων συμβατότητας. ● Μέσω της βιβλιοθήκης, είναι δυνατή η ενσωμάτωση σε υπάρχουσες υλοποιήσεις, χωρίς αλλαγές. ● BONUS: Η εκτέλεση των συναρτήσεων δεν γίνεται στον υπολογιστή που “τρέχει” η εφαρμογή, άρα μειώνονται οι απαιτήσεις σε υπολογιστικούς πόρους.
  15. 15. Προτάσεις για Επέκταση 15Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Ενσωμάτωση σημασιολογικών γράφων (π.χ. Cyc). ● Δημιουργία και ενσωμάτωση λογισμικού Κατανόησης Φυσικής Γλώσσας. ● Υποστήριξη περισσότερων προτύπων εισαγωγής δεδομένων.
  16. 16. Ευχαριστίες 16Μάρτιος 2018 CALL BY MEANING: ΚΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Ευχαριστώ θερμά τους: ○ κ. Ανδρέα Συμεωνίδη ○ κ. Κυριάκο Χατζηδημητρίου Ευχαριστώ για την προσοχή σας!
  17. 17. Ερωτήσεις; 17Μάρτιος 2018 CALL BY MEANING: KΛΗΣΗ ΠΑΚΕΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΒΑΣΗ ΤΟ ΝΟΗΜΑ ΤΟΥΣ ● Endpoint στη Διεύθυνση: https://call-by-meaning.herokuapp.com ● Ιστοσελίδα του Project: https://iamnapo.me/cbmjs ● Πηγαίος Κώδικας της Εργασίας: https://github.com/cbmjs

×