ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΛΗ42 - ΕΙ ΙΚΑ ΘΕΜΑΤΑ ΤΕΧΝΟΛΟΓΙΑΣ ΛΟΓΙΣΜΙΚΟΥ 2η ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ ΑΚΑ ΗΜΑΪΚΟΥ ΕΤΟΥΣ 2007-2008 1 ος Τόµος ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ 2 (ΣΥΝΟΛΟ ΒΑΘΜΩΝ 100) ΥΠΟΕΡΓΑΣΙΑ 2.Α Βαθµοί:....... 60 Ηµεροµηνία Παράδοσης:...14/12/2007 Ηµεροµηνία Ανάρτησης Ενδεικτικών Λύσεων:....19/12/2007 Ηµεροµηνία παραλαβής απαντήσεων από Καθηγητή:.... 03/01/2008 ΥΠΟΕΡΓΑΣΙΑ 2.Β Βαθµοί:..... 40 Ηµεροµηνία Παράδοσης:...... 18/01/2008 Ηµεροµηνία Ανάρτησης Ενδεικτικών Λύσεων:...23/01/2008 Ηµεροµηνία παραλαβής απαντήσεων από Καθηγητή:... 08/02/2008 Ηµεροµηνία Ανακοίνωσης Βαθµολογίας 2 ης ΓΕ:. 08/02/2008
ΓΕΝΙΚΕΣ Ο ΗΓΙΕΣ ΓΙΑ ΤΗΝ ΠΑΡΑ ΟΣΗ ΤΗΣ ΕΡΓΑΣΙΑΣ Η εργασία αυτή αποτελείται από 2 ξεχωριστές υπο-εργασίες (2.Α και 2.Β) οι οποίες θα πρέπει να παραδοθούν στο Σύµβουλο-Καθηγητή ξεχωριστά, και µέχρι τις ηµεροµηνίες που αναφέρονται στην προηγούµενη σελίδα. Ισχύουν οι ίδιες οδηγίες παράδοσης όπως και στην 1 η ΓΕ. Εδικά για την υπο-εργασία 2.Β ισχύουν τα παρακάτω: Τα δίκτυα Petri θα πρέπει να σχεδιαστούν µε το εργαλείο HPSim (θα το βρείτε στο Portal). Οι απαντήσεις θα πρέπει να αποτελούνται από ένα screenshot του δικτύου µέσα στο έγγραφο και το αντίστοιχο αρχείο που παράγει το HPSim. Η απάντηση δηλαδή της 2.Β θα αποτελείται από 1 αρχείο του Word (.doc)και 3 του HPSim (.hps). Παρακαλούµε να µην χρησιµοποιήσετε πολύπλοκες λειτουργίες (καθυστερήσεις στους χρονισµούς, γεννήτριες συµβόλων κτλ.) που παρέχει το συγκεκριµένο εργαλείο, δεν είναι απαραίτητες στη λύση. Καλή επιτυχία! 2
ΥΠΟΕΡΓΑΣΙΑ 2.A i. Ηλεκτρονική Λίστα Αγορών Έστω ότι καλείστε να προδιαγράψετε µε τη βοήθεια της τυπικής γλώσσας VDM τη διαδικασία προσθήκης προϊόντων σε µία ηλεκτρονική λίστα αγορών. Στη συγκεκριµένη λίστα αγορών µπορούν να περιλαµβάνονται προϊόντα από ένα σύνολο προϊόντων, κάθε ένα από τα οποία έχει ένα µοναδικό κωδικό (τύπος PROD_ID που θα θεωρηθεί δεδοµένος). Για κάθε προϊόν, στο καλάθι αγορών µπορεί να έχει γίνει παραγγελία περισσοτέρων του ενός τεµαχίων. Η απεικόνιση που ορίζει τον τύπο της ηλεκτρονικής λίστας είναι η εξής: SHOP_LIST = PROD_ID-set m Ν 1 Με βάση τα παραπάνω, και θεωρώντας ότι η λίστα αγορών θα αποτελεί εξωτερική µεταβλητή, καλείστε να προδιαγράψετε τις ακόλουθες λειτουργίες: Προσθήκη ενός αριθµού τεµαχίων ενός προϊόντος (ο κωδικός του προϊόντος και ο αριθµός των τεµαχίων αποτελούν είσοδο στη λειτουργία) στη λίστα αγορών. Αφαίρεση ενός τεµαχίου (του οποίου ο κωδικός δίδεται ως είσοδος στη λειτουργία) ενός προϊόντος από τη λίστα αγορών. Εξέταση αν ένα προϊόν (που δίδεται ως είσοδος) υπάρχει στη λίστα αγορών. Εµφάνιση του αριθµού των τεµαχίων ενός προϊόντος (που δίδεται ως είσοδος) που έχουν συµπεριληφθεί στη λίστα αγορών ii. ιαχείριση Παραγγελιών σε VDM Θεωρήστε ότι η εταιρεία πληροφορικής BIGSOFT καλείται να αναπτύξει ένα σύστηµα διαχείρισης ηλεκτρονικών παραγγελιών βιβλίων. Κάθε παραγγελία έχει έναν µοναδικό κωδικό (Order_No) και πραγµατοποιείται µία συγκεκριµένη ηµεροµηνία. Επιπρόσθετα, κάθε παραγγελία συνδέεται µε µία σειρά από βιβλία (Book), ενώ µπορεί να βρίσκεται σε µία από τις ακόλουθες καταστάσεις: Pending (δεν έχει γίνει η αποστολή), Sent (έχει γίνει η αποστολή αλλά δεν έχει γίνει η πληρωµή) ή Completed (έχει ολοκληρωθεί η παραλαβή και η πληρωµή των βιβλίων). Για το συγκεκριµένο σύστηµα, καλείστε να προδιαγράψετε χρησιµοποιώντας απεικονίσεις της VDM (που θα αποτελούν εξωτερικές µεταβλητές), τις ακόλουθες λειτουργίες: a. Τη λειτουργία καταγραφής µίας νέας παραγγελίας µε δεδοµένο τον κωδικό της παραγγελίας και της ηµεροµηνίας (που δίδονται ως είσοδος). Αρχικά, η κατάσταση µίας παραγγελίας θεωρείται ως Pending, ενώ δεν γίνεται καµία συσχέτιση της νέας παραγγελίας µε κάποιο βιβλίο. b. Τη λειτουργία προσθήκης ενός βιβλίου σε µία υπάρχουσα παραγγελία, µε την προϋπόθεση ότι η παραγγελία βρίσκεται σε κατάσταση Pending (δεν έχει γίνει ακόµη η αποστολή). Για λόγους απλότητας θα θεωρήσουµε ότι µπορεί να γίνει παραγγελία ενός µόνο αντιτύπου ενός βιβλίου σε κάθε παραγγελία. 3
c. Την αλλαγή της κατάστασης µίας παραγγελίας µε δεδοµένο τον κωδικό της παραγγελίας. Συγκεκριµένα, µπορούµε να µεταβούµε µόνο στην επόµενη κατάσταση (από Pending σε Sent και από Sent σε Completed), ενώ δεν µπορεί να αλλάξει η κατάσταση µίας παραγγελίας που είναι ολοκληρωµένη (Completed). d. Τη λειτουργία που επιστρέφει όλες τις παραγγελίες που είναι Pending. Για την προδιαγραφή σας, θα πρέπει να θεωρήσετε ως γνωστούς τους τύπους δεδοµένων Date, Order_No (το σύνολο των κωδικών παραγγελίας), και Book (σύνολο βιβλίων), ενώ θα πρέπει να ορίσετε τον τύπο State που αναπαριστά την κατάσταση της παραγγελίας. Για την προδιαγραφή των διαφόρων λειτουργιών θα πρέπει να χρησιµοποιήσετε τις ακόλουθες απεικονίσεις: Order_No m Date: που αναπαριστά τη συσχέτιση µίας παραγγελίας µε την ηµεροµηνία που έγινε η παραγγελία. Order_No m Book: που είναι µία συσχέτιση ένα προς πολλά και θα χρησιµοποιείται για το συσχετισµό της παραγγελίας µε µία σειρά από βιβλία. Order_No m State: που αναπαριστά την κατάσταση µίας παραγγελίας. iii. ιαχείριση Παραγγελιών σε Z Καλείστε να προδιαγράψετε το σύστηµα καταγραφής παραγγελιών βιβλίων του προηγούµενου ερωτήµατος µε τη βοήθεια της γλώσσας Ζ αυτή τη φορά. Συγκεκριµένα, θα πρέπει να χρησιµοποιήσετε συναρτήσεις και σχέσεις για την αναπαράσταση του χώρου καταστάσεων του συστήµατος. Στη συνέχεια θα πρέπει να προδιαγράψετε τις λειτουργίες που αναφέρονται στο προηγούµενο ερώτηµα, λαµβάνοντας υπόψη τόσο τις ορθές περιπτώσεις εκτέλεσης όσο και τα πιθανά σφάλµατα που µπορούν να προκύψουν κατά την εκτέλεση κάθε λειτουργίας. Τέλος, εκτός από τον τύπο δεδοµένων State που θα αναπαριστά τις πιθανές καταστάσεις µίας παραγγελίας θα πρέπει επιπλέον στην προδιαγραφή σας να ορίσετε τον τύπο δεδοµένων Date (ηµέρα, µήνας και έτος) που θα αναπαριστά τις έγκυρες ηµεροµηνίες, λαµβάνοντας υπόψη τους περιορισµούς στον αριθµό των ηµερών κάθε µήνα (χωρίς να δώσετε σηµασία στα δίσεκτα έτη). 4
ΥΠΟΕΡΓΑΣΙΑ 2.B i. Μεσιτικό γραφείο Προδιαγράψτε µε τη βοήθεια δικτύου Petri θέσης-µετάβασης ένα σύστηµα µοντελοποίησης ενός µεσιτικού γραφείου για σπίτια και οικόπεδα. Για την ανάπτυξη του δικτύου παρέχεται η ακόλουθη σύντοµη περιγραφή του συστήµατος και της διαδικασίας που ακολουθείται. Το µεσιτικό γραφείο διαθέτει µία γραµµατέα και έναν µεσίτη. Η γραµµατέας µπορεί να εξυπηρετεί το πολύ µόνο έναν πελάτη σε κάθε χρονική στιγµή. Ο µεσίτης µπορεί να εξυπηρετεί το πολύ µόνο ένα ζευγάρι πωλητή-αγοραστή σε κάθε χρονική στιγµή, το οποίο µπορεί να διαπραγµατεύεται την πώληση είτε σπιτιού είτε οικοπέδου. Αρχικά ο νέος πελάτης κάνει εγγραφή στο µεσιτικό γραφείο µε τη βοήθεια της γραµµατέως. Αφού τελειώσει η εγγραφή, αποδεσµεύεται η γραµµατέας ώστε να συνεχίσει µε τον επόµενο πελάτη, ενώ ο εγγεγραµµένος πελάτης κατατάσσεται αυτόµατα σε µία και µόνο µία από τις εξής τέσσερις κατηγορίες: α) Πωλητής σπιτιού, β) Αγοραστής σπιτιού, γ) Πωλητής οικοπέδου, δ) Αγοραστής οικοπέδου. Αν υπάρχουν διαθέσιµοι εγγεγραµµένοι στο µεσιτικό γραφείο ένας πωλητής σπιτιού και ένας αγοραστής σπιτιού, τότε µαζί µε τον µεσίτη διαπραγµατεύονται την µεταβίβαση του σπιτιού. Αν η διαπραγµάτευση λήξει επιτυχηµένα, τότε ο πωλητής και ο αγοραστής σπιτιού διαγράφονται αυτόµατα από το µεσιτικό γραφείο, ενώ ο µεσίτης αποδεσµεύεται ώστε να συνεχίσει µε το επόµενο ζευγάρι πωλητή-αγοραστή. Αν η διαπραγµάτευση δεν λήξει επιτυχηµένα, τότε ο αγοραστής σπιτιού διαγράφεται αυτόµατα από το µεσιτικό γραφείο, ο πωλητής σπιτιού επιστρέφει στους διαθέσιµους πωλητές σπιτιού του µεσιτικού γραφείου, ενώ ο µεσίτης αποδεσµεύεται ώστε να συνεχίσει µε το επόµενο ζευγάρι πωλητή-αγοραστή. Τα παραπάνω ισχύουν ακριβώς ανάλογα και στην περίπτωση διαθέσιµου πωλητή οικοπέδου και αγοραστή οικοπέδου. Στο δίκτυο Petri θεωρήστε ότι πρόκειται να εγγραφούν 100 πελάτες, ασχέτως κατηγορίας. ii. Ηλεκτρονική πώληση εισιτηρίων Προδιαγράψτε µε τη βοήθεια δικτύου Petri θέσης-µετάβασης ένα σύστηµα ηλεκτρονικής πώλησης εισιτηρίων για ένα θέατρο. Για την ανάπτυξη του δικτύου παρέχεται η ακόλουθη σύντοµη περιγραφή του συστήµατος και της διαδικασίας που ακολουθείται. Το συγκεκριµένο σύστηµα µπορεί να διαθέσει 20 συνολικά εισιτήρια: 10 οικονοµικά και 10 ακριβά. Ο κάθε χρήστης µπορεί να αγοράσει µόνο ένα εισιτήριο. Αρχικά ο χρήστης κάνει εισαγωγή στο σύστηµα, όπου δηλώνεται ως νέος πελάτης. Στη συνέχεια επιλέγει αν ενδιαφέρεται για οικονοµικό ή ακριβό εισιτήριο. Μετά το σύστηµα ελέγχει αν υπάρχει διαθέσιµο εισιτήριο της κατηγορίας που επέλεξε ο χρήστης. Αν υπάρχει, τότε γίνεται αυτόµατα η κράτηση. Τέλος, ο χρήστης επιλέγει αν θα αγοράσει τελικά το εισιτήριο ή αν θα το αποδεσµεύσει και εξέρχεται από το σύστηµα. Στην περίπτωση της αποδέσµευσης, το εισιτήριο επιστρέφει ως διαθέσιµο στο σύστηµα. Αν δεν υπάρχει διαθέσιµο εισιτήριο της κατηγορίας που επέλεξε ο χρήστης, τότε αυτός εξέρχεται από το σύστηµα. Στο δίκτυο Petri θεωρήστε ότι πρόκειται να χρησιµοποιήσουν το σύστηµα 100 χρήστες. iii. Ανελκυστήρας Προδιαγράψτε µε τη βοήθεια δικτύου Petri θέσης-µετάβασης ένα σύστηµα ανελκυστήρα δύο ορόφων. Για την ανάπτυξη του δικτύου παρέχεται η ακόλουθη σύντοµη περιγραφή του συστήµατος και της διαδικασίας που ακολουθείται. Ο ανελκυστήρας έχει χωρητικότητα ενός µόνο ατόµου. Μπορεί να µετακινηθεί ως εξής: α) µεταφέροντας µέσα του κάποιο άτοµο το οποίο επέλεξε να µεταβεί από τον έναν όροφο στον άλλο και β) άδειος όταν βρίσκεται σε έναν όροφο και το κάλεσε ένα άτοµο που βρίσκεται στον άλλο όροφο. Στη δεύτερη περίπτωση µετά τη µετακίνηση, ο ανελκυστήρας θα 5
παραλάβει υποχρεωτικά το άτοµο που τον κάλεσε (και δεν θα µετακινηθεί ξανά άδειος στον αρχικό όροφο). Αν ο ανελκυστήρας βρίσκεται σε έναν όροφο και καλείται ταυτόχρονα από δύο άτοµα (ένα στον όροφο που βρίσκεται ο ανελκυστήρας και ένα στον άλλο όροφο), τότε το σύστηµα επιλέγει τυχαία ποιον από τους δύο θα εξυπηρετήσει. Στο δίκτυο Petri θεωρήστε ότι αρχικά περιµένουν στον πρώτο όροφο 10 άτοµα και στον δεύτερο κανένα. Επίσης θεωρήστε ότι τα άτοµα αυτά ανεβοκατεβαίνουν συνεχώς µε τον ανελκυστήρα ανάµεσα στους δύο ορόφους. 6