Ατομική Διπλωματική Εργασία ΈΛΕΓΧΟΣ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΤΗ ΧΡΗΣΗ ΜΟΝΤΕΛΩΝ : ΘΕΩΡΗΤΙΚΗ ΠΡΟΣΑΡΜΟΓΗ ΑΚΟΛΟΥΘΙΑΚΩΝ ΔΙΑΓΡΑΜΜΑΤΩΝ.

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Ατομική Διπλωματική Εργασία ΈΛΕΓΧΟΣ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΤΗ ΧΡΗΣΗ ΜΟΝΤΕΛΩΝ : ΘΕΩΡΗΤΙΚΗ ΠΡΟΣΑΡΜΟΓΗ ΑΚΟΛΟΥΘΙΑΚΩΝ ΔΙΑΓΡΑΜΜΑΤΩΝ."

Transcript

1 Ατομική Διπλωματική Εργασία ΈΛΕΓΧΟΣ ΛΟΓΙΣΜΙΚΟΥ ΜΕ ΤΗ ΧΡΗΣΗ ΜΟΝΤΕΛΩΝ : ΘΕΩΡΗΤΙΚΗ ΠΡΟΣΑΡΜΟΓΗ ΑΚΟΛΟΥΘΙΑΚΩΝ ΔΙΑΓΡΑΜΜΑΤΩΝ Ευγενία Βασιλείου ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Μάϊος 2009

2 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Έλεγχος λογισμικού με τη χρήση μοντέλων : θεωρητική προσαρμογή ακολουθιακών διαγραμμάτων Ευγενία Βασιλείου Επιβλέπων Καθηγητής Ανδρέου Ανδρέας Η Ατομική Διπλωματική Εργασία υποβλήθηκε προς μερική εκπλήρωση των απαιτήσεων απόκτησης του πτυχίου Πληροφορικής του Τμήματος Πληροφορικής του Πανεπιστημίου Κύπρου Μάϊος

3 Περίληψη Το model-checking, δηλαδή ο έλεγχος κάποιου συστήματος με τη χρήση μοντέλων, είναι μια πολύ χρήσιμη διαδικασία στην ανάπτυξη λογισμικού. Όταν τα λάθη βρίσκονται αργά, τότε το κόστος του να τα διορθώσουμε είναι πολύ μεγαλύτερο από αυτό του να τα διορθώσουμε έγκαιρα. Υπάρχουν πολλά μοντέλα για να κάνουμε model-checking σε ένα σύστημα, όπως για παράδειγμα οι πίνακες απόφασης, οι μηχανές πεπερασμένων καταστάσεων, οι γραμματικές, οι αλυσίδες Markov και τα UML. Χρησιμοποιώντας διαγράμματα ακολουθιών για να ελέγξουμε ένα πρόγραμμα στην Java, ανακαλύψαμε ότι υπάρχουν πράγματα τα οποία δεν υποστηρίζουν τα διαγράμματα κι έτσι ο έλεγχος δεν μπορεί να γίνει ολοκληρωμένα. Λόγω του ότι το model-checking χρησιμοποιεί μοντέλα τα οποία είναι ένα στιγμιότυπο του συστήματος και ελέγχονται εκείνα αντί για το σύστημα, ο έλεγχος είναι όσο καλός όσο είναι και τα μοντέλα τα οποία χρησιμοποιήθηκαν. Γι αυτό έπρεπε να εντοπιστούν τα προβλήματα αυτά στα διαγράμματα ακολουθίας και στη συνέχεια πρότεινα λύσεις για τη βελτίωσή τους έτσι ώστε να γίνεται ένας πιο ολοκληρωμένος έλεγχος του μοντέλου και κατά συνέπεια του συστήματος. 3

4 Περιεχόμενα Κεφάλαιο 1 Εισαγωγή Τι είναι ένα μοντέλο 5 Κεφάλαιο 2 Μodel-Checking Τι είναι το model-checking Ιστορία του model-checking Επαλήθευση συστημάτων Επαλήθευση λογισμικού Επαλήθευση υλικού Πλεονεκτήματα Μειονεκτήματα 18 Κεφάλαιο 3 Τεχνικές μοντελοποίησης Πίνακες απόφασης Μηχανές πεπερασμένων καταστάσεων Γραμματικές Αλυσίδες Markov 29 Κεφάλαιο 4 Ακολουθιακά διαγράμματα Τι είναι τα ακολουθιακά διαγράμματα Πώς χρησιμοποιούνται για model-checking Μειονεκτήματα Προτάσεις για λύσεις 35 Κεφάλαιο 5 Συμπεράσματα Συμπεράσματα Μελλοντική δουλειά 46 Β ι β λ ι ο γ ρ α φ ί α. 47 4

5 Κεφάλαιο 1 Εισαγωγή 1.1 Τι είναι ένα μοντέλο Τι είναι ένα μοντέλο Για να αρχίσουμε να μιλάμε για model-checking πρέπει πρώτα να αναφέρουμε το τι είναι μοντέλο. Ένα μοντέλο του λογισμικού είναι μια απεικόνιση της συμπεριφοράς του. Η συμπεριφορά μπορεί να περιγραφεί από την άποψη των ακολουθιών εισαγωγής που γίνονται αποδεκτές από το σύστημα, τις ενέργειες, τις συνθήκες και την λογική των εξόδων (output) ή τη ροή των στοιχείων μέσω των ενοτήτων της εφαρμογής. Υπάρχουν πολυάριθμα τέτοια μοντέλα και καθένα περιγράφει τις διαφορετικές πτυχές της συμπεριφοράς λογισμικού. Στο Κεφάλαιο 3 θα εξετάσουμε κάποια από αυτά. 5

6 Κεφάλαιο 2 Model-Checking 2.1 Τι είναι το model-checking Ιστορία του model-checking Επαλήθευση συστημάτων Επαλήθευση λογισμικού Επαλήθευση υλικού Πλεονεκτήματα Μειονεκτήματα Τι είναι το model-checking Ο ορισμός του model-checking : Το model-checking είναι μια αυτοματοποιημένη τεχνική η οποία δεδομένου ενός πεπερασμένου αριθμού καταστάσεων μοντέλο ενός συστήματος και μίας τυπικής ιδιότητας, ελέγχει συστηματικά αν αυτή η ιδιότητα ευσταθεί στο μοντέλο [1]. Στο σχεδιασμό λογισμικού και υλικού πολυσύνθετων συστημάτων, ο περισσότερος χρόνος και η περισσότερη προσπάθεια ξοδεύονται στην επαλήθευση παρ ότι στην κατασκευή. Οι τεχνικές επιδιώκουν να μειώσουν και να διευκολύνουν τις προσπάθειες επαλήθευσης αυξάνοντας την κάλυψή τους. Οι τυπικές μέθοδοι προσφέρουν μια μεγάλη δυνατότητα να ληφθεί μια πρόωρη ενσωμάτωση της επαλήθευσης στη διαδικασία σχεδίου, να παρασχεθούν οι αποτελεσματικότερες τεχνικές επαλήθευσης, και να μειωθεί ο χρόνος επαλήθευσης. Οι βασισμένες σε μοντέλα τεχνικές επαλήθευσης (model-based verification techniques) είναι βασισμένες σε μοντέλα που περιγράφουν την πιθανή συμπεριφορά του 6

7 συστήματος με τρόπο μαθηματικά ακριβή και σαφή. Πριν από οποιαδήποτε μορφή επαλήθευσης, η ακριβής μοντελοποίηση των συστημάτων οδηγεί συχνά στην ανακάλυψη της ημιτέλειας, των ασαφειών και των ασυνεπειών στις άτυπες προδιαγραφές συστημάτων. Τέτοια προβλήματα συνήθως ανακαλύπτονται σε ένα πολύ προχωρημένο στάδιο του σχεδιασμού. Τα μοντέλα συστημάτων συνοδεύονται από τους αλγορίθμους που ερευνούν συστηματικά όλες τις καταστάσεις τους. Αυτό παρέχει τη βάση για μια ολόκληρη σειρά τεχνικών επαλήθευσης που κυμαίνονται από εξαντλητική εξερεύνηση (model checking) μέχρι και τα πειράματα με ένα περιορισμένο σύνολο σεναρίων στο μοντέλο (προσομοίωση) ή στην πραγματικότητα (testing). Λόγω των επίμονων βελτιώσεων των υποκρυπτόμενων αλγορίθμων και των δομών δεδομένων, μαζί με τη διαθεσιμότητα των γρηγορότερων υπολογιστών και των μεγαλύτερων μνημών υπολογιστών, οι βασισμένες σε μοντέλα τεχνικές για τις οποίες πριν μια δεκαετία εφαρμόζονταν μόνο σε πολύ απλά παραδείγματα είναι σήμερα εφαρμόσιμες σε ρεαλιστικά σχεδιασμούς. Λόγω του ότι σαν αφετηρία αυτών των τεχνικών είναι ένα μοντέλο του συστήματος υπό εξέταση, έχουμε ως δεδομένο ότι : Οποιαδήποτε επαλήθευση χρησιμοποιεί τεχνικές βασισμένες σε μοντέλα είναι όσο καλή όσο το μοντέλο του συστήματος. [1] To model-checking είναι μια τεχνική επαλήθευσης που ερευνά όλες τις πιθανές καταστάσεις του συστήματος με brute-force τρόπο. Το εργαλείο λογισμικού που εκτελεί το model-checking ερευνά όλα τα πιθανά σενάρια με μεθοδικό τρόπο. Έτσι, μπορεί να δείξει ότι ένα δεδομένο μοντέλο συστήματος ικανοποιεί μια συγκεκριμένη ιδιότητα. Χρησιμοποιώντας έξυπνους αλγόριθμους και εφαρμοσμένες δομές δεδομένων μπορούν να χειριστούν χώροι μεγάλων καταστάσεων για συγκεκριμένα προβλήματα (από μέχρι και καταστάσεις [3]). Ακόμα και τα δυσδιάκριτα λάθη που δεν ανακαλύπτονται, μπορούν πιθανώς να αποκαλυφθούν με τη χρήση του model-checking. 7

8 Σχήμα 2.1 : Σχηματική αναπαράσταση της προσέγγισης με model-checking [2] Οι τυπικές ιδιότητες που μπορούν να ελεγχθούν χρησιμοποιώντας model-checking είναι ποιοτικής φύσεως : Είναι το παραγόμενο αποτέλεσμα σωστό; Μπορεί το σύστημα να φτάσει σε αδιέξοδο; Αλλά μπορούν επίσης να ελεγχθούν και χρονικές ιδιότητες : Μια απάντηση λαμβάνεται εντός 5 λεπτών; Το model-checking απαιτεί μια ακριβή δήλωση των ιδιοτήτων που θα ελεγχθούν. Αυτό το βήμα συχνά οδηγεί στην ανακάλυψη ασαφειών και ανακολουθιών. Το μοντέλο του συστήματος παράγεται συνήθως αυτόματα από μια περιγραφή του μοντέλου που είναι ορισμένη σε μια κατάλληλη γλώσσα προγραμματισμού όπως είναι η C ή η Java ή γλώσσες περιγραφής του υλικού (hardware) όπως η Verilog ή η VHDL. Ο προσδιορισμός των ιδιοτήτων υπαγορεύει το τι πρέπει να κάνει το σύστημα και τι δεν πρέπει να κάνει, ενώ η περιγραφή του μοντέλου δείχνει το πώς συμπεριφέρεται το σύστημα. Ο ελεγκτής του μοντέλου (model checker) εξετάζει όλες τις σχετικές καταστάσεις του συστήματος για να ελέγξει αν ικανοποιούν την επιθυμητή ιδιότητα. Αν μια κατάσταση προσεγγιστεί η οποία παραβιάζει την υπό εξέταση ιδιότητα, ο ελεγκτής του μοντέλου παρέχει ένα παράδειγμα (counterexample) που καθορίζει πώς το μοντέλο θα μπορούσε να φτάσει στην ανεπιθύμητη κατάσταση. 8

9 Η δοκιμή περιγράφει το μονοπάτι εκτέλεσης που οδηγεί από την αρχική κατάσταση του συστήματος σε μια κατάσταση που παραβιάζει την ιδιότητα που επαληθεύεται. Με τη βοήθεια ενός προσομοιωτή, ο χρήστης μπορεί να επαναλάβει το αθέμιτο σενάριο, αποκτώντας έτσι χρήσιμες πληροφορίες για αποσφαλμάτωση (debugging) και να προσαρμόσει το μοντέλο κατάλληλα. 9

