Θ.Ε. ΠΛΗ24 ΑΚΑ. ΕΤΟΣ 2007-2008 ΠΡΩΤΗ ΓΡΑΠΤΗ ΕΡΓΑΣΙΑ - Yποδειγµατικές Απαντήσεις - Άσκηση 1 ιαχείριση τηλεφωνικού καταλόγου Να σχεδιάσετε ένα διάγραµµα περιπτώσεων χρήσης που να παριστάνει τις δυνατότητες που προσφέρει ένα σύγχρονο κινητό τηλέφωνο στο χρήστη του αναφορικά µε τη διαχείριση του τηλεφωνικού καταλόγου που περικλείει. Να λάβετε υπόψη σας ότι ο χρήστης µπορεί να εισάγει επαφές (contacts), να διαγράψει επαφές, να αναζητήσει επαφές, να τροποποιήσει επαφές, να συσχετίσει µε αυτές (αν το επιθυµεί) κάποια φωτογραφία ή κάποιον ήχο, ενώ έχει στη διάθεσή του και µια σειρά από ρυθµίσεις βασικών χαρακτηριστικών του τηλεφωνικού καταλόγου. Μπορείτε να κάνετε (αν το επιθυµείτε) και επιπρόσθετες υποθέσεις σχετικά µε τις δυνατότητες που προσφέρει ο τηλεφωνικός κατάλογος. Σε κάθε περίπτωση όµως, προσπαθήστε να χρησιµοποιήσετε κατάλληλες σχέσεις ανάµεσα στις περιπτώσεις χρήσης που θα προσδιορίσετε, αν φυσικά αυτό είναι εφικτό. Απάντηση Το ζητούµενο διάγραµµα περιπτώσεων χρήσης είναι το ακόλουθο: Επισηµαίνεται ότι επειδή η λειτουργία της αναζήτησης µιας επαφής είναι αναγκαία, τόσο για τη διαγραφή µιας επαφής, όσο και για την τροποποίησή της, οι περιπτώσεις χρήσης ιαγραφή Επαφής ΠΛΗ24 Σχεδιασµός Λογισµικού 1
( Delete Contact ) και Τροποποίηση Επαφής ( Update Contact ) συνδέονται µε την περίπτωση χρήσης Αναζήτηση Επαφής ( Find Contact ) µε σχέση «include». Η περίπτωση χρήσης ιαχείριση Επαφής ( Manage Contact ) έχει χρησιµοποιηθεί για την απλοποίηση του υπό εξέταση διαγράµµατος περιπτώσεων χρήσης. Έτσι, η συγκεκριµένη περίπτωση χρήσης µπορεί να αποτελέσει την αφετηρία για µια σειρά από επιπρόσθετες λειτουργίες που περιγράφονται από τις περιπτώσεις χρήσης Εισαγωγή Επαφής ( Insert Contact ), Συσχέτιση Εικόνας ( Associate Picture ) και Συσχέτιση Ήχου ( Associate Sound ). Επίσης, η περίπτωση χρήσης ιαχείριση Επαφής ( Manage Contact ) χρησιµοποιείται και στα πλαίσια της τροποποίησης µιας επαφής, αφού η περίπτωση χρήσης Τροποποίηση Επαφής ( Update Contact ) συνδέεται µαζί της µε σχέση γενίκευσης. Άσκηση 2 Αεροπορικές πτήσεις ίνονται οι παρακάτω απαιτήσεις: 1. Μια αεροπορική εταιρεία εκτελεί πτήσεις. 2. Η αεροπορική εταιρεία «ανοίγει» µια πτήση για κρατήσεις θέσεων ή την «κλείνει» σύµφωνα µε τις ανάγκες της. 3. Ένας πελάτης µπορεί να κάνει κρατήσεις για µια ή περισσότερες πτήσεις και για έναν ή περισσότερους επιβάτες. 4. Μια κράτηση αφορά µια πτήση και έναν επιβάτη. 5. Μια κράτηση µπορεί να ακυρωθεί ή να επιβεβαιωθεί. 6. Μια πτήση ξεκινάει από ένα αεροδρόµιο αναχώρησης και καταλήγει σε ένα αεροδρόµιο άφιξης. 7. Μια πτήση χαρακτηρίζεται από συγκεκριµένη ηµεροµηνία και χρόνο αναχώρησης και άφιξης. 8. Μια πτήση µπορεί να έχει ενδιάµεσες στάσεις. 9. Μια ενδιάµεση στάση χαρακτηρίζεται από συγκεκριµένη ηµεροµηνία και χρόνο αναχώρησης και άφιξης. 10. Κάθε αεροδρόµιο εξυπηρετεί µια ή περισσότερες πόλεις. Να σχεδιάσετε το αντίστοιχο διάγραµµα κλάσεων (στο επιτρεπόµενο από τις διαθέσιµες πληροφορίες επίπεδο λεπτοµέρειας). Εξηγήστε τον τρόπο µε τον οποίο ικανοποιείται από το διάγραµµά σας η καθεµία από τις πιο πάνω απαιτήσεις. Υπόδειξη: Η χρήση ρηµάτων στην περιγραφή των απαιτήσεων δεν υπονοεί απαραίτητα την ύπαρξη συγκεκριµένων σχέσεων στο διάγραµµα κλάσεων που θα σχεδιάσετε. Απάντηση Το ζητούµενο διάγραµµα κλάσεων, στο επιτρεπόµενο από τις διαθέσιµες πληροφορίες επίπεδο λεπτοµέρειας, είναι το ακόλουθο: ΠΛΗ24 Σχεδιασµός Λογισµικού 2
Ο τρόπος µε τον οποίο το πιο πάνω διάγραµµα κλάσεων ικανοποιεί τις απαιτήσεις που αναφέρονται στην εκφώνηση της άσκησης απεικονίζεται στον ακόλουθο πίνακα: Απαίτηση Μια αεροπορική εταιρεία εκτελεί πτήσεις. Η αεροπορική εταιρεία «ανοίγει» µια πτήση για κρατήσεις θέσεων ή την «κλείνει» σύµφωνα µε τις ανάγκες της. Ένας πελάτης µπορεί να κάνει κρατήσεις για µια ή περισσότερες πτήσεις και για έναν ή περισσότερους επιβάτες. Μια κράτηση αφορά µια πτήση και έναν επιβάτη. Μια κράτηση µπορεί να ακυρωθεί ή να επιβεβαιωθεί. Μια πτήση ξεκινάει από ένα αεροδρόµιο αναχώρησης και καταλήγει σε ένα αεροδρόµιο άφιξης. Μια πτήση χαρακτηρίζεται από συγκεκριµένη ηµεροµηνία και χρόνο αναχώρησης και άφιξης. Τρόπος Ικανοποίησης από ιάγραµµα Κλάσεων Υλοποιείται µε τη σχέση offers µεταξύ των κλάσεων Airline Company και Flight. Υλοποιείται µε τις µεθόδους openbooking() και close Booking() της κλάσης Flight. Υλοποιείται µε τη σχέση has made µεταξύ των κλάσεων Booking και Customer. Η πολλαπλότητα 0..* στην πλευρά της κλάσης Booking σηµαίνει ότι ένας πελάτης (customer) µπορεί να κάνει πολλές κρατήσεις (bookings). Mια κράτηση (Booking) συνδέεται µε ένα και µόνο ένα επιβάτη (Passenger) και µε µία και µόνο µία πτήση (Flight). Υλοποιείται µε τις µεθόδους cancel() και confirm() της κλάσης Booking. Μια πτήση (Flight) συνδέεται µε ένα αεροδρόµιο (Airport) µέσω µιας σχέσης όπου το αεροδρόµιο έχει το ρόλο departure και µε ένα ακόµη αεροδρόµιο µέσω µιας άλλης σχέσης όπου το αεροδρόµιο έχει το ρόλο arrival. Υλοποιείται από τα πεδία departuredate, departuretime, arrivaldate και arrivaltime της κλάσης Flight. ΠΛΗ24 Σχεδιασµός Λογισµικού 3
Μια πτήση µπορεί να έχει ενδιάµεσες στάσεις. Μια ενδιάµεση στάση χαρακτηρίζεται από συγκεκριµένη ηµεροµηνία και χρόνο αναχώρησης και άφιξης. Κάθε αεροδρόµιο εξυπηρετεί µια ή περισσότερες πόλεις. Mια πτήση (Flight) µπορεί να έχει 0..* ενδιάµεσες στάσεις, οι οποίες είναι διατεταγµένες (ordered) και συνδέεται µε ένα αεροδρόµιο (Airport) µέσω µιας σχέσης όπου το αεροδρόµιο έχει το ρόλο stopover. Υλοποιείται µε τα πεδία departuretime και arrivaltime της κλάσης συσχέτισης StopoverInfo. Υλοποιείται µε τη σχέση serves µεταξύ των κλάσεων Airport και City. Άσκηση 3 Επεξεργασία παραγγελιών Να σχεδιάσετε ένα διάγραµµα δραστηριοτήτων για τη διαδικασία επεξεργασίας παραγγελιών που περιγράφεται στην παράγραφο που ακολουθεί. Όταν λαµβάνεται µια παραγγελία γίνεται έλεγχος κάθε γραµµής της παραγγελίας για να διαπιστωθεί αν υπάρχει απόθεµα στην αποθήκη για το προϊόν που αναφέρεται σε αυτή τη γραµµή (δηλαδή για να διαπιστωθεί αν είναι δυνατή η πώληση του συγκεκριµένου προϊόντος). Αν υπάρχει απόθεµα για το συγκεκριµένο προϊόν, τότε το προϊόν αυτό καταχωρείται στην παραγγελία. Αν µετά την καταχώρηση η διαθέσιµη ποσότητα του υπό εξέταση προϊόντος στην αποθήκη είναι µικρότερη από κάποιο επιθυµητό επίπεδο, τότε γίνεται παραγγελία του συγκεκριµένου προϊόντος στον κατάλληλο προµηθευτή. Όσο γίνεται η εξέταση του αποθέµατος γίνεται συγχρόνως και έλεγχος του τρόπου πληρωµής της παραγγελίας. Αν ο τρόπος πληρωµής είναι αποδεκτός, αλλά δεν υπάρχει κάποιο από τα προϊόντα που αναφέρονται στην παραγγελία, τότε η παραγγελία παραµένει σε εκκρεµότητα. Αν ο τρόπος πληρωµής δεν είναι αποδεκτός, τότε η παραγγελία ακυρώνεται. Απάντηση Το ζητούµενο διάγραµµα δραστηριοτήτων για τη διαδικασία επεξεργασίας παραγγελιών που περιγράφεται στην εκφώνηση της άσκησης είναι το ακόλουθο: ΠΛΗ24 Σχεδιασµός Λογισµικού 4
Επισηµαίνεται ότι για να γίνει αποδεκτή µια παραγγελία και να διεκπεραιωθεί θα πρέπει προηγουµένως να έχουν ολοκληρωθεί οι εξής δύο εργασίες: Εργασία 1: Εξέταση του αποθέµατος για κάθε είδος που αναφέρεται στην παραγγελία. Εργασία 2: Έλεγχος του τρόπου πληρωµής της παραγγελίας. Οι εργασίες 1 και 2 πραγµατοποιούνται ταυτόχρονα. Για το λόγο αυτό, τα δύο τµήµατα του διαγράµµατος δραστηριοτήτων που χρησιµοποιούνται για την απεικόνιση των εργασιών αυτών τοποθετούνται ανάµεσα σε δύο οριζόντιες µπάρες συγχρονισµού. Άσκηση 4 Ξυπνητήρι Έστω ένα ξυπνητήρι, το οποίο έχει την ακόλουθη συµπεριφορά: 1) To ξυπνητήρι µπορεί να είναι ανοικτό ή κλειστό. 2) Όταν φτάσει η ώρα για την οποία έχει ρυθµιστεί, κουδουνίζει. 3) Το ξυπνητήρι σταµατά να κουδουνίζει όταν το σταµατήσουµε ή όταν περάσει ένα ορισµένο χρονικό διάστηµα. ΠΛΗ24 Σχεδιασµός Λογισµικού 5
(α) Να σχεδιάσετε το αντίστοιχο διάγραµµα καταστάσεων. (β) Να δηµιουργήσετε µια κλάση που να βρίσκεται σε συµφωνία µε το διάγραµµα καταστάσεων που σχεδιάσατε. Απάντηση (α) Το ζητούµενο διάγραµµα καταστάσεων είναι το ακόλουθο: Eπισηµαίνεται ότι το ξυπνητήρι σταµατά να κουδουνίζει (περνάει από την κατάσταση Ringing στην κατάσταση Prepared ), είτε όταν το σταµατήσουµε (µετάβαση stopringing από την κατάσταση Ringing στην κατάσταση Prepared ), είτε όταν περάσει ένα ορισµένο χρονικό διάστηµα (αυτόµατη µετάβαση από την κατάσταση Ringing στην κατάσταση Prepared ). (β) Η ακόλουθη κλάση βρίσκεται σε συµφωνία µε το πιο πάνω διάγραµµα καταστάσεων: Άσκηση 5 Ηλεκτρονικά παιχνίδια περιπέτειας Τα ηλεκτρονικά παιχνίδια περιπέτειας (adventure games) συχνά βασίζονται στη χρήση γράφων. Οι κόµβοι ενός τέτοιου γράφου παριστάνουν θέσεις, ενώ υπάρχει και ένα σύνολο κατευθύνσεων (π.χ. Βοράς, Νότος, Ανατολή, ύση). Για κάθε κόµβο n και κατεύθυνση d, υπάρχει το πολύ ένας κόµβος στον οποίο µπορούµε να φθάσουµε αν ακολουθήσουµε την κατεύθυνση d από τον κόµβο n. ΠΛΗ24 Σχεδιασµός Λογισµικού 6
(α) Να σχεδιάσετε ένα διάγραµµα κλάσεων για την αναπαράσταση γράφων, όπως αυτοί που περιγράφονται στην προηγούµενη παράγραφο. Να προσδιορίσετε την πολλαπλότητα σε όλες τις συσχετίσεις που θα επιλέξετε να χρησιµοποιήσετε. (β) Να τροποποιήσετε το προηγούµενο διάγραµµα κλάσεων ώστε αυτό να επιτρέπει την καταχώριση γράφων µε απεριόριστο πλήθος δυνατών κατευθύνσεων. Να σχολιάσετε σύντοµα τις σχεδιαστικές επιλογές που κάνατε σε κάθε περίπτωση. Απάντηση (α) Από το ζητούµενο διάγραµµα κλάσεων πρέπει να ικανοποιείται ο περιορισµός του µοναδικού προορισµού. Σύµφωνα µε τον περιορισµό αυτό, για κάθε κόµβο n και κατεύθυνση d, υπάρχει το πολύ ένας κόµβος στον οποίο µπορούµε να φθάσουµε αν ακολουθήσουµε την κατεύθυνση d από τον κόµβο n. Έτσι, στο διάγραµµα κλάσεων δεν επιτρέπεται να υπάρχουν µεταβάσεις της µορφής (Ν1=Νorth N2) και (Ν1=Νorth N3), όπου Ν1, Ν2 και Ν3 είναι κόµβοι του γράφου. Εποµένως, το ζητούµενο διάγραµµα κλάσεων είναι το ακόλουθο: Στο πιο πάνω διάγραµµα κλάσεων υπάρχουν τέσσερις (4) ανακλαστικές ή αναδροµικές συσχετίσεις (reflexive or recursive associations) µε βάση την κλάση Node ( Κόµβος ), οι οποίες χαρακτηρίζονται από τις τέσσερις κατευθύνσεις Βοράς (North), Νότος (South), Ανατολή (East), ύση (West) στη θέση ρόλων και διαθέτουν κατάλληλες πολλαπλότητες. Mια εναλλακτική λύση προκύπτει χρησιµοποιώντας το γνώρισµα κατεύθυνση (direction) ως προσδιοριστή (qualifier) της αναδροµικής συσχέτισης και την πολλαπλότητα 0..1 στον προορισµό (βλ. και απάντηση στην Άσκηση 9). Τότε, το ζητούµενο διάγραµµα κλάσεων έχει την ακόλουθη µορφή: ΠΛΗ24 Σχεδιασµός Λογισµικού 7
Επισηµαίνεται ότι και τα δύο πιο πάνω διαγράµµατα κλάσεων επιτρέπουν µεταβάσεις της µορφής (Ν1=Νorth N2) και (Ν1=South N2), όπου Ν1 και Ν2 είναι κόµβοι του γράφου, αφού η εκφώνηση της άσκησης δεν έχει θέσει έναν τέτοιο περιορισµό. (β) Από το ζητούµενο διάγραµµα κλάσεων δε θα πρέπει να ικανοποιείται ο περιορισµός του µοναδικού προορισµού. Έτσι, στο διάγραµµα κλάσεων θα πρέπει να επιτρέπεται η ύπαρξη µεταβάσεων της µορφής (Ν1=Νorth N2) και (Ν1=Νorth N3), όπου Ν1, Ν2 και Ν3 είναι κόµβοι του γράφου. Εποµένως, το ζητούµενο διάγραµµα κλάσεων είναι το ακόλουθο: Το πιο πάνω διάγραµµα κλάσεων επιτρέπει την απεικόνιση γράφων µε απεριόριστο πλήθος δυνατών κατευθύνσεων. Επισηµαίνεται όµως ότι η κλάση συσχέτισης Direction ( Κατεύθυνση ) εισάγει έναν επιπλέον περιορισµό, αφού µεταξύ δύο κόµβων (δηλαδή δύο στιγµιοτύπων της κλάσης Νοde ) µπορεί να υπάρχει το πολύ µία συσχέτιση. Έτσι, το πιο πάνω διάγραµµα κλάσεων αποκλείει µεταβάσεις της µορφής (Ν1=Νorth N2) και (Ν1=South N2), όπου Ν1 και Ν2 είναι κόµβοι του γράφου. Αν είναι επιθυµητή η υποστήριξη µεταβάσεων αυτής της µορφής, αφού η εκφώνηση της άσκησης δεν έχει θέσει έναν τέτοιο περιορισµό, θα πρέπει να τροποποιηθεί κατάλληλα το διάγραµµα κλάσεων και να πάρει την ακόλουθη µορφή: Μια διαφορετική µοντελοποίηση που επιτρέπει, τόσο την απεικόνιση γράφων µε απεριόριστο πλήθος δυνατών κατευθύνσεων, όσο και την υποστήριξη µεταβάσεων της µορφής (Ν1=Νorth N2) και (Ν1=South N2), όπου Ν1 και Ν2 είναι κόµβοι του γράφου, φαίνεται στο ακόλουθο διάγραµµα κλάσεων: ΠΛΗ24 Σχεδιασµός Λογισµικού 8
Άσκηση 6 ιαδικασία πληρωµής Έστω µια ταµειακή µηχανή σε ένα super market. H διαδικασία πληρωµής που ακολουθεί ένας πελάτης είναι συνήθως η ακόλουθη: 1. Ο πελάτης φτάνει στο ταµείο µε το καρότσι. 2. Ο ταµίας, µε τη χρήση του αναγνώστη γραµµικού κώδικα (bar code reader), σαρώνει τους κωδικούς των προϊόντων που έχει αγοράσει ο πελάτης. 3. H ταµειακή µηχανή παρουσιάζει την τιµή και την περιγραφή του κάθε προϊόντος που σαρώνει ο ταµίας. 4. Εάν υπάρχουν εκπτωτικά κουπόνια αυτά αφαιρούνται από το λογαριασµό. 5. Με το τέλος της σάρωσης προϊόντων παρουσιάζεται ο συνολικός λογαριασµός. 6. Ο πελάτης επιλέγει τρόπο πληρωµής (µετρητά, πιστωτική κάρτα, επιταγή). 7. Ο ταµίας δίνει τα ρέστα, καθώς και την απόδειξη. (α) Να σχεδιάσετε ένα διάγραµµα περιπτώσεων χρήσης για την πιο πάνω διαδικασία πληρωµής. Να αιτιολογήσετε όλες τις σηµαντικές αποφάσεις / επιλογές σας, όπως, για παράδειγµα, ποιοι είναι οι χειριστές, αν είναι πρωτεύοντες ή δευτερεύοντες, γιατί χρησιµοποιήθηκαν σχέσεις µεταξύ των περιπτώσεων χρήσης που επιλέξατε, κ.λπ. (β) Με βάση την πιο πάνω διαδικασία πληρωµής, να περιγράψετε λεπτοµερώς (αναλυτική περιγραφή µε κείµενο) την περίπτωση χρήσης που περιγράφει τη διαδικασία πώλησης προϊόντων. (γ) Να σχεδιάσετε το διάγραµµα ακολουθίας που αντιστοιχεί στην περίπτωση χρήσης που περιγράφει τη διαδικασία πώλησης προϊόντων. Απάντηση (α) Το ζητούµενο διάγραµµα περιπτώσεων χρήσης είναι το ακόλουθο: ΠΛΗ24 Σχεδιασµός Λογισµικού 9
Ο χειριστής ιευθυντής Καταστήµατος ( Shop Manager ) συνδέεται µε την περίπτωση χρήσης Αρχικοποίηση Ταµειακής Μηχανής ( Initialise Case Register ). Οι χειριστές Tαµίας ( Cashier ) και Πελάτης ( Customer ) συνδέονται µε την περίπτωση χρήσης Επεξεργασία Πώλησης ( Process Sale ), η οποία: Αντιµετωπίζει το ενδεχόµενο ο πελάτης να διαθέτει εκπτωτικά κουπόνια (vouchers). Επειδή η κατοχή εκπτωτικών κουπονιών είναι προαιρετική, η περίπτωση χρήσης Επεξεργασία Πώλησης ( Process Sale ) συνδέεται µε την περίπτωση χρήσης Μείωση από Εκπτωτικά Κουπόνια ( Reduce Vouchers ) µε σχέση «extend». Περιλαµβάνει το χειρισµό της πληρωµής από τον πελάτη. Επειδή η πληρωµή είναι υποχρεωτική για την πραγµατοποίηση της πώλησης, η περίπτωση χρήσης Επεξεργασία Πώλησης ( Process Sale ) συνδέεται µε την περίπτωση χρήσης Επεξεργασία Πληρωµής ( Process Payment ) µε σχέση «include». Για την ολοκλήρωση µιας πώλησης είναι αναγκαίος ο έλεγχος του αποθέµατος των προϊόντων που επιθυµεί να αγοράσει ο πελάτης. Για το λόγο αυτό, χειριστής που σχετίζεται µε την περίπτωση χρήσης Επεξεργασία Πώλησης ( Process Sale ) είναι και το Σύστηµα ιαχείρισης Αποθεµάτων ( Stock Management System ). Ο πελάτης µπορεί να πληρώσει, είτε µε µετρητά, είτε µε τη χρήση πιστωτικής κάρτας, είτε µε τη χρήση επιταγής. Για το λόγο αυτό, η περίπτωση χρήσης Επεξεργασία Πληρωµής ( Process Payment ) συνδέεται µε καθεµία από τις περιπτώσεις χρήσης Πληρωµή µε Μετρητά ( Process Cash Payment ), Πληρωµή µε Πιστωτική Κάρτα ( Process Credit Card Payment ) και Πληρωµή µε Επιταγή ( Process Cheque Payment ) µε σχέση γενίκευσης. Για την ολοκλήρωση των περιπτώσεων ΠΛΗ24 Σχεδιασµός Λογισµικού 10
χρήσης που αφορούν την πληρωµή µε χρήση πιστωτικής κάρτας και την πληρωµή µε χρήση επιταγής είναι αναγκαία η αλληλεπίδραση αντίστοιχα µε το Κέντρο Εξουσιοδότησης για Πιστωτικές Κάρτες ( Authorisation Centre for Cards ) και µε το Κέντρο Εξουσιοδότησης για Επιταγές ( Authorisation Centre for Cheques ), τα οποία αποτελούν χειριστές. Από τους χειριστές που εµφανίζονται στο πιο πάνω διάγραµµα περιπτώσεων χρήσης, βασικός ή πρωτεύων χειριστής (primary actor) είναι µόνο ο Tαµίας ( Cashier ). Επισηµαίνεται ότι µια περίπτωση χρήσης φανερώνει την αλληλεπίδραση ενός η περισσοτέρων χειριστών µε το υπό εξέταση σύστηµα. Ο χειριστής που ξεκινά αυτή την αλληλεπίδραση ονοµάζεται βασικός ή πρωτεύων χειριστής. Oι υπόλοιποι χειριστές που συµµετέχουν στη συγκεκριµένη περίπτωση χρήσης (µαζί µε τον πρωτεύοντα) και είναι αναγκαίοι για την ολοκλήρωσή της ονοµάζονται δευτερεύοντες χειριστές (secondary actors). Έτσι, ο βασικός ή πρωτεύων χειριστής έχει ένα στόχο που η πραγµατοποίησή του απαιτεί τη βοήθεια του συστήµατος, ενώ ο δευτερεύων χειριστής βοηθάει το σύστηµα στην πραγµατοποίηση του στόχου του πρωτεύοντος χειριστή. (β) Η αναλυτική περιγραφή µε κείµενο της περίπτωσης χρήσης Πώληση Προϊόντων είναι η ακόλουθη: 1. Τίτλος περίπτωσης χρήσης: Πώληση Προϊόντων 1.1. Σύντοµη περιγραφή: Ο πελάτης φτάνει µε το καρότσι στο ταµείο. Ο ταµίας σαρώνει τα bar codes όλων των προϊόντων που επέλεξε ο πελάτης, παράγει το λογαριασµό και λαµβάνει την πληρωµή. 1.2. Χειριστές: Ταµίας (πρωτεύων), Πελάτης (δευτερεύων). 2. Ροή γεγονότων 2.1. Βασική ροή 1. Ο πελάτης φτάνει στο ταµείο. 2. Ο ταµίας σαρώνει το bar code του κάθε προϊόντος. 3. Η ταµειακή µηχανή προσθέτει την τιµή του προϊόντος στο λογαριασµό, ενώ ταυτόχρονα παρουσιάζει την τιµή και την περιγραφή του προϊόντος. 4. Με το τέλος της σάρωσης όλων των προϊόντων ο ταµίας πατάει το πλήκτρο για τη δηµιουργία του τελικού λογαριασµού. 5. Ο ταµίας ενηµερώνει τον πελάτη για το συνολικό ποσό του λογαριασµού. 6. Κάνουµε «include» την ΠΧ «επεξεργασία πληρωµής». 7. Ο ταµίας ολοκληρώνει τη συναλλαγή και δίνει την απόδειξη στον πελάτη. 2.2. Εναλλακτικές ροές 2.2.1. Εναλλακτική ροή 1 2α. Ο κωδικός προϊόντος δεν υπάρχει και συνεπώς δεν µπορεί να πωληθεί. Η ροή µεταφέρεται στο βήµα 2. 2.2.2. Εναλλακτική ροή 2 2α. H ετικέτα είναι κατεστραµµένη. Ο ταµίας εισάγει τον κωδικό προϊόντος από το πληκτρολόγιο. Η ροή µεταφέρεται στο βήµα 2. ΠΛΗ24 Σχεδιασµός Λογισµικού 11
2.2.3. Εναλλακτική ροή 3 6α. Ο πελάτης δεν έχει χρήµατα να πληρώσει. 6β. Ο ταµίας ακυρώνει την πώληση. 3. Κατάσταση εισόδου: Το ταµείο είναι ανοικτό. 4. Κατάσταση εξόδου: Ενηµέρωση βάσης δεδοµένων Super Market. (γ) Το ζητούµενο διάγραµµα ακολουθίας που αντιστοιχεί στην περίπτωση χρήσης Πώληση Προϊόντων είναι το εξής: Άσκηση 7 Βιβλιοθήκη ίνεται το ακόλουθο διάγραµµα κλάσεων, το οποίο χρησιµοποιείται στα πλαίσια της µοντελοποίησης των λειτουργιών µιας βιβλιοθήκης: ΠΛΗ24 Σχεδιασµός Λογισµικού 12
Έστω ότι ο βιβλιοθηκάριος επιθυµεί να γνωρίζει: (α) Πόσα βιβλία έχει δανειστεί κάθε πελάτης ανά κατηγορία, δηλαδή επιθυµεί την παραγωγή καταστάσεων της µορφής: Α/Α Ονοµατεπώνυµο Φιλοσοφία Επιστηµονική Φαντασία 1 Αχιλλέας Καµέας 5 12 (β) Το πλήθος των εµπρόθεσµων και εκπρόθεσµων επιστροφών ανά χρήστη, δηλαδή επιθυµεί την παραγωγή καταστάσεων της µορφής: Εµπρόθεσµες Α/Α Ονοµατεπώνυµο Επιστροφές 1 Τάκης Αλεφραγκής 25 10 Εκπρόθεσµες Επιστροφές Θεωρώντας το παραπάνω διάγραµµα κλάσεων, να σχεδιάσετε διαγράµµατα ακολουθίας που να περιγράφουν τις πιο πάνω επαναληπτικές διαδικασίες που επιθυµεί ο βιβλιοθηκάριος. Αρχικά να προσδιορίσετε αλγοριθµικά την επαναληπτική διαδικασία (µε όποιον τρόπο επιθυµείτε) και έπειτα να σχεδιάσετε το κατάλληλο διάγραµµα ακολουθίας. Υπόδειξη: Για την καλύτερη κατανόηση της άσκησης µπορείτε να συµβουλευτείτε και την υποδειγµατική απάντηση στην άσκηση 7 της πρώτης γραπτής εργασίας του ακαδηµαϊκού έτους 2006-2007. ΠΛΗ24 Σχεδιασµός Λογισµικού 13
Απάντηση (α) Επαναληπτική διαδικασία: Εύρεση του πλήθους των βιβλίων που έχει δανειστεί κάθε πελάτης ανά κατηγορία. Η υπό εξέταση επαναληπτική διαδικασία είναι δυνατό να προσδιοριστεί αλγοριθµικά ως εξής: Βρες όλες τις κατηγορίες. Βρες όλους τους δανειζόµενους (borrowers). Για κάθε δανειζόµενο Για κάθε κατηγορία getborrowedcopies(categoryid) Αποθήκευσε το όνοµα της κατηγορίας και το πλήθος των δανεισµών. Επόµενη κατηγορία. Αποθήκευσε δανειζόµενο και διάνυσµα δανεισµών / κατηγορία. Επόµενος δανειζόµενος. Τύπωσε αποτελέσµατα. Το ζητούµενο διάγραµµα ακολουθίας είναι το εξής: ΠΛΗ24 Σχεδιασµός Λογισµικού 14
(β) Επαναληπτική διαδικασία: Εύρεση του πλήθους των εµπρόθεσµων και εκπρόθεσµων επιστροφών ανά χρήστη. Η υπό εξέταση επαναληπτική διαδικασία είναι δυνατό να προσδιοριστεί αλγοριθµικά ως εξής: Βρες όλους τους δανειζόµενους (borrowers). Για κάθε δανειζόµενο getborrowedcopies Για κάθε δανεισµό (borrowedcopy) Αν είναι εµπρόθεσµoς αύξησε τα εµπρόθεσµα. Αλλιώς αύξησε τα εκπρόθεσµα. Επόµενος δανεισµός (borrowedcopy). Αποθήκευσε δανειζόµενο / εµπρόθεσµα / εκπρόθεσµα. Επόµενος δανειζόµενος. Τύπωσε αποτελέσµατα. Το ζητούµενο διάγραµµα ακολουθίας είναι το εξής: Άσκηση 8 Συσκευή αναπαραγωγής δίσκων DVD Να σχεδιάσετε το διάγραµµα καταστάσεων που περιγράφει τις λειτουργίες της πιο κάτω κονσόλας που βρίσκεται στην µπροστινή µεριά µιας τυπικής συσκευής αναπαραγωγής δίσκων DVD (DVD player). ΠΛΗ24 Σχεδιασµός Λογισµικού 15
I/O Προσπαθήστε να δώσετε ένα πλήρες διάγραµµα καταστάσεων. Βεβαιωθείτε ότι δεν ξεχάσατε κάτι δοκιµάζοντας να χρησιµοποιήσετε ένα πραγµατικό DVD player. Απάντηση Το ζητούµενο διάγραµµα καταστάσεων είναι το ακόλουθο: Σε αρκετά σηµεία του πιο πάνω διαγράµµατος καταστάσεων τµήµατα µιας σύνθετης µετάβασης διαµοιράζονται. Πιο συγκεκριµένα, σε κάποια σηµεία δύο ή περισσότερες διακριτές σύνθετες µεταβάσεις έρχονται µαζί και συνεχίζουν σε µία κοινή διαδροµή, διαµοιραζόµενες τη δράση της και τερµατίζοντας στην ίδια κατάσταση στόχο. Σε άλλα σηµεία του διαγράµµατος διασπάται µία µετάβαση σε πολλές αµοιβαία αποκλειόµενες (δηλαδή µη συντρέχουσες) διαδροµές. Και τα δύο αυτά παραδείγµατα γραφικής παραγοντοποίησης, στα οποία ορισµένες µεταβάσεις διαµοιράζονται, έχουν ως αποτέλεσµα απλοποιηµένα διαγράµµατα. Και στις δύο αυτές περιπτώσεις χρησιµοποιούνται µε κατάλληλο τρόπο σηµεία ένωσης, τα οποία παριστάνονται µε ένα µικρό µαύρο κύκλο (ή εναλλακτικά µε ένα ρόµβο). Επίσης, επισηµαίνεται ότι η σύνθετη κατάσταση ( Playing DVD ) του πιο πάνω διαγράµµατος καταστάσεων περιέχει µια ένδειξη ιστορικής κατάστασης (history state indicator), η οποία παρουσιάζεται ως ένας µικρός κύκλος που περιέχει το γράµµα H. Η ένδειξη ιστορικής κατάστασης εφαρµόζεται στην περιοχή καταστάσεων που την περιέχει άµεσα και προσδιορίζει την εξ ορισµού προηγούµενη κατάσταση. Πιο συγκεκριµένα, αν πυροδοτηθεί η µετάβαση προς την ένδειξη ιστορικής κατάστασης, δηλώνεται ότι το αντικείµενο επανέρχεται στην κατάσταση στην οποία βρισκόταν την τελευταία φορά που ήταν στη σύνθετη περιοχή. ΠΛΗ24 Σχεδιασµός Λογισµικού 16
Άσκηση 9 ιαχείριση αρχείων Να σχεδιάσετε ένα διάγραµµα κλάσεων για τη διαχείριση αρχείων σε ένα λειτουργικό σύστηµα µε τις παρακάτω απαιτήσεις: 1. Υπάρχουν τριών ειδών αντικείµενα: Αρχεία (files), συντοµεύσεις (shortcuts) και κατάλογοι (directories). 2. Όλα τα αντικείµενα έχουν όνοµα. 3. Όλα τα αντικείµενα βρίσκονται σε ένα κατάλογο. 4. Μια συντόµευση µπορεί να αφορά κατάλογο ή αρχείο. 5. Όλα τα αντικείµενα ενός καταλόγου έχουν διαφορετικό όνοµα. Υπόδειξη: Θα πρέπει στο διάγραµµα κλάσεων που θα σχεδιάσετε να χρησιµοποιήσετε προσδιοριστές (qualifiers) και περιορισµούς (constraints). Απάντηση Το ζητούµενο διάγραµµα κλάσεων είναι το ακόλουθο: Προσδιοριστές (Qualifiers) Σηµασιολογία Ένας προσδιοριστής είναι ένα ιδιοχαρακτηριστικό (πεδίο) ή µια λίστα ιδιοχαρακτηριστικών, οι τιµές των οποίων χρησιµοποιούνται για να διαιρεθεί το σύνολο των στιγµιοτύπων που συσχετίζονται µε ένα στιγµιότυπο µέσω της συσχέτισης. Οι προσδιοριστές είναι ιδιοχαρακτηριστικά της συσχέτισης. ΠΛΗ24 Σχεδιασµός Λογισµικού 17
Συµβολισµός Ένας προσδιοριστής παρουσιάζεται µε ένα µικρό ορθογώνιο που προσκολλάται στο άκρο της διαδροµής συσχέτισης ανάµεσα στο τελικό ευθύγραµµο τµήµα και το σύµβολο της κλάσης στην οποία συνδέεται. Το ορθογώνιο του προσδιοριστή αποτελεί µέρος της συσχέτισης και όχι της κλάσης. Ο προσδιοριστής είναι προσκολληµένος στο πηγαίο άκρο της συσχέτισης. Ένα στιγµιότυπο της πηγαίας κλάσης µαζί µε µία τιµή του προσδιοριστή χαρακτηρίζουν µοναδικά µία από τις διαµερίσεις του συνόλου των στιγµιοτύπων της κλάσης στόχου στο άλλο άκρο της συσχέτισης, δηλαδή κάθε στόχος ανήκει σε µία µόνο διαµέριση. Η πολλαπλότητα που είναι προσκολληµένη στο τελικό άκρο δηλώνει τους πιθανούς πληθάριθµους του συνόλου των τελικών στιγµιοτύπων που επιλέγονται από το συνδυασµό ενός πηγαίου στιγµιοτύπου και µίας τιµής του προσδιοριστή. Οι ακόλουθες είναι µερικές από τις συνηθισµένες τιµές: 0..1 (µπορεί να επιλεγεί µόνο µία τιµή, αλλά δεν είναι απαραίτητο ότι κάθε πιθανός προσδιοριστής επιλέγει µία τιµή). 1 (κάθε πιθανός προσδιοριστής επιλέγει ακριβώς ένα στιγµιότυπο, συνεπώς το πεδίο ορισµού των προσδιοριστών πρέπει να είναι πεπερασµένο). * (η τιµή του προσδιοριστή είναι ένας δείκτης που διαµερίζει τα στιγµιότυπα στόχους σε υποσύνολα). Τα ιδιοχαρακτηριστικά του προσδιοριστή σχεδιάζονται µέσα στο πλαίσιο του προσδιοριστή. Μπορεί να υπάρχουν ένα ή περισσότερα ιδιοχαρακτηριστικά που παρουσιάζονται ένα σε κάθε γραµµή. Τα ιδιοχαρακτηριστικά των προσδιοριστών έχουν τον ίδιο συµβολισµό µε τα ιδιοχαρακτηριστικά των κλάσεων, µε µόνη διαφορά ότι δεν έχει νόηµα η ύπαρξη αρχικής (εξ ορισµού) τιµής. Αν και είναι σπάνιο, επιτρέπεται να υπάρχει προσδιοριστής σε κάθε άκρο της συσχέτισης. Επιλογές παρουσίασης Ο προσδιοριστής δεν µπορεί να παραληφθεί καθώς παρέχει ουσιαστική πληροφορία και η παράλειψή της θα µπορούσε να αλλάξει το χαρακτήρα της συσχέτισης. Υπάρχει η δυνατότητα ένα εργαλείο να χρησιµοποιεί πιο λεπτή γραµµή για τα ορθογώνια του προσδιοριστή ώστε να διαχωρίζονται από αυτά των κλάσεων. Παράδειγµα Προσδιορισµένες συσχετίσεις ΠΛΗ24 Σχεδιασµός Λογισµικού 18
Περιορισµοί (Constraints) και Σχόλια (Comments) Σηµασιολογία Ένας περιορισµός είναι µία σηµασιολογική σχέση µεταξύ στοιχείων µοντελοποίησης που καθορίζει συνθήκες και προτάσεις που πρέπει να διατηρούνται αληθείς, διαφορετικά το περιγραφόµενο σύστηµα δεν είναι έγκυρο. Υπάρχουν προκαθορισµένοι περιορισµοί (π.χ. {xor}), ενώ άλλοι µπορούν να οριστούν από το χρήστη. Στη δεύτερη περίπτωση περιγράφονται από το χρήστη σε µία γλώσσα, η διερµήνευση της οποίας είναι υποχρέωση του σχεδιαστικού εργαλείου (π.χ. Visual Paradigm). Ένα σχόλιο είναι ένα κείµενο που είναι απ ευθείας προσκολληµένο σε ένα στοιχείο µοντελοποίησης και προσκολλά οποιαδήποτε πληροφορία κειµένου στο στοιχείο. Η πληροφορία έχει γενική σηµασία, αλλά όχι σηµασιολογική ισχύ. Τα σχόλια µπορούν να χρησιµοποιηθούν, µεταξύ άλλων, για να επεξηγήσουν τους λόγους για κάποιες αποφάσεις. Συµβολισµός Ένας περιορισµός αναπαριστάται µε κείµενο σε άγκιστρα ({}). Τα σχεδιαστικά εργαλεία θα πρέπει να παρέχουν µία γλώσσα για έκφραση των περιορισµών, µε πιθανή επιλογή την OCL (Object Constraint Language). Σε διαφορετική περίπτωση ο περιορισµός µπορεί να εκφράζεται σε φυσική γλώσσα. Κάθε περιορισµός έχει γραφεί σε συγκεκριµένη γλώσσα η οποία δε χρειάζεται να παρουσιάζεται. Αν το στοιχείο µοντελοποίησης είναι κείµενο, η συµβολοσειρά του περιορισµού µπορεί να ακολουθεί το κείµενο του στοιχείου, µέσα σε άγκιστρα. Αν πρόκειται για λίστα στοιχείων, ο περιορισµός µπορεί να εµφανιστεί ως στοιχείο της λίστας και ο περιορισµός ισχύει για όλα τα επόµενα στοιχεία της λίστας µέχρι, είτε να εµφανιστεί νέος περιορισµός, είτε να τελειώσει η λίστα. Ένας περιορισµός που έχει προσκολληθεί σε ένα συγκεκριµένο στοιχείο δεν καταργεί ένα πιο γενικό περιορισµό, αλλά µπορεί να τον επεκτείνει και µπορεί να µεταβάλλει συγκεκριµένα στοιχεία του. Για ένα µόνο γραφικό σύµβολο, ο περιορισµός µπορεί να τοποθετηθεί κοντά στο σύµβολο, κατά προτίµηση δίπλα στο όνοµά του αν υπάρχει. Αν υπάρχουν δύο γραφικά σύµβολα, ο περιορισµός εµφανίζεται ως µία διακεκοµµένη γραµµή µε βέλος από το ένα στοιχείο προς το άλλο και µε ετικέτα τον περιορισµό (σε άγκιστρα). Η κατεύθυνση του βέλους περιέχει πληροφορία σχετική µε τον περιορισµό. Ο εξυπηρετούµενος (ουρά του βέλους) απεικονίζεται στην πρώτη θέση και ο παροχέας (κεφαλή του βέλους) στη δεύτερη θέση του περιορισµού. Για πάνω από δύο γραφικά σύµβολα, η συµβολοσειρά του περιορισµού παρουσιάζεται σε µία σηµείωση που προσκολλάται σε κάθε ένα από τα σύµβολα µε διακεκοµµένη γραµµή. Για πάνω από τρεις διαδροµές ίδιου τύπου οι περιορισµοί µπορούν να εµφανιστούν ως µία διακεκοµµένη γραµµή που διασταυρώνεται µε όλες τις διαδροµές. Ένα σχόλιο παρουσιάζεται ως κείµενο µέσα στο εικονίδιο µίας σηµείωσης. εν καθορίζεται συγκεκριµένη σύνταξη από τη UML σχετικά µε τα σχόλια, αλλά µπορεί να επιβάλλεται από το σχεδιαστικό εργαλείο για συγκεκριµένη γλώσσα. ΠΛΗ24 Σχεδιασµός Λογισµικού 19
Παράδειγµα Παραδείγµατα περιορισµών και σχολίων Άσκηση 10 Λειτουργία παραθύρων σε λειτουργικό σύστηµα Να σχεδιάσετε ένα διάγραµµα καταστάσεων που να περιγράφει τον τρόπο λειτουργίας ενός παραθύρου ελαχιστοποίηση (minimization), µεγιστοποίηση (maximization), επαναφορά (restoration) στο λειτουργικό σύστηµα Windows (1 ο διάγραµµα). Να εξετάσετε όλες τις ακόλουθες διαφορετικές περιπτώσεις: 1. Τι συµβαίνει όταν το παράθυρο λάβει ένα γεγονός Restore, ενώ βρίσκεται στην κατάσταση Minimized ή Maximized (2 ο διάγραµµα). 2. Τι συµβαίνει όταν το παράθυρο λάβει ένα γεγονός Minimize, ενώ βρίσκεται στην κατάσταση Restored ή Maximized (3 ο διάγραµµα). 3. Τι συµβαίνει όταν το παράθυρο λάβει ένα γεγονός Maximize, ενώ βρίσκεται στην κατάσταση Restored ή Minimized (4 ο διάγραµµα). Επίσης, να λάβετε υπόψη σας τι συµβαίνει όταν το παράθυρο: 4. Είναι στην κατάσταση Restored ή Maximized και γίνεται επανασχεδίαση ( Redraw ) (5 ο διάγραµµα). 5. Όταν γίνει Minimized το παράθυρο, το λειτουργικό σύστηµα µειώνει την προτεραιότητα της εφαρµογής µε τη χρήση της ενέργειας LowPriority (χαµηλή προτεραιότητα). Η ενέργεια απαιτεί το πέρασµα της παραµέτρου ApplicationID (αναγνωριστικό εφαρµογής) στο λειτουργικό σύστηµα (6 ο διάγραµµα). Nα σχεδιάσετε βήµα-βήµα το ζητούµενο διάγραµµα καταστάσεων, προσδιορίζοντας το (ενδιάµεσο) διάγραµµα καταστάσεων που αντιστοιχεί στο κάθε βήµα. Εποµένως, θα πρέπει να σχεδιάσετε 6 (ενδιάµεσα) διαγράµµατα καταστάσεων και ένα τελικό. ΠΛΗ24 Σχεδιασµός Λογισµικού 20
Απάντηση H λογική πίσω από τη δηµιουργία των ζητούµενων διαγραµµάτων καταστάσης είναι η ακόλουθη: Αρχικά ξεκινάµε φτιάχνοντας το διάγραµµα 1. Για να αντιµετωπίσουµε την περίπτωση 1, ξεκινάµε από το διάγραµµα 1, κάνουµε κάποιες προσθήκες σε αυτό και έτσι προκύπτει το διάγραµµα 2. Για να αντιµετωπίσουµε την περίπτωση 2, ξεκινάµε από το διάγραµµα 1 και πάλι, κάνουµε κάποιες προσθήκες σε αυτό και έτσι προκύπτει το διάγραµµα 3. Για να αντιµετωπίσουµε την περίπτωση 3, ξεκινάµε από το διάγραµµα 1 και πάλι, κάνουµε κάποιες προσθήκες σε αυτό και έτσι προκύπτει το διάγραµµα 4. Για να αντιµετωπίσουµε την περίπτωση 4, ξεκινάµε από το διάγραµµα 1 και πάλι, κάνουµε κάποιες προσθήκες σε αυτό και έτσι προκύπτει το διάγραµµα 5. Για να αντιµετωπίσουµε την περίπτωση 5, ξεκινάµε από το διάγραµµα 1 και πάλι, κάνουµε κάποιες προσθήκες σε αυτό και έτσι προκύπτει το διάγραµµα 6. Στο τέλος ενσωµατώνουµε την πληροφορία που υπάρχει στα διαγράµµατα 1-6 σε ένα διάγραµµα και έτσι προκύπτει το (τελικό) διάγραµµα (διάγραµµα 7). ιάγραµµα 1: Περιγράφει τον τρόπο λειτουργίας ενός παραθύρου ελαχιστοποίηση (minimization), µεγιστοποίηση (maximization), επαναφορά (restoration) στο λειτουργικό σύστηµα Windows. ιάγραµµα 2: Περιγράφει τι συµβαίνει όταν το παράθυρο λάβει ένα γεγονός Restore, ενώ βρίσκεται στην κατάσταση Minimized ή Maximized. ΠΛΗ24 Σχεδιασµός Λογισµικού 21
ιάγραµµα 3: Περιγράφει τι συµβαίνει όταν το παράθυρο λάβει ένα γεγονός Minimize, ενώ βρίσκεται στην κατάσταση Restored ή Maximized. ιάγραµµα 4: Περιγράφει τι συµβαίνει όταν το παράθυρο λάβει ένα γεγονός Maximize, ενώ βρίσκεται στην κατάσταση Restored ή Minimized. ιάγραµµα 5: Περιγράφει τι συµβαίνει όταν το παράθυρο είναι στην κατάσταση Restored ή Maximized και γίνεται επανασχεδίαση ( Redraw ). ιάγραµµα 6: Περιγράφει τι συµβαίνει όταν το παράθυρο γίνει Minimized, οπότε το λειτουργικό σύστηµα µειώνει την προτεραιότητα της εφαρµογής µε τη χρήση της ενέργειας LowPriority (χαµηλή προτεραιότητα). Η ενέργεια απαιτεί το πέρασµα της παραµέτρου ApplicationID (αναγνωριστικό εφαρµογής) στο λειτουργικό σύστηµα. ΠΛΗ24 Σχεδιασµός Λογισµικού 22
ιάγραµµα 7: Είναι το τελικό διάγραµµα καταστάσεων. ΠΛΗ24 Σχεδιασµός Λογισµικού 23