Professional Documents
Culture Documents
Κώστας Βασιλάκης
2
Τεχνολογία Λογισμικού
• Κλάδος της πληροφορικής που ασχολείται με τη μελέτη και την
εφαρμογή συστηματικών, μεθοδικών και ποσοτικοποιημένων
προσεγγίσεων για την ανάπτυξη, λειτουργία και συντήρηση του
λογισμικού [IEEE Standard 610.12]
• Στοχεύει στην ανάπτυξη αξιόπιστου λογισμικού με μεγάλο
κύκλο ζωής που ικανοποιεί τις απαιτήσεις των χρηστών και των
πελατών. Εστιάζει τη προσοχή της στην ανάπτυξη και εφαρμογή
συστηματικών μεθόδων, τεχνικών και εργαλείων που αφορούν
ολόκληρο το κύκλο ζωής του Λογισμικού και υποστηρίζουν την
επιτυχία των παραπάνω στόχων.
4
Η ανάγκη εξακολουθεί να
υφίσταται: Standish 2020
• το 2020:
◦ 19% των έργων ανάπτυξης λογισμικού απέτυχαν και ματαιώθηκε η
ολοκλήρωση τους.
◦ 50% των έργων ολοκληρώθηκε με αποκλίσεις είτε στον προϋπολογισμό
τους είτε στο χρονοπρογραμματισμό τους είτε στην λειτουργικότητα του
προϊόντος λογισμικού
◦ Μόλις 31% των έργων ολοκληρώθηκε σύμφωνα με τον χρονικό και
οικονομικό τους προγραμματισμό
Πηγή: CHAOS REPORT 2000, 2015,2022
Η ανάγκη εξακολουθεί να
υφίσταται
Έργα που τελείωσαν (περίοδος αναφοράς 2011-2015)
Εντός χρονοδιαγράμματος Εντός προϋπολογισμού Εντός στόχων
6
Η ανάγκη εξακολουθεί να
υφίσταται
Επιτυχία Με προβλήματα Αποτυχία
Τεράστιο 6% 51% 43%
Μεγάλο 11% 59% 30%
Μεσαίο 12% 62% 26%
Περιορισμένο 24% 64% 12%
Μικρό 61% 32% 7%
8
Τι γίνεται μετά την αποτυχία;
•Έρευνα του 2002 σε οργανισμούς πληροφορικής
(Πηγή: Cutter Consortium)
◦ Το 78% ενεπλάκη σε διαφωνίες που κατέληξαν σε
δικαστικές διαδικασίες
◦ Από τις περιπτώσεις που έφτασαν σε δικαστική
διαδικασία
◦ Στο 67% το δικαστήριο απεφάνθη ότι το προϊόν δεν είχε τη
λειτουργικότητα που ισχυριζόταν η εταιρεία παραγωγής του
◦ Στο 56% η προθεσμία παράδοσης μετατέθηκε πολλές φορές
◦ Στο 45% τα προβλήματα ήταν τόσο σημαντικά που το προϊόν
δεν ήταν δυνατόν να χρησιμοποιηθεί
10
Μια χρήσιμη αναλογία
11
12
Γιατί είναι δύσκολη η ανάπτυξη
λογισμικού;
• Το πρόβλημα συνηθέστατα είναι ασαφές
• Οι απαιτήσεις είναι συνήθως ασαφείς και –όταν
αποσαφηνίζονται- αλλάζουν
• Το «πεδίο ορισμού» του προβλήματος (το πεδίο των
εφαρμογών) είναι σύνθετο και πολύπλοκο – το ίδιο ισχύει
και για το πεδίο των λύσεων (τις υλοποιημένες εφαρμογές)
• Η διαδικασία ανάπτυξης απαιτεί διαχείριση, η οποία είναι
πολύπλοκη
• Το λογισμικό προσφέρει ευελιξία (και συνακόλουθα
πληθώρα επιλογών)
13
14
Ιδιαιτερότητα του λογισμικού (1/2)
• Εκτός από τα εργαλεία, τις τεχνικές και την αρχιτεκτονική
προσέγγιση υπάρχει και ο άνθρωπος (παραγωγικότητα 1 έως
10)
◦ Πολύ μεγαλύτερη επίπτωση στην ποιότητα απ’ ό,τι π.χ. στον
κατασκευαστικό τομέα
15
16
Γιατί όχι χρήση της γενικής
επιστημονικής μεθοδολογίας; (1/2)
(1) Υπάρχουσες
θεωρίες και (2) Υποθέσεις (3) Προβλέψεις
παρατηρήσεις
Οι υποθέσεις πρέπει Οι υποθέσεις πρέπει
να επανακαθοριστούν προσαρμοστούν
πλήρως
(4) Δοκιμές και
νέες
(6) Επιλογή παρατηρήσεις
ανάμεσα στις
επικρατέστερες Επίτευξη συνέπειας
θεωρίες
(5) Επιβεβαίωση
παλαιάς ή
διατύπωση νέας
θεωρίας
17
18
Ένας λειτουργικός ορισμός της
τεχνολογίας λογισμικού
19
Αξιοπιστία
Χαμηλό κόστος
Ορθότητα
Μεταφέρσιμο
Αποδοτικότητα
Λειτουργικότητα Αυξάνει την
Ευκολία χρήσης παραγωγικότητα
Ευκολία εκμάθησης
Χρήστης Πελάτης
20
Ποιοτικό Λογισμικό (1/3)
• Διαθεσιμότητα: ποσοστό του χρόνου που είναι λειτουργικό και
μπορεί να χρησιμοποιηθεί το σύστημα (π.χ. 99,99%)
• Απόδοση: Η ταχύτητα απόκρισης του συστήματος
• Ευελιξία: Ευκολία τροποποίησης ή προσαύξησης της
λειτουργικότητας
• Ακεραιότητα: διατήρηση συνέπειας των δεδομένων και
ασφάλεια (μόνο οι εξουσιοδοτημένοι χρήστης έχουν πρόσβαση
στις σχετικές λειτουργικότητες και τα δεδομένα)
• Διαλειτουργικότητα: η ικανότητα ανταλλαγής δεδομένων και
υπηρεσιών με άλλα συστήματα
• Συντηρησιμότητα: η ευκολία για διόρθωση σφαλμάτων και
τροποποίηση του λογισμικού
21
22
Ποιοτικό Λογισμικό (3/3)
• Ευρωστία: Ανοχή σε σφάλματα που ξεκινούν από εσφαλμένη
είσοδο χρηστών και αδυναμίες επικοινωνίας και εκτείνονται ως
τη δυνατότητα ανάκαμψης κάτω από ακραίες συνθήκες (π.χ.
διακοπή ρεύματος, καταστροφή δίσκου). Οι δυνατότητες
προβλέψιμου τερματισμού και ορθού χειρισμού σφαλμάτων
είναι σημαντικές.
• Ελεγχξιμότητα: Ο βαθμός ευχέρειας στον πλήρη και διεξοδικό
έλεγχο του λογισμικού και στον εντοπισμό της αιτίας ενός
σφάλματος
• Ευχρηστία: ο βαθμός ευκολίας για την χρήση και εκμάθηση του
λογισμικού από τους τελικούς χρήστες, η δυνατότητα
προσαρμογής στις ιδιαίτερες ανάγκες του κάθε χρήστη και άλλα
θέματα επικοινωνίας ανθρώπου-μηχανής.
23
Αντικείμενο μαθήματος
• Οι βασικές έννοιες της τεχνολογίας λογισμικού
◦ Μεθοδολογίες
◦ Μοντέλα διαδικασιών
◦ Τεχνικές περιγραφής και μοντελοποίησης
◦ Ανάλυση συστήματος – Μηχανική απαιτήσεων
◦ Σχεδιασμός συστήματος
◦ Υλοποίηση: βασικές αρχές της ανάπτυξης συστημάτων
◦ Έλεγχος και ολοκλήρωση
24
1ος στόχος: τεχνική γνώση
• Υπάρχουν διάφορες μεθοδολογίες (φιλοσοφίες) για την
ανάπτυξη συστημάτων λογισμικού
• ... και διάφορες σημειογραφίες μοντελοποίησης
• ... και διάφορες μεθοδολογίες μοντελοποίησης
• ... και διάφορα μοντέλα διαχείρισης του κύκλου ζωής του
λογισμικού (τόσο εμπειρικά όσο και τυπικά)
• ... και διάφορες τεχνικές ελέγχου (π.χ. κατακόρυφος
έλεγχος, οριζόντιος έλεγχος)
• Διαχείριση εκδόσεων και διαμορφώσεων συστήματος
25
28
Συγγράμματα
• Μπορείτε να προμηθευτείτε τα συγγράμματα
◦ Βασικές αρχές τεχνολογίας Λογισμικού, I. Sommerville
◦ Τεχνολογία λογισμικού, Ε. Γιακουμάκης & Ν. Διαμαντίδης
• Συνιστώμενα συγγράμματα
◦ Object-Oriented Software Engineering Using UML, Patterns and
Java, B. Bruegge & A. Dutoit
◦ Software Engineering A Practitioner's Approach 7th edition
Roger S. Pressman.pdf
◦ Object-Oriented and Classical Software Engineering, Eighth
Edition, Stephen R. Schach
29
Η τεχνολογία λογισμικού ως
διαδικασία επίλυσης προβλημάτων
• Θα χρειαστούμε δύο βασικές διαδικασίες:
◦ Ανάλυση
◦ Κατανόηση της φύσης του προβλήματος και αποσύνθεσή του σε
τμήματα (μικρότερα επί μέρους προβλήματα) που είναι πιο
εύκολα στην αντιμετώπισή τους
◦ Σύνθεση
◦ Ολοκλήρωση επί μέρους λύσεων σε σύνολο που απαντά στο
σύνολο του προβλήματος
• Για την επίλυση του προβλήματος
χρησιμοποιούμε τεχνικές, μεθοδολογίες και
εργαλεία
Ανάπτυξη Λογισμικού
Ανάπτυξη λογισμικού
Απαιτήσεις Κατασκευή Λογισμικό
35
36
Συμμετέχοντες, Εργασίες και
Αρμοδιότητες
Ανάγκες, απαιτήσεις
Ανάγκες
Μέτρα βελτίωσης ποιότητας
Απαιτήσεις για ποιότητα υπηρεσιών
Ομάδα διασφάλισης
Επωφελούμενοι
ποιότητας
37
38
Δραστηριότητες Ανάπτυξης (2/2)
• Κατασκευή
◦ Η συγγραφή του κώδικα και η παραγωγή του λογισμικού
• Έλεγχος
◦ Ελέγχουμε αν το λογισμικό έχει την επιθυμητή συμπεριφορά.
Εκτός από την ορθότητα ελέγχονται και άλλες παράμετροι, π.χ.
απόδοση, αξιοπιστία, μεταφερσιμότητα κ.λπ.
• Συντήρηση
◦ Όλες οι παραπάνω δραστηριότητες εκτελούνται για το προϊόν
που έχει ήδη παραδοθεί ώστε να τροποποιηθεί ή/και επεκταθεί η
λειτουργικότητα του λογισμικού.
39
25%
33%
67% 75%
1976-1981 1992-1998 40
Μέση Κατανομή Κόστους
41
Αρχιτεκτονική - 1 10 15 25-100
Κατασκευή - - 1 10 10-25
42
Σχετικό κόστος διόρθωσης
σφαλμάτων
Το ίδιο
διαχρονικά
43
44
Τι τύπου λάθη βρίσκουμε;
• Περίπου 60%-70% των σφαλμάτων στα μεγάλης
κλίμακας συστήματα εντοπίζονται στην ανάλυση
απαιτήσεων και τον σχεδιασμό
• Παράδειγμα: ανάλυση των επιθεωρήσεων από τα έργα
της Jet Propulsion Laboratory:
◦ 1.9 σφάλματα ανά σελίδα προδιαγραφών
◦ 0.9 σφάλματα ανά σελίδα σχεδιασμού
◦ 0.3 σφάλματα ανά σελίδα κώδικα
45
46
Μοντέλα κύκλου ζωής
• Μοντέλο κύκλου ζωής : μια απλοποιημένη περιγραφή
μιας διαδικασίας ανάπτυξης λογισμικού που
παρουσιάζεται από ορισμένη οπτική γωνία. Το μοντέλο
του κύκλου ζωής περιγράφει τον τρόπο οργάνωσης των
δραστηριοτήτων ανάπτυξης (απαιτήσεις, σχεδίαση,
κωδικοποίηση, έλεγχος) του λογισμικού.
• Διαδικασία ανάπτυξης λογισμικού (software process):
υιοθετεί ένα μοντέλο του κύκλου ζωής και το εξειδικεύει
περιγράφοντας μια ακολουθία βημάτων που έχουν ως
αποτέλεσμα την ανάπτυξη λογισμικού υψηλής ποιότητας
στο προβλεπόμενο χρόνο και στο προϋπολογισμένο
κόστος.
47
Τροποποίησε μέχρι
να είμαστε ΟΚ
Συντήρηση μετά
την παράδοση
Ανάπτυξη
Συντήρηση
Απόσυρση
48
Μοντέλο «φτιάξε και διόρθωσε»
• Δεν λειτουργεί παρά μόνο για τις εργασίες των 2-3
πρώτων ετών στο Πανεπιστήμιο
◦ Μέγεθος κώδικα το πολύ 300-500 γραμμές
◦ Δεν υπάρχει σχεδιασμός του συστήματος
◦ Ανάγκη για συνεχείς αλλαγές στον κώδικα
◦ Δεν υπάρχει τυπικός ορισμός προδιαγραφών, άρα δεν
ξέρουμε πότε έχει ολοκληρωθεί η ανάπτυξη
◦ Δύσκολη η συντήρηση (χωρίς προδιαγραφές και σχεδιασμό,
συνήθως και χωρίς τεκμηρίωση...)
• Χρειάζεται να οριοθετήσουμε φάσεις με σαφή αρχή,
τέλος, παραδοτέα και ελέγχους ποιότητας!
49
50
Το Μοντέλο του Καταρράκτη (συνέχεια)
• Ακολουθιακή οργάνωση των δραστηριοτήτων ανάπτυξης
◦ Κάθε φάση αξιολογείται από τη διοίκηση έργου και τον πελάτη και μετά
προχωράμε στην επόμενη
◦ Αν διαπιστώσουμε σφάλματα ή ελλείψεις, επιστρέφουμε στη σχετική
προγενέστερη φάση
• Αξιολόγηση
+ «Εύκολος» χρονικός προγραμματισμός και «απλή» διοίκηση έργου
- Προϋποθέτει σταθερότητα στις απαιτήσεις και την αρχιτεκτονική
Κάτι που συνήθως δεν ισχύει!
- Μικρή συμμετοχή τελικών χρηστών
Η εμπλοκή τους περιορίζεται στις απαιτήσεις και την αποδοχή
- Παραπλανητική εικόνα της πορείας του έργου
Τα αρχικά χρονοδιαγράμματα μπορούν να τηρούνται. Τι γίνεται όμως αν διαπιστωθεί
αργότερα σφάλμα;
- Δεν ευνοεί την ενεργητική διαχείριση κινδύνων
- Πολλοί κίνδυνοι θα διαγνωστούν σε αρκετά προχωρημένη φάση του έργου με πολύ
μικρά περιθώρια παρεμβάσεων
51
Το Επαυξητικό μοντέλο
• Στόχος να καλυφθούν αδυναμίες του
μοντέλου του καταρράκτη
• Το λογισμικό παραδίδεται σταδιακά με
επαυξήσεις (increments) που
εμπλουτίζουν τη λειτουργικότητα
• Επιδίωξη είναι να καλυφθεί σταδιακά
η συνολική λειτουργικότητα ώστε να
μειωθεί η πιθανότητα να αποκλίνει το
τελικό προϊόν από τις επιθυμίες του
πελάτη
52
Το επαυξητικό μοντέλο (συνέχεια)
• Παράδειγμα: έστω ότι αναπτύσσουμε λογισμικό
επεξεργασίας κειμένου
◦ Πρώτο παραδοτέο: βασικές λειτουργίες επεξεργασίας και
διαχείρισης αρχείων
◦ Δεύτερο παραδοτέο: προηγμένες λειτουργίες επεξεργασίες
κειμένου (π.χ. μεταφορά και εναπόθεση, «έξυπνος» χειρισμός
κενών κατά την αντιγραφή, αυτόματη διόρθωση)
◦ Τρίτο παραδοτέο: ορθογραφικός και γραμματικός έλεγχος
◦ Τέταρτο παραδοτέο: προηγμένες δυνατότητες προβολής
κειμένου (σελίδας, πολλαπλών σελίδων, διάρθρωσης
εγγράφου κ.λπ.)
53
54
Το σπειροειδές μοντέλο
• Μη γραμμική διαδοχή των δραστηριοτήτων ανάπτυξης -
Ανάπτυξη σε κύκλους.
• Σε κάθε κύκλο πραγματοποιούνται πολλές δραστηριότητες
χωρισμένες σε τέσσερις υπο-φάσεις:
◦ Καθορισμός στόχων, εναλλακτικών και περιορισμών
◦ Αξιολόγηση εναλλακτικών, εντοπισμός και διαχείριση κινδύνων
◦ Ανάπτυξη και επαλήθευση προϊόντος κύκλου
◦ Σχεδιασμός επόμενων κύκλων
• Οι αποφάσεις για τον προγραμματισμό κάθε κύκλου
καθορίζονται από τους κινδύνους του έργου
• Δημιουργία πρωτοτύπων (prototypes) ως μέσο μείωσης
των κινδύνων του έργου
55
56
Το Σπειροειδές Μοντέλο (συνέχεια)
• Παράδειγμα ανάλυσης επικινδυνότητας
Πρότυπο Εξήγηση Παράδειγμα
Στόχοι Ποιοί είναι οι Να αυξηθεί η ποιότητα του λογισμικού
στόχοι του έργου
Περιορισμοί Περιορισμοί που Εντός τριών ετών
υπάρχουν Χωρίς μεγάλη επένδυση κεφαλαίου
Χωρίς δραστικές αλλαγές στα πρότυπα που ακολουθεί η
εταιρεία
Εναλλακτικές Πιθανοί τρόποι Επαναχρησιμοποίηση ήδη υπάρχοντος πιστοποιημένου
επίτευξης των λογισμικού
στόχων Εισαγωγή τυπικών μεθόδων και επαλήθευσης
Επένδυση σε εργαλεία ελέγχου και επαλήθευσης
Κίνδυνοι Πιθανοί κίνδυνοι Δεν είναι εφικτή η αύξηση της ποιότητας χωρίς
υπέρμετρη αύξηση του κόστους
Οι νέες μέθοδοι μπορεί να οδηγήσουν σε αποχώρηση
προσωπικού
Αντιμετώπιση Πώς περιορίζονται Βιβλιογραφική μελέτη, πιλοτικό έργο, έρευνα για πιθανά
κινδύνων οι κίνδυνοι επαναχρησιμοποιήσιμα στοιχεία, αξιολόγηση της
υποστήριξης από εργαλεία, εκπαίδευση προσωπικού και
σεμινάρια για παροχή κινήτρων
57
59
61
Το Επαναληπτικό μοντέλο
• Το επαναληπτικό μοντέλο, όπως και το σπειροειδές, δεν έχει
γραμμική οργάνωση των δραστηριοτήτων ανάπτυξης.
• Η ανάπτυξη οργανώνεται σε επαναλήψεις (iterations) όπου σε κάθε
επανάληψη εκτελούνται όλες οι δραστηριότητες, ξεκινώντας από τον
προσδιορισμό απαιτήσεων και καταλήγοντας στην κωδικοποίηση και
τον έλεγχο
• Κάθε επανάληψη είναι μικρογραφία ενός έργου ανάπτυξης,
οδηγώντας στην παραγωγή ημιτελών εκτελέσιμων και επιτυχώς
ελεγμένων προγραμμάτων
◦ Η βαρύτητα της κάθε δραστηριότητας σε κάθε επανάληψη είναι διαφορετική:
στις πρώτες επαναλήψεις το βάρος είναι στις απαιτήσεις, στις επόμενες
μετακινείται στη λεπτομερή σχεδίαση, την κωδικοποίηση και τον έλεγχο
62
Το Επαναληπτικό μοντέλο
(συνέχεια)
Ε1 Ε2 Ε3 ... Εν
63
Το Επαναληπτικό μοντέλο
(συνέχεια)
• Τα εκτελέσιμα προγράμματα δεν είναι απαραίτητο να
παρουσιάζονται στους χρήστες – μπορούν να
παραμένουν εσωτερικά στη ομάδα ανάπτυξης. Κάποια
μπορούν ωστόσο να παρουσιάζονται στους χρήστες
• Τα πρωτότυπα επίσης παρέχουν ανατροφοδότηση στην
ομάδα. Κάθε πρωτότυπο έχει έναν βαθμό
λειτουργικότητας και κάθε επόμενο πρωτότυπο τον
επαυξάνει, καταλήγοντας στο τελικό λογισμικό.
• Η διαδικασία ονομάζεται και εξελικτική
πρωτοτυποποίηση.
64
Το Επαναληπτικό μοντέλο
(συνέχεια)
• Χρονική πλαισίωση (timeboxing)
◦ Μία πρακτική του επαναληπτικού μοντέλου, σύμφωνα με την οποία η
ημερομηνία λήξης των επαναλήψεων δεν μετατίθεται. Αν έχουν γίνει
λιγότερα απ’ όσα είχαν σχεδιαστεί παραδίδονται μόνον αυτά.
◦ Σκεπτικό:
◦ Στο τέλος κάθε επανάληψης θέλουμε ελεγμένα προγράμματα. Μπορούμε να
αναβάλλουμε δραστηριότητες για επόμενες φάσεις, αλλά το προϊόν της
επανάληψης πρέπει να είναι ελεγμένο.
◦ Οι επαναλήψεις θέτουν βραχυχρόνιους στόχους (τυπικά: 1-6 εβδομάδες) που
παρακολουθούνται ευκολότερα και δίνουν αίσθηση προόδου.
◦ Στο τέλος κάθε επανάληψης έχουμε και ανασκόπησή της, η οποία καθοδηγεί το
έργο της επόμενης. Έτσι ελέγχουμε την πορεία του έργου, διαπιστώνουμε
προβλήματα και καθυστερήσεις και λαμβάνουμε κατάλληλα μέτρα.
65
67
• Το επαναληπτικό μοντέλο είναι πλέον το κυρίαρχο μοντέλο του κύκλου ζωής του
λογισμικού.
• Παρέχει μεγάλη ευελιξία στον τρόπο που παραδίδεται το λογισμικό
• Εξελικτική πρωτοτυποποίηση (evolutionary prototyping). Με την ολοκλήρωση
κάποιων επαναλήψεων παραδίδονται πρωτότυπα στον πελάτη για αξιολόγηση και
ανατροφοδότηση
• Εξελικτική παράδοση (evolutionary delivery). Με την ολοκλήρωση κάποιων
επαναλήψεων παραδίδονται στον πελάτη εκδόσεις του λογισμικού προς χρήση.
68
Λίγα λόγια για το λογισμικό [1/4] (με
άμεση εφαρμογή στην εργασία)
• Το λογισμικό είναι προϊόν
◦ Πρέπει να ικανοποιεί τον πελάτη
◦ Μερικές φορές αυτό που θέλει ο πελάτης είναι διαφορετικό από αυτό που
χρειάζεται. Εδώ θα πρέπει να τον βοηθήσουμε
◦ Πρέπει να είναι ποιοτικό
• Απαιτήσεις και προδιαγραφές
◦ Χρηστικότητα
◦ Εξελιξιμότητα-επεκτασιμότητα
• Διαχείριση του έργου ανάπτυξης
◦ Ανθρώπινοι παράγοντες
◦ Οικονομικοί, επιχειρηματικοί, νομικοί και κοινωνικοί παράγοντες
69
70
Λίγα λόγια για το λογισμικό [2/4] (με
άμεση εφαρμογή στην εργασία)
• Σχεδιασμός λογισμικού
◦ Αρχιτεκτονική λογισμικού
◦ Αντικειμενοστρεφής σχεδιασμός
• Αξιοπιστία συστημάτων
◦ Αξιοπιστία και επαλήθευση
• Διαχείριση «παλαιών» (legacy) συστημάτων
• Γενικά χαρακτηριστικά
◦ Χρηστικότητα, συντηρησιμότητα, αποδοτικότητα, αξιοπιστία
• Προφανώς απαιτείται καλός προγραμματισμός ΑΛΛΑ ο καλός
προγραμματισμός ΔΕΝ αρκεί
◦ Η ποιότητα του προγραμματισμού είναι εργαλείο, ΟΧΙ ο σκοπός
71
72
Λίγα λόγια για το λογισμικό [4/4] (με
άμεση εφαρμογή στην εργασία)
• Τα προϊόντα λογισμικού έχουν μεγάλη ποικιλομορφία
◦ Οι απαιτήσεις των πελατών είναι πολύ διαφορετικές μεταξύ τους
◦ Δεν υπάρχει 100% τυποποιημένος τρόπος για την διαδικασία
ανάπτυξης λογισμικού
◦ Δεν υπάρχει μοναδική επιλογή για βέλτιστη γλώσσα, βέλτιστο
λειτουργικό, βέλτιστο υλικό, βέλτιστο περιβάλλον ανάπτυξης κ.ο.κ.
◦ Βασική δεξιότητα είναι η γνώση πολλών μεθόδων, εργαλείων και
προσεγγίσεων, η δυνατότητα επιλογής των καταλληλότερων και η
αποτελεσματική εφαρμογή τους.
73
Το λογισμικό ως προϊόν
• Πακέτο - “COTS”
◦ Αυτόνομα συστήματα που παράγονται από ένα οίκο λογισμικού και πωλούνται
στην αγορά σε κάθε ενδιαφερόμενο
• Customized λογισμικό
◦ Συστήματα που αφορούν συγκεκριμένο πελάτη και έχουν αναπτυχθεί στα
πλαίσια συγκεκριμένων συμβολαίων για λογαριασμό του
• Συνδυασμός
◦ Συστήματα που έχουν αναπτυχθεί αλλά απαιτούν παραμετροποίηση σε κάθε
εγκατάσταση
74
Επαγγελματική δεοντολογία
• Η ανάθεση από τον πελάτη ενός έργου ανάπτυξης λογισμικού
σημαίνει ότι σας δείχνει εμπιστοσύνη:
◦ Ότι είστε ικανοί: λογισμικό που δεν λειτουργεί καλά μπορεί να καταστρέψει
έναν οργανισμό
◦ Ότι είστε εχέμυθοι: μπορεί να έχετε πρόσβαση σε ιδιαίτερα ευαίσθητα
δεδομένα (οικονομικά, ιατρικά, εμπορικά μυστικά, κ.λπ.)
◦ Νομικές πτυχές: η νομοθεσία για το λογισμικό είναι αρκετά περίπλοκη
(πνευματικά δικαιώματα, προσωπικά δεδομένα, ευθύνη του προγραμματιστή
κ.λπ.)
◦ Αποδεκτή χρήση και κατάχρηση. Ακόμη και η νομότυπη χρήση μπορεί να
οδηγήσει σε προβλήματα, π.χ. επιθέσεις τύπου DOS (worms, μαζική αποστολή
e-mail, κ.ο.κ.)
75
1
Θέματα που θα παρουσιάσουμε
• Διαχείριση πολυπλοκότητας
◦ Αφαίρεση και μοντελοποίηση
◦ Αποσύνθεση
◦ Ιεραρχίες
◦ Έννοιες συστημάτων
◦ Ανάπτυξη βασιζόμενη σε μοντέλα
• Επισκόπηση UML
◦ Γενικά για τη UML
3
Αφαίρεση
• Τα πολύπλοκα συστήματα είναι δύσκολο να κατανοηθούν
◦ Το φαινόμενο του 7 ± 2: η βραχυπρόθεσμη μνήμη μας (short term memory)
μπορεί να αποθηκεύσει 7 ± 2 ταυτόχρονα (περιορισμός του εγκέφαλου).
◦ Ο αριθμός μητρώου: 2025200100056
• Κατάτμηση (chunking):
◦ Ομαδοποίηση αντικειμένων για μείωση πολυπλοκότητας
◦ Κωδικός τμήματος, έτος εγγραφής, αριθμός έτους
Αριθμός μητρώου
Αφαίρεση
• Η αφαίρεση μας επιτρέπει να αγνοήσουμε λεπτομέρειες
που (στην εκάστοτε φάση) δεν είναι σημαντικές
• Μπορούμε να θεωρήσουμε την αφαίρεση από δύο
προοπτικές:
◦ Η αφαίρεση ως δραστηριότητα:
◦ Η αφαίρεση είναι μία διαδικασία συλλογισμού όπου οι ιδέες διαχωρίζονται
από τα αντικείμενα
◦ Η αφαίρεση ως οντότητα:
◦ Η αφαίρεση είναι η ιδέα που προκύπτει από μία διαδικασία συλλογισμού,
στην οποία οι ιδέες έχουν διαχωριστεί από τα αντικείμενα
5
Μοντέλα
• Το μοντέλο είναι η αφαίρεση ενός
συστήματος
• Χρήσιμο για:
◦ Συστήματα που δεν υπάρχουν πια
◦ Συστήματα που υπάρχουν
◦ Συστήματα που πρόκειται να
κατασκευαστούν στο μέλλον
7
Ποια άλλα μοντέλα χρησιμοποιούμε για
περιγραφή συστημάτων λογισμικού; [1/3]
• Μοντέλο δράσεων (task model)
◦ Διάγραμμα PERT (program evaluation review technique): ποιες
είναι οι εξαρτήσεις μεταξύ των δράσεων;
◦ Στόχος να αποτυπωθούν οι δράσεις, οι εξαρτήσεις και οι διάρκειες και να
βρεθεί η κρίσιμη διαδρομή που δίνει τη διάρκεια του έργου
◦ Το διάγραμμα pert του παραδείγματος έχει δύο κρίσιμες διαδρομές, (10 30
40 50) και (10 20 50) που δίνουν διάρκεια έργου 7 μήνες.
9
Ποια άλλα μοντέλα χρησιμοποιούμε για
περιγραφή συστημάτων λογισμικού; [3/3]
• Μοντέλο ζητημάτων (issues model)
◦ Ποια ζητήματα είναι ανοικτά και ποια έχουν κλείσει;
◦ Τι με εμποδίζει από το να συνεχίσω;
◦ Ποιοι οι περιορισμοί που έχουν τεθεί από τον πελάτη;
◦ Ποιες αποφάσεις πρέπει να ληφθούν;
◦ ... όλα αυτά οδηγούν σε ενέργειες που πρέπει να γίνουν
10
Πρόταση 1: Πρόταση 2:
Στη διεπαφή Στη βάση
χρήστη δεδομένων
Πρόταση 1: Πρόταση 2:
Στη διεπαφή Στη βάση
χρήστη δεδομένων
14
15
Τεχνική αντιμετώπισης πολυπλοκότητας:
αποσύνθεση [3/8]
• Παράδειγμα λειτουργικής αποσύνθεσης (με χρήση
διαγραμμάτων ροής δεδομένων)
(2) περαιτέρω ανάλυση του συστήματος δανεισμού
16
17
Τεχνική αντιμετώπισης πολυπλοκότητας:
αποσύνθεση [5/8]
• Αντικειμενοστρεφής αποσύνθεση
◦ Το σύστημα αποσυντίθεται σε κλάσεις (αντικείμενα)
◦ Κάθε κλάση είναι μία μείζων οντότητα της εφαρμογής
◦ Οι κλάσεις μπορούν να αποσυντίθενται σε μικρότερες κλάσεις
• Ποια αποσύνθεση είναι καλύτερη; Λειτουργική ή
αντικειμενοστρεφής;
18
19
Τεχνική αντιμετώπισης πολυπλοκότητας:
αποσύνθεση [7/8]
• Παράδειγμα: Λειτουργική αποσύνθεση στα «αυτόματα
σχήματα» του Microsoft Office
Autoshape
Change D raw
Autoshape
Draw()
Change()
21
Προσδιορισμός κλάσεων
• Βασική πράξη στην αντικειμενοστρεφή αποσύνθεση
◦ Είναι δυνατόν να γίνεται για ένα νέο σύστημα (σχεδιασμός εξ
αρχής - greenfield engineering)
◦ Είναι δυνατόν να γίνεται για ένα υπάρχον σύστημα
(ανασχεδιασμός – reengineering)
◦ Είναι δυνατόν να θέλουμε να φτιάξουμε μία βασισμένη σε κλάσεις
διεπαφή για ένα υπάρχον σύστημα (σχεδιασμός διεπαφών –
interface engineering)
• Ανάλογα με τον σκοπό του συστήματος μπορούμε να
εντοπίσουμε αντικείμενα διαφορετικού είδους
• Συνεπώς πρώτα προσδιορίζουμε τον σκοπό του
συστήματος!
22
23
Ιεραρχία
• Μέσω της αφαίρεσης προσδιορίζουμε κλάσεις και
αντικείμενα
◦ Που ουσιαστικά είναι τμήματα πληροφορίας
• Ένας συμπληρωματικός τρόπος για να αντιμετωπίσουμε
την πολυπλοκότητα είναι να εγκαθιδρύσουμε συσχετίσεις
ανάμεσα στα τμήματα
• Μία από τις πιο σημαντικές συσχετίσεις είναι η ιεραρχία
• Και από όλες τις ιεραρχίες, υπάρχουν δύο με μεγάλο
ενδιαφέρον:
◦ «τμήμα-του» (part of)
◦ «είναι-ένα» (is-a ή is-kind-of)
24
Συσκευές
εισόδου- Κ.Μ.Ε. Μνήμη
εξόδου
Αριθμητική-
Κρυφή
Λογική Καταχωρητές
μνήμη
Μονάδα
25
Παράδειγμα ιεραρχίας «είναι-ένα»
(ταξονομία)
Συσκευές
εισόδου-
εξόδου
Συσκευές Συσκευές
Συσκευές
αποθήκευσης εισόδου
δικτύου
δεδομένων χρήστη
26
Σύνοψη
• Έχουμε τρεις τρόπους να χειριστούμε την πολυπλοκότητα
◦ Αφαίρεση, αποσύνθεση, ιεραρχία
• Η αντικειμενοστρεφής αποσύνθεση είναι καλή προσέγγιση
◦ Ανάλογα όμως με τον σκοπό του συστήματος μπορούμε να καταλήξουμε σε
διαφορετικά αντικείμενα
• Μπορούμε να οδηγηθούμε στα σωστά αντικείμενα;
◦ Πρέπει να ξεκινήσουμε με μία περιγραφή της λειτουργικότητας του
συστήματος, μετά να συνεχίσουμε στην περιγραφή της δομής του.
◦ Σημαντική είναι επίσης η οριοθέτηση του συστήματος τι ανήκει δηλαδή στο
σύστημα και τι όχι
• Διατάσσουμε τις δραστηριότητες
◦ Η διάταξη μας οδηγεί στον κύκλο ζωής του λογισμικού
27
Συστήματα
• Ένα σύστημα είναι ένα οργανωμένο σύνολο από
αλληλεπιδρώντα μέρη
◦ Στα φυσικά συστήματα, δεν είναι γνωστός ο σκοπός του
◦ Στα σχεδιασμένα συστήματα, ο σκοπός τους είναι αυτός για τον
οποίο φτιάχτηκαν
• Τα τμήματα των συστημάτων μπορεί να θεωρηθούν με τη
σειρά τους ως συστήματα
◦ Αυτά καλούνται υποσυστήματα
• Παραδείγματα συστημάτων
◦ Φυσικά: σύμπαν, γη, ωκεανός
◦ Σχεδιασμένα: Αεροπλάνο, ρολόι, GPS
◦ Υποσυστήματα: τουρμπίνα, μπαταρία, δορυφόρος
28
29
Συστήματα, μοντέλα, Όψεις, Σημειογραφίες –
άτυπη αναπαράσταση
Εξομοιωτής
Αεροπλάνο πτήσης Σύστημα
καυσίμων
Μοντέλο 2
Όψη 2
Όψη 1
Σύστημα
Όψη 3
Μοντέλο 1
Σχέδια Καλωδιώσεις
ρεύματος
Μοντέλο κλίμακας
Οι όψεις και τα μοντέλα σε πολύπλοκα συστήματα συνήθως επικαλύπτονται
30
Αεροπλάνο: Διάγραμμα
Σύστημα αντικειμένων
32
33
Ανάπτυξη λογισμικού καθοδηγούμενη
από μοντέλα [1/2]
• Ξεκινάμε με αποτύπωση της πραγματικότητας
◦ Σε ένα χρηματιστήριο υπόκεινται σε διαπραγμάτευση μετοχές πολλών
εταιρειών. Κάθε εταιρεία προσδιορίζεται από μία συντομογραφία
StockExchange * * Company
Lists tickerSymbol
34
Ανάπτυξη λογισμικού
καθοδηγούμενη από μοντέλα [2/2]
• Ακολουθεί η υλοποίηση (παράδειγμα σε Java)
35
Παράδειγμα ανάπτυξης καθοδηγούμενης από
μοντέλα: Apache Cordova
• Περιβάλλον ανάπτυξης για εφαρμογές κινητών
τηλεφώνων / smartphones
◦ Βασίζεται στις τεχνολογίες HTML, CSS & JS
◦ Η ανάπτυξη γίνεται μία φορά και λειτουργεί σε όλες τις
συσκευές
◦ Δωρεάν διάθεση, ανοικτός κώδικας
◦ Αντίστοιχα υπάρχουν και άλλες πλατφόρμες π.χ. Adobe
phonegap, Appcelerator
36
37
Παράδειγμα
ανάπτυξης
καθοδηγούμενης
από μοντέλα:
Apache Cordoba
38
40
Βασικά διαγράμματα
• Διαγράμματα περιπτώσεων χρήσης (use case diagrams)
◦ Περιγράφουν τη λειτουργική συμπεριφορά του συστήματος από την οπτική
του χρήστη
• Διαγράμματα κλάσεων
◦ Περιγράφουν τη στατική δομή του συστήματος:
• Διαγράμματα ακολουθίας
◦ Περιγράφουν τη δυναμική συμπεριφορά ανάμεσα σε αντικείμενα του
συστήματος
• Διαγράμματα μηχανής καταστάσεων
◦ Περιγράφουν τη δυναμική συμπεριφορά μεμονομένων αντικειμένων
• Διαγράμματα δραστηριότητας
◦ Περιγράφουν τη δυναμική συμπεριφορά του συστήματος, και συγκεκριμένα
της ροής εργασιών
41
Βασικοί συμβολισμοί της UML
• H UML χρησιμοποιεί γραφικές αναπαραστάσεις με μορφή
γραφημάτων που έχουν κόμβους και ακμές
◦ Οι κόμβοι αναπαριστούν οντότητες και σημειώνονται με:
◦ Παραλληλόγραμμα αν πρόκειται για κλάσεις ή στιγμιότυπα
◦ Ελλείψεις αν πρόκειται για λειτουργίες
• Τα ονόματα των κλάσεων δεν υπογραμμίζονται
◦ Book
• Τα ονόματα των στιγμιοτύπων υπογραμμίζονται
◦ DonQuixote:Book
• Μία ακμή μεταξύ δύο κόμβων δηλώνει μία συσχέτιση
μεταξύ των κόμβων
42
43
Μια γρήγορη ματιά: Διαγράμματα περιπτώσεων
χρήσης
Κατηγοριοποίηση
Μάθημα Περίπτωση
Δώσε χρήσης
διάλεξη
Διδάσκων
Actor Βάλε
εργασία
Φοιτητής
45
Μια γρήγορη ματιά: Διαγράμματα κλάσεων
Συσχέτιση
Κλάση
Πολλαπλότητα SimpleWatch
1 1 1 1
2 1 2 1
PushButton Display Battery Time
46
Πολλαπλότητα Watch
1 1 1 1
2
1 2 1
PushButton
LCDDisplay Battery Time
state
push() blinkIdx Load Now
release()
blinkSeconds()
blinkMinutes()
blinkHours()
stopBlinking()
Λειτουργίες
Χαρακτηριστικό referesh()
47
Μια γρήγορη ματιά: διαγράμματα
ακολουθίας
• Τα διαγράμματα κλάσεων παρέχουν την στατική
όψη (δομή) των κλάσεων
• Τα διαγράμματα ακολουθίας (sequence diagrams)
παρέχουν τη δυναμική όψη, όπως και τα
διαγράμματα επικοινωνίας
• Εμφανίζουν την επικοινωνία αντικειμένων μέσω
της ανταλλαγής μηνυμάτων
48
pressButton1() blinkHours()
pressButton1()
blinkMinutes()
pressButton2()
incrementMinutes()
refresh()
pressButton1and2()
commitNewTime()
stopBlinking()
Ενεργοποίηση
50
πάτημαΚουμπιού1
πάτημαΚουμπιού2 Αύξησε
Σταμάτα να Αναβόσβησε
αναβοσβήνεις δευτερόλεπτα δευτερόλεπτα
Τελική κατάσταση
Αναπαριστά τη συμπεριφορά ενός μοναδικού αντικειμένου την οποία
κρίνουμε ενδιαφέρουσα. 51
Άλλοι συμβολισμοί της UML
• Η UML παρέχει πολλές άλλες σημειογραφίες, π.χ.
◦ Διαγράμματα θέσης σε λειτουργία για μοντελοποίηση διαμορφώσεων
◦ Χρήσιμο για έλεγχο και διαχείριση εκδόσεων
◦ Θα εισάγουμε τις σημειογραφίες σταδιακά, όταν τις
χρειαζόμαστε
• Η UML πλέον ενσωματώνει την OCL (Object constraint language)
για ορισμό περιορισμών στα αντικείμενα (δείτε:
http://www.omg.org/spec/OCL/)
◦ Παράδειγμα αμετάβλητης (invariant): inv: self.age >= 0
◦ Παράδειγμα προ-συνθήκης (precondition)
context Auction::placeBid(bidder:Id, bid:Money)
pre : not bidder.oclIsUndefined()
pre : not bid.oclIsUndefined()
pre : bid.currency = self.bids->first().amount.currency
pre : bid > self.currentBid().money
52
1
Θέματα που θα παρουσιάσουμε
• Τι είναι η UML
• Αναλυτική παρουσίαση διαγραμμάτων
◦ περιπτώσεις χρήσης
◦ διαγράμματα κλάσεων
◦ διαγράμματα ακολουθίας
◦ διαγράμματα δραστηριότητας
3
Διαγράμματα περίπτωσης χρήσης
• Χρησιμοποιείται κατά την εκμαίευση των απαιτήσεων και στην
ανάλυση των απαιτήσεων για να αναπαραστήσει την «εξωτερική
συμπεριφορά» του συστήματος (η συμπεριφορά όπως φαίνεται
από εξωτερικό προς το σύστημα παρατηρητή)
• Βασικά σύμβολα:
◦ Actor: αναπαριστά έναν ρόλο – κατά κάποιο τρόπο έναν χρήστη του
συστήματος.
◦ Περίπτωση χρήσης: μια κατηγορία λειτουργικότητας που παρέχεται από το
σύστημα
• Μοντέλο περιπτώσεων χρήσης: το σύνολο των περιπτώσεων
χρήσης, περιγράφει πλήρως τη λειτουργικότητα του συστήματος
Αγόρασε
εισιτήριο
Επιβάτης
4
Actor
• Ο actor μοντελοποιεί μία εξωτερική
οντότητα που αλληλεπιδρά
(επικοινωνεί) με το σύστημα
◦ Άνθρωπος
◦ Εξωτερικό σύστημα (τρίτο σύστημα)
◦ Φυσικό περιβάλλον (π.χ. καιρός)
• Ο actor έχει ένα μοναδικό όνομα και
μία προαιρετική περιγραφή
• Παραδείγματα: Προαιρετική
Επιβάτης ◦ Επιβάτης: Ένας άνθρωπος στο τραίνο περιγραφή
◦ Δορυφόρος GPS: ένα εξωτερικό σύστημα
Όνομα που παρέχει στο δικό μας σύστημα
συντεταγμένες GPS
5
Περίπτωση χρήσης
• Μία περίπτωση χρήσης περιγράφει μία
κατηγορία λειτουργικότητας που παρέχεται
από το σύστημα
• Οι περιπτώσεις χρήσης μπορούν να
περιγράφονται συμπληρωματικά και με
Αγόρασε κείμενο, με εστίαση στη ροή συμβάντων
εισιτήριο μεταξύ actor και συστήματος
• Η περιγραφή κειμένου μιας περίπτωσης
χρήσης έχει 6 τμήματα:
◦ Μοναδικό όνομα
◦ Actors που μετέχουν
◦ Συνθήκες εισόδου
◦ Συνθήκες εξόδου
◦ Ροή συμβάντων
◦ Ειδικές απαιτήσεις
7
Παράδειγμα: UC «δανεισμός
αντιτύπων»
1. Όνομα: δανεισμός αντιτύπων
2. Πρωτεύων actor: βιβλιοθηκονόμος
3. Ενδιαφερόμενοι και απαιτήσεις των:
1. Βιβλιοθηκονόμος: θέλει να καταγράφει ορθά και σύντομα τον δανεισμό
ενός ή περισσοτέρων αντιτύπων
2. Δανειζόμενος: να δανειστεί τα αντίτυπα και να γνωρίζει την προθεσμία
επιστροφής
3. Προϊστάμενος βιβλιοθήκης: να δανείζονται μόνο οι δικαιούμενοι. Να
γνωρίζει ποιος έχει δανειστεί τι. Γρήγορη εξυπηρέτηση. Μη υπέρβαση
ορίων δανεισμού.
9
Παράδειγμα: Εναλλακτικές ροές UC
«δανεισμός αντιτύπων»
* Σε οποιοδήποτε σημείο το λογισμικό καταρρέει. [* σε οποιοδήποτε βήμα]
1. Ο βιβλιοθηκονόμος εκκινεί το Σύστημα.
2. Το Σύστημα ταυτοποιεί το βιβλιοθηκονόμο.
3. Ο βιβλιοθηκονόμος εκκινεί το δανεισμό για τα εναπομείναντα αντίτυπα.
2α. Ο δανειζόμενος έρχεται για πρώτη φορά για δανεισμό. [2α εναλλακτική του βήματος 2]
1. Ο βιβλιοθηκονόμος επιβεβαιώνει ότι ο δανειζόμενος μπορεί να δανειστεί βιβλία από τη
Βιβλιοθήκη.
1α. Ο δανειζόμενος δε δικαιούται να δανειστεί από τη Βιβλιοθήκη.
1. Ο δανεισμός τερματίζει.
2. Ο βιβλιοθηκονόμος καταχωρίζει τον δανειζόμενο στο σύστημα με τη Διαχείριση
Δανειζομένου.
5α. Το Σύστημα δε βρίσκει το αντίτυπο του βιβλίου [5α εναλλακτική του βήματος 5]
1. Ο βιβλιοθηκονόμος κρατά το αντίτυπο για να διαπιστώσει το σφάλμα αργότερα.
2. Ο δανεισμός τερματίζει.
7α. Ο δανειζόμενος δεν μπορεί να δανειστεί βιβλία [7α εναλλακτική του βήματος7]
1. Ο βιβλιοθηκονόμος ενημερώνει το δανειζόμενο.
2. Κρατά τα εναπομείναντα αντίτυπα για να επιστρέψουν στα ράφια.
3. Ο δανεισμός τερματίζεται.
10
11
Περιγραφή περιπτώσεων χρήσης -
σενάρια (2/2)
• Ανάλογα με το πόσο λεπτομερής είναι η διατύπωση των βημάτων και
των δυνατών σεναρίων, έχουμε τρεις μορφές περιπτώσεων χρήσης που
είναι:
◦ Σύντομη . Περιγράφουμε την περίπτωση χρήσης σε μία παράγραφο καταγράφοντας
τη βασική ροή
◦ Ουσιώδης (essential use cases). Περιγράφονται αναλυτικά όλα τα βήματα της
αλληλεπίδρασης με όλες τις εναλλακτικές ροές.
◦ Συστήματος (system use cases). Χρησιμοποιούνται κυρίως ως μέσο προδιαγραφής
των απαιτήσεων.
• Η σύντομη περιγραφή χρησιμοποιείται κυρίως για μία πρώτη
καταγραφή της περίπτωσης χρήσης στα πρώτα στάδια της εξαγωγής
των απαιτήσεων. Όταν οι περιπτώσεις χρήσης εξετάζονται
λεπτομερέστερα, περιγράφονται με χρήση της ουσιώδους μορφής. Εάν
θέλουμε να προδιαγράψουμε με λεπτομέρεια την αλληλεπίδραση του
actor με το σύστημα χρησιμοποιούμε τη μορφή του συστήματος.
12
13
Οι περιπτώσεις χρήσης μπορούν να
αλληλοσυνδέονται – σχέση «extends»
• Η σχέση επέκτασης (extends) χρησιμοποιείται για αναπαράσταση
περιπτώσεων χρήσης με εμπλουτισμένη λειτουργικότητα ή
σπανίως καλούμενες
◦ Όταν μία περίπτωση χρήσης Α επεκτείνει τη λειτουργικότητα μίας
περίπτωσης χρήσης Β, η Β ΔΕΝ το γνωρίζει (η Β σε ΚΑΜΜΙΑ περίπτωση δεν
τροποποιείται για να «εξυπηρετήσει» την Α και στο κείμενο της Α ΔΕΝ
αναφέρεται η Β).
◦ Αν οι Β, Γ, Δ, Ε συνδέονται με την Α με σχέση επέκτασης, τότε στα πλαίσια
της Α είναι πιθανό να κληθεί μία ή περισσότερες από τις Β, Γ, Δ, Ε, μπορεί
όμως και καμία
◦ Μπορούμε να το παραλληλίσουμε με «υπό συνθήκη κλήση διαδικασίας» ή
«διακοπή από το υλικό» (μπορεί να γίνει, μπορεί και όχι)
◦ Η σχέση σημειώνεται με διάστικτη γραμμή με φορά ΑΠΟ αυτή που
επεκτείνει ΠΡΟΣ αυτή που επεκτείνεται. Η διάστικτη γραμμή επιγράφεται με
τη λέξη-κλειδί <<extend>>
14
<<extends>>
<<extends>>
ΈχειΒλάβη <<extends>> ΕξάντλησηΧρονικούΟρίου
Ακύρωση ΔενΥπάρχουνΡέστα
15
Χρήση της σχέσης επέκτασης
• Θέλουμε να τροποποιήσουμε μία περίπτωση χρήσης, χωρίς να
αλλάξουμε το κείμενό της.
• Το τελικό προϊόν λογισμικού παράγεται σε παραπάνω από μία
εκδόσεις, οι οποίες προσθέτουν λειτουργικότητα σε μία βασική
έκδοση. Οι περιπτώσεις χρήσης της βασικής έκδοσης
συντάσσονται αγνοώντας την πιθανή πρόσθετη λειτουργικότητα
των εμπλουτισμένων εκδόσεων. Οι περιπτώσεις χρήσης των
εμπλουτισμένων εκδόσεων συντάσσονται ως επεκτάσεις της
λειτουργικότητας της βασικής έκδοσης.
• Υπάρχουν πολλά ασύγχρονα γεγονότα που μπορεί να
διακόψουν τη ροή των βημάτων της περίπτωσης χρήσης.
16
17
Οι περιπτώσεις χρήσης μπορούν να
αλληλοσυνδέονται – σχέση «includes»
<<include>>
A B
18
Επιβάτης
ΑγοράΠολλαπλούΕισητηρίου
ΑγοράΑπλούΕισητηρίου
<<includes>>
<<includes>>
<<extends>>
ΣυλλογήΑντιτίμου
<<extends>> <<extends>>
<<extends>>
ΕξάντλησηΧρονικούΟρίου
ΔενΥπάρχουνΡέστα Ακύρωση ΈχειΒλάβη
19
Αφηρημένες έναντι συγκεκριμένων
περιπτώσεων χρήσης
• Περιπτώσεις χρήσης που ενεργοποιούνται αυτόνομα
ονομάζονται συγκεκριμένες (concrete)
• Περιπτώσεις χρήσης που ΔΕΝ ενεργοποιούνται αυτόνομα
–παρά μόνο ως τμήμα άλλων μέσω συμπερίληψης–
ονομάζονται αφηρημένες (abstract)
<<include>>
ΑγοράΑπλού
Εισιτηρίου
Συλλογή
Αντιτίμου
Αγορά
Πολλαπλού
Εισιτηρίου
<<include>>
20
21
Οι περιπτώσεις χρήσης μπορούν να
κατηγοριοποιούνται
Κατηγοριοποίηση
Μάθημα Περίπτωση
Δώσε χρήσης
διάλεξη
Διδάσκων
Actor Βάλε
εργασία
Φοιτητής
22
23
Διαφορές συμπερίληψης -
επέκτασης
• Στη συμπερίληψη, έχουμε σαφή αναφορά της συμπεριλαμβανόμενης
περίπτωσης χρήσης στο κείμενο που περιγράφει τη βασική.
• Στη σχέση της επέκτασης η λειτουργικότητα της βασικής περίπτωσης
χρήσης επεκτείνεται, χωρίς η ίδια να το γνωρίζει. Όταν
χρησιμοποιείται η επέκταση, δε γίνεται κάποια αναφορά στα βήματα
της βασικής περίπτωση χρήσης σε αυτή που την επεκτείνει.
• Οι επεκτάσεις στις περιγραφές των περιπτώσεων χρήσης
περιγράφονται εκτός των βημάτων των ροών, σε ξεχωριστή ενότητα,
ως σημεία επέκτασης (extension points).
• Ένα τελευταίο σημαντικό σημείο διαφοροποίησης της επέκτασης από
τη συμπερίληψη είναι ότι η βασική περίπτωση χρήσης μπορεί να
νοηθεί ανεξάρτητα από τις επεκτάσεις της.
24
25
Η γενίκευση ισχύει και για τους actors
Χρησιμοποιούμε τη
γενίκευση των actor
όταν θέλουμε να
Πρόσωπο δείξουμε ομοιότητες
μεταξύ των actors
Γενίκευση Οι actors θα πρέπει
να εμφανίζουν κοινή
συμπεριφορά σε
σχέση με το σύστημα
Καθηγητής Φοιτητής
26
http://www.math-
cs.gordon.edu/local/courses/cs211
/ATMExample/Intro.html
27
Παράδειγμα Διαγράμματος Χρήσης UML
Μολονότι τα «άνοιγμα
διαφράγματος»,
«ενεργοποίηση φλας»,
Σωστό «κλείσιμο
διαφράγματος» ΕΙΝΑΙ
λειτουργίες της
φωτογραφικής μηχανής,
ΔΕΝ τα εκτελεί ο
φωτογράφος ΑΛΛΑ η
φωτογραφική μηχανή
Λάθος ως τμήμα της
διαδικασίας υλοποίησης
των προσταγών του
φωτογράφου!
http://www.andrew.cmu.edu/course/90-754/umlucdfaq.html
28
30
31
Γενικές οδηγίες για συγγραφή
περιπτώσεων χρήσης (2/3)
• Διαχείριση οντοτήτων δεδομένων
◦ Περιπτώσεις χρήσης που διαχειρίζονται πληροφορίες για οντότητες
δεδομένων που αποθηκεύονται στο σύστημα (π.χ. σε ένα σύστημα
βιβλιοθήκης, οι δικαιούμενοι δανεισμό)
◦ Μπορούμε να έχουμε περιπτώσεις χρήσης για «ανάκτηση»,
«δημιουργία», «τροποποίηση», «διαγραφή», αλλά αν η διαχείριση
είναι απλή μπορούμε να τα συνενώσουμε σε «Διαχείριση
οντότητας» (π.χ. «Διαχείριση δανειζομένων»).
32
33
Διαγράμματα κλάσεων
• Τα διαγράμματα κλάσεων αναπαριστούν τη δομή του
συστήματος
• Χρησιμοποιούνται:
◦ Κατά την ανάλυση για να μοντελοποιηθούν οι έννοιες στο πεδίο της
εφαρμογής
◦ Κατά τον σχεδιασμό του συστήματος για να μοντελοποιηθούν τα
υποσυστήματα
◦ Κατά τον σχεδιασμό των αντικειμένων για να οριστούν η λεπτομερής
συμπεριφορά και τα γνωρίσματα των κλάσεων
FareCatalogue Trip
Table zone2price zone:Zone
Enumeration getZones() * * Price: Price
Price getPrice(Zone)
34
Βασικές έννοιες
αντικειμενοστρεφούς μοντέλου
• Αντικείμενο: μία αυτόνομη και ανεξάρτητη οντότητα που
χαρακτηρίζεται από:
◦ Ταυτότητα: το διαχωρίζει από τα άλλα αντικείμενα και παραμένει
αναλλοίωτη καθ’ όλη τη διάρκεια ζωής του αντικειμένου, ανεξάρτητα από
άλλες αλλαγές στην κατάστασή του
◦ Κατάσταση: ένα σύνολο δεδομένων που αφορούν το αντικείμενο και
αποτυπώνουν όλες τις ιδιότητες του αντικειμένου
◦ Συμπεριφορά: ο τρόπος με τον οποίο το αντικείμενο αντιδρά σε σχέση με
τις αλλαγές στην κατάστασή του και την επικοινωνία με άλλα αντικείμενα.
Υλοποιείται μέσω των πράξεών του. Η συμπεριφορά επιδρά στην
κατάσταση του αντικειμένου και τη διαμορφώνει
• Αναπαράσταση αντικειμένου: Όνομα (ταυτότητα)
Κατάσταση
Πράξεις
35
Βασικές έννοιες αντικειμενοστρεφούς
μοντέλου (συνέχεια)
• Αντικείμενα (συνέχεια)
◦ Οι πράξεις του αντικειμένου διακρίνονται σε ελεγκτικές (δεν τροποποιούν την
κατάσταση) και κατασκευαστικές (τροποποιούν την κατάσταση)
◦ Ο εξωτερικός κόσμος γνωρίζει για το αντικείμενο το όνομά του (ταυτότητα) και
το όνομα κάποιων πράξεών του αλλά ΟΧΙ το πώς υλοποιούνται οι πράξεις ή την
κατάστασή του (ενθυλάκωση – encapsulation)
◦ Μεταξύ αντικειμένων μπορούμε να έχουμε στατικές σχέσεις (δεν αλλάζουν με
τον χρόνο) ή δυναμικές σχέσεις (μεταβάλλονται χρονικά)
36
37
Βασικές έννοιες αντικειμενοστρεφούς
μοντέλου (συνέχεια)
• Αλληλεπίδραση αντικειμένων
◦ Τα αντικείμενα αλληλεπιδρούν αποστέλλοντας μεταξύ τους
μηνύματα
◦ Το μήνυμα είναι ένα αίτημα εκτέλεσης πράξης και το
παραλαμβάνον αντικείμενο αποκρίνεται εκτελώντας την πράξη
◦ Ένα μήνυμα μπορεί να συνοδεύεται από παραμέτρους και να
επιστρέφει αποτέλεσμα
◦ Τα μηνύματα που μπορούν να αποσταλούν σε ένα αντικείμενο
κοινοποιούνται στη διεπαφή του αντικειμένου – μόνο οι
υπογραφές των μηνυμάτων κοινοποιούνται μέσω της διεπαφής
ενώ ο τρόπος υλοποίησής τους αποκρύπτεται.
38
39
Βασικές έννοιες αντικειμενοστρεφούς
μοντέλου (συνέχεια)
• Πολυμορφισμός
◦ Η χρήση του ίδιου μηνύματος στη διεπαφή πάνω από μίας
κλάσεων για υλοποίηση εννοιολογικά όμοιων αλλά
διαφορετικών σε λεπτομέρειες υλοποίησης πράξεων
◦ Π.χ. στη Java η μέθοδος .toString() υλοποιείται σε όλα τα
αντικείμενα με εντελώς διαφορετικό τρόπο, κάνει ωστόσο
εννοιολογικά το ίδιο πράγμα
◦ Με τον πολυμορφισμό ο αποστολέας ενός μηνύματος δεν
χρειάζεται να γνωρίζει την κλάση του αποδέκτη του
μηνύματος, παρά μόνο το γεγονός ότι το μήνυμα ανήκει στη
διεπαφή του
40
41
Βασικές έννοιες αντικειμενοστρεφούς
μοντέλου (συνέχεια)
• Κλάσεις, αφαίρεση και διεπαφές
◦ Οι κλάσεις με τον μηχανισμό της ενθυλάκωσης και την κοινοποίηση των
διεπαφών βοηθούν στην επίτευξη της αφαίρεσης
◦ Μπορούμε να αλλάξουμε οποιοδήποτε στοιχείο της κατάστασης (τύπο, πλήθος
στοιχείων κ.λπ.) στον βαθμό που διατηρούμε τις ίδιες διεπαφές – το
αντικείμενο θα μπορεί να χρησιμοποιηθεί χωρίς καμία τροποποίηση στον
κώδικα. Έτσι προάγεται η συντηρησιμότητα και η δυνατότητα
επαναχρησιμοποίησης.
◦ Από την άλλη πλευρά, θα πρέπει οι διεπαφές να είναι καλά μελετημένες ώστε
να μην χρειάζεται να αλλάξουν.
◦ Κατά περίπτωση μπορούμε να υλοποιούμε διαφορετικές διεπαφές, αν
πρόκειται να «ταιριάξουμε» σε διαφορετικές συνθήκες του πραγματικού
κόσμου (π.χ. κάρτες ανάληψης με ή χωρίς «τσιπάκι ασφαλείας»)
42
Κλάσεις
FareCatalogue
Table zone2price
Όνομα Τύπος Enumeration getZones()
Price getPrice(Zone)
FareCatalogue
zone2price Γνωρίσματα
Υπογραφή
getZones()
getPrice(Zone) Λειτουργίες FareCatalogue
• Μόνο το όνομα της κλάσης είναι υποχρεωτικό και τυπικά ξεκινάμε από αυτό
◦ Τα υπόλοιπα στοιχεία προστίθενται προοδευτικά όσο προχωράει η ανάπτυξη
43
Διαγράμματα Κλάσεων:
Ιδιότητες
• Οι ιδιότητες (attributes) παραπέμπουν στα
πεδία της Java/C++ και σχετίζονται με
δεδομένα της κλάσης
• Τυπική σύνταξη ιδιοτήτων
Όνομα : Τύπος = αρχική_τιμή
Student
• Ο τύπος μπορεί να είναι ένας τύπος της
lastName: String UML, κάποιος τύπος της γλώσσας
προγραμματισμού (π.χ. float, long) ή
firstName: String κάποια κλάση
birthDate: Date • Παραγόμενες (derived) ιδιότητες είναι
phoneNo: String αυτές που η τιμή τους προκύπτει από
/age: Integer άλλες ιδιότητες της κλάσης. Οι
παραγόμενες ιδιότητες έχουν το σύμβολο
“/” πριν από το όνομα.
44
Διαγράμματα Κλάσεων:
Λειτουργίες
• Οι λειτουργίες (operations)
παραπέμπουν στις μεθόδους της
Java
Shape
• Τυπική σύνταξη
color: Color
position: Point Όνομα(Παράμετρος1 : Τύπος1,
draw()
Παράμετρος2 : Τύπος2, …) :
erase() Τύπος_Επιστροφής
move(newPos: Point): Shape • Το όνομα μιας λειτουργίας σε
συνδυασμό με το πλήθος και τη
σειρά των τύπων των παραμέτρων
της συνιστούν την υπογραφή της
λειτουργίας
45
Διαγράμματα Κλάσεων:
Λειτουργίες (συνέχεια)
• Αν και οι λειτουργίες μίας κλάσης παραπέμπουν στις
μεθόδους της, οι δύο έννοιες δεν είναι ταυτόσημες:
◦ Με τη UML ορίζουμε μία λειτουργία ως μία υπηρεσία που
παρέχουν τα αντικείμενα της κλάσης.
◦ Η μέθοδος είναι μία υλοποίηση της λειτουργίας δηλαδή της
υπηρεσίας που παρέχεται από τα αντικείμενα.
• Επομένως, μία απλή διάκριση είναι ότι οι λειτουργίες
παρέχουν τις διεπαφές για την παροχή των υπηρεσιών,
ενώ οι μέθοδοι παρέχουν την υλοποίησή τους.
• Με τον πολυμορφισμό μπορούμε να έχουμε διαφορετικές
μεθόδους που υλοποιούν την ίδια λειτουργία.
46
- Ιδιωτικό (private)
+ Δημόσιο (public)
# Προστατευμένο (protected)
~ Πακέτο (Package)
47
Διαγράμματα κλάσεων –
δυνατότητα αλλαγής γνωρισμάτων
• Ένα γνώρισμα μπορεί να σημειωθεί ως:
◦ changeable (εξ ορισμού χαρακτηρισμός) – μπορεί να
αλλάξει η τιμή του
◦ frozen (καμία αλλαγή δεν επιτρέπεται)
◦ addOnly (μπορούν μόνο να προστεθούν τιμές – έχει
νόημα για γνωρίσματα που δέχονται πολλαπλές τιμές)
48
Διαγράμματα κλάσεων –
περιορισμοί σε γνωρίσματα
• Περικλείονται σε άγκιστρα { } και σημειώνονται δίπλα
στο γνώρισμα που αφορούν
◦ Μπορούν να γραφούν ως ελεύθερο κείμενο, σε OCL, σε
κάποια γλώσσα προγραμματισμού
Exercise
no: Integer
points: Integer {value >= 0}
text: String
49
Actor έναντι Κλάσης έναντι
Αντικειμένου
• Actor
◦ Μία οντότητα εκτός του συστήματος που μοντελοποιείται, η οποία
αλληλεπιδρά με το σύστημα (π.χ. επιβάτης)
• Κλάση
◦ Μία αφαίρεση που μοντελοποιεί μία οντότητα είτε στο «πεδίο της
εφαρμογής» (π.χ. «Εισιτήριο», «Πελάτης») είτε στο «πεδίο της
λύσης» (π.χ. «Πλαίσιο διαλόγου»).
◦ Η κλάση είναι τμήμα του μοντέλου του συστήματος («Χρήστης»,
«Αυτόματος πωλητής εισιτηρίων», «Εξυπηρέτης»)
• Αντικείμενο
◦ Ένα συγκεκριμένο στιγμιότυπο μιας κλάσης (π.χ. η διαδρομή
«Τρίπολη - Αθήνα»)
50
Στιγμιότυπα
• Ένα στιγμιότυπο αναπαριστά ένα συγκεκριμένο μέλος μιας
κλάσης
• Τα γνωρίσματα αναπαρίστανται με τις τιμές τους
• Το όνομα του στιγμιοτύπου υπογραμμίζεται
• Το όνομα του στιγμιοτύπου μπορεί να περιλαμβάνει μόνο το
όνομα της κλάσης (ανώνυμα αντικείμενα)
Ανώνυμο αντικείμενο
fullFare: FareCatalogue : FareCatalogue
Zone2price = { Zone2price = {
{‘1’, 1.20}, {‘1’, 1.20},
{‘2’, 1.40}, {‘2’, 1.40},
{‘3’, 2.50} {‘3’, 2.50}
} }
51
Συσχετίσεις
• Η συσχέτιση (association) αναπαριστά κάποια σύνδεση
των αντικειμένων δύο κλάσεων
• Απεικονίζει τη σχέση μεταξύ των κλάσεων
• Η συσχέτιση μπορεί να ονοματίζεται με κάποιο ρήμα
που αναπαριστά τη σημασία της
◦ Μπορεί να σημειώνεται και ένα βέλος, ειδικότερα όταν δεν
διαβάζεται από αριστερά προς τα δεξιά
FareCatalogue Trip
isSubjectToFare
Table zone2price zone:Zone
Enumeration getZones() * * Price: Price
Price getPrice(Zone)
52
Διαγράμματα Κλάσεων:
Συσχετίσεις (συνέχεια)
• Κάθε άκρο της συσχέτισης μπορεί να διαθέτει πρόσθετα
χαρακτηριστικά:
◦ Όνομα, για καλύτερη περιγραφή της σημασιολογίας
◦ Πολλαπλότητα
◦ Πλοηγησιμότητα (navigability)
53
Διαγράμματα Κλάσεων:
Πολλαπλότητα Συσχετίσεων
Οδηγεί
Πρόσωπο Αυτοκίνητο • Η πολλαπλότητα
1 0..1 αναφέρεται στα άκρα των
Κάθε πρόσωπο οδηγεί 0 ή 1 αυτοκίνητο. Κάθε συσχετίσεων.
αυτοκίνητο οδηγείται από ακριβώς 1 πρόσωπο.
◦ Ακριβώς ένα 1
Οδηγεί ◦ Ένα ή περισσότερα 1..*
Πρόσωπο Αυτοκίνητο ◦ Κανένα ή περισσότερα *
1 *
◦ Κανένα ή ένα 0..1
Κάθε πρόσωπο οδηγεί 0 ή περισσότερα
αυτοκίνητα. Κάθε αυτοκίνητο οδηγείται από
ακριβώς 1 πρόσωπο.
Οδηγεί
Πρόσωπο Αυτοκίνητο
1..* 1..*
Κάθε πρόσωπο οδηγεί 1 ή περισσότερα αυτοκίνητα. Κάθε
αυτοκίνητο οδηγείται από 1 ή περισσότερα πρόσωπο.
54
Διαγράμματα Κλάσεων:
Πολλαπλότητες Συσχετίσεων (συνέχεια)
1 Ακριβώς ένα
10 Ακριβώς δέκα
* Κανένα, ένα ή περισσότερα
1..* Ένα ή περισσότερα
1..10 Ένα έως δέκα
55
Διαγράμματα Κλάσεων: πλοηγησιμότητα
συσχετίσεων
• Σε μία γραμμή συσχέτισης σημειώνουμε ένα βέλος αν
μπορούμε να πλοηγηθούμε προς αυτό το άκρο της συσχέτισης
όταν γνωρίζουμε το άλλο
◦ Αν δεν σημειώνουμε καθόλου πλοηγησιμότητα, δεν παρέχεται εγγύηση ότι
υπάρχει.
Περιλαμβάνει
Παραγγελία Προϊόν
0..* 1..*
0..*
Κάνει
1
Πελάτης
56
Β
57
Διαγράμματα Κλάσεων:
Γενίκευση
Σχήμα
Τετράγωνο
58
Αφηρημένες κλάσεις
• Οι αφηρημένες κλάσεις είναι κλάσεις που εξυπηρετούν
την εννοιολογική ομαδοποίηση των κλάσεων που
γενικεύουν και τον ορισμό της διεπαφής των κλάσεων
αυτών
◦ Οι αφηρημένες κλάσεις ΔΕΝ μπορούν να δημιουργήσουν
αντικείμενα αυτό γίνεται μόνο στις υποκλάσεις
59
Αφηρημένες κλάσεις -συμβολισμοί
• Το όνομα μιας αφηρημένης κλάσης ή λειτουργίας συμβολίζεται:
◦ Παραθέτοντας τον συμβολισμό {abstract} δίπλα από το όνομα
◦ Χρησιμοποιώντας πλάγια γράμματα (μπορεί να είναι δυσδιάκριτα)
60
Πακέτα
• Τα πακέτα βοηθούν στην οργάνωση των μοντέλων της UML για
να αυξηθεί η αναγνωσιμότητά τους
• Μπορούμε να χρησιμοποιήσουμε τον μηχανισμό πακέτων της
UML για να οργανώσουμε τις κλάσεις σε υποσυστήματα
◦ Κάθε πολύπλοκο σύστημα μπορεί να αποσυντεθεί σε υποσυστήματα, όπου
κάθε υποσύστημα μοντελοποιείται ως ένα πακέτο
Account
Bank Customer
61
Μοντελοποίηση των κλάσεων στην
πράξη
• Μελετούμε
◦ τη γενική περιγραφή του συστήματος
◦ τις περιπτώσεις χρήσης, οι οποίες αντανακλούν τις
απαιτήσεις του συστήματος
◦ εξετάζουμε και συνοδευτικά έγγραφα των απαιτήσεων
όπως το λεξικό δεδομένων, το γλωσσάρι, κ.λπ.
• Συζητούμε
◦ Με τους χρήστες του συστήματος
… και βρίσκουμε κλάσεις και λειτουργίες
62
63
Παράδειγμα ανάδειξης κλάσεων
«Σε ένα τραπεζικό σύστημα οι πελάτες δημιουργούν τραπεζικούς
λογαριασμούς. Οι πελάτες μπορούν να πραγματοποιούν καταθέσεις
και αναλήψεις χρημάτων. Το τραπεζικό σύστημα καταγράφει κάθε
δοσοληψία κατάθεσης ή ανάληψης χρημάτων και ενημερώνει το
υπόλοιπο του λογαριασμού του πελάτη. Ένας πελάτης μπορεί να
εξυπηρετείται από τραπεζικά υποκαταστήματα. Μπορεί επίσης να
πραγματοποιεί καταθέσεις ή αναλήψεις μετρητών μέσω των ΑΤΜ της
τράπεζας. Μπορεί να αιτείται και να λαμβάνει από την τράπεζα μία
κάρτα ανάληψης μετρητών. Η κάρτα που παραλαμβάνει συνδέεται με
κάποιον από τους λογαριασμούς της επιλογής του.»
• Οι σημαντικές έννοιες του προβλήματος είναι με έντονη γραφή.
64
65
Ανάδειξη κλάσεων
• Εξετάζουμε τις λειτουργίες που πρέπει να παρέχει μία κλάση
Account
D eposit()
Withdraw ()
GetBalance()
66
67
Μοντέλα Πεδίου:
Ιδιότητες
surname cardNo
balance
name pin
accountNo
email expiryDate
phone declaredMissing
/active
68
69
Συσχετίσεις Τραπεζικού Συστήματος
• Το απεικονιζόμενο μοντέλο των εννοιολογικών κλάσεων δηλώνει ότι
ένας πελάτης μπορεί να έχει κανένα, έναν ή περισσότερους
τραπεζικούς λογαριασμούς, ενώ ένας λογαριασμός θα πρέπει να
ανήκει σε έναν μόνο πελάτη (αν γνωρίζουμε τον πελάτη πρέπει να
γνωρίζουμε και τους λογαριασμούς του και αντίστροφα). Μία
τραπεζική δοσοληψία αφορά ένα λογαριασμό, ενώ σε ένα λογαριασμό
μπορούν να γίνουν καμία, μία ή περισσότερες τραπεζικές δοσοληψίες.
1 1 1
* * *
70
D eposit Withdraw al
72
Διαγράμματα Κλάσεων:
Συνάθροιση ή Συσσωμάτωση
• Η συνάθροιση ή συσσωμάτωση (aggregation) είναι μία
ειδική μορφή συσχέτισης.
• Είναι μία συσχέτιση όλου – τμήματος.
• Η κλάση Α αναπαριστά το «όλο» και η κλάση Β το «τμήμα»
• Δεν επιτρέπονται «κύκλοι» συναθροίσεων -
συσσωματώσεων
• Η διάκριση από τη συσχέτιση έχει περισσότερο
εννοιολογικό χαρακτήρα: για να υπάρχει το «όλο» πρέπει
οπωσδήποτε να υπάρχει και το «τμήμα».
◦ Αν πάψει να υπάρχει το όλον, τα τμήματα εξακολουθούν να
υφίστανται
Α Β
73
Διαγράμματα Κλάσεων
Συνάθροιση - Συσσωμάτωση
• Μία ομάδα αποτελείται από ποδοσφαιριστές
• Ο κάθε ποδοσφαιριστής ανήκει σε μία ομάδα
• Σημασιολογική ερμηνεία: «Η ομάδα δεν έχει έννοια χωρίς
τους παίκτες»
◦ Αν η ομάδα πάψει να υπάρχει, οι παίκτες εξακολουθούν να
υπάρχουν
1 1..*
Ομάδα Ποδοσφαιριστής
ΈχειΣτιςΤάξειςΤης
ΛαμβάνειΤεχνικέςΣυμβουλές
ΤεχνικόςΔιευθυντής
74
Α Β
75
Διαγράμματα Κλάσεων
Σύνθεση
• Η εταιρεία αποτελείται από τμήματα
◦ Όπως και στη συνάθροιση, δεν νοείται η εταιρεία χωρίς
τα τμήματά της
◦ Σε αντίθεση με τη συνάθροιση, ούτε τα τμήματα
νοούνται χωρίς την εταιρεία
• Ο έξω κόσμος δεν έχει πρόσβαση στο τμήμα παρά
μόνο μέσω της Εταιρείας.
1 1..*
Εταιρεία Τμήμα
Περιλαμβάνει
76
Μοντελοποίηση κλάσεων:
Απλοί Τύποι
• Οι απλοί τύποι μπορεί να είναι
◦ Ατομικά δεδομένα που συνοδεύονται από κανόνες
επαλήθευσης ή αποτελούνται από υποτμήματα. Π.χ
ταχυδρομικοί κωδικοί, ημερομηνίες, αριθμοί τηλεφώνου,
αριθμοί πιστωτικοί καρτών, διευθύνσεις IP, κ.τ.λ.
◦ Σύνθετα δεδομένα με εννοιολογική ενότητα όπως. π.χ
Βάρος ή ύψος (με διαφορετικές μονάδες μέτρησης),
χρήματα, εύρη ημερομηνιών
◦ Απλές απαριθμήσεις, π.χ. οι ημέρες της εβδομάδας, τα
χρώματα. Χρησιμοποιούνται οι απαριθμήσεις της UML
◦ Ομαδοποίηση ατομικών δεδομένων που απαρτίζουν μία
εννοιολογική οντότητα,. π.χ. ταχυδρομικές διευθύνσεις
77
Απλοί Τύποι - Παραδείγματα
Ποσότητα Χρήματα
79
Απλοί Τύποι και Συσχετίσεις
• Εναλλακτικά τους απλούς τύπους μπορούμε να
τους εμφανίσουμε και ως συσχετίσεις (απλές ή
συναθροίσεις/συσσωματώσεις ή συνθέσεις).
1
Πελάτης EmailAddress
επώνυμο eMail: String
όνομα
Διεύθυνση ΤαχυδρΚώδικας
* 1
οδός: String ταχΚωδ: String
αριθμός: String
1
80
1 *
Πελάτης Λογαριασμός
επώνυμο: String
αριθΛογ: AccountId 1
όνομα: String
/υπόλοιπο: Money
email: EmailAddress
*
1
1
Κάρτα
*
Διεύθυνση
αριθΚάρτας: CardId
Δοσοληψία
οδός: String pin: String
αριθμός: String ημερομηνία: Date ημερομΛήξης: Date
πόλη: String ποσό: Money δήλωσηΑπώλειας: Boolean
ΤΚ: ΤαχυδρΚώδικας /ενεργή:Boolean
81
Διάκριση ιδιοτήτων και κλάσεων
• Μερικές φορές η χρήση «String» μοιάζει φυσική αλλά το σωστό είναι
να χρησιμοποιήσουμε κλάση
◦ Αν χρειαζόμαστε περιορισμένο λεξιλόγιο ή ελέγχους, πολλαπλές
συσχετίσεις ή λειτουργίες, μάλλον πρέπει να επιλέξουμε κλάση
• Στις ιδιότητες προσέχουμε να μην επαναλαμβάνουμε πληροφορία
Βιβλίο Διεύθυνση
διεύθυνσηΕπικοινωνίας
Σφάλμα: ο τίτλος: String
διεύθυνσηΟικίας
...
εκδοτικός εκδοτικόςΟίκος: string
οίκος είναι isbn: ISBN
κλάση έκδοση: int
έτοςΕκδοσης: int
1
* Δανειζόμενος
Διαγράμματα Κλάσεων
Αυτοσυσχέτιση
• Υπάρχει και η δυνατότητα αυτοσυσχέτισης.
• Η αυτοσυσχέτιση του σχήματος παράγει ιεραρχία
αντικειμένων (στο επίπεδο των αντικειμένων όχι
των κλάσεων)
◦ Εξαιρετικά χρήσιμη η παρουσία ονομάτων στα άκρα
Εποπτεύει
Υφιστάμενος *
Εργαζόμενος
0..1 Προϊστάμενος
83
Διαγράμματα Κλάσεων:
Κλάση Συσχέτισης
• Μία κλάση συσχέτισης (association class)
αποδίδει ιδιότητες και λειτουργίες σε μία
συσχέτιση
• Η κλάση C είναι η κλάση συσχέτισης των Α και B
• Χρησιμοποιείται συνήθως σε συσχετίσεις «πολλά
προς πολλά»
Α Β
84
Διαγράμματα κλάσεων:
Παράδειγμα κλάσης Συσχέτισης
• Ένας εργαζόμενος συμμετέχει σε πολλά έργα της
εταιρείας που εργάζεται.
• Ερώτημα: Πώς θα απεικονιστεί το πλήθος των
ωρών που απασχολείται σε κάθε έργο και η
αρμοδιότητά του σε κάθε έργο;
* *
Εργαζόμενος Έργο
85
Διαγράμματα κλάσεων
Παράδειγμα κλάσης Συσχέτισης
• Υπάρχουν δύο λύσεις. Η πρώτη είναι με την κλάση
συσχέτισης. Η δεύτερη είναι με «ενδιάμεση» κλάση.
• Ο περιορισμός της κλάσης συσχέτισης είναι ότι ο
υπάλληλος δεν μπορεί να έχει δύο «συμμετοχές» στο ίδιο
έργο.
• Στο συγκεκριμένο παράδειγμα η κλάση συσχέτισης είναι η
σωστή λύση
1 *
* *
Συμμετοχή
Εργαζόμενος Έργο Εργαζόμενος
ρόλος
* ώρες
Συμμετοχή
ρόλος
ώρες Έργο 1
87
Προσδιοριστές (qualifiers)
• Οι προσδιοριστές εξειδικεύουν μία συσχέτιση, ορίζοντας το
γνώρισμα (ή τα γνωρίσματα) των οποίων οι τιμές ορίζουν το
σύνολο των αντικειμένων που συσχετίζονται με ένα αντικείμενο
μέσω της συσχέτισης
◦ Παράδειγμα 1:
◦ Αν κάθε άσκηση έχει μοναδικό αριθμό εντός ενός κεφαλαίου, αυτό μπορεί να
εκφραστεί με τη βοήθεια ενός προσδιοριστή:
1 0..1
Κεφάλαιο αριθ: Integer Άσκηση
88
Γιατί προσδιοριστές;
• Με προσδιοριστές
1 0..1
Κεφάλαιο αριθ: Integer Άσκηση
Κεφάλαιο
αριθ: Integer
1
{same}
0..1
Άσκηση
αριθ: Integer
90
91
Τύπος δεδομένου προσδιοριστών
• Δεν είναι απαραίτητο να είναι ακέραιος
◦ Η «φυσική» υλοποίηση για τους προσδιοριστές με τύπο
«ακέραιο» είναι ένας πίνακας (ειδικότερα αν η αρίθμηση
ξεκινάει από το 0 ή το 1 και αυξάνεται κατά μία μονάδα
σε κάθε βήμα)
◦ Για προσδιοριστές με τύπο συμβολοσειράς μπορεί να
επιλεγεί άλλη δομή αναπαράστασης (π.χ. πίνακας
κερματισμού ή δένδρο αναζήτησης).
92
Παράδειγμα προσδιοριστή-
πληθικότητας-τύπου
• Στο σύστημα αρχείων του Unix το όνομα ενός αρχείου
αποθηκεύεται στον κατάλογο όπου αυτό περιέχεται
◦ Ένας κατάλογος μπορεί να περιέχει ένα αρχείο με ένα συγκεκριμένο
όνομα ή όχι
◦ Ένα όνομα μπορεί να βρίσκεται σε οποιοδήποτε πλήθος καταλόγων
Directory
filename: String
0..*
0..1
File
93
Περιορισμοί
• Μπορεί να ορισθεί ότι δύο συσχετίσεις είναι αμοιβαίως
αποκλειόμενες
πρόσωποΙδιοκτήτης
Πρόσωπο
λογαριασμός
Λογαριασμός {xor}
λογαριασμός
Εταιρεία
εταιρείαΙδιοκτήτης
94
Περιορισμοί
• Μπορεί να οριστεί ότι μία συσχέτιση υπονοεί μία άλλη:
* ΜέλοςΤης *
Πρόσωπο {subset} Επιτροπή
1 ΠρόεδροςΤης *
96
97
Διεπαφές έναντι αφηρημένων κλάσεων
(2/2)
• Οι διεπαφές της Java μοιάζουν με τις αφηρημένες
κλάσεις, αλλά παρουσιάζουν και σημαντικές
διαφορές που είναι (συνέχεια):
◦ Μία κλάση μπορεί να υλοποιεί (και δεν κληρονομεί) μία ή
περισσότερες διεπαφές.
◦ Η κλάση θα πρέπει να παρέχει την υλοποίηση για τις μεθόδους που
δηλώνει μία διεπαφή, να παρέχει δηλαδή την υλοποίηση της
διεπαφής
◦ Αντίθετα μία κλάση που κληρονομεί από μία αφηρημένη κλάση μπορεί να
μην υλοποιεί μερικές μεθόδους, καθιστώμενη και αυτή αφηρημένη με τη
σειρά της
98
Διεπαφές - Σύνοψη
• Επομένως, μία διεπαφή έχει περισσότερο το χαρακτήρα
μίας δήλωσης. Δηλώνει υπογραφές (signatures) μεθόδων
στις οποίες μία κλάση θα πρέπει να συμμορφώνεται σε
περίπτωση που υλοποιεί τη διεπαφή.
• Οι διεπαφές είναι και το βασικό αντίδοτο για τις γλώσσες
προγραμματισμού που δεν υποστηρίζουν την πολλαπλή
κληρονομικότητα. Μία κλάση μπορεί να είναι υποκλάση
μίας και μόνο κλάσης, ενώ μπορεί να υλοποιεί πολλές
διεπαφές.
99
Διεπαφές – Συμβολισμός
υλοποίησης διεπαφής
Υλοποίηση διεπαφής
– το όνομα της
<<interface>> διεπαφής σημειώνεται
ΜεταφορικόΜέσο δίπλα από κύκλο
ΜεταφορικόΜέσο Αυτοκίνητο
travelTo(dest: Destination)
ΜεταφορικόΜέσο Πλοίο
<<interface>>
ΜεταφορικόΜέσο
Χρήση
Πρόσωπο
διεπαφής
travelTo(dest: Destination)
Πρόσωπο
Παροχή
και χρήση Πρόσωπο Αυτοκίνητο Κλάση που
διεπαφής
υλοποιεί τη
διεπαφή
Πρόσωπο Αυτοκίνητο
101
Γενίκευση διεπαφών
• Οι διεπαφές μπορούν να οργανώνονται και σε
ιεραρχίες με χρήση γενίκευσης
<<interface>>
ΜεταφορικόΜέσο
Γενίκευση
διεπαφής
travelTo(dest: Destination)
<<interface>>
Όχημα
Αυτοκίνητο
travelTo(dest: Destination)
Υλοποίηση
διεπαφής 102
<<interface>> <<interface>>
Όχημα ΜεταφορικόΜέσο
Αυτοκινούμενο {abstract}
103
Διαγράμματα αντικειμένων
• Εμφανίζουν κάποιο στιγμιότυπο των αντικειμένων και των
σχέσεών τους
◦ Τα αντικείμενα είναι στιγμιότυπα των κλάσεων
• Εμφανίζουμε και τις συγκεκριμένες τιμές που λαμβάνουν
οι ιδιότητες
• Οι σύνδεσμοι είναι στιγμιότυπα των συσχετίσεων
• Συνδέουν τα αντικείμενα μεταξύ τους
Γιάννης: Student : Student
lastName = ‘Νικολάου’ lastName = ‘Πέτρου’ Ανώνυμο
firstName = ‘Γιάννης’ firstName = ‘Γιώργος’ αντικείμενο
: Πρόσωπο : Αντικείμενο
104
Διαγράμματα Αντικειμένων -
Αντικείμενα
• Ο συμβολισμός των αντικειμένων είναι όμοιος με
το συμβολισμό των κλάσεων με τη διαφορά ότι το
τμήμα του ονόματος είναι υπογραμμισμένο
• Τυπική σύνταξη αντικειμένου
◦ όνομα_αντικειμένου : όνομα_κλάσης
◦ Για ανώνυμα αντικείμενα : όνομα_κλάσης
• Οι ιδιότητες των κλάσεων έχουν πλέον και τιμές
• Σε ένα διάγραμμα αντικειμένων απεικονίζουμε
ένα δίκτυο αντικειμένων για κάποια χρονική
στιγμή
105
Χρήση Διαγραμμάτων Αντικειμένων
• Επαλήθευση διαγραμμάτων κλάσεων
• Εμφάνιση σχέσεων για τις οποίες τα διαγράμματα κλάσεων δεν
επαρκούν – για παράδειγμα ιεραρχικές σχέσεις αντικειμένων
106
Διάγραμμα
Βιβλιοθήκη: Οργανωτική μονάδα
αντικειμένων
Κώδικας Java
public class StockExhange {
private Vector<Company> m_Company = new Vector Vector<Company> ();
} Οι συσχετίσεις απεικονίζονται σε
γνωρίσματα (ανάλογα με την
public class Company { πλοηγισιμότητα!)
public int m_tickerSymbol;
private Vector<StockExchange> m_StockExchange = new Vector<StockExchange>();
}
108
109
Διαγράμματα ακολουθίας – βασική
σημειογραφία
• Τα διαγράμματα ακολουθίας αναπαριστούν τη συμπεριφορά
του συστήματος με τη μορφή μηνυμάτων μεταξύ διαφορετικών
αντικειμένων
: Student : Portal : Blog
αντικείμενο
navigateToBlog() show()
pushAddButton() showEntryForm()
μήνυμα
edit()
submit()
<<create>>
: BlogEntry
setProperties()
Προδιαγραφή
update()
εκτέλεσης Γραμμή ζωής
110
111
Μηνύματα
• Τα μηνύματα ορίζουν μία συγκεκριμένη επικοινωνία
μεταξύ γραμμών ζωής σε μία διάδραση
• Παραδείγματα επικοινωνίας:
◦ Αποστολή ενός σήματος
◦ Κλήση μιας λειτουργίας
◦ Δημιουργία ή καταστροφή ενός στιγμιοτύπου
112
Είδη μηνύματος
• Ασύγχρονο
• Σύγχρονο
◦ Κλήση λειτουργίας και δημιουργία
αντικειμένου
• Απόκριση
• Απωλεσθέν
◦ γνωστή η αποστολή αλλά όχι η
παραλαβή – συνήθως ερμηνεύεται
ότι η παραλαβή είναι εκτός του
πεδίου του συστήματος
• Ευρεθέν
◦ Γνωστή η παραλαβή αλλά όχι η
αποστολή
113
Διαγράμματα ακολουθίας
• Η έμφαση είναι στον έλεγχο ροής
TicketMachine
Passenger • Χρησιμοποιούνται στην ανάλυση για:
selectZone() ◦ Εκλέπτυνση των περιπτώσεων χρήσης
◦ Εύρεση πρόσθετων αντικειμένων που έχουν
διαλάθει
insertCoins()
• Χρησιμοποιούνται στον σχεδιασμό για:
◦ Εκλέπτυνση των διεπαφών
pickupChange() TicketMachine
selectZone()
pickUpTicket() insertCoins()
pickupChange()
pickUpTicket()
114
selectZone()
lookupFare(selection)
fare
Ροή δεδομένων
displayFare(fare)
115
Διαγράμματα ακολουθίας:
επαναλήψεις και συνθήκες
• Οι επαναλήψεις δηλώνονται με έναν αστερίσκο
πριν από το μήνυμα
• Οι συνθήκες εντός αγκυλών πριν το μήνυμα
[owedAmount<0] returnChange(-owedAmount)
Συνθήκη 116
MoneyProcessor
Passenger
createTicket(selection)
Ticket
print()
free()
X 117
Ιδιότητες διαγραμμάτων
ακολουθίας
• Τα διαγράμματα ακολουθίας της UML
αναπαριστούν συμπεριφορά σε όρους
διαδράσεων
• Είναι χρήσιμα για τον προσδιορισμό ή τον
εντοπισμό αντικειμένων ή λειτουργιών που
λείπουν
• Είναι χρονοβόρα στην κατασκευή τους, αλλά
αξίζουν τον κόπο
• Συμπληρώνουν τα διαγράμματα κλάσεων (που
αναπαριστούν τη δομή)
118
πάτημαΚουμπιού1
πάτημαΚουμπιού2 Αύξησε
Σταμάτα να Αναβόσβησε
αναβοσβήνεις δευτερόλεπτα δευτερόλεπτα
Τελική κατάσταση
Αναπαριστά τη συμπεριφορά ενός μοναδικού αντικειμένου την οποία
κρίνουμε ενδιαφέρουσα. 119
Διαγράμματα δραστηριότητας
• Διαγράμματα συμπεριφοράς με έμφαση στη ροή ελέγχου
• Δείχνουν την ακολουθιακή ή παράλληλη ροή δραστηριοτήτων
αναπαριστώντας τη ροή εκτέλεσης (workflow) OXI μόνο στο
λογισμικό αλλά και γενικότερα
• Υπάρχουν από την UML 2 και μετά
• Ένα διάγραμμα δραστηριότητας αποτελείται από κόμβους και
ακμές
• Υπάρχουν τρία είδη κόμβων δραστηριότητας
◦ Κόμβοι ελέγχου
◦ Εκτελέσιμοι κόμβοι
◦ Πιο συνηθισμένος: Action (ενέργεια)
◦ Κόμβοι αντικειμένων
◦ π.χ. ένα έγγραφο
• Μία ακμή είναι μία κατευθυνόμενη σύνδεση μεταξύ κόμβων
◦ Δύο βασικοί τύποι ακμών
◦ Ακμές ροής ελέγχου
◦ Ακμές ροής αντικειμένων
120
Κόμβος απόφασης
Κόμβος συγχώνευσης
121
Σύμβολα κόμβων δραστηριότητας και
αντικειμένων
Κόμβος ενέργειας
Κόμβος αντικειμένου
Συγγραφή Διόρθωση
Εργασία
εργασίας εργασίας
122
Παράδειγμα διαγράμματος
δραστηριότητας
Ακμή ροής διακλάδωση
Αρχικός Κόμβος ελέγχου
κόμβος απόφασης
[παραγγελία
δεκτή]
Παραλαβή Εκτέλεση
παραγγελίας παραγγελίας
[παραγγελία
όχι δεκτή]
Αποστολή
παραγγελίας
Κλείσιμο
παραγγελίας Αποδοχή Πραγματοποίηση Αποστολή
πληρωμής πληρωμής τιμολογίου
Τιμολόγιο Τιμολόγιο
Αποστολή Εξόφληση
τιμολογίου τιμολογίου
Ακίδες
124
Διαγράμματα παράταξης
• Τα διαγράμματα παράταξης (deployment diagrams)
παρουσιάζουν το πραγματικό περιβάλλον στο οποίο
λειτουργεί το λογισμικό.
• Ένα διάγραμμα παράταξης παρουσιάζει συσκευές του
υλικού και τις φυσικές μονάδες λογισμικού που
διανέμονται στο υλικό.
• Τα διαγράμματα παράταξης είναι ένα μέσο για την
τεκμηρίωση της φυσικής αρχιτεκτονικής του συστήματος.
• Το βασικό στοιχείο ενός διαγράμματος παράταξης είναι οι
κόμβοι (nodes).
125
Διαγράμματα παράταξης –
κατηγορίες κόμβων
• Η πρώτη κατηγορία των κόμβων είναι οι συσκευές
(devices) που αναπαριστούν φυσικές μονάδες
επεξεργασίας που αντιστοιχούν στο υλικό. Οι συσκευές
έχουν μνήμη και επεξεργαστική ικανότητα.
• Η δεύτερη κατηγορία των κόμβων είναι τα περιβάλλοντα
εκτέλεσης (execution environments). Περιβάλλοντα
εκτέλεσης είναι λογισμικό συστημάτων, όπως τα
λειτουργικά συστήματα, τα συστήματα διαχείρισης
βάσεων δεδομένων κ.ά.
• Και για τα δύο χρησιμοποιούμε συμβολισμό αντικειμένων
και όχι κλάσεων, γιατί μιλάμε για συγκεκριμένα
μηχανήματα και τμήματα λογισμικού
126
Διαγράμματα παράταξης
<<device>>
: DatabaseServer
<<executionEnvironment>>
: LinuxOS
<<executionEnvironment>>
: MySQL
127
Μονοπάτια επικοινωνίας στα
διαγράμματα παράταξης
• Οι κόμβοι επικοινωνούν μεταξύ τους μέσω μονοπατιών
επικοινωνίας (communications paths) και απεικονίζουν
τυπικά διασύνδεση μέσω δικτύου. Τα μονοπάτια
επικοινωνίας είναι εξειδίκευση των συσχετίσεων και
συμβολίζονται με απλές γραμμές
<<device>> <<device>>
: DatabaseServer : ApplicationServer
<<executionEnvironment>> <<executionEnvironment>>
: LinuxOS : LinuxOS
<<executionEnvironment>> <<executionEnvironment>>
: MySQL : Tomcat 7
128
129
Συμβολισμοί για τα προϊόντα στα
διαγράμματα παράταξης
• Συμβολισμός 1: με τη λέξη-κλειδί <<artifact>>
• Συμβολισμός 2: με εικονίδιο εντός του πλαισίου
<<artifact>>
libraryLogic.war libraryLogic.war
130
<<executionEnvironment>>
: Tomcat 7
libraryLogic.war
<<device>>
: LocalPC
<<device>>
<<executionEnvironment>> : DatabaseServer
: Browser
<<executionEnvironment>>
: MySQL
131
Ένα συνολικό διάγραμμα
παράταξης
• Το διάγραμμα της προηγούμενης διαφάνειας
εμφανίζει μία αρχιτεκτονική τριών επιπέδων (3-
tier architecture).
◦ Ένα επίπεδο είναι η βάση δεδομένων
◦ Ένα επίπεδο είναι ο εξυπηρέτης διαδικτύου
◦ Ένα επίπεδο είναι οι υπολογιστές των χρηστών με τα
προγράμματα πλοήγησης
132
Προδιαγραφές παράταξης
• Ένα διάγραμμα παράταξης μπορεί να έχει μία
προδιαγραφή παράταξης
<<device>>
<< deployment spec>> : ApplicationServer
libspec.xml
<<executionEnvironment>>
: Apache 2
<<executionEnvironment>>
<<artifact>> : Tomcat 7
libraryLogic.war
<<deploy>>
libraryLogic.war
133
Διαγράμματα διάδρασης
• Νέα έννοια του αποσπάσματος διάδρασης
◦ Διάδραση είναι ένα κομμάτι συμπεριφοράς που εστιάζεται στην
παρατηρήσιμη ανταλλαγή πληροφορίας μεταξύ αντικειμένων που μπορούν
να συνδέονται
• Υπάρχουν 4 είδη διαγραμμάτων διάδρασης:
◦ Διαγράμματα ακολουθίας
◦ Διαγράμματα επικοινωνίας
◦ Συνδυασμός πληροφοριών από τα διαγράμματα κλάσεων, περιπτώσεων
χρήσης, και ακολουθίας. Μοιάζουν με τα διαγράμματα ακολουθίας,
αναπαριστώντας πιο εύληπτα το ποιός επικοινωνεί με ποιόν, ενώ τα
διαγράμματα ακολουθίας δίνουν καλύτερα τη σειρά των μηνυμάτων
◦ Διαγράμματα επισκόπησης αλληλεπίδρασης
◦ Μοιάζουν με τα διαγράμματα δραστηριότητας, ωστόσο κάθε κόμβος
ενέργειας μπορεί να αναλύεται περαιτέρω χρησιμοποιώντας
οποιοδήποτε τύπο διαγράμματος διάδρασης
◦ Διαγράμματα χρονισμού
◦ Εστιάζει στους χρονικούς περιορισμούς. Μοιάζει με διάγραμμα
ακολουθίας περιεστραμμένο κατά 900 ώστε ο οριζόντιος άξονας να είναι ο
χρόνος
134
Διαδράσεις
• Οι διαδράσεις στη UML χρησιμοποιούνται κυρίως στην
ανάλυση για να κατανοήσουμε καλύτερα τις διαδράσεις
μεταξύ των αντικειμένων
135
Παράδειγμα διάδρασης: διάγραμμα
ακολουθίας
Όνομα διάδρασης (sd:
sd UserAccepted πλαίσιο διάδρασης)
: User : ATM
Code(PIN)
Γραμμή ζωής
CardOut
OK
Unlock
Παράδειγμα διάδρασης:
διάγραμμα επικοινωνίας
137
Παράδειγμα διάδρασης: διάγραμμα
επισκόπησης αλληλεπίδρασης
138
Παράδειγμα διάδρασης:
διάγραμμα χρονισμού
139
Απόσπασμα διάδρασης
• Είναι ένα τμήμα μιας διάδρασης
• Έχει ακριβώς τη λειτουργικότητα μιας διάδρασης
• Μπορούμε να έχουμε συνδυασμούς αποσπασμάτων διάδρασης
◦ Είναι αποσπάσματα διάδρασης που συνδυάζονται μέσω τελεστών
140
141
Παραδείγματα τελεστών
http://www.uml-diagrams.org/sequence-diagrams.html
142
Παραδείγματα τελεστών
Τα μηνύματα με χρονικούς
περιορισμούς
αναπαρίστανται ως
κεκλιμένες γραμμές
Από την πλοήγηση μέχρι την επιστροφή της απάντησης μπορούμε να έχουμε από 3 sec έως
5min. Η αποστολή του μηνύματος της αίτησης πρέπει να διαρκέσει λιγότερο από 10 sec
145
Στερεότυπα στη UML
• Τα στερεότυπα είναι ένας τρόπος επέκτασης υπαρχουσών
μετα-κλάσεων
• Παράδειγμα:
<<metaclass>> <<stereotype>>
Class Computer
os: OperatingSystem
osVersion: Integer
vendor: String
• Τα στερεότυπα χρησιμοποιούνται για να φτιάξουμε νέα στοιχεία
των μοντέλων που βασίζονται σε υπάρχοντα, αλλά που έχουν
εξειδικευμένες ιδιότητες, κατάλληλες για το συγκεκριμένο
πρόβλημα (ή σύνολο προβλημάτων)
• Π.χ. αν μοντελοποιούμε ένα εταιρικό δίκτυο, θέλουμε κλάσεις για
δρομολογητές, μεταγωγείς, εκτυπωτές, εξυπηρέτες κ.λπ.
146
Σημειογραφία στερεοτύπων
• Είτε με εισαγωγικά πριν το όνομα
<<Computer>>
ApplicationServer
• Είτε με κάποιο γραφικό εντός του συμβόλου
ApplicationServer
147
Οδηγίες για στερεότυπα
• Η χρήση γραφικών προάγει την αναγνωσιμότητα, ειδικότερα για κοινό
που δεν είναι εξοικειωμένο με τη UML
◦ Χωρίς να θυσιάζει τη συμβατότητα με τη UML
148
1
Εισαγωγή - συνεργασία
• Η τεχνολογία λογισμικού είναι μία συνεργατική
δραστηριότητα
◦ Συμμετέχουν μέλη με διαφορετικό υπόβαθρο, όπως ειδικοί στο
αντικείμενο, αναλυτές, σχεδιαστές, προγραμματιστές, στελέχη
διοίκησης, γραφίστες, χρήστες
◦ Κανείς δεν μπορεί να κατανοήσει (και να λύσει!) το πρόβλημα
μόνος του, συνεπώς κάθε ένας εξαρτάται από άλλους
◦ Οι συνεχείς αλλαγές καθιστούν απαραίτητο ο κάθε μετέχων να
επικαιροποιεί τις γνώσεις και την αντίληψή του για το πρόβλημα
Εισαγωγή - επικοινωνία
• Η επικοινωνία σε ένα έργο μπορεί να έχει πολλές
μορφές ανάλογα με τη δραστηριότητα που
υποστηρίζει
◦ Σε συναντήσεις με αποτύπωση στα πρακτικά, σε αναφορές
προς τον πελάτη, σε μοντέλα και τεκμηρίωση, σε άτυπες
τηλεφωνικές ή κατ’ ιδίαν συνομιλίες κ.λπ.
◦ Σε μεγάλα έργα, η επικοινωνία μπορεί να είναι αρκετά
χρονοβόρα, μειώνοντας τον χρόνο που διατίθεται σε τεχνικές
ενέργειες
◦ Είναι ουσιώδες να οργανωθούν ομάδες και να διαμοιράζεται η
πληροφορία, τόσο μέσω τυπικών όσο και άτυπων καναλιών
3
Ορισμός έργου (τεχνολογίας
λογισμικού)
• Ένα έργο είναι ένα εγχείρημα, με συγκεκριμένο χρονικό
ορίζοντα, όπου πρέπει να επιτευχθεί ένα σύνολο στόχων το
οποίο απαιτεί συντονισμένες προσπάθειες
• Ένα έργο περιλαμβάνει:
◦ Ένα σύνολο παραδοτέων στους πελάτες
◦ Ένα χρονοδιάγραμμα
◦ Τεχνικές και διοικητικές ενέργειες που απαιτούνται για να παραδοθούν τα
παραδοτέα
◦ Πόρους που καταναλώνονται από τις δραστηριότητες (άνθρωποι,
προϋπολογισμός)
• Εστίαση της διοίκησης έργου
◦ Διαχείριση των πόρων
◦ Διατήρηση του ποιος είναι υπεύθυνος για ποια πράγματα
◦ Αντίδραση στις αλλαγές
◦ Διασφάλιση ότι οι στόχοι θα επιτευχθούν
4
Έργο
5
Εκλέπτυνση του μοντέλου
Εξοπλισμός
Έργο
* Μέσο (facility)
Πόρος Χρηματοδότηση
Δομή * Οργάνωση
κατάτμησης περι- Πακέτο
Χρονοδιάγραμμα γράφει εργασίας
εργασίας
*
* * *
παράγει Υπεύ- Οργανωτική
Αποτέλεσμα
Εργασία θυνος μονάδα *
* * για παίζει
εξαρτάται
Ρόλος
Σύνολο Προϊόν
Δραστη- Συμμετέχων Προσω-
προϊόντων εργασίας Καθήκον
ριότητα πικό
εργασίας
Εσωτερικό Παραδοτέο
προϊόν εργασίας Λειτουργία έργου Τμήμα Ομάδα
Ορισμός Έναρξη
do/Όρισε εμβέλεια do/Ανάθεσε καθήκοντα
Ανατέθηκαν τα
καθήκοντα
Τερματισμός
Σταθερή κατάσταση
do/Παράδωσε το σύστημα do/Ανάπτυξε το σύστημα
Ολοκληρώθηκε το σύστημα
7
Εργασίες σε κάθε κατάσταση
(φάση) του έργου (1/3)
• Ορισμός έργου
◦ Μετέχουν ο διοικητής του έργου, ο πελάτης και ο αρχιτέκτονας λογισμικού
◦ Εστιάζουμε στην αρχική κατανόηση της αρχιτεκτονικής του λογισμικού
(ιδιαίτερα στην αποσύνθεση σε υποσυστήματα) και στο έργο ιδιαίτερα στο
χρονοδιάγραμμα, τη δουλειά που πρέπει να γίνει και τους πόρους
◦ Παράγονται τρία έγγραφα, η διατύπωση του προβλήματος (problem
statement), η αρχική αρχιτεκτονική λογισμικού (initial software architecture)
και το αρχικό σχέδιο διαχείρισης έργου λογισμικού (initial software project
management plan)
• Έναρξη του έργου
◦ Ο διοικητής έργου δημιουργεί την υποδομή του έργου, προσλαμβάνει τους
συμμετέχοντες, τους οργανώνει σε ομάδες, αναθέτει καθήκοντα σε ομάδες
και καθορίζει τα ορόσημα (milestones)
Κατά τις δύο αυτές φάσεις, η περισσότερη δουλειά γίνεται από τον διοικητή
έργου
9
Εργασίες σε κάθε κατάσταση
(φάση) του έργου (3/3)
• Τερματισμός έργου
◦ Το εξαγόμενο του έργου παραδίδεται στον πελάτη
◦ Η εμπλοκή των περισσότερων μελών της ομάδας ανάπτυξης έχει
ολοκληρωθεί αρκετά πριν από αυτή τη φάση
◦ Λίγα «σημαίνοντα» μέλη της ομάδας ανάπτυξης, οι συγγραφείς
τεχνικών κειμένων και οι επικεφαλείς των ομάδων «πακετάρουν» το
σύστημα για να παραδοθεί στον πελάτη, να εγκατασταθεί και να
γίνουν οι έλεγχοι αποδοχής
◦ Συλλέγεται επίσης το ιστορικό του έργου για μελλοντική αναφορά
και για καταγραφή της εμπειρίας.
10
11
Επισκόπηση της επικοινωνίας στο
έργο (2/2)
• και μη προγραμματισμένα συμβάντα
◦ Στόχος: η αντιμετώπιση προβλημάτων και αναγκών
πληροφορίας που δεν είχαν προβλεφθεί
◦ Αιτήματα διευκρίνισης – ζητούνται συγκεκριμένες
πληροφορίες για το σύστημα, το έργο ή το πεδίο της
εφαρμογής
◦ Αιτήματα αλλαγής – περιγράφονται προβλήματα στο
σύστημα ή νέα χαρακτηριστικά για ενσωμάτωση
◦ Επίλυση ζητημάτων – όταν παρατηρείται διαφωνία
εξετάζονται οι πιθανές λύσεις και επιλέγεται ο τρόπος
επίλυσης του ζητήματος
12
Οργάνωση έργου
• Η οργάνωση έργου ορίζει τη σχέση ανάμεσα σε
πόρους και ειδικότερα μεταξύ των συμμετεχόντων σε
ένα έργο
• Η οργάνωση έργου πρέπει να ορίζει:
◦ Ποιος λαμβάνει τις αποφάσεις (δομή αποφάσεων)
◦ Ποιοι αναφέρουν την κατάστασή τους σε ποιον (δομή
αναφορών)
◦ Ποιοι επικοινωνούν με ποιους (δομή επικοινωνίας)
13
Ενδεικτική οργάνωση του έργου
ΕνδεικτικήΟργάνωση:
Οργάνωση
14
15
Ιεραρχικό μοντέλο αλληλεπίδρασης
επικοινωνίαΑπόφασης() επικοινωνίαΑπόφασης()
επικοινωνίαΚατάστασης() επικοινωνίαΚατάστασης()
• Προβλήματα:
◦ Αναποτελεσματικό για αποφάσεις που πρέπει να λαμβάνονται τοπικά. Δημιουργεί
μεγάλες καθυστερήσεις. Π.χ. οι προγραμματιστές μιας ομάδας συζητούν μεταξύ τους
για ένα θέμα που χρειάζεται πληροφορία από προγραμματιστές σε άλλη ομάδα
◦ Θέματα κακής ερμηνείας των ερωτήσεων και παρανοήσεων.
16
Ιεραρχική επικοινωνία
Γενικός συντονισμός
A B
Μέλη έργου
18
επικοινωνεί
Γιάννης: Διοίκηση: Ομάδα
υπεύθυνος Προγραμματιστής
ομάδας
επικοινωνεί
Πέτρος: Αρχιτεκτονική: Ομάδα
μηχανικός Προγραμματιστής
API
επικοινωνεί
Μαρία: Σχεδιαστής Τεκμηρίωση: Ομάδα
Συντάκτης
Νίκος:
Προγραμματιστής Προγραμματιστής
• Ρόλος: Σύνδεσμος
◦ Διευκόλυνση της επικοινωνίας μεταξύ δύο ομάδων
20
Συντάκτης κειμένου
Σύνδεσμος Διαχειριστής
διαμορφώσεων
Ελεγκτής
Ρόλος
Διοικητής έργου
Διοικητής
Επικεφαλής ομάδας
Πελάτης
Τελικός χρήστης
21
Ανάθεση καθηκόντων
• Τα καθήκοντα ανατίθενται σε ρόλους Ομάδα A .
• Οι ρόλοι ανατίθενται σε πρόσωπα
• Καθήκον 1 Καθήκον 1 Πρόσωπο Α
• Καθήκον 2 Καθήκον 2
Καθήκον 9 Ρόλος 1
• Καθήκον 3
Ρόλος 1 Ρόλος 2
• Καθήκον 4 Ρόλος 2
• Καθήκον 5 Καθήκον 4
• Καθήκον 6 Καθήκον 5
• Καθήκον 7 Καθήκον 7 Πρόσωπο Β
• Καθήκον 8
Ρόλος 3
• Καθήκον 9
Καθήκον 3 Ρόλος 3
Καθήκον 6
Καθήκοντα για το έργο
Καθήκον 8
22
23
Εργασίες (1/2)
• Μία εργασία (task) περιγράφει τη μικρότερη ποσότητα
εργασίας που ανατίθεται και παρακολουθείται από τη
διοίκηση του έργου
• Τυπικά αντιστοιχεί σε δουλειά 3-10 εργάσιμων ημερών
24
Εργασίες (2/2)
• Περιγραφή εργασίας
◦ Η εργασία ανατίθεται σε κάποιο ρόλο
◦ Η εργασία παράγει ένα συγκεκριμένο προϊόν εργασίας που θα
πρέπει να είναι «απτό» και ελέγξιμο.
◦ Λάθος προϊόν εργασίας: κατανόηση της διαδικασίας δανεισμού
◦ Σωστό προϊόν: έγγραφο περιγραφής της διαδικασίας δανεισμού
◦ Τα προϊόντα μιας εργασίας μπορεί να αποτελούν είσοδο σε άλλες
εργασίες
◦ Αυτά που παραδίδονται στον πελάτη ονομάζονται παραδοτέα
◦ Η εργασία έχει ημερομηνία έναρξης και προγραμματισμένη
διάρκεια
◦ Η εργασία απαιτεί συγκεκριμένους πόρους
◦ Ο συμμετέχων στον οποίο έχει ανατεθεί ο ρόλος εκτελεί την εργασία
και η διοίκηση παρακολουθεί την πρόοδο και την κατανάλωση των
πόρων
25
Παράδειγμα: εργασίες για κτίσιμο ενός σπιτιού
Εγκατάστ. Εγκατάστ. Σοβάτισμα
εσωτ. εσωτ. εσωτ.
σωλήνων ηλεκτρικών τοίχων
Βαφή
εσωτ.
Τοποθ.
πατωμάτων Τοποθ.
εσωτ.
θυρών
Κτίσιμο
Έναρξη Μελέτη Εκσκαφή
ΜελέτηΕκσκαφή Αγορά Τοποθετ.
Αγορά Τοποθετ.Κτίσιμο
εξωτ. εξωτ. Τοποθ. ΤΕΛΟΣ
υλικών θεμελίων
υλικών θεμελίωντοίχων τοίχων οροφής
Τοποθ.
εξωτ.
Αίτηση
θυρών
Αίτηση
άδειας άδειας Βάψιμο εξωτ.
τοίχων
26
σφάλματαΕπιθεώρησης: Document
σχέδιοΕλέγχου: Document
28
Μέγεθος εργασιών
• Οι εργασίες αποσυντίθενται σε μεγέθη που να επιτρέπουν την
αποτελεσματική παρακολούθηση
◦ Μπορεί αρχικά να μην είναι προφανές πώς θα αποσυντεθεί σε
εργασίες
◦ Εξαρτάται από τη φύση της εργασίας και πόσο καλά έχει
κατανοηθεί
• Η εύρεση του κατάλληλου μεγέθους είναι ιδιαίτερα σημαντική
◦ Λίστες καθηκόντων από προηγούμενα έργα
◦ Κάθε δραστηριότητα ανάπτυξης λογισμικού ορίζει νέες
δραστηριότητες και τροποποιεί τις ήδη υπάρχουσες
◦ Π.χ. Ορισμός διεπαφής με προσωπική προσαρμογή: ορίζει τις εργασίες
του σχεδιασμού της διεπαφής, του σχεδιασμού της προσωπικής
προσαρμογής και τροποποιεί τη διαδικασία σχεδιασμού της βάσης
δεδομένων
29
Δραστηριότητες
• Αντιστοιχούν σε μείζονες ενότητες εργασίας
• Ολοκληρώνονται σε ορόσημα του έργου
◦ Χρονοπρογραμματισμένα σημεία για τη μέτρηση της προόδου
◦ Τα εσωτερικά σημεία ελέγχου δεν πρέπει να είναι ορατά εξωτερικά
◦ Ένα ορόσημο συνήθως παράγει μία γραμμή βάσης (baseline)
◦ Ένα προϊόν εργασίας που επιθεωρείται τυπικά και για το οποίο εφαρμόζονται
διαδικασίες ελέγχου αλλαγών
◦ Κάθε αλλαγή σε μία γραμμή βάσης απαιτεί την εκτέλεση μιας συμφωνημένης
διαδικασίας
• Οι δραστηριότητες συνήθως ομαδοποιούνται σε υψηλότερου
επιπέδου δραστηριότητες
◦ Π.χ. Φάση 1, φάση 2, ...
• Επιτρέπουν τον διαχωρισμό των ασχολιών
• Μπορούν να εισαχθούν σχέσεις προήγησης μεταξύ των
δραστηριοτήτων
◦ Π.χ.: “Η δ1 πρέπει να εκτελεστεί πριν τη δ2”
30
Βαφή
εσωτ.
Τοποθ.
πατωμάτων
Τοποθ.
εσωτ.
θυρών
Αγορά Τοποθ. Κτίσιμο
Έναρξη Μελέτη Εκσκαφή Εξωτ. Τέλος
υλικών θεμελίων Τοποθ.
τοίχων οροφής
Τοποθ.
Αίτηση εξωτ.
άδειας Βαφή θυρών
εξωτ.
31
Παράδειγμα: εργασίες για κτίσιμο σπιτιού
Τοποθ.
εσωτ.
Ολοκλήρωση
Τοποθ.
εσωτ.
Σοβάτισμα
εσωτ.
σωλήνων εσωτερικού
καλωδίων τοίχων
Βαφή
εσωτ.
Τοποθ.
πατωμάτων
Τοποθ.
εσωτ.
Κτίσιμο θυρών
Κτίσιμο
Έναρξη Αγορά
Θεμελίωση
Έναρξη ΜελέτηΕκσκαφή
υλικών
εξωτερικών
Τοποθ.
θεμελίων Εξωτ. Τοποθ.
Τέλος
Τέλος
τοίχωντοίχων οροφής
Τοποθ.
Αίτηση εξωτ.
άδειας Βαφή θυρών
εξωτ.
Τοποθ.
εξωτ.
Ολοκλήρωση
Τοποθ.
εσωτ.
Μόνωση και
σοβάτισμα
σωλήνων εσωτερικού
καλωδίων εξωτ. τοίχων
32
Παραδείγματα δραστηριοτήτων
στην τεχνολογία λογισμικού
• Σχεδιασμός έργου (planning)
• Εκμαίευση απαιτήσεων (requirements elicitation)
• Ανάλυση (analysis)
• Σχεδιασμός συστήματος (system design)
• Σχεδιασμός αντικειμένων (object design)
• Υλοποίηση (implementation)
• Έλεγχος (testing)
• Παράδοση (delivery)
33
Συσχετίσεις μεταξύ έργων, δραστηριοτήτων, ρόλων,
προϊόντων εργασίας και πακέτων εργασίας
* Μονάδα εργασίας
1
Δραστηριότητα Εργασία
* 1 Ρόλος
ανατίθεται σε
34
36
Παράδειγμα χρονοπρογράμματος σε
διάγραμμα GANTT
37
Διαγράμματα PERT
38
Σύνοψη
• Τα έργα είναι συντονισμένες προσπάθειες για την επίτευξη
ενός στόχου που πρέπει να γίνει σε περιορισμένο χρόνο
• Οι συμμετέχοντες στο έργο οργανώνονται σε ομάδες, ρόλους
ενώ υπάρχουν σχέσεις ελέγχου (control relationships) και
σχέσεις επικοινωνίας (communication relationships)
• Ένας συμμετέχων μπορεί να έχει πάνω από έναν ρόλους
• Η δουλειά οργανώνεται σε όρους εργασιών που ανατίθενται σε
ρόλους και παράγουν προϊόντα εργασίας
39
Η επικοινωνία είναι κρίσιμη
• Στα μεγάλα έργα ανάπτυξης, ο χρόνος επικοινωνίας είναι
σημαντικό μέρος του συνολικού χρόνου
• Ένας μηχανικός λογισμικού πρέπει να αποκτήσει τις
επονομαζόμενες «ήπιες δεξιότητες» (soft skills)
◦ Συνεργασία
◦ Διαπραγμάτευση των απαιτήσεων με τον πελάτη και με τα μέλη της
ομάδας (και τα μέλη των άλλων ομάδων)
◦ Παρουσίαση
◦ Παρουσίαση μεγάλων τμημάτων του συστήματος κατά τη διάρκεια
επιθεωρήσεων
◦ Διοίκηση-Διαχείριση
◦ Να προεδρεύσει σε μία συνάντηση ή να ηγηθεί μιας ομάδας
◦ Συγγραφή τεχνικών κειμένων
◦ Συγγραφή τμήματος της τεκμηρίωσης του έργου.
40
41
Μοντελοποίηση επικοινωνίας
Υποστηρίζεται από
Γεγονός Μηχανισμός
επικοινωνίας * * επικοινωνίας
42
43
Σχεδιασμένα γεγονότα επικοινωνίας
• Επιθεώρηση έργου: εστίαση στα μοντέλα συστήματος
◦ Στόχος: Εκτίμηση της κατάστασης του έργου και επιθεώρηση του μοντέλου
συστήματος και των διεπαφών των υποσυστημάτων
◦ Επίσης δίνουν τη δυνατότητα ανταλλαγής λειτουργικής γνώσης, όπως
προβλήματα με τα εργαλεία ή το σύστημα
◦ Η εστίαση εξαρτάται από το παραδοτέο που επιθεωρείται:
◦ Σχεδιασμός συστήματος: εξετάζεται η αποσύνθεση σε υποσυστήματα και οι διεπαφές
των υποσυστημάτων
◦ Σχεδιασμός αντικειμένων: εξετάζονται οι διεπαφές των αντικειμένων
◦ Ολοκλήρωση και έλεγχος: εξετάζονται οι έλεγχοι και τα αποτελέσματά τους
◦ Παράδειγμα: Επιθεώρηση ανάλυσης, επιθεώρηση σχεδιασμού
◦ Τυπικά λαμβάνει χώρα κοντά στα ορόσημα και στα παραδοτέα του έργου
44
45
Σχεδιασμένα γεγονότα επικοινωνίας
Επιθεώρηση κατάστασης
◦ Στόχος: Εύρεση & διόρθωση αποκλίσεων από τον
χρονοπρογραμματισμό ή ανάδειξη νέων ζητημάτων
◦ Η εστίαση είναι σε εργασίες (σε αντίθεση με την επιθεώρηση
έργου που εστιάζει στο σύστημα)
◦ Επίσης συζητούνται ανοικτά ζητήματα και προβλήματα που
ανέκυψαν
◦ Οι λύσεις σε κοινά προβλήματα γίνονται κτήμα όλων και η
λειτουργική γνώση διαχέεται πιο αποτελεσματικά σε επίπεδο
ομάδας, παρά σε επίπεδο έργου
◦ Πρέπει να διαμορφώνεται ατζέντα για να προετοιμάζονται οι
συμμετέχοντες και πρέπει να τηρούνται πρακτικά (οπωσδήποτε
περιλαμβάνοντας την αναφορά κατάστασης και τις αποφάσεις)
◦ Παράδειγμα
◦ Ενότητα «κατάσταση» στις εβδομαδιαίες συναντήσεις της
ομάδας
46
Σχεδιασμένα γεγονότα
επικοινωνίας
«Νοητικός καταιγισμός» (Brainstorming)
◦ Στόχος: Να δημιουργηθεί και να αξιολογηθεί ένα μεγάλο
πλήθος λύσεων («λογικών» αλλά και «απίθανων») για
ένα πρόβλημα
◦ Συνήθως με παρουσία όλων των συμμετεχόντων, αλλά
είναι δυνατό να γίνει και με άλλους τρόπους, π.χ. e-mail
◦ Η αξιολόγηση βοηθάει στο να διαμορφωθούν σαφή
κριτήρια αξιολόγησης των λύσεων και την επίτευξη
συναίνεσης στην επιλεχθείσα λύση
◦ Παράδειγμα
◦ Ενότητα «συζήτηση» στις εβδομαδιαίες συναντήσεις της ομάδας
47
Σχεδιασμένα γεγονότα επικοινωνίας
Διάθεση (release)
◦ Στόχος: Να καταστεί διαθέσιμο κάποιο προϊόν εργασίας σε άλλους
συμμετέχοντες (μερικές φορές αντικαθιστά παλαιότερη έκδοση)
◦ Μπορεί να περιλαμβάνει τη (νέα) έκδοση του προϊόντος, μία λίστα
από ανοικτά ζητήματα που πρέπει ακόμη να διευθετηθούν,
τεκμηρίωση κ.λπ.
◦ Ο μηχανισμός χρησιμοποιείται για να διατίθενται μεγάλες
ποσότητες πληροφορίας με ελεγχόμενο τρόπο ομαδοποιώντας,
τεκμηριώνοντας και επιθεωρώντας πολλές αλλαγές ταυτόχρονα
◦ Συνηθέστατα των επιθεωρήσεων έργου και πελάτη προηγείται μία
διάθεση
◦ Χρονοπρογραμματίζεται έτσι μετά τη σχετική δραστηριότητα (ή
“φάση”)
◦ Παραδείγματα:
◦ Σχέδιο διοίκησης έργου λογισμικού, έγγραφο ανάλυσης απαιτήσεων,
έγγραφο σχεδιασμού συστήματος, “beta” έκδοση λογισμικού, τελική
έκδοση λογισμικού, εγχειρίδιο χρήστη
48
Σχεδιασμένα γεγονότα
επικοινωνίας
«Νεκροψία» (Postmortem Review)
◦ Στόχος: Να καταγραφούν οι εμπειρίες από το έργο,
θετικές και αρνητικές
◦ Γίνεται μετά το τέλος του έργου, αλλά σύντομα για
να είναι νωπές οι μνήμες
◦ Μπορεί να διενεργείται με ερωτηματολόγιο, νοητικό
καταιγισμό ή αναφορές
◦ Περιλαμβάνει εργαλεία, μεθόδους, οργάνωση,
διαδικασίες
◦ Προτιμότερο να καταγράφονται τα αποτελέσματα σε
τεχνική έκθεση
49
Μη σχεδιασμένα γεγονότα
επικοινωνίας
Αίτημα για διευκρίνιση
◦ Περιλαμβάνει επικοινωνία ανάμεσα σε
προγραμματιστές, πελάτες και χρήστες
◦ Παράδειγμα: Λέμε ότι τα προαπαιτούμενα μεταξύ
εξαμήνων του ίδιου έτους δεν εφαρμόζονται: πρέπει
να καταχωρούνται στο σύστημα ή όχι;
50
Μη σχεδιασμένα γεγονότα
επικοινωνίας
Αίτημα αλλαγής
◦ Ένας συμμετέχων αναφέρει ένα πρόβλημα και (πιθανώς να)
προτείνει λύση
◦ Αν το μέγεθος του έργου είναι μεγάλο, μπορεί οι αιτήσεις
αλλαγής να τυποποιούνται
◦ Παράδειγμα: Διόρθωση υπολογισμού βαθμού πτυχίου
Αναφορά: 1291 Ημερομηνία: 5/12 Συντάκτης: Νίκος
Σύνοψη: Ο βαθμός πτυχίου δεν υπολογίζεται σωστά
Υποσύστημα: Διαχείριση φοιτητών
Έκδοση: 3.4.1
Κατηγορία: Σφάλμα
Σοβαρότητα: σημαντικό
Προτεινόμενη λύση: πρέπει να εφαρμόζεται ο τρόπος υπολογισμού στη σελίδα 3
του οδηγού σπουδών
51
Μη σχεδιασμένα γεγονότα επικοινωνίας
Επίλυση ζητήματος
◦ Επιλέγεται μία λύση για ένα ζήτημα όπου έχουν προταθεί
πολλές λύσεις
◦ Από το αποθετήριο ανοικτών ζητημάτων ανακτώνται τα ανοικτά
ζητήματα και οι προτάσεις
Ζήτημα[0]: Ποια πολιτική πρέπει να εφαρμοστεί για την προσκόμιση γνωρισμάτων από
τη βάση δεδομένων;
– Πρόταση[1]: Κατ’ απαίτηση ανά γνώρισμα
Κατά[2]: κακή απόδοση
Υπέρ[3]: απλούστερο
– Πρόταση[4]: κατ’ απαίτηση ανά αντικείμενο (να προσκομίζονται προκαταβολικά
όλα τα γνωρίσματα)
Υπέρ[5]: καλύτερη απόδοση. Στη διαχείριση φοιτητών, μαθημάτων, βαθμολογίων
χρειάζονται συνήθως όλα τα γνωρίσματα (πρβλ. πρακτικά συνάντησης 3/12)
– Επίλυση[6]: Να υλοποιηθεί η Πρόταση[4]. Η κρυφή μνήμη πρέπει να μείνει στο
επίπεδο της Β.Δ. ώστε η πολιτική προσκόμισης να μην είναι ορατή εκτός του API.
Αν αποτύχει αυτή η επιλογή, υλοποιούμε την Πρόταση[1].
– Ενέργεια: για: Νίκο: Τροποποίησε την πολιτική προσκόμισης χωρίς να αλλάξει το
API 52
53
Σύγχρονοι τρόποι επικοινωνίας
• Σύσκεψη (άμεση, τηλεφωνική, βιντεοδιάσκεψη)
◦ Υποστηρίζει: Σχεδιασμένους διαλόγους, επιθεώρηση
πελάτη, επιθεώρηση κατάστασης, νοητικό καταιγισμό,
επίλυση ζητημάτων
◦ Υπάρχει ατζέντα, συντονιστής, πρακτικογράφος, υπεύθυνος
τήρησης χρόνου
◦ Η ατζέντα πρέπει να περιγράφει σαφώς τα ζητήματα που θα
συζητηθούν:
+ «Επίλυση ζητημάτων με τις απαιτήσεις που εμποδίζουν την
έναρξη της ανάπτυξης», «τρόπος χειρισμού δεδομένων
εξόδου»
- «επίλυση ανοικτών ζητημάτων», «ζητήματα υλοποίησης»
+Αποτελεσματική για επίλυση ζητημάτων και διαμόρφωση
συναίνεσης
– Υψηλό κόστος (άνθρωποι, πόροι), χαμηλό «εύρος ζώνης»
54
55
Μηχανισμοί για σχεδιασμένα γεγονότα
Ορισμός Επιθεώρηση Αναφορά Επιθεώρηση- Διάθεση
προβλήματος- έργου-πελάτη κατάστασης περιήγηση
Νοητικός
καταιγισμός
Συζήτηση
στους
διαδρόμους
Σύσκεψη
Ηλ.
ταχυδρομείο
Ομάδα νέων
(newsgroup)
WWW
(δικτυακή
πύλη)
56
57
Δραστηριότητες επικοινωνίας
• Τυπικές δραστηριότητες επικοινωνίας σε ένα
έργο λογισμικού
◦ Κατανόηση διατύπωσης προβλήματος
◦ Ένταξη σε ομάδα
◦ Προγραμματισμός και συμμετοχή σε συσκέψεις
κατάστασης ομάδας
◦ Ένταξη στη «δομή επικοινωνίας»
58
59
Ένταξη σε ομάδα
• Κατά τη φάση του ορισμού έργου, ο διοικητής του έργου
δημιουργεί μία ομάδα για κάθε υποσύστημα
• Μπορεί να δημιουργηθούν και πρόσθετες «διαθεματικές»
ομάδες (περιλαμβάνουν άτομα από διαφορετικά τμήματα
μέσα στον οργανισμό, π.χ. διαχείριση ανθρώπινων πόρων,
μηχανικοί, πωλήσεις, εμπορική προώθηση κ.λπ.) για να
υποστηρίξουν τις ομάδες των υποσυστημάτων
• Κάθε ομάδα έχει έναν επικεφαλής
• Άλλοι ρόλοι μπορεί να είναι:
◦ Διαχειριστής διαμόρφωσης
◦ Σύνδεσμος για θέματα API
◦ Συγγραφέας τεχνικών κειμένων
◦ Διαχειριστής ιστοχώρου
• Πρέπει να καθορίζονται σαφών τα καθήκοντα της ομάδας και
κάθε μέλους για να διασφαλίζεται η επιτυχία της ομάδας
60
61
Ένταξη στη «δομή επικοινωνίας»
• Μία καλή δομή επικοινωνίας είναι εξαιρετικά σημαντική για
κάθε έργο λογισμικού
◦ διαδικτυακή πύλη, e-mail, ομάδες νέων, εξειδικευμένο λογισμικό
• Θα πρέπει να μάθουν οι συμμετέχοντες να χρησιμοποιούν
τον κατάλληλο μηχανισμό για την κάθε κατάσταση
◦ Η «καταλληλότητα» μπορεί να εξαρτάται από την «εταιρική
κουλτούρα»
• Θα πρέπει να «εγγραφεί» ο κάθε συμμετέχων σε όλους τους
σχετικούς μηχανισμούς που πρέπει να μετέχει
◦ Ενεργοποίηση λογαριασμού, εκπαίδευση
• Ερωτήσεις που πρέπει να απαντηθούν:
◦ Χρονοπρογραμματίζονται οι συσκέψεις σε λογισμικό ημερολογίου;
◦ Διαθέτει το έργο ένα σύστημα αναφοράς προβλημάτων;
◦ Εκτελούν τα μέλη της ομάδας «επιθεωρήσεις ομοτίμων» στις
συσκέψεις ή σε γραπτή μορφή;
62
Οργάνωση
ανατίθεται σε
Ομάδα
*
*
υπεύθυνος για
Συμμετέχων
* 1
Ρόλος
*
Εργασία παράγει Προϊόν εργασίας
1 *
* 1 *
Χρονοπρόγραμμα
απεικονίζεται σε
1
Επικοινωνία
εμφανίζεται σε
Σχεδιασμένο γεγονός Μη σχεδιασμένο γεγονός αφορά
* *
Διατύπωση Αίτημα για
προβλήματος διευκρίνιση
Επίλυση
Διάθεση ζητήματος
63
Σύνοψη
• Γεγονότα επικοινωνίας
◦ Σχεδιασμένα (καθορισμένα στο χρονοπρόγραμμα)
◦ Μη σχεδιασμένα (καθοδηγούμενα από μη προβλεπόμενα
συμβάντα)
• Μηχανισμοί επικοινωνίας
◦ Ασύγχρονοι
◦ Σύγχρονοι
64
1
Περιεχόμενα
• Διατύπωση προβλήματος
• Λειτουργικές προδιαγραφές
• Μη λειτουργικές προδιαγραφές
• Διεπαφή χρήστη
• Μοντέλο αντικειμένων
• Αποσύνθεση συστήματος
• Θέση σε λειτουργία
Διατύπωση προβλήματος
• Η διατύπωση προβλήματος αναπτύσσεται από
τον πελάτη ως μία περιγραφή του προβλήματος
που θα αντιμετωπίσει το σύστημα
• Η διατύπωση προβλήματος περιγράφει
◦ Την τρέχουσα κατάσταση
◦ Τους στόχους
◦ Τη λειτουργικότητα που πρέπει να υποστηρίζει το
νέο σύστημα
◦ Το περιβάλλον εντός του οποίου θα λειτουργήσει το
νέο σύστημα
◦ Παραδοτέα που αναμένονται από τον πελάτη
◦ Ημερομηνίες παράδοσης των παραδοτέων
◦ Ένα σύνολο κριτηρίων αποδοχής
3
Τρέχουσα κατάσταση – το
πρόβλημα προς αντιμετώπιση
• Υπάρχει ένα πρόβλημα στην τρέχουσα κατάσταση.
◦ Παραδείγματα:
◦ Σε ένα παιχνίδι σκάκι η απόκριση είναι αργή.
◦ Στο διαδικτυακό τάβλι δεν βρίσκω αντιπάλους του επιπέδου μου
• Τι έχει αλλάξει; Γιατί μπορούμε να αντιμετωπίσουμε το
πρόβλημα τώρα;
◦ Αλλαγή στο πεδίο της εφαρμογής
◦ Διότι έχει εισαχθεί μία νέα επιχειρηματική διαδικασία στον οργανισμό
◦ Π.χ. Θέλουμε να παίζουμε διαδραστικά παιχνίδια με απομακρυσμένους συμπαίκτες
◦ Αλλαγή στο πεδίο της λύσης
◦ Έχει εμφανιστεί μία νέα λύση (υποστηρικτική τεχνολογία)
◦ Π.χ. Το διαδίκτυο επιτρέπει τη δημιουργία εικονικών κοινοτήτων
5
ARENA: Οι στόχοι
• Παροχή μιας γενικής υποδομής για:
◦ Υποστήριξη εικονικών κοινοτήτων παιχνιδιών
◦ Εγγραφή νέων παιχνιδιών
◦ Εγγραφή νέων παικτών
◦ Οργάνωση τουρνουά
◦ Καταγραφή των σκορ των παικτών
• Παροχή ενός πλαισίου εργασίας για τους διοργανωτές
τουρνουά
◦ Να μπορούν να προσαρμόζουν το πλήθος και τη σειρά των
παιχνιδιών και τη συλλογή «βαθμών εμπειρίας-κατάταξης»
• Παροχή ενός πλαισίου εργασίας για όσους
αναπτύσσουν παιχνίδια
◦ Για ανάπτυξη νέων παιχνιδιών ή για την προσαρμογή
υπαρχόντων παιχνιδιών στο πλαίσιο του ARENA
• Παροχή ενός πλαισίου εργασίας για τους διαφημιστές
7
ARENA: μη λειτουργικές
προδιαγραφές
• Το σύστημα πρέπει να υποστηρίζει
◦ 10 παράλληλα τουρνουά
◦ με κάθε ένα να περιλαμβάνει έως 64 παίκτες
◦ και αρκετές εκατοντάδες θεατές
◦ Ο εξυπηρέτης πρέπει να είναι διαθέσιμος σε 24ωρη βάση
• Ο χειριστής πρέπει να έχει τη δυνατότητα να προσθέτει νέα
παιχνίδια (και άλλα χαρακτηριστικά) προσθέτοντας απλώς
συνιστώσες (π.χ. κλάσεις Java) και ενδεχομένως επανεκκινώντας το
σύστημα αλλά χωρίς να τροποποιεί το υπάρχον σύστημα
• Το σύστημα πρέπει να έχει χαμηλές απαιτήσεις εύρους ζώνης –
πρέπει να είναι δυνατή η συμμετοχή στα παιχνίδια με 60kbps ή
περισσότερο (υποστήριξη GPRS)
• Το σύστημα πρέπει να έχει χαμηλό κόστος λειτουργίας – να μη
χρειάζεται αγορά πρόσθετου λογισμικού και να μην απαιτείται η
συμμετοχή εξειδικευμένου τεχνικού προσωπικού
Περιορισμοί
• Περιορισμός: Κάθε περιορισμός που τίθεται από τον
πελάτη στο πεδίο λύσης ή στην οργάνωση του έργου
◦ Καλούνται και ψευδο-απαιτήσεις
• Παραδείγματα
◦ Περιορισμοί παράδοσης (“πρέπει να παραδοθεί πριν τις
31/10”)
◦ Περιορισμοί οργάνωσης (“πρέπει να δημιουργηθεί ξεχωριστή
ομάδα ελέγχου”)
◦ Περιορισμοί υλοποίησης (“πρέπει να γραφεί σε Java”)
◦ Περιορισμοί πλατφόρμας-στόχου (“πρέπει να τρέχει σε
Android, Windows και Linux”)
9
ARENA: Περιβάλλον-στόχος
Παράδειγμα:
• Οι χρήστες πρέπει να μπορούν να εκτελούν το ARENA ως
applet μέσα σε ένα πρόγραμμα πλοήγησης
• Η ιστοσελίδα πρέπει να επικυρώνεται ως απόλυτα σωστή
από την υπηρεσία W3C Markup Validation Service
• Η διάδραση με τον εξυπηρέτη ARENA πρέπει να γίνεται
αποκλειστικά με αιτήσεις/αποκρίσεις HTTP/1.1
Το περιβάλλον-στόχος είναι διαφορετικό από το περιβάλλον
ανάπτυξης
• «Η γλώσσα υλοποίησης πρέπει να είναι η Java 1.5»
• “Οι δοκιμές θα γίνονται σε IE, Firefox, Chrome”
• “Η πλατφόρμα ανάπτυξης θα είναι to Eclipse 3.7”
10
Χρονοπρόγραμμα έργου
• Το χρονοπρόγραμμα έργου είναι προαιρετικό τμήμα της
διατύπωσης του προβλήματος
◦ Διαχειριστική πληροφορία
◦ Συχνά αποτελεί το πρωτόλειο για το χρονοπρόγραμμα που θα
δημιουργηθεί στον σχεδιασμό διαχείρισης έργου λογισμικού
• Παράδειγμα:
◦ Έναρξη έργου 15 Ιανουαρίου
◦ Επιθεώρηση συστήματος 22 Φεβρουαρίου
◦ Επιθεώρηση πρώτου πρωτοτύπου 26 Απριλίου
◦ Δοκιμές αποδοχής πελάτη 15 Ιουνίου
11
Κριτήρια αποδοχής πελάτη
• Το σύστημα υποστηρίζει 10 παράλληλα
τουρνουά με 64 παίκτες και 10 θεατές ανά
τουρνουά
• Οι δοκιμές θα γίνουν με τα παιχνίδια «τρίλιζα»
και «Asteroids»
• Ο μέσος χρόνος απόκρισης για εντολές που
δίνονται από τους εξυπηρετούμενους
(υπολογιστές παικτών-θεατών) θα είναι < 1 sec
• Κατά τη μία εβδομάδα δοκιμών, ο μέσος χρόνος
διαθεσιμότητας του εξυπηρέτη θα είναι > 95%
12
13
Αποσύνθεση σε υποσυστήματα
Διεπαφή χρήστη
Τουρνουά Διαχείριση
Διαφήμιση
χρηστών
Διαχείριση
συνιστωσών Κατάλογος
χρηστών
Στατιστικά
Διαχείριση τουρνουά
συνόδων
14
ΕίδοςΤουρνουά
Ομοσπονδία
Τουρνουά ΜεΑποκλεισμό
ΌλοιΜεΌλους
Γύρος
Παίκτης Παιχνίδι
15
Εκλέπτυνση του μοντέλου
Παιχνίδι
Τρίλιζα
Ομοσπονδία ΕίδοςΤουρνουά
Asteroids
Τουρνουά ΜεΑποκλεισμό
ΌλοιΜεΌλους
Γύρος
Παίκτης Κίνηση
Παιχνίδι
Διάγραμμα στιγμιοτύπων
συστήματος AREMA
17
Διεπαφή χρήστη στο ARENA
(εξυπηρετούμενος)
18
19
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ (SOFTWARE
ENGINEERING)
Εκμαίευση απαιτήσεων
Υλοποιείται από
Εκφράζεται με Δομείται σε Απεικονίζεται
όρους Επαληθεύεται
σε από
class...
class... ?
class... ?
class....
Μοντέλο Αντικείμενα Αντικείμενα
περιπτώσεων πεδίου Υποσυ- πεδίου λύσης Πρωτογενής Μοντέλο
εφαρμογής στήματα κώδικα περιπτώσεων
χρήσης
ελέγχου
4
Χειρισμός απαιτήσεων:
προσδιορισμός συστήματος (1/2)
• Πρέπει να απαντηθούν δύο ερωτήσεις:
1. Πώς μπορούμε να προσδιορίσουμε τον σκοπό του
συστήματος;
◦ Ποιες είναι οι απαιτήσεις και ποιοι οι περιορισμοί;
2. Τι βρίσκεται εντός και τι εκτός του συστήματος;
◦ Τα αντικείμενα και διαδικασίες που θα αναδειχθούν στη
συνέχεια και τα όρια του συστήματος είναι ισχυρά αλληλένδετα
• Οι δύο αυτές ερωτήσεις απαντώνται κατά την εκμαίευση και
ανάλυση των απαιτήσεων.
• Εκμαίευση απαιτήσεων:
◦ Ορισμός του συστήματος με όρους που είναι κατανοητοί από τον
πελάτη ή/και τον χρήστη (παράγεται η “προδιαγραφή απαιτήσεων”)
Χειρισμός απαιτήσεων:
προσδιορισμός συστήματος (2/2)
• Ανάλυση απαιτήσεων:
◦ Ορισμός του συστήματος σε όρους που είναι κατανοητοί από την
ομάδα ανάπτυξης (τεχνικές προδιαγραφές, “μοντέλο ανάλυσης”)
◦ «Προδιαγραφή απαιτήσεων» & «Μοντέλο ανάλυσης» είναι η ίδια
πληροφορία ΑΛΛΑ με το (1) αναπαρίσταται σε φυσική γλώσσα και
στοχεύει στην επικοινωνία ομάδας ανάπτυξης-χρηστών ενώ το (2)
αναπαρίσταται με (ήμι-) τυπικό τρόπο και στοχεύει στην επικοινωνία
μελών ομάδας ανάπτυξης
• Διαδικασία απαιτήσεων: Περιλαμβάνει την εκμαίευση και την
ανάλυση των απαιτήσεων
6
Διαδικασία απαιτήσεων
Διατύπωση
προβλήματος
: μη λειτουργικές
απαιτήσεις
: λειτουργικό μοντέλο
: δυναμικό μοντέλο
Διάγραμμα
δραστηριότητας : μοντέλο αντικειμένων
UML ανάλυσης
7
8
Βασικές δραστηριότητες στην
εκμαίευση απαιτήσεων (1)
• Προσδιορισμός actors
◦ Προσδιορίζονται οι τύπου των χρηστών που θα υποστηρίζει το
σύστημα
• Προσδιορισμός σεναρίων
◦ η ομάδα ανάπτυξης δημιουργεί ένα σύνολο λεπτομερών σεναρίων
για την τυπική λειτουργικότητα που θα παρέχεται από το σύστημα
◦ Πρόκειται για συγκεκριμένα παραδείγματα χρήσης του συστήματος
◦ Αποτελούν ένα μέσο επικοινωνίας της ομάδας ανάπτυξης με τους
χρήστες ώστε η ομάδα να κατανοήσει καλύτερα το πεδίο εφαρμογής
• Προσδιορισμός περιπτώσεων χρήσης
◦ Από τα σενάρια εξάγονται οι περιπτώσεις χρήσης που αναπαριστούν
πλήρως το σύστημα
◦ Σε αντίθεση με τα σενάρια που περιγράφουν μόνο παραδείγματα χρήσης
του συστήματος
◦ Οι περιπτώσεις χρήσης ορίζουν την εμβέλεια του συστήματος
11
12
Έννοιες εκμαίευσης απαιτήσεων (3)
•Μη λειτουργικές απαιτήσεις [2]
◦ Ενδεικτικές κατηγορίες:
◦ Αξιοπιστία: η ικανότητα του συστήματος να εκτελεί τις
απαιτούμενες λειτουργίες υπό δοθείσες συνθήκες για κάποιο
διάστημα.
◦ Παραδείγματα: Μέσος χρόνος μέχρι να σημειωθεί βλάβη, η
ικανότητα ανίχνευσης συγκεκριμένων σφαλμάτων, η αντοχή σε
επιθέσεις.
◦ Απόδοση: αφορά μετρήσιμα χαρακτηριστικά του συστήματος,
όπως ο χρόνος απόκρισης, η ρυθμαπόδοση, η διαθεσιμότητα
13
14
Έννοιες εκμαίευσης απαιτήσεων (5)
• Μη λειτουργικές απαιτήσεις [4]
◦ Λοιπές κατηγορίες:
◦ Απαιτήσεις υλοποίησης: περιορισμοί χρήσης συγκεκριμένων
εργαλείων, γλωσσών προγραμματισμού, πλατφορμών υλικού κ.ο.κ.
◦ Απαιτήσεις διεπαφής: τίθενται από εξωτερικά συστήματα,
περιλαμβάνοντας «παλαιά» συστήματα και μορφότυπους διεπαφής
◦ Απαιτήσεις λειτουργικού περιβάλλοντος: περιορισμοί στη διαχείριση
και τον χειρισμό του συστήματος στην παραγωγική του λειτουργία
◦ Απαιτήσεις «πακέτου παράδοσης»: περιορισμοί αναφορικά με την
παράδοση του συστήματος, π.χ. σε ποιο μέσο θα παραδοθεί το
λογισμικό (CD/DVD/USB stick κ.ο.κ.)
◦ Νομικές απαιτήσεις: τίθενται από το νομικό πλαίσιο, π.χ. η διεπαφή
των συστημάτων λογισμικού του δημοσίου πρέπει να είναι στα
Ελληνικά. Επίσης αδειοδότηση (GPL κ.λπ.)
15
16
Έννοιες εκμαίευσης απαιτήσεων (6)
• Πληρότητα, συνέπεια, σαφήνεια και ορθότητα (2)
• Παραδείγματα:
◦ Μη πλήρης προδιαγραφές: Μετά από αίτησή του ένας φοιτητής
μπορεί να αναστείλει τη φοίτησή του.
◦ Δεν υπάρχει όμως προδιαγραφή που να λέει πώς μπορεί να αρθεί η
αναστολή!
◦ Ασυνεπείς προδιαγραφές: Η πηγή προδιαγραφών 1 αναφέρει ότι αν
ένας φοιτητής αποτύχει 3 φορές σε ένα μάθημα, εξετάζεται από
επιτροπή. Η πηγή 2 αναφέρει ότι ένας φοιτητής εξετάζεται
απεριόριστο πλήθος φορών στο μάθημα.
◦ Ασαφής προδιαγραφή: Το σύστημα θα υποστηρίζει προθεσμίες
παράδοσης της ηλεκτρονικής αλληλογραφίας
◦ Τι σημαίνει το «υποστηρίζει»; Γράφουμε «να παραδοθεί μέχρι τότε»; Το
σύστημα τι κάνει για να τηρήσει τις προθεσμίες; κ.λπ.
◦ Λάθος προδιαγραφή: Σημειώνεται αν ο φοιτητής έχει εισαχθεί στο
τμήμα με πανελλήνιες ή κατατακτήριες εξετάσεις.
◦ Μεταγραφές; Ειδικές κατηγορίες (π.χ. Ολυμπιονίκες);
17
18
Έννοιες εκμαίευσης απαιτήσεων (8)
• Ρεαλισμός, επαληθευσιμότητα και ιχνηλατησιμότητα
απαιτήσεων [2]
◦ Ιχνηλατησιμότητα: πρέπει να μπορεί να βρεθεί η διαδρομή μεταξύ
κάθε προδιαγραφής και των αντίστοιχων λειτουργιών του
συστήματος και αντίστροφα
◦ Επίσης να μπορεί να βρεθεί η συσχέτιση μεταξύ προδιαγραφών,
λειτουργιών του συστήματος και ενδιάμεσων σχεδιαστικών αντικειμένων
όπως συνιστώσες του συστήματος, κλάσεις, μεθόδους και γνωρίσματα
αντικειμένων.
◦ Η ιχνηλατησιμότητα είναι πολύ σημαντική για να ελέγχουμε τις αλλαγές
και να δημιουργούμε πλαίσια ελέγχου του λογισμικού
19
20
Δραστηριότητες εκμαίευσης
απαιτήσεων
• Προσδιορισμός actors
• Προσδιορισμός σεναρίων
• Προσδιορισμός περιπτώσεων χρήσης
• Εκλέπτυνση περιπτώσεων χρήσης
• Προσδιορισμός συσχετίσεων μεταξύ περιπτώσεων χρήσης
• Προσδιορισμός μη λειτουργικών απαιτήσεων
21
Προσδιορισμός actors
• Το πρώτο βήμα στην εκμαίευση απαιτήσεων
• Δίνει τη δυνατότητα:
◦ να καθοριστούν τα όρια του συστήματος
◦ να αναδειχθούν όλες οι οπτικές γωνίες που πρέπει να ληφθούν υπ’
όψιν στην ανάπτυξη του συστήματος
• Οι περισσότεροι actors προϋπάρχουν της ανάπτυξης του
συστήματος
◦ Αντιστοιχούν σε ρόλους στον οργανισμό
• Στην αρχή μπορεί να μην είναι εμφανές αν κάτι είναι actor
ή αντικείμενο
◦ Π.χ. Στο σύστημα της γραμματείας η βάση δεδομένων πτυχιακών
εργασιών είναι actor ή αντικείμενο;
◦ Αν είναι εντός της εμβέλειας του συστήματος, είναι αντικείμενο,
ειδάλλως είναι actor
22
Βασικές ερωτήσεις για
προσδιορισμό actors
• Ποιες ομάδες χρηστών υποστηρίζονται από το σύστημα για κατά την
εκτέλεση των εργασιών τους;
• Ποιες ομάδες χρηστών εκτελούν τις βασικές λειτουργίες του
συστήματος;
• Ποιες ομάδες χρηστών εκτελούν δευτερεύουσες λειτουργίες, όπως
συντήρηση και διαχείριση;
• Ποιά είναι τα εξωτερικά λογισμικά και υλικά με τα οποία αλληλεπιδρά
το σύστημα;
• Οι ομάδες χρηστών μπορεί να συμπτύσσονται σε μία γενικότερη όταν
έχουν κοινή προοπτική στο σύστημα
◦ Π.χ. ο «διδάσκων» και ο «βοηθός διδασκαλίας» στο e-class δεν
διαφοροποιούνται ως προς τις λειτουργίες που εκτελούν
• Το επόμενο βήμα είναι να προσδιοριστεί η λειτουργικότητα που είναι
διαθέσιμη σε κάθε ομάδα χρηστών
◦ Διαθέσιμα εργαλεία: ερωτηματολόγια, παρατήρηση, σενάρια και τυπικά
διατυπωμένες περιπτώσεις χρήσης
23
24
Σενάρια (1/2)
• Μία περιγραφή ενός γεγονότος ή μιας σειράς ενεργειών και
γεγονότων που περιλαμβάνουν τη χρήση του συστήματος
• Πρόκειται για περιγραφή σε μορφή κειμένου
◦ Πιθανώς ο χρήστης να το εκφράζει προφορικά και να καταγράφεται
στη συνέχεια
◦ Απεικονίζει την οπτική γωνία του χρήστη
25
Σενάρια (2/2)
• Μπορεί να περιγράφει είτε τρέχουσα χρήση ή σχεδιαζόμενη χρήση
• Μπορεί να περιλαμβάνει κείμενο, γραφικά, βίντεο, «πινάκια
εξιστόρησης» (storyboards) κ.τ.λ.
• Με την περιγραφή αυτή μπορεί να αποτυπωθεί περισσότερη
πληροφορία για τους στόχους του χρήστη και το περιβάλλον εντός
του οποίου εργάζεται ο χρήστης
26
Είδη σεναρίων
• Σενάριο αποτύπωσης (As-is scenario):
◦ Περιγράφει μία τρέχουσα κατάσταση.
◦ Συνήθως χρησιμοποιείται σε έργα αναθεώρησης
λογισμικού (re-engineering)
◦ Ο χρήστης περιγράφει το σύστημα
• Σενάριο προοπτικής:
◦ Περιγράφει ένα μελλοντικό σύστημα
◦ Παράδειγμα: διαδικτυακή πλατφόρμα για on-line παιχνίδια
◦ Χρησιμοποιείται στην ανάπτυξη νέων συστημάτων
(greenfield engineering) και σε έργα ανάπτυξης
διεπαφών (interface engineering projects)
◦ Συνήθως συνεργάζονται ο πελάτης και η ομάδα
ανάπτυξης
27
28
Παρατηρήσεις για τα σενάρια
• Τα σενάρια δεν υποκαθιστούν τις περιπτώσεις χρήσης
◦ Εστιάζουν σε συγκεκριμένα στιγμιότυπα και γεγονότα σε
αντιδιαστολή με γενικές περιγραφές που καλύπτουν όλες τις
δυνατές ροές γεγονότων
29
Παράδειγμα σεναρίου
Όνομα σεναρίου: ΦωτιάΣεΑποθήκη
30
Ανάδειξη σεναρίων
• Αν το σύστημα δεν υπάρχει, ο πελάτης πιθανότατα δεν
θα δώσει αυθόρμητα πολλές πληροφορίες
◦ Οι πελάτες κατανοούν το χώρο του προβλήματος, όχι αυτόν της
λύσης!
• ... το ίδιο μάλλον θα συμβεί και αν το σύστημα υπάρχει
◦ “Μα είναι προφανές, γιατί να το πω;”
• Χρησιμοποιούμε διαλογική τεχνική
◦ Προσπαθούμε να βοηθήσουμε τον πελάτη να σχηματοποιήσει
τις απαιτήσεις
◦ Και ο πελάτης με τη σειρά του θα μας βοηθήσει να τις
κατανοήσουμε
◦ Οι απαιτήσεις εξελίσσονται ενόσω γίνεται η ανάπτυξη των
σεναρίων.
31
32
Απαντήσεις στις ερωτήσεις
• Η ομάδα ανάπτυξης μελετά υπάρχοντα έγγραφα για το πεδίο
εφαρμογής
◦ Εγχειρίδια του προηγούμενου συστήματος, εγχειρίδια διαδικασιών,
στάνταρ του οργανισμού κ.λπ.
◦ Επίσης συνεντεύξεις χρηστών και πελατών
33
Προσδιορισμός περιπτώσεων
χρήσης
• Ένα σενάριο είναι ένα συγκεκριμένο στιγμιότυπο μιας περίπτωσης
χρήσης
• Μία περίπτωση χρήσης εκκινείται από έναν actor
◦ Μετά την εκκίνησή της, μία περίπτωση χρήσης μπορεί να αλληλεπιδρά και
με άλλους actors
34
Περιγραφή περίπτωσης χρήσης
(1)
• Έξι βασικά στοιχεία:
◦ Συνθήκες εισόδου και εξόδου που περιγράφουν τις συνθήκες κάτω
από τις οποίες ενεργοποιείται η περίπτωση χρήσης και το
αποτέλεσμα που έχει στο σύστημα
◦ Αυτές μπορεί να βοηθήσουν στον προσδιορισμό περιπτώσεων χρήσης
που λείπουν
◦ Π.χ. αν η περίπτωση χρήσης «Ανακήρυξη πτυχιούχου» απαιτεί να έχει
υποβληθεί αίτηση περάτωσης σπουδών, πρέπει να υπάρχει περίπτωση
χρήσης που να αφορά την υποβολή αυτής της αίτησης
◦ Ροή γεγονότων η οποία επιτρέπει στους πελάτες και τους χρήστες να
συζητήσουν την αλληλεπίδραση συστήματος-χρηστών
◦ Καθορίζονται όρια του συστήματος, με λήψη αποφάσεων του τι κάνει το
σύστημα και του τι κάνουν οι actors
◦ Π.χ. στην ανακήρυξη πτυχιούχου, τον έλεγχο αν έχουν περαστεί τα
απαιτούμενα μαθήματα και τον υπολογισμό του βαθμού τον κάνει το
σύστημα ή η γραμματέας;
35
36
Προσδιορισμός συνθηκών
εισόδου
• Τι πρέπει να ισχύει για να εκτελεστεί η περίπτωση
χρήσης
◦ Παραλείπουμε τα απολύτως προφανή
◦ Το σύστημα πρέπει να είναι εγκατεστημένο
◦ Δεν πρέπει να υπονοούμε βασική λειτουργικότητα
◦ Παράδειγμα: ο πελάτης πρέπει να υπάρχει στο σύστημα
◦ Όπου υπάρχει άλλη περίπτωση χρήσης που δημιουργεί τον πελάτη
37
38
Απλοί κανόνες συγγραφής
περιπτώσεων χρήσης (1)
• Οι περιπτώσεις χρήσης πρέπει να ονομάζονται με
ρηματικές προτάσεις (να περιέχουν ρήμα) π.χ. «Ανάφερε
περιστατικό», «Κατάθεσε χρήματα»
• Οι actors πρέπει να ονομάζονται με ονοματικές φράσεις
(να μην περιέχουν ρήμα) π.χ. «Πελάτης»,
«ΠρόεδροςΣυμβουλίου»
• Τα όρια του συστήματος πρέπει να είναι σαφή. Τα βήματα
που εκτελούνται από τον actor και τα βήματα που
εκτελούνται από το σύστημα πρέπει να διακρίνονται
σαφώς.
◦ Ένας εύκολος εποπτικός τρόπος είναι να στοιχίζονται δεξιά τα
βήματα που εκτελούνται από το σύστημα
39
40
Απλοί κανόνες συγγραφής
περιπτώσεων χρήσης (3)
• Η περίπτωση χρήσης ΔΕΝ ΑΣΧΟΛΕΙΤΑΙ με τη διεπαφή
χρήστη – κάτι τέτοιο θα αποσπάσει την προσοχή της
ομάδας, του πελάτη ή/και του χρήστη από την περιγραφή
των βημάτων και θα τη στρέψει στο αν τα κουμπιά, μενού
κ.λπ. είναι κατάλληλα
◦ Η διεπαφή αντιμετωπίζεται ξεχωριστά, π.χ. με ψευδοπρωτότυπα
41
42
«Προβληματική» περιγραφή περίπτωσης
χρήσης
Όνομα περίπτωσης Ατύχημα κακή επιλογή ονόματος – ποιος είναι ο στόχος του
χρήσης: χρήστη;
Εκκινών actor: Διασώστης
43
44
Ορθή περιγραφή περίπτωσης χρήσης (2)
Συνθήκες εισόδου: Ο διασώστης είναι συνδεδεμένος με το σύστημα
45
• Μεσαία προτεραιότητα
◦ Η απαίτηση εξετάζεται κατά τις φάσεις της ανάλυσης και του
σχεδιασμού
◦ Παρουσιάζεται στο δεύτερο πρωτότυπο του συστήματος
• Χαμηλή προτεραιότητα
◦ Η απαίτηση εξετάζεται κατά τη φάση της ανάλυσης
◦ Κυρίως αφορά το πώς το σύστημα μπορεί να επεκταθεί στο
μέλλον.
46
Εκλέπτυνση περιπτώσεων χρήσης
• Στην εκλέπτυνση των περιπτώσεων χρήσης
περιλαμβάνουμε:
◦ Λεπτομέρειες για τις διαδράσεις ανάμεσα στους actors και το
σύστημα
◦ Για τον σκοπό αυτό χρησιμοποιούμε και τα διαγράμματα ακολουθίας
◦ Ορίζουμε τις εναλλακτικές ροές γεγονότων
◦ Λεπτομέρειες σχετικά με τις εξειδικεύσεις των αντικειμένων που
αναφέρονται στην περίπτωση χρήσης
◦ Π.χ. περιστατικό: πυρκαγιά, ατύχημα σε μεταφορικά μέσα, άλλο
περιστατικό
◦ Ορίζουμε ελέγχους συστήματος για τον καθορισμό των κριτηρίων
αποδοχής κάθε περίπτωση χρήσης
◦ Και σενάρια διενέργειας των ελέγχων συστήματος
◦ Ορίζουμε δικαιώματα πρόσβασης
◦ Ποιοι actors μπορούν να εκκινήσουν ποιες περιπτώσεις χρήσης
47
Παράδειγμα εκλέπτυνσης
περίπτωσης χρήσης (1)
Ροή γεγονότων: 1. Ο διασώστης ενεργοποιεί τη λειτουργία «Αναφορά ατυχήματος» στον
υπολογιστή του
2. Το σύστημα παρουσιάζει μία φόρμα. Η φόρμα περιλαμβάνει
ένα μενού περιστατικών (φωτιά, ατύχημα, άλλο περιστατικό),
τη θέση, σύντομη περιγραφή, προτεινόμενη αντιμετώπιση και
ένδειξη επιβλαβών υλικών στον χώρο του περιστατικού
3. Ο διασώστης συμπληρώνει τη φόρμα, εισάγοντας τουλάχιστον το
επίπεδο συναγερμού και τη σύντομη περιγραφή και ενδεχομένως
κατάλληλους τρόπους αντιμετώπισης. Ο διασώστης υποβάλλει τη φόρμα.
4. Το σύστημα αποδέχεται τη φόρμα και ενημερώνει
τον συντονιστή με ένα αναδυόμενο παράθυρο
5. Ο συντονιστής επιθεωρεί τα στοιχεία και καταχωρεί ένα νέο περιστατικό
στο σύστημα μέσω της περίπτωσης χρήσης «Καταχώρησε περιστατικό».
Όλα τα πεδία που έχουν συμπληρωθεί στη φόρμα, μεταφέρονται
αυτόματα στην καταχώρηση περιστατικού. Ο συντονιστής αναθέτει
πόρους στην αντιμετώπιση του περιστατικού μέσω της περίπτωσης
χρήσης «Κατάνειμε πόρους» και αναγνωρίζει την παραλαβή της
αναφοράς αποστέλλοντας ένα σύντομο μήνυμα στον διασώστη.
6. Το σύστημα παρουσιάζει την αναγνώριση λήψης
και την επιλεχθείσα αντιμετώπιση στον διασώστη
48
Διάγραμμα ακολουθίας
:Διεπαφή :Εφαρμογή :Εφαρμογή :Διεπαφή
Διασώστη Διασώστη Συντονιστή Συντονιστή
:Διασώστης
αναφορά :ΦόρμαΠεριστ :Συντονιστής
Περιστατικού()
<<create>>
συμπλήρωση()
ενημέρωση
αποστολή παράδοση εμφάνιση Νέου
υποβολή()
Αναφορ() Αναφοράς() popup() Περιστατικού
αναγνώριση
αποστολή
αναγν() Λήψης()
κλείσε() παράδοση
εμφάνιση αναγν()
popup()
ενημέρωση
Αναγνώρισης()
49
Προσδιορισμός εναλλακτικών
ροών
• Ρωτάμε τους χρήστες
◦ Ποιά σφάλματα αντιμετωπίζουν;
◦ Ποιες διαφορετικές εναλλακτικές χρειάζονται-διαθέτουν-
περιμένουν;
• Ρωτάμε τους ειδικούς του πεδίου
◦ Τι μπορεί να πάει στραβά;
◦ Τι συμβαίνει όταν κάτι πάει στραβά; Πώς ανακάμπτουμε;
• Οι εναλλακτικές ροές μπορεί να προσδιοριστούν –
επεκταθούν σε πολλαπλά στάδια (iterations)
εκλέπτυνσης της περίπτωσης χρήσης
50
Σχέσεις επικοινωνίας μεταξύ
actors και περιπτώσεων χρήσης
• Οι σχέσεις επικοινωνίας μεταξύ actors και
περιπτώσεων χρήσης αναπαριστούν τη ροή της
πληροφορίας στην περίπτωση χρήσης
◦ Ο actor που εκκινεί την περίπτωση χρήσης διακρίνεται
από τους υπόλοιπους που μετέχουν στην περίπτωση
χρήσης
◦ Ορίζοντας ποιος εκκινεί την περίπτωση χρήσης, ορίζουμε έμμεσα
και ποιος δεν έχει δικαίωμα να την εκκινήσει
◦ Ορίζοντας τους actors που επικοινωνούν με την
περίπτωση χρήσης ορίζουμε το ποιοι μπορούν να δουν
συγκεκριμένες πληροφορίες και ποιοι όχι
• Με τον τρόπο αυτό ορίζουμε τον έλεγχο
πρόσβασης, σε αδρό επίπεδο
51
Καταχώρησε
<<εκκίνηση>> Περιστατικό
<<εκκίνηση>>
<<εκκίνηση>>
Διασώστης <<συμμετοχή>> Συντονιστής
Κατάνειμε
Ανάφερε
Πόρους
Περιστατικό
52
Συσχετίσεις <<extend>> μεταξύ
περιπτώσεων χρήσης (1)
• Μία περίπτωση χρήσης Α συνδέεται με μία άλλη Β με μία
σχέση <<extend>> αν η Α δύναται να ενσωματώσει τη
συμπεριφορά της Β υπό συγκεκριμένες συνθήκες
• Παράδειγμα:
◦ Στην περίπτωση χρήσης Ανάφερε Περιστατικό μπορεί να διακοπεί η
επικοινωνία μεταξύ του υπολογιστή του διασώστη και του
συντονιστή ενώ συμπληρώνεται η φόρμα
◦ Η εφαρμογή του διασώστη πρέπει να τον ενημερώσει ότι η φόρμα
του δεν απεστάλη ώστε αυτός να προβεί στις κατάλληλες ενέργειες
◦ Η περίπτωση χρήσης Διακοπή Σύνδεσης μοντελοποιείται ως
επέκταση (<<extend>>) στην περίπτωση χρήσης Ανάφερε
περιστατικό
◦ Οι συνθήκες κάτω από τις οποίες ενεργοποιείται η Διακοπή
Σύνδεσης περιγράφονται στην ίδια τη Διακοπή Σύνδεσης ΚΑΙ ΟΧΙ
στην Ανάφερε περιστατικό
53
<<extends>>
Βοήθεια
56
Συσχετίσεις <<include>> μεταξύ
περιπτώσεων χρήσης (1)
• Οι συσχετίσεις <<include>> χρησιμοποιούνται για να
επιτύχουμε τη λειτουργική αποσύνθεση
◦ Έχουμε ένα σύνθετο πρόβλημα και θέλουμε να το
διασπάσουμε σε μικρότερα και πιο διαχειρίσιμα
◦ Παράδειγμα:
Διαχειρίσου Περιστατικό
<<include>>
<<include>>
<<include>>
57
• Παράδειγμα:
◦ Ο συντονιστής χρειάζεται να συμβουλευτεί έναν χάρτη της πόλης
όταν (α) καταγράφει ένα περιστατικό (π.χ. προκειμένου να εξετάσει
ποιες περιοχές διατρέχουν κίνδυνο) και (β) όταν κατανέμει πόρους
(π.χ. για να δει ποιοι πόροι βρίσκονται πιο κοντά).
◦ Εισάγουμε μία περίπτωση χρήσης Δες Χάρτη την οποία
ενσωματώνουν (include) οι περιπτώσεις χρήσης Κατάγραψε
Περιστατικό και Κατάνειμε Πόρους
58
Συσχετίσεις <<include>> μεταξύ
περιπτώσεων χρήσης (3)
<<include>>
Δες Χάρτη
Ανάφερε Περιστατικό
<<include>>
Κατάνειμε Πόρους
59
60
Γενίκευση περιπτώσεων χρήσης
• Χρησιμοποιείται όταν έχουμε παρόμοια αλλά όχι
ταυτόσημη λειτουργικότητα
• Η γονική περίπτωση χρήσης ενσωματώνει τα κοινά σημεία
της συμπεριφοράς και οι θυγατρικές περιλαμβάνουν τα
διαφορετικά
• Παράδειγμα: έχουμε διακρίβωση ταυτότητας χρήστη με
συνθηματικό ή με δακτυλικό αποτύπωμα
Έλεγξε συνθηματικό
61
62
Προσδιορισμός αντικειμένων της
ανάλυσης (2)
• Η σύνταξη του γλωσσαρίου είναι το πρώτο βήμα στη
σύνταξη του μοντέλου ανάλυσης (επόμενη φάση)
◦ Περιγράφει τα αντικείμενα και τις ιδιότητές τους, που είναι το μόνο
τμήμα του μοντέλου ανάλυσης το οποίο είναι ορατό στους χρήστες
και επιβεβαιώνεται από αυτούς
63
65
66
Προσδιορισμός μη λειτουργικών
απαιτήσεων
• Οι μη λειτουργικές απαιτήσεις περιγράφουν
απόψεις του συστήματος που δεν σχετίζονται
άμεσα με τη λειτουργική του συμπεριφορά
• Αφορούν ένα πλήθος θεμάτων, από τη διεπαφή
χρήστη μέχρι την ασφάλεια και τον χρόνο
απόκρισης
• Ορίζονται μαζί με τις λειτουργικές απαιτήσεις
γιατί επηρεάζουν σημαντικά τόσο την ανάπτυξη
όσο και το κόστος του συστήματος
67
68
Ερωτήσεις για εκμαίευση μη
λειτουργικών απαιτήσεων (1)
• Χρηστικότητα
◦ Ποιο είναι το επίπεδο ικανότητας (expertise) του χρήστη;
◦ Ποιά πρότυπα διεπαφής είναι οικεία στον χρήστη;
◦ Ποιά τεκμηρίωση πρέπει να είναι διαθέσιμη στον χρήστη;
◦ Ποιά εκπαίδευση πρέπει να παρασχεθεί στον χρήστη;
• Αξιοπιστία
◦ Πόσο αξιόπιστο, διαθέσιμο και εύρωστο πρέπει να είναι το σύστημα; Ποιός ο
αποδεκτός χρόνος μέχρι τη βλάβη και ποιος ο αποδεκτός χρόνος μέχρι την
επιδιόρθωση;
◦ Είναι αποδεκτό να επανεκκινείται το σύστημα σε περίπτωση αποτυχίας;
◦ Ποιός βαθμός απώλειας δεδομένων είναι ανεκτός;
◦ Πώς πρέπει το σύστημα να χειρίζεται τις εξαιρέσεις (π.χ. Σφάλματα εισόδου);
◦ Υπάρχουν απαιτήσεις ασφάλειας χρήσης-εγκατάστασης (safety) για το
σύστημα;
◦ Υπάρχουν απαιτήσεις ασφάλειας δεδομένων-διαδικασιών (security) για το
σύστημα;
69
70
Ερωτήσεις για εκμαίευση μη
λειτουργικών απαιτήσεων (3)
• Δυνατότητα υποστήριξης
◦ Υπάρχουν επεκτάσεις του συστήματος που μπορούμε να
προβλέψουμε;
◦ Τι είδους αλλαγές περιμένουμε;
◦ Ποιός συντηρεί το σύστημα;
◦ Υπάρχουν σχέδια για μεταφορά του συστήματος σε
διαφορετικό λογισμικό/υλικό;
• Υλοποίηση
◦ Υπάρχουν περιορισμοί για το υλικό;
◦ Υπάρχουν περιορισμοί για το λογισμικό συστήματος;
◦ Ποιά τα χαρακτηριστικά του υλικού όπου θα εκτελείται
το σύστημα, συμπεριλαμβανομένης της μνήμης και του
βοηθητικού χώρου αποθήκευσης;
71
72
Ερωτήσεις για εκμαίευση μη
λειτουργικών απαιτήσεων (5)
• «Πακετάρισμα»
◦ Ποιός εγκαθιστά το σύστημα;
◦ Πόσες εγκαταστάσεις προβλέπονται;
◦ Υπάρχουν περιορισμοί στην εγκατάσταση;
• Νομικές απαιτήσεις
◦ Ποιο θα είναι το μοντέλο αδειοδότησης;
◦ Υπάρχουν ευθύνες για πιθανές επιπτώσεις από
αποτυχίες του συστήματος;
◦ Πρέπει να πληρωθούν δικαιώματα χρήσης για
συγκεκριμένους αλγορίθμους ή συνιστώσες που
χρησιμοποιούνται;
73
74
Πρότυπο εγγράφου ανάλυσης
απαιτήσεων (1/2)
1. Εισαγωγή
2. Τρέχον σύστημα
3. Προτεινόμενο σύστημα
3.1 Επισκόπηση
3.2 Λειτουργικές απαιτήσεις
3.3 Μη λειτουργικές απαιτήσεις
3.4 Περιορισμοί (“ψεύδο-απαιτήσεις”)
75
76
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ (SOFTWARE
ENGINEERING)
Ανάλυση
Εισαγωγή
• Η ανάλυση παράγει ένα μοντέλο του συστήματος που πρέπει να είναι
ορθό, πλήρες, συνεπές και απαλλαγμένο από αμφισημίες
• Η ομάδα ανάπτυξης δημιουργεί τυπικές μορφές των προδιαγραφών
απαιτήσεων που παρήχθησαν κατά την εκμαίευση των απαιτήσεων
◦ Εξετάζονται πιο αναλυτικά οι οριακές συνθήκες και οι ειδικές περιπτώσεις
• Η ομάδα ανάπτυξης επικυρώνει, διορθώνει και αποσαφηνίζει τις
προδιαγραφές απαιτήσεων αν εντοπισθούν σφάλματα ή ασάφειες
◦ Αμφισημίες εισάγονται πολλές φορές λόγω των εγγενών χαρακτηριστικών της
φυσικής γλώσσας καθώς λόγω των παραδοχών που έχουν κάνει οι συντάκτες
των προδιαγραφών
◦ Π.χ. «η απόσταση θα είναι μικρότερη από 20» (εκατοστά; πόδια; μέτρα;), «η
ανταλλαγή δεδομένων θα γίνεται στις 12:00 ακριβώς» (σε ποιά χρονική ζώνη;)
◦ Η σύνταξη τυπικών προδιαγραφών βοηθά στον εντοπισμό ασαφειών
◦ Αν απαιτηθεί αλλαγή των προδιαγραφών απαιτήσεων ή συλλογή πρόσθετων
πληροφοριών, μετέχουν στη διαδικασία ο πελάτης και ο χρήστης
2
Εισαγωγή
• Στην αντικειμενοστρεφή ανάλυση η ομάδα ανάπτυξης δημιουργεί
ένα μοντέλο που περιγράφει το πεδίο εφαρμογής
◦ Π.χ. για μία γραμματεία πανεπιστημίου θα υπάρχουν φοιτητές, μαθήματα,
διδάσκοντες, δηλώσεις, αναθέσεις κ.ο.κ.
4
Διαδικασία απαιτήσεων
Διατύπωση
προβλήματος
Εκμαίευση απαιτήσεων
Προδιαγραφή απαιτήσεων
: μη λειτουργικές
απαιτήσεις
: λειτουργικό μοντέλο
: δυναμικό μοντέλο
Διάγραμμα
: μοντέλο αντικειμένων
δραστηριότητας ανάλυσης
UML
5
6
Το μοντέλο της ανάλυσης
• Το μοντέλο της ανάλυσης απαρτίζεται από τρία επί
μέρους μοντέλα:
◦ Το λειτουργικό μοντέλο, που περιλαμβάνει περιπτώσεις
χρήσης και σενάρια
◦ Το μοντέλο αντικειμένων ανάλυσης που περιλαμβάνει
διαγράμματα κλάσεων και αντικειμένων
◦ Το δυναμικό μοντέλο, που περιλαμβάνει διαγράμματα
ακολουθίας και τα διαγράμματα μηχανής καταστάσεων
• Θα εξετάσουμε το πώς εκλεπτύνεται το λειτουργικό
μοντέλο για να εξαχθεί το μοντέλο αντικειμένων και
το μοντέλο αντικειμένων
analysisModel:
Model
8
Έννοιες της ανάλυσης
• Οι βασικές έννοιες της ανάλυσης που θα συνοψισθούν είναι:
◦ Τα μοντέλα αντικειμένων ανάλυσης και τα δυναμικά μοντέλα
◦ Τα αντικείμενα οντότητας, ορίου και ελέγχου
◦ Γενίκευση και εξειδίκευση
10
Μοντέλα αντικειμένων ανάλυσης
και δυναμικά μοντέλα (2)
• Το δυναμικό μοντέλο εστιάζει στη συμπεριφορά του
συστήματος
• Απεικονίζεται με διαγράμματα ακολουθίας και διαγράμματα
μηχανής καταστάσεων
◦ Τα διαγράμματα ακολουθίας αναπαριστούν τις αλληλεπιδράσεις μεταξύ
συνόλων αντικειμένων κατά τη διάρκεια μίας περίπτωσης χρήσης
◦ Τα διαγράμματα μηχανής καταστάσεων αναπαριστούν τη συμπεριφορά
ενός μεμονωμένου αντικειμένου (ή μιας ομάδας από πολύ στενά
συνδεδεμένα αντικείμενα)
11
12
Παραδείγματα «καλών» και «κακών»
αντικειμένων ανάλυσης
Αναφέρεται στο πώς
Βιβλίο ΒάσηΔεδομένωνΒιβλίων αποθηκεύονται τα
δεδομένα (απόφαση
σταδίου σχεδιασμού)
Αναφέρεται σε
Δανειζόμενος UserId εσωτερική λέπτομέρεια
υλοποίησης
13
15
<<entity>> <<boundary>>
FareCatalogue LCDDisplay
16
Γενίκευση και εξειδίκευση (1)
• Η γενίκευση είναι μία δραστηριότητα μοντελοποίησης
όπου αναγνωρίζουμε αφαιρετικές έννοιες από έννοιες
χαμηλότερου επιπέδου
◦ Χρησιμοποιείται ευρέως στον ανασχεδιασμό – αντίστροφη μηχανική
λογισμικού
◦ Π.χ. έστω ότι εντοπίζουμε διαφορετικές φόρμες για διαχείριση
δανεισμού βιβλίων, δανεισμού περιοδικών και δανεισμού
ηλεκτρονικών μέσων (CD, DVD). Παρατηρούμε τα κοινά στοιχεία και
δημιουργούμε μία αφαιρετική έννοια την Δανεισμός που εμπεριέχει
τα κοινά στοιχεία των τριών επί μέρους εννοιών
17
18
Γενίκευση και εξειδίκευση (3)
• Σε κάθε περίπτωση καταλήγουμε σε μία ιεραρχία εννοιών που
συνδέονται με σχέσεις κληρονομικότητας
◦ Όταν αναφερόμαστε σε μία έννοια υψηλότερου επιπέδου, εννοούμε και
όλες τις έννοιες χαμηλότερου επιπέδου στο τμήμα της ιεραρχίας που
ξεκινά από την έννοια υψηλού επιπέδου
Πρόσκτηση
Πρακτικά
Εγκυκλοπαίδεια Μονογραφία Σύγγραμμα
Συνεδρίου
19
20
Προσδιορισμός αντικειμένων
οντότητας (1)
• Τα αντικείμενα οντότητας μπορούν να
εντοπισθούν εξετάζοντας τις περιπτώσεις χρήσης
• Η διαδικασία βασίζεται στην ανάλυση της φυσικής
γλώσσας και επιτρέπει τον εντοπισμό κλάσεων,
στιγμιοτύπων, λειτουργιών κ.ο.κ.
• Οι πρώτες ευρεστικές προτάθηκαν από τον Abbot
(1983)
21
22
Προσδιορισμός αντικειμένων
οντότητας (3)
• Περιορισμοί της ανάλυσης φυσικής γλώσσας
◦ Εξαρτάται ισχυρά από το στυλ γραφής του αναλυτή
◦ Συνέπεια όρων (κάρτα δανειζομένου - ταυτότητα δανειζομένου, δανεισμός –
χρέωση)
◦ Χρήση ρημάτων αντί ουσιαστικών (εκδίδεται το τιμολόγιο, τιμολογείται το
προϊόν)
◦ Η ομάδα ανάπτυξης πιθανώς να πρέπει να επαναδιατυπώσει και να
αποσαφηνίσει τις απαιτήσεις
◦ Έχει την τάση να παράγει υπερβολικά πολλές κλάσεις
◦ Πολλά ουσιαστικά αντιστοιχούν σε γνωρίσματα ή σε συνώνυμα άλλων κλάσεων –
η διάκριση απαιτεί επεξεργασία που –για μεγάλα έργα- είναι χρονοβόρα
◦ Μπορεί να χρησιμοποιηθεί για την εξαγωγή μιας αρχικής λίστας
υποψήφιων αντικειμένων από τις περιγραφές
23
Προσδιορισμός αντικειμένων
οντότητας (4)
• Πρόσθετες ευρεστικές
◦ Οι όροι που η ομάδα ανάπτυξης ή οι χρήστες πρέπει να αποσαφηνίσουν-
εξηγήσουν για να κατανοήσουν την περίπτωση χρήσης
◦ Όροι που εμφανίζονται συχνά στις περιπτώσεις χρήσης (περιστατικό,
δανεισμός, εξέταση κ.λπ.)
◦ Οντότητες του πραγματικού κόσμου τις οποίες πρέπει να καταγράφει-
παρακολουθεί το σύστημα (διασώστης, πόρος, βιβλιάριο καταθέσεων κ.λπ.)
◦ Δραστηριότητες του πραγματικού κόσμου τις οποίες πρέπει να καταγράφει-
παρακολουθεί το σύστημα (π.χ. κατάθεση, δανεισμός)
◦ Πηγές ή καταβόθρες δεδομένων (π.χ. αισθητήρας καπνού, αναφορά)
◦ Στοιχεία με τα οποία αλληλεπιδρά ο χρήστης (π.χ. υποκατάστημα τράπεζας)
24
Προσδιορισμός αντικειμένων
οντότητας (4)
• Η ομάδα ανάπτυξης περιγράφει τα αντικείμενα, τα γνωρίσματα και
τις λειτουργίες τους
• Δίνουμε έμφαση στο να δίνονται μοναδικά ονόματα
• Για τα αντικείμενα οντότητας πάντοτε δίνουμε τα ονόματα που
χρησιμοποιούν οι χρήστες και οι ειδικοί στο αντικείμενο
◦ Μπορούμε να τα αλλάξουμε μόνο για να τα αποσαφηνίσουμε σε περίπτωση
ασάφειας
• Η περιγραφή πρέπει να είναι σαφής για να αποφεύγονται
παρεξηγήσεις και σύντομη για να μη δαπανάται πολύς χρόνος
◦ Περαιτέρω τεκμηρίωση μπορεί να χρησιμοποιηθεί για τα γνωρίσματα και τις
λειτουργίες που δεν είναι προφανής η σημασία τους (π.χ. «εισαγωγικό τέλος
τραπεζικού προϊόντος»)
25
26
Προσδιορισμός αντικειμένων ορίου (2)
• Ευρεστικές για προσδιορισμό αντικειμένων ορίου
◦ Προσδιορίζουμε τα στοιχεία ελέγχου της διεπαφής που ο χρήστης χρειάζεται
για να ξεκινήσει την περίπτωση χρήσης («κουμπί επιλογής ζώνης», «κουμπί
αναφοράς περιστατικού»)
◦ Προσδιορισμός των στοιχείων που χρειάζεται ο χρήστης για να εισάγει
δεδομένα στο σύστημα (π.χ. «φόρμα αναφοράς περιστατικού»,
«κερματοδέκτης»)
◦ Προσδιορισμός ειδοποιήσεων και μηνυμάτων που δίνει το σύστημα στον
χρήστη («υπόλοιπο πληρωμής», «αναγνώριση παράδοσης αναφοράς»
◦ Όταν έχουμε πολλαπλούς actors σε μία περίπτωση χρήσης, προσδιορίζουμε
τον σταθμό εργασίας του actor (π.χ. ΟθόνηΔιασώστη»)
◦ Αν κάποιο αντικείμενο αναφέρεται σε οπτικά χαρακτηριστικά της διεπαφής,
τότε δεν είναι κατάλληλο
◦ Χρησιμοποιούμε την ορολογία των χρηστών, όχι αυτή της τεχνολογίας που θα
χρησιμοποιήσουμε («κουμπί επιλογής ζώνης» όχι «δυαδικός διακόπτης πίεσης
1»)
27
28
Προσδιορισμός αντικειμένων
ορίου (4)
• Μερικά αντικείμενα ορίου δεν περιλαμβάνονται
στις περιγραφές των περιπτώσεων χρήσης
◦ Συνάγονται από την ομάδα ανάπτυξης
◦ Π.χ. η ΔημιουργίαΠεριστατικούΦόρμα δεν
περιλαμβάνεται στην περίπτωση χρήσης
ΑνάφερεΠεριστατικό
◦ Όμως ο συντονιστής χρειάζεται μία διεπαφή για να μπορεί να δει
την αναφορά και να αποστείλει την αναγνώριση!
29
Προσδιορισμός αντικειμένων
ελέγχου (1)
• Τα αντικείμενα οντότητας και ορίου περιγράφουν το πεδίο
εφαρμογής και τη διεπαφή συστήματος-actor
◦ Δεν περιγράφουν όμως καθόλου το ποιες λειτουργίες χρησιμοποιούνται σε
μία περίπτωση χρήσης, τη σειρά που καλούνται κ.λπ.
◦ Το κενό αυτό –τον συντονισμό δηλαδή των αντικειμένων οντότητας και
ορίου- καλύπτουν τα αντικείμενα ελέγχου
• Τα αντικείμενα ελέγχου δεν έχουν φυσικό αντίστοιχο στην
πραγματικό κόσμο
• Τις περισσότερες φορές δημιουργούνται στην αρχή εκτέλεσης
μιας περίπτωσης χρήσης και καταστρέφονται στο τέλος της
• Είναι υπεύθυνα να συλλέγουν πληροφορίες από τα αντικείμενα
ορίου και να τις προωθούν στα αντικείμενα οντότητας
30
Προσδιορισμός αντικειμένων ελέγχου (2)
• Ευρεστικές για δημιουργία αντικειμένων ελέγχου
◦ Προσδιορίζουμε ένα αντικείμενο ελέγχου ανά περίπτωση χρήσης
◦ Στην περίπτωση χρήσης «ΔημιούργησεΤουρνουά» στη διαδικτυακή
πλατφόρμα παιχνιδιών έχουμε ένα αντικείμενο ελέγχου το
«ΔημιούργησεΤουρνουάΈλεγχος»
◦ Αν η περίπτωση χρήσης περιλαμβάνει πολλαπλούς actors,
προσδιορίζουμε ένα αντικείμενο ελέγχου ανά actor
◦ Στην περίπτωση χρήσης «ΑνάφερεΠεριστατικό» έχουμε δύο αντικείμενα
ελέγχου το «ΑνάφερεΠεριστατικόΕλεγχος» και το
«ΔιαχειρίσουΠεριστατικόΈλεγχος»
◦ Η διάρκεια ζωής ενός αντικειμένου ελέγχου είναι είτε μία
περίπτωση χρήσης είτε μία συνεδρία χρήστη
◦ Αν δεν είναι εύκολο να βρούμε την αρχή και το τέλος της ενεργοποίησης ενός
αντικειμένου ελέγχου, πιθανότατα η σχετική περίπτωση χρήσης δεν έχει
καλά ορισμένες συνθήκες εισόδου και εξόδου
31
32
Απεικόνιση των περιπτώσεων χρήσης σε
αντικείμενα μέσω διαγραμμάτων ακολουθίας (1)
• Ένα διάγραμμα ακολουθίας δείχνει πώς η συμπεριφορά
μιας περίπτωσης χρήσης (ή σεναρίου) κατανέμεται μεταξύ
των αντικειμένων
◦ Δεν είναι κατάλληλο μέσο για επικοινωνία με τους πελάτες, διότι
περιλαμβάνουν περισσότερες σημειογραφίες που χρειάζονται
τεχνολογικό υπόβαθρο
◦ Αν υπάρχει η σχετική τεχνογνωσία στον πελάτη, τα διαγράμματα
ακολουθίας μπορούν να χρησιμοποιηθούν και να είναι ακριβέστερα
από τις περιπτώσεις χρήσης
◦ Αν δεν υπάρχει η σχετική τεχνογνωσία στον πελάτη, τα διαγράμματα
ακολουθίας χρησιμοποιούνται εσωτερικά από την ομάδα ανάπτυξης
κατά τη μετάβαση από τις προδιαγραφές απαιτήσεων στο μοντέλο
ανάλυσης
33
34
Παράδειγμα διαγράμματος ακολουθίας
:Tournament
:Arena :League
League Boundary
Owner
newTournament
(league)
«new»
:Create
Tournament
Control
checkMax
Tournament()
setName(name)
setMaxPlayers
(maxp)
commit() create
createTournament Tournament «new»
(name, maxp) :Tourname
(name, maxp)
nt
35
36
Παράδειγμα διαγράμματος ακολουθίας με
περισσότερα από ένα αντικείμενα ελέγχου (1/3)
37
38
Παράδειγμα διαγράμματος ακολουθίας με
περισσότερα από ένα αντικείμενα ελέγχου (3/3)
39
40
Κανόνες σύνταξης διαγραμμάτων
ακολουθίας
• Η πρώτη στήλη ενός διαγράμματος ακολουθίας αντιστοιχεί στον actor
που εκκινεί την περίπτωση χρήσης
• Η δεύτερη στήλη αντιστοιχεί στο αντικείμενο ορίου που χρησιμοποιεί
ο actor για την εκκίνηση της περίπτωσης χρήσης
• Η τρίτη στήλη αντιστοιχεί στο αντικείμενο ελέγχου που θα
διαχειριστεί την περίπτωση χρήσης
• Τα αντικείμενα ελέγχου δημιουργούνται από τα αντικείμενα ορίου
που εκκινούν την περίπτωση χρήσης
• Πρόσθετα αντικείμενα ορίου δημιουργούνται από τα αντικείμενα
ελέγχου
• Τα αντικείμενα οντότητας προσπελαύνονται από τα αντικείμενα
ελέγχου και ορίου
• Τα αντικείμενα οντότητας ΠΟΤΕ δεν προσπελαύνουν αντικείμενα
ορίου και ελέγχου
◦ Με τον τρόπο αυτό καθίσταται δυνατή η επαναχρησιμοποίηση των
αντικειμένων οντότητας σε πολλαπλές περιπτώσεις χρήσης
41
42
Μοντελοποίηση διάδρασης μεταξύ
αντικειμένων μέσω καρτών CRC (2)
• Παραδείγματα καρτών CRC
ΑνάφερεΠεριστατικόΕλεγχος
Ευθύνες Συνεργάτες
Συλλέγει είσοδο από τους διασώστες ΑναφοράΠεριστατικούΦόρμα
Ελέγχει την ακολουθία των φορμών ΑναφοράΠεριστατικού
κατά την αναφορά περιστατικών ΕιδοποίησηΑναγνώρισης
Περιστατικό
Ευθύνες Συνεργάτες
Διαχειρίζεται όλες τις πληροφορίες Πόρος
που σχετίζονται με ένα περιστατικό
43
44
Διαγράμματα ακολουθίας έναντι
καρτών CRC
• Τα διαγράμματα CRC και τα διαγράμματα
ακολουθίας εξυπηρετούν τον ίδιο στόχο
◦ Οι κάρτες CRC είναι προτιμότερο εργαλείο για χρήση από
ομάδες, κατά τη διαδικασία της εκλέπτυνσης και της
επανεξέτασης ενός μοντέλου, καθώς δημιουργούνται και
τροποποιούνται πιο εύκολα
◦ Τα διαγράμματα ακολουθίας είναι προτιμότερο εργαλείο
για εργασία από έναν μόνο προγραμματιστή ή για την
τεκμηρίωση μιας ακολουθίας διαδράσεων, καθώς
παρέχουν μεγαλύτερη ακρίβεια και έχουν πιο
συμπυκνωμένη πληροφορία
45
46
Προσδιορισμός συσχετίσεων (2)
• Κανόνες για τον προσδιορισμό συσχετίσεων
◦ Εξετάζουμε τις ρηματικές φράσεις
◦ Οι συσχετίσεις και οι ρόλοι στις συσχετίσεις πρέπει να
ονοματίζονται με ακρίβεια
◦ Αν είναι δυνατόν, χρησιμοποιούμε προσδιοριστές για να
προσδιορίσουμε τα γνωρίσματα-κλειδιά
◦ Συσχετίσεις που είναι δυνατό να συναχθούν από άλλες
συσχετίσεις απαλείφονται
◦ Δεν είναι απαραίτητο να ορίσουμε σε αυτή τη φάση την
πολλαπλότητα των συσχετίσεων
◦ Πρώτα πρέπει να οριστικοποιηθεί το σύνολο των συσχετίσεων
◦ Η υπερβολική χρήση συσχετίσεων καθιστά δυσανάγνωστο το
μοντέλο
47
Διασώστης 1 * ΑναφοράΠεριστατικού
συγγράφει
1 1
αναφέρει προκαλείΔημιουργία
Περιστατικό
1 1
49
50
Προσδιορισμός συναθροίσεων (1)
• Οι συναθροίσεις είναι ειδικοί τύποι συσχετίσεων που
δηλώνουν σχέσεις όλου-τμήματος
◦ Π.χ. ένας σταθμός πολιτικής προστασίας συντίθεται από πυροσβέστες,
πυροσβεστικά οχήματα, ασθενοφόρα και τραυματιοφορείς
◦ Μία περιφέρεις συντίθεται από νομούς, που με τη σειρά τους
απαρτίζονται από δήμους
• Υπάρχουν δύο είδη συνάθροισης:
◦ Η συνάθροιση σύνθεσης που δείχνει ότι τα τμήματα εξαρτώνται από το
όλον
◦ Π.χ. ένας δήμος νοείται μόνο ως μέρος ενός νομού
◦ Συμβολίζεται με έναν «γεμάτο» ρόμβο
◦ Η διαμοιραζόμενη συνάθροιση (ή συσσωμάτωση) όπου τα τμήματα
υπάρχουν και ανεξάρτητα από το όλον
◦ Π.χ. ένα πυροσβεστικό όχημα μπορεί να υπάρχει χωρίς τον σταθμό πολιτικής
προστασίας ή να κατανεμηθεί σε άλλον σταθμό
◦ Συμβολίζεται με έναν «κενό» ρόμβο
51
Σταθμός Πολιτικής
Περιφέρεια
Προστασίας
Πυροσβεστικό
Ασθενοφόρο
Δήμος Όχημα
52
Προσδιορισμός συναθροίσεων (3)
• Οι συναθροίσεις προκύπτουν από τα ρήματα δηλωτικά κτήσης
(«Αποτελείται από», «περιλαμβάνει» ...)
• Το αν θα έχουμε συνάθροιση σύνθεσης ή διαμοιραζόμενης
συνάθροισης εξαρτάται από τη σημασιολογία του μοντέλου
• Οι συναθροίσεις μας προσφέρουν πρόσθετη πληροφορία σε σχέση με
τις απλές συσχετίσεις
◦ Δίνουν το πώς οι σχέσεις «περιέχεσθαι» οργανώνονται σε μία ιεραρχία ή
κατευθυνόμενο γράφο
◦ Μπορούν να αξιοποιηθούν και σε επίπεδο διεπαφής χρήστη, π.χ.
παρουσιάζουμε μία δενδροειδή δομή για να ξεκινήσουμε από επίπεδο
περιφέρειας μετά να πάμε σε νομό και τελικά να εντοπίσουμε τον δήμο
• Αν δεν είναι σαφές εάν κάποια συσχέτιση είναι πράγματι όλου-
τμήματος, είναι προτιμότερο να τη μοντελοποιήσουμε ως απλή
συσχέτιση και να το επανεξετάσουμε όταν θα έχουμε κατανοήσει
πληρέστερα το πεδίο της εφαρμογής
53
54
Προσδιορισμός γνωρισμάτων (2)
• Ιδιότητες των γνωρισμάτων
◦ Ένα όνομα, που θα πρέπει να είναι κατατοπιστικό και χωρίς
αμφισημίες
◦ Π.χ. μία αναφορά περιστατικού μπορεί να έχει έναν τύπο αναφοράς
(αρχική, αίτημα πόρου κ.λπ.) και έναν τύπο περιστατικού (φωτιά, τροχαίο
κ.τ.λ.). Κανένα από τα δύο δεν πρέπει να ονομαστεί τύπος.
◦ Μία σύντομη περιγραφή
◦ Ένας τύπος, που ορίζει τις παραδεκτές τιμές του γνωρίσματος.
Μπορεί να είναι ένας βασικός τύπος της UML, μία απαρίθμηση
κ.ο.κ.
55
56
Προσδιορισμός γνωρισμάτων (4)
• Τα γνωρίσματα είναι το πιο «ασταθές» τμήμα του
μοντέλου ανάλυσης
◦ Πολύ συχνά γνωρίσματα ανακαλύπτονται και προστίθενται αργά στη
διαδικασία ανάπτυξης, κυρίως κατά την αξιολόγηση του συστήματος
από τους χρήστες
◦ Η προσθήκη γνωρισμάτων συνήθως δεν επιφέρει σημαντικές
αλλαγές στο σύστημα (εκτός αν σχετίζεται με την προσθήκη
λειτουργικότητας)
◦ Η ομάδα ανάπτυξης δεν πρέπει να δαπανά υπερβολικό χρόνο-
προσπάθεια για τον προσδιορισμό και τη λεπτομερή περιγραφή των
γνωρισμάτων που δεν είναι σημαντικά για το σύστημα
◦ Τα γνωρίσματα αυτά θα προστεθούν χωρίς ιδιαίτερο πρόβλημα στη
συνέχεια
57
58
Μοντελοποίηση συμπεριφοράς που εξαρτάται από
την κατάσταση του αντικειμένου (2)
• Δεν είναι απαραίτητο να δημιουργήσουμε
διαγράμματα μηχανής κατάστασης για όλα τα
αντικείμενα
◦ Μόνο για όσα έχουν μεγάλη διάρκεια ζωής και έχουν
συμπεριφορά που εξαρτάται από την κατάστασή τους
◦ Συχνό για αντικείμενα ελέγχου
◦ Αυτά που ζουν περισσότερο από μία περίπτωση χρήσης, π.χ. το
αντικείμενο ελέγχου ενός ATM (διαφορετική λειτουργικότητα
χωρίς εισηγμένη κάρτα, με εισηγμένη κάρτα, με εισηγμένο σωστό
PIN κ.λπ.)
◦ Λιγότερο συχνό για αντικείμενα οντότητας
◦ Π.χ. ένας λογαριασμός μπορεί να είναι στην «κανονική
κατάσταση» ή «δεσμευμένος»
◦ Σχεδόν ποτέ για αντικείμενα ορίου
59
60
Μοντελοποίηση κληρονομικότητας (1)
• Η γενίκευση χρησιμοποιείται για την απαλοιφή
του πλεονασμού
◦ Αν δύο ή περισσότερες κλάσεις έχουν κοινή κατάσταση ή
συμπεριφορά οργανώνονται κάτω από μία υπερκλάση
◦ Για παράδειγμα οι Διασώστες και οι Συντονιστές είναι και οι δύο
ΥπάλληλοιΠολιτικήςΠροστασίας
ΥπάλληλοςΠολιτικήςΠροστασίας
Διασώστης Συντονιστής
61
62
Ανασκόπηση του μοντέλου
ανάλυσης (1)
• Το μοντέλο ανάλυσης κτίζεται επαυξητικά και
επαναληπτικά
◦ Σπάνια είναι σωστό από την πρώτη επανάληψη
◦ Π.χ. ο εντοπισμός μιας παράλειψης στην ανάλυση, θα οδηγήσει
στην προσθήκη ή στην επέκταση μιας περίπτωσης χρήσης, που με τη
σειρά της θα οδηγήσει σε εκμαίευση περισσότερων πληροφοριών
από τον χρήστη
• Το μοντέλο σταθεροποιείται όταν το πλήθος των αλλαγών
είναι μικρό και έχουν τοπική επίδραση
• Τότε το μοντέλο ανάλυσης επιθεωρείται, πρώτα από την
ομάδα ανάπτυξης και κατόπιν από την ομάδα ανάπτυξης
και τους χρήστες-πελάτες
63
64
Ανασκόπηση του μοντέλου
ανάλυσης (3)
• Ερωτήσεις για τη διασφάλιση της ορθότητας του μοντέλου
◦ Είναι η ορολογία για τα αντικείμενα οντότητας κατανοητή στους
χρήστες;
◦ Οι αφηρημένες κλάσεις αντιστοιχούν σε έννοιες που χρησιμοποιούν
οι χρήστες (π.χ. «λογαριασμός» με υποκλάσεις «όψεως»
«ταμιευτηρίου»);
◦ Οι περιγραφές είναι σύμφωνες με τους ορισμούς που έχουν δώσει
οι χρήστες;
◦ Έχουν όλα τα αντικείμενα οντότητας και ορίου ονόματα που (α)
είναι ονοματικές φράσεις και (β) δίνουν το σωστό νόημα;
◦ Έχουν όλες οι περιπτώσεις χρήσης και τα αντικείμενα ελέγχου
ονόματα που (α) είναι ρηματικές φράσεις και (β) δίνουν το σωστό
νόημα;
◦ Περιγράφονται και τυγχάνουν χειρισμού όλες οι περιπτώσεις
σφαλμάτων;
65
66
Ανασκόπηση του μοντέλου
ανάλυσης (5)
• Ερωτήσεις για τη διασφάλιση της συνέπειας του μοντέλου
◦ Υπάρχουν πολλαπλές κλάσεις ή περιπτώσεις χρήσης με το ίδιο
όνομα;
◦ Οι οντότητες (περιπτώσεις χρήσης, κλάσεις, γνωρίσματα) με
παρόμοια ονόματα αντιστοιχούν όντως σε παρόμοιες έννοιες;
◦ Υπάρχουν αντικείμενα με παρόμοια γνωρίσματα και συσχετίσεις
που δεν ανήκουν στην ίδια ιεραρχία εξειδίκευσης-γενίκευσης;
• Ερωτήσεις για τη διασφάλιση της ρεαλιστικότητας του
μοντέλου
◦ Υπάρχουν καινοτόμα χαρακτηριστικά στο σύστημα; Υπάρχουν
μελέτες ή πρωτότυπα για τη διασφάλιση ότι είναι εφικτό να
υλοποιηθούν;
◦ Είναι δυνατόν να επιτευχθούν οι απαιτήσεις σε επιδόσεις και
αξιοπιστία; Έχουν επαληθευθεί οι απαιτήσεις αυτές από
πρωτότυπα που έχουν τρέξει στο συγκεκριμένο υλικό;
67
Ορισμός αντικειμένων
που συμμετέχουν
Ορισμός
αλληλεπιδράσεων
Ενοποίηση μοντέλου
Ορισμός προσδιοριστών,
ιεραρχίας, απαλοιφή
Ανασκόπηση
πλεονασμού
μοντέλου 69
70
Τεκμηρίωση της ανάλυσης
• Οι δραστηριότητες της εκμαίευσης απαιτήσεων και της
ανάλυσης τεκμηριώνονται στο έγγραφο ανάλυσης
απαιτήσεων (επόμενη διαφάνεια)
◦ Οι ενότητες 1 έως και 3.5.2 συντάσσονται στη φάση της εκμαίευσης
των απαιτήσεων
◦ Στη φάση της ανάλυσης εστιαζόμαστε στα:
◦ 3.5.3 Μοντέλα αντικειμένων: τεκμηριώνει λεπτομερώς τα αντικείμενα που
προσδιορίσαμε, τα γνωρίσματα, τις συσχετίσεις και (αρκετές από) τις
λειτουργίες τους. Αποτυπώνονται με διαγράμματα κλάσεων και περιγραφές
κειμένου
◦ 3.5.4 Δυναμικά μοντέλα: τεκμηριώνει τη συμπεριφορά του μοντέλου
αντικειμένων χρησιμοποιώντας διαγράμματα μηχανής καταστάσεων και
διαγράμματα ακολουθίας. Παρουσιάζει την ίδια πληροφορία με το μοντέλο
περιπτώσεων χρήσης, αλλά είναι ακριβέστερο –ειδικότερα για περίπλοκες
συμπεριφορές και περιπτώσεις χρήσης με πολλούς actors
◦ Το έγγραφο ανάλυσης απαιτήσεων μπορεί να αλλάξει στη συνέχεια,
πάντα όμως τηρούμε ιστορικό αλλαγών και τις προηγούμενες εκδόσεις
71
73
74
Ανάθεση αρμοδιοτήτων (3)
• Ο αναλυτής έχει ρόλο δημιουργίας πληροφορίας
◦ Μοντελοποιεί το τρέχον σύστημα και δίνει πληροφορίες για το νέο
◦ Σε κάθε αναλυτή ανατίθεται αρχικά η λεπτομερής επεξεργασία
κάποιων περιπτώσεων χρήσης
◦ Από αυτή θα προκύψουν αντικείμενα, συσχετίσεις και γνωρίσματα
◦ Ο αναλυτής συνήθως είναι στέλεχος της ομάδας ανάπτυξης με
γνώση του πεδίου εφαρμογής
• Ο αρχιτέκτονας συστήματος έχει ρόλο ολοκλήρωσης
◦ Ενοποιεί τις περιπτώσεις χρήσης και το μοντέλο αντικειμένων από
την οπτική του συστήματος
◦ Οι διάφοροι αναλυτές ακολουθούν διαφορετικά στυλ μοντελοποίησης και
επίσης έχουν περιορισμένη οπτική, καθώς ασχολούνται με υποσύνολα
του συστήματος
◦ Μολονότι οι αναλυτές συνεργάζονται, θα πρέπει να υπάρχει σαφής ρόλος
που θα έχει την αρμοδιότητα της ενοποίησης, θα καθορίζει τη φιλοσοφία
του συστήματος και θα εντοπίζει ελλείψεις
75
77
78
Η επικοινωνία στην ανάλυση (2)
• Κανόνες για τη διαχείριση της πολυπλοκότητας και των
αντικρουόμενων απόψεων για το σύστημα
◦ Σαφής οριοθέτηση
◦ Πρέπει να ορίζονται ρόλοι (παροχή πληροφορίας, ολοκλήρωση, επιθεώρηση)
◦ Πρέπει να ορίζονται δημόσιες και ιδιωτικές περιοχές διαλόγου, ώστε ο καθένας
να λαμβάνει την πληροφορία που χρειάζεται – π.χ. ο πελάτης δεν πρέπει να έχει
πρόσβαση στην εσωτερική επικοινωνία της ομάδας ανάπτυξης, ούτε η ομάδα
ανάπτυξης να έχει πρόσβαση στις διαπραγματεύσεις με τον πελάτη
◦ Ορισμός σαφών στόχων και κριτηρίων επιτυχίας.
◦ Γίνεται σε συνεργασία από την ομάδα ανάπτυξης και τον πελάτη
◦ Πιο εύκολο να αναβληθεί για το μέλλον, αλλά η αναβολή μπορεί να οδηγήσει σε
σημαντικά προβλήματα
◦ Χρήση νοητικού καταιγισμού (brainstorming)
◦ Οι συσκέψεις όλων των συμμετεχόντων για την ταχεία δημιουργία λύσεων και
ορισμών επιλύει αρκετά προβλήματα στην επικοινωνία
◦ Το ίδιο συμβαίνει αν παραδοτέα και από τις δύο πλευρές επιθεωρούνται στην
ίδια συνεδρία
79
80
Επαναληπτική εξέταση
προδιαγραφών και μοντέλου (1)
• Η ανάλυση είναι επαναληπτική και επαυξητική διαδικασία
και λαμβάνει χώρα παράλληλα με άλλες δραστηριότητες,
π.χ. σχεδιασμός και ανάπτυξη
◦ Έτσι η χωρίς έλεγχο τροποποίηση και επέκταση της ανάλυσης
μπορεί να οδηγήσει σε χαοτικές καταστάσεις
81
Επαναληπτική εξέταση
προδιαγραφών και μοντέλου (2)
• Νοητικός καταιγισμός
◦ Χρησιμοποιείται πριν ξεκινήσει οποιαδήποτε άλλη διαδικασία (σχεδιασμός,
ανάπτυξη)
◦ Οτιδήποτε μπορεί να αλλάξει (οι έννοιες του πεδίου, οι όροι που
χρησιμοποιούνται κ.τ.λ.)
◦ Βασική ιδέα είναι να παραχθούν και να αξιολογηθούν πολλές ιδέες, χωρίς
απαραίτητα να οργανωθούν
◦ Μπορούμε να έχουμε συχνές επαναλήψεις
• Παγίωση
◦ Η φάση αυτή ξεκινά όταν πελάτης και ομάδα ανάπτυξης συγκλίνουν προς
μία ιδέα, καθορίζουν τα όρια του συστήματος και συμφωνούν στην
ορολογία
◦ Η λειτουργικότητα οργανώνεται σε ομάδες περιπτώσεων χρήσης με τις
αντίστοιχες διεπαφές
◦ Οι ομάδες περιπτώσεων χρήσης ανατίθενται σε διαφορετικές ομάδες για
περαιτέρω λεπτομερειακή εργασία και εκλέπτυνση
◦ Οι επαναλήψεις είναι συχνές, αλλά οι αλλαγές είναι τοπικές
82
Επαναληπτική εξέταση
προδιαγραφών και μοντέλου (3)
• Ωρίμανση (1)
◦ Στη φάση αυτή οι αλλαγές σε υψηλό επίπεδο είναι δυνατές αλλά έχουν
εκτενέστερες συνέπειες, οπότε γίνονται με προσοχή και πιο δύσκολα
◦ Κάθε ομάδα είναι υπεύθυνη για τις περιπτώσεις χρήσης και το μοντέλο
των αντικειμένων που αφορά τη λειτουργικότητα που της έχει ανατεθεί
◦ Συγκροτείται μία οριζόντια ομάδα (ομάδα αρχιτεκτονικής) -συνήθως
από αντιπρόσωπους των ομάδων- που εκτελεί την ολοκλήρωση των
απαιτήσεων (ονοματολογία, συσχετίσεις κ.λπ.)
◦ Όταν ο πελάτης υπογράψει τις απαιτήσεις, οι τροποποιήσεις πρέπει να
αντιμετωπίζουν παραλείψεις και αλλαγές, όχι ευρύτερα ζητήματα
◦ Η ομάδα αρχιτεκτονικής πρέπει να διασφαλίζει ότι δεν διακυβεύεται η
συνέπεια του μοντέλου
◦ Οι αλλαγές στις απαιτήσεις πρέπει να αντανακλώνται και στα μοντέλα
σχεδίασης
◦ Οι επαναλήψεις εκτελούνται πιο αργά και οι αλλαγές είναι τοπικές
83
Επαναληπτική εξέταση
προδιαγραφών και μοντέλου (4)
• Ωριμότητα (2)
◦ Οι αλλαγές οδηγούν συνήθως σε αύξηση της λειτουργικότητας
◦ Οι αλλαγές όμως μπορεί να διακυβεύσουν την ακεραιότητα του
συστήματος, εισάγοντας ασυνέπειες, αντίγραφα πληροφοριών,
πλεοναστικές συσχετίσεις κ.λπ.
◦ Τα προβλήματα είναι αποτέλεσμα της απώλειας πληροφορίας για το
έργο
◦ Οι εξαρτήσεις μεταξύ λειτουργιών δεν καταγράφονται
◦ Πολλές υποθέσεις δεν καταγράφονται ρητά και στη συνέχεια ξεχνιόνται
◦ Συχνά οι αλλαγές γίνονται υπό την πίεση να υλοποιηθεί κάποια
λειτουργικότητα, οδηγώντας σε επιφανειακή μόνο εξέταση των
συνεπειών της αλλαγής
84
Επαναληπτική εξέταση
προδιαγραφών και μοντέλου (5)
• Ωριμότητα (3)
◦ Ερωτήσεις που πρέπει να απαντηθούν πριν εισαχθεί νέα
λειτουργικότητα:
◦ Ζητήθηκαν από τον πελάτη;
◦ Είναι απαραίτητες ή μικροπροσθήκες;
◦ Μήπως είναι σκόπιμο να υλοποιηθούν ως ένα βοηθητικό πρόγραμμα αντί
να ενσωματωθούν στο βασικό σύστημα
◦ Π.χ. προετοιμασία δεδομένων για εισαγωγή στο σύστημα
◦ Πρόκειται για βασικές απαιτήσεις ή προαιρετική λειτουργικότητα;
◦ Ποιές είναι οι επιπτώσεις των αλλαγών στις υπάρχουσες λειτουργικότητες
αναφορικά με τη συνέπεια, τη διεπαφή και την αξιοπιστία;
◦ Όταν οι αλλαγές είναι απαραίτητες:
◦ Ο πελάτης και η ομάδα ανάπτυξης ορίζουν την εμβέλεια της αλλαγής, το
επιθυμητό αποτέλεσμα και τροποποιούν το μοντέλο ανάλυσης
◦ Ο ορισμός της νέας λειτουργικότητας είναι πιο εύκολος, μια και υπάρχει
ήδη το πλήρες μοντέλο ανάλυσης (π.χ. έννοιες, ορολογία, πιθανόν
κάποιες κλάσεις), η υλοποίηση ωστόσο είναι πιο δύσκολη
85
86
Υπογραφή των απαιτήσεων από τον
πελάτη (2)
• Η ανάθεση προτεραιοτήτων είναι σημαντική
◦ Επιτρέπει τον διαχωρισμό των ουσιωδών λειτουργικών από τις
λιγότερο σημαντικές
◦ Επιτρέπει την αυξητική παράδοση του συστήματος
◦ Υψηλή προτεραιότητα: στην επόμενη έκδοση
◦ Μεσαία προτεραιότητα: όχι στην επόμενη έκδοση, σε μεταγενέστερη
◦ Χαμηλή προτεραιότητα: αν το επιτρέπουν οι πόροι, σε κάποια (αρκετά)
μεταγενέστερη έκδοση
◦ Μερικές φορές η εκτίμηση του κόστους αλλάζει τις προτεραιότητες!
◦ Υπάρχουν και άλλες κλίμακες προτεραιοτήτων
◦ Ουσιώδης – το σύστημα δεν είναι αποδεκτό χωρίς αυτή τη λειτουργικότητα
◦ Υπό συνθήκη – θα βελτίωνε το προϊόν, αλλά το σύστημα είναι αποδεκτό και
χωρίς αυτή τη λειτουργικότητα
◦ Προαιρετική – μπορεί να αξίζει τον κόπο ή όχι
87
88
Υπογραφή των απαιτήσεων από τον πελάτη (4) –
παράδειγμα διαδικασίας αναθεώρησης
89
90
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ (SOFTWARE
ENGINEERING)
Σχεδιασμός Συστήματος
Εισαγωγή (1)
• Η διαδικασία του σχεδιασμού συστήματος μετασχηματίζει το
μοντέλο ανάλυσης σε μοντέλου σχεδιασμού συστήματος
• Η ομάδα ανάπτυξης:
◦ Ορίζει τους σχεδιαστικούς στόχους του έργου
◦ Αποσυνθέτει το σύστημα σε μικρότερα υποσυστήματα με στόχο κάθε
υποσύστημα να μπορεί να υλοποιηθεί από μία ομάδα
◦ Επίσης επιλέγονται στρατηγικές για:
◦ την ανάπτυξη του συστήματος (π.χ. στρατηγική υλικού-λογισμικού)
◦ τη διαχείριση των μόνιμα αποθηκευόμενων δεδομένων
◦ τη συνολική ροή ελέγχου
◦ Την πολιτική ελέγχου πρόσβασης
◦ Το χειρισμό των οριακών περιπτώσεων
• Το αποτέλεσμα είναι ένα μοντέλο που περιλαμβάνει την
αποσύνθεση σε υποσυστήματα και μία σαφή περιγραφή των
στρατηγικών
2
Εισαγωγή (2)
Χαμηλό κόστος
Αυξημένη παραγωγικότητα Λειτουργικότητα
Συμβατότητα με προηγούμενες Αποδοτικότη- Φιλικότητα
εκδόσεις τα εκτέλεσης Χρηστικότητα
Ιχνηλασιμότητα απαιτήσεων Ευκολία εκμάθησης
Ταχεία ανάπτυξη Αξιοπιστία Ανοχή σε σφάλματα
Ευελιξία Ευρωστία
Μεταφερσιμότητα,
Πελάτης τεκμηρίωση
Ελάχιστα σφάλματα Τελικός
Τροποποίησομότητα, αναγνωσιμότητα χρήστης
επαναχρησιμοποιησιμότητα,
προσαρμοστικότητα, καλά
Ορισμένες διεπαφές Ομάδα ανάπτυξης-
συντήρησης
3
Εισαγωγή (3)
διαθεσιμότητα
- Δυνατότητα
διαχείρισης
+
-
ικανότητα -
κλιμάκωσης
-
- - -
Απόδοση
- - -
- ασφάλεια
-
- +
μεταφερσιμότητα
+
+ δυνατότητα
συντήρησης
Ευελιξία
4
Εισαγωγή (4)
• Ο σχεδιασμός συστήματος δεν είναι αλγοριθμική
διαδικασία
◦ Η διαδικασία με τη σειρά της σε ένα πλήθος δραστηριοτήτων που
κάθε μία να εξετάζει τμήμα της αποσύνθεσης του συστήματος
◦ Προσδιορισμός σχεδιαστικών στόχων: Η ομάδα ανάπτυξης προσδιορίζει
τα χαρακτηριστικά του συστήματος που θα αναπτυχθεί και αναθέτει
προτεραιότητες σ’ αυτά
◦ Δημιουργία της αρχικής αποσύνθεσης του συστήματος: το σύστημα
αποσυντίθεται σε μικρότερα τμήματα με βάση τις περιπτώσεις χρήσης και
το μοντέλο ανάλυσης. Υπάρχουν τυποποιημένα μοντέλα αρχιτεκτονικής
που μπορούν να χρησιμοποιηθούν ως αφετηρίες.
◦ Εκλέπτυνση της αποσύνθεσης σε υποσυστήματα έως ότου
ικανοποιηθούν οι σχεδιαστικοί στόχοι: Η αρχική αποσύνθεση
πιθανότατα δεν θα ικανοποιεί τους σχεδιαστικούς στόχους, οπότε το
μοντέλο εκλεπτύνεται και τροποποιείται μέχρι να επιτευχθεί το σύνολο
των στόχων
Ανάλυση
: δυναμικό μοντέλο
: μοντέλο αντικειμένων
ανάλυσης
Σχεδιασμός συστήματος
: σχεδιαστικοί στόχοι
: αποσύνθεση σε
υποσυστήματα
Σχεδιασμός αντικειμένων
: μοντέλο σχεδιασμού
αντικειμένων
Διάγραμμα δραστηριότητας UML 9
10
Υποσυστήματα και κλάσεις (1)
• Ένα υποσύστημα είναι ένα αντικαταστάσιμο τμήμα του
συστήματος με καλά καθορισμένες διεπαφές που
ενθυλακώνει την κατάσταση και τη συμπεριφορά των
κλάσεων που περιέχει
◦ Παραδείγματα: μία βάση δεδομένων ή ένα σύστημα αρχείων
• Συνήθως ένα υποσύστημα αντιστοιχεί σε εργασία που
μπορεί να εκτελέσει ένας προγραμματιστής ή μία ομάδα
προγραμματιστών
• Η αποσύνθεση σε υποσυστήματα (εφ’ όσον έχει γίνει
σωστά!) επιτρέπει την παράλληλη ανάπτυξη με μικρές
ανάγκες για επικοινωνία
• Αν κάποιο υποσύστημα είναι ιδιαίτερα μεγάλο-
πολύπλοκο, εφαρμόζουμε αναδρομικά την αποσύνθεση
11
Κλάση Υποσύστημα
12
Υποσυστήματα και κλάσεις (3)
• Παράδειγμα: Στο σύστημα αναφοράς περιστατικών θα
μπορούσαμε να διακρίνουμε τα εξής υποσυστήματα:
◦ ΔιεπαφήΣυντονιστή
◦ ΔιεπαφήΔιασώστη
◦ ΔιαχείρισηΠεριστατικών (δημιουργία, τροποποίηση, αποθήκευση,
ανάκτηση περιστατικών)
◦ ΔιαχείρισηΠόρων (παρακολούθηση διαθέσιμων πόρων, π.χ.
ασθενοφόρα, τραυματιοφορείς)
◦ ΔιαχείρισηΧαρτών (απεικόνιση χαρτών και τοποθεσιών)
◦ Ειδοποιήσεις (επικοινωνία μεταξύ διασώστη και συντονιστή)
13
ΔιεπαφήΔιασώστη ΔιεπαφήΣυντονιστή
ΔιαχείρισηΧαρτών ΔιαχείρισηΠεριστατικών
Ειδοποιήσεις ΔιαχείρισηΠόρων
15
16
Υπηρεσίες και διεπαφές υποσυστημάτων (2)
• Ο σχεδιασμός του συστήματος εστιάζει στον να οριστούν
οι υπηρεσίες που παρέχονται από κάθε υποσύστημα,
απαριθμώντας τις λειτουργίες, τις παραμέτρους και τη
συμπεριφορά τους, σε υψηλό επίπεδο
• Στον σχεδιασμό των αντικειμένων η εστίαση μετατοπίζεται
στην προγραμματιστική διεπαφή εφαρμογών (application
programming interface – API), η οποία εκλεπτύνει και
επεκτείνει τη διεπαφή των υποσυστημάτων
◦ Η προγραμματιστική διεπαφή εφαρμογών επίσης περιλαμβάνει τον
τύπο των παραμέτρων και τον τύπο που επιστρέφει η κάθε
λειτουργία
17
ΥπηρεσίαΕνημέρωσηςΠόρων
ΔιεπαφήΔιασώστη
ΔιαχείρισηΠόρων
ΥπηρεσίαΚατανομήςΠόρων
ΔιεπαφήΣυντονιστή
18
Υπηρεσίες και διεπαφές
υποσυστημάτων (4)
• Ο προσδιορισμός των διεπαφών και των χρήσεων ξεκινά όταν η
αποσύνθεση σε υποσυστήματα είναι σχετικά σταθερή
◦ Πρακτικά τότε αλλάζουμε την εστίαση της διαδικασίας από τον ορισμό των
υποσυστημάτων στον ορισμό των διεπαφών
◦ Πριν από αυτό το σημείο, χρησιμοποιούμε τον συμβολισμό με τα βέλη για να
δείξουμε γενικές εξαρτήσεις
• Ο ορισμός του υποσυστήματος με όρους των υπηρεσιών που
παρέχει μας βοηθά να επικεντρωθούμε στη διεπαφή του και όχι
στον τρόπο υλοποίησης
◦ Στον ορισμό της διεπαφής πρέπει να προσπαθούμε να «αποκαλύπτουμε» όσο
το δυνατόν λιγότερα για την υλοποίηση
◦ Π.χ. δεν χρειάζεται να αποκαλύπτεται αν μία δυναμική δομή υλοποιείται με
συνδεδεμένη λίστα, πίνακα ή πίνακα κερματισμού
◦ Αποκάλυψη: π.χ. παροχή λειτουργίας setHashField(fieldName);
◦ Μην αποκαλύπτοντας την υλοποίηση, μπορούμε να την αλλάξουμε χωρίς να
επηρεάζονται όσοι χρησιμοποιούν τη διεπαφή
19
Σύζευξη (1)
• Η σύζευξη αφορά το πλήθος των εξαρτήσεων μεταξύ δύο
υποσυστημάτων
◦ Επιθυμητή: χαλαρή σύζευξη τα υποσυστήματα είναι σχετικά
ανεξάρτητα και αλλαγές στο ένα δεν επηρεάζουν το άλλο
◦ Μη επιθυμητή: ισχυρή σύζευξη τα υποσυστήματα είναι
εξαρτημένα μεταξύ τους
• Παράδειγμα:
◦ Έστω το σύστημα διαχείρισης περιστατικών
◦ Αποφασίζουμε ότι τα δεδομένα θα αποθηκεύονται σε σχεσιακή
βάση δεδομένων και δημιουργούμε ένα υποσύστημα
ΒάσηΔεδομένων
◦ Ο αρχικός σχεδιασμός του υποσυστήματος ΒάσηΔεδομένων είναι να
επικοινωνούν με αυτό τα υπόλοιπα υποσυστήματα μέσω εντολών σε
SQL
20
Σύζευξη (2)
ΒάσηΔεδομένων
21
Σύζευξη (3)
• Μπορούμε να μειώσουμε την εξάρτηση μεταξύ των τριών
υποσυστημάτων και του υποσυστήματος της βάσης δεδομένων
εισάγοντας ένα ενδιάμεσο υποσύστημα ΔιαχείρισηΑποθήκευσης
ΔιαχείρισηΑποθήκευσης
ΒάσηΔεδομένων 22
Σύζευξη (4)
• Στην εναλλακτική σχεδίαση, η αλλαγή της βάσης
δεδομένων επηρεάζει μόνο το υποσύστημα
ΔιαχείρισηΑποθήκευσης
23
24
Σύζευξη (6) - Τύποι σύζευξης
• Εξωτερική σύζευξη (external coupling): δύο συνιστώσες
μοιράζονται μία εξωτερικά καθοριζόμενη μορφή
δεδομένων, πρωτόκολλο επικοινωνίας κ.ά.
◦ Π.χ. η μία συνιστώσα γράφει δεδομένα σε ένα αρχείο με μία
συγκεκριμένη μορφή και η άλλη συνιστώσα διαβάζει το αρχείο
• Σύζευξη ελέγχου (control coupling): η μία συνιστώσα
ελέγχει τη δραστηριότητα της άλλης
◦ π.χ. μεταβιβάζοντας μία ένδειξη (flag) του τι να κάνει:
// συνιστώσα A
function do(what) {
if (what == 1) do_something;
else if (what == 2) do_something_quite_different;
}
// συνιστώσα B
A.do(1);
25
27
4. Σύζευξη ελέγχου
3. Εξωτερική σύζευξη
• Παράδειγμα:
◦ Έστω ένα σύστημα για διαχείριση του σχεδιασμού λογισμικού
◦ Σε σχέση με τα ζητήματα σχεδιασμού, καταγράφουμε σχεδιαστικά
προβλήματα, τις εναλλακτικές επιλογές που έχουμε, τα κριτήρια
αξιολόγησης και τις αποφάσεις
◦ Για κάθε απόφαση, δημιουργούμε μία εργασία, που μπορεί να
αποσυντίθεται σε υπο-εργασίες ή δραστηριότητες
29
Συνεκτικότητα (2)
• Διάγραμμα κλάσεων του συστήματος
αποτιμά
Κριτήριο ΕναλλακτικήΕπιλογή
* *
*
λύνεταιΜε
βασίζεταιΣε
ΣχεδιαστικόΖήτημα
επιλέγεταιΝαΕπιλυθεί Απόφαση
υπο-εργασία
*
υποεργασίες
υλοποιείταιΑπό
Δραστηριότητα Εργασία
30
Συνεκτικότητα (3)
• Αρχική επιλογή: το σύστημα είναι μικρό, ας γίνει ένα υποσύστημα
ΥποσύστημαΣχεδιασμού
αποτιμά
Κριτήριο ΕναλλακτικήΕπιλογή
* *
*
λύνεταιΜε
βασίζεταιΣε
ΣχεδιαστικόΖήτημα
επιλέγεταιΝαΕπιλυθεί Απόφαση
Υπο-εργασία
*
υποεργασίες
υλοποιείταιΑπό
Δραστηριότητα Εργασία
31
Συνεκτικότητα (4)
• Όχι καλή επιλογή!
• Το υποσύστημα πρακτικά χωρίζεται σε δύο υπογράφους
όπου:
◦ Ο κάθε υπογράφος είναι αρκετά «πυκνά» συνδεδεμένος
◦ Οι δύο υπογράφοι έχουν μία μόνο σύνδεση μεταξύ τους
• Δημιουργούμε ένα υποσύστημα ΔιαχείρισηΣυλλογιστικής
◦ ΣχεδιαστικόΖήτημα, ΕναλλακτικήΕπιλογή, Κριτήριο, Απόφαση
• Και ένα υποσύστημα ΔιαχείρισηΕργασιών
◦ Εργασία, Υπο-εργασία και Δραστηριότητα
• Κάθε υποσύστημα έχει υψηλότερη συνεκτικότητα από το
αρχικό
◦ Μπορούμε να χρησιμοποιήσουμε το κάθε τμήμα αυτόνομα, π.χ. αν
χρειαζόμαστε μόνο τη διαχείριση εργασιών
◦ Κάθε τμήμα είναι μικρότερο σε μέγεθος, μπορεί να ανατεθεί σε έναν
μόνο προγραμματιστή
32
Συνεκτικότητα (5)
ΔιαχείρισηΣυλλογιστικής
αποτιμά
Κριτήριο ΕναλλακτικήΕπιλογή
* *
*
λύνεταιΜε
βασίζεταιΣε
ΣχεδιαστικόΖήτημα
επιλέγεταιΝαΕπιλυθεί Απόφαση
ΔιαχείρισηΕργασιών
Υπο-εργασία
*
υποεργασίες
υλοποιείταιΑπό
Δραστηριότητα Εργασία
33
Συνεκτικότητα (6)
• Λειτουργική συνεκτικότητα (functional cohesion): Επιτυγχάνεται
όταν η συνιστώσα εκτελεί ένα μοναδικό είδος υπολογισμού και
επιστρέφει αποτέλεσμα, χωρίς πλευρικά αποτελέσματα (side
effects)
◦ Κάθε στοιχείο επεξεργασίας της συνιστώσας είναι απαραίτητο για την εκτέλεση της
λειτουργίας
◦ Τυπικά, η είσοδος στις συνιστώσες με λειτουργική συνεκτικότητα είναι παράμετροι
λειτουργιών, αλλά μπορεί να είναι και αρχεία ή άλλες ροές δεδομένων
◦ Το αποτέλεσμα που επιστρέφεται πρέπει να είναι το μοναδικό στοιχείο που
επηρεάζει τους υπολογισμούς στη συνέχεια
◦ Συνιστώσες που ενημερώνουν βάσεις δεδομένων ή προτρέπουν τον χρήστη για
είσοδο δεν είναι λειτουργικά συνεκτικές διότι έχουν πλευρικά αποτελέσματα
(αλλάζουν την κατάσταση της βάσης δεδομένων και έχουν έξοδο προς τον χρήστη)
◦ Οι λειτουργικά συνεκτικές συνιστώσες βρίσκονται συνήθως σε χαμηλά στρώματα
στην ιεραρχία αποσύνθεσης
◦ Παραδείγματα λειτουργικά συνεκτικών συνιστωσών: ανάγνωσηΕγγραφής,
εύρεσηΘέσηςΕπιβάτηΠτήσης, υπολογισμόςΣυνημιτόνου
34
Συνεκτικότητα (7)
• Συνεκτικότητα διαστρωμάτωσης (layer cohesion):
επιτυγχάνεται όταν διατηρούμε στην ίδια συνιστώσα τα
μέσα για να παρέχουμε ένα σύνολο από υπηρεσίες στο
ανώτερο στρώμα και δεν περιλαμβάνουμε στη συνιστώσα
τίποτε άλλο
◦ Προφανώς ισχύει όταν έχουμε διαστρωμάτωση
◦ Επιτρέπονται πλευρικά αποτελέσματα – συχνά είναι απαραίτητα
◦ Παραδείγματα συνιστωσών με συνεκτικότητα διαστρωμάτωσης:
διαχείρισηΑσφάλειας, διάδρασηΜεΧρήστη,
αποθήκευσηΔεδομένων, επεξεργασίαΑρχείωνXML
35
Συνεκτικότητα (8)
• Ακολουθιακή συνεκτικότητα (sequential cohesion). Αν
ομαδοποίηση σε μονάδες στηρίζεται στο ότι η έξοδος μιας
λειτουργίας είναι είσοδος στην επόμενη
◦ Παραδείγματα: στάδια επεξεργασίας ήχου, αναγνώριση κειμένου
36
Συνεκτικότητα (9)
• Διαδικαστική συνεκτικότητα (procedural cohesion). Οι
λειτουργίες ομαδοποιούνται σε συνιστώσες διότι πάντα
ακολουθούν μία συγκεκριμένη σειρά εκτέλεσης – π.χ. μία
διαδικασία που ελέγχει τα προνόμια ενός αρχείου και μετά το
ανοίγει.
◦ Το αποτέλεσμα της πρώτης διαδικασίας δεν είναι είσοδος για τη δεύτερη
37
Συνεκτικότητα (10)
• Χρονική συνεκτικότητα (temporal cohesion): οι
λειτουργίες της συνιστώσας σχετίζονται μόνο λόγω του ότι
καλούνται σε χρονικά παραπλήσιες στιγμές
◦ Π.χ. μετά την εμφάνιση μιας εξαίρεσης, κλείνουμε τα ανοικτά
αρχεία, καταγράφουμε το σφάλμα και ενημερώνουμε τον χρήστη.
◦ Π.χ. Αναθέτουμε αρχικές τιμές σε όλες τις μεταβλητές, ανοίγουμε
όλα τα αρχεία (δεδομένων, καταγραφής, ...)
• Λογική συνεκτικότητα (logical cohesion): ένας αριθμός
λειτουργιών τοποθετούνται στην ίδια συνιστώσα διότι
κατηγοριοποιούνται σε λογικό επίπεδο ότι κάνουν το ίδιο
πράγμα, ακόμη και αν είναι αρκετά διαφορετικό
◦ Π.χ. Κεντρική συνιστώσα διαχείρισης σφαλμάτων
◦ Π.χ. Προετοιμασία πακέτων δεδομένων για μετάδοση, χειρισμός
πακέτων που ελήφθησαν
38
Συνεκτικότητα (11)
• Συμπτωματική συνεκτικότητα (coincidental cohesion): τα
τμήματα μιας συνιστώσας είναι εντελώς ασυσχέτιστα και
κατά σύμπτωση βρέθηκαν μαζί (π.χ. βιβλιοθήκη «utilities»)
39
6. Ακολουθιακή
5. Επικοινωνίας
4. Διαδικαστική
3. Χρονική
2. Λογική
40
Εξισορρόπηση σύζευξης και
συνεκτικότητας
• Γενικά υπάρχει μία σχέση μεταξύ σύζευξης και
συνεκτικότητας
◦ Μπορούμε να αυξήσουμε τη συνεκτικότητα με περαιτέρω
αποσύνθεση
◦ Αυτό όμως αυξάνει το πλήθος των διεπαφών και συνακόλουθα τη
σύζευξη
41
Διαστρωμάτωση (1)
• Η ιεραρχική αποσύνθεση ενός συστήματος οδηγεί σε ένα
διατεταγμένο σύνολο στρωμάτων
• Ένα στρώμα είναι μία ομαδοποίηση υποσυστημάτων που
παρέχουν σχετιζόμενες υπηρεσίες
◦ Πιθανόν να υλοποιείται με χρήση υπηρεσιών από άλλο, χαμηλότερο
επίπεδο
• Τα επίπεδα διατάσσονται ώστε κάθε επίπεδο:
◦ δεν έχει καμία γνώση για τα επίπεδα πάνω από το ίδιο
◦ εξαρτάται μόνο από επίπεδα χαμηλότερου επιπέδου
◦ Στην κλειστή αρχιτεκτονική το κάθε επίπεδο μπορεί να χρησιμοποιεί μόνο
επίπεδα του αμέσως κατώτερου επιπέδου
◦ Στην ανοικτή αρχιτεκτονική το κάθε επίπεδο μπορεί να χρησιμοποιεί
οποιοδήποτε κατώτερο επίπεδο
◦ Τα επίπεδα που δεν εξαρτώνται από άλλα απαρτίζουν το κατώτατο
επίπεδο, ενώ το επίπεδο που δεν χρησιμοποιείται από κανένα άλλο
καλείται το ανώτατο επίπεδο
42
Διαστρωμάτωση (2)
Α: υποσύστημα Επίπεδο 1
(ανώτατο)
Επίπεδο 3
Ε: υποσύστημα Ζ: υποσύστημα Η: υποσύστημα
(κατώτατο)
Κατακόρυφη τομή
43
Διαστρωμάτωση (3)
7 Εφαρμογής
Δεδομένα
• Παράδειγμα κλειστής
6 Παρουσίασης κοινής μορφή αρχιτεκτονικής: μοντέλο
διασύνδεσης ανοικτών
5 Συνόδου Σύνδεση
συστημάτων ISO/OSI
4 Μεταφοράς Μήνυμα
3 Δικτύου Πακέτο
1 Φυσικό bits
44
Διαστρωμάτωση (4)
7 Εφαρμογής
• Το μοντέλο ISO/OSI με
επίπεδα υποσυστημάτων
6 Παρουσίασης
Αντικείμενο
RMI
5 Συνόδου
4 Μεταφοράς
TCP/IP Δίοδος (socket)
3 Δικτύου
2 Συνδ. Δεδομ.
Ethernet Διεύθυνση MAC
1 Φυσικό
45
Διαστρωμάτωση (5)
• Παράδειγμα ανοικτής αρχιτεκτονικής: Swing/AWT
◦ Η εφαρμογή κανονικά χρησιμοποιεί το Swing ΑΛΛΑ μπορεί να
χρησιμοποιήσει και το AWT για ταχύτητα και ευελιξία.
AWT
Αφηρημένη
παραθυρική διεπαφή
X11
Βασικό παραθυρικό
σύστημα 46
Διαστρωμάτωση (6)
• Πλεονεκτήματα-Μειονεκτήματα κλειστές έναντι ανοικτών
αρχιτεκτονικών
Οι κλειστές αρχιτεκτονικές οδηγούν σε χαμηλότερη σύζευξη μεταξύ
των υποσυστημάτων
Επίσης, τα υποσυστήματα μπορούν να ολοκληρωθούν και να
ελεγχθούν επαυξητικά
Κάθε επίπεδο εισάγει επιβάρυνση επεξεργασίας και (δυνητικά)
αποθήκευσης (δυσχεραίνοντας την επίτευξη των στόχων που
τίθενται στις μη λειτουργικές προδιαγραφές)
Η προσθήκη λειτουργικότητας μπορεί να είναι δύσκολη στη
συνέχεια (πρέπει να τροποποιηθούν περισσότερα στρώματα)
47
Διαμέριση
• Εναλλακτικά (ή συμπληρωματικά) προς την ιεραρχική
αποσύνθεση, διαμερίζουμε το σύστημα σε ομότιμα
υποσυστήματα (peer subsystems), κάθε ένα από τα οποία
είναι υπεύθυνο για διαφορετικά είδη υπηρεσιών
◦ Παράδειγμα: διάρθρωση εταιρικού συστήματος
Διαχείριση
Πωλήσεις
προσωπικού
48
Διαστρωμάτωση και διαμέριση
• Γενικά, μία αποσύνθεση συστήματος περιλαμβάνει τόσο
διαμέριση όσο και διαστρωμάτωση
◦ Αρχικά εκτελούμε διαμέριση στα ανώτερου επιπέδου
υποσυστήματα, με κάθε υποσύστημα να είναι υπεύθυνο για
συγκεκριμένη λειτουργικότητα
◦ Αν κάποιο υποσύστημα είναι υπερβολικά πολύπλοκο, προχωρούμε
σε ιεραρχική αποσύνθεσή του
◦ ... στη διαδικασία θυμόμαστε ότι κάθε περαιτέρω διαχωρισμός σε
υποσυστήματα εισάγει επιβάρυνση λόγω της επικοινωνίας μεταξύ
υποσυστημάτων
◦ Επίσης, η υπερβολική αποσύνθεση αυξάνει τη συνολική
πολυπλοκότητα και δυσχεραίνει την κατανόηση του μοντέλου
49
50
Μοτίβο Αποθετηρίου (1)
• Τα υποσυστήματα προσπελαύνουν και τροποποιούν μία
μοναδική δομή δεδομένων που ονομάζεται αποθετήριο
(repository)
• Τα υποσυστήματα είναι (σχετικά) ανεξάρτητα και
επικοινωνούν μόνο μέσω του αποθετηρίου
• Η ροή ελέγχου υπαγορεύεται είτε από τα υποσυστήματα
(π.χ. ανεξάρτητη ροή ελέγχου με κλειδώματα στο
αποθετήριο) ή από το αποθετήριο [π.χ. με εναύσματα
(triggers) που ενεργοποιούν διαδικασίες στα
υποσυστήματα) Αποθετήριο
52
Μοτίβο πολλαπλών στρωμάτων (1)
• Η αποσύνθεση σε στρώματα είναι μία τυπική διαδικασία
σχεδιασμού
• Όταν την εφαρμόζουμε, το ανώτερο επίπεδο αφορά στη
διεπαφή του actor με το σύστημα – συνήθως στη διεπαφή
του χρήστη
◦ Έτσι μπορούμε να έχουμε πολλές διεπαφές για την ίδια
λειτουργικότητα, π.χ. γραφική διεπαφή έναντι διεπαφής γραμμής
εντολών, διεπαφές για διαφορετικές πλατφόρμες κ.ο.κ.
◦ Τα κατώτερα στρώματα αφορούν τις λειτουργίες εφαρμογής που
ορίσθηκαν από τις περιπτώσεις χρήσης
◦ Τα στρώματα στο κάτω μέρος της ιεραρχίας αφορούν συνήθως
υπηρεσίες όπως αποθήκευση και μετάδοση
53
Διεπαφή χρήστη
54
Μοτίβο πολλαπλών στρωμάτων
(3)
• Το μοτίβο έχει και γενικότερη χρήση (εκτός από
εφαρμογές)
◦ Στα λειτουργικά συστήματα, τα χαμηλότερα στρώματα ασχολούνται
με βασικές λειτουργίες (π.χ. ανάθεση διεργασιών σε επεξεργαστές,
διαχείριση μνήμης, είσοδο-έξοδο χαμηλού επιπέδου) και τα
ανώτερα στρώματα σχηματίζουν πιο σύνθετες λειτουργίες (π.χ.
διαχείριση μπλοκ δίσκου αρχεία και κατάλογοι)
◦ Εφαρμόζεται επίσης στα τηλεπικοινωνιακά συστήματα (π.χ. μοντέλο
OSI)
55
Μοτίβο εξυπηρέτη-
εξυπηρετούμενου (1)
• Βασική διάταξη:
◦ Υπάρχει μία τουλάχιστον συνιστώσα με τον ρόλο του εξυπηρέτη
(server) που περιμένει και εξυπηρετεί αιτήματα
◦ Υπάρχει μία τουλάχιστον συνιστώσα με τον ρόλο του
εξυπηρετούμενου (client) που αποστέλλει αιτήματα για εκτέλεση
(και συνήθως λαμβάνει κάποια απάντηση)
◦ Η συνιστώσα του εξυπηρέτη παρέχει συγκεκριμένες υπηρεσίες, τις
οποίες η συνιστώσα του εξυπηρετούμενου χρησιμοποιεί
εξυπηρετούμενος Εξυπηρέτης
<<παρεχόμενες υπηρεσίες>>
υπηρεσία1
υπηρεσία2
υπηρεσία3
...
56
Μοτίβο εξυπηρέτη-εξυπηρετούμενου (2)
• Παραδείγματα:
◦ Οποιοδήποτε σύστημα με μία βάση δεδομένων
◦ Οι εξυπηρετούμενοι συλλέγουν τα δεδομένα, τα ελέγχουν και εκτελούν τις
δοσοληψίες
◦ Οι ιστοχώροι στο διαδίκτυο
◦ όπου ένας εξυπηρετούμενος μπορεί να συνδέεται σε πολλούς εξυπηρέτες
◦ και ένας εξυπηρέτης μπορεί να δέχεται συνδέσεις από πολλούς διαφορετικού τύπου
εξυπηρετούμενους (εφαρμογές πλοήγησης, ιστοσυλλέκτες (bots) κ.λπ.)
◦ Η εφαρμογή πλοήγησης απλώς δρα ως διεπαφή με τον χρήστη – όλη η επεξεργασία
και αποθήκευση γίνεται στο επίπεδο του εξυπηρέτη
◦ Ο εξυπηρέτης μπορεί να έχει και άλλα στρώματα που δεν είναι άμεσα ορατά
◦ Το παράδειγμα της βάσης δεδομένων καλείται βαρύς πελάτης, ενώ το
παράδειγμα του προγράμματος πλοήγησης ελαφρύς πελάτης
firefox: WebBrowser www.uop.gr: WebServer
58
Μοτίβο τριών στρωμάτων (2)
• Πλεονεκτήματα μοντέλου τριών στρωμάτων
◦ Εύκολη υλοποίηση πολλών διεπαφών για την ίδια εφαρμογή
◦ Π.χ. Διαλογική, διεπαφής με μηχανές, για διαφορετικές συσκευές...
◦ Ευκολότερη συντήρηση
◦ Πιο εύκολος ο περιορισμός της συντήρησης μόνο σε ένα στρώμα
◦ Μεγαλύτερη ευελιξία στη διαμόρφωση των μηχανημάτων
◦ Άλλες οι ανάγκες για βάσεις δεδομένων, άλλες για ταχύτητα
επεξεργασίας
◦ Ικανότητα κλιμάκωσης
◦ Με προσθήκη εξυπηρετών / αποθήκευσης στο κατάλληλο στρώμα
59
60
Μοτίβο ομοτίμων (2)
• Τυπικά παραδείγματα:
διαμοιρασμός αρχείων, chatting
• Παράδειγμα: Gnutella
61
62
Μοτίβο μεσάζοντα
• Στόχος είναι να κατανεμηθούν απόψεις του συστήματος
λογισμικού με διαφανή τρόπο σε ένα πλήθος υπολογιστών
◦ Ένα αντικείμενο Α καλεί λειτουργίες ενός άλλου Β, χωρίς να γνωρίζει
που βρίσκεται το Β
μεσάζων
Αντιπρόσωπος Απομακρυσμένο αντικείμενο
63
64
Μοτίβο μοντέλου-όψης-ελεγκτή (1)
• Τα υποσυστήματα χωρίζονται σε τρεις κατηγορίες:
◦ Μοντέλα, που έχουν την γνώση της περιοχής εφαρμογής
◦ Όψεις, που την παρουσιάζουν στον χρήστη
◦ Ελεγκτές, που διαχειρίζονται την ακολουθία των διαδράσεων με τον
χρήστη
65
66
Μοτίβο μοντέλου-όψης-ελεγκτή (3)
• Παράδειγμα διαγράμματος επικοινωνίας για το μοτίβο μοντέλο-όψη-ελεγκτής
67