10 2.2 Ιστορία του model-checking To model-checking προέρχεται από την ανεξάρτητη δουλειά δύο ζευγαριών στην αρχή της δεκαετίας του 80 : των Ε.Μ. Clarke και E.A. Emerson και των J. Sifakis και. J. P. Queille. Οι τρεις πρώτοι μοιράστηκαν το βραβείο Turing το 2007 για τη δουλειά τους πάνω στο model-checking. [5] Ο όρος model-checking προτάθηκε από τους Clarke και Emerson. Η brute-force εξέταση όλου του χώρου καταστάσεων στο model-checking μπορεί να θεωρηθεί ως επέκταση των αυτοματοποιημένων τεχνικών επικύρωσης πρωτόκολλου από τους Hajek και West. Οι περιορισμοί του model-checking συζητήθηκαν από τους Apt και Kozen. [5] Περισσότερες πληροφορίες για το model-checking είναι διαθέσιμες στα αρχικά βιβλία των Holzmann, McMillan και Kurshan και την πιο πρόσφατη δουλειά των Clarke, Grumberg και Peled και των Huth, Ryan Schneider και Berard. Η τροχιά του modelchecking περιγράφηκε πρόσφατα από τους Ruys και Brinksma. [5] 10

11 2.3 Επαλήθευση συστημάτων Σε αυτό το υποκεφάλαιο θα δούμε γιατί το model-checking είναι χρήσιμο στην ανάπτυξη λογισμικού και υλικού. Η εμπιστοσύνη μας στη λειτουργία των συστημάτων πληροφοριών και επικοινωνιακών τεχνολογιών (Information and Communication Technology ICT) μεγαλώνει ραγδαία. Τα συστήματα αυτά γίνονται όλο και πιο περίπλοκα και διεισδύουν μαζικά στην καθημερινή μας ζωή μέσω του διαδικτύου και όλων των ειδών ενσωματωμένων συστημάτων όπως οι smart cards, οι φορητοί υπολογιστές, τα κινητά κτλ. Το 1995 υπολογίστηκε ότι χρησιμοποιούμε περίπου 25 τέτοιες συσκευές επί καθημερινής βάσεως [1]. Υπηρεσίες όπως ηλεκτρονικές τραπεζικές συναλλαγές και αγορές μέσω του διαδικτύου έχουν γίνει πραγματικότητα. Τα συστήματα ICT είναι παγκόσμια και βρίσκονται παντού. Ελέγχουν το χρηματιστήριο, αποτελούν την «καρδιά» των τηλεφωνικών διακόπτων, είναι κρίσιμα για το διαδίκτυο και είναι απαραίτητα για πολλά συστήματα ιατρικής. Η εμπιστοσύνη μας σε αυτά τα συστήματα κάνει την αξιόπιστη λειτουργία τους μεγάλης κοινωνικής σημασίας. Εκτός του να προσφέρουν καλή απόδοση σε θέματα χρονικής σημασίας, η απουσία ενοχλητικών λαθών είναι μια από τις μεγάλες ενδείξεις ποιότητας. Κάθε φορά που κάποια συσκευή που χρησιμοποιούμε δυσλειτουργεί ενοχλούμαστε. Μπορεί αυτές οι δυσλειτουργίες να μην απειλούν τη ζωή μας, αλλά μπορεί να έχουν σημαντικές οικονομικές κυρώσεις για τον κατασκευαστή. Σωστά ICT συστήματα είναι μεγάλης σημασίας για την επιβίωση μιας εταιρείας. Πολλά παραδείγματα είναι γνωστά. Το ελάττωμα στο Pentium II της Intel στη μονάδα τμήματος κινητής υποδιαστολής στην αρχή της δεκαετίας του 90, προκάλεσε απώλεια περίπου 475 εκατομμυρίων δολλαρίων για την αντικατάσταση των ελαττωματικών επεξεργαστών και ζήμιωσε σημαντικά τη φήμη της Intel σαν αξιόπιστος κατασκευαστής chips. Το λογισμικό λάθος σε ένα σύστημα χειρισμού αποσκευών καθυστέρησε το άνοιγμα του αεροδρομίου του Denver εννιά μήνες και είχαν απώλεια 1,1 εκατομμυρίων δολλαρίων την ημέρα. Τα λάθη μπορούν να είναι όμως και καταστροφικά. Οι ατέλειες στον έλεγχο του λογισμικού του πύραυλου Ariane-5 (του ανιχνευτή του Άρη) το οποίο εκτοξεύθηκε στις 4 Ιουνίου 1996 προκάλεσαν τη συντριβή του 36 δευτερόλεπτα μετά λόγω μιας 11

12 λανθασμένης μετατροπής ενός 64-bit floating point σε 16-bit integer. Ένα λάθος λογισμικού στο μέρος ελέγχου της μηχανής ραδιοθεραπείας Therac-5 προκάλεσε τον θάνατο σε έξι ασθενείς καρκίνου σε διάστημα δύο χρόνων αφού εκτέθηκαν σε υπερβολική δόση ραδιενέργειας[1,2]. Οι τεχνικές επαλήθευσης συστημάτων εφαρμόζονται στο σχεδιασμό των ICT συστημάτων με έναν πιο αξιόπιστο τρόπο. Η επαλήθευση συστημάτων χρησιμοποιείται για να εξασφαλίσουμε ότι ο σχεδιασμός ή το προϊόν υπό εξέταση κατέχει κάποιες ιδιότητες. Οι ιδιότητες που τίθονται προς επικύρωση μπορεί να είναι στοιχειώδεις, για παράδειγμα ένα σύστημα δεν πρέπει να φτάσει ποτέ σε μια κατάσταση όπου να μην μπορεί να βγει από αυτή (deadlock). Αυτές συνήθως αποκτούνται από τις προδιαγραφές του συστήματος. Οι προδιαγραφές περιγράφουν το τι πρέπει και τι δεν πρέπει να κάνει το σύστημα κι έτσι αποτελούν τη βάση για την επαλήθευση του συστήματος. Ένα ελάττωμα βρίσκεται όταν το σύστημα δεν ικανοποιεί μία από τις προδιαγραφές. Το σύστημα θεωρείται σωστό όταν ικανοποιεί όλες τις ιδιότητες που αποκτήθηκαν από τις προδιαγραφές. Σχήμα 2.2 : Σχηματική αναπαράσταση της επαλήθευσης συστημάτων [1] 12

13 2.4 Επαλήθευση λογισμικού Οι τεχνικές που χρησιμοποιούνται κυρίως για επαλήθευση λογισμικού είναι το peer reviewing και οι δοκιμές (testing). Peer review : το λογισμικό δέχεται επιθεώρηση από μια ομάδα μηχανικών λογισμικού, οι οποίοι κατά προτίμηση δεν συνέβαλαν στη δημιουργία του λογισμικού αυτού. Ο μη μεταγλωττισμένος κώδικας δεν εκτελείται αλλά αναλύεται στατικά. Μελέτες έχουν δείξει ότι το peer review είναι μια αποτελεσματική τεχνική η οποία λαμβάνει το 31% μέχρι και το 93% των λαθών με ένα μέσο όρο 60%. Παρόλο που είναι μια χειρωνακτική εργασία, το peer review είναι μια χρήσιμη τεχνική, γι αυτό και χρησιμοποιείται στο 80% περίπου των προγραμματιστικών έργων (projects) της τεχνολογίας λογισμικού [3]. Όμως λόγω του ότι είναι στατική διαδικασία, τα δυσδιάκριτα λάθη όπως είναι τα προβλήματα ταυτοχρονίας είναι δύσκολο να ανιχνευθούν με το peer review. Testing : Αποτελεί ένα σημαντικό μέρος οποιουδήποτε project της τεχνολογίας λογισμικού. Μεταξύ του 30 και του 50% του ολικού κόστους του project αφιερώνεται στο testing [3]. Σε αντίθεση με το peer review που αναλύει τον κώδικα στατικά χωρίς να τον εκτελεί, το testing είναι μια δυναμική τεχνική, δηλαδή εκτελεί τον κώδικα. Πιο συγκεκριμένα, παίρνει το μέρος του λογισμικού υπό εξέταση και δίνει στον εκτελέσιμο κώδικα εισόδους, που ονομάζονται δοκιμές. Η ορθότητα καθορίζεται αναγκάζοντας το λογισμικό να περάσει από κάποια μονοπάτια εκτέλεσης, ακολουθίες δηλώσεων κώδικα που αναπαριστούν ένα τρέξιμο (run) του κώδικα. Βάση των παρατηρήσεων κατά τη διάρκεια των εκτελέσεων των δοκιμών, η πραγματική έξοδος του συστήματος συγκρίνεται με την έξοδο που καταγράφηκε βάση των προδιαγραφών του συστήματος. Η γενίκευση και έκτελεση των δοκιμών γίνονται συνήθως αυτοματοποιημένα, ενώ η σύγκριση γίνεται συνήθως από ανθρώπους. Το κυριότερο προτέρημα του testing είναι ότι μπορεί να εφαρμοστεί σε πολλά είδη λογισμικών, από λογισμικά εφαρμογών μέχρι μεταγλωττιστές και λειτουργικά συστήματα. Το να ελεγχθούν όλα τα μονοπάτια εκτέλεσης του συστήματος είναι πρακτικά αδύνατο, στην πραγματικότητα όμως ένα μικρό υποσύνολο αυτών των μονοπατιών αντιμετωπίζονται. Άρα το testing δεν θα είναι ποτέ ολοκληρωμένο, δηλαδή μπορεί να δείξει την παρουσία λαθών αλλά δεν μπορεί να 13

14 δείξει την απουσία τους. Ακόμα ένα πρόβλημα είναι ο καθορισμός του πότε πρέπει να σταματήσει. Έρευνες έχουν δείξει ότι οι δύο τεχνικές συλλαμβάνουν διαφορετικές κλάσεις λαθών σε διαφορετικά στάδια του κύκλου ανάπτυξης. Γι αυτό και συχνά χρησιμοποιούνται μαζί. Για να αυξηθεί η αξιοπιστία του λογισμικού, αυτές οι τεχνικές επαλήθευσης συμπληρώνονται με άλλες τεχνικές όπως δομημένες μέθοδοι σχεδίου και προδιαγραφών (π.χ. UML). Οι τυπικές τεχνικές χρησιμοποιούνται στο 10 με 15% όλων των project λογισμικών. Λήψη λαθών λογισμικού : όσο πιο γρήγορα τόσο το καλύτερο. Είναι μεγάλης σημασίας να εντοπιστούν τα λάθη του λογισμικού. Το κόστος του να διορθωθεί ένα ελάττωμα στο λογισμικό κατά τη διάρκεια της συντήρησης είναι περίπου 500 φορές μεγαλύτερο από το να διορθωθεί στα αρχικά στάδια του σχεδιασμού. Άρα το σύστημα επαλήθευσης πρέπει να γίνει στα αρχικά στάδια της διαδικασίας σχεδιασμού. Σχήμα 2.3 : Παρουσίαση λαθών, εντοπισμός και κόστος διόρθωσης [1] Όπως παρατηρούμε από την πιο πάνω γραφική παράσταση περίπου το 50% όλων των λαθών παρουσιάζονται κατά τη διάρκεια του προγραμματισμού, δηλαδή στη φάση όπου γράφεται ο κώδικας. Παρόλο που μόνο 15% όλων των λαθών παρουσιάζονται στα αρχικά στάδια του σχεδιασμού, τα περισσότερα λάθη βρίσκονται κατά τη διάρκεια 14

