Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 28/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Σχετικά έγγραφα
Interaction Diagrams Διαγράμματα Αλληλεπίδρασης

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Διαγράμματα UML στην Ανάλυση. Μέρος Γ Διαγράμματα Επικοινωνίας Διαγράμματα Ακολουθίας Διαγράμματα Μηχανής Καταστάσεων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Διαγράμματα Αλληλεπίδρασης. Διαγράμματα Ακολουθίας Διαγράμματα Συνεργασίας

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Αλληλεπίδρασης. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ιαγράµµατα Αλληλεπίδρασης ιαγράµµατα Ακολουθίας ιαγράµµατα Επικοινωνίας

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

Φροντιστήριο 5. Ημερομηνία: 01/12/2006 Θεματική Ενότητα: Μοντελοποίηση Συμπεριφοράς Θέμα: Διαγράμματα αλληλεπίδρασης και καταστάσεων

Τεχνολογία Λογισμικού. Ενότητα 1: Εισαγωγή στην UML Καθηγητής Εφαρμογών Ηλίας Γουνόπουλος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ιαγράµµατα Συµπεριφοράς Ανάλυση Συστηµάτων 2009

Τα διαγράµµατα ακολουθίας

UML: Unified modelling language

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Διαγράμματα Συνεργασίας. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

. Μεθοδολογία Προγραμματισμού. UML Διαγράμματα. Νικόλαος Πεταλίδης. Εισαγωγή Εαρινό Εξάμηνο 2014

Μοντελοποίηση δεδομένων με UML Χρήση σε πολυμεσικές εφαρμογές

Περιεχόμενα και Διάρθρωση. Interaction Diagrams

09 Η γλώσσα UML II. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 8 ο & 9 ο Εργαστήριο -

Εισαγωγή στη γλώσσα UML

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 5/12/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

Διαχείριση Πληροφοριακών Συστημάτων

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 7 ο Εργαστήριο -

περιεχόμενα παρουσίασης Actors Σενάρια Περιεχόμενο περιπτώσεων χρήσης Πρότυπα περιπτώσεων χρήσης Διαγράμματα περιπτώσεων χρήσης

3 Αλληλεπίδραση Αντικειμένων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Εισαγωγή. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων 21/11/2016. Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια.

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

Περιεχόμενο του μαθήματος

4η ιάλεξη. UML ιαγράμματα αλληλεπίδρασης

Διαγράμματα Κλάσεων στη Σχεδίαση

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Ανάλυση Περιπτώσεων Χρήσης

Μέθοδοι μοντελοποίησης

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Τεχνολογία Λογισμικού

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Εννοιολογικό Μοντέλο. Conceptual Model

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΑΝΑΛΥΣΗ Επιχειρηματική Μοντελοποίηση. Ιωάννης Σταμέλος Βάιος Κολοφωτιάς Πληροφορική

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Περιεχόμενο του μαθήματος

... Unified Modeling Language (UML) UML UML. Μοντελοποίηση? Μοντελοποίηση. Πλεονεκτήµατα ενός µοντέλου. Μεγάλα Έργα Λογισµικού = επικοινωνία

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων - 4 ο Εργαστήριο -

Η κατασκευή αντικειμένων της κλάσης Student μπορεί να πραγματοποιηθεί είτε στη main είτε σε οποιαδήποτε μέθοδο κλάσης:

Περιεχόμενα. ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στη UML... 19

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

ΟΔΗΓΙΕΣ ΓΙΑ ΧΡΗΣΗ ΤΟΥ ΕΡΓΑΛΕΙΟΥ RATIONAL ROSE

Πληροφορική 2. Αλγόριθμοι

Use Cases: μια σύντομη εισαγωγή. Heavily based on UML & the UP by Arlow and Neustadt, Addison Wesley, 2002

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εφαρμογή Μεθοδολογίας ICONIX

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Διαγράμματα περιπτώσεων χρήσης

Ανάλυση Πληροφοριακών Συστημάτων. «Βασικές Έννοιες Αντικειμενοστρεφούς Προγραμματισμού Διαγράμματα κλάσεων» Βασίλειος Καρακόιδας

Τεχνολογία Λογισμικού

Σημειογραφία των προτύπων BPMN και UML (Activity Diagrams)

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Διάγραμμα Κλάσεων. Class Diagram

ΑΝΑΛΥΣΗ ΑΠΑΙΤΗΣΕΩΝ ανάλυση απαιτήσεων Σε αυτό το μάθημα θα ασχοληθούμε με : Δημιουργία μοντέλων

περιεχόμενα παρουσίασης

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 7: Διαγράμματα Καταστάσεων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

Π2.1 - Σχεδιασμός Πλατφόρμας Παραδοτέο έργου

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Κεφάλαιο 2ο. Κατανοώντας την αντικειμενοστρέφεια

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

ΕΚΦΩΝΗΣΗ ΥΠΟΧΡΕΩΤΙΚΗΣ ΕΡΓΑΣΙΑΣ σε UML

Ψευδοκώδικας. November 7, 2011

UML

Αντικειμενοστρεφής Προγραμματισμός

Τεχνολογία Λογισμικού & Ανάλυση Συστημάτων

PDF created with pdffactory Pro trial version

Έγγραφο Περιγραφής Απαιτήσεων Λογισμικού

Χάρτες Ακολουθίας Μηνυμάτων Message Sequence Charts - MSC

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Περίπτωση Χρήσης Use case

Κλάσεις και αντικείμενα #include <iostream.h<

Λογισµικό (Software SW) Γλώσσες

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 2: Βασικές Αρχές Αντικειμενοστραφούς Σχεδίασης Συστημάτων και Εφαρμογών (2ο Μέρος)

ΕΝ ΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ. Άσκηση 1 Εφαρµογή Web

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Εισαγωγή στον Προγραμματισμό

Transcript:

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων 28/11/2016 Τεχνολογία Λογισμικού & Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Ανάλυση Συστημάτων

Interaction Diagrams Διαγράμματα Αλληλεπίδρασης

Διαγράμματα UML Διάγραμμα περιπτώσεων χρήσης (use case diagram) Διάγραμμα δραστηριοτήτων (activity diagram) Διάγραμμα κλάσεων (class diagram) Διάγραμμα αντικειμένων (object diagram) Διαγράμματα αλληλεπίδρασης (interaction diagrams) Διάγραμμα ακολουθίας (sequence diagram) Διάγραμμα επικοινωνίας (communication diagram) Διάγραμμα καταστάσεων (state diagram) Διαγράμματα υλοποίησης (physical diagrams) Διάγραμμα συστατικών (component diagram) Διάγραμμα ανάπτυξης (deployment diagram)

