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