15 του testing. Στην αρχή του testing, το οποίο προσανατολίζεται στο να βρει ελαττώματα στις ανεξάρτητες μονάδες του λογισμικού που απαρτίζουν το σύστημα, η πυκνότητα των ελαττωμάτων είναι περίπου 20 ανά 1000 γραμμές κώδικα (χωρίς σχόλια). Αυτό έχει μειωθεί σε περίπου 6 ελαττώματα ανά 1000 γραμμές κώδικα στην αρχή του testing του συστήματος. Για να κυκλοφορήσει ένα νέο λογισμικό, ο ανεκτός αριθμός ελαττωμάτων είναι συνήθως 1 ανά 1000 γραμμές κώδικα. Τα λάθη συνήθως επικεντρώνονται σε μερικά μέρη του λογισμικού. Περίπου τα μισά μέρη δεν έχουν λάθη και περίπου το 80% των λαθών βρίσκονται σε ένα μικρό ποσοστό των μερών του λογισμικού (περίπου στο 20%). Η διόρθωση των λαθών που βρίσκονται πριν από το testing γίνεται αρκετά οικονομικά. Το κόστος της διόρθωσης όπως βλέπουμε στην πιο πάνω γραφική παράσταση αυξάνεται σημαντικά από περίπου $1000 (ανά διόρθωση λάθους) στη φάση του testing σε περίπου $12500 όταν το λάθος παρουσιάζεται κατά τη διάρκεια της λειτουργίας του συστήματος. Είναι άρα πολύ σημαντικό να βρεθούν τεχνικές που να εντοπίζουν τα ελαττώματα όσο το γρηγορότερο δυνατό στη φάση σχεδιασμού του λογισμικού γιατί το κόστος της διόρθωσης είναι σημαντικά πιο χαμηλό και η επιρροή τους στον υπόλοιπο σχεδιασμό είναι λιγότερο ουσιαστική. 2.5 Επαλήθευση υλικού Το να αποτραπούν τα λάθη στο σχεδιασμό υλικού είναι κρίσιμο γιατί το υλικό υπόκειται σε ψηλά κόστα επεξεργασίας. Το να διορθωθούν τα ελαττώματα μετά την παράδοσή του στους πελάτες είναι πολύ δύσκολο και οι απαιτήσεις ποιότητας είναι πολύ ψηλές. Ενώ τα λάθη του λογισμικού μπορούν να διορθωθούν με το να παρέχεται στους χρήστες αναβάθμιση, τα ελαττώματα του υλικού είναι δύσκολο να διορθωθούν μετά την παράδοσή του στους πελάτες και χρειάζονται κυρίως να ξαναεπεξεργαστούν και να ξαναδιανομηθούν. Αυτό έχει μεγάλες οικονομικές συνέπειες. Τεχνικές για επαλήθευση υλικού : προσομοίωση, εξομοίωση και ανάλυση δομών είναι οι κύριες τεχνικές που χρησιμοποιούνται για την επαλήθευση υλικού. 15

16 Η ανάλυση δομών αποτελείται από αρκετές συγκεκριμένες τεχνικές όπως η σύνθεση, η χρονική ανάλυση και ο έλεγχος ισότητας. Η προσομοίωση είναι ένα είδος testing. Ένα ξαναδιαμορφώσιμο γενικό σύστημα υλικού διαμορφώνεται έτσι ώστε να συμπεριφέρεται σαν το κύκλωμα υπό εξέταση και εξετέζεται ενδελεχώς. Όπως και με το testing λογισμικού, η προσομοίωση παρέχει ένα σύνολο από ερεθίσματα στο κύκλωμα και συγκρίνει τις γενικευμένες εξόδους με τις αναμενόμενες εξόδους όπως περιγράφηκαν στις προδιαγραφές του chip. Για να ελεγχθεί πλήρως το κύκλωμα, όλοι οι πιθανοί συνδυασμοί σε όλες τις πιθανές καταστάσεις του συστήματος πρέπει να εξεταστούν. Αυτό δεν είναι πρακτικό και ο αριθμός των δοκιμών πρέπει να μειωθεί σημαντικά, αυξάνοντας όμως την πιθανότητα να μην βρεθούν κάποια λάθη. Με την εξομοίωση, ένα μοντέλο του συστήματος κατασκευάζεται και εξομοιώνεται. Τα μοντέλα συνήθως παραχωρούνται χρησιμοποιώντας περιγραφικές γλώσσες όπως η Verilog και η VHDL. Βάση των ερεθισμάτων, τα μονοπάτια εκτέλεσης του μοντέλου εξετάζονται χρησιμοποιώντας έναν εξομοιωτή. Αυτά τα ερεθίσματα παρέχονται από κάποιον χρήστη ή από κάποια αυτοματοποιημένα μέσα όπως μία τυχαία γεννήτρια. Ένας κακός συνδυασμός μεταξύ της εξόδου του εξομοιωτή και της εξόδου που περιγράφεται από τις προδιαγραφές δείχνει την ύπαρξη λάθους. Ο εξομοιωτής είναι όπως το testing αλλά εφαρμόζεται σε μοντέλα. Έχει όμως το ίδιο μειονέκτημα με τον προσομοιωτή. Ο αριθμός των σεναρίων που πρέπει να ελεγχθούν σε ένα μοντέλο είναι πολύ περισσότερα από αυτά που ελέγχονται στην πραγματικότητα. Η εξομοίωση είναι η πιο γνωστή τεχνική για επαλήθευση υλικού και χρησιμοποιείται σε διάφορα στάδια σχεδιασμού. Εκτός από αυτές τις τεχνικές για ανίχνευση λαθών, χρειάζεται και testing υλικού για να βρεθούν λάθη επεξεργασίας. 16

17 2.6 Πλεονεκτήματα - Είναι μία γενική μέθοδος επαλήθευσης η οποία είναι εφαρμόσιμη σε ένα μεγάλο πεδίο εφαρμογών όπως είναι τα ενσωματωμένα συστήματα (embedded systems), η τεχνολογία λογισμικού και ο σχεδιασμός υλικού (hardware design). - Υποστηρίζει μερική επαλήθευση, δηλαδή για παράδειγμα οι ιδιότητες μπορούν να ελεγχθούν ξεχωριστά, έτσι ώστε να ελεγχθούν οι βασικές ιδιότητες πρώτα. Δεν χρειάζεται πλήρης προδιαγραφή των απαιτήσεων. - Δεν είναι ευπαθές στην πιθανότητα ότι ένα λάθος είναι εκτεθειμένο. Αυτό αντιτίθεται με τον έλεγχο και την προσομοίωση που στοχεύουν στο να ανιχνεύσουν τις πιο πιθανές ατέλειες. - Παραχωρεί διαγνωστικές πληροφορίες σε περίπτωση που μια ιδιότητα ανατραπεί. Αυτό είναι πολύ χρήσιμο για σκοπούς αποσφαλμάτωσης. - Είναι μια πιθανή «push-button» τεχνολογία. Η χρήση του model-checking δεν απαιτεί σε μεγάλο βαθμό ούτε την αλληλεπίδραση του χρήστη ούτε εμπειρία. - Προκαλεί ένα γοργά αυξανόμενο ενδιαφέρον από τη βιομηχανία. Πολλές εταιρείες υλικού έχουν αρχίσει εργαστήρια επαλήθευσης, εργασίες με απαιτούμενη δεξιότητα για model-checking εμφανίζονται συχνά και εμπορικοί ελεγκτές μοντέλων έχουν γίνει διαθέσιμοι. - Μπορεί εύκολα να ενσωματωθεί σε ήδη υπάρχοντες κύκλους ανάπτυξης. Μελέτες έχουν δείξει ότι μπορεί να οδηγήσει σε χαμηλότερο χρόνο ανάπτυξης. - Έχει μαθηματικό υπόβαθρο. Βασίζεται στη θεωρία αλγόριθμων γραφικών παραστάσεων, δομές δεδομένων και λογικής. 17

18 2.7 Μειονεκτήματα - Είναι κυρίως κατάλληλο για control-intensive εφαρμογές και λιγότερο για dataintensive εφαρμογές αφού τα δεδομένα συνήθως κυμαίνονται πάνω από άπειρες περιοχές. - Η δυνατότητα εφαρμογής του υπόκειται σε θέματα αποφασιστικότητας. Για συστήματα άπειρων καταστάσεων το model-checking είναι γενικά μη αποτελεσματικά υπολογίσιμο. - Επαληθεύει ένα μοντέλο του συστήματος και όχι το πραγματικό σύστημα. Κάθε παραγόμενο αποτέλεσμα είναι όσο καλό όσο το μοντέλο του συστήματος. Επιπλέον τεχνικές όπως είναι οι δοκιμές (testing) χρειάζονται για να βρεθούν ελαττώματα επεξεργασίας (για το hardware) ή λάθη κώδικα (για το software). - Ελέγχει μόνο δηλωμένες απαιτήσεις άρα δεν υπάρχει εγγύηση για πληρότητα. Η ισχύς των ιδιοτήτων που δεν ελέγχονται δεν μπορούν να κριθεί. - Υπάρχει το πρόβλημα του state-space explosion, δηλαδή ο αριθμός των καταστάσεων που που χρειάζονται για να μοντελοποιηθεί το σύστημα με ακρίβεια μπορούν εύκολα να υπερβαίνουν το ποσοστό της ελεύθερης μνήμης του υπολογιστή. Παρόλη την ανάπτυξη πολλών αποτελεσματικών μεθόδων για να ξεπεραστεί αυτό το πρόβλημα, τα μοντέλα ρεαλιστικών συστημάτων μπορεί να είναι ακόμα πολύ μεγάλα για να χωρέσουν στη μνήμη. - Η χρήση του απαιτεί κάποια εμπειρία στο να βρεθούν κατάλληλες αφαιρέσεις ώστε να ληφθούν μικρότερα μοντέλα και στο να δηλωθούν οι ιδιότητες στο λογικό φορμαλισμό που χρησιμοποιείται. - Δεν επιτρέπει τον έλεγχο γενικεύσεων. Τα συστήματα ελέγχου με αυθαίρετο αριθμό στοιχείων δεν μπορούν να αντιμετωπιστούν. Το model-checking μπορεί όμως να 18

19 προτείνει αποτελέσματα για αυθαίρετες παράμετρους που μπορούν να επαληθευθούν χρησιμοποιώντας βοηθούς αποδείξεως. 19

20 Κεφάλαιο 3 Τεχνικές μοντελοποίησης 3.1 Πίνακες απόφασης Μηχανές πεπερασμένων καταστάσεων Γραμματικές Αλυσίδες Markov Πίνακες απόφασης Οι πίνακες απόφασης είναι ένας ακριβής αλλά και ταυτοχρόνως συμπαγής τρόπος για μοντελοποίηση περίπλοκης λογικής. Συσχετίζει συνθήκες με ενέργειες, όπως για παράδειγμα τις εντολές if-else. Αποτελείται από τέσσερα τεταρτημόρια όπως φαίνεται και στον πίνακα πιο κάτω : Συνθήκες Ενέργειες Πίνακας 3.1 : Απεικόνιση του πίνακα απόφασης Εναλλακτικές Συνθήκες Είσοδοι ενεργειών Κάθε απόφαση αντιστοιχεί σε μια μεταβλητή, μια σχέση ή ένα κατηγόρημα των οποίων οι πιθανές τιμές παρατίθενται μεταξύ των εναλλακτικών συνθηκών. Κάθε ενέργεια είναι μια διαδικασία ή λειτουργία που θα εκτελεστεί και οι είσοδοι καθορίζουν αν ή/και με ποια σειρά η ενέργεια θα εκτελεστεί για το σύνολο των εναλλακτικών συνθηκών που αντιστοιχεί η είσοδος. Πολλές φορές συναντούμε το σύμβολο - το οποίο σημαίνει «δεν μας ενδιαφέρει». Χρησιμοποιώντας αυτό το σύμβολο απλοποιούμε τους πίνακες απόφασης, ειδικά σε περιπτώσεις όπου η σημασία της συνθήκης έχει μικρή επίρροια στις ενέργειες που θα εκτελεστούν. 20

21 Εκτός από τη βασική δομή τεσσάρων τεταρτημόριων, οι πίνακες απόφασης ποικίλλουν ευρέως ανάλογα με τον τρόπο που οι εναλλακτικές συνθήκες και οι είσοδοι ενεργειών αντιπροσωπεύονται. Μερικοί πίνακες απόφασης χρησιμοποιούν τις απλές true/false τιμές για να αντιπροσωπεύσουν τις εναλλακτικές συνθήκες, ενώ άλλοι πίνακες μπορεί να χρησιμοποιούν τις αριθμημένες εναλλακτικές περιπτώσεις και μερικοί πίνακες χρησιμοποιούν ακόμη και τη συγκεχυμένη λογική (fuzzy logic) ή τις πιθανολογικές αντιπροσωπεύσεις (probabilistic representation) για τις εναλλακτικές συνθήκες. Με παρόμοιο τρόπο, οι είσοδοι ενεργειών μπορούν απλά να αντιπροσωπεύουν αν μια δράση πρόκειται να εκτελεστεί, ή στους πιο προηγμένους πίνακες απόφασης, την αλληλοuχία των ενεργειών που εκτελούν. Οι πίνακες απόφασης μπορούν επίσης να είναι ενσωματωμένοι σε προγράμματα του υπολογιστή και να χρησιμοποιηθούν για να οδηγήσουν τη λογική του προγράμματος. Για παράδειγμα, μπορεί να είναι ένας συμβουλευτικός πίνακας που θα περιέχει ένα πεδίο πιθανών τιμών εισόδου και έναν δείκτη λειτουργίας στο σημείο του κώδικα που επεξεργάζεται αυτή την είσοδο. Αυτή η μέθοδος είναι στατική. Είσοδος Δείκτης Λειτουργίας 1 Λειτουργία 1 (αρχικοποίηση) 2 Λειτουργία 2 (επεξεργασία του 2 ) 9 Λειτουργία 9 (τερματισμός) Πίνακας 3.2 : Απεικόνιση του ενσωματωμένου πίνακα απόφασης σε πρόγραμμα Χρήση πίνακα απόφασης για model-checking : Θεωρούμε ότι έχουμε ένα απλό σύστημα το οποίο θέλουμε να ελέγξουμε με ένα μοντέλο. Θα δημιουργήσουμε έναν πίνακα απόφασης στον οποίο θα βάλουμε στην στήλη των εισόδων τις εισόδους που θα βάλουμε στο σύστημα και στη στήλη του δείκτη λειτουργίας τις λειτουργίες που πρέπει να τεθούν σε εφαρμογή ανάλογα με την είσοδο που έχουμε θέσει στο σύστημα. Τις λειτουργίες τις βρίσκουμε από τις προδιαγραφές του συστήματος. Στη συνέχεια, θα βάλουμε τις εισόδους στο σύστημα 21