Άξονες Μοντελοποίησης Λειτουργικότητα functionality Τι κάνει το σύστημα; Ποιες λειτουργίες υποστηρίζει; Ανάλυση απαιτήσεων Περιγραφές από κείμενο Στατικά διαγράμματα Πώς είναι οργανωμένα τα συστατικά του τμήματα; Δυναμική συμπεριφορά Πώς ανταποκρίνεται και από ποιες καταστάσεις περνάει; Δομή structure Συμπεριφορά behaviour

Κατηγοριοποίηση Διαγραμμάτων UML 2.0

Μοντελοποίηση με τη γλώσσα UML Περιγραφή Λειτουργίας από την πλευρά του χρήστη Στατική δομή Δυναμικά χαρακτηριστικά - Συμπεριφορά Μοντελοποίηση Απαιτήσεων Μοντελοποίηση στατικής δομής του συστήματος Μοντελοποίηση δυναμικών χαρακτηριστικών του συστήματος Μοντελοποίηση της συμπεριφοράς συγκεκριμένων αντικειμένων Μοντελοποίηση των βημάτων εκτέλεσης μιας διαδικασίας Σενάρια, Διαγράμματα περιπτώσεων χρήσης (Scenaria, Use Case Diagrams) Διαγράμματα Κλάσεων (Class Diagrams) Διαγράμματα Αντικειμένων (Object Diagrams) Διαγράμματα Συστατικών (Component Diagrams) Διαγράμματα Ανάπτυξης (Deployment Diagrams) Διαγράμματα Ακολουθίας (Sequence Diagrams) Διαγράμματα Επικοινωνίας (Collaboration Diagrams Communication Diagrams στη UML 2.0) Διαγράμματα Κατάστασης (State Machine Diagrams) Διαγράμματα Δραστηριότητας (Activity Diagrams)

Δυναμικά Μοντέλα Τα δυναμικά μοντέλα απεικονίζουν τη δυναμική συμπεριφορά του συστήματος, πχ πώς αποκρίνεται στις ενέργειες των χρηστών ή σε άλλα εξωτερικά ερεθίσματα και πώς διαμορφώνεται η εσωτερική του κατάσταση κατά τη λειτουργία του. Απεικονίζουν την αλληλεπίδραση μεταξύ αντικειμένων Κατά την ανάπτυξη του δυναμικού μοντέλου ενδέχεται να προκύψουν βελτιώσεις της στατικής δομής

Δυναμικά μοντέλα Παρουσιάζουν τον τρόπο με τον οποίο πολλά αντικείμενα ή ομάδες αντικειμένων συνεργάζονται και αλληλεπιδρούν μεταξύ τους σε μια περίπτωση χρήσης για την ολοκλήρωση μιας εργασίας Χρησιμοποιούνται και στη φάση της ανάλυσης του συστήματος λογισμικού και στη φάση της σχεδίασης Αφορούν συμπεριφορά! Τι εξυπηρετεί όμως η μοντελοποίηση της συμπεριφοράς? Για να δείξουμε τα μηνύματα που ανταλλάσσονται μεταξύ των αντικειμένων στα πλαίσια μιας περίπτωσης Χρήσης και τη σειρά αυτών Πώς επικοινωνούν τα αντικείμενα ενός μοντέλου; Παρατήρηση: Αν μοντελοποιήσουμε τη συμπεριφορά λεπτομερειακά, είναι σαν να υλοποιούμε το σύστημα! Άρα πρέπει να εστιάζουμε στα σημαντικά σημεία (the key aspects)

Δυναμικά μοντέλα Παράδειγμα... Πώς υπολογίζεται η τιμή της παραγγελίας?

Δυναμικά μοντέλα Συνήθως σε ένα αντικειμενοστρεφές σύστημα, χρησιμοποιούμε τους εξής τύπους μοντέλων για να μοντελοποιήσουμε τη συμπεριφορά: Διάγραμμα καταστάσεων (state diagram) Διαγράμματα αλληλεπίδρασης (interaction diagrams) Διάγραμμα ακολουθίας (sequence diagram) Διάγραμμα επικοινωνίας (communication diagram) Τα διαγράμματα αλληλεπίδρασης περιέχουν και απεικονίζουν την ίδια πληροφορία που καθορίζεται από την αλληλεπίδραση και είναι συμπληρωματικά. Έχουν διαφορετική μορφή δίνοντας έμφαση σε διαφορετική οπτική γωνία και όψη της αλληλεπίδρασης (σε πολλά εργαλεία το ένα είδος διαγράμματος παράγεται αυτόματα από το άλλο)

Διαγράμματα αλληλεπίδρασης Τα διαγράμματα αλληλεπίδρασης περιγράφουν τον τρόπο με τον οποίο μια ομάδα αντικειμένων συνεργάζεται Ένα διάγραμμα συνήθως περιγράφει τη συμπεριφορά σε μια Περίπτωση Χρήσης. Δείχνει παραδείγματα αντικειμένων που εμπλέκονται και τα μηνύματα που ανταλλάσσονται μεταξύ τους κατά τη διάρκεια της Περίπτωσης Χρήσης. Use Case 3 Interaction Diagrams

Διαγράμματα αλληλεπίδρασης Αλληλεπίδραση (interaction): το σύνολο των μηνυμάτων που ανταλλάσσονται μεταξύ των αντικειμένων Μήνυμα: μονόδρομη επικοινωνία μεταξύ δύο αντικειμένων ροή ελέγχου με πληροφορία από αποστολέα προς αποδέκτη Ένα μήνυμα μπορεί να έχει παραμέτρους μεταφέροντας τιμές μεταξύ των αντικειμένων Η ακολουθία των μηνυμάτων παρουσιάζεται: είτε με διαγράμματα ακολουθίας που εστιάζουν στη χρονική ακολουθία των μηνυμάτων είτε με διαγράμματα επικοινωνίας που εστιάζουν στις σχέσεις μεταξύ των αντικειμένων που ανταλλάσσουν μηνύματα

Διαγράμματα αλληλεπίδρασης Η διαδικασία απεικόνισης της συνεργασίας των αντικειμένων του συστήματος μέσω των αλληλεπιδράσεων είναι σημαντική: μέσω αυτής προκύπτουν οι λειτουργίες που πρέπει να υποστηρίζουν τα αντικείμενα του συστήματος ή ακόμα και τα ίδια τα αντικείμενα και οι κλάσεις

