Περιπτώσεις Χρήσης Ανάλυση Συστημάτων 2007
Εισαγωγή Οι περιπτώσεις χρήσης είναι μια τεχνική αποτύπωσης των λειτουργικών απαιτήσεων ενός συστήματος περιγράφουν τις τυπικές αλληλεπιδράσεις μεταξύ των χρηστών (χειριστών) ενός συστήματος και του συστήματος παρέχουν μια εξιστόρηση του τρόπου χρήσης του συστήματος
Χειριστές Χειριστής (actor) είναι ένας ρόλος που παίζει ένας χρήστης σε σχέση με το σύστημα Οι χειριστές διεκπεραιώνουν περιπτώσεις χρήσης Ένας χειριστής μπορεί να εμπλέκεται σε πολλές περιπτώσεις χρήσεις, και αντίστροφα Ένας χειριστής δεν είναι απαραίτητα άνθρωπος Ένα πρόσωπο μπορεί να παίζει περισσότερους από έναν ρόλους
Κατηγορίες χειριστών Πρωτεύοντες χειριστές Δευτερεύοντες χειριστές Είναι αυτοί που καλούν το σύστημα για την παροχή μιας υπηρεσίας Συνήθως, αλλά όχι πάντα, είναι αυτοί που ξεκινούν μια περίπτωση χρήσης Η περίπτωση χρήσης προσπαθεί να εκπληρώσει το στόχο τους Δευτερεύοντες χειριστές Το σύστημα επικοινωνεί μαζί τους, ενώ διεκπεραιώνει μια περίπτωση χρήσης
Περιγραφή περιπτώσεων χρήσης Σενάρια Η χρήση σεναρίων είναι μια δημοφιλής τεχνική για την περιγραφή περιπτώσεων χρήσης Ένα σενάριο (scenario) είναι μια ακολουθία βημάτων που περιγράφουν την αλληλεπίδραση ενός χρήστη με το σύστημα Η περιγραφή των περιπτώσεων χρήσης με τη χρήση σεναρίων βοηθά στη σωστή ανάπτυξή τους
Παράδειγμα: Αγορά Προϊόντος Περιγραφή σεναρίου με κείμενο Ο πελάτης ξεφυλλίζει τον κατάλογο και προσθέτει τα αντικείμενα που θέλει στο καλάθι αγορών. Όταν θέλει να πληρώσει, περιγράφει τον τρόπο αποστολής των προϊόντων, δίνει τα στοιχεία της πιστωτικής του κάρτας και επιβεβαιώνει την αγορά. Το σύστημα επαληθεύει τα στοιχεία της πιστωτικής κάρτας και επιβεβαιώνει την αγορά, ενώ στέλνει κι ένα e-mail επιβεβαίωσης.
Εναλλακτικά Σενάρια Αφορούν σε υπο-περιπτώσεις του αρχικού σεναρίου, που προκύπτουν κάτω από συγκεκριμένες συνθήκες Έχουν τον ίδιο στόχο με το αρχικό σενάριο Παραδείγματα εναλλακτικών σεναρίων στην «Αγορά Προϊόντος» Η επαλήθευση των στοιχείων της πιστωτικής κάρτας μπορεί να αποτύχει Οι τακτικοί πελάτες δε χρειάζεται να δίνουν με κάθε αγορά τα στοιχεία αποστολής, ούτε αυτά της πιστωτικής τους κάρτας
Περιεχόμενο Περιπτώσης Χρήσης Το περιεχόμενο μιας περίπτωσης χρήσης μπορεί να περιγραφεί από ένα σύνολο σεναρίων τα οποία συνδέονται μεταξύ τους με έναν κοινό στόχο για το χρήστη Κύριο σενάριο επιτυχίας (ΚΣΕ) Περιγράφει το περιεχόμενο της περίπτωσης χρήσης ως μια ακολουθία αριθμημένων βημάτων Επεκτάσεις Περιγράφουν εναλλακτικά σενάρια, που έχουν τον ίδιο στόχο με το ΚΣΕ της περίπτωσης χρήσης Μπορεί να αφορούν σε επιτυχίες ή αποτυχίες
Κύριο Σενάριο Επιτυχίας (ΚΣΕ) Ένα ΚΣΕ είναι μια ακολουθία αριθμημένων βημάτων Κάθε βήμα είναι ένα στοιχείο της αλληλεπίδρασης μεταξύ ενός χειριστή και του συστήματος Κάθε βήμα πρέπει να είναι μια σύντομη εντολή και να δείχνει σαφώς ποιος είναι αυτός που το εκτελεί Κάθε βήμα πρέπει να αναδεικνύει την πρόθεση αυτού που το εκτελεί κι όχι τους μηχανισμούς που αυτός χρησιμοποιεί Προσοχή: Ένα ΚΣΕ δεν αποτελεί περιγραφή της διασύνδεσης με το χρήστη
Παράδειγμα: Αγορά προϊόντος Κύριο σενάριο επιτυχίας Ο πελάτης ξεφυλλίζει τον κατάλογο κι επιλέγει προϊόντα για αγορά Ο πελάτης πηγαίνει στη σελίδα εξόδου Ο πελάτης συμπληρώνει τα στοιχεία αποστολής Το σύστημα παρουσιάζει τις πλήρεις πληροφορίες τιμολόγησης, μαζί με τα έξοδα αποστολής Ο πελάτης συμπληρώνει τα στοιχεία της πιστωτικής του κάρτας Το σύστημα εγκρίνει την αγορά Το σύστημα επιβεβαιώνει αμέσως την πώληση Το σύστημα στέλνει μήνυμα επιβεβαίωσης μέσω ηλεκτρονικού ταχυδρομείου
Επεκτάσεις Μία επέκταση κατονομάζει μια συνθήκη, η οποία έχει ως αποτέλεσμα διαφορετικές αλληλεπιδράσεις από αυτές που περιγράφονται στο ΚΣΕ, και καταγράφει τις διαφορές αυτές Διαδικασία ανάπτυξης μιας επέκτασης Καταγραφή του βήματος του ΚΣΕ, στο οποίο εντοπίζεται η συνθήκη Σύντομη περιγραφή της συνθήκης Απαρίθμηση και σύντομη περιγραφή των βημάτων της επέκτασης Αναφορά στο σημείο επιστροφής στο ΚΣΕ, αν υπάρχει
Εύρεση Επεκτάσεων Προκύπτουν από την ίδια τη δομή της περίπτωσης χρήσης Για κάθε βήμα του ΚΣΕ Πώς μπορεί αυτό να εξελιχθεί διαφορετικά; Πώς μπορεί να αποτύχει; Είναι προτιμότερο να εξετάζονται πρώτα όλες οι συνθήκες των επεκτάσεων, πριν εξεταστούν οι συνέπειές τους
Παράδειγμα: Αγορά προϊόντος Επεκτάσεις 3α. Ο πελάτης είναι τακτικός πελάτης Το σύστημα παρουσιάζει τις τρέχουσες πληροφορίες για τη διεύθυνση αποστολής, την τιμολόγηση και τη χρέωση Ο πελάτης ενδέχεται να αποδεχθεί ή να αναθεωρήσει αυτές τις πληροφορίες. Επιστροφή στο βήμα 6 του ΚΣΕ 6α. Το σύστημα αποτυγχάνει να εγκρίνει την αγορά μέσω πιστωτικής κάρτας Ο πελάτης μπορεί να καταχωρήσει πάλι τα στοιχεία της πιστωτικής του κάρτας, ή να κάνει ακύρωση
Επιπλέον πληροφορίες Συνθήκη Εισόδου (pre-condition) Περιγράφει τί πρέπει να επαληθεύσει το σύστημα ότι ισχύει, πριν επιτρέψει την εκκίνηση μιας περίπτωσης χρήσης Εγγύηση (guarantee) Περιγράφει τί θα εξασφαλίζει το σύστημα στο τέλος της περίπτωσης χρήσης Εγγυήσεις επιτυχίας: ισχύουν πάντα μετά από ένα επιτυχημένο σενάριο Ελάχιστες εγγυήσεις: ισχύουν μετά από κάθε σενάριο Σκανδάλη (trigger) Καθορίζει το συμβάν που αποτελεί αφορμή εκκίνησης της περίπτωσης χρήσης
UML Διαγράμματα Περιπτώσεων Χρήσης Απεικονίζουν τα όρια του συστήματος και τις αλληλεπιδράσεις του με τον έξω κόσμο Μπορούν να θεωρηθούν ως γραφικοί πίνακες περιεχομένων, για το σύνολο των περιπτώσεων χρήσης του συστήματος Δεν είναι υποχρεωτικά, σε αντίθεση με το περιεχόμενο του κειμένου περιγραφής των περιπτώσεων χρήσης Η UML δεν αναφέρει τίποτε για το περιεχόμενο περιγραφής των περιπτώσεων χρήσης. Προσφέρει απλώς μια διαγραμματική μορφή για την απεικόνιση περιπτώσεων χρήσης
Σύνδεσμος Επικοινωνίας Βασικά Σύμβολα Σύμβολο Περιγραφή Χειριστής Σχέση Συμπερίληψης Περίπτωση Χρήσης Σύνδεσμος Επικοινωνίας Όριο Συστήματος Σχόλιο «include» Όνομα Περίπτωσης Χρήσης
Παράδειγμα: Αγορά Προϊόντος Συμπλήρωση Στοιχείων Αποστολής Πιστωτικής Κάρτας Έγκριση Αγοράς Επιβεβαίωση Πώλησης Αποστολή e-mail Επιβεβαίωσης Επιλογή Προϊόντος «include» Πελάτης
Εύρεση χειριστών Ερωτήσεις Ποιοί χρησιμοποιούν την κύρια λειτουργικότητα του συστήματος; Ποιοι συντηρούν και/ή διαχειρίζονται το σύστημα; Ποιες περιφερειακές συσκευές χρησιμοποιεί το σύστημα; Ποια άλλα συστήματα επικοινωνούν με το σύστημα;
Σχέσεις μεταξύ χειριστών Γενίκευση Χρησιμοποιείται για την απεικόνιση κληρονομικών σχέσεων μεταξύ χειριστών Ένας χειριστής Β που κληρονομεί έναν χειριστή Α, επικοινωνεί με τις ίδιες περιπτώσεις χρήσης Η πολλαπλή κληρονομικότητα επιτρέπεται Η χρήση σχέσεων γενίκευσης, όπου αυτές χρειάζονται, απλοποιούν σε μεγάλο βαθμό το διάγραμμα περιπτώσεων χρήσης
Παράδειγμα Γενίκευσης Φυσικό Πρόσωπο Αγορά Προϊόντος Πελάτης Εταιρία
Σχέσεις μεταξύ περιπτώσεων χρήσης Σχέση συμπερίληψης (include) Χρησιμοποιείται όταν υπάρχει κάποια συγκεκριμένη συμπεριφορά, η οποία είναι όμοια σε περισσότερες από μία περιπτώσεις χρήσης Επίσης, χρησιμοποιείται για την απεικόνιση περίπλοκων βημάτων του ΚΣΕ Παράδειγμα: βλ. Προηγ. «Αγορά Προϊόντος»
Παράδειγμα σχέσης συμπερίληψης Εισαγωγή username και password «include» Αγορά Προϊόντος «include» Διαχείριση Προϊόντων Πελάτης Αναλυτής Προϊόντων
Σχέσεις μεταξύ περιπτώσεων χρήσης Σχέση γενίκευσης (generalization) Χρησιμοποιείται όταν υπάρχει μια περίπτωση χρήσης που είναι όμοια με κάποια άλλη, αλλά κάνει κάτι περισσότερο Προσθέτει εναλλακτική συμπεριφορά στη βασική περίπτωση χρήσης Χρησιμοποιείται συνήθως για την απεικόνιση εναλλακτικών σεναρίων
Παράδειγμα σχέσης γενίκευσης Συμπλήρωση Στοιχείων Αποστολής «include» Αγορά Προϊόντος Πελάτης Ο πελάτης είναι τακτικός πελάτης του καταστήματος Παρουσίαση Τρεχόντων Στοιχείων Αποστολής
Σχέσεις μεταξύ περιπτώσεων χρήσης Σχέση επέκτασης (extend) Είναι όμοια με τη σχέση γενίκευσης, με τη διαφορά ότι θέτει συγκεκριμένους κανόνες Η βασική περίπτωση χρήσης (που επεκτείνεται) δηλώνει συγκεκριμένα «σημεία επέκτασης» Η επεκτείνουσα περίπτωση χρήσης μπορεί να προσθέσει συμπεριφορά μόνο σε αυτά τα σημεία επέκτασης Η επεκτείνουσα περίπτωση χρήσης μπορεί να επεκτείνει ένα ή περισσότερα σημεία επέκτασης
Παράδειγμα σχέσης επέκτασης Έγκριση Αγοράς σημεία επέκτασης στοιχεία πιστ. κάρτας «include» Αγορά Προϊόντος «extend» {στοιχεία πιστ. κάρτας} Πελάτης Διόρθωση Στοιχείων Πιστωτικής Κάρτας
Κανόνες χρήσης σχέσεων Χρησιμοποιείτε συμπερίληψη όταν επαναλαμβάνετε τα ίδια σε 2 ή περισσότερες περιπτώσεις χρήσης και θέλετε να αποφύγετε την επανάληψη αυτή Χρησιμοποιείτε γενίκευση όταν περιγράφετε μια παραλλαγή της κανονικής συμπεριφοράς και θέλετε να την απεικονίσετε στο διάγραμμα Χρησιμοποιείτε επέκταση όταν περιγράφετε μια παραλλαγή της κανονικής συμπεριφοράς και θέλετε να χρησιμοποιήσετε μια πιο ελεγχόμενη μορφή, δηλώνοντας τα σημεία επέκτασης στη βασική περίπτωση χρήσης
Επίπεδα Περιπτώσεων Χρήσης Περίπτωση Χρήσης Συστήματος Περιγράφει μια αλληλεπίδραση με το λογισμικό Επιχειρησιακή Περίπτωση Χρήσης Αναλύει τον τρόπο με τον οποίο ανταποκρίνεται μια επιχείρηση στις ανάγκες των πελατών της, ή σε διάφορα συμβάντα
Μέθοδος Διάκρισης Alistair Cockburn Επίπεδο θαλάσσης (sea level) Περιπτώσεις χρήσης αυτού του επιπέδου αναπαριστούν αλληλεπιδράσεις μεταξύ του πρωτεύοντος χειριστή και του συστήματος Επίπεδο ιχθύος (fish level) Αφορά σε περιπτώσεις χρήσης που υπάρχουν απλώς επειδή συμπεριλαμβάνονται από περιπτώσεις χρήσης επιπέδου θαλάσσης Επίπεδο χαρταετού (kite level) Περιλαμβάνει περιπτώσεις χρήσης υψηλού επιπέδου Περιπτώσεις χρήσης αυτού του επιπέδου περιγράφουν τον τρόπο με τον οποίο οι περιπτώσεις χρήσης επιπέδου θαλάσσης εφαρμόζονται στο ευρύτερο πλαίσιο των επιχειρησιακών δραστηριοτήτων Οι περιπτώσεις χρήσης επιπέδου χαρταετού είναι συνήθως επιχειρησιακές περιπτώσεις χρήσης. Οι περιπτώσεις χρήσης επιπέδου θαλάσσης και ιχθύος είναι περιπτώσεις χρήσης συστήματος.
Συμβουλές Οι περιπτώσεις χρήσης αντιπροσωπεύουν μια εξωτερική άποψη του συστήματος Μια πρώτη εξέταση των περιπτώσεων χρήσης γίνεται στα πρώτα στάδια του έργου Πιο λεπτομερείς εκδόσεις των περιπτώσεων χρήσης αναπτύσσονται ακριβώς πριν από τη γραφή του κώδικα για αυτές Ιδιαίτερη σημασία έχει το κείμενο περιγραφής μιας περίπτωσης χρήσης Μην προσπαθείτε να αναλύσετε τις περιπτώσεις χρήσης σε υποπεριπτώσεις, υπο-υποπεριπτώσεις κ.ο.κ. χρησιμοποιώντας λειτουργική διάσπαση (functional decomposition): αποτελεί σπατάλη χρόνου! Κρατήστε τα διαγράμματα περιπτώσεων χρήσης απλά και κατανοητά!
Χρήσιμη Βιβλιογραφία Martin Fowler, UML Distilled: a Brief Guide to the Standard Object Modeling Language, 3rd Edition, Pearson Education Inc., 2004 Alistair Cockburn, Writing Effective Use Cases, Addison-Wesley, 2001