22 και θα συγκρίνουμε τις λειτουργίες που τίθονται σε εφαρμογή με αυτές του πίνακα (δηλαδή αυτές που έπρεπε να εκτελεστούν). 3.2 Μηχανές πεπερασμένων καταστάσεων (finite state machines) Μία μηχανή πεπερασμένων καταστάσεων (αλλιώς ονομάζεται και αυτόματο πεπερασμένων καταστάσεων) είναι ένα μοντέλο συμπεριφοράς που αποτελείται από πεπερασμένο αριθμό καταστάσεων, μεταβάσεις μεταξύ των καταστάσεων αυτών και ενέργειες. Αντιπροσωπεύεται ως (I, S, T, F, L) όπου : - Ι είναι το σύνολο των εισόδων στο σύστημα - S είναι το σύνολο όλων των καταστάσεων του συστήματος - Τ είναι μια συνάρτηση που καθορίζει αν μια μετάβαση προκύπτει όταν μια είσοδος εφαρμόζεται στο σύστημα σε μια συγκεκριμένη κατάσταση - F είναι το σύνολο των τελικών καταστάσεων - L είναι το σύνολο των αρχικών καταστάσεων Πώς χρησιμοποιείται για model-checking : Ας υποθέσουμε ότι έχουμε ένα απλό τηλεφωνικό σύστημα. Οι κόμβοι είναι οι καταστάσεις του τηλεφώνου. Οι ακμές αντιπροσωπεύουν ενέργειες που μπορεί ο χρήστης να εκτελέσει (αυτές είναι και οι είσοδοι του συστήματος). Οι περιπτώσεις δοκιμής καθορίζουν μια σειρά εισόδων, τις καταστάσεις που το σύστημα αναμένεται να βρίσκεται μετά από κάθε ενέργεια και τις τιμές όλων των εξόδων του συστήματος. 22

23 Σχήμα 3.1 : Απεικόνιση μηχανής πεπερασμένων καταστάσεων για τηλέφωνο [4] Το Ι είναι {Dial/Party Busy, Dial/Party Ready, Hang Up, Party Hangs Up, Party Picks Up, Pick Up}. To S είναι {Busy, Dial Tone, On-Hook, Ringing, Talking}. To L είναι {On-Hook}. To F είναι {On-Hook}. Αυτή η μηχανή πεπερασμένων καταστάσεων μπορεί να χρησιμοποιηθεί για να παραχθούν περιπτώσεις δοκιμής. Πίνακας 3.3 : Περιπτώσεις δοκιμής [4] 23

24 Ο πιο πάνω πίνακας δείχνει μια ακολουθία από 5 εισόδους. Αυτή η ακολουθία αρχίζει και τελειώνει με την κατάσταση On-Hook. Έχει την επιθυμητή ιδιότητα του να εκτελέσει κάθε πιθανή ενέργεια σε κάθε κατάσταση τουλάχιστον μία φορά. Αυτή η ιδιότητα αποκαλείται κάλυψη ενέργειας (action coverage). Η ακολουθία όμως δεν είναι μοναδική. Χρησιμοποιώντας το μοντέλο για να παράγουμε ακολουθίες δοκιμών, μπορεί να έχει ως αποτέλεσμα πολλές ακολουθίες δοκιμών, εκ των οποίων η κάθε μία να έχει κάτι διαφορετικό αλλά να καλύπτει το ίδιο κριτήριο κάλυψης. Για να λύσουμε αυτό το πρόβλημα θα μπορούσαμε να αρχίζουμε άλλη περίπτωση δοκιμής κάθε φορά που το σύστημα μπαίνει στην κατάσταση {On-Hook}. Τέσσερις τέτοιες περιπτώσεις φαίνονται στον πιο πάνω πίνακα (κάθε περίπτωση αρχίζει με το On-Hook της προηγούμενης και τελειώνει στο πρώτο εμφανιζόμενο On-Hook). Άλλες ακολουθίες δοκιμής που καλύπτουν όλες τις ενέργειες, θα είχαν διαφορετικό αριθμό περιπτώσεων δοκιμής. Μια περίπτωση δοκιμής θα πρέπει να καθορίζει τις αναμενόμενες αξόδους καθώς επίσης και τις ακολουθίες των εισόδων. Η κάλυψη ενέργειας είναι εύκολο να επιτευχθεί. Κάτι που είναι πιο δύσκολο, όμως είναι και πιο αποτελεσματικό, είναι η μεταστροφή κάλυψης (switch coverage). Η μεταστροφή κάλυψης επιτυγχάνεται όταν για κάθε κατάσταση, κάθε ζεύγος ενεργειών που οδηγεί είτε εντός είτε εκτός της κατάστασης καλύπτεται στην ακολουθία δοκιμής. Για παράδειγμα ας δούμε την κατάσταση Dial-Tone. Ένα πιθανό μονοπάτι που οδηγεί σε αυτή την κατάσταση είναι η ακολουθία ( Party Hangs Up, Dial Party Ready ). Ο πιο πάνω πίνακας δεν καλύπτει αυτή την περίπτωση. Ο πιο κάτω πίνακας δείχνει μια ακολουθία δοκιμής που πετυχαίνει μεταστροφή κάλυψης. Παρατηρούμε όμως ότι είναι μεγαλύτερος από τον πιο πάνω πίνακα. Αυτό συμβαίνει όταν θέλουμε να πετύχουμε μεταστροφή κάλυψης αντί για κάλυψη ενέργειας. 24

25 Πίνακας 3.4 : Περιπτώσεις δοκιμής [4] Στον πιο πάνω πίνακα παρατηρούμε ότι αν πάρουμε για παράδειγμα την αρχική κατάσταση On-Hook για να δημιουργήσουμε περιπτώσεις δοκιμής, θα έχουμε έξι σε αντίθεση με τις τέσσερις που είχαμε πριν. 25

26 3.3 Γραμματικές (Grammars) Μια γραμματική είναι ένα σύνολο από κανόνες σχηματισμού που περιγράφουν ποια strings που δημιουργούνται από το αλφάβητο μιας γλώσσας είναι συντακτικά σωστά μέσα στη γλώσσα. Δείχνει μόνο την τοποθεσία και το χειρισμό των strings της γλώσσας, δηλαδή δεν περιγράφει τίποτα άλλο για την γλώσσα όπως π.χ. τι σημαίνει το string. Συνήθως χρησιμοποιούνται για να κατασκευαστούν μεταγλωττιστές διαφόρων γλωσσών προγραμματισμού. Παράδειγμα γραμματικής : S ->asb Το aaabbb ανήκει στη γλώσσα ενώ το abaaabb δεν ανήκει. Πώς χρησιμοποιούνται για model-checking : Έχουμε για παράδειγμα τον πιο κάτω κώδικα : static void TestCase(){ while( Fun("L21") ){ L22: break; }} else { L3:{ L31: gotol22; L32: gotol31; }} 26

27 Το μοντέλο μας χρησιμοποιώντας γραμματικές θα είναι κάτι σαν αυτό : Statement :: if ( BooleanCondition) { Statement } else { Statement } Statement :: while ( BooleanCondition) { Statement } Statement :: { Statement Statement} Statement :: break; Statement :: gotolabel; Statement :: Label : Statement Statement :: ExpressionStatement; ExpressionStatement:: MethodCall BooleanExpression:: MethodCall MethodCall:: Fun(Label) Η γραφική αναπαράσταση αυτού του μοντέλου είναι η εξής : Σχήμα 3.2 : Γραφική αναπαράσταση γραμματικής του μοντέλου [4] 27

28 Οι δοκιμές που παράγονται από τη γραμματική είναι οι εξής : Σχήμα 3.3 : Δοκιμές παραγόμενες από τη γραμματική [4] 28

29 3.4 Αλυσίδες Markov (Markov chains) Μια αλυσίδα Markov είναι μια στοχαστική διαδικασία με την ιδιότητα Markov. Η ιδιότητα Markov σημαίνει ότι δεδομένης μιας παρούσας κατάστασης, οι μελλοντικές καταστάσεις είναι ανεξάρτητες από τις προηγούμενες καταστάσεις. Δηλαδή, η παρούσα κατάσταση περιέχει όλες τις πληροφορίες που μπορεί να επηρεάσουν την μελλοντική εξέλιξη της διαδικασίας. Το ότι είναι στοχαστική σημαίνει ότι όλες οι μεταβάσεις καταστάσεων είναι πιθανολογικές. Σε κάθε βήμα, το σύστημα μπορεί να αλλάξει την κατάστασή του από την παρούσα κατάσταση σε άλλη κατάσταση σύμφωνα με μια πιθανολογική διανομή. Οι αλλαγές της κατάστασης λέγονται μεταβάσεις και οι πιθανότητες που σχετίζονται με διάφορες αλλαγές καταστάσεων λέγονται πιθανότητες μετάβασης. Ένα παράδειγμα μιας αλυσίδας Markov είναι μια τυχαία διαδρομή στην αριθμητική γραμμή που αρχίζει από το 0 και μεταβαίνει +1 ή -1 με ίσα πιθανότητα σε κάθε βήμα. Συμβολίζεται : Pr(X n+1 = x X n = x n,, X 1 = x 1 ) = Pr(X n+1 = x X n = x n ) Οι θετικές τιμές του Χ αποτελούν ένα πεπερασμένο σύνολο που ονομάζεται χώρος καταστάσεων της αλυσίδας. Οι αλυσίδες συχνά περιγράφονται με έναν κατευθυνόμενο γράφο. Πώς χρησιμοποιούνται για model-checking : Οι αλυσίδες Markov μπορούν για ευκολία να θεωρηθούν σαν μηχανές πεπερασμένων καταστάσεων με βάρη τις πιθανότητες των μεταβάσεων. Η συλλογή των πιθανοτήτων δημιουργεί ένα profile. Για να κάνουμε model-checking με αλυσίδες Markov χρησιμοποιούμε μια τυχαία διαδικασία για να παραχθούν οι περιπτώσεις δοκιμής που προσαρμόζονται στο profile. Λέμε ότι έχουμε «usage model» και «usage profile» όταν οι πιθανότητες καθορίζουν τη χρήση του συστήματος. Για παράδειγμα, η προσέγγιση «Big Bang» της δοκιμής ολοκλήρωσης (integration testing) ορίζεται ως Usage Model Testing. Σε αυτή την περίπτωση, η ανάλυση των αποτελεσμάτων των περιπτώσεων δοκιμής παρέχει στο σύστημα αξιοπιστία δοκιμής. 29

30 Οι αλυσίδες Markov χρησιμοποιούνται για statistical model-checking, το οποίο είναι ισχυρό για τη βελτίωση της διαδικασίας των δοκιμών. Λόγω του ότι χρησιμοποιεί πιθανότητες, η τυχαία παραγωγή περιπτώσεων δοκιμής ελέγχεται και οδηγείται για να συγκλίνει στο στόχο. Για παράδειγμα, με τη χρήση ενός «usage profile», οι παραγόμενες περιπτώσεις δοκιμής θα ελέγξουν τις πιο χρησιμοποιημένες διαδικασίες πριν τις άλλες. 30

31 Κεφάλαιο 4 Ακολουθιακά Διαγράμματα 4.1 Τι είναι τα ακολουθιακά διαγράμματα Πώς χρησιμοποιούνται για model-checking Μειονεκτήματα Προτάσεις για λύσεις Τι είναι τα ακολουθιακά διαγράμματα Ο κύριος σκοπός ενός sequence diagram είναι να καθορίσει ακολουθίες γεγονότων που καταλήγουν σε κάποιο επιθυμητό αποτέλεσμα. Εστιαζόμαστε περισσότερο όχι στα μηνύματα αλλά στη σειρά με την οποία προκύπτουν. Περιγράφει πώς οι ομάδες αντικειμένων συνεργάζονται στο να επιτύχουν κάποια συμπεριφορά του συστήματος. Αυτή η συνεργασία εφαρμόζεται ως σειρά μηνυμάτων μεταξύ των αντικειμένων. Τα διαγράμματα ακολουθίας δεν είναι χρήσιμα για τη συμπεριφορά μέσα σε ένα αντικείμενο. Καθέτως σε ένα sequence diagram (από πάνω προς τα κάτω) βλέπουμε τη σειρά με την οποία προκύπτουν τα μηνύματα και οριζοντίως (ανάλογα με τη φορά του βέλους) βλέπουμε τα στιγμιότυπα των αντικειμένων από και στα οποία στέλνονται τα μηνύματα. 31

