ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ Σάββατο 5 Ιουνίου 2010 Οδηγίες: Η διάρκεια της εξέτασης είναι τρεις και µισή (3 ½) ώρες. Ισχύουν όσα αναφέρονται στους Κανονισµούς Εξετάσεων του ΕΑΠ γενικότερα και της Θ.Ε. ειδικότερα. Τα κριτήρια αξιολόγησης και το βάρος κάθε κριτηρίου αναγράφονται στο τέλος του κειµένου των θεµάτων. Το σύνολο των µορίων που αντιστοιχεί στο άριστα (10) είναι 200. Επιτυχόντες θεωρούνται όσοι/ες φοιτητές/τριες συγκεντρώσουν τουλάχιστον 100 µόρια, τα οποία αντιστοιχούν στον ελάχιστο προβιβάσιµο βαθµό (5). Θέµα 1: Αντικειµενοστρεφής ανάλυση Σχεδιάζουµε την υλοποίηση ενός συστήµατος υποβολής και αξιολόγησης επιστηµονικών εργασιών για ένα συνέδριο. Οι εργασίες είναι δύο ειδών: κανονικές και posters. Το σύστηµα επιτρέπει στους συγγραφείς των εργασιών να υποβάλλουν εργασίες, στους κριτές των εργασιών να δουν και να αξιολογήσουν τις εργασίες που τους έχουν ανατεθεί και στο προεδρείο του συνεδρίου να αναθέσει εργασίες σε αξιολογητές. Επιπλέον, το προεδρείο µπορεί να βλέπει τις αξιολογήσεις ανά εργασία και αξιολογητή, αλλά και τις αξιολογήσεις που λείπουν. Το προεδρείο αποφασίζει για την αποδοχή ή απόρριψη µιας εργασίας και µε βάση την απόφαση αυτή, το σύστηµα εµφανίζει καταλόγους εγκεκριµένων και απορριφθέντων εργασιών. Ένας συγγραφέας µπορεί να υποβάλλει το πολύ τρεις εργασίες. Το σύστηµα δεν επιτρέπει την υποβολή υπεράριθµων εργασιών, εκτός και αν ο συγγραφέας αποσύρει κάποια. Ανά πάσα στιγµή ο συγγραφέας µπορεί να ελέγξει εάν έχουν υποβληθεί όλες οι αναµενόµενες αξιολογήσεις για κάθε εργασία του (και µόνο), ποια είναι τα σχόλια των αξιολογητών και εάν η εργασία έχει γίνει δεκτή ή όχι. Ο αξιολογητής µπορεί να δει µόνο τον κατάλογο εργασιών που του έχουν ανατεθεί και για κάθε τέτοια εργασία να γράψει την αξιολόγηση απευθείας στην ειδική σελίδα του συστήµατος, ή να επισυνάψει σχετικό αρχείο µε σχόλια, ή και τα δύο. Σε κάθε αξιολογητή ανατίθενται το πολύ τέσσερις εργασίες προς αξιολόγηση. Μια κανονική εργασία µέτριας ποιότητας µπορεί να γίνει αποδεκτή ως poster. Μια εργασία που έχει εγκριθεί πρέπει να διορθωθεί σύµφωνα µε τις υποδείξεις των αξιολογητών και να υποβληθεί ξανά, ώστε να συµπεριληφθεί στο πρόγραµµα του συνεδρίου, µετά την τελική έγκριση του προεδρείου. Όταν µια εργασία γίνει τελικά αποδεκτή, κατανέµεται σε µια από τις συνεδρίες του συνεδρίου. Το συνέδριο περιλαµβάνει το πολύ 12 συνεδρίες, καθεµία από τις οποίες φιλοξενεί κανονικές εργασίες και posters. Κάθε εργασία περιγράφεται από τον τίτλο, τους συγγραφείς και την επιστηµονική συνεδρία του συνεδρίου όπου υποβάλλεται. Για τις κανονικές εργασίες τίθεται µέγιστο όριο σελίδων ίσο µε 6, ενώ για τα posters, το όριο είναι 4 σελίδες. Επιπλέον, τα posters πρέπει να πληρούν καθορισµένες διαστάσεις πλάτους και µήκους. Να σχεδιάσετε ένα διάγραµµα περιπτώσεων χρήσης (use case diagram) για το σύστηµα λογισµικού. Να σχεδιάσετε το διάγραµµα καταστάσεων (state diagram) του αντικειµένου «Κανονική Εργασία». Ερώτηµα 3 Να σχεδιάσετε ένα διάγραµµα κλάσεων (class diagram) για το σύστηµα λογισµικού. 1
Θέµα 2: Αποδιφοροποίηση γραµµατικής ίνεται η ακόλουθη γραµµατική: S S op1 S S op2 S A A a b είξτε ότι η δοθείσα γραµµατική είναι διφορούµενη. Μετασχηµατίστε τη δοθείσα γραµµατική σε µια ισοδύναµη, στην οποία ο τελεστής op1 θα έχει υψηλότερη προτεραιότητα από τον τελεστή op2. είξτε ότι η νέα γραµµατική δεν είναι διφορούµενη. Θέµα 3: Υλοποίηση εφαρµογής σε Java Το παρακάτω διάγραµµα κλάσεων αναπαριστά ένα εργοστάσιο (Factory) που διαθέτει διάσπαρτους αισθητήρες (Sensors) µετρήσεων των καιρικών συνθηκών. Υπάρχουν αισθητήρες θερµοκρασίας (Temperature) και υγρασίας (Humidity). Το εργοστάσιο διαθέτει κοινή δοµή δεδοµένων για τις µετρήσεις. Κάθε µέτρηση (SensedValue) χαρακτηρίζεται από τη χρονική στιγµή που πραγµατοποιήθηκε, τον αισθητήρα που την παρήγαγε και ένα πραγµατικό αριθµό που αντιστοιχεί στην µετρούµενη τιµή. Για τις ανάγκες της άσκησης, θεωρούµε ότι οι αισθητήρες διαθέτουν µέθοδο που να παράγει µία τυχαία τιµή µέτρησης στα αποδεκτά όρια τιµών τους. Τα διαστήµατα τιµών για την θερµοκρασία είναι [-10.0,40.0] και για την υγρασία [0.0,100.0]. 2
Να γραφεί ο κώδικας Java που υλοποιεί το σύστηµα. Η κάθε κλάση να διαθέτει όλα τα απαιτούµενα χαρακτηριστικά και µεθόδους, όπως περιγράφονται στο διάγραµµα κλάσεων. Να γράψετε µέθοδο main(), η οποία θα υλοποιεί ένα εργοστάσιο µε ένα αισθητήρα υγρασίας και δύο αισθητήρες θερµοκρασίας και στη συνέχεια θα τυπώνει τις τιµές τους ανά λεπτό για µία ώρα. Ερώτηµα 3 Αλλάξτε τον κώδικα της κλάσης Factory ώστε να λειτουργεί ως νήµα. Προσθέστε και τις µεθόδους: simulate(int simtimeinsec), η οποία παίρνει ως παράµετρο τον αριθµό των δευτερολέπτων που επιθυµούµε να πραγµατοποιηθεί εξοµοίωση λειτουργίας του εργοστασίου, εκκινεί το εργοστάσιο, πραγµατοποιεί την εξοµοίωση και στο τέλος της εξοµοίωσης τυπώνει τη µέση τιµή των καταγεγραµµένων θερµοκρασιών. Στα πλαίσια την εξοµοίωσης το εργοστάσιο ανά 10 δευτερόλεπτα ζητά από τους διαθέσιµους αισθητήρες (και καταγράφει στην κοινή δοµή δεδοµένων) τις µετρήσεις. printtemperratureavg(), η οποία υπολογίζει και τυπώνει τη µέση τιµή των καταγεγραµµένων θερµοκρασιών. Ερώτηµα 4 Προσθέστε τον απαιτούµενο κώδικα στη µέθοδο main() ώστε να πραγµατοποιηθεί µια εξοµοίωση διάρκειας 5 λεπτών. Θέµα 4: Εκτίµηση κόστους έργου Θεωρήστε το ακόλουθο σύστηµα µηχανοργάνωσης πανεπιστηµιακής βιβλιοθήκης: Μια πανεπιστηµιακή βιβλιοθήκη αποθηκεύει βιβλία (Books) και AudioBooks (σε DVD), τα οποία είναι δυνατό να δανεισθούν, τόσο στο προσωπικό του πανεπιστηµίου (Personnel), όσο στους φοιτητές (Student). Κάθε χρήστης (User) της βιβλιοθήκης διαθέτει µοναδικό κωδικό και µπορεί να δανεισθεί ένα αντικείµενο για 10 ηµέρες το πολύ. Οι φοιτητές µπορούν να δανεισθούν έως 5 βιβλία και έως 2 DVD, ενώ οι υπάλληλοι µπορούν να δανεισθούν έως 8 βιβλία και έως 4 DVD. Κάθε χρήστης µπορεί να δεσµεύσει έως 3 βιβλία (δεν είναι δυνατή η δέσµευση DVD). Ο δανεισµός ή η δέσµευση µπορεί να γίνει είτε από ένα χρήστη, είτε µε τη βοήθεια του βιβλιοθηκάριου. Σε κάθε περίπτωση, όταν ένας χρήστης της βιβλιοθήκης δανείζεται ένα αντικείµενο, οι λεπτοµέρειες δανεισµού του ελέγχονται για να διασφαλιστεί, τόσο ότι δεν έχει δανεισθεί εκπρόθεσµα άλλα αντικείµενα, όσο και ότι δεν έχει ήδη δανεισθεί το µέγιστο επιτρεπόµενο αριθµό αντικειµένων. Αν για ένα συγκεκριµένο βιβλίο έχουν ήδη γίνει τρεις δεσµεύσεις, τότε σε περίπτωση που γίνει ακόµη µία δέσµευση, ο βιβλιοθηκάριος θα παραγγείλει ένα νέο αντίτυπο του συγκεκριµένου βιβλίου. Οι χρήστες της βιβλιοθήκης είναι δυνατό να ελέγξουν οι ίδιοι τις λεπτοµέρειες δανεισµού που τους αφορούν οποιαδήποτε χρονική στιγµή. Οι βιβλιοθηκάριοι επιτρέπεται να ελέγχουν τις λεπτοµέρειες δανεισµού οποιουδήποτε χρήστη της βιβλιοθήκης. Το σύστηµα παράγει ηµερήσιες και µηνιαίες αναφορές για τους βιβλιοθηκάριους. Στις µηνιαίες αναφορές υπολογίζεται και το κόστος από τις καθυστερηµένες επιστροφές ή απώλειες. Παρακάτω δίνεται το διάγραµµα των περιπτώσεων χρήσης. 3
Χρησιµοποιώντας τη µέθοδο Use Case Points να εκτιµήσετε τη συνολική προσπάθεια που απαιτείται για την κατασκευή αυτού του συστήµατος λογισµικού. Να χρησιµοποιήσετε αποκλειστικά τις περιπτώσεις χρήσης του σχήµατος. Επίσης να κάνετε όσες παραδοχές χρειάζονται, χωρίς όµως να παραβιάσετε καµία βασική αρχή καλής ανάπτυξης λογισµικού. Θέµα 5: Αναδροµική κατάβαση ίνεται η ακόλουθη γραµµατική (S, L, K µη τερµατικά σύµβολα και (, ), ;, a, b, c τερµατικά σύµβολα): S S(L) a L L K;S SK K bl bcs Είναι κατάλληλη για υλοποίηση µεταγλωττιστή µε αναδροµική κατάβαση; Αν όχι, ποια προβλήµατα εντοπίζετε; Να κάνετε τους κατάλληλους µετασχηµατισµούς ώστε να γίνει κατάλληλη για υλοποίηση µεταγλωττιστή µε αναδροµική κατάβαση. Σε κάθε βήµα επεξεργασίας, να αναγράφετε τον αντίστοιχο µετασχηµατισµό. 4
Κριτήρια αξιολόγησης ΘΕΜΑ 1 (ΣΥΝΟΛΟ) 50 Ερώτηση 1 20 Ερώτηση 2 10 Ερώτηση 3 20 ΘΕΜΑ 2 (ΣΥΝΟΛΟ) 20 Ερώτηση 1 5 Ερώτηση 2 15 ΘΕΜΑ 3 (ΣΥΝΟΛΟ) 90 Ερώτηση 1 50 Ερώτηση 2 20 Ερώτηση 3 15 Ερώτηση 4 5 ΘΕΜΑ 4 20 ΘΕΜΑ 5 (ΣΥΝΟΛΟ) 20 Ερώτηση 1 5 Ερώτηση 2 15 ΣΥΝΟΛΟ 200 Καλή Επιτυχία! 5