ΔΥΝΑΜΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ ä Οψεις της UML ä Οψεις καί Διαγράμματα ä Δυναμικά Διαγράμματα ä Διαγράμματα Καταστάσεων ä Διαγράμματα Ακολουθίας ä Διαγράμματα Συνεργασίας ä Διαγράμματα Δραστηριοτήτων
Oψεις της UML Use-caseView ComponentviewLogicalview DeploymentviewConcurrencyView
Οψη περίπτωσης χρήσης Use Case View ä Περιγράφει το ΤΙ. Δηλαδή τί λειτουργι- κότητα που αναμένεται να προσφέρει το σύστημα σε εξωτερικούς actors ä Οδηγεί τη δημιουργία των άλλων όψεων ä Χρησιμοποιείται γιά επικύρωση καί επιβεβαίωση από ä πελάτες, σχεδιαστές, προγραμματιστές, ελεγκτές
Λογική Όψη ή Όψη Σχεδιασμού Logical View or Design View ä Περιγράφει το ΠΩΣ, δηλαδή πως παρέχεται η λειτουργικότητα του συστήματος ä Είναι χρήσιμο γιά τους σχεδιαστές καί τους προγραμματιστές
Όψη Συστατικών/Υλοποίησης Component/Implementation View ä Δείχνει ä την οργάνωση των συνιστωσών του κώδικα (code components) ä τη δομή των συνιστωσών, τις εξαρτήσεις μεταξύ τους, κατανομή πόρων, διοικητικές πληροφορίες ä Χρησιμοποιείται από τους προγραμματιστές
Οψη Διεργασιών Concurrency/Process View ä Περιγράφει την κατανομή σε διεργασίες καί επεξεργαστές ä Συνισφέρει στην αποδοτική χρήση των πόρων ä Χρησιμοποιείται από όσους αναπτύσσουν καί ενοποιούν λογισμικό
Φυσική Όψη Deployment View ä Περιγράφει τη φυσική όψη του συστήματος, δηλαδή τις φυσικές συνιστώσες του συστήματος: υπολογιστές, περιφερειακά, συνδέσεις ä Χρησιμοποιείται από όσους αναπτύσσουν, ενοποιούν καί ελέγχουν το λογισμικό
UML Διαγράμματα ä Use case diagrams ä Class Diagrams and Object Diagrams ä State Diagrams ä Sequence Diagrams ä Collaboration Diagrams ä Αctivity Diagrams ä Component Diagrams ä Deployment Diagrams
UML Όψεις καί Διαγράμματα UML Views and Diagrams
UML Διαγράμματα ä Use case diagrams ä Class Diagrams and Object Diagrams ä State Diagrams ä Sequence Diagrams ä Collaboration Diagrams ä Αctivity Diagrams ä Component Diagrams ä Deployment Diagrams Διαγράμματα Συμπεριφοράς/ Δυναμικά Διαγράμματα Διαγράμματα Υλοποίησης Διαγράμματα Λειτουργικότητας Στατικά Διαγράμματα
UML Διαγράμματα Στατική Όψη Δυναμική Όψη ‘Οψη Υλοποίησης Διαγράμματα αντικειμένων και κλάσεων Kαταστάσεων, Ακολουθίας,Συνεργασίας, Δραστηριοτήτων Εξαρτημάτων,ανάπτυξης Λειτουργική Όψη Use case διάγραμμα
Δυναμικά Διαγράμματα Γιατί χρειάζονται; ä Γιά να δείξουν στοιχεία που δεν δείχνουν τα διαγράμματα κλάσεων ä Γιά την κατανόηση της συμπεριφοράς ενός αντικειμένου σε σχέση με το χρόνο ä Γιά την κατανόηση συμπεριφοράς που εξαρτάται από την κατάσταση του αντικειμένου ä Γιά την αποκάλυψη κρυμμένων ιδιοτήτων ä Γιά τον προσδιορισμό ιδιωτικών λειτουργιών ή λειτουργιών που λείπουν ä Γιά τον προσδιορισμό της αλληλουχίας των λειτουργιών καί των μυνημάτων
Είδη δυναμικών διαγραμμάτων u Διαγράμματα u Διαγράμματα καταστάσεων (State (State Diagrams) Diagrams) : Περιγράφουν τις διάφορες καταστάσεις καταστάσεις που μπορεί να κατέχει κάποιο αντικείμενο και τα γεγονότα που οδήγησαν στην αλλαγή u Διαγράμματα u Διαγράμματα ακολουθίας (Sequence (Sequence Diagrams): Περιγράφουν πώς τα αντικείμενα αλληλεπιδρούν μεταξύ τους, εστιάζοντας περισσότερο σε θέματα χρόνου. u Διαγράμματα u Διαγράμματα συνεργασίας (Collaboration Diagrams) Diagrams) : Περιγράφουν πως τα αντικείμενα επικοινωνούν μεταξύ τους, εστιάζοντας σε θέματα χώρου. u Διαγράμματα u Διαγράμματα δραστηριοτήτων (Activity Diagrams) Diagrams) : Δίνουν έμφαση σε θέματα λειτουργιών. λειτουργιών. Τα αντικείμενα εκτελούν κάποιο έργο μέσω κάποιων δραστηριοτήτων
Διαγράμματα Καταστάσεων State Charts ή State Diagrams
Τα δυναμικά αντικείμενα αλλάζουν κατάσταση με την πάροδο του χρόνου ä Η συμπεριφορά/κατάσταση επηρεάζεται από: ä αλλαγές σε τιμές μεταβλητών ä αποτελέσματα λειτουργιών ä εξωτερικά ή εσωτερικά γεγονότα/συμβάντα
Διαγράμματα Καταστάσεων ä Περιγράφουν ä τον κύκλο ζωής των στιγμιοτύπων των κλάσεων ä την εκτέλεση μίας πράξης ενός στιγμιοτύπου μίας κλάσης ä μοντελοποιούν ä τις πιθανές καταστάσεις των στιγμιοτύπων των κλάσεων ä τις πιθανές μεταβάσεις από μία κατάσταση σε άλλη ä τα συμβάντα που προκαλούν τις μεταβάσεις ä τις πράξεις (δράσεις και δραστηριότητες) που εκτελούνται στην κατάσταση ή κατά τη μετάβαση
ΑπλήρωτοΠληρωμένο Διάγραμμα Κατάστασης: Σχηματική Αναπαράσταση Δημιουργίατιμολογίου Πληρωμή Καταστροφήτιμολογίου Ο μαυρισμένος κύκλος δείχνει το σημείο έναρξης των τιμολογίων (δημιουργία αντικειμένου).Ο κύκλος με το άσπρο περίγραμμα φανερώνει το σημείο λήξης (καταστροφή αντικειμένου).Τα βέλη ανάμεσα στις καταστάσεις δείχνουν τις μεταβολές των καταστάσεων και τα γεγονότα/συμβάντα που τον προκαλούν
Είδη γεγονότων/συμβάντων ä CallEvent: λήψη ενός μηνύματος, π.χ. cancel ä SignalEvent: λήψη ενός σήματος, π.χ. left_button_down ä ChangeEvent: συνθήκη γίνεται αληθής, π.χ. when(x<y) ä TimeEvent: σχετικό ή απόλυτο σημείο στο χρόνο, π.χ. after(5 sec)
Μυνήματα - Τύποι μηνυμάτων Τα μυνήματα δείχνουν την αλληλεπίδραση μεταξύ των αντικειμένων καί είναι τριών ειδών: u Απλά : Περιγράφουν πως ο έλεγχος περνάει από το ένα αντικείμενο στο άλλο, χωρίς να περιγράφει λεπτομέρειες για την επικοινωνία u Σύγχρονα : Υλοποιούνται σαν μια κλήση συνάρτησης. Η συνάρτηση που διαχειρίζεται το μήνυμα συμπληρώνεται πριν τη διαδικασία της εκτέλεσης. u Ασύγχρονα : O αποστολέας συνεχίζει να εκτελεί τις υπόλοιπες λειτουργίες του αφού στείλει το μήνυμα, χωρίς να περιμένει για την διαχείρισή του.Χρησιμοποιείται κυρίως σε συστήματα πραγματικού χρόνου, όπου τα αντικείμενα εκτελούνται ταυτόχρονα
Σχηματική αναπαράσταση τύπου μηνυμάτων Σύγχρονα Ασύγχρονα Απλά Σύγχρονα με άμεση επιστροφή
On first floor Moving up Moving down Idle Moving to 1st floor Go up (floor) arrived arrived arrived Go down (floor) Time out arrived Διάγραμμα κατάστασης χωρίς σημείο τέλους
Διάγραμμα Καταστάσεων γιά την κλάση appointment Appointment start duration cancel() delete() Enter Details Active Canceled Finished new() delete() cancel() delete() when(start + duration <= now)
Μετάβαση κατάστασης ä Μία μετάβαση κατάστασης λαμβάνει χώρα αν ä λαμβάνει χώρα ένα συμβάν και ä η συνθήκη είναι αληθής ä Υποθέσεις ä η έλειψη συμβάντος δηλώνει ότι η δραστηριότητα έχει τελειώσει (μετάβαση ολοκλήρωσης) ä η έλλειψη συνθήκης αντιστοιχεί σε [true] ä Είναι δυνατές οι δράσεις κατά τη μετάβαση ä Ειδική δράση: αποστολή μηνύματος σε άλλο αντικείμενο ^receiver.message() ä Παράδειγμα: ä right-mouse-down (loc) [loc in window] / obj := pick- obj(loc); ^obj.highlight()
Όνομα Μεταβλητέςκατάστασης Δραστηριότητες ΤΜΗΜΑΤΑ ΚΑΤΑΣΤΑΣΗΣ Event-name argument-list ‘/ ‘ action-expression Το event-name μπορεί να είναι κάποιο γεγονός πχ είσοδος, έξοδος κι εκτέλεση. Η action-expression φανερώνει ποια ενέργεια πρέπει να εκτελεστεί (αύξηση μετρητών, κλήση συναρτήσεων) Η τυπική σύνταξη γιά το τμήμα δραστηριοτήτων έχει ως εξής:
Παράδειγμα κατάστασης Login Login-time=Current time Entry/type «login» do/get user name do / get password help/display help exit/login(user name,pwd) H κατάσταση login περιλαμβάνει τη log-in time που σχετίζεται με την τρέχουσα ώρα κι όπου ένας αριθμός ενεργειών εφαρμόζονται πάνω στην είσοδο, έξοδο και εκτέλεση
Τυπική σύνταξη για την μετάβαση κατάστασης Event-signature ‘ [ ‘ guard-condition ‘]’ action-expression ‘ ^ ‘ send-clause
Υπογραφή γεγονότος (Event-signature) Ορισμός Αποτελείται από ένα όνομα γεγονότος γεγονότος και παραμέτρους παραμέτρους που προσδιορίζουν το γεγονός που ενεργοποιεί μια μετάβαση από μια κατάσταση σε μια άλλη Σύνταξη παραμέτρων Όνομα -παραμέτρου ‘ : ‘ έκφραση-τύπου,όνομα παραμέτρου ‘ : ‘ έκφραση-τύπου. ( η έκφραση τύπου τύπου δεν είναι τίποτε άλλο από τον τύπο της παραμέτρου παραμέτρου πχ ακέραιος,πραγματικός ) Παραδείγματα draw ( f: Figure, c: Color) print (invoice)
Συνθήκη φύλαξης ( Guard Condition) Ορισμός Eίναι μια λογική έκφραση που βρίσκεται σε μια μετάβαση Eίναι μια λογική έκφραση που βρίσκεται σε μια μετάβαση κατάστασης. Αν η συνθήκη φύλαξης συνδυάζεται με μια υπογραφή γεγονότος (event-signature), για να ενεργοποιηθεί η μετάβαση κατάστασης, πρέπει να είναι αληθής η συνθήκη φύλαξης. Παράδειγμα μεταβάσεων καταστάσεων με guard condition [t = 15sec] [t = 15sec] [number-of-invoices > n] [number-of-invoices > n] withdrawl (amount) [balance >= amount] withdrawl (amount) [balance >= amount]
Έκφραση-Δράσης (Action-expression) Oρισμός Η έκφραση δράσης (action-expression) είναι μια έκφραση Η έκφραση δράσης (action-expression) είναι μια έκφραση διαδικασιών που εκτελείται όταν ενεργοποιείται η μετάβαση καταστάσεων.Αυτή μπορεί να γραφτεί είτε μέσα στο αντικείμενο που κατέχει όλες τις καταστάσεις,είτε με παραμέτρους εντός της υπογραφής συμβάντος Παραδείγματα των action-expression increase () / n:=n+1 / m:=m+1 increase () / n:=n+1 / m:=m+1 add (n) / sum := sum + n add (n) / sum := sum + n Αction expression
Send-Clause ( Όροι αποστολής) Ορισμός To send -clause είναι μια σαφής σύνταξη για την αποστολή To send -clause είναι μια σαφής σύνταξη για την αποστολή του μηνύματος κατά την διάρκεια της μετάβασης ανάμεσα σε δύο καταστάσεις. καταστάσεις.Σύνταξη Αποτελείται από μια έκφραση προορισμού κι ένα όνομα συμβάντος. Αποτελείται από μια έκφραση προορισμού κι ένα όνομα συμβάντος. Η έκφραση προορισμού μπορεί να αξιολογεί ένα αντικείμενο ή ένα σύνολο από αντικείμενα. Παράδειγμα [timer = Time-out ] / go down (first floor) [timer = Time-out ] / go down (first floor) αυτό μεταφράζεται σ’ ένα send-clause ως εξής : αυτό μεταφράζεται σ’ ένα send-clause ως εξής : [timer = Time-out ] ^ self.go down (first floor) [timer = Time-out ] ^ self.go down (first floor)
Events (Γεγονότα) Ορισμός Ορισμός Ένα γεγονός είναι κάτι που συμβαίνει και μπορεί να προκαλέσει κάποια ενέργεια (action ) πχ το πάτημα ενός κουμπιού μπορεί να προκαλέσει την έναρξη της ενέργειας play. Causality (σχέση αιτίου-αιτιατού) Causality (σχέση αιτίου-αιτιατού) Όταν υπάρχουν καλά ορισμένες συνδέσεις ανάμεσα στα γεγονότα και στις ενέργειες, αυτό καλείται αιτιώδης συνάφεια (causality)
Είδη των μηνυμάτων στην UML u Mια συνθήκη γίνεται αληθής : Αυτό παριστάνεται σαν μια συνθήκη φύλαξης σε ένα διάγραμμα κατάστασης u Λήψη ενός συγκεκριμένου σήματος από άλλο αντικείμενο. Το μήνυμα είναι επίσης ένα αντικείμενο. Παριστάνεται στις υπογραφές συμβάντος στα διαγράμματα κατάστασης.Αυτό το είδος συμβάντος ονομάζεται μήνυμα. u Λήψη από μια κλήση μιας λειτουργίας από άλλο αντικείμενο. Ονομάζεται επίσης μήνυμα και παριστάνεται σαν υπογραφή συμβάντος u Πέρασμα μιας συγκεκριμένης χρονικής περιόδου : O χρόνος υπολογίζεται μετά από κάποιο συγκεκριμένο γεγονός ή μετά το πέρασμα κάποιου χρονικού ορίου
Παράδειγμα DigitalWatch modeButton() inc() Display time Set hoursSet minutes do / Display current time entry / beep do / display hours entry / beep do / display minutes modeButton inc / hours:=hours+1inc / min:=min+1 new
Εκλεπτύνσεις διαγραμμάτων ä Ξένα μεταξύ τους υποδιαγράμματα - OR- εκλέπτυνση ä Ακριβώς μία υποκατάσταση είναι ενεργή κάθε φορά που είναι ενεργή η υπερ-κατάσταση (σύνθετη κατάσταση) Z A B
Aποστολή μηνύματος ανάμεσα σε διαγράμματα καταστάσεων Υποκαταστάσεις (substates) Προς τα εμπρός Εν κινήσει Μια υποκατάσταση διάζευξης (or-substate) έχει υποκαταστάσεις αλλά μόνο μία κάθε φορά μπορεί να είναι ενεργή. Για παράδειγμα ένα αυτοκίνητο που βρίσκεται στην κατάσταση εν κινήσει μπορεί να έχει δύο υποκαταστάσεις μπροστά ή πίσω.Είναι αυτονόητο ότι οι δύο αυτές υποκαταστάσεις, δεν μπορεί να είναι ενεργές ταυτόχρονα. Προς τα πίσω
Εκλέπτυνση διαγραμμάτων (2) ä Παράλληλες υποκαταστάσεις - AND- εκλέπτυνση ä Όταν η υπερκατάσταση είναι ενεργή και όλες οι υποκαταστάσεις είναι ενεργές ä Οι υποκαταστάσεις εκλεπτύνονται με OR Z A B
Παράδειγμα - Appointment (1/2) Enter Details Active Canceled Finished new delete cancel when(start + duration <= now)
Παράδειγμα - Appointment (2/2) Active Not Current Current Occurred Fixed Rescheduled do/notify participants and update views when(start<=now) when(start+duration<=now) Reschedule (newStart) [not in Current] / start := newStart
Μια υποκατάσταση σύζευξης (And-substate) ΧαμηλήταχύτηταΥψηλήταχύτητα Εν κινήσει Μια υποκατάσταση σύζευξης (and-substate) μπορεί να συμβεί ταυτόχρονα με κάποια άλλη. Στο παραπάνω παράδειγμα συνδυάζεται και με or-substrate και η υποκατάσταση μπροστά, μπορεί να συνυπάρξει με την υποκατάσταση χαμηλή ή υψηλή ταχύτητα. υψηλή ταχύτητα. Προς τα εμπρός πίσω
Ιστορική κατάσταση (1/2) ä Οι σύνθετες καταστάσεις μπορούν να θυμούνται την εσωτερική κατάσταση από την οποία έφυγαν λόγω διακοπής. ä Στο μέλλον μπορούν να επιστρέψουν σε αυτή μέσω μίας μετάβασης από την υπερκατάσταση μέσω μίας ψευδο- κατάστασης H. ä επανεκτελούνται όλες οι δράσεις εισόδου. ä Μέσω της Η* απομνημονεύονται όλες οι καταστάσεις στο βάθος της ένθεσης.
Ιστορική κατάσταση (2/2) Normal Frozen Freeze Unfreeze + - H when(Balance < 0) when(Balance > 0) Withdrawal(b) [not in Frozen] / Balance := Balance - b Deposit(b) / Balance := Balance + b Balancing [not in Frozen] / Balance := 0 Open / Balance := 0
Σημασιολογία AND- εκλέπτυνσης N/+ N/- H when(Balance < 0) when(Balance > 0) Withdrawal(b) / Balance := Balance - b Deposit(b) / Balance := Balance + b Balancing / Balance := 0 Open / Balance := 0 F/+ F/- when(Balance < 0) when(Balance > 0) H* Freeze Unfreeze
Κατάσταση stubbed Question yes no Question do / pose question yes no F1 / display help “όχι” “ναι”
Κατάσταση synch ä Συγχρονισμός ελέγχου ανάμεσα σε συντρέχουσες περιοχές. ä Παραγωγός - καταναλωτής. ä Κατά την ενεργοποίηση εισάγεται στην κατάσταση synch ένα διακριτικό (token) (το πολύ k διακριτικά, k = 1, 2, … *). ä Η εξερχόμενη μετάβαση μπορεί να ενεργοποιηθεί μόνο αν υπάρχει τουλάχιστον ένα διακριτικό.
Παράδειγμα k P1 P2 C1 C2
Διαγράμματα Ακολουθίας Sequence Diagrams
Γενικά χαρακτηριστικά των διαγραμμάτων ακολουθίας (sequence diagram) u Φανερώνουν u Φανερώνουν πώς πώς τα αντικείμενα αλληλεπιδρούν μεταξύ τους. u Εστιάζουν u Εστιάζουν στο πώς στέλνονται και λαμβάνονται μηνύματα ανάμεσα στα αντικείμενα. u Έχουν u Έχουν δύο άξονες : ο κάθετος άξονας άξονας που δείχνει τον τον χρόνο κι ο οριζόντιος που φανερώνει ένα σύνολο αντικειμένων. u Κάθε u Κάθε αντικείμενο του οριζόντιου άξονα παριστάνεται από ένα ορθογώνιο ορθογώνιο που έχει υπογραμμισμένο το όνομα της κλάσης u Επίσης u Επίσης μια διακεκομμένη κάθετη γραμμή ονομάζεται γραμμή ζωής του αντικειμένου(lifeline) αντικειμένου(lifeline),και,και δείχνει την εκτέλεση του αντικειμένου κατά την διάρκεια της ακολουθίας. u Η u Η ανάγνωση του ακολουθιακού διαγράμματος γίνεται από πάνω προς τα κάτω,βλέποντας,βλέποντας με αυτόν τον τρόπο την ακολουθία των μηνυμάτων με την πάροδο του χρόνου.
Μορφές των διαγραμμάτων ακολουθίας (γενική ή στιγμιότυπο)- generic or instance ä Η ä Η μορφή στιγμιότυπο στιγμιότυπο περιγράφει λεπτομερώς ένα συγκεκριμένο σενάριο ä Η ä Η γενική μορφή μορφή περιγράφει όλες τις εναλλακτικές εναλλακτικές ενός σεναρίου,έτσι μπορούν να συμπεριληφθούν σε αυτή διακλαδώσεις, συνθήκες κι επαναλήψεις. ä Το ä Το μήνυμα (message) (message) είναι ένας τρόπος επικοινωνίας ανάμεσα στα αντικείμενα, που μεταφέρει πληροφορίες με την προσδοκία ότι θα ληφθεί κάποια ενέργεια.Μπορεί να είναι σύγχρονο, ασύγχρονο ή απλό. ä Όταν ä Όταν λαμβάνεται κάποιο μήνυμα, αρχίζει μια δραστηριότητα δραστηριότητα στο λαμβανόμενο αντικείμενο.Αυτό οναμάζεται ενεργοποίηση (activation)
:Υπολογιστής :Serverεκτυπωτ. :Εκτυπωτής Εκτύπωση(αρχ.) [όχι ουρά] εκτυπ.(αρχείου) Εκτύπωση(αρχείου) Απλό μήνυμα Δραστηριοποίηση Σύγχρονο μήνυμα Γραμμή ζωής (lifeline) Επιστροφή Αντικείμενο Συνθήκη φύλαξης Συνθήκη φύλαξης ΤΙ ΠΑΡΙΣΤΑΝΕΙ ΚΑΘΕ ΙΔΙΑΙΤΕΡΟ ΣΧΗΜΑ ΣΕ ΕΝΑ ΑΚΟΛΟΥΘΙΑΚΟ ΔΙΑΓΡΑΜΜΑ
:Υπολογιστής :Serverεκτυπ. :Εκτυπωτής :Ουρά Εκτύπωση(αρχ.) [Εκτυπ,ελευθερος] εκτυπ (αρχείου). Εκτυπ.απασχολημ Αποθ.αρχείου Παράδειγμα ακολουθιακού διαγράμματος (sequence diagram). Περιγραφή εναλλακτικών καταστάσεων σε ακολουθιακό διάγραμμα
Ετικέτες που προσδιορίζουν κάποιους περιορισμούς :Yπολογιστής :Serverεκτυπωτ :Serverεκτυπωτ :Εκτυπωτής Εκτύπωση(αρχείου) a { b-a < 5 sec} b { b’-b <1 sec} b’ b’ Εκτυπ (αρχείου) Εκτυπ.αρχείου Οι ετικέτες χρησιμοποιούνται για να προσδιορίσουν περιορισμούς σχετικά με τον χρόνο. Η χρονική διάρκεια ανάμεσα στο a και το b δεν πρέπει να είναι μεγαλύτερη από 5 sec. To μήνυμα Εκτύπωση από τον Serverεκτυπωτή θα πρέπει να ληφθεί εντός ενός δευτερολέπτου.Οι περιορισμοί φαίνονται μέσα σε άγκιστρα.
C1:C D1:DD2:D op1( ) op1( ) Op2( ) Op3( ) Στείλε το μήνυμα op2 μέχρι... Ετικέτες που προσδιορίζουν επανάληψη (διακοπή της με κάποια συνθήκη)
Δημιουργία αντικειμένων :CustomerWindow :Customer NewCustomer(Data) Customer(Data) Ένα αντικείμενο μπορεί να δημιουργήσει κάποιο άλλο αντικείμενο μέσω ενός μηνύματος. Το αντικείμενο τοποθετείται ακριβώς τη χρονική στιγμή που δημιουργείται (στον κάθετο άξονα του χρόνου).Το μήνυμα δημιουργίας ενός αντικειμένου είναι ένα σύγχρονο μήνυμα
ΚΑΤΑΣΤΡΟΦΗ ΑΝΤΙΚΕΙΜΕΝΟΥ :CustomerWindow:Customer RemoveCustomer() DeleteCustomer( ) X X Όταν ένα αντικείμενο καταστρέφεται, μαρκάρεται με ένα μεγάλο Χ. Επίσης διαγράφεται η γραμμή ζωής (lifeline) (lifeline) από το σημείο καταστροφής του αντικειμένου κι έπειτα.
Object name :class Oper( ) H λειτουργία oper ( ) καλεί τον εαυτό της..Πρέπει να υπάρχει μια συνθήκη στην λειτουργία που διακόπτει την αναδρομή ΑΝΑΔΡΟΜΗ (RECURSION) Oper()
Διαγράμματα συνεργασίας Collaboration diagrams
Διάγραμμα συνεργασίας (collaboration diagram) - Γενικά χαρακτηριστικά Το Το διάγραμμα συνεργασίας εστιάζει σε θέματα χώρου χώρου σε αντίθεση με το διάγραμμα ακολουθίας που εστιάζει σε θέματα χρόνου. Δείχνει Δείχνει τα αντικείμενα και τους μεταξύ τους συνδέσμους καθώς επίσης και τα τα μηνύματα που στέλνονται ανάμεσα στα συνδεδεμένα αντικείμενα. Τα Τα μηνύματα συνοδεύονται κι από από ετικέτες ετικέτες που προσδιορίζουν μεταξύ άλλων και τον ακολουθιακό αριθμό του μηνύματος. Αρχικοποιείται Αρχικοποιείται με ένα μήνυμα μήνυμα όπως η κλήση μιας συνάρτησης.
:Υπολογιστής :Serverεκτυπωτ. :Εκτυπωτής Εκτύπωση(αρχείου) 1: εκτύπωση(αρχείου) [εκτυπωτ.ελεύθερος] 1.1: εκτύπωση (αρχείου) Παράδειγμα διαγράμματος συνεργασίας (collaboration diagram) O actor στέλνει ένα μήνυμα εκτύπωσης στον υπολογιστή.Ο υπολογιστής στέλνει ένα μήνυμα εκτύπωσης στον server του εκτυπωτή.Ο server του εκτυπωτή στέλνει ένα μήνυμα εκτύπωσης στον server του εκτυπωτή.Ο server του εκτυπωτή στέλνει μήνυμα εκτύπωσης στον εκτυπωτή αν αυτός είναι ελεύθερος. μήνυμα εκτύπωσης στον εκτυπωτή αν αυτός είναι ελεύθερος.
ΡΟΗ ΜΗΝΥΜΑΤΩΝ ΣΥΝΤΑΞΗ ΕΤΙΚΕΤΩΝ ΤΟΥ ΜΗΝΥΜΑΤΟΣ Σύνταξη ετικέτας μηνύματος προκάτοχος συνθήκη-φύλαξης έκφραση-ακολουθίας επιστρεφόμενη τιμή := προκάτοχος συνθήκη-φύλαξης έκφραση-ακολουθίας επιστρεφόμενη τιμή := υπογραφόμενη τιμή υπογραφόμενη τιμή predecessor guard-condition sequence-expression return-value:=signature predecessor guard-condition sequence-expression return-value:=signature Σύνταξη προκατόχου αριθμός-ακολουθίας ‘, ’ … ‘/’ αριθμός-ακολουθίας ‘, ’ … ‘/’ Σύνταξη συνθήκης φύλαξης ‘ [ ‘ συνθήκη ‘ ] ‘ ‘ [ ‘ συνθήκη ‘ ] ‘ Σύνταξη έκφραση ακολουθίας [ακέραιος | όνομα ] [αναδρομή] ‘: ‘ [ακέραιος | όνομα ] [αναδρομή] ‘: ‘ Σύνταξη αναδρομής ‘* ‘ ‘[ ‘ συνθήκη επανάληψης ‘] ‘ ‘* ‘ ‘[ ‘ συνθήκη επανάληψης ‘] ‘ ‘[ ‘ συνθήκη ‘ ] ‘ ‘[ ‘ συνθήκη ‘ ] ‘
:Calculator :Prim module Calcprim (n) 1* [z:=1..n] :prim :=nextPrim(prim) επανάληψη Επιστρεφόμενη τιμή τιμή Τρόπος αναπαράστασης επανάληψης κι επιστρεφόμενης τιμής σε ένα collaboration diagram
Σύνδεσμοι (Links) Ρόλοι αντικειμένων στους συνδέσμους u Σφαιρικός u Σφαιρικός (global) (global) : προσδιορίζει ότι το αντίστοιχο στιγμιότυπο είναι ορατό σε ολόκληρο το σύστημα u Τοπικός u Τοπικός (local) (local) : το στιγμιότυπο είναι ορατό επειδή είναι μια τοπική μεταβλητή μεταβλητή στη συνάρτηση u Παραμετρικός u Παραμετρικός (parameter) (parameter) : το αντίστοιχο στιγμιότυπο είναι ορατό επειδή αποτελεί την παράμετρο παράμετρο μιας συνάρτησης. u Ατομικός u Ατομικός (self) (self) : ο περιορισμός αυτός προσδιορίζει ότι ένα αντικείμενο μπορεί να στείλει κάποιο μήνυμα και στον εαυτό του u Από u Από ψηφοφορία (vote) (vote) : αυτή προσδιορίζει ότι η επιστρεφόμενη τιμή επιλέγεται επιλέγεται ανάμεσα από μια συλλογή μηνυμάτων επιστροφής, λόγω πλειοψηφίας. u Εκπομπή u Εκπομπή (broadcast) (broadcast) : προσδιορίζει ότι το σύνολο των μηνυμάτων ενεργοποιούνται σε τυχαία τυχαία σειρά.
Η ζωή ενός αντικειμένου (lifetime of an object) Δημιουργία ενός αντικειμένου σ’ένα διάγραμμα συνεργασίας. :Elevator control :Order(new) :Button :Queue :Elevator 2:nextjob=Getjob() {local} nextjob {parameter} job 1.2:Create() Push() 1:Getelevator(floorid) 1:Getelevator(floorid) 1.1 [all queues] : len:=Length() {broadcast} 1.3 : invoke (job) Ένα διάγραμμα συνεργασίας όπου κάποιος actor πατάει ένα κουμπί για να φέρει τον ανελκυστήρα στον όροφό του.Το αντικείμενο elevator control ελέγχει το μήκος όλων των ουρών εργασίας του ανελκυστήρα κι επιλέγει τη μικρότερη..Μετά δημιουργεί ένα καινούριο job order αντικείμενο και το ανακαλεί με το να το βάλει στην ουρά. Η δήλωση new δηλώνει την δημιουργία ενός αντικειμένου. To αντικείμενο elevator τρέχει συγχρόνως καί παίρνει jobs από τις ουρές. O elevator είναι ένα active object, δηλαδή εκτελείται συγχρόνως με το δικό του thread of control. job
:MainWindow :Customer{new} :Customer{new} : CustomerWindow {transient} NewCustomer() [free memory] 1:Create() 3:show(Customer) 2:Create( ) 3.1:update(data) {parameter} To αντικείμενο Main Window λαμβάνει το μήνυμα NewCustomer και δημιουργεί τα αντικείμενο Customer. To CustomerWindow δημιουργείται και το αντικείμενο Customer περνιέται στο CustomerWindow, το οποίο επιτρέπει ή όχι την ενημέρωση των δεδομένων του πελάτη του πελάτη ΖΩΗ ΕΝOΣ ΑΝΤΙΚΕΙΜΕΝΟΥ Προσωρινά αντικείμενα - transient: δημιουργούνται και καταστρέφονται στο ίδιο collaboration διάγραμμα.
Διαγράμματα Δραστηριοτήτων Activity Diagrams
Διάγραμμα δραστηριοτήτων: Στόχοι u Η u Η καταγραφή των ενεργειών που εφαρμόζονται κατά την εκτέλεση μιας λειτουργίας λειτουργίας (στιγμιότυπο της υλοποίησης της λειτουργίας) u Περιγραφή u Περιγραφή της εσωτερικής λειτουργίας λειτουργίας ενός αντικειμένου u Περιγραφή u Περιγραφή συσχετιζόμενων ενεργειών ενεργειών που εφαρμόζονται, και πως αυτές επηρεάζουν τα γύρω αντικείμενά τους. u Υπόδειξη u Υπόδειξη του τρόπου που ένα στιγμιότυπο κάποιου use-case μπορεί να εφαρμοστεί στο πλαίσιο των αλλαγών της κατάστασης του αντικειμένου. u Αναφορά u Αναφορά στο πώς μια επιχείρηση λειτουργεί λειτουργεί (εργαζόμενοι,ροή εργασιών,οργάνωση και αντικείμενα)
ShowMessageBox “Printing” on Screen Create postsscript file Send Postcript file to printer Remove MessageBox CustomerWindow.PrintAllCustomers() Όταν κάποιος καλεί την συνάρτηση εκτύπωση( ), τότε αρχίζουν οι διάφορες ενέργειες. Η πρώτη ενέργεια είναι η εμφάνιση μηνύματος στην οθόνη,ενώ η δεύτερη η δημιουργία κάποιου αρχείου.Τρίτη ενέργεια η αποστολή αρχείου στον εκτυπωτή και τέταρτη η εξαφάνιση των κουτιών μηνυμάτων. Ενέργεια (Action) Σημείο έναρξης Σημείο λήξης Ενέργειες και μεταβάσεις (Actions and transitions) Μετάβαση
Παράδειγμα μετάβασης μεταξύ καταστάσεων Οι μεταβάσεις ανάμεσα στις καταστάσεις μπορούν να παρασταθούν με βέλη τα οποία πιθανώς να συνοδεύονται από κάποιες συνθήκες φύλαξης (guard-condition), όροι αποστολής (send-clause) κτλ. CustomerWindow.PrintAllCustomer () Show MessageBox «Printing on screen» Create postscript file ^Printer.Print(file) RemoveMessageBox
Εμφάνισε μύνημα «Δίσκος γεμάτος» Εμφάνισε μύνημα «Εκτύπωση» στην οθόνη Δημιουργησε postscript αρχείο Μετακίνησε κουτιά μηνυμάτων [ Δίσκος γεμάτος ] [ Ελεύθερος χώρος δίσκου ] ΠαράθυροΠελάτη.Εκτύπωση ( ) ^Εκτυπωτής.Εκτύπωση() Μετάβαση καταστάσεων μέσω κάποιων συνθηκών φύλαξης Ο ρόμβος φανερώνει ότι ακολουθεί κάποια διακλάδωση.Ανάλογα λοιπόν αν ισχύει ή όχι κάποια συνθήκη έπεται η αντίστοιχη ενέργεια
Initiate UpdatingdisplayerMeasuring Sampler.Run(channerl, frequency) Η έντονη γραμμή φανερώνει ότι οι ενέργειες που ακολουθούν εκτελούνται παράλληλα. Επίσης υποδηλώνουν την ενοποίηση των διακλαδιζόμενων ενεργειών.
Updatingdisplayer Initiate Μeasuring Displayer Sampler Sampler.run(channel, freq.) Το swimlane δείχνει που εφαρμόζονται οι διάφορες ενέργειες, δηλ. σε ποιο αντικείμενο ή σε ποιο κομμάτι της οργάνωσης
Οθόνη Δειγματολήπτης Aντικείμενα στο διάγραμμα δραστηριοτήτων Sampler.Run (channel,frequency) Initiate Measuring MeasuredvalueUpdatingdisplayer Αντικείμενο, που χρησιμεύει σαν είσοδος στην Updating Displayer και σαν έξοδος Αντικείμενο, που χρησιμεύει σαν είσοδος στην Updating Displayer και σαν έξοδος measuring
CustomerWindow.PrintAllCustomers ( ) Μυνήματα στα διαγράμματα δραστηριοτήτων aPrinter:Printer Print Print (file) ShowMessageBox ‘Printing’ on screen Create postcript file Print (file) RemoveMessageBox
Περίληψη (1/3) ä Όλα τα συστήματα έχουν στατική δομή καί δυναμική συμπεριφορά ä Η στατική δομή περιγράφεται με κλάσεις, συσχετίσεις, αντικείμενα καί συστατικά ä Η συμπεριφορά περιγράφει πώς αλληλεπιδρούν στο χρόνο τα συστατικά της στατικής δομής ä Η UML παρέχει 4 διαγράμματα γιά τη μοντελοποίηση της δυναμικής συμπεριφοράς, καθένα από τα οποία εξυπηρετεί διαφορετικό σκοπό ä διαγράμματα καταστάσεων, ακολουθίας, συνεργασίας καί δραστηριοτήτων
Περίληψη (2/3) ä Τα διαγράμματα κατάστασης περιγράφουν τη συμπεριφορά καί τις εσωτερικές καταστάσεις μιάς κλάσης ή ενός συστήματος ή υποσυστήματος. Εστιάζουν στο πώς τα αντικείμενα αλλάζουν καταστάσεις στο χρόνο ανάλογα με το τί συμβαίνει: γεγονότα, συμπεριφορά καί δραστηριότητες μέσα στις καταστάσεις, καί μεταβάσεις. Ένα γεγονός μπορεί να είναι η επαλήθευση μιάς συνθήκης, η λήψη ενός μυνήματος ή απλά η πάροδος του χρόνου. ä Τα διαγράμματα ακολουθίας περιγράφουν πώς ένα σύνολο από αντικείμενα αλληλεπιδρούν μεταξύ τους βάσει ενός συγκεκριμένου σεναρίου. Εστιάζουν στη διαδοχή των μυνημάτων που στέλνονται καί λαμβάνονται μεταξύ των αντικειμένων. Έχουν δύο άξονες: τον κάθετο άξονα που δείχνει το χρόνο καί τον οριζόντιο άξονα που δείχνει τα αντικείμενα που εμπλέκονται στο σενάριο. Η βασική εστίαση των διαγραμμάτων ακολουθίας είναι ο χρόνος.
Περίληψη (3/3) ä Τα διαγράμματα συνεργασίας περιγράφουν πώς αλληλεπιδρούν τα αντικείμενα στο χώρο, δηλαδή, εκτός από τη δυναμική τους αλληλεπίδραση, το διάγραμμα δείχνει καί πώς συνδέονται μεταξύ τους τα αντικείμενα. Δεν υπάρχει άξονας χρόνου. Τα μυνήματα αριθμούνται ακολουθιακά. ä Τα διαγράμματα δραστηριοτήτων περιγράφουν πώς γίνονται οι διάφορες δουλειές που πρέπει να εκτελεστούν. Χρησιμοποιούνται γιά να περιγράψουν λειτουργίες, κλάσεις, use cases, καθώς επίσης καί γιά να δείξουν ροή εργασίας. Μπορούν επίσης να χρησιμοποιηθούν γιά να μοντελοποιήσουν επιχειρησιακές διαδικασίες με εργαζόμενους καί οργανωτικές δομές.