32 Επεξήγηση των μερών ενός sequence diagram : Actor : Αντιπροσωπεύει ένα εξωτερικό άτομο ή οντότητα που αλληλεπιδρά με το σύστημα Object : Αντιπροσωπεύει ένα αντικείμενο στο σύστημα ή ένα από τα στοιχεία του Unit : Αντιπροσωπεύει ένα υποσύστημα, στοιχείο, μονάδα ή άλλη λογική οντότητα στο σύστημα Separator : Αντιπροσωπεύει ένα όριο μεταξύ των υποσυστημάτων, των στοιχείων ή των μονάδων 32

33 Παράδειγμα : Σχήμα 4.1 : Παράδειγμα ακολουθιακού διαγράμματος 33

34 4.2 Πώς χρησιμοποιούνται για model-checking Για παράδειγμα έχουμε ένα πρόγραμμα και θέλουμε να το μοντελοποιήσουμε με sequence diagram για να το ελέγξουμε. Για να ελέγξουμε το πρόγραμμα πρέπει να ακολουθήσουμε κάποια βήματα. Βήμα 1 ο : ελέγχουμε αν υπάρχει η κατάλληλη μέθοδος στην κατάλληλη κλάση. Για το πιο πάνω παράδειγμα πρέπει να ελέγξουμε αν η μέθοδος enrollstudent() υπάρχει στην κλάση Seminar, αν η μέθοδος isstudenteligible() υπάρχει στην κλάση Course και ούτω καθεξής. Βήμα 2 ο : ελέγχουμε τη ροή με την οποία ανταλλάζονται τα μηνύματα. Αρχίζουμε από πάνω προς τα κάτω και ελέγχουμε αν εκτελούνται με τη σωστή σειρά. Βήμα 3 ο : ελέγχουμε αν επιστρέφονται οι σωστές πληροφορίες και στη σωστή χρονική στιγμή (αν χρειάζονται για να εκτελεστεί κάποια άλλη διεργασία). Βήμα 4 ο : ελέγχουμε αν πληρούνται οι προδιαγραφές. Για παράδειγμα αν έπρεπε να έπρεπε να κάνει όλες τις ενέργειες που κάνει, αν αφήνει κάποια πίσω κτλ. Βήμα 5 ο : ελέγχουμε αν τα αποτελέσματα που προκύπτουν με τις συγκεκριμένες εισόδους είναι εκείνα που έπρεπε να προκύπτουν. Βήμα 6 ο : κάνουμε βελτιστοποιήσεις στον κώδικα (π.χ. εντολές που δεν εκτελούνται, συνθήκες που μπορούμε να μειώσουμε την πολυπλοκότητα κτλ). 4.3 Μειονεκτήματα Τα μειονεκτήματα των sequence diagrams για model-checking είναι τα εξής : - Η αντιπροσώπευση περίπλοκων συστημάτων είναι δύσκολη - Η αντιπροσώπευση παράλληλων ενεργειών δεν ικανοποιείται - Η αντιπροσώπευση συνθηκών δεν ικανοποιείται - H αντιπροσώπευση ασύγχρονων μηνυμάτων δεν ικανοποιείται 34

35 4.4 Προτάσεις για λύσεις Πιο κάτω θα δούμε τις προτάσεις που έκανα για βελτίωση του model-checking με ακολουθιακά διαγράμματα. Τα πιο κάτω διαγράμματα παρήχθηκαν από ένα πρόγραμμα της Java. Το πρόγραμμα παίρνει ως είσοδο κάποιο φοιτητή που θέλει να ενταχθεί σε κάποιο μάθημα, αλλά μπορεί να ενταχθεί υπό την προϋπόθεση ότι έχει παρακολουθήσει με επιτυχία ένα σεμινάριο πάνω σε εκείνο το μάθημα. Αν δεν έχει παρακολουθήσει το σεμινάριο εκείνο ή το παρακολούθησε αλλά όχι με επιτυχία (στο τέλος του σεμιναρίου είχαν γίνει ερωτήσεις για το θέμα), τότε πρέπει να δούμε αν έχει παρακολουθήσει κάποιο άλλο σεμινάριο με επιτυχία το οποίο να είναι σχετικό με το μάθημα εκείνο. Όπως είπαμε πιο πάνω η αντιπροσώπευση παράλληλων ενεργειών δεν ικανοποιείται. Για παράδειγμα, θέλουμε να παίρνουμε ταυτόχρονα (με τη χρήση multi-threads για παράδειγμα στην Java) το αν παρακολούθησε ο φοιτητής το σεμινάριο με επιτυχία και το αν παρακολούθησε άλλα σεμινάρια σχετικά με το μάθημα με επιτυχία γιατί μπορεί ο καθηγητής να είχε περιορισμένο αριθμό θέσεων στο μάθημά του οπότε να ήθελε να διαλέξει τους φοιτητές που έχουν παρακολουθήσει τα περισσότερα σεμινάρια. Αυτό όμως, δηλαδή οι παράλληλες διεργασίες δεν φαίνονται στο διάγραμμα. Το sequence diagram θα δείχνει και τις δύο ενέργειες αλλά την μία κάτω από την άλλη, με αποτέλεσμα να μην γνωρίζουμε ότι εκτελούνται παράλληλα αν δεν γνωρίζουμε το σύστημα. 35

36 Έχουμε για παράδειγμα αυτό το sequence diagram : Σχήμα 4.2 : Ακολουθιακό διάγραμμα Έχουμε δύο παράλληλες διεργασίες. Το getseminarhistory() και το getpreviousseminarshistory(). Στο διάγραμμα φαίνονται και οι δύο διεργασίες αλλά δεν φαίνεται ότι εκτελούνται παράλληλα. Φαίνεται ότι εκτελείται η πρώτη και μετά η δεύτερη. Αυτό όμως στον έλεγχο του μοντέλου θα δημιουργήσει προβλήματα αφού δεν ελέγχεται σωστά, άρα και ο έλεγχος του συστήματος θα είναι λανθασμένος. 36

37 Για την επίλυση αυτού του προβλήματος προτείνω δύο λύσεις : Πρώτη λύση : Οι παράλληλες διεργασίες να φαίνονται στο ίδιο μήνυμα. Αυτό φαίνεται παρακάτω : Σχήμα 4.3 : Πρώτη λύση ακολουθιακού διαγράμματος για παράλληλες διεργασίες Βάζοντας τις δύο διεργασίες στο ίδιο μήνυμα φαίνεται ότι εκτελούνται την ίδια χρονική στιγμή. Έτσι, ο ελεγκτής του μοντέλου μπορεί να καταλάβει ότι οι μέθοδοι εκτελούνται ταυτόχρονα και τα αποτελέσματά τους επιστρέφονται ταυτόχρονα. Αυτή η λύση έχει ένα μειονέκτημα. Αν οι διεργασίες που εκτελούνται παράλληλα δεν πήγαιναν στην ίδια κλάση, στην περίπτωσή μας στην κλάση Student, τότε δεν θα μπορούσαμε να το απεικονίσουμε. Δηλαδή, αν η getseminarhistory() ήταν στην κλάση Student και η getpreviousseminarhistory() ήταν στην κλάση Seminar τότε το τόξο δεν θα μπορούσε να δείχνει και στις δύο. Άρα αυτή η λύση είναι προβληματική. Γι αυτό είναι προτιμότερη η δεύτερη λύση που φαίνεται πιο κάτω. 37

38 Δεύτερη λύση : Η δεύτερη λύση προκύπτει από κάτι που βρήκα ότι υποστηρίζει η UML για τη συνθήκη while. Βάζοντας το σύμβολο { εκεί που υπάρχει η ταυτοχρονία και γράφοντας την λέξη parallel δίπλα, καταλαβαίνουμε ότι οι διεργασίες εκτελούνται παράλληλα και ότι τα αποτελέσματά τους επιστρέφονται παράλληλα, δηλαδή την ίδια χρονική στιγμή. Σχήμα 4.4 : Δεύτερη λύση ακολουθιακού διαγράμματος για παράλληλες διεργασίες Εδώ παρατηρούμε ότι δεν υπάρχει το πρόβλημα που υπήρχε πιο πάνω, δηλαδή αν οι δύο μέθοδοι βρίσκονταν σε διαφορετικές κλάσεις, θα μπορούσε και πάλι να απεικονιστεί με τον ίδιο τρόπο. Θα μπορούσαμε να έχουμε επίσης και περισσότερες από δύο ταυτόχρονες διεργασίες και πολύ απλά θα μεγάλωνε η αγκύλη ώστε να καλύπτει όλες τις παράλληλες διεργασίες. 38

39 Επίσης, όπως είπαμε πιο πάνω έχουμε και το πρόβλημα του ότι οι συνθήκη if-else δεν αντιπροσωπεύεται. Γι αυτό το σκοπό προτείνω την πιο κάτω λύση. Αν έχουμε για παράδειγμα : if (student is eligible) { getseminarhistory(); } else{ getpreviousseminarshistory(); } Σχήμα 4.5 : Λύση ακολουθιακού διαγράμματος για τη συνθήκη if-else Αν για παράδειγμα ο καθηγητής του μαθήματος είχε σαν κριτήριο στο να αποδεχτεί στο μάθημά του κάποιον φοιτητή το αν παρακολούθησε το σεμινάριο με επιτυχία και αν όχι, ήθελε να δει ποια σεμινάρια παρακολούθησε με επιτυχία ώστε αν υπήρχε κάποιο 39

40 σχετικό με το μάθημα να τον επέλεγε τότε θα είχαμε τον πιο πάνω κώδικα. Και πάλι στο ακολουθιακό διάγραμμα θα φαίνονταν οι διεργασίες σαν να εκτελούνται η μία μετά την άλλη. Όμως αυτό θα αποτελούσε πρόβλημα γιατί δεν εκτελούνται και οι δύο διεργασίες αλλά εκτελείται είτε η μία είτε η άλλη. Και ανάλογα επιστρέφεται το κατάλληλο αποτέλεσμα. Αν φαίνονταν η μία μετά την άλλη τότε ο ελεγκτής του μοντέλου θα νόμιζε πως εκτελούνται και οι δύο διεργασίες και κατά συνέπεια θα έλεγχε λάθος το σύστημα, αφού η αναπαράστασή του είναι λανθασμένη. Για να λυθεί αυτό το πρόβλημα μπορούμε απλά πάνω στο μήνυμα να βάλουμε τη συνθήκη. Στο δικό μας παράδειγμα αν βάλουμε τη συνθήκη if student is eligible, τότε αν ισχύει η πρόταση αυτή θα εκτελεστεί η πρώτη διεργασία δηλαδή η getseminarhistory() και θα επιστραφεί το αποτέλεσμα της διεργασίας αυτής, δηλαδή το seminarhistory. Αν όμως δεν ισχύει η πρόταση αυτή, τότε δεν θα εκτελεστεί η πρώτη διεργασία αλλά μόνο η δεύτερη, δηλαδή η getpreviousseminarhistory() και θα επιστραφεί το αποτέλεσμα αυτής της διεργασίας, δηλαδή το previousseminarhistory(). 40

41 Επίσης για να φαίνεται και πιο διακριτά θα μπορούσε το διάγραμμα να γίνει : Σχήμα 4.6 : Βελτίωση λύσης ακολουθιακού διαγράμματος για τη συνθήκη if-else Χρησιμοποιούμε και πάλι το σύμβολο } για να δείξουμε ποιες διεργασίες βρίσκονται στην ίδια συνθήκη. Δίπλα από την αγκύλη βάζουμε τον όρο conditional για να δείξουμε ότι οι δύο διεργασίες υπόκεινται σε συνθήκη. Σε περίπτωση που είχαμε κι άλλες συνθήκες θα μπορούσαμε να βάλουμε κι άλλες αγκύλες. Σε άλλη περίπτωση που έχουμε τρεις προτάσεις σε μία συνθήκη (π.χ. if - else if - else), μπορούμε να βάλουμε και τις τρεις στην αγκύλη με την πρόταση της κάθε μίας στο μήνυμα. 41

