UML : Vue fonctionnelle - Diagramme de collaboration et diagramme de séquence - 2003/2004 Cours d'UML
Objectifs Description de scénarios particuliers Représente le fonctionnement du système du point de vue du concepteur Mise en valeur des passages de messages (flots de données ou de contrôles, évènements) entre acteur et objet, ou entre objets, de manière chronologique On représente le fonctionnement au niveau des instances 2003/2004 Cours d'UML
Diagramme de collaboration Comporte : des objets dans une situation donnée les liens qui relient les objets qui se connaissent les messages échangés entre les objets, représentés le long de ces liens L'ordre d'envoi des messages est matérialisé par un numéro de séquence 2003/2004 Cours d'UML
Notation Un objet A envoie un message X à un objet B, puis l’objet B envoie un message Y à un objet C, et enfin C s’envoie un message Z. 2003/2004 Cours d'UML
Diagramme de classes de la CBM 3ème version saLibrairie 1 Commande numéro date commande (libr) ajouterLivre (livre) Librairie nom adresse solvabilité isSolvable () sesCommandes * sesLibrairies * sesLdC * LigneDeCommande quantité putQuantité (qt) Cbm * sesEditeurs sesLivres * Livre ISBN Titre getTitre () Editeur nom adresse getLivre (titre) : LIVRE sesLivres * 2003/2004 Cours d'UML
Exemple : Computer Books by Mail Enregistre une commande de livres Co:Commande L:Librairie 2. commande (libr) 6. ligneDeCommande () 7. putQuantité(qt) 5. ajouterLivre (livre) 1. isSolvable () Li:LigneDeCommande C:CBM 3. getLivre (titre) :livre 4. getTitre () L:Livre E:Editeur 2003/2004 Cours d'UML
Diagramme de séquence Comme les D. de collaboration, comporte : des objets dans une situation donnée (instances) les messages échangés entre les objets A la différence des D. de collaboration : l'accent est mis sur la communication, au détriment de la structure spatiale chaque objet est représenté par une barre verticale le temps s'écoule de haut en bas, de sorte que la numérotation des messages est optionnelle 2003/2004 Cours d'UML
Comparaison D.Collaboration/D. Séquence 2003/2004 Cours d'UML
D. Séquence en détail Ligne de vie d’un objet unA:ClasseA Ligne de vie d’un objet unA:ClasseA Exécution d’une occurrence unA:ClasseA Destruction de l’instance 2003/2004 Cours d'UML
D. Séquence en détail Création d’un instance unA:ClasseA Création d’un instance Frame: compartimenter le diagramme de séquence 2003/2004 Cours d'UML
Notation : principes généraux acteur objet du diagramme de classes nom de l'instance nom de la classe unA:ClasseA unB:ClasseB toto:Acteur1 meth1(…) message meth2 (…) boolean SonTruc retour type nom d'une instance activation ligne de vie (durée de l’interaction) 2003/2004 Cours d'UML
Notation : messages synchrone/asynchrone message asynchrone : émetteur non bloqué, continue ses traitements message synchrone : émetteur bloqué, attend retour appl erreur alarme inconnu alarme 2003/2004 Cours d'UML
Notation : création, destruction unA : ClasseA toto:Acteur meth1 (…) ClasseB (…) : ClasseB unB Création Arrive sur la classe Pas de nom d'instance au début renvoie tj l'instance créée Suppression 2003/2004 Cours d'UML
Notation : message réflexif Un objet peut s’envoyer un message à lui-même unA : ClasseA toto:Acteur meth1 (…) meth2 (…) Exemple: appel d’une méthode privée! 2003/2004 Cours d'UML
Notation : alternative 1 : C : A : B alternative [cond] meth1 () [non cond] meth2 () meth3 () condition On peut aussi faire deux diagrammes de séquences correspondant aux deux scénarios meilleure lisibilité 2003/2004 Cours d'UML
Notation : alternative 2 : B : C [cond] meth1 () Cas cond : [non cond] meth2 () meth3 () Cas non cond : Deux diagrammes de séquences correspondant aux deux scénarios 2003/2004 Cours d'UML
Pour telles et telles instances Notation : répétition envoie du même message n fois au même objet : A : B : C *[cond] meth1 () Pour telles et telles instances meth2 () envoie du même message 1 fois à plusieurs objets 2003/2004 Cours d'UML
Exemple de la CBM : Le Diag. de Classes saLibrairie 1 COMMANDE numéro date commande (libr) ajouterLivre (livre) LIBRAIRIE nom adresse solvabilité isSolvable () sesCommandes * sesLibrairies * sesLdC * LIGNE DE COMMANDE quantité putQuantité (qt) CBM 1 * sesEditeurs sonLivre LIVRE ISBN titre EDITEUR nom adresse getLivre (titre) : LIVRE sesLivres * 2003/2004 Cours d'UML
Un cas d'utilisation "Communiquer les détails de toutes les commandes d'une librairie donnée" Méthode getDétailCommandes() de la classe LIBRAIRIE 2003/2004 Cours d'UML
Le DCO correspondant COMMANDE LIBRAIRIE LIGNE DE COMMANDE CBM LIVRE 1. getDate() 2. getInfosLdC COMMANDE LIBRAIRIE 3. getQuantité() LIGNE DE COMMANDE CBM 4. getTitre() LIVRE EDITEUR 2003/2004 Cours d'UML
Un DSE : getDetailsCommandes V1 version 1 : délégation (propagation des messages) LIBRAIRIE SesCommandes:COMMANDE SesLdC:LIGNEDECOMMANDE SonLivre:LIVRE Dupond:Responsable getDétailCommandes() getSesCommandes() sesCommandes getDétailCommande() getDate() date Pour chaque commande getSesLignes() sesLdC getDétailLigne() getLivre() sonLivre getTitre() Pour chaque ligne de com. titre getQuantité() {titre,quantité} date +{titre,quantité} quantité {date +{titre,quantité}} 2003/2004 Cours d'UML
Le DCL : nouvelle version (délégation) sesCommandes * saLibrairie 1 COMMANDE numéro date commande (libr) ajouterLivre (livre) getDetailCommande() LIBRAIRIE nom adresse solvabilité isSolvable () getDetailCommandes() sesCommandes * sesLibrairies * sesLdC * LIGNE DE COMMANDE quantité putQuantité (qt) getDétailLigne() CBM * sesEditeurs 1 sonLivre LIVRE ISBN titre EDITEUR nom adresse getLivre (titre) : LIVRE sesLivres * 2003/2004 Cours d'UML
Un DSE : getDetailsCommandes V2 version 2 : supervision (un objet envoie tous les messages) LIBRAIRIE SesCommandes:COMMANDE SesLdC:LIGNEDECOMMANDE SonLivre:LIVRE Dupond:Responsable getDétailCommandes() getSesCommandes() getDate() date getSesLignes() Pour chaque commande sesLdC getQuantité() quantité Pour chaque ldc de chaque com. getLivre() sonLivre getTitre() titre {date +{titre,quantité}} 2003/2004 Cours d'UML
Le DCL : nouvelle version (supervision) sesCommandes * saLibrairie 1 COMMANDE numéro date commande (libr) ajouterLivre (livre) LIBRAIRIE nom adresse solvabilité isSolvable () getDetailCommandes() sesCommandes * sesLibrairies * sesLdC * LIGNE DE COMMANDE quantité putQuantité (qt) CBM * sesEditeurs 1 sonLivre LIVRE ISBN titre EDITEUR nom adresse getLivre (titre) : LIVRE sesLivres * 2003/2004 Cours d'UML
UML : Vue dynamique - Diagramme d’états-transitions - 2003/2004 Cours d'UML
Diagramme états/transitions Rôle : Vue synthétique du fonctionnement dynamique d'un objet Décrit le comportement d'un objet tout au long de son cycle de vie Décrit tous les états possibles d'un unique objet à travers l'ensemble des cas d'utilisation dans lequel il est impliqué On ne s'intéresse qu'aux objets qui ont un comportement complexe Exemple - DET d'un citoyen : Mineur Majeur anniversaire[age=18] naissance mort 2003/2004 Cours d'UML
Composition Comporte 2 types d'informations : des états : initial final intermédiaires - ex : mineur et majeur des transitions induisant un changement d'état ex : naissance, anniversaire… 2003/2004 Cours d'UML
État (1) Un état correspond à la manière d’être d’un objet pendant un intervalle de temps plus ou moins long. Un état se compose de plusieurs parties : le nom l'activité attachée à cet état les actions réalisées pendant cet état Exemple : En alerte entry/allumer lampe alerte do/sonnerie toutes les 5 '' 4ème sonnerie/appel poste de garde exit/éteindre lampe alerte 2003/2004 Cours d'UML
État (2) DET : Automate déterministe 3 types d'états état initial (1 et 1 seul) état intermédiaire (plusieurs possibles) état final (aucun ou plusieurs possibles) Nom état 2003/2004 Cours d'UML
Action opération instantanée (durée négligeable) toujours intégralement réalisée méthode de la classe exécutée : lors d'une transition eventi / actioni à l'entrée dans un état entry / actioni à la sortie d'un état exit / actioni interne, sans changer d'état eventi / actioni Action à l'entrée En alerte entry/allumer lampe alerte do/sonnerie toutes les 5 '' 4ème sonnerie/appel poste de garde exit/éteindre lampe alerte Action interne Action à la sortie 2003/2004 Cours d'UML
Activité opération qui nécessite un certain temps d’exécution peut être interrompue à chaque instant associée à un état (étati "en train de faire ceci") exécutée : entre l'entrée et la sortie de l'état do : activitéi événement EN-VEILLE do : détecteur sous tension EN-ALERTE do : sonnerie détectionPb / envoyer message poste de surveillance activité action activité 2003/2004 Cours d'UML
Transition (1) Transition : passage unidirectionnel et instantané d’un état (source) dans un autre état (cible) Déclenchée : par un événement automatiquement à la fin d'une activité (transition automatique) Syntaxe : <NomÉvénement> [<Garde (ou contrainte)>]/<NomAction> Garde : condition booléenne qui valide ou non le déclenchement d'une transition lors de l'occurrence d'un évènement Événement : provoque le changement d'état (il existe aussi des événements internes à un état, dont l'action associée ne provoque pas de changement d'état) Action : opération réalisée lors du changement d'état 2003/2004 Cours d'UML
événement 1 [condition] Transition (2) Transition automatique lorsque qu'il n'y a pas de nom d'événement sur une transition, il est sous-entendu que la transition aura lieu dès la fin de l'activité. Auto-transition : transition d'un état vers lui-même événement 2/action état 1 état 2 événement 1 [condition] état 3 2003/2004 Cours d'UML
Exemple : Le réveil matin Heure d'alarme : on suppose que l'heure est fixée quand on met l'alarme sur on Trois boutons : alarm on/off, arrêt sonnerie, réglage alarme (événement interne) Événements : Appuis sur un bouton alarm on [heure = H alarme] désarmé armé do/sonner alarm off arrêt sonnerie alarm off 2003/2004 Cours d'UML
Forme générale d’un état Nom d'état entry[cond entry]/action-entry do/activité év-1/action-1 … év-n/action-n exit[cond exit]/action-exit év-in[cond in]/action-in év-out[cond out]/action-out év-i[cond y]/action-i 2003/2004 Cours d'UML
Ordonnancement des actions En entrée Action sur la transition d'entrée Action d'entrée Activité associée à l'état En interne Interruption de l'activité en cours (contexte sauvé) Action interne Reprise de l'activité En sortie Interruption de l'activité en cours (contexte perdu) Action de sortie Action sur la transition de sortie Auto-transition Action sur l'auto-transition 2003/2004 Cours d'UML
Auto-transition / Action interne Action interne, le contexte de l'activité est préservé (on ne sort pas de l'état) Auto-transition : le contexte est réinitialisé (on sort et on re-rentre dans l'état) event1 / action1 Nom de l'état entry / actionentry event1 / action1 … exit / actionexit Nom de l'état entry / actionentry … exit / actionexit 2003/2004 Cours d'UML
Diagrammes hiérarchisés Permettent de structurer les DET complexes Factorisation des actions et activités Exemple : Transmission point mort marche arrière Marche avant première seconde troisième 2003/2004 Cours d'UML
Parallélisme et synchronisation État composite do/a1 do/a2 do/a3 do/a4 do/a5 do/a6 a1//a3//a5 - a2 après a1 - a4 après a3 - a6 après a5 - état final après a2, a4 et a6 2003/2004 Cours d'UML
UML : Vue dynamique - Diagramme d’activité - 2003/2004 Cours d'UML
Remplir le réservoir d'eau Diagramme d'activité Cas particulier de DET, dans lequel à chaque état correspond une activité constituant un élément d'une tâche globale à réaliser Mise en évidence des contraintes de séquentialité et de parallélisme. Exemple - Faire un café : Chercher le café parallélisme Mettre un filtre Remplir le réservoir d'eau Mettre du café Prendre une tasse Allumer la cafetière Synchronisation Le café passe servir 2003/2004 Cours d'UML
D. Activité :Condition <<Comment>> Cafetière éteinte? condition [oui] [non] commentaire Allumer la cafetière Le café passe Servir Dans cette exemple, il n’y a pas de parallélisme!! 2003/2004 Cours d'UML
Diagramme d’activité Peut être utiliser pour ordonner des diagrammes de séquence OpenDoor CloseDoor 2003/2004 Cours d'UML
Les concepts d’UML - Les Composants - 2003/2004 Cours d'UML
Qu’est ce qu’un composant : exemple simple <<interface>> ProvidedInterface <<interface>> RequiredInterface Job 2003/2004 Cours d'UML
Boite blanche (modèle associé) Composant Boite blanche (modèle associé) 2003/2004 Cours d'UML
Boite noire (pas de modèle) Composant Boite noire (pas de modèle) 2003/2004 Cours d'UML
Assemblage 2003/2004 Cours d'UML
Diagramme de déploiement Indication de l’artefact 2003/2004 Cours d'UML
Cas d’étude: Bourse en ligne Administration d’une bourse en ligne Créer un utilisateur avec un por²tefeuille Supprimer un utilisateur Créer /supprimer des actions Ajouter et retirer des actions à un portefeuille. Un portefeuille contient un ensemble d’actions Action= nom+ prix. Connaître la liste de toutes les actions Visualiser les actions dans un portefeuille 2003/2004 Cours d'UML