Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Εργασία στην JML Μάθημα: Τυπικές Μέθοδοι Ανάλυσης Συστημάτων

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Εργασία στην JML Μάθημα: Τυπικές Μέθοδοι Ανάλυσης Συστημάτων"— Μεταγράφημα παρουσίασης:

1 Εργασία στην JML Μάθημα: Τυπικές Μέθοδοι Ανάλυσης Συστημάτων
Μάθημα: Τυπικές Μέθοδοι Ανάλυσης Συστημάτων Υπεύθυνος Καθηγητής: Π. Κατσαρός Υπεύθυνη Εργασίας: Καργιώτη Ελένη (144)

2 ΔΟΜΗ ΠΑΡΟΥΣΙΑΣΗΣ Runtime Assertion Testing Unit Testing
ΠΕΡΙΓΡΑΦΗ JML ΒΑΣΙΚΟ ΣΥΝΤΑΚΤΙΚΟ ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML Runtime Assertion Testing Unit Testing Static Checking Εντοπισμός Αμετάβλητων Αυτοματοποιημένη Τεκμηρίωση 10/11/2018 JML Tools

3 ΠΕΡΙΓΡΑΦΗ JML (1) Τι είναι η JML Επαλήθευση Προγραμμάτων
JAVA Modeling Language - γλώσσα τυπικών προδιαγραφών για προγράμματα JAVA Αρχικά στο πανεπιστήμιο της Iowa από τους Leavens και Cheon Επαλήθευση Προγραμμάτων Εκτελέσιμα προγράμματα δυνητικά άπειρο με χώρο καταστάσεων που αποτρέπει τον εξαντλητικό έλεγχο, οπότε δεν αρκεί ο έλεγχος μοντέλων. Εδώ ο έλεγχος αποβλέπει στην απόδειξη ιδιοτήτων που είναι απαραίτητες και καταγράφονται ως τυπικές προδιαγραφές. 10/11/2018 JML Tools

4 ΠΕΡΙΓΡΑΦΗ JML (2) Design By Contract Αμετάβλητο Τριπλέτες Hoare
(φ)Ρ(ψ) Το πρόγραμμα Ρ θα εκτελεστεί εφόσον ικανοποιείται ο τύπος φ και μετά την εκτέλεση το Ρ θα περιέλθει σε μία κατάσταση όπου ικανοποιείται ο τύπος ψ. Προ- και Μετα- Συνθήκες Ορίζονται στη κεφαλίδα κάθε μεθόδου. Ο πελάτης μιας μεθόδου, οφείλει να εγγυηθεί ότι ικανοποιούνται κάποιες συνθήκες πριν να γίνει χρήση της μεθόδου και από την άλλη η κλάση εγγυάται ότι θα ισχύον κάποιες συγκεκριμένες ιδιότητες μετά τη χρήση της. Αμετάβλητο τύπος που ισχύει καθ’ όλη τη διάρκεια της εκτέλεσης μίας μεθόδου. εκφράζει μια σχέση μεταξύ των μεταβλητών, αλλά οφείλει να διατηρείται ακόμα και αν οι τιμές των μεταβλητών αλλάξουν. 10/11/2018 JML Tools

5 ΒΑΣΙΚΟ ΣΥΝΤΑΚΤΙΚΟ (1) Ορισμός Προ- και Μετα- Συνθηκών
requires Έκφραση που θα πρέπει να αληθεύει ως προ-συνθήκη ensures Έκφραση που θα πρέπει να αληθεύει ως μετα-συνθήκη Άλλες χρήσιμες εντολές old Αρχική τιμή μιας μεταβλητής του προγράμματος result Η τιμή του αποτελέσματος της μεθόδου 10/11/2018 JML Tools

6 ΒΑΣΙΚΟ ΣΥΝΤΑΚΤΙΚΟ (2) Ανάθεση Τιμής σε Μεταβλητή
Για να δείξουν τη τιμή ποιών μεταβλητών είναι επιτρεπτό να αλλάξει η μέθοδος. Οι δύο παρακάτω λέξεις είναι συνώνυμες και χρησιμοποιούνται για να δείξουν ποιες μεταβλητές τροποποιούνται από τη μέθοδο. modifies assignable pure Η μέθοδος δεν αλλάζει τη τιμή καμίας μεταβλητής. 10/11/2018 JML Tools

7 ΒΑΣΙΚΟ ΣΥΝΤΑΚΤΙΚΟ (3) Εξαιρέσεις (Exceptions)
Συνήθως καλύπτουν οι καλώς ορισμένες προ-συνθήκες. Ορίζουν τι γίνεται σε περίπτωση exceptional behavior μιας μεθόδου. Πολλοί τρόποι ορισμού των εξαιρέσεων΄. signals Δείχνει ποια εξαίρεση θα εκτελεστεί. Ποια κατάσταση θα πρέπει να είναι κάποιες μέθοδοι για να παραμείνει σωστό το πρόγραμμα. 10/11/2018 JML Tools

8 ΒΑΣΙΚΟ ΣΥΝΤΑΚΤΙΚΟ (4) Αμετάβλητο
Ορίζει μια σχέση μεταξύ μεταβλητών που ισχύει καθ’ όλη την εκτέλεση της μεθόδου ή για όλες τις μεθόδους μιας κλάσης. invariant 10/11/2018 JML Tools

9 ΒΑΣΙΚΟ ΣΥΝΤΑΚΤΙΚΟ (6) Quantifiers Ποσοτικοί Τελεστές
Υπάρχουν διάφοροι άλλοι τελεστές που διευκολύνουν τον ορισμό των ισχυρισμών. \forall \exists \sum \product \min \max 10/11/2018 JML Tools