42 Τέλος, όπως αναφέραμε δεν υποστηρίζονται τα ασύγχρονα μηνύματα (asynchronous messages). Ασύγχρονα μηνύματα έχουμε όταν για παράδειγμα στην Java εκτελεστεί μία μέθοδος και επειδή θέλει ώρα να εκτελεστεί μπορούν να εκτελούνται άλλες μέθοδοι μέχρι να επιστρέψει η πρώτη μέθοδος το απότελεσμα. Στο δικό μας παράδειγμα, αν θέλαμε να πάρουμε τις πληροφορίες του φοιτητή αλλά θέλει ώρα για να επιστραφούν, για να μην περιμένουμε θα θέλαμε να εκτελεί άλλες διεργασίες που δεν χρειάζονται εκείνες τις πληροφορίες μέχρι να επιστραφεί το αποτέλεσμα. Έχουμε δηλαδή την getstudentinformation() η οποία μπορεί να θέλει να ανατρέξει μια τεράστια βάση δεδομένων λόγω του ότι οι φοιτητές είναι πολλοί κι ως επακόλουθο, θα αργήσει να μας δώσει το αποτέλεσμα. Εμείς θέλουμε να εκτελεστούν οι επόμενες μέθοδοι και να μην χρειάζεται να περιμένουμε το αποτέλεσμα, γιατί έτσι ο χρόνος εκτέλεσης θα είναι μικρότερος και δεν θα χρειάζεται να περιμένει πολλή ώρα ο χρήστης. Οπότε, μέχρι να επιστραφεί το studentinformation (το αποτέλεσμα δηλαδή της getstudentinformation()) θέλουμε να εκτελέσει την getseminarhistory() και την getpreviousseminarhistory(). Αυτό όμως μπορεί να γίνει μόνο αν το αποτέλεσμα της getstudentinformation() δεν χρειάζεται για να εκτελεστούν οι άλλες δύο μέθοδοι. Αν χρειαζόταν, τότε θα έπρεπε να περιμένουμε να επιστραφεί το αποτέλεσμα πριν την εκτέλεση των δύο μεθόδων. 42

43 Η δική μου πρόταση είναι η εξής : Σχήμα 4.7 : Λύση ακολουθιακού διαγράμματος για ασύγχρονα μηνύματα Παρατηρούμε ότι το αποτέλεσμα της getstudentinformation(), δηλαδή το studentinformation, επιστρέφεται μετά την εκτέλεση της getseminarhistory() και της getpreviousseminarhistory() και μετά την επιστροφή των αποτελεσμάτων τους. Θα μπορούσε το αποτέλεσμα να επιστρέφεται και πιο πριν αν ήταν έτοιμο για να επιστραφεί. Όμως δεν φαίνεται διακριτά ότι το studentinformation είναι το αποτέλεσμα της getstudentinformation() κι έτσι μπορεί να ελεγχόταν λάθος το μοντέλο και κατά συνέπεια το σύστημα, αφού για παράδειγμα μπορεί να χρειάζονταν οι πληροφορίες του πρώτου αποτελέσματος για να εκτελεστεί η getpreviousseminarhistory(). Γι αυτό το λόγο προτείνω τη δεύτερη λύση η οποία είναι επέκταση της πρώτης. 43

44 Η δεύτερη λύση είναι η εξής : Σχήμα 4.8 : Βελτίωση λύσης ακολουθιακού διαγράμματος για ασύγχρονα μηνύματα Βάζοντας την αγκύλη και το χαρακτηρισμό continue until ready, καταλαβαίνουμε δύο περισσότερα πράγματα από την πιο πάνω λύση. Πρώτο, ότι έχουμε ασύγχρονα μηνύματα άρα δεν περιμένουμε να μας επιστραφεί ένα αποτέλεσμα πριν να εκτελεστεί η επόμενη μέθοδος και δεύτερο, ότι το studentinformation είναι το αποτέλεσμα της getstudentinformation() το οποίο επιστρέφεται όταν είναι έτοιμο. Άρα αυτή η λύση είναι καλύτερη από την πρώτη αφού μας δίνει περισσότερες και πιο σαφείς πληροφορίες για την ανταλλαγή των μηνυμάτων και ως συνέπεια ελέγχεται καλύτερα το μοντέλο και αυτό που μας ενδιαφέρει, το σύστημα. 44

45 Κεφάλαιο 5 Συμπεράσματα 5.1 Συμπεράσματα Μελλοντική δουλειά Συμπεράσματα Όπως καταλάβαμε από τις πιο πάνω πληροφορίες, το model-checking είναι μια πολύ χρήσιμη τεχνική στην ανάπτυξη λογισμικού. Τα λάθη πρέπει να διορθώνονται όσο το δυνατό πιο γρήγορα γιατί όσο πιο αργά τόσο περισσότερο το κόστος για να διορθωθούν. Το μοντέλο είναι ένα στιγμιότυπο του συστήματος, γι αυτό ο έλεγχος είναι όσο καλός όσο το μοντέλο. Αν για παράδειγμα αναπαραστήσαμε λάθος το μοντέλο τότε τα αποτελέσματα του ελέγχου θα είναι λανθασμένα και ο έλεγχος δεν θα είναι σωστός. Το model-checking έχει κάποια μειονεκτήματα, όμως σε σύγκριση με το τι προσφέρει είναι ασήμαντα. Λόγω της χρησιμότητάς του, η βιομηχανία έχει δείξει μεγάλο ενδιαφέρον και έχει ως επακόλουθο να είναι ένας αναπτυσσόμενος τομέας άρα θα βρεθούν τρόποι για να εξαλειφθούν τα μειονεκτήματα αυτά. Για να επιτευχθεί το model-checking υπάρχουν πολλές τεχνικές, πολλές από αυτές όμως είναι ακόμα υπό ανάπτυξη. Ο έλεγχος με τη χρήση ακολουθιακών διαγραμμάτων είναι αρκετά αντιπροσωπευτικός, όμως πρέπει να αναπτυχθούν περισσότερο ώστε να τον υποστηρίζουν πλήρως. Βρήκαμε ότι δεν υποστηρίζουν τις συνθήκες if-else, τις παράλληλες διεργασίες και τα ασύγχρονα μηνύματα. Το να ελέγξουμε μόνο το ακολουθιακό διάγραμμα δεν είναι αρκετό. Πρέπει να βρούμε τρόπο να ελέγξουμε και τον κώδικα για να γίνουν βελτιώσεις ώστε να μειωθεί και ο χρόνος εκτέλεσης. 45

46 5.2 Μελλοντική δουλειά Όσο αφορά τα ακολουθιακά διαγράμματα για model-checking θα μπορούσαμε στη συνέχεια να βρούμε και άλλα πράγματα που υπολείπονται από αυτά και να προτείνουμε και άλλες λύσεις. Ένα καλό βήμα θα ήταν να καταφέρουμε να ενσωματώσουμε αυτές τις λύσεις στα ακολουθιακά διαγράμματα. Έπειτα, μπορούμε να συνδιάσουμε τα ακολουθιακά διαγράμματα με άλλες μέθοδους μοντελοποίησης ώστε να καλύπτει η μία μέθοδος την άλλη για να πετύχουμε καλύτερο έλεγχο. Όσο αφορά το model-checking θα μπορούσαμε να εξετάσουμε κι άλλες μέθοδους για να το πετύχουμε και να τις συγκρίνουμε. Επίσης, με το να εξετάσουμε και άλλες μεθόδους μπορούμε να βρούμε ποια μέθοδος αρμόζει σε κάθε περίπτωση καλύτερα από τις άλλες. Θα ήταν καλό αν συνδιάζαμε διάφορες μεθόδους μεταξύ τους, έτσι ώστε να συμπληρώνει η μία την άλλη και να μοντελοποιείται το σύστημα όσο καλύτερα γίνεται ώστε να ελέγχεται και το μοντέλο και κατά συνέπεια το σύστημα καλύτερα. 46

47 Βιβλιογραφία [1] Christel Baier and Joost-Pieter Katoen : Principles of model-checking [2] Anna Filippou : Σημειώσεις μαθήματος ΕΠΛ664 [3] Gerard J. Holzmann : Software Analysis and Model Checking [4] Harry Robinson : Model-based testing [5] James A. Whittaker and Ibrahim K. El-Far : Model-based software testing 47

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα

Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα Ελεγχος, Αξιοπιστία και Διασφάλιση Ποιότητας Λογισµικού Πολυπλοκότητα Τµήµα Διοίκησης Επιχειρήσεων Τει Δυτικής Ελλάδας Μεσολόγγι Δρ. Α. Στεφανή Διάλεξη 5 2 Εγκυροποίηση Λογισµικού Εγκυροποίηση Λογισµικού

Διαβάστε περισσότερα

ΕΠΛ664 ΑΝΑΛΥΣΗ ΚΑΙ ΕΠΑΛΗΘΕΥΣΗ ΣΥΣΤΗΜΑΤΩΝ

ΕΠΛ664 ΑΝΑΛΥΣΗ ΚΑΙ ΕΠΑΛΗΘΕΥΣΗ ΣΥΣΤΗΜΑΤΩΝ ΕΠΛ664 ΑΝΑΛΥΣΗ ΚΑΙ ΕΠΑΛΗΘΕΥΣΗ ΣΥΣΤΗΜΑΤΩΝ Περιγραφή του μαθήματος Στόχοι του μαθήματος Αξιολόγηση Βιβλιογραφία ΕΠΛ 664 Ανάλυση και Επαλήθευση Συστημάτων 1-1 Διδασκαλία Διαλέξεις: Δευτέρα και Πέμπτη, 15:00-16:30

Διαβάστε περισσότερα

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων Διαγράμματα UML στην Ανάλυση Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων περιεχόμενα παρουσίασης Διαγράμματα επικοινωνίας Διαγράμματα ακολουθίας Διαγράμματα

Διαβάστε περισσότερα

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Έλεγχος Λογισμικού Προβλήματα Λογισμικού 2 Μια ματιά στα παλιά: Σφάλμα: Ελάττωμα: Ανθρώπινο λάθος (σε προδιαγραφές, τεκμηρίωση κλπ) «Κωδικοποίηση του σφάλματος» στο

Διαβάστε περισσότερα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

Διαβάστε περισσότερα

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES)

Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Μάθημα 3 ο ΔΙΕΡΓΑΣΙΕΣ (PROCESSES) Εισαγωγή H κεντρική μονάδα επεξεργασίας (ΚΜΕ) και η κύρια μνήμη αποτελούν τα βασικά δομικά στοιχεία ενός υπολογιστικού συστήματος. Η πρώτη εκτελεί εντολές χειρισμού δεδομένων

Διαβάστε περισσότερα

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

Διαβάστε περισσότερα

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

Διαβάστε περισσότερα

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος. Αλγόριθμος Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος. Εντολές ή οδηγίες ονομάζονται τα βήματα που αποτελούν έναν αλγόριθμο.

Διαβάστε περισσότερα

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης

Συγγραφή κώδικα, δοκιμασία, επαλήθευση. Γιάννης Σμαραγδάκης Συγγραφή κώδικα, δοκιμασία, επαλήθευση Γιάννης Σμαραγδάκης Προδιαγραφή απαιτήσεων Σχεδιασμός συνεπείς σχέσεις Υψηλό επίπεδο συνεπείς σχέσεις Χαμηλό επίπεδο συνεπείς σχέσεις Πλάνο δοκιμών Κώδικας Συγγραφή

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

Διαβάστε περισσότερα

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο 09 Η γλώσσα UML I Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Εαρινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Unified Modeling Language

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ ΥΠΟΥΡΓΕΙΟ ΕΘΝΙΚΗΣ ΠΑΙΔΕΙΑΣ ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ ΠΑΙΔΑΓΩΓΙΚΟ ΙΝΣΤΙΤΟΥΤΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ Κ Υ Κ Λ Ο Υ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Κ Α Ι Υ Π Η Ρ Ε Σ Ι Ω Ν Τ Ε Χ Ν Ο Λ Ο Γ Ι Κ Η

Διαβάστε περισσότερα

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού

ΚΕΦΑΛΑΙΑ XIII, XIV. Εκσφαλμάτωση προγράμματος - Κύκλος Ζωής Λογισμικού ΚΕΦΑΛΑΙΑ XIII, XIV Ένας προγραμματιστής ανεξάρτητα από το πόσο ικανός είναι, όταν δημιουργεί ένα πρόγραμμα, είναι φυσικό να κάνει ορισμένα λάθη. Σε ένα πρόγραμμα είναι δυνατό να παρουσιαστούν διαφορετικής

Διαβάστε περισσότερα

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας Διαγράμματα Αλληλεπίδρασης Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας 1 Διαγράμματα αλληλεπίδρασης Απεικονίζουν την αλληλεπίδραση των αντικειμένων μέσω μηνυμάτων Η ανάθεση αρμοδιοτήτων περιλαμβάνει

