Σήμερα, η ανάπτυξη της τεχνολογίας και η αξιοποίηση της σε όλους τους τομείς της ζωής του ανθρώπου, δημιουργεί την ανάγκη για λογισμικό που είναι έυκολα προσαρμόσιμο, ευπαρουσίαστο, επιλύει πολλούς τύπους προβλημάτων, είναι οικονομικό και αξιόπιστο. Η Μοντελοστραφής Μηχανική (MDE), δηλαδή η ανάπτυξη λογισμικού που στηρίζεται σε μοντέλα, η αυτόματη παραγωγή κώδικα με βάση αυτά τα μοντέλα, η δυνατότητα γραφικής απεικόνισης του λογισμικού σε συνδυασμό με τις τεχνικές του Αυτοματοποιημένου Ελέγχου Συμπερασμών (Automated Reasoning) καλύπτουν ανά περίπτωση τις παραπάνω ανάγκες. Στην παρούσα διπλωματική εργασία, έγινε αξιοποίηση όλων των παραπάνω τεχνικών για την κατασκευή ενός ολοκληρωμένου εργαλείου, στην πλατφόρμα του Eclipse, με στόχο την κάλυψη των προαναφερθέντων αναγκών. Πιο συγκεκριμένα στα πλαίσια της Μοντελοστραφούς Μηχανικής (MDE) κατασκευάστηκε ένα μέτα-μοντέλο που αποτελεί τον πηρύνα του συστήματος και ενσωματώνει όρους από το πεδίο του Λογισμού. Στη συνέχεια, πάνω σε αυτό δημιουργήθηκε μια γραφική διεπαφή, στο περιβάλλον του Sirius, που δίνει την δυνατότητα στον ενδιαφερόμενο να καταγράψει, με γραφικό τρόπο, το μοντέλο που επιθυμεί. Η καταγραφή του μοντέλου γίνεται με την μορφή εξισώσεων σωστά διατυπωμένων στα πρότυπα της Κατηγορηματικής Λογικής Πρώτης Τάξης (FOL). Από αυτό το μοντέλο ύστερα, παράγεται αυτόματα κώδικας Java, ο οποίος αξιοποιώντας συναρτήσεις και αντικείμενα της βιβλιοθήκης TweetyProject, διαμορφώνεται κατάλληλα ώστε να αποτελεί έγκυρη είσοδο για τον built-in prover της ίδιας βιβλιοθήκης που μπορεί να πραγματοποιεί λογικούς ελέγχους στα πρότυπα του Αυτοματοποιημένου Ελέγχου Συμπερασμών. Μερικές ακόμα βοηθητικές συναρτήσεις σε Java, ολοκληρώνουν το εργαλείο της διπλωματικής. Όλα τα παραπάνω καθιστούν, το σύστημα που αναπτύχθηκε σε αυτή την διπλωματική, ικανό να χρησιμοποιηθεί από διάφορους υπάρχοντες μηχανισμούς αυτόματης παραγωγής συστημάτων, προκειμένου να ελέγξουν την εγκυρότητα των υπό σχεδίαση συστημάτων, δίχως κάποιος να απαιτείται να υλοποιήσει λογισμικό που κάνει λογικούς συμπερασμούς.
ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΜΗΧΑΝΙΣΜΟΥ ΑΥΤΟΜΑΤΟΠΟΙΗΣΗΣ ΤΗΣ ΑΝΑΠΤΥΞΗΣ ΓΡΑΦΙΚΩΝ ΕΝΤΟΛ...
Σχεδίαση και ανάπτυξη Μηχανισμού Αυτοματοποίησης παραγωγής Λογισμικού Ελέγχου Λογικών Συμπερασμών
1. ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ
Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Εργαστήριο Επεξεργασίας Πληροφορία και Υπολογισμών
Σχεδίαση και Ανάπτυξη
Μηχανισμού Αυτοματοποίησης
Παραγωγής Λογισμικού Ελέγχου
Λογικών Συμπερασμών
Εκπόνηση:
Βερβέρης Χρήστος
Α.Ε.Μ.: 8079
Επίβλεψη:
Αναπληρωτής Καθηγητής: Ανδρέας Συμεωνίδης
Διδάκτωρ: Χριστόφορος Ζολώτας
2. Κίνητρο Διπλωματικής
Εργασίας
• Αυξανόμενη ζήτηση λογισμικού που είναι
ορθό και οικονομικό.
• Ανάγκη εξέλιξης και προσαρμογής του
λογισμικού στον γρήγορα αναπτυσσόμενο
χώρο της Τεχνολογίας.
• Ανάγκη ύπαρξης κάποιου είδους validation
κατά την ανάπτυξη λογισμικού.
• Ανάγκη να συμμετέχουν στην διαδικασία
ανάπτυξης λογισμικού και άτομα που δεν είναι
μηχανικοί, αλλά γνωρίζουν Λογική.
2
3. Περιγραφή του
προβλήματος
Παραδοσιακός τρόπος ανάπτυξης λογισμικού
• Ο κώδικας πολλές φορές δεν είναι ευέλικτος
• Δεν μπορούν να συμμετέχουν ενδιαφερόμενοι
χωρίς τεχνικές γνώσεις
• Το τελικό προϊόν πολλές φορές έχει αστοχίες
και λάθη
Πιθανή λύση
• Μοντελοστραφής Μηχανική (MDE),
• Αυτοματοποιημένος Έλεγχος Συμπερασμών
(Automated Reasoning)
• Αυτόματη παραγωγή κώδικα (Automated Code Generation)
Πρόβλημα
Η αξιοποίηση των παραπάνω τεχνικών συνδυαστικά είναι
πολύ περιορισμένη, με αποτέλεσμα κάποιος που δεν έχει τεχνικές
γνώσεις αλλά γνωρίζει Λογική, να μην μπορεί να κατασκευάσει
λογισμικό.
3
4. Στόχος Διπλωματικής Εργασίας
Αξιοποίηση της
Μοντελοστραφούς
Μηχανικής (MDE) και της
Κατηγορηματικής Λογικής
Πρώτης Τάξης (FOL) με στόχο
την αυτόματη παραγωγή
κώδικα που δεν έχει λάθη.
Αξιοπιστία και
ευελιξία κώδικα
Σχεδίαση γραφικού
περιβάλλοντος στην
πλατφόρμα του Sirius με
στόχο την χρήση του και
από άτομα που δεν είναι
προγραμματιστές.
Κατανοητό γραφικό
περιβάλλον
Κατασκευή API σε Java,
για εύκολη αξιοποίηση του
παραγόμενου συστήματος
από υπάρχοντες
Μηχανισμούς, για
διεξαγωγή ελέγχου
συμπερασμών.
API για διεξαγωγή
ελέγχων και τεστ
4
5. Αρχιτεκτονική του Συστήματος
1. Κατασκευή μέτα-μοντέλου στον Eclipse.
2. Συγγραφή των εξισώσεων του επιθυμητού συστήματος μετά από συνεννόηση.
3. Εισαγωγή των εξισώσεων στο λογισμικό, μέσα από το περιβάλλον του Sirius.
4. Αυτόματη παραγωγή κώδικα (M2T) με Acceleo.
5. Χρήση του API του παραγόμενου συστήματος για διεξαγωγή ελέγχων και τέστ.
Μεθοδολογία
5
6. Μεθοδολογία
Κατηγορηματική Λογική Πρώτου Επιπέδου (FOL)
Τεχνικές Αυτοματοποιημένου Ελέγχου Συμπερασμών
Μελετά τις διάφορες πτυχές απόδειξης ενός
συμπερασμού. Δύο βασικά στοιχεία:
• Παραδοχές του προβλήματος
• Συμπέρασμα του προβλήματος
Κατηγορηματική Λογική Πρώτου Επιπέδου
Επιτρέπει την συγγραφή πολύπλοκων
προτάσεων και αποτελείται από:
• Κατηγορίες (Sorts)
• Οντότητες (Constants)
• Μεταβλητές (Variables)
• Κατηγορήματα (Predicates)
• Quantifiers
• Λογικά Σύμβολα (Logic Symbols)
• Κανόνες (Formulas)
Παράδειγμα: ∀x(Man(x) => Mortal(x))
6
8. Μεθοδολογία
Γραφικό Περιβάλλον Sirius
Τα Nodes και τα
Containers αποτελούν
instances των κλάσεων
του μέτα-μοντέλου και
υπακούν στους
περιορισμούς του.
Containers:
• Sort
• Predicate
• Formula
• Sub_Formula
• F_Predicate
Nodes:
• S_Constant
• P_Sort
• FP_Constant
• Logic_Symbol
8
9. Μεθοδολογία
Validation Rules
Αποτελούν αναπόσπαστο κομμάτι της
διαδικασίας και είναι γραμμένοι σε AQL ή σε
Java.
Η διαδικασία αυτή κάνει:
• Συντακτικούς ελέγχους στα ονόματα των
instances.
• Συντακτικούς ελέγχους στην διατύπωση
των λογικών συμπερασμών.
• Ελέγχους εγκυρότητας
Ενημέρωση του χρήστη με σχετικό μήνυμα
στην κονσόλα και οπτική ενημέρωση στο
σημείο που υπάρχει σφάλμα.
*Δεν πραγματοποιούνται έλεγχοι στο κατά
πόσο το λογικό σύστημα που κατασκευάστηκε
είναι επιλύσιμο.
9
10. Μεθοδολογία
Acceleo (M2T)
Μετατροπή του ολοκληρωμένου μοντέλου
σε κώδικα Java.
Στόχος η δημιουργία ενός αρχείου Java, το
οποίο θα καταγράφει με σωστό τρόπο το
σύστημα που δημιουργήθηκε και θα δίνει
πρόσβαση στον χρήστη σε εξισώσεις για
διεξαγωγή ελέγχου συμπερασμών.
10
11. Μεθοδολογία
Αρχεία Java και βιβλιοθήκη TweetyProject
Παράγεται από την διαδικασία
Acceleo.
Είναι υπεύθυνο για την ορθή
καταγραφή του συστήματος
αντλώντας με σωστή σειρά
εξισώσεις από το αρχείο
Database.java
Παρέχει στον χρήστη διεπαφές
για διεξαγωγή ελέγχου
συμπερασμών.
Περιέχει την λειτουργικότητα
των εξισώσεων που καλεί
το Database_Logic.
Καλεί εξισώσεις και
χρησιμοποιεί αντικείμενα
από την βιβλιοθήκη
TweetyProject.
Αποτελεί μια συλλογή από
βιβλιοθήκες που περιέχει
ειδικές συναρτήσεις και
αντικείμενα για τους
περισσότερους τομείς της
λογικής.
11
12. Διεπαφές για ελέγχους (API)
Μεθοδολογία
CheckNewArgument
• Έλεγχος κάποιου νέου συμπερασμού
με βάση το knowledge base
CheckTautology
• Έλεγχος κάποιου νέου συμπερασμού
για Ταυτολογία με βάση το knowledge
base
CheckContradiction
• Έλεγχος κάποιου νέου συμπερασμού
για Αντίφαση με βάση το knowledge
base
12
14. Τελική μορφή του συστήματος
στο Sirius.
Έλεγχος για ύπαρξη λαθών
κάνοντας κλικ στο Validate
Diagram.
Παραγωγή κώδικα με Acceleo.
Παράδειγμα
15. Διεξαγωγή ελέγχων και
εξαγωγή συμπερασμάτων
χρησιμοποιώντας τις
συναρτήσεις:
• CheckNewArgument
• CheckTautology
• CheckContradiction
Παράδειγμα
15
16. Αποτελέσματα
• Γραφικό περιβάλλον που επιτρέπει σε
ενδιαφερόμενους χωρίς τεχνικές γνώσεις αλλά
με γνώσεις Λογικής, να σχεδιάσουν ένα σύστημα
λογικής.
• Αυτόματη παραγωγή κώδικα που είναι λιγότερο
επιρρεπής σε λάθη.
• Κώδικας εύκολα προσαρμόσιμος μέσω της
τροποποίησης και εκ νέου παραγωγής του
μοντέλου.
• Συνδυασμός των τεχνικών της Μοντελοστραφούς
Μηχανικής (MDE) και του Αυτοματοποιημένου
Ελέγχου Συμπερασμών (Automated Reasoning).
16
17. Μελλοντικές Εργασίες
• Βελτίωση των γραφικών στο Sirius.
• Περαιτέρω απλοποίηση της διαδικασίας
δημιουργίας του μοντέλου.
• Διεξαγωγή τεστ με περισσότερους provers
και εξαγωγή συμπερασμάτων.
17