Διαγράμματα Αλληλεπίδρασης Διάγραμμα ακολουθίας (Sequence Diagram) Αναπαριστά τη χρονική σειρά εκτέλεσης των γεγονότων που λαμβάνουν χώρα κατά τη διάρκεια της αλληλεπίδρασης δίνει επομένως έμφαση στη χρονική ακολουθία μηνυμάτων! Κάθετη διάσταση (vertical dimension) (χρόνος) και Οριζόντια διάσταση (horizontal dimension) (διαφορετικά αντικείμενα)

Διαγράμματα Αλληλεπίδρασης Διάγραμμα επικοινωνίας (Communication Diagram) Αναπαριστά και τις σχέσεις μεταξύ των αντικειμένων. Καλό για την κατανόηση των επιπτώσεων σε ένα στιγμιότυπο/αντικείμενο Το διάγραμμα επικοινωνίας απαιτεί λιγότερο σχεδιαστικό χώρο μια και η διάταξη των αντικειμένων είναι ελεύθερη στο χώρο και επομένως προτιμάται όταν έχουμε πολλά αντικείμενα σε μία αλληλεπίδραση ή όταν σχεδιάζουμε ένα διάγραμμα με το χέρι

Διαγράμματα Αλληλεπίδρασης Διάγραμμα ακολουθίας (Sequence Diagram) δεν αναπαριστά τις σχέσεις μεταξύ των αντικειμένων αλλά μόνο τον τρόπο αλληλεπίδρασής τους Διάγραμμα επικοινωνίας (Communication Diagram) αναπαριστά τα αντικείμενα και τις σχέσεις μεταξύ τους ανεξάρτητα από την αλληλεπίδρασή τους

Διάγραμμα Ακολουθίας Απεικονίζει τη σειρά των ενεργειών ενός σεναρίου στον άξονα του χρόνου Εξηγεί ποιος δράστης εκκινεί μια ενέργεια και με ποιον δράστη συνεργάζεται ΟΧΙ εναλλακτικές πορείες ΜΟΝΟ η κύρια ροή προς την επιτυχημένη κατάληξη

Διάγραμμα ακολουθίας Σε κάθε αντικείμενο αντιστοιχεί μία κάθετη γραμμή που ονομάζεται γραμμή ζωής (lifeline). Για όσο χρόνο ένα αντικείμενο υφίσταται, η γραμμή αυτή είναι διακεκομμένη ενώ για όσο χρόνο μία διαδικασία του εν λόγω αντικειμένου είναι ενεργή, η γραμμή ζωής σχεδιάζεται ως μία διπλή γραμμή (με activation box). Ένα μήνυμα συμβολίζεται ως μία ακμή από τη γραμμή ζωής ενός αντικειμένου προς τη γραμμή ζωής ενός άλλου. Η θέση των ακμών αντιστοιχεί στην τοποθέτησή τους σε σχέση με τον χρόνο (μία ακμή χαμηλότερα από μία άλλη αντιστοιχεί σε μεταγενέστερο χρόνο) Απαντήσεις σε μηνύματα υποδηλώνονται ως οριζόντιες διακεκομμένες ακμές Τα αντικείμενα γράφονται από αριστερά προς τα δεξιά και στον οριζόντιο άξονα Τα αντικείμενα ανταλλάσσουν μηνύματα Οριζόντια γραμμή: δείχνει τα αντικείμενα ως κουτιά Κατακόρυφη γραμμή: χρόνος (αυξάνει προς τα κάτω) Activation box: δείχνει πότε το αντικείμενο είναι ενεργό (στη μνήμη) Μηνύματα: μεταξύ των activation boxes δύο αντικειμένων

Στοιχεία διαγραμμάτων ακολουθίας Στοιχείο Περιγραφή Συμβολισμός αντικείμενο Πλαίσιο Ενεργοποίησης Αποστολή Μηνύματος Ένα αντικείμενο αναπαρίσταται με ένα ορθογώνιο στο οποίο αναγράφεται το όνομα του αντικειμένου στη συνέχεια μία άνω κάτω τελεία και ακολουθεί το όνομα της κλάσης στην οποία ανήκει. Κάτω από κάθε αντικείμενο εκτείνεται μια διακεκομμένη γραμμή που αντιστοιχεί στη γραμμή ζωής του αντικειμένου. Όταν λαμβάνεται ένα μήνυμα ξεκινά ένα πλαίσιο ενεργοποίησης (διπλή γραμμή) το οποίο αντιστοιχεί στη διάρκεια εκτέλεσης της λειτουργίας εξυπηρέτησης του μηνύματος. Μία προσανατολισμένη ακμή από το αντικείμενο που αποστέλλει το μήνυμα προς το αντικείμενο που είναι αποδέκτης. Υλοποιείται με μία λειτουργία στην κλάση του αντικειμένου που είναι αποδέκτης του μηνύματος. Στο παράδειγμα η τάξη Department θα πρέπει να έχει μία μέθοδο με όνομα getcustomer( ). Αν η αποστολή του μηνύματος γίνεται υπό συνθήκη, η συνθήκη μπαίνει σε αγκύλες πριν το όνομα του μηνύματος. Αν το μήνυμα αποστέλλεται επαναληπτικά, συμβολίζεται με ένα αστεράκι πριν το όνομα του μηνύματος. Bob : Employee Sales : Departm ent 1: getcusto mer( ) Sales : Department Sales : Department

Στοιχεία διαγραμμάτων ακολουθίας Επιστροφή Μηνύματος Μία διακεκομμένη ακμή που επιστρέφει από το κληθέν αντικείμενο σε αυτό που πραγματοποίηση την κλήση υποδηλώνοντας ολοκλήρωση της λειτουργίας εξυπηρέτησης ενός μηνύματος. (Προαιρετικό) PayForm : Form Αυτο-κλήση Αποστολή μηνύματος ενός αντικειμένου στον εαυτό του ή αλλιώς κλήση μιας μεθόδου του αντικειμένου από το ίδιο το αντικείμενο. 3: HighlightAm ount( ) Ασύγχρονο Μήνυμα Ένα ασύγχρονο μήνυμα δεν εμποδίζει το αντικείμενο που πραγματοποιεί την κλήση να συνεχίσει την όποια λειτουργία του χωρίς να αναμένει αν το μήνυμα λήφθηκε ή όχι. Συνεπώς, ένα ασύγχρονο μήνυμα δημιουργεί ένα νέο νήμα εκτέλεσης ή μπορεί να δημιουργήσει ένα νέο αντικείμενο. Accounting : Departm ent 1: create( ) Bob : Employee

Αντικείμενο Ονομασία αντικειμένου: συντακτικό: [instancename][:classname] Η ονομασία των κλάσεων θα πρέπει να είναι συνεπής με το class diagram (ίδιες κλάσεις). Πρέπει να περιλαμβάνουμε και instance names όταν αντικείμενα αναφέρονται σε μηνύματα ή όταν αρκετά αντικείμενα του ιδίου τύπου υπάρχουν στο διάγραμμα mybirthdy :Date