Διαβάστε περισσότερα

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες.

Μοντέλα. χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες. Γλώσσες Περιγραφής Μοντέλα Ένα µοντέλο ενός κυκλώµατος είναι µία αναπαράσταση που παρουσιάζει χαρακτηριστικά χωρίς να συνοδεύεται από λεπτοµέρειες. Τα τυπικά µοντέλα έχουν καλά ορισµένη σύνταξη. Τα αυτόµατα

Διαβάστε περισσότερα

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη)

Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) Προβλήματα ταυτόχρονης εκτέλεσης (για νήματα με κοινή μνήμη) ΙΙΙ 1 lalis@inf.uth.gr Ταυτόχρονη εκτέλεση Ο προγραμματιστής δεν ελέγχει (άμεσα) την εκτέλεση/εναλλαγή των νημάτων Δεν γνωρίζει πότε θα αρχίσει

Διαβάστε περισσότερα

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση

Διαδικασίες παραγωγής λογισμικού. Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Διαδικασίες παραγωγής λογισμικού Περιεχόμενα Παρουσίαση μοντέλων διεργασίας ανάπτυξης λογισμικού Περιγραφή τριών γενικών μοντέλων διεργασίας ανάπτυξης λογισμικού Γενική περιγραφή των διαδικασιών που περιλαμβάνονται

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος Χιωτίδης Γεώργιος Τμήμα Λογιστικής και Χρηματοοικονομικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

Διαβάστε περισσότερα

Α. Ερωτήσεις Ανάπτυξης

Α. Ερωτήσεις Ανάπτυξης οµηµένος Προγραµµατισµός-Κεφάλαιο 7 Σελίδα 1 α ό 10 ΕΝΟΤΗΤΑ ΙΙΙ (ΠΡΟΓΡΑΜΜΑΤΑ) ΚΕΦΑΛΑΙΟ 7: Είδη, Τεχνικές και Περιβάλλοντα Προγραµµατισµού Α. Ερωτήσεις Ανάπτυξης 1. Τι ονοµάζουµε γλώσσα προγραµµατισµού;

Διαβάστε περισσότερα

Εισαγωγή στη Σχεδίαση Λογισμικού

Εισαγωγή στη Σχεδίαση Λογισμικού Εισαγωγή στη Σχεδίαση Λογισμικού περιεχόμενα παρουσίασης Τι είναι η σχεδίαση λογισμικού Έννοιες σχεδίασης Δραστηριότητες σχεδίασης Σχεδίαση και υποδείγματα ανάπτυξης λογισμικού σχεδίαση Η σχεδίαση του

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

Διαβάστε περισσότερα

Κωδικοποίηση και Έλεγχος Ορθότητας

Κωδικοποίηση και Έλεγχος Ορθότητας Κωδικοποίηση και Έλεγχος Ορθότητας περιεχόμενα περουσίασης Κωδικοποίηση Πρότυπα και διαδικασίες κωδικοποίησης Τεκμηρίωση Διαχείριση εκδόσεων Έλεγχος ορθότητας λογισμικού κωδικοποίηση διαχείριση εκδόσεων

Διαβάστε περισσότερα

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ 1 ο ΓΥΜΝΑΣΙΟ ΘΕΡΜΗΣ Τάξη: Γ Μάθημα: Πληροφορική Εξεταστέα ύλη: Παρ11.1 & 11.2 Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών που περιγράφει τη διαδικασία

Διαβάστε περισσότερα

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams

ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams ΗΥ562 Προχωρημένα Θέματα Βάσεων Δεδομένων Efficient Query Evaluation over Temporally Correlated Probabilistic Streams Αλέκα Σεληνιωτάκη Ηράκλειο, 26/06/12 aseliniotaki@csd.uoc.gr ΑΜ: 703 1. Περίληψη Συνεισφοράς

Διαβάστε περισσότερα

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο Εισαγωγικές Έννοιες ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

Διαβάστε περισσότερα

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού

Πληροφοριακά Συστήματα Διοίκησης. Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού Πληροφοριακά Συστήματα Διοίκησης Επισκόπηση μοντέλων λήψης αποφάσεων Τεχνικές Μαθηματικού Προγραμματισμού Σημασία μοντέλου Το μοντέλο δημιουργεί μια λογική δομή μέσω της οποίας αποκτούμε μια χρήσιμη άποψη

Διαβάστε περισσότερα

Αυτοματοποιημένη Επαλήθευση

Αυτοματοποιημένη Επαλήθευση Αυτοματοποιημένη Επαλήθευση Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Έλεγχος Μοντέλου Αλγόριθμοι γράφων Αλγόριθμοι αυτομάτων Αυτόματα ως προδιαγραφές ΕΠΛ 664 Ανάλυση και Επαλήθευση Συστημάτων 4-1

Διαβάστε περισσότερα

Περιεχόμενο του μαθήματος

Περιεχόμενο του μαθήματος ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Απαιτήσεις Λογισμικού Περιπτώσεις χρήσης Δρ Βαγγελιώ Καβακλή Τμήμα Πολιτισμικής Τεχνολογίας και Επικοινωνίας Πανεπιστήμιο Αιγαίου Εαρινό Εξάμηνο 2012-2013 1 Περιεχόμενο του μαθήματος

Διαβάστε περισσότερα

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ

ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ ΟΜΑΔΑ Ε ΓΕΩΡΓΙΟΥ ΦΩΤΕΙΝΗ ΗΛΙΟΥΔΗ ΑΦΡΟΔΙΤΗ ΜΕΤΑΛΛΙΔΟΥ ΧΡΥΣΗ ΝΙΖΑΜΗΣ ΑΛΕΞΑΝΔΡΟΣ ΤΖΗΚΑΛΑΓΙΑΣ ΑΝΔΡΕΑΣ ΤΡΙΓΚΑΣ ΑΓΓΕΛΟΣ Η ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΣΤΟ ΛΥΚΕΙΟ Εισαγωγή Η μεγάλη ανάπτυξη και ο ρόλος που

Διαβάστε περισσότερα

09 Η γλώσσα UML II. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

09 Η γλώσσα UML II. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο 09 Η γλώσσα UML II Τεχνολογία Λογισμικού Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Χειμερινό εξάμηνο 2017 18 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Μοντελοποίηση συμπεριφοράς

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗ, Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗ, Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΠΛΗΡΟΦΟΡΙΚΗ, Γ ΤΑΞΗ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ Σκοπός του μαθήματος είναι οι μαθητές και οι μαθήτριες να αναπτύξουν ικανότητες αναλυτικής και συνθετικής σκέψης, ώστε να επιλύουν προβλήματα, να σχεδιάζουν

Διαβάστε περισσότερα

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ 3 ο ΕΞΑΜΗΝΟ Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 6 ο Εργαστήριο - ΕΠΙΜΕΛΕΙΑ ΜΑΘΗΜΑΤΟΣ: Πρέντζα Ανδριάννα ΕΠΙΜΕΛΕΙΑ ΕΡΓΑΣΤΗΡΙΟΥ: Στουγιάννου

Διαβάστε περισσότερα

Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής

Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής Κεφάλαιο 6: Προσομοίωση ενός συστήματος αναμονής Τεχνικές Εκτίμησης Υπολογιστικών Συστημάτων Γιάννης Γαροφαλάκης Αν. Καθηγητής ιατύπωση του προβλήματος (1) Τα συστήματα αναμονής (queueing systems), βρίσκονται

Διαβάστε περισσότερα

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

Διαβάστε περισσότερα

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Δομές Δεδομένων Ενότητα 1 - Εισαγωγή Χρήστος Γκουμόπουλος Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αντικείμενο μαθήματος Δομές Δεδομένων (ΔΔ): Στην επιστήμη υπολογιστών

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΠΡΟΠΤΥΧΙΑΚΟ ΠΡΟΓΡΑΜΜΑ ΣΠΟΥΔΩΝ ΜΑΘΗΜΑ: ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ ΔΙΑΔΙΚΑΣΙΕΣ ΠΑΡΑΓΩΓΗΣ ΛΟΓΙΣΜΙΚΟΥ Διδάσκων: Γ. Χαραλαμπίδης,

Διαβάστε περισσότερα

Ασφαλή Συστήματα Μέθοδοι ελέγχου και εξακρίβωσης ορθής λειτουργίας

Ασφαλή Συστήματα Μέθοδοι ελέγχου και εξακρίβωσης ορθής λειτουργίας Λειτουργικά Συστήματα Πραγματικού Χρόνου 2006-07 Ασφαλή Συστήματα Μέθοδοι ελέγχου και εξακρίβωσης ορθής λειτουργίας Μ.Στεφανιδάκης Ενσωματωμένα Συστήματα: Απαιτήσεις Αξιοπιστία (reliability) Χρηστικότητα

Διαβάστε περισσότερα

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

Διαβάστε περισσότερα

Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Τι θα δούμε σήμερα Τι είναι ένα Κατανεμημένο Σύστημα; Επικοινωνία, Χρονισμός, Σφάλματα Μοντέλο Ανταλλαγής Μηνυμάτων 1

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα Ι

Κατανεμημένα Συστήματα Ι Συναίνεση χωρίς την παρουσία σφαλμάτων Κατανεμημένα Συστήματα Ι 4η Διάλεξη 27 Οκτωβρίου 2016 Παναγιώτα Παναγοπούλου Κατανεμημένα Συστήματα Ι 4η Διάλεξη 1 Συναίνεση χωρίς την παρουσία σφαλμάτων Προηγούμενη

Διαβάστε περισσότερα

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος Θέμα 1 Δίνονται τα παρακάτω τμήματα αλγορίθμου Α. βαλίτσα Αληθής εισιτήριο Αληθής ταξίδι βαλίτσα και εισιτήριο Τι τιμή θα έχει η λογική μεταβλητή

Διαβάστε περισσότερα

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος

Κεφ. 1: Εισαγωγή στην έννοια του Αλγορίθμου και στον Προγραμματισμό. Η έννοια του προβλήματος Η έννοια του προβλήματος 1. Αναφέρετε μερικά από τα προβλήματα που συναντάτε στην καθημερινότητά σας. Απλά προβλήματα Ποιο δρόμο θα ακολουθήσω για να πάω στο σχολείο; Πως θα οργανώσω μια εκδρομή; Πως θα

Διαβάστε περισσότερα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας ΕΡΓΑΣΙΑ 2 Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας Εισαγωγή Ημερομηνία Ανάρτησης: 16/02/2017 Ημερομηνία Παράδοσης: 06/03/2017,

Διαβάστε περισσότερα

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής: Αυτό που πρέπει να θυμόμαστε, για να μη στεναχωριόμαστε, είναι πως τόσο στις εξισώσεις, όσο και στις ανισώσεις 1ου βαθμού, που θέλουμε να λύσουμε, ακολουθούμε ακριβώς τα ίδια βήματα! Εκεί που πρεπει να

Διαβάστε περισσότερα

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ Γ Λυκείου Κατεύθυνσης Mike Trimos Βήματα Ανάπτυξης ενός Συστήματος 1.Ορισμός και κατανόηση του προβλήματος 2.Ανάλυση του προβλήματος 3.Σχεδιασμός Αλγοριθμικής Λύσης 4.Κωδικοποίηση 5.Διόρθωση

Διαβάστε περισσότερα

3. Προσομοίωση ενός Συστήματος Αναμονής.

3. Προσομοίωση ενός Συστήματος Αναμονής. 3. Προσομοίωση ενός Συστήματος Αναμονής. 3.1. Διατύπωση του Προβλήματος. Τα συστήματα αναμονής (queueing systems), βρίσκονται πίσω από τα περισσότερα μοντέλα μελέτης της απόδοσης υπολογιστικών συστημάτων,

Διαβάστε περισσότερα

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

Διαβάστε περισσότερα

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

Δοκιμή και Αποσφαλμάτωση Testing and Debugging Δοκιμή και Αποσφαλμάτωση Testing and Debugging XVI-1 Ο μεταγλωττιστής εντοπίζει τα συντακτικά λάθη ενός προγράμματος. Δεν είναι όμως σε θέση να εντοπίσει λάθη στη λογική του προγράμματος. δεδομένα πρόγραμμα

Διαβάστε περισσότερα

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δρ. Κόννης Γιώργος Πανεπιστήμιο Κύπρου - Τμήμα Πληροφορικής Προγραμματισμός Στόχοι 1 Να περιγράψουμε τις έννοιες του Υπολογιστικού Προβλήματος και του Προγράμματος/Αλγορίθμου