10 ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML
JML Specs JMLC – JMLRAC JMLUNIT JMLDOC JML και ESC/Java2 plugin στο Eclipse Daikon 10/11/2018 JML Tools

11 ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML (1)
Runtime Assertion Testing Έλεγχος ορθότητας ισχυρισμών κατά τη διάρκεια της εκτέλεσης JML Type Checker Π.χ. ..\JML\bin> jml bank\BankAccountMain.java JMLC Runtime Assertion Checker Compiler Μεταγλωττιστής – δημιουργεί αρχεία CLASS Π.χ. ..\JML\bin> jmlc bank\BankAccountMain.java JMLRAC Εκτελεί τον κώδικα Π.χ. jmlrac bank.BankAccountMain Εναλλακτικά …\JML_5.4\bin\ jml-release.jar (Jml – Jmlc) 10/11/2018 JML Tools

12 ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML (2)
Unit Testing Για αυτοματοποίηση της διαδικασίας ελέγχου του κώδικα. JMLUNIT Παράγει Java αρχεία, τα οποία επεξεργάζεται ο χρήστης για να εισάγει τα δεδομένα των δοκιμών. Τα παραπάνω αρχεία εφαρμόζεται jmlc και jmlrac και επιστρέφεται για τις δοκιμές που απέτυχαν, ποιος ισχυρισμός παραβιάστηκε. Έτσι είναι εύκολος ο έλεγχος της αναμενόμενης συμπεριφοράς του κώδικα. ..\JML\bin> jmlunit bank\BankAccount.java -> (όνομα_JML_Test.java και όνομα_JML_TestData.java ) ..\JML\bin> javac bank\BankAccount_JML_Test.java ..\JML\bin> jμλρac bank.BankAccount_JML_Test 10/11/2018 JML Tools

13 ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML (3)
Static Checking Απόδειξη της ορθότητας των ισχυρισμών κατά τη διάρκεια της μεταγλώττισης του JAVA προγράμματος με JML ισχυρισμούς. Esc/Java2 Η επαλήθευση δεν είναι: καλώς ορισμένη (μπορεί να μην δείξει κάποια σφάλματα) ούτε πλήρης (μπορεί να προειδοποιήσει για λάθη τα οποία είναι αδύνατα) Παρόλα αυτά βρίσκει γρήγορα πιθανά προβλήματα. Στέλνονται ισχυρισμοί προς απόδειξη στο αποδεικτή θεωρημάτων Simplify, ο οποίος βγάζει προειδοποιήσεις αν δε μπορεί να διεκπεραιώσει κάποια απόδειξη. ESC2/Java plugin Eclipse 10/11/2018 JML Tools

14 ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML (4.1)
Εντοπισμός Αμετάβλητων Αμετάβλητων δεδομένης μιας εκτέλεσης ενός προγράμματος. Είναι απαραίτητο οι προτεινόμενοι ισχυρισμοί να ελεγχθούν στη συνέχεια από το Esc/Java2 εργαλείο. Daikon Μεταγλωττίζεται ο JAVA κώδικας (εντολή javac) Καλείται η εντολή java με ειδική παράμετρο του daikon -> Συμπιεσμένο αρχείο όνομα.dtrace.gz, στο οποίο εκτελούμε επίσης την εντολή java -> Συμπιεσμένο αρχείο όνομα.inv.gz και το αρχείο κειμένου στο οποίο δώσαμε εντολή να γραφτεί στο αποτέλεσμα της παραπάνω εντολής. Εισάγουμε τους προτεινόμενους ισχυρισμούς στον κώδικα JAVA. -> Αρχεία με κατάληξη .java-escannotated, τα οποία περιέχουν τους ισχυρισμούς που προσέθεσε το daikon. 10/11/2018 JML Tools

15 ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML (4.2)
Αρχικά μεταγλωττίζεται ο JAVA κώδικας .. > javac –g bank\*.java Στη συνέχεια καλείται η εντολή java με ειδική παράμετρο του daikon .. > java daikon.Chicory --daikon bank.BankAccountMain Αποτέλεσμα είναι το συμπιεσμένο αρχείο BankAccountMain.dtrace.gz, στο οποίο εκτελούμε επίσης την εντολή java .. > java daikon.Daikon BankAccountMain.dtrace.gz > BankAccount.txt -> BankAccountMain.inv.gz Τέλος εισάγουμε τους προτεινόμενους ισχυρισμούς στον κώδικα JAVA. .. > java daikon.tools.jtb.Annotate BankAccountMain.inv.gz \ bank/ BankAccountMain.java bank/ BankAccount.java Τελικά παίρνουμε αρχεία με κατάληξη .java-escannotated, τα οποία περιέχουν τους ισχυρισμούς που προσέθεσε το daikon. 10/11/2018 JML Tools

16 ΔΙΑΘΕΣΙΜΑ ΕΡΓΑΛΕΙΑ JML (5)
Αυτοματοποιημένη Τεκμηρίωση Αποτελεί επέκταση του JavaDoc έτσι ώστε να παράγονται HMTL σελίδες που περιγράφουν τις κλάσεις και ενσωματώνουν την πληροφορία των JML ισχυρισμών. JMLDOC Π.χ. ..\JML\bin> jmldoc bank\BankAccountMain.java 10/11/2018 JML Tools

17 Ευχαριστώ για τη προσοχή…
και… Καλό καλοκαίρι! 10/11/2018 JML Tools


Κατέβασμα ppt "Εργασία στην JML Μάθημα: Τυπικές Μέθοδοι Ανάλυσης Συστημάτων"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google