Τεχνολογία ΛογισμικούSlide 1 Τυπική Εξειδίκευση u Τεχνικές για σαφή εξειδίκευση λογισμικού
Τεχνολογία ΛογισμικούSlide 2 Στόχοι u Να εξηγηθεί το σημείο της τυπικής εξειδίκευσης λογισμικού στην διαδικασία λογισμικού u Να εξηγηθεί πότε μία τυπική εξειδίκευση είναι αποτελεσματική ως προς το κόστος u Να περιγραφεί το μοντέλο διαδικασίας που βασίζεται στον μετασχηματισμό της τυπικής εξειδίκευσης σε ένα εκτελέσιμο σύστημα u Να εισαχθεί απλή προσέγγιση σε τυπική εξειδίκευση που βασίζεται σε προ και μετά συνθήκες
Τεχνολογία ΛογισμικούSlide 3 Θέματα u Τυπική εξειδίκευση σε δοκιμή u Ανάπτυξη μετασχηματισμού u Εξειδίκευση λειτουργικών περιγραφών
Τεχνολογία ΛογισμικούSlide 4 Εξειδίκευση στην Διαδικασία Λογισμικού u Η εξειδίκευση και ο σχεδιασμός είναι άλυτα αναμίξιμα u Ο αρχιτεκτονικός σχεδιασμός είναι σημαντικός στην δόμηση της εξειδίκευσης u Οι τυπικές εξειδικεύσεις ορίζονται σε μαθηματική μορφή με σαφώς καθορισμένο λεξικό, συντακτικό και σημασιολογία
Τεχνολογία ΛογισμικούSlide 5 Εξειδίκευση και Σχεδιασμός
Τεχνολογία ΛογισμικούSlide 6 Εξειδίκευση στην Διαδικασία Λογισμικού
Τεχνολογία ΛογισμικούSlide 7 Τυπική Εξειδίκευση σε Δοκιμή u Οι τυπικές μέθοδοι δεν χρησιμοποιούνται στην ανάπτυξη βιομηχανικού λογισμικού u Με δεδομένο την καταλληλότητα των μαθηματικών σε άλλα πεδία της μηχανικής, γιατί συμβαίνει αυτό;
Τεχνολογία ΛογισμικούSlide 8 Γιατί δεν Χρησιμοποιούνται Τυπικές Μέθοδοι; u Υπάρχον συντηρητισμός στην διαχείριση. Είναι πολύ δύσκολη η επίδειξη των πλεονεκτημάτων της τυπικής εξειδίκευσης με αντικειμενικό τρόπο u Πολλοί μηχανικοί λογισμικού δεν έχουν εκπαίδευση σε διακριτά μαθηματικά που είναι απαραίτητα για τυπική εξειδίκευση u Οι πελάτες δεν θέλουν να πληρώσουν για εξειδίκευση u Για μερικές κατηγορίες λογισμικού (ειδικότερα διαλογικά συστήματα και συντρέχοντα συστήματα) είναι αδύνατη η διατύπωση εξειδικεύσεων με τις υπάρχουσες τεχνικές
Τεχνολογία ΛογισμικούSlide 9 Γιατί δεν Χρησιμοποιούνται Τυπικές Μέθοδοι; u Υπάρχει άγνοια των εφαρμογών των τυπικών εξειδικεύσεων u Υπάρχει μικρή υποστήριξη από εργαλεία για τυπική ορολογία u Οι επιστήμονες πληροφορικής που γνωρίζουν τυπικές μεθόδους αγνοούν προβλήματα πραγματικού κόσμου όπου μπορούν να εφαρμοσθούν
Τεχνολογία ΛογισμικούSlide 10 Πλεονεκτήματα Τυπικής Εξειδίκευσης u Παρέχει αντίληψη στις απαιτήσεις λογισμικού και στον σχεδιασμό. u Οι τυπικές μέθοδοι αναλύονται μαθηματικά και η συμβατότητα και πληρότητα των εξειδικεύσεων μπορεί να αποδειχθεί. Είναι πιθανή η απόδειξη ότι η υλοποίηση αντιστοιχεί στην εξειδίκευση
Τεχνολογία ΛογισμικούSlide 11 Πλεονεκτήματα Τυπικών Εξειδικεύσεων u Μπορούν να χρησιμοποιηθούν στην καθοδήγηση του ελέγχου και στην διατύπωση περιπτώσεων ελέγχου u Μπορούν να επεξεργαστούν με χρήση εργαλείων λογισμικού. Είναι δυνατή η παρουσίαση της εξειδίκευσης και η παροχή ενός πρωτοτύπου
Τεχνολογία ΛογισμικούSlide 12 Επτά Μύθοι των Τυπικών Μεθόδων u Τέλεια αποτελέσματα λογισμικού •Είναι μοντέλα του πραγματικού κόσμου και μπορούν να συμπεριλάβουν προβλήματα κατανόησης, λάθη και παραλείψεις u Απόδειξη προγράμματος •Η τυπική εξειδίκευση είναι πολύτιμη χωρίς τυπική αξιολόγηση αφού οδηγεί σε λεπτομερή ανάλυση στα πρώτα βήματα της ανάπτυξης u Είναι απαίτηση για συστήματα ασφαλείας •Η βιομηχανική εμπειρία λέει ότι τα κόστη ανάπτυξης μπορεί να μειωθούν με τυπική εξειδίκευση
Τεχνολογία ΛογισμικούSlide 13 Επτά Μύθοι των Τυπικών Μεθόδων u Είναι για μαθηματικούς •Δεν είναι αλήθεια - απαιτούνται απλά μαθηματικά u Οι τυπικές μέθοδοι αυξάνουν το κόστος ανάπτυξης •Δεν αποδεικνύεται. Όμως οι τυπικές μέθοδοι πιέζουν το κόστος προς το front-end του κύκλου ζωής. u Οι πελάτες δεν μπορούν να καταλάβουν τυπικές εξειδικεύσεις •Μπορεί όμως να γραφούν σε φυσική γλώσσα u Έχουν χρησιμοποιηθεί μόνο για μικρά συστήματα •Υπάρχουν πολλά παραδείγματα τα οποία αποδεικνύουν την εμπειρία σε μεγάλα συστήματα
Τεχνολογία ΛογισμικούSlide 14 Η Ετυμηγορία! u Οι λόγοι για μη χρήση των τυπικών μεθόδων είναι ασθενείς u Όμως, υπάρχουν κάποιοι λόγοι γιατί αυτές οι μέθοδοι δεν χρησιμοποιούνται •Η τάση προς διαλογικά συστήματα. Οι τυπικές μέθοδοι δεν είναι αποτελεσματικές στην εξειδίκευση γραφικής διεπαφής •Επιτυχημένη τεχνολογία λογισμικού. Η επένδυση σε άλλες τεχνικές τεχνολογίας λογισμικού είναι συνήθως αποτελεσματική ως προς το κόστος
Τεχνολογία ΛογισμικούSlide 15 Χρήση Τυπικών Μεθόδων u Δεν φαίνεται ότι θα χρησιμοποιηθούν στο άμεσο μέλλον και δεν είναι πλέον αποτελεσματικές ως προς το κόστος στα περισσότερα συστήματα u Θα είναι η τυπική προσέγγιση στην ανάπτυξη συστημάτων με κρίσιμο σημείο την ασφάλεια και προτύπων u Αλλάζει την μορφή του κόστους μέσω της διαδικασίας λογισμικού
Τεχνολογία ΛογισμικούSlide 16 Κόστη Ανάπτυξης με Τυπική Εξειδίκευση
Τεχνολογία ΛογισμικούSlide 17 Ανάπτυξη Μετασχηματισμού
Τεχνολογία ΛογισμικούSlide 18 Εξειδίκευση Λειτουργικών Περιγραφών u Η απλούστερη εξειδίκευση είναι η λειτουργική εξειδίκευση. Δεν υπάρχει λόγος για συνολική εξειδίκευση u Η τυπική εξειδίκευση ορίζεται ως βεβαιώσεις εισόδου και εξόδου (προ και μετά συνθήκες) u Οι βεβαιώσεις είναι λογικές εκφράσεις οι οποίες αληθινές ή λάθος u Οι τελεστές βεβαιώσεων χρησιμοποιούν λογικούς τελεστές
Τεχνολογία ΛογισμικούSlide 19 Παραδείγματα Βεβαιώσεων All variables referenced are of type INTEGER 1. The value of variable A is greater than the value of B and the value of variable C is greater than D A > B and C > D 2. This predicate illustrates the use of the exists quantifier. The predicate is true if there are values of i, j and k between M and N such that i2 = j2 + k2. Thus, if M is 1 and N is 5, the predicate is true as = 52. If M is 6 and N is 9, the predicate is false. There are no values of i, j and k between 6 and 9 which satisfy the condition. exists i, j, k in M..N: i2 = j2 + k2 3. This predicate illustrates the use of the universal quantifier for_all. It concerns the values of an array called Squares. It is true if the first ten values in the array take a value which is the square of an integer between 1 and 10. for_all i in 1..10, exists j in 1..10: Squares (i) = j2
Τεχνολογία ΛογισμικούSlide 20 Εξειδίκευση με προ και μετά Συνθήκες u Προ Συνθήκες •Καθορισμός των παραμέτρων της συνάρτησης που καθορίζουν τι είναι αλήθεια πριν από την εκτέλεση της συνάρτησης u Μετά συνθήκες •Καθορισμός των παραμέτρων της συνάρτησης που καθορίζουν τι είναι αλήθεια μετά από την εκτέλεση της συνάρτησης u Η διαφορά μεταξύ προ και μετά συνθηκών οφείλεται στην εφαρμογή της συνάρτησης στις παραμέτρους της. Οι προ και μετά συνθήκες είναι μαζί η εξειδίκευση της συνάρτησης
Τεχνολογία ΛογισμικούSlide 21 Ανάπτυξη Εξειδίκευσης u Καθορισμός των ορίων των παραμέτρων εισόδου u Εξειδίκευση βεβαίωσης με ορισμό της συνθήκης στο αποτέλεσμα της συνάρτησης u Καθορισμός των αλλαγών στις παραμέτρους εισόδου από την συνάρτηση και εξειδίκευση ως βεβαίωση u Σύνθεση των βεβαιώσεων σε προ και μετά συνθήκες
Τεχνολογία ΛογισμικούSlide 22 Η Εξειδίκευση μίας Αναζήτησης function Search ( X: in INTEGER_ARRAY ; Key: INTEGER ) return INTEGER ; Pre: exists i in X'FIRST..X'LAST: X(i) = Key Post: X” (Search (X, Key)) = Key and X = X”
Τεχνολογία ΛογισμικούSlide 23 Αναζήτηση προ - Συνθηκών u Ένα από τα στοιχεία του διανύσματος ταυτίζεται με το κλειδί u Χρήση του ποσοτικοποιητή ύπαρξης για να αποδείξουμε ότι υπάρχει στοιχείο που ταυτίζεται με το κλειδί •exists i in X’FIRST..X’LAST: X (i) = Key u Υποθέτουμε FIRST και LAST για να αναφερόμαστε στο πάνω και κάτω όριο του διανύσματος
Τεχνολογία ΛογισμικούSlide 24 Αναζήτηση μετά Συνθηκών u Είναι η τιμή του δείκτη του διανύσματος που αναφέρεται στο στοιχείο που περιέχει το κλειδί •X”(Search (X, Key)) = Key u Το διάνυσμα μετά την λειτουργία αναφέρεται ως διάνυσμα τονούμενο u Το διάνυσμα δεν αλλάζει από την λειτουργία αναζήτησης •X = X”
Τεχνολογία ΛογισμικούSlide 25 Εξειδίκευση με Βεβαίωση Λάθους function Search (X: in INTEGER_ARRAY ; Key: INTEGER) return INTEGER ; Pre: exists i in X'FIRST..X'LAST: X (i) = Key Post: X” (Search (X, Key)) = Key and X = X” Error: Search (X, Key) = X'LAST + 1
Τεχνολογία ΛογισμικούSlide 26 Προσεγγίσεις Τυπικών Εξειδικεύσεων u Αλγεβρική προσέγγιση •Το σύστημα εκφράζεται σε όρους λειτουργιών διεπαφής και των σχέσεών τους u Προσέγγιση βασισμένη σε μοντέλο •Ένα μοντέλο λειτουργεί ως εξειδίκευση συστήματος. Το μοντέλο δομείται από καλά ορισμένες μαθηματικές οντότητες όπως σύνολα και ακολουθίες
Τεχνολογία ΛογισμικούSlide 27 Γλώσσες Τυπικών Εξειδικεύσεων
Τεχνολογία ΛογισμικούSlide 28 Σημαντικά Σημεία u Η τυπική εξειδίκευση συστήματος συμπληρώνει την μη τυπική εξειδίκευση u Είναι τυπικές και απομακρύνουν αμφιβολίες στην εξειδίκευση u Οδηγούν σε ανάλυση των απαιτήσεων του συστήματος σε πρόωρη φάση. Η διόρθωση λαθών είναι φθηνότερη από την αλλαγή του παραδοτέου συστήματος
Τεχνολογία ΛογισμικούSlide 29 Σημαντικά Σημεία u Δεν είναι αποτελεσματικές ως προς το κόστος σε διαλογικά συστήματα. Είναι πιο εφαρμόσιμες σε συστήματα που έχουν απαίτηση στην ασφάλεια και σε πρότυπα u Οι λειτουργίες καθορίζονται με τον προσδιορισμό των προ και μετά συνθηκών. Όμως η προσέγγιση αυτή δεν χρησιμοποιείται για μεσαίου έως μεγάλου μεγέθους συστήματα