Διαβάστε περισσότερα

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Οι εντολές ελέγχου της ροής ενός προγράμματος. Κεφάλαιο ΙΙI: Οι εντολές ελέγχου της ροής ενός προγράμματος 31 Εντολές ελέγχου της ροής Στο παρόν κεφάλαιο ασχολούμαστε με την σύνταξη των εντολών της C οι οποίες εισάγουν λογική και ελέγχουν την ροή εκτέλεσης

Διαβάστε περισσότερα

Υπολογιστικό Πρόβληµα

Υπολογιστικό Πρόβληµα Υπολογιστικό Πρόβληµα Μετασχηµατισµός δεδοµένων εισόδου σε δεδοµένα εξόδου. Δοµή δεδοµένων εισόδου (έγκυρο στιγµιότυπο). Δοµή και ιδιότητες δεδοµένων εξόδου (απάντηση ή λύση). Τυπικά: διµελής σχέση στις

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Δοκιμή Έλεγχος Αλγορίθμου Για να

Διαβάστε περισσότερα

ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ

ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ ΚΥΚΛΟΣ ΖΩΗΣ ΛΟΓΙΣΜΙΚΟΥ και ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ ΔΕΔΟΜΕΝΩΝ Ο κύκλος ζωής λογισµικού (συνοπτικά) Η παραδοσιακή φάση ανάπτυξης του κύκλου ζωής λογισµικού Φάση καθορισµού απαιτήσεων (1/2) ΤΙ πρέπει να κάνει το

Διαβάστε περισσότερα

Επαλήθευση μοντέλου. (model Verification) Προσομοίωση Βιομηχανικής Παραγωγής & Επιχειρήσεων

Επαλήθευση μοντέλου. (model Verification) Προσομοίωση Βιομηχανικής Παραγωγής & Επιχειρήσεων Επαλήθευση μοντέλου (model Verification) Προσομοίωση Βιομηχανικής Παραγωγής & Επιχειρήσεων ΚΕΦ. 5 Μοντελοποίηση Τυχαίοι Αριθμοί Διαγράμματα Επαλήθευση Ανάλυση Αποτελεσμάτων Επαλήθευση, Επικύρωση και Αξιοπιστία

Διαβάστε περισσότερα

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

Διαβάστε περισσότερα

Έλεγχος υποθέσεων και διαστήματα εμπιστοσύνης

Έλεγχος υποθέσεων και διαστήματα εμπιστοσύνης 1 Έλεγχος υποθέσεων και διαστήματα εμπιστοσύνης Όπως γνωρίζουμε από προηγούμενα κεφάλαια, στόχος των περισσότερων στατιστικών αναλύσεων, είναι η έγκυρη γενίκευση των συμπερασμάτων, που προέρχονται από

Διαβάστε περισσότερα

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Τεχνολογία Λογισμικού Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

Διαβάστε περισσότερα

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

Διαβάστε περισσότερα

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα Περιεχόμενα Πρόλογος... 9 Κεφάλαιο 1: Δομή και λειτουργία του υπολογιστή... 11 Κεφάλαιο 2: Χρήση Λ.Σ. DOS και Windows... 19 Κεφάλαιο 3: Δίκτυα Υπολογιστών και Επικοινωνίας... 27 Κεφάλαιο 4: Unix... 37

Διαβάστε περισσότερα

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα

ΕΝΤΟΛΕΣ. 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα 7.1 Εισαγωγικό μέρος με επεξήγηση των Εντολών : Επεξήγηση των εντολών που θα ΕΝΤΟΛΕΣ χρησιμοποιηθούν παρακάτω στα παραδείγματα Βάζοντας την εντολή αυτή σε οποιοδήποτε αντικείμενο μπορούμε να αλλάζουμε

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

Διαβάστε περισσότερα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι Λειτουργικά Συστήματα 1 Λογισμικό του Υπολογιστή Για να λειτουργήσει ένας Η/Υ εκτός από το υλικό του, είναι απαραίτητο και το λογισμικό Το σύνολο των προγραμμάτων που συντονίζουν τις λειτουργίες του υλικού

Διαβάστε περισσότερα

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4

Διαδικασίες παραγωγής λογισμικού. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 4 Διαδικασίες παραγωγής λογισμικού Στόχοι Παρουσίαση μοντέλων παραγωγής λογισμικού Περιγραφή τριών γενικών μοντέλων παραγωγής λογισμικού και πότε μπορούν να χρησιμοποιούνται Γενική περιγραφή των μοντέλων

Διαβάστε περισσότερα

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4) Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4) Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Η διαδικαστική γλώσσα προγραμματισμού WHILE Τριάδες Hoare Μερική και Ολική Ορθότητα Προγραμμάτων Κανόνες

Διαβάστε περισσότερα

Βασικές Δομές μοντέλων Petri Nets. C.A. Petri

Βασικές Δομές μοντέλων Petri Nets. C.A. Petri Βασικές Δομές μοντέλων Petri Nets C.A. Petri - 1962 Γιατί χρήση Petri model? Φυσικό Πρόβλημα! Μοντέλο Petri abstract Software Simulation ανάλυση σε μοντέλο Petri Net Βασικές δομές μοντέλων Petri Διαδοχική

Διαβάστε περισσότερα

Ανάλυση Δεδομένων με χρήση του Στατιστικού Πακέτου R

Ανάλυση Δεδομένων με χρήση του Στατιστικού Πακέτου R Ανάλυση Δεδομένων με χρήση του Στατιστικού Πακέτου R, Επίκουρος Καθηγητής, Τομέας Μαθηματικών, Σχολή Εφαρμοσμένων Μαθηματικών και Φυσικών Επιστημών, Εθνικό Μετσόβιο Πολυτεχνείο. Περιεχόμενα Εισαγωγή στο

Διαβάστε περισσότερα

Κύρια σημεία. Η έννοια του μοντέλου. Έρευνα στην εφαρμοσμένη Στατιστική. ΈρευναστηΜαθηματικήΣτατιστική. Αντικείμενο της Μαθηματικής Στατιστικής

Κύρια σημεία. Η έννοια του μοντέλου. Έρευνα στην εφαρμοσμένη Στατιστική. ΈρευναστηΜαθηματικήΣτατιστική. Αντικείμενο της Μαθηματικής Στατιστικής Κύρια σημεία Ερευνητική Μεθοδολογία και Μαθηματική Στατιστική Απόστολος Μπουρνέτας Τμήμα Μαθηματικών ΕΚΠΑ Αναζήτηση ερευνητικού θέματος Εισαγωγή στην έρευνα Ολοκλήρωση ερευνητικής εργασίας Ο ρόλος των

Διαβάστε περισσότερα

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης Περιπτώσεις Χρήσης περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης περιπτώσεις χρήσης Τι θα κάνει το λογισμικό για κάποιον

Διαβάστε περισσότερα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική Θεσσαλονίκη, Σεπτέμβριος 2013 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1

Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 Διεργασίες (μοντέλο μνήμης & εκτέλεσης) Προγραμματισμός II 1 lalis@inf.uth.gr Πρόγραμμα και εκτέλεση προγράμματος Ο εκτελέσιμος κώδικας αποθηκεύεται σε ένα αρχείο Το αρχείο είναι μια «παθητική» οντότητα

Διαβάστε περισσότερα

Πληροφορική 2. Τεχνολογία Λογισμικού

Πληροφορική 2. Τεχνολογία Λογισμικού Πληροφορική 2 Τεχνολογία Λογισμικού 1 2 Κρίση Λογισμικού (1968) Στην δεκαετία του 1970 παρατηρήθηκαν μαζικά: Μεγάλες καθυστερήσεις στην ολοκλήρωση κατασκευής λογισμικών Μεγαλύτερα κόστη ανάπτυξης λογισμικού

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 1: Εισαγωγή Ποιος είμαι εγώ! 2 Ναύπλιο, 4/1976-9/1993 Πάτρα, 9/1993-6/2004 Williamsburg, VA, USA, 7/2004-7/2006 Μυτιλήνη, 10/2006-2/2007 Βόλος, 2/2007 - H Υπεύθυνη των

Διαβάστε περισσότερα

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

Διαβάστε περισσότερα

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

Διαβάστε περισσότερα

Κεφάλαιο 9. Έλεγχοι υποθέσεων

Κεφάλαιο 9. Έλεγχοι υποθέσεων Κεφάλαιο 9 Έλεγχοι υποθέσεων 9.1 Εισαγωγή Όταν παίρνουμε ένα ή περισσότερα τυχαία δείγμα από κανονικούς πληθυσμούς έχουμε τη δυνατότητα να υπολογίζουμε στατιστικά, όπως μέσους όρους, δειγματικές διασπορές

Διαβάστε περισσότερα

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

Διαβάστε περισσότερα

Τεχνολογία λογισμικού στην πράξη

Τεχνολογία λογισμικού στην πράξη Τεχνολογία λογισμικού στην πράξη Μοντέλα και μέθοδοι τεχνολογίας λογισμικού Διομήδης Σπινέλλης Τμήμα Διοικητικής Επιστήμης και Τεχνολογίας Οικονομικό Πανεπιστήμιο Αθηνών dds@aueb.gr http://www.dmst.aueb.gr/dds

Διαβάστε περισσότερα

Ερωτήσεις Ασκήσεις στη Διαλογή Έργου και Επιλογή

Ερωτήσεις Ασκήσεις στη Διαλογή Έργου και Επιλογή ΕΘΝΙΚΟΝ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟΝ ΠΑΝΕΠΙΣΤΗΜΙΟΝ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΜΕΤΑΠΤΥΧΙΑΚΟ ΔΙΠΛΩΜΑ ΕΙΔΙΚΕΥΣΗΣ ΡΑΔΙΟΗΛΕΚΤΡΟΛΟΓΙΑΣ Ερωτήσεις Ασκήσεις στη Διαλογή Έργου και Επιλογή Περπινιάς Νικόλαος - 2008117

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ Τελικές εξετάσεις 3 Ιανουαρίου 27 Διάρκεια εξέτασης: 3 ώρες (2:-5:) ΘΕΜΑ ο

Διαβάστε περισσότερα

ΘΕΜΑ 1ο Α. 1-6 Σωστό Λάθος Μονάδες 12 Β. Στήλης Στήλης Β Στήλης Α Στήλης Β).

ΘΕΜΑ 1ο Α. 1-6 Σωστό Λάθος Μονάδες 12 Β. Στήλης Στήλης Β Στήλης Α Στήλης Β). ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 3 ΙΟΥΝΙΟΥ 2003 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) ΘΕΜΑ

Διαβάστε περισσότερα

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

Διαβάστε περισσότερα

Περιγραφή του εκπαιδευτικού/ μαθησιακού υλικού (Teaching plan)

Περιγραφή του εκπαιδευτικού/ μαθησιακού υλικού (Teaching plan) On-the-fly feedback, Upper Secondary Περιγραφή του εκπαιδευτικού/ μαθησιακού υλικού (Teaching plan) Τάξη: Β Λυκείου Διάρκεια ενότητας Μάθημα: Φυσική Θέμα: Ταλαντώσεις (αριθμός Χ διάρκεια μαθήματος): 6X90

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Θεωρία Παιγνίων και Αποφάσεων Διδάσκων: Ε. Μαρκάκης, Εαρινό εξάμηνο 2015 Λύσεις 2η σειράς ασκήσεων Προθεσμία παράδοσης: 18 Μαίου 2015 Πρόβλημα 1. (14

Διαβάστε περισσότερα

ΑΔΙΕΞΟΔΑ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΑΔΙΕΞΟΔΑ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΑΔΙΕΞΟΔΑ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΑΔΙΕΞΟΔΑ 2 ΠΟΡΟΙ Υπάρχουν δύο τύποι πόρων σε υπολογιστικά συστήματα: Προεκτοπίσιμοι πόροι

Διαβάστε περισσότερα

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

Διαβάστε περισσότερα

Αρχές Προγραμματισμού Υπολογιστών

Αρχές Προγραμματισμού Υπολογιστών Αρχές Προγραμματισμού Υπολογιστών Ανάπτυξη Προγράμματος Β ΕΠΑΛ Τομέας Πληροφορικής Βελώνης Γεώργιος Καθηγητής Πληροφορικής ΠΕ20 Κύκλος ανάπτυξης προγράμματος/λογισμικού Η διαδικασία ανάπτυξης λογισμικού,

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

Διοίκηση Παραγωγής και Υπηρεσιών

Διοίκηση Παραγωγής και Υπηρεσιών Διοίκηση Παραγωγής και Υπηρεσιών Εισαγωγή -3 Γιώργος Ιωάννου, Ph.D. Αναπληρωτής Καθηγητής Σύνοψη διάλεξης Σχεδιασμός διαδικασιών ορισμός Συστημική προσέγγιση Μεθοδολογίες σχεδιασμού διαδικασιών Διαγράμματα

Διαβάστε περισσότερα