Εφαρμογή Μεθοδολογίας ICONIX Παράδειγμα: Εγγραφή Φοιτητή σε Μάθημα Πρόγραμμα Μεταπτυχιακών Σπουδών στην Εφαρμοσμένη Πληροφορική Προηγμένη Τεχνολογία Λογισμικού, 2016 Α. Χατζηγεωργίου
Θέμα Θεωρείστε ότι συμμετέχετε στην ομάδα ανάπτυξης του συστήματος λογισμικού για ένα Πανεπιστήμιο. Σας δίνεται η κάτωθι περιγραφή ενός τμήματος της συνολικής λειτουργικότητας του συστήματος που σχετίζεται με τη δυνατότητα εγγραφής ενός φοιτητή σε μάθημα το οποίο επιλέγει. “Ο φοιτητής πρέπει να έχει τη δυνατότητα επιλογής ενός μαθήματος. Για να μπορέσει ο φοιτητής να εγγραφεί σε ένα μάθημα θα πρέπει να συντρέχουν κάποιες προϋποθέσεις: α) ο φοιτητής θα πρέπει να έχει περάσει επιτυχώς τα προαπαιτούμενα μαθήματα για το μάθημα που επιλέγει, β) Κάθε μάθημα πραγματοποιείται σε μια αίθουσα ή σε ένα εργαστήριο με καθορισμένη χωρητικότητα. Επομένως θα πρέπει να υπάρχει διαθέσιμος χώρος στην αντίστοιχη αίθουσα ή το εργαστήριο και γ) Αν το επιλεγμένο μάθημα είναι η πτυχιακή εργασία σε έναν καθηγητή θα πρέπει ο αντίστοιχος καθηγητής να έχει περιθώριο επίβλεψης (κάθε καθηγητής μπορεί να επιβλέψει έως και 5 πτυχιακές εργασίες). Αν οποιαδήποτε συνθήκη δεν πληρείται θα εμφανίζεται κατάλληλο μήνυμα και ο φοιτητής δεν θα εγγράφεται στο μάθημα.” Σημείωση 1: To υπό ανάπτυξη σύστημα, στο αρχικό πρωτότυπο, δεν θα συνεργάζεται με βάση δεδομένων. Όλα τα αντικείμενα θα ανακτώνται από δυαδικά αρχεία και θα βρίσκονται στη μνήμη του υπολογιστή. Για την εξεταζόμενη λειτουργικότητα δεν θα πρέπει να σας απασχολεί ο τρόπος ανάκτησης/αποθήκευσης αντικειμένων από/στα αρχεία. Σημείωση 2: Ο φοιτητής έχει πραγματοποιήσει εισαγωγή στο σύστημα (login) σε άλλο στάδιο και δεν μας απασχολεί στο πλαίσιο της εξεταζόμενης λειτουργικότητας
Θέμα (α) Δημιουργήστε το μοντέλο του πεδίου του προβλήματος με βάση την περιγραφή που δόθηκε. (β) Καταγράψτε υπό μορφή λεκτικής περιγραφής μιας (1) περίπτωσης χρήσης την ανωτέρω λειτουργικότητα. (γ) Δημιουργήστε το διάγραμμα ευρωστίας για την περίπτωση χρήσης που περιγράψατε. (δ) Δημιουργήστε το διάγραμμα ακολουθίας για την περίπτωση χρήσης που περιγράψατε. (ε) Αποτυπώστε το τελικό διάγραμμα κλάσεων με όλα τα στοιχεία που προέκυψαν από την ανάλυση και σχεδίαση αναφορικά με το συγκεκριμένο τμήμα λειτουργικότητας. (στ) να αναπτύξετε κώδικα σε Java για: - την υλοποίηση των κλάσεων του διαγράμματος κλάσεων (συμπεριλαμβανομένων των ιδιοτήτων των κλάσεων καθώς και των σχέσεων μεταξύ τους) - την υλοποίηση των μεθόδων του διαγράμματος κλάσεων - τη δοκιμή των μεθόδων με τη χρήση κατάλληλου προγράμματος οδήγησης (π.χ. μέσω εντολών δημιουργίας αντικειμένων και κλήσης μεθόδων επί αυτών, στη μέθοδο main)
Θέμα (α) Δημιουργήστε το μοντέλο του πεδίου του προβλήματος με βάση την περιγραφή που δόθηκε. (β) Καταγράψτε υπό μορφή λεκτικής περιγραφής μιας (1) περίπτωσης χρήσης την ανωτέρω λειτουργικότητα. (γ) Δημιουργήστε το διάγραμμα ευρωστίας για την περίπτωση χρήσης που περιγράψατε. (δ) Δημιουργήστε το διάγραμμα ακολουθίας για την περίπτωση χρήσης που περιγράψατε. (ε) Αποτυπώστε το τελικό διάγραμμα κλάσεων με όλα τα στοιχεία που προέκυψαν από την ανάλυση και σχεδίαση αναφορικά με το συγκεκριμένο τμήμα λειτουργικότητας. (στ) να αναπτύξετε κώδικα σε Java για: - την υλοποίηση των κλάσεων του διαγράμματος κλάσεων (συμπεριλαμβανομένων των ιδιοτήτων των κλάσεων καθώς και των σχέσεων μεταξύ τους) - την υλοποίηση των μεθόδων του διαγράμματος κλάσεων - τη δοκιμή των μεθόδων με τη χρήση κατάλληλου προγράμματος οδήγησης (π.χ. μέσω εντολών δημιουργίας αντικειμένων και κλήσης μεθόδων επί αυτών, στη μέθοδο main)
Μοντέλο Πεδίου προβλήματος
Λεκτική Περιγραφή Περίπτωσης Χρήσης Βασική ροή 1. Ο φοιτητής επιλέγει το μάθημα στο οποίο επιθυμεί να εγγραφεί στην οθόνη «Εγγραφή σε Μάθημα» 2. Το σύστημα εμφανίζει τα προαπαιτούμενα μαθήματα για το επιλεγμένο μάθημα 3. Το σύστημα διαπιστώνει ότι ο φοιτητής έχει περάσει επιτυχώς τα προαπαιτούμενα μαθήματα 4. Το σύστημα διαπιστώνει ότι το επιλεγμένο μάθημα είναι διδασκόμενο μάθημα (όχι πτυχιακή) 5. Το σύστημα διαπιστώνει ότι υπάρχει χώρος στην αίθουσα ή το εργαστήριο στο οποίο διδάσκεται το επιλεγμένο μάθημα 6. Το σύστημα εγγράφει τον φοιτητή στο επιλεγμένο μάθημα και εμφανίζει μήνυμα επιτυχούς εγγραφής 7. Το σύστημα επιστρέφει στην οθόνη «Εγγραφή σε Μάθημα»
Λεκτική Περιγραφή Περίπτωσης Χρήσης Εναλλακτική ροή 1 3.α.1 Το σύστημα διαπιστώνει ότι ο φοιτητής δεν έχει περάσει ένα τουλάχιστον από τα προαπαιτούμενα μαθήματα 3.α.2 Το σύστημα εμφανίζει οθόνη αδυναμίας εγγραφής λόγω μη επιτυχούς ολοκλήρωσης των προαπαιτούμενων για το συγκεκριμένο μάθημα 3.α.3 Ο φοιτητής κλείνει το μήνυμα 3.α.4 Το σύστημα εμφανίζει την οθόνη «Εγγραφή σε Μάθημα» Εναλλακτική ροή 2 4.α.1 Το σύστημα διαπιστώνει ότι το επιλεγμένο μάθημα είναι πτυχιακή εργασία και εμφανίζει πεδίο επιλογής καθηγητή 4.α.2 Ο φοιτητής επιλέγει καθηγητή 4.α.3 Το σύστημα διαπιστώνει ότι ο επιλεγμένος καθηγητής δεν έχει υπερβεί το όριο πτυχιακών εργασιών 4.α.4 Το σύστημα εγγράφει τον φοιτητή στη λίστα επιβλεπομένων φοιτητών του επιλεγμένου καθηγητή 4.α.5 Ο φοιτητής κλείνει το μήνυμα 4.α.6 Το σύστημα εμφανίζει την οθόνη «Εγγραφή σε Μάθημα»
Λεκτική Περιγραφή Περίπτωσης Χρήσης Εναλλακτική ροή 3 4.β.1 Το σύστημα διαπιστώνει ότι το επιλεγμένο μάθημα είναι πτυχιακή εργασία και εμφανίζει πεδίο επιλογής καθηγητή 4.β.2 Ο φοιτητής επιλέγει καθηγητή 4.β.3 Το σύστημα διαπιστώνει ότι ο επιλεγμένος καθηγητής έχει υπερβεί το όριο πτυχιακών εργασιών 4.β.4 Το σύστημα εμφανίζει οθόνη αδυναμίας εγγραφής λόγω αδυναμίας του επιλεγμένου καθηγητή να επιβλέψει άλλες εργασίες 4.β.5 Ο φοιτητής κλείνει το μήνυμα 4.β.6 Το σύστημα εμφανίζει την οθόνη «Εγγραφή σε Μάθημα» Εναλλακτική ροή 4 5.α.1 Το σύστημα διαπιστώνει ότι δεν υπάρχει χώρος στην αίθουσα ή το εργαστήριο στο οποίο διδάσκεται το επιλεγμένο μάθημα 5.α.2 Το σύστημα εμφανίζει οθόνη αδυναμίας εγγραφής λόγω ανεπάρκειας χώρου 5.α.3 Ο φοιτητής κλείνει το μήνυμα 5.α.4 Το σύστημα εμφανίζει την οθόνη «Εγγραφή σε Μάθημα»
Διάγραμμα Ευρωστίας & Αναθ. Λεκτ. Περιγρ. See next slide
Αναθ. Μοντέλο του πεδίου του προβλήματος Παρατηρήσεις επί αλλαγών σε σχέση με το αρχικό μοντέλο του πεδίου του προβλήματος: 1. Από την περιγραφή και την ανάλυση ευρωστίας δεν προκύπτει ότι απαιτούνται διαφορετικές ιδιότητες ή διαφορετικές λειτουργίες από εργαστήρια και αίθουσες και κατά συνέπεια αφαιρείται η σχετική ιεραρχία κληρονομικότητας 2. Το μάθημα που επιλέγει (κατ’ όνομα) ο φοιτητής θα πρέπει να εντοπιστεί ως αντικείμενο και για το λόγο αυτό απαιτείται η προσθήκη κλάσης Λίστα Μαθημάτων στην οποία θα αναζητηθεί το μάθημα 3. Ο βαθμός ενός φοιτητή σε ένα μάθημα, βάσει του οποίου ελέγχεται εάν έχει περάσει τα προαπαιτούμενα δεν αποτελεί ιδιότητα του φοιτητή ούτε το μαθήματος. Μοντελοποιείται ως μια κλάση συσχέτισης μεταξύ Φοιτητή και Μαθήματος. 4. Η εγγραφή ενός φοιτητή σε πτυχιακή υπό την επίβλεψη ενός Καθηγητή συνεπάγεται την ύπαρξη συσχέτιση μεταξύ τους. 5. Πολλαπλότητες: Ένα μάθημα μπορεί να έχει πολλά προαπαιτούμενα, η λίστα μαθημάτων περιλαμβάνει πολλά μαθήματα, ένας Καθηγητής μπορεί να επιβλέπει από κανέναν έως πέντε φοιτητές 6. Ο Χώρος διδασκαλίας περιλαμβάνει ιδιότητα χωρητικότητα
Αναθ. Μοντέλο του πεδίου του προβλήματος
Διάγραμμα Ακολουθίας See next slide
Παρατηρήσεις - Γενική παρατήρηση: κατά τη σχεδίαση του συστήματος υπάρχουν πολλές εναλλακτικές. Οι εναλλακτικές μπορεί να εξασφαλίζουν την ίδια λειτουργικότητα, αλλά διαφέρουν ως προς τα ποιοτικά χαρακτηριστικά της σχεδίασης. Στο ανωτέρω διάγραμμα ακολουθίας έχει ληφθεί μέριμνα ώστε η λειτουργικότητα του συστήματος (οι διάφοροι έλεγχοι) να κατανεμηθούν στις κλάσεις οντοτήτων του πεδίου του προβλήματος (Μάθημα, Αίθουσα, Καθηγητής) και να μην συσσωρευτούν σε μια «Θεϊκή» κλάση - Στο ανωτέρω διάγραμμα ακολουθίας αξιοποιείται ο πολυμορφισμός για την αποφυγή πραγματοποίησης ρητού ελέγχου για τον τύπο του μαθήματος (Διδασκόμενο μάθημα ή Πτυχιακή). Η μέθοδος εγγραφής φοιτητή σε μάθημα καλεί την αφηρημένη μέθοδο (checkOtherPreconditions) η οποία υλοποιείται με διαφορετικό τρόπο στις δύο υποκλάσεις της κλάσης Μάθημα. - στο σύστημα έχει εισαχθεί πέραν του Καταλόγου μαθημάτων και κατάλογος διδασκόντων θεωρώντας ότι ο φοιτητής πληκτρολογεί το όνομα του καθηγητή και κατά συνέπεια πρέπει να εντοπιστεί το αντίστοιχο αντικείμενο Καθηγητής - η ακολουθία των ενεργειών στα πρώτα βήματα της λεκτικής περιγραφής έχει τροποποιηθεί ώστε να είναι σαφές ότι ο έλεγχος των προαπαιτουμένων θα πραγματοποιείται από το αντικείμενο τύπου Μάθημα - οι οθόνες που αφορούν σε μηνύματα εξόδου έχουν αφαιρεθεί μια και τα μηνύματα εμφανίζονται στο σχετικό πρόγραμμα στην κονσόλα (για λόγους απλότητας)
Διάγραμμα Κλάσεων
Υλοποίηση Παρατηρήσεις: - Στον κώδικα των κλάσεων έχουν προστεθεί και άλλες μέθοδοι πέραν αυτών που υπάρχουν στο διάγραμμα κλάσεων για να ελεγχθεί η λειτουργικότητα του συστήματος. Για παράδειγμα, στην κλάση CourseList έχει προστεθεί και μέθοδος προσθήκης μαθήματος - Οι κλάσεις CourseList και ProfessorList έχουν δηλωθεί με στατικές μεθόδους για ευκολία κλήσης τους (χωρίς την ύπαρξη αναφοράς) (Ο πηγαίος κώδικας βρίσκεται στο επισυναπτόμενο Eclipse Project μαζί με τη μέθοδο main προς επίδειξη της λειτουργικότητας του συστήματος)