Σύγχρονες και Ασύγχρονες Κλήσεις Σύγχρονη κλήση Συμβολίζεται με «συμπαγή» αιχμή βέλους ή ολόκληρο βέλος Όταν ο καλών πραγματοποιεί μια σύγχρονη κλήση, πρέπει να περιμένει μέχρι αυτή να ολοκληρωθεί και μετά να συνεχίσει Ασύγχρονη κλήση Συμβολίζεται με «ανοιχτή» αιχμή βέλους ή μισό βέλος Αν ο καλών πραγματοποιήσει μια ασύγχρονη κλήση, μπορεί να συνεχίσει την επεξεργασία χωρίς να περιμένει την απόκριση επεξεργάζεται την απάντηση όταν και όποτε αυτή σταλεί Ασύγχρονες κλήσεις χρησιμοποιούνται για τη μοντελοποίηση πολυνηματικών (multithread) εφαρμογών

Διάγραμμα ακολουθίας F red : Student Fred : Φοιτητής : Πρόγραμμα Μ αθημάτων ΠλάνοFred : Πλάνο Σπο υδών ΑντίγραφοFred : Αντί γραφο OBJ101 : Τ άξη 1: Εισαγωγή 2: παρουσίαση προγράμματος 3: πρόγραμμα παρουσιάστηκε 4: αίτηση θέσης 5: έλεγξε πλάνο σπουδών 6: ΟΚ 7: έλεγξε προαπαιτούμεν α 8: ΟΚ 9: επιβεβαίωση διαθεσιμότητας 10: πρόσθεσε Μ άθημα 11: εκτύπωση μηνύματος επιβεβαίωσης

Διάγραμμα ακολουθίας Τα διαγράμματα ακολουθίας είναι εξαιρετικά χρήσιμα για τον εντοπισμό λειτουργιών στις διάφορες κλάσεις. Αν ένα αντικείμενο λαμβάνει ένα μήνυμα alpha, συνεπάγεται ότι η κλάση στην οποία ανήκει το εν λόγω αντικείμενο θα πρέπει να έχει μία μέθοδο με το ίδιο όνομα για να εξυπηρετεί τον αποστολέα Υπονοείται επίσης, ότι αφού δύο αντικείμενα επικοινωνούν μεταξύ τους μέσω μηνυμάτων, θα πρέπει να υπάρχει κάποιου είδους συσχέτιση μεταξύ τους που θα λειτουργεί ως δίαυλος επικοινωνίας Παράδειγμα αν ένα αντικείμενο Α στέλνει ένα μήνυμα ζητώντας κάποια λειτουργία από ένα αντικείμενο Β, το Α θα πρέπει με κάποιο τρόπο να γνωρίζει που να αποστείλει το μήνυμα. Αν αυτό συνεπάγεται την ύπαρξη μιας μονόδρομης συσχέτισης μεταξύ των αντίστοιχων κλάσεων, θα πρέπει κατά την υλοποίηση του συστήματος, στο συγκεκριμένο αντικείμενο Α να γνωστοποιηθεί η θέση του αντικειμένου Β

Γεγονότα Η αλληλεπίδραση μεταξύ αντικειμένων ενεργοποιείται από γεγονότα Γεγονός είναι οποιοδήποτε εξωτερικό ερέθισμα σε ένα αντικείμενo, που σηματοδοτείται ως λήψη ενός μηνύματος. Ένα γεγονός μπορεί να ενεργοποιείται από: εξωτερικούς χρήστες (click στο mouse) άλλα υπολογιστικά συστήματα (λήψη ενός email) άλλο αντικείμενο στο ίδιο σύστημα (αλυσιδωτή ενεργοπ.) την πάροδο του χρόνου Όταν ένα αντικείμενο ειδοποιηθεί για ένα γεγονός μέσω μηνύματος, μπορεί να: αλλάξει την κατάστασή του στείλει μήνυμα (γεγονός) σε άλλο αντικείμενο επιστρέψει μία τιμή αγνοήσει το γεγονός

Γεγονότα Όταν ένα αντικείμενο ειδοποιηθεί για ένα γεγονός μέσω μηνύματος, μπορεί να αλλάξει την κατάστασή του... class Professor { public: addstudent(student* s) {πρόσθεσε το s στο supervisedstudents;} private: std::list<student*> supervisedstudents; }; addstudent (&Joe) Professor Joe

Γεγονότα Όταν ένα αντικείμενο ειδοποιηθεί για ένα γεγονός μέσω μηνύματος, μπορεί να στείλει μήνυμα (γεγονός) σε άλλο αντικείμενο... class Section { public: addstudent(student* s) { στείλε μήνυμα στο course; } private: }; Course* course; addstudent (Joe) Professor enrollstudent (Joe) ένα άλλο αντικείμενο μπορεί να χειρίζεται την εκτύπωση ή την εμφάνιση στην οθόνη Math101 Κλασσικό παράδειγμα delegation (κατανομής αρμοδιοτήτων) όπου ένα αντικείμενo υποστηρίζει μία λειτουργία άλλου αντικειμένου

Γεγονότα Όταν ένα αντικείμενο ειδοποιηθεί για ένα γεγονός μέσω μηνύματος, μπορεί να επιστρέψει μία τιμή... class Section { public: whatisthecapacity() { επιστροφή τιμής capacity; } private: Course* course; int capacity; }; 25 whatisthecapacity Section1 Κλασσικό παράδειγμα get συναρτήσεων

Γεγονότα Όταν ένα αντικείμενο ειδοποιηθεί για ένα γεγονός μέσω μηνύματος, μπορεί να αγνοήσει το γεγονός... Παράδειγμα: Έστω ότι ο Καθηγητής λαμβάνει το μήνυμα Προσθήκη ενός Φοιτητή στους Επιβλεπόμενους. Αν ο φοιτητής είναι ήδη εγγεγραμμένος στη λίστα, το αντικείμενο Καθηγητής δεν θα κάνει τίποτα δηλαδή δεν θα αλλάξει κατάσταση, ούτε θα αποστείλει νέο μήνυμα

Διαγράμματα ακολουθίας Κατά τη μελέτη σεναρίων (ανάπτυξη διαγραμμάτων ακολουθίας) είναι πιθανό να προκύψουν νέες κλάσεις, ιδιότητες και σχέσεις και συνεπώς να τροποποιηθεί το στατικό μοντέλο. Κάτι τέτοιο συμβαίνει συχνά και είναι επιθυμητό Αν για παράδειγμα από τη μελέτη διαφόρων διαγραμμάτων ακολουθίας προκύπτει ότι δύο αντικείμενα αποκρίνονται με τον ίδιο τρόπο στα διάφορα δυνατά μηνύματα, τότε τα δύο αυτά αντικείμενα είτε θα ανήκουν στην ίδια κλάση είτε θα ανήκουν σε κλάσεις που συνδέονται με σχέση κληρονομικότητας. Υπό αυτή την έννοια, η επαναληπτική εξέταση διαγραμμάτων ακολουθίας και διαγραμμάτων κλάσεων οδηγεί στην ανάπτυξη του τελικού συστήματος, πολύ πριν αρχίσει η φάση της κωδικοποίησης. Θα πρέπει να γίνει κατανοητό, ότι αυτή η επαναληπτική διαδικασία στη φάση της ανάλυσης βρίσκεται στο επίκεντρο της αντικειμενοστρεφούς μεθοδολογίας για την ανάπτυξη συστημάτων

Χρήση διαγραμμάτων ακολουθίας για τον καθορισμό μεθόδων Αυτο-κλήσεις υποδηλώνουν λειτουργίες που το αντικείμενο πραγματοποιεί στον εαυτό του: είτε ιδιωτικές μεθόδους είτε δημόσια διαθέσιμες μεθόδους που μπορούν να χρησιμοποιήσουν και άλλα αντικείμενα Η εξέταση όλων των διαγραμμάτων ακολουθίας (σεναρίων) θα αποκαλύψει τις περισσότερες λειτουργίες/μεθόδους του συστήματος Ωστόσο, κάποιες από τις μεθόδους δεν θα έρθουν στην επιφάνεια μέχρι την υλοποίηση του συστήματος. ΑΝΑΜΕΝΟΜΕΝΟ!

Παράδειγμα διαγράμματος ακολουθίας συμμετέχων γραμμή ζωής επιστροφή μήνυμα αυτο-κλήση πλαίσιο ενεργοποίησης

Τύποι μηνυμάτων Call: κλήση μιας λειτουργίας (Invocation of an operation) Ένα αντικείμενο μπορεί να στείλει ένα μήνυμα στον εαυτό του (local invocation of an operation) Return: επιστρέφει μια τιμή στον καλούντα (returns a value to the caller) Send: στέλνει ένα σήμα (signal) σε ένα αντικείμενο Create: δημιουργεί ένα αντικείμενο Destroy: καταστρέφει ένα αντικείμενο

Απεικόνιση μηνυμάτων Ένα βέλος μεταξύ των κατακόρυφων γραμμών δυο αντικειμένων Το βέλος συνοδεύεται από όνομα μηνύματος (π.χ. όνομα της καλούμενης λειτουργίας) Πιθανά ορίσματα (possible arguments) Πληροφορίες ελέγχου (control info) condition: δείχνει το πότε το μήνυμα στέλνεται, π.χ. [outofstock] iteration marker: δείχνει ότι το μήνυμα στέλνεται πολλές φορές σε πολλαπλά αντικείμενα, π.χ. *[for all order lines] // for UML 1. Τα μηνύματα επιστροφής (Return messages) συμβολίζονται με διάστικτα βέλη (<- -) Μπορούμε να τα παραλείψουμε και να δείξουμε μόνο τα κρίσιμα.

Ενέργεια κλήσης Καλεί σε ενέργεια μια λειτουργία ενός αντικειμένου Η επικοινωνία είναι σύγχρονη (synchronous) Απεικονίζεται με ένα βέλος από το καλών αντικείμενο προς το αντικείμενο λήψης : Class Object: Class action name action name lifeline ενέργεια κλήσης Κλήση αντικειμένου προς τον εαυτό του

Ενέργεια επιστροφής Η επιστροφή τιμής στον αποστολέα σαν απάντηση σε ενέργεια κλήσης. Απεικονίζεται με ένα βέλος διακεκομμένων γραμμών από το αντικείμενο που επιστρέφει την τιμή προς το αντικείμενο που την λαμβάνει. : Class Object: Class return value

Παράδειγμα κλήσης επιστροφής : Customer : ΑΤΜ assignpin() OK pin

Ενέργεια δημιουργίας Καλεί μία κλάση να δημιουργήσει μία εκδοχή της (instance), δηλ. ένα αντικείμενο της. Απεικονίζεται με ένα βέλος και το στερεότυπο <<create>> από το αντικείμενο που καλεί την ενέργεια προς το δημιουργούμενο αντικείμενο. Object: Class : Class Object: Class <<create>> ή <<create>> : Class

Ενέργεια δημιουργίας :A :B :A <<create>> <<create>> :B Constructor

Ενέργεια διαγραφής Καλεί ένα αντικείμενο να διαγραφεί. Η διαγραφή αφορά, είτε άλλο αντικείμενο, είτε τον εαυτό του. Απεικονίζεται με ένα βέλος και το στερεότυπο <<destroy>> από το αντικείμενο που καλεί την ενέργεια προς το διαγραφόμενο αντικείμενο. Object: Class : Class <<destroy>> X

Ενέργεια αποστολής Η αποστολή σήματος (signal) προς ένα αντικείμενο. Η επικοινωνία είναι ασύγχρονη (asynchronous). Π.χ. οι εξαιρέσεις (exceptions) Απεικονίζονται με ένα βέλος με μισή αιχμή στο αντικείμενο λήπτη του σήματος. : Class Object: Class action name

Παραδείγματα μηνυμάτων Person * employment 0..1 Company Διάγραμμα κλάσεων +assign(task:string) Αντικείμενο τύπου Person μήνυμα assign(task) p:person c:company John:Person assign( Prepare slides ) C1:Company Message instance

Παραδείγματα μηνυμάτων Ποια είναι τα δυνατά μηνύματα θεωρώντας το διάγραμμα κλάσεων? Α +a1() +a2() Β +b1() +b2() a1() a2() b1() b2() a1() a2() b1() b2()

Αλληλεπίδραση των αντικειμένων του μοντέλου Πώς υπολογίζεται η τιμή της παραγγελίας?

Διάγραμμα ακολουθίας Υπολογισμός της τιμής μιας γραμμής παραγγελίας Παράμετρος Μήνυμα επιστροφής Δείχνουμε μόνο τα κρίσιμα, που βοηθούν την κατανόηση

Παράδειγμα διαγράμματος ακολουθίας διαφορετικής υλοποίησης Υπολογισμός της τιμής μιας γραμμής παραγγελίας Self-call

Συγκρίνοντας τα δύο διαγράμματα distributed control -Η επεξεργασία πραγματοποιείται από ένα σύνολο αντικειμένων -είναι πιο κοντά στο αντικειμενοστρεφές στυλ προγραμματισμού centralized control -πιο απλός -όλη η επεξεργασία γίνεται σε ένα σημείο

Συγκρίνοντας τα δύο διαγράμματα Customer Εδώ μόνο τα αντικείμενα που είναι συσχετισμένα επικοινωνούν Order Order line Product Εδώ μια Order επικοινωνεί με ένα Product (παρόλο που αυτά τα αντικείμενα δεν σχετίζονται στο διάγραμμα κλάσεων)

Δημιουργία και Διαγραφή Συμμετεχόντων Αν το αντικείμενο δημιουργείται ή καταστρέφεται στη χρονική περίοδο που αναπαριστά το διάγραμμα, τότε η γραμμή ζωής του ξεκινά ή σταματά στο κατάλληλο σημείο Αν το αντικείμενο δημιουργείται κατά τη διάρκεια του διαγράμματος, τότε το βέλος που απεικονίζει το ερέθισμα που δημιουργεί το αντικείμενο, σχεδιάζεται με την κεφαλή του πάνω στο σύμβολο του αντικειμένου Αν το αντικείμενο καταστρέφεται κατά τη διάρκεια του διαγράμματος, τότε η καταστροφή σημειώνεται με ένα μεγάλο Χ, είτε στην απεικόνιση του βέλους στο ερέθισμα που προκαλεί την καταστροφή είτε (στην περίπτωση αυτοκαταστροφής) στο τελικό βέλος επιστροφής από το κατεστραμμένο αντικείμενο

Δημιουργία και Διαγραφή Συμμετεχόντων Συνήθως δεν σβήνουμε αντικείμενα αμέσως, καλό είναι να χρησιμοποιούμε ένα X για να γνωρίζουμε πότε ένα αντικείμενο δεν είναι πλέον διαθέσιμο και μπορεί να σβηστεί. Το Χ τερματίζει τη γραμμή ζωής

Διαγράμματα ακολουθίας Γενικά, τα διαγράμματα ακολουθίας δεν είναι κατάλληλα στο να δείχνουν λεπτομέρειες (αλγόριθμους με βρόχους loops και συμπεριφορές υπό συνθήκη) ΑΛΛΑ δείχνουν πολύ ξεκάθαρα τις κλήσεις μεταξύ των συμμετεχόντων και ποιοι συμμετέχοντες κάνουν ποια επεξεργασία Παρόλ αυτά, η UML προσφέρει τα πλαίσια αλληλεπίδρασης (interaction frames) για τη μοντελοποίηση βρόχων και συνθηκών σε διαγράμματα ακολουθίας

Βρόχοι (loops) Σε αυτό το διάγραμμα δεν φαίνεται πουθενά ότι οι εικονιζόμενες κλήσεις πρέπει να γίνουν για κάθε παραγγελιογραμμή (OrderLine) μιας Παραγγελίας (Order)

Μοντελοποιώντας τη δομή ελέγχου (βρόχοι, συνθήκες) procedure dispatch End foreach (lineitem) if (product.value > $10K) else endfor endif careful.dispatch regular.dispatch if (needsconfirmation) messenger.confirm Δεν είναι αυτή η έμφαση των Διαγραμμάτων Ακολουθίας Θα μπορούσαμε να χρησιμοποιήσουμε Activity Diagrams ή ψευδοκώδικα για αυτόν το σκοπό.

Μοντελοποιώντας τη δομή ελέγχου (βρόχοι, συνθήκες)

Μοντελοποιώντας τη δομή ελέγχου (βρόχοι, συνθήκες)

Μοντελοποιώντας τη δομή ελέγχου (βρόχοι, συνθήκες)

Μοντελοποιώντας τη δομή ελέγχου (βρόχοι, συνθήκες)

Τελεστές ελέγχου διαγραμμάτων ακολουθίας Τελεστής alt: Το σώμα ενός υποθετικού τελεστή χωρίζεται σε περιοχές με τη χρήση διακεκομμένων γραμμών. Κάθε περιοχή αναπαριστά ένα εναλλακτικό τμήμα μιας συνθήκης και περιέχει μια συνθήκη. Αν η συνθήκη μιας περιοχής ικανοποιείται, τότε αυτή η περιοχή εκτελείται. Αν καμία συνθήκη δεν ικανοποιείται, τότε δεν εκτελείται καμία περιοχή. Στον υποθετικό τελεστή υπάρχει η δυνατότητα μια περιοχή να έχει τη συνθήκη (else) η οποία εκτελείται όταν καμία άλλη συνθήκη δεν ικανοποιείται. Τελεστής opt: τα μηνύματα που εμπεριέχονται σε ένα προαιρετικό τελεστή εκτελούνται μόνο αν ικανοποιείται η λογική (boolean) συνθήκη που βρίσκεται μέσα σε αγκύλες [ ] (ισοδύναμο με το alt με ένα τμήμα)

Τελεστές ελέγχου διαγραμμάτων ακολουθίας Τελεστής par: παράλληλη συμπεριφορά/εκτέλεση, το σώμα ενός τελεστή παράλληλης εκτέλεσης χωρίζεται σε περιοχές με τη χρήση διακεκομμένων γραμμών. Κάθε περιοχή εκτελείται παράλληλα (ταυτόχρονα) με τις υπόλοιπες περιοχές. Η εκτέλεση των μηνυμάτων σε κάθε περιοχή πραγματοποιείται σειριακά. Ο τελεστής παράλληλης εκτέλεσης δεν πρέπει να χρησιμοποιείται όταν οι διαφορετικές περιοχές αλληλεπιδρούν Τελεστής loop: στην επαναληπτική εκτέλεση υπάρχει μια συνθήκη η οποία καθορίζει πόσες φορές θα εκτελεστεί επαναληπτικά το σώμα αυτού του τελεστή. Όσο η συνθήκη είναι αληθής, εκτελείται επαναληπτικά το σώμα του τελεστή και όταν αυτή η συνθήκη είναι ψευδής, συνεχίζεται η εκτέλεση έξω από το σώμα του τελεστή.

Τελεστές ελέγχου διαγραμμάτων ακολουθίας Τελεστής break: Το σώμα ενός τελεστή διακοπής περιέχει μια συνθήκη. An αυτή η συνθήκη ικανοποιείται, εκτελούνται οι ενέργειες που περιέχονται στο σώμα του τελεστή διακοπής και διακόπτεται η διαδικασία. Aν η συνθήκη δεν ικανοποιείται συνεχίζεται η διαδικασία μετά τον τελεστή διακοπής. Τελεστής neg: άρνηση. Το τμήμα δείχνει μη έγκυρη αλληλεπίδραση Τελεστής ref: αναφορά. Το τμήμα αναφέρεται σε αλληλεπίδραση που ορίζεται σε άλλο διάγραμμα Τελεστής sd: διάγραμμα ακολουθίας για να περικλείσει ολόκληρο το διάγραμμα ακολουθίας Τελεστής region: κρίσιμο τμήμα. Το πλαίσιο μπορεί να έχει μόνο ένα νήμα εκτέλεσης κάθε φορά

Hotel reservation

Hotel reservation Το αντικείμενο που ενεργοποιεί την ακολουθία μηνυμάτων είναι Reservation window Στέλνει μήνυμα makereservation() στο HotelChain Το HotelChain στέλνει μήνυμα makereservation() στο Hotel Αν το Hotel έχει διαθέσιμα δωμάτια, τότε κάνει Reservation και Confirmation. Κάθε κάθετη γραμμή είναι η γραμμή ζωής που αναπαριστά το χρόνο που ένα αντικείμενο υπάρχει. Κάθε βέλος είναι κλήση μηνύματος. Ένα μήνυμα πάει από τον sender στην κορυφή του activation bar του μηνύματος στη γραμμή ζωής του receiver. Το activation bar αναπαριστά τη διάρκεια εκτέλεσης του μηνύματος Το Hotel issues a self call για να καθορίσει αν υπάρχει δωμάτιο διαθέσιμο. Αν ναι, το Hotel δημιουργεί Reservation και Confirmation. Ο αστερίσκος σημαίνει iteration (διαθέσιμο δωμάτιο για κάθε μέρα της παραμονής). Έκφραση σε [ ] συνθήκη. Το διάγραμμα έχει και μία επεξηγηματική σημείωση

Παράδειγμα: Ανάληψη μετρητών από ΑΤΜ

Χρήση τελεστή sd

Χρήση τελεστών sd, loop

Χρήση τελεστών sd, loop, opt

Χρήση τελεστών sd, loop, opt, par

Έστω ότι έχουμε ήδη ορίσει τα παρακάτω 2 διαγράμματα

Με τη χρήση του τελεστή ref, μπορούμε να τα επαναχρησιμοποιήσουμε

Κανόνες χρήσης Τα διαγράμματα ακολουθίας χρησιμοποιούνται για την εξέταση της συμπεριφοράς πολλών αντικειμένων στο πλαίσιο μίας περίπτωσης χρήσης είναι κατάλληλα για την απεικόνιση της συνεργασίας μεταξύ των αντικειμένων δεν είναι κατάλληλα για τον ακριβή ορισμό της συμπεριφοράς του κάθε αντικειμένου Για τον ορισμό της συμπεριφοράς ενός και μόνο αντικειμένου, χρησιμοποιείστε διαγράμματα καταστάσεων Για τον ορισμό της συμπεριφοράς πολλών αντικειμένων σε πολλές περιπτώσεις χρήσης, χρησιμοποιείστε διαγράμματα δραστηριοτήτων

Διάγραμμα Επικοινωνίας - Communication Diagram (UML 2.0) ~ Collaboration Diagrams (UML v1.3) Είναι μια εναλλακτική αποτύπωση του διαγράμματος ακολουθίας. Αντί να διαρθρώσουμε τα μηνύματα κατά τον άξονα του χρόνου, τα τοποθετούμε πάνω σε ένα διάγραμμα αντικειμένων. Δείχνει την αλληλεπίδραση ανάμεσα στις κλάσεις για μια περίπτωση χρήσης, χωρίς να είναι διαρθρωμένο κατά τον άξονα του χρόνου. Χρήση: Αποτυπώνει τη συμπεριφορά των κλάσεων κατά την 'εκτέλεση' της περίπτωσης χρήσης. Φάσεις: ανάλυση, σχεδίαση

Διάγραμμα Επικοινωνίας Μία επικοινωνία ορίζει ένα σύνολο συμμετεχόντων και σχέσεων που έχουν νόημα για το συγκεκριμένο σύνολο στόχων. Ο προσδιορισμός των συμμετεχόντων και των σχέσεων τους δεν έχει καθολική έννοια. Οι συμμετέχοντας ορίζουν τους ρόλους που παίζουν τα αντικείμενα όταν αλληλεπιδρούν μεταξύ τους. Συνεπώς, μία συνεργασία καθορίζει ένα σύνολο ρόλων classifier και ρόλων συσχετίσεων. Τα αντικείμενα που ικανοποιούν (ή συνδέονται) με τους ρόλους classifier παίζουν τους ρόλους που αυτοί καθορίζουν, ενώ οι σύνδεσμοι ανάμεσα στα αντικείμενα θα πρέπει να ικανοποιούν τους ρόλους συσχέτισης της συνεργασίας. Ένα ρόλος classifier (ρόλος συσχέτισης) ορίζει μία χρήση του αντικειμένου (συνδέσμου), ενώ μία κλάση (συσχέτιση) καθορίζει όλες τις ιδιότητες του αντικειμένου (συνδέσμου).

Διάγραμμα Επικοινωνίας Στο πλαίσιο μίας συνεργασίας ορίζεται μία αλληλεπίδραση. Καθορίζει τα patterns επικοινωνίας ανάμεσα στους ρόλους. Πιο συγκεκριμένα, περιέχει ένα σύνολο μερικά ταξινομημένων μηνυμάτων, κάθε ένα από τα οποία καθορίζει μία επικοινωνία, π.χ. ποιο σήμα θα σταλεί ή ποια πράξη θα ενεργοποιηθεί, καθώς και τους ρόλους που θα πρέπει να παίξουν ο αποστολέας και ο παραλήπτης, αντίστοιχα. Επομένως το διάγραμμα επικοινωνίας δείχνει τις μεθόδους που θα υλοποιεί κάθε κλάση και ποια άλλη κλάση θα τις καλεί.

Διάγραμμα Επικοινωνίας Τα διαγράμματα επικοινωνίας δίνουν έμφαση στους συνδέσμους ανταλλαγής δεδομένων μεταξύ των διαφόρων συμμετεχόντων σε μια αλληλεπίδραση Τα αντικείμενα μπορούν να εμφανίζονται σε οποιοδήποτε σημείο του διαγράμματος και τοποθετούνται ελεύθερα στο διάγραμμα, σε αντίθεση με τα διαγράμματα ακολουθίας Όπως και στα διαγράμματα ακολουθίας, χρησιμοποιείται αρίθμηση για την απεικόνιση της ακολουθίας των μηνυμάτων

Διάγραμμα Επικοινωνίας

Διάγραμμα Επικοινωνίας 1: insertcard (c ustomer) 2: pickdate (date) 4: select (seats) : Kiosk : actor 3: offer (seatchoice) 9: print (order) 8: OK 5: subm it (order) 6: charge (customer, amount) : Server : CreditS ervic e 7: confirmation

Διάγραμμα Επικοινωνίας Fred : Φοιτητής 1: Εισαγωγή 9: επιβεβαίωση διαθεσιμότητας Fred : Student 2: παρουσίαση προγράμματος 3: πρόγραμμα παρουσιάστηκε : Πρ όγραμμα Μ αθημάτων 10: πρόσθεσε Μ άθημα 4: αίτηση θέσης 11: εκτύπωση μηνύματος επιβεβαίωσης Αντ ίγρ αφοfred : Αντίγραφο 8: ΟΚ OBJ101 : Τ άξη 6: ΟΚ 7: έ λεγξε προαπαιτούμεν α 5: έλεγξε πλάνο σπουδών ΠλάνοFred : Πλάνο Σπουδών

Διάγραμμα Επικοινωνίας

Σύμβολα Διαγράμματος Επικοινωνίας 1. Αντικείμενο 2. Απλό μήνυμα 3. Απλή επιστροφή 4. Αναφορά στον εαυτό 5. Αριθμός ακολουθίας 6. Ανώνυμο αντικείμενο 7. Σχόλιο για επανάληψη 79

Μετασχηματισμός σε Διάγραμμα Κλάσης Κάθε μήνυμα γίνεται μέθοδος και τοποθετείται στην κλάση από όπου εκπορεύεται. 80

Κανόνες χρήσης Τα διαγράμματα ακολουθίας είναι καλύτερα όταν θέλουμε να δώσουμε έμφαση στην ακολουθία των κλήσεων Τα διαγράμματα επικοινωνίας είναι καλύτερα όταν θέλουμε να δώσουμε έμφαση στους συνδέσμους ανταλλαγής δεδομένων

Οπτική Γωνία κάθε Διαγράμματος Το διάγραμμα επικοινωνίας επικεντρώνεται σε σχέσεις στο χώρο, ενώ το διάγραμμα ακολουθίας σε σχέσεις στο χρόνο. Εργαλεία CASE μπορούν να μετακινούνται από το ένα προς το άλλο διάγραμμα. Το διάγραμμα επικοινωνίας δείχνει τις μεθόδους που θα υλοποιεί κάθε κλάση και ποια άλλη κλάση θα τις καλεί. 82

Διαγράμματα αλληλεπίδρασης Αρίθμηση για την απεικόνιση της ακολουθίας των μηνυμάτων που ανταλλάσσονται μεταξύ των αντικειμένων - αριθμοί ακολουθίας. Πλεονέκτημα: καλύτερη χρήση του σχεδιαστικού χώρου (more compact) Μειονέκτημα: πιο δύσκολο να δει κάποιος την ακολουθία σε σύγκριση με τα διαγράμματα ακολουθιών

Sequence vs Collaboration Diagrams: Παράδειγμα Μοιάζει με διάγραμμα αντικειμένων που δείχνει συσχετίσεις περάσματος μηνυμάτων αντί για συσχετίσεις

Τρόποι Αρίθμησης / Numbering Methods Τρόποι αρίθμησης 1, 2, 3, 1, 1.1, 1.1.1, 1.1.2, 2.1 (Decimal numbering (used by UML)) Τα διαγράμματα επικοινωνίας δεν έχουν συγκεκριμένο notation για λογική ελέγχου με βρόχους και συνθήκες Μπορεί κάποιος να χρησιμοποιήσει markers και φρουρούς (guards)

Τρόποι αρίθμησης Γιατί 1.5.1 και όχι 1.6??? Procedural (or nested) sequence 1, 2, 2.1, 2.2 Flat sequence 1, 2, 3, 4 ( τα 2.1 και 2.2 εκτελούνται ενώ το αντικείμενο του 2 είναι ακόμη ενεργό

Sequence Diagrams vs Communication Diagrams Μερικοί (προγραμματιστές/αναλυτές) προτιμούν τα μεν άλλοι τα δε.

Βρείτε τις αλληλεπιδράσεις που λείπουν ELM-01, ELM-02, ELM-03, ELM-04, ELM-05, ELM-06

Πότε να χρησιμοποιούμε τι? Διαγράμματα αλληλεπίδρασης? Για να δείξουμε τη συμπεριφορά κάποιων αντικειμένων σε μία Περίπτωση Χρήσης Tip: Εστιάστε στην απλότητα! Αν ο έλεγχος είναι πολύπλοκος, χωρίστε το σε διάφορα διαγράμματα αλληλεπίδρασης Πότε ΔΕΝ χρησιμοποιούμε διαγράμματα αλληλεπίδρασης? Αν θέλουμε να μελετήσουμε τη συμπεριφορά ενός μόνο αντικειμένου σε διάφορες περιπτώσεις χρήσης! Τότε χρησιμοποιούμε διάγραμμα καταστάσεων! Αν θέλουμε να μελετήσουμε τη συμπεριφορά πολλών περιπτώσεων χρήσης, τότε χρησιμοποιούμε διάγραμμα δραστηριοτήτων!

Συνοψίζοντας Διαγράμματα ακολουθίας (και διαγράμματα επικοινωνίας): αναπαριστούν τις κλάσεις που συμμετέχουν σε μία περίπτωση χρήσης και τα μηνύματα που ανταλλάσονται μεταξύ τους

Πηγές / Acknowledgements Booch G., Rumbaugh J., Jacobson I. Unified Modeling Language User Guide. Addison-Wesley Professional 2 Edition, ISBN 0321267974. Pascal Roques, UML in Practice, John Wiley, 2004 UML Fundamentals & OOAD UML 2.0, www.acm.org Αφροδίτη Τσαλγατίδου. Εισαγωγή στη UML, Καποδιστριακό Πανεπιστήμιο Αθηνών Ιωάννης Γαβιώτης. Πληροφοριακά Συστήματα Μοντελοποίηση με UML, Πανεπιστήμιο Αιγαίου Γιάννης Τζίτζικας. Μοντελοποίηση Λειτουργιών, Πανεπιστήμιο Κρήτης Martin Fowler, UML Distilled: a Brief Guide to the Standard Object Modeling Language, 3 rd Edition, Pearson Education Inc., 2004 A. Dennis, B. Haley Wixom, D. Tegarden, Systems Analysis and Design with UML Version 2.0, 2 nd edition, Wiley, 2005.