Professional Documents
Culture Documents
Introduction Analyse des besoins et diagramme de cas dutilisation Diagramme dactivit Diagramme de classe Diagramme de squence Diagramme de collaboration Diagramme dtat transition g Diagramme de composant Diagramme de dploiement Diagramme de composant Les nouveaut de UML 2 0 2.0 Prsentation des tudes de cas
COO 2007/2008
Introduction : Sommaire
Un peut dhistoire Le gnie logiciel Lapproche oriente objet Unified Modeling Language (UML) 2 Truck Unified Process (2TUP)
Un peu d'Histoire...
COO 2007/2008
COO 2007/2008
Un peu d'Histoire...
En 1995, une tude du Standish Group dressait un tableau accablant de la conduite des projets informatiques. Reposant sur un chantillon reprsentatif de 365 entreprises totalisant 8380 entreprises, applications, cette tude tablissait que :
Un peu d'Histoire...
Pour les grandes entreprises (qui lancent g p (q proportionnellement davantage de gros projets) :
Le taux de succs est de 9% seulement seulement, Le taux dchec des projets (arrt en cours de ) , ralisation) est de 37%, Le taux d b ti L t daboutissement h t hors dl i et h dlai t hors b d t budget est de 50%.
COO 2007/2008 6
16,2% des projets conformes aux prvisions initiales. 52,7% ont subi des dpassements en cot et dlai dun facteur 2 3 avec diminution du nombre des fonctions. 31,1% ont t , dveloppement. p purement abandonns durant leur
COO 2007/2008
Un peu d'Histoire...
Un peu d'Histoire...
?
Ou est le problme? p
Pour ces raisons, le dveloppement de logiciels dans un contexte professionnel doit suivre : t t f i l d it i
Des rgles strictes encadrant la conception Des rgles permettant le travail en groupe Des rgles de maintenance du code.
L objectif Lobjectif du gnie logiciel est doptimiser le d optimiser cot de dveloppement du logiciel. Il remdie :
Laugmentation des cots. g Les difficults de maintenance et dvolution. L non fi bilit La fiabilit. Le non respect des spcifications. p p Le non respect des dlais.
Le gnie logiciel
COO 2007/2008
COO 2007/2008
10
Lanalyse d b L l du besoin, i Llaboration des spcifications, La conceptualisation, Le dveloppement, pp , La phase de test, La maintenance maintenance.
Un modle est une reprsentation abstraite et simplifie dune entit du monde rel en vue de le dcrire, de lexpliquer ou de le prvoir. Il reflte ce que le concepteur croit important pour la comprhension et la prdiction du phnomne modlis.
Pourquoi modliser ?
Support de communication et comprhension : Un modle est un langage commun, prcis, qui est connu par tous les membres de lquipe. Rpartition des taches et leurs automatisation. Rduction des cots et dlais Meilleur qualit et maintenance efficace.
COO 2007/2008
12
Finalit
Le choix du modle a donc une influence capitale sur les solutions obtenues.
COO 2007/2008
13
COO 2007/2008
14
Objet ???
Exemple
Lapproche oriente objet considre le logiciel comme une j possdant des collection dobjets dissocis, identifis et p caractristiques. Lobjet constitue le concept fondateur de l'approche du mme nom. Caractristiques Possde une identit (nom) ( ) Un ensemble d'attributs caractrise l'tat de l'objet. Un ensemble d'oprations dfinissant le comportement. Un objet est une instance de classe Une classe est un type de donnes abstrait, caractris par d proprits commune a t des it tous l objets ( tt ib t et les bj t (attributs t mthodes).
COO 2007/2008
15
COO 2007/2008
16
Rapproche les donnes et leurs traitements dans un unique objet. Ensemble de concepts stables, prouvs et normaliss. Solution d ti S l ti destine f ilit l' l ti d' faciliter l'volution d'applications complexes. li ti l Panoplie d'outils et de langages performants pour le dveloppement. La fonctionnalit du logiciel merge de linteraction entre les diffrents l interaction objets qui le constituent.
Un langage pour exprimer les concepts objet qu'on utilise, afin de qu on utilise pouvoir :
Reprsenter Li it Limiter
des concepts abstraits (graphiquement par exemple). l ambiguts ( l un l les bi t (parler langage commun). ) Faciliter l'analyse (simplifier la comparaison et l'valuation de solutions).
pas effectuer une analyse fonctionnelle et se contenter d'une implmentation objet, mais penser objet ds le dpart. Dfinir les vues qui permettent de couvrir tous les aspects d'un systme, avec des concepts objets.
Quels moyens utiliser pour faciliter l'analyse objet ? Quels critres identifient une conception objet pertinente ? Comment comparer deux solutions de dcoupe objet d'un systme ? d un Le vocabulaire est prcis (risques d'ambiguts et comprhensions). Comment dcrire la structure objet d'un systme de manire pertinente ? d un
COO 2007/2008 17
Bref : il nous faut un outil qui apporte une dimension mthodologique l'approche objet, afin de mieux gq pp j , matriser sa richesse et sa complexit.
COO 2007/2008
18
Mthodes ?
Plus de 50 mthodes objet sont apparues durant cette priode (Booch, Classe-Relation, Fusion, HOOD, ClasseOMT, OOA, OOD, OOM, OOSE...) ! OMT OOA OOD OOM OOSE ) Aucun mthode ne s'est rellement impose.
UML (Unified Modeling Langage), la fusion et synthse des mthodes dominantes. Langage),
COO 2007/2008
19
COO 2007/2008
20
UML ?
UML nest pas une mthode cest--dire une description normative des tapes de la modlisation. Pourquoi?
UML
n'est
pas
une
mthode
ou
un
processus
Si l'on parle de mthode objet pour UML, c'est par abus de langage ! Une mthode propose aussi un processus, qui rgit notamment l'enchanement des activits de production d'une entreprise. entreprise. UML a t pens pour permettre de modliser les activits de l'entreprise, pas pour les rgir. rgir. Un processus de dveloppement logiciel universel est une utopie : Impossible de prendre en compte toutes les organisations et p p p g cultures d'entreprises. d'entreprises. Un processus est adapt (donc trs li) au domaine d'activit de l'entreprise. p l'entreprise. Mme si un processus constitue un cadre gnral, il faut l'adapter de manire prcise au contexte de l'entreprise. l'entreprise.
un l langage graphique qui permet d reprsenter et d communiquer hi i t de t t de i les divers aspects dun systme dinformation. Les graphiques sont associs des textes qui expliquent leur contenu.
un mtalangage car il fournit les lments permettant de construire le modle qui, lui, sera l langage du projet. le l d j t
Bouhlel Mohamed Salah COO 2007/2008 21
COO 2007/2008
22
diffrentes vues (perspectives) complmentaires d'un systme, qui guident l'utilisation des concept objets, plusieurs niveaux d'abstraction, qui permettent de mieux contrler la complexit dans l'expression des solutions objets. objets.
les lments de modlisation (les concepts manipuls par le langage), la smantique de ces lments (leur dfinition et le sens de leur utilisation). utilisation).
Un mta-modle est une description trs formelle de tous les concepts mtad'un langage. Il limite les ambiguts et encourage la construction d'outils. langage. d'outils. UML propose aussi une notation, qui permet de reprsenter g p q graphiquement les lments de modlisation du mta-modle. mta-modle. Cette notation graphique est le support du langage UML. UML.
Sa notation graphique permet d'exprimer visuellement une solution objet. objet. L'aspect formel de sa notation limite les ambiguts et les incomprhensions. incomprhensions. Son aspect visuel facilite la comparaison et l'valuation de solutions. p p solutions. Son indpendance (par rapport aux langages d'implmentation, domaine d'application, processus...) en font un langage universel. processus...) universel.
COO 2007/2008
23
COO 2007/2008
24
Fonctionnel
cas dutilisation (Use Case diagram)
Dynamique
Etats-Transitions (St t M hi di Et t T iti (State Machine diagram) ) Activit (Activity diagram) Squence (Sequence diagram) Collaboration (Collaboration diagram)
Il cadre l'analyse. Il facilite la comprhension de reprsentations abstraites complexes. Son caractre polyvalent et sa souplesse en font un langage universel.
Paquetage (P k P t (Package di diagram) ) Structures composites (Composite structure diagram) Global dinteraction (Interaction overview diagram) Temps (Timing diagram)
Bouhlel Mohamed Salah COO 2007/2008 25 Bouhlel Mohamed Salah COO 2007/2008 26
La mise en pratique d'UML ncessite un apprentissage et passe par une priode d'adaptation. d adaptation d'adaptation. adaptation. La ncessit de s'accorder sur des modes d'expression communs est vitale en informatique. UML n 'est pas l'origine des concepts objets mais informatique. est l origine objets, en constitue une tape majeure, car il unifie les diffrentes approches et en donne une dfinition plus formelle. formelle.
Le processus (non couvert par UML) est une autre cl de la russite d'un projet. projet. Or, l'intgration d'UML dans un processus n'est pas triviale et amliorer un processus est une tche complexe et longue. longue. Les auteurs d'UML sont tout fait conscients de l'importance du processus, mais l'acceptabilit industrielle de la modlisation objet passe d'abord d' b d par l disponibilit d' la di ibilit d'un l langage d' d'analyse objet performant et l bj t f t t standard. standard.
Cependant, dans le cadre de la modlisation d'une application informatique, les auteurs d'UML prconisent d'utiliser une d d' tili dmarche : h
itrative t incrmentale, it ti et i t l guide par les besoins des utilisateurs du systme, centre sur l'architecture logicielle. l architecture logicielle.
D'aprs les auteurs d'UML un processus de D aprs d UML, dveloppement qui possde ces qualits devrait favoriser la russite d'un projet.
COO 2007/2008 28
COO 2007/2008
27
L ide L'ide est simple : pour modliser (comprendre et reprsenter) un systme complexe, il vaut mieux s'y prendre en plusieurs fois, en affinant son analyse par tapes. Cette dmarche devrait aussi s'appliquer au cycle de dveloppement dans son ensemble en favorisant le ensemble, prototypage.
Avec UML, ce sont les utilisateurs qui guident la dfinition des , q g modles :
Le primtre du systme modliser est dfini par les besoins des utilisateurs (les utilisateurs dfinissent ce que doit tre le systme). Le but du systme modliser est de rpondre aux besoins de ses utilisateurs (les utilisateurs sont les clients du systme) systme).
Le but est de mieux matriser la part d'inconnu et d'incertitudes qui caractrisent les systmes complexes.
Les besoins des utilisateurs servent aussi de fil rouge, tout au long du cycle de dveloppement (itratif et incrmental) :
A chaque itration de la p q phase d'analyse, on clarifie, affine et valide les y , , besoins des utilisateurs. A chaque itration de la phase de conception et de ralisation, on veille la prise en compte des besoins des utilisateurs. A chaque itration de la phase de test, on vrifie que les besoins des utilisateurs sont satisfaits.
COO 2007/2008
29
COO 2007/2008
30
Rsumons la dmarche...
Modliser une application ? Mais M i comme UML n'est pas un processus.. ' t Quelle dmarche utiliser ?
Trouver un "bon" modle est une tche difficile mais capitale !
Une architecture adapte est la cl du succs d'un dveloppement. Elle dcrit des h i t t i Ell d it d choix stratgiques qui dt i dterminent en grande partie l i t d ti les qualits du logiciel (adaptabilit, performances, fiabilit...).
Ph. Kruchten propose diffrentes perspectives, indpendantes et complmentaires, qui permettent de dfinir un modle d'architecture (publication IEEE, 1995). Cette vue ("4+1") a fortement inspir UML :
Optez pour une approche itrative et incrmentale. incrmentale. Centrez votre dmarche sur l'analyse des besoins des utilisateurs. utilisateurs. Prenez grand soin la dfinition de l'architecture de votre application (l'approche "4+1" permet de mieux l cerner). l' h td i la )
OK OK , mais en pratique ?
COO 2007/2008 32
Contrainte Fonctionnel
Systme Informatique
Contrainte Technique
Laxiome fondateur du modle 2TUP consiste constater que toute volution impos au systme peut ce dcomposer suivant un axe fonctionnel et un axe technique.
Bouhlel Mohamed Salah COO 2007/2008 34
Exemple : p
Une agence de tourisme passe des accord avec une compagnie arienne de sorte que le calcul des commission change (en loccurrence les rsultats issus de la branche fonctionnelle rvolue pour prendre en compte la no elle spcification. nouvelle spcification Cette C tt mme entreprise dcide d t i d id douvrir ces portes sur l i t le web en permettant aux navigateurs de rserver et de payer leurs billets billets.
Analyse
Conception gnrale
Cot fonctionnelle rien ne change mais cot C t f ti ll i h i t technique on a une volution du systme.
COO 2007/2008 35 Bouhlel Mohamed Salah
Recette
COO 2007/2008
36
Analyse
Conception gnrale
COO 2007/2008
Chapitre 1
tude de la ralisation de chaque composant Codage des composants + test Validation et vente du produit
COO 2007/2008
39
tude p tude prliminaire a e Diagramme de contexte dynamique/statique lments du diagramme de cas dutilisation d utilisation
Acteur Cas dutilisation Reprsentation du diagramme de cas dutilisation Relation entre cas dutilisation Relation entre acteur Relation entre cas dutilisation et acteur
Etude li i i Et d prliminaire
Notion gnrale Modlisation d b M dli i des besoins avec UML i Description textuelle
Bouhlel Mohamed Salah COO 2007/2008 41
Les Acteurs Les messages g Digramme de contexte St ti Di d t t Statique Digramme de contexte Dynamique
COO 2007/2008 44
Cette tape survient juste aprs une dcision de dmarrage du projet. projet Reprage des besoins fonctionnels et oprationnels avec des diagrammes simples et une description textuelle.
COO 2007/2008
43
Un acteur reprsente labstraction dun rle jou par des entits externes (utilisateur, dispositif matriel ou autre systme) qui interagissent directement avec le systme tudi. tudi Acteur : entit e terne q i agit s r le s stme Acte r externe qui sur systme.
L'acteur peut consulter ou modifier l'tat du systme. En E rponse l' ti d' acteur, l systme f l'action d'un t le t fournit un service qui it i i correspond son besoin. Les acteurs peuvent tre classs. classs << Actor >>
Nom der lacteur Nom acteur
45
Attention : on parle de communication entre acteurs systme ou systme - acteurs et non entre acteur et t t t t t t t acteur.
COO 2007/2008
Exemples de message :
1.
Le client :
2.
Le Systme :
Diagramme de contexte Statique : spcifie le nombre dinstances dacteurs relier au systme un moment donn. donn
COO 2007/2008
47
COO 2007/2008
48
Exemple DAB :
Demande de solde, Retrait, entrer code, validation.
Exemple DAB :
1..1 Admin
Client
Demande de code, choisir opration, Validation demande.
Systme (DAB)
Systme (DAB)
Cas dutilisation
Spcification fonctionnelle
Analyse
COO 2007/2008
52
Identification des Cas dutilisation. dutilisation. Relation entre cas dutilisation-acteur ,cas dutilisation-cas dutilisation et dutilisationdutilisationacteuracteur-acteur
Diagramme de cas dutilisation. dutilisation. Fiche de description textuelle dun cas dutilisation. d un d utilisation utilisation. Scnario, enchanement, diagramme dactivits. dactivits. Package des cas dutilisation. dutilisation.
COO 2007/2008
53
A ne pas confondre
Cest un ensemble de squence dactions ralises par le C est d actions systme et produisant un rsultat observable et p p particulier. intressant pour un acteur particulier. Il identifie une fonction cl du systme. Sans cette systme. fonction, l systme ne satisfait pas l b f ti le t ti f it le besoins d i des utilisateurs/acteur. utilisateurs/acteur. Chaque cas dutilisation reprsente une fonction que le systme doit tre capable daccomplir. daccomplir. Cest une unit cohrente reprsentant une fonctionnalit visible de lextrieur. Il ralise un service de bout en bout, lextrieur. avec un dclenchement un droulement et une fin pour dclenchement, fin, lacteur qui linitie. linitie.
Ce que le systme doit faire (comportement souhait) Mais pas comment raliser ce comportement
2.
3.
COO 2007/2008
55
Un cas dutilisation se reprsente par une ellipse contenant le nom du cas, et optionnellement, audessus du nom, un strotype. La frontire du systme est reprsente par un cadre. Le nom du systme figure lintrieur du cadre, en y g haut. Les acteurs sont lextrieur et les cas dutilisation l intrieur. lintrieur
Bouhlel Mohamed Salah COO 2007/2008 58
Utilisateur
Exprime
Comprend Analyste
Vrifie
Solution de lexemple
Frontire du systme Nom du systme DAB
Comprendre le problme. C Identifier les acteurs. Identifier les cas dutilisations d utilisations Dresser un premier diagramme de cas dutilisation
Acteur
Bouhlel Mohamed Salah COO 2007/2008 59 Bouhlel Mohamed Salah
Maintenir le distributeur
Client
Admin
La relation entre cas dutilisation et acteur est une relation dassociation. dassociation. Cest le chemin de communication entre un acteur et un cas dutilisation et d utilisation est reprsent par un trait continu Un acteur est qualifi de principal pour un cas dutilisation l d tili ti lorsque ce cas rend service cet acteur. d i t acteur. t Un acteur principal obtient un rsultat observable du systme. systme. Tandis quun acteur secondaire est sollicit pour des informations complmentaires. complmentaires.
Bouhlel Mohamed Salah COO 2007/2008 62
Inclusion : formaliser par le strotype i l d . include Extension : formaliser par le strotype extend . Gnralisation/spcialisation. Gnralisation/spcialisation.
Tlcharger fichier
Internaute
COO 2007/2008
63
COO 2007/2008
64
La relation dinclusion
Parfois un cas dutilisation peut avoir besoin de laide dun autre cas cest linclusion. d un c est l inclusion inclusion. Permet didentifier un sous ensemble commun P t did tifi bl plusieurs cas i l d include
C1 C2
Ex : le cas dutilisation retrait peut ne pas modifier le compte bancaire (solde) mais dlgu cette opration a un autre cas dutilisation mise jour compte. compte.
Retrait
Client
include
COO 2007/2008
65
COO 2007/2008
66
La relation dextension
Parfois un cas dutilisation pourrait avoir besoin dun autre cas dutilisation. dutilisation. Permet didentifier les exceptionnels (erreurs,). (erreurs, comportements alternatifs ou
Lors de lopration de retrait, le client peut imprimer un ticket de la transaction ou ignor cette option. option.
extends
Retrait
Impression ticket
Client
COO 2007/2008
68
La relation de gnralisation
Lhritage est un concept fondamentale en programmation, en analyse et en conception Orient O O Objet. Objet. Cette ide appliqu aux acteurs et aux cas dutilisation et appele gnralisation et est souvent surnomme relation est un . t l ti t Cette relation de gnralisation/spcialisation est prsente dans la plupart des diagrammes UML et se t d it par le concept dhritage d traduit l t dh it dans l les langages orients objet.
Bouhlel Mohamed Salah COO 2007/2008 69
Notre distributeur tant de dernire gnration il permet le retrait selon deux types. Le retrait en types. devise et le retrait en monnaie locale. locale.
Retrait
Client
Retrait devise
COO 2007/2008
70
un acteur A est une gnralisation dun acteur B si d un lacteur A peut tre substitu par lacteur B. Dans ce cas, cas tous les cas dutilisation accessibles A le sont d utilisation aussi B, mais linverse nest pas vrai. vrai.
Suivre commande
Le symbole utilis pour la gnralisation entre acteurs est une flche avec un trait plein dont la p pointe est un triangle ferm dsignant lacteur le g g plus gnral
COO 2007/2008 71
Grer le stock
Directeur ec eu des ventes
COO 2007/2008
72
Dfinir le contexte du systme systme. Identifier les acteurs. Identifier les messages messages. Dresser le diagramme de contexte dynamique. Identifications des cas dutilisation. Dfinition des associations entre acteur et cas dutilisation. f Amlioration (valuations des acteurs et des cas dutilisations). Voir les dpendances (include, extend, gnralisation). (include, extend, gnralisation). Reprsenter le diagramme final.
5. 6. 7. 8.
9.
COO 2007/2008
73
COO 2007/2008
74
Exemple 2
Rception
Expdition
Traitement commande d
stockage
COO 2007/2008
75
COO 2007/2008
76
Exemple 2
5. Identifier les cas dutilisation.
Exemple 2
5. Identifier les cas dutilisation.
Que doit produire le systme pour chaque acteurs. Comment chaque acteur doit il aider le systme. Quel sont les taches pour les q p quelles le systme aide les acteurs. (identifie les rgles)
COO 2007/2008 77
Recevoir Produit
Expdier Commande
Stocker Produit
COO 2007/2008
78
Exemple 2
6. Dfinition des associations entre acteur et cas dutilisation. d tili ti
Recevoir R i Produit Rception Expdier Commande Traiter Commande Stocker Produit stockage Trouver Produit Traitement commande
79
Exemple 2
7. Amlioration (valuations des acteurs et des cas d tili ti dutilisations). )
Rception
stockage
Rception
Expdition
COO 2007/2008
COO 2007/2008
80
Exemple 2
8. Voir les dpendances (include).
Expdier commande Include Mettre a jour Stock
Exemple 2
8. Voir les dpendances (extend).
COO 2007/2008
81
COO 2007/2008
82
Exemple 2
8. Voir les dpendances (gnralisation).
Stocker Produit
La description textuelle p
Stocker Nouveau Produit Stock produit retourn Stock Produit Annulation Commande
COO 2007/2008
83
Exemple de description(1)
Partie 1 : sommaire didentification
Sommaire didentification
insuffisant. insuffisant.
Il
faut :
1.
tablir la t t bli l traabilit entre l cahier d charges bilit t le hi des h et le modle des cas dutilisations. dutilisations. Expliciter le comportement du systme pour chacun des cas dutilisations par :
Une
Titre : Utiliser une tournure linfinitif But : Une description rsume p p permettant de comprendre lintention p
principale du cas dutilisation. Acteurs principale : Ceux qui vont raliser le cas dutilisation p p q Acteurs secondaire : Ceux qui ne font que recevoir des informations lissue de la ralisation du cas dutilisation Date de cration : date de cration du Cas Utilisation Date de mise jour : date de mise jour du Cas Utilisation j j Version : le numro de version Responsable : le nom du responsable p p
Bouhlel Mohamed Salah COO 2007/2008 86
2.
description textuelle
COO 2007/2008
85
contient la description du fonctionnement du cas sous la forme dune squence de messages changs entre les acteurs et le systme. systme Elle contient toujours une squence nominale qui dcrit de droulement normal du cas. cas la squence nominale sajoutent frquemment des q q p squences alternatives et des squences dexceptions
Bouhlel Mohamed Salah COO 2007/2008 87
Besoin dIHM : Expression de contraintes lies linterface Contrainte non fonctionnelle : Frquences Volumtries V l t i QoS: Disponibilit, fiabilit, Performances Concurrence
COO 2007/2008
89
COO 2007/2008
90
Conseils ! ! !
Un cas dutilisation doit avoir un dbut et une fin clairement d utilisation identifi. identifi. Il faut galement prciser les variantes possibles (cas alternatif, exception, erreur,). erreur, Chaque unit de description de squence dactions est appel enchanement. enchanement. Un scnario reprsente une succession denchanement qui d enchanement sexcute du dbut la fin du cas dutilisation. dutilisation. Chaque rsultat possible de lexcution dun cas dutilisation reprsente un scnario. scnario.
Bouhlel Mohamed Salah COO 2007/2008 91
Titre : traiter commande Objectif : cest la principale activit de lentreprise, le personnel autoriser prend les produits commander et met jour l tat de la ltat commande et le stock. Acteurs principale : gestionnaire de commande Date de cration : 01/08/04 Date de mise jour :10/09/04 Version : 1.3 Responsable : HAMDI
COO 2007/2008
92
Faire
Enchainements :
Le L systme d t demande a l tili t d lutilisateur un numro d de commande. L tili t Lutilisateur f fournis un numro d commande. i de d Le systme recherche la commande. Si l commande nest pas t la d t trouver [E [Exception1]. [Exception1]. ti 1] Sinon le systme fournit la commande a lutilisateur.
Trouver larticle rechercher ( CU Trouver produit ). Affecter la quantit a dlivrer si disponible ff Sinon [Exception2]. [Exception2].
J Jusqu
Exceptions : p
[Exception 1] : Commande non trouver sortir. sortir. [Exception 2] : Article non disponible cration dune d une fiche complmentaire (passer a un 2 cas dutilisation).
COO 2007/2008
93
COO 2007/2008
94
Postconditions :
Fin Fi normale : l modifications d l commande d i l les difi ti de la d doivent t t tre enregistres. Annulation : si l utilisateur annule la commande nimporte lutilisateur n importe quel moment aucune modifications ne sera enregistres.
Le cas dutilisation est une fonction systme avec un commencement un milieu et une fin En tant que tel il doit tre dcrit de faon :
comprhensible pour que les utilisateurs puissent le comprendre et le vrifier, vrifier, prcise pour que les analystes et les concepteurs puissent sen servir pour construire le programme. s en programme.
COO 2007/2008 96
COO 2007/2008
95
Le diagramme dactivit L di d ti it
COO 2007/2008
98
Introduction
Introduction
Comment reprsenter les diffrents scnarios dun cas dutilisation avec un schma simple et reprsentatif ? p
Les diagrammes dactivits permettent de mettre l accent laccent sur les traitements. Ils permettent ainsi de traitements. reprsenter graphiquement le comportement dune mthode ou le droulement dun cas dutilisation. d un d utilisation dutilisation. utilisation. Les diagrammes dactivits ne sont pas d activits spcifiquement rattachs un classeur particulier : On peut attacher un diagramme dactivits d activits nimporte quel lment de modlisation afin de visualiser, spcifier, construire ou documenter le p comportement de cet lment. lment. Les diagrammes dactivits insistent sur le flot de contrle dune activit lautre. lautre.
Bouhlel Mohamed Salah COO 2007/2008 100
COO 2007/2008
99
Utilisation
Dans la phase de conception, les diagrammes dactivits sont particulirement adapts la description des cas dutilisation. dutilisation. Ils viennent illustrer et consolider la description textuelle des cas dutilisation On parle gnralement dans ce cas de modlisation de workflow. workflow. Les diagrammes dactivits permettent de spcifier des d activits traitements a priori squentiels et offrent une vision trs proche de celle des langages de programmation impratifs comme C C++ ou J Java Ai i il peuvent t utiles d Ainsi, ils t tre til dans l la phase de ralisation. ralisation.
?
Une action est le plus petit traitement qui puisse tre exprim en UML. Elle a une incidence sur ltat du systme UML. l tat ou en extrait une information. information. Les actions sont des tapes discrtes partir desquelles se construisent les comportements. La notion daction est comportements. rapprocher de la notion dinstruction lmentaire dun d instruction d un langage de programmation (comme C++ ou Java). Java). Une action peut tre, par exemple :
La modlisation dune opration peut toutefois tre assimil une utilisation dUML comme langage de programmation visuelle, ce qui nest pas sa finalit. t finalit fi lit. Il ne faut donc pas y avoir recours de manire systmatique mais la rserver des oprations dont le comportement est complexe ou sensible. sensible. ibl
COO 2007/2008 101
Une affectation de valeur des attributs. attributs. un accs la valeur dune proprit structurelle (attribut ou terminaison dassociation). dassociation). La cration dun nouvel objet ou lien. d un lien. Un calcul arithmtique simple. simple. Lmission/la rception dun signal. L mission/la d un signal. ...
COO 2007/2008 102
Action
appeler
(call
operation) : correspond
Action accepter appel (accept call) : Il sagit dune variante de laction accept event pour les appels synchrones. l action synchrones. Action rpondre (reply) : Cette action permet de transmettre p ( p y) p un message en rponse la rception dune action de type accept call. call. Action crer (create) : Cette action permet dinstancier un objet. objet. Action dtruire (destroy) : Cette action permet de dtruire un objet. objet. Action lever exception (raise exception) : Cette action permet de lever explicitement une exception. exception.
Bouhlel Mohamed Salah COO 2007/2008 104
COO 2007/2008
103
Une activit dfinit un comportement dcrit par un squencement organis dunits dont les lments simples sont les actions. actions. Le flot de contrle reste dans lactivit jusqu ce que l t it les traitements soient t t i t termins. termins. i Cest une tape dun processus au cour de laquelle un certain travail est effectu (calcul, recherche, recherche manipulation de donnes). donnes
Bouhlel Mohamed Salah COO 2007/2008 105
Un groupe dactivits est une activit regroupant des noeuds et des arcs. Les noeuds et les arcs arcs. peuvent appartenir plus dun groupe. groupe. Un diagramme dactivits est lui-mme un groupe luid activits dactivits. activits.
COO 2007/2008
106
Un noeud dactivit est un type dlment abstrait yp permettant de reprsenter les tapes le long du flot dune activit. d une activit. Il existe trois familles de noeuds dactivits : les noeuds dexcutions (executable node) d excutions les noeuds objets (object node) les noeuds de contrle (control nodes)
Nud dcision ou fusion le noeud reprsentant une action, qui est une varit de noeud excutable
COO 2007/2008
107
COO 2007/2008
108
Le passage dune activit vers une autre est matrialis par une transition. transition. Graphiquement les transitions sont reprsentes par des p q p p flches en traits pleins qui connectent les activits entre elles. elles.
Nom de lactivit Nom de lactivit Elles sont dclenches ds que lactivit source est termine et provoquent automatiquement et immdiatement le dbut de la prochaine activit dclencher (lactivit cible). cible).
Nud initial
Un noeud initial est un noeud de contrle partir duquel le flot dbute lorsque lactivit enveloppante est invoque. invoque. Un noeud initial possde un arc sortant et pas darc entrant. entrant.
Nud final
Lorsque lun des arcs dun noeud de fin dactivit est activ, lexcution de lactivit enveloppante sachve et tout nud ou flot pp actif au sein de lactivit enveloppante est abandonn. abandonn. Lorsquun fl t d ti atteint un noeud d fi d fl t l fl t en L flot dexcution tt i t d de fin de flot, le flot question est termin, mais cette fin de flot na aucune incidence sur les autres flots actifs de lactivit enveloppante. enveloppante. Les noeuds d fi d flot sont particuliers et utiliser avec L d de fin de fl t t ti li t tili parcimonie
Contrairement aux activits, les transitions sont franchies de manire atomique, en principe sans dure perceptible. perceptible. Les transitions spcifient lenchanement des traitements et dfinissent le flot de contrle. contrle.
Bouhlel Mohamed Salah COO 2007/2008 109
COO 2007/2008
110
Condition surveille
Nud de dcision
parfois la transition ne doit tre utilis que lorsque certains t i vnements se sont produit. t t produit. d it Une condition surveille peut tre affect une transition pour restreindre sont utilisation. utilisation. Cette condition doit tre vrais pour faire le passage lactivit suivante. l activit suivante.
Manger Chorba [Terminer assiette] [T i i tt ] Plat principale
Un noeud de dcision est un noeud de contrle qui permet de faire un choix entre plusieurs flots sortants. Il possde un arc entrant et p p plusieurs arcs sortants. Les nuds de dcision sont gnralement accompagns de g p g conditions de garde pour conditionner le choix.
Si, Si quand l noeud d d i i est atteint, aucun arc en aval nest d le d de dcision t tt i t l t franchissable , cest que le modle est mal form. Lutilisation dun garde [else] est recommande aprs un noeud de dcision car elle garantit un modle bien form. Dans le cas o plusieurs arcs sont franchissables, seul lun dentre eux est retenu et ce choix est non dterministe.
COO 2007/2008
111
COO 2007/2008
112
Un noeud de fusion est un noeud de contrle qui rassemble plusieurs flots alternatifs entrants en un seul flot sortant. sortant. Il nest pas utilis pour synchroniser des flots concurrents p p y (cest le rle du noeud dunion) mais pour accepter un flot parmi plusieurs. plusieurs.
Garde
Remarque
[Solde Suffisant] S ffi t]
[else]
Servir vanille
Servir fraise
Servir p pistache
Graphiquement, il est possible de fusionner un noeud de fusion et un noeud de dcision ou un noeud de dcision ou de fusion avec un noeud de fin de flot, ou avec une activit. activit.
-
COO 2007/2008
113
est un nud de contrle qui spare un flot en plusieurs flots concurrents. concurrents. Un tel noeud possde un arc entrant et plusieurs arcs sortants. sortants. On apparie gnralement un noeud de bifurcation avec un noeud dunion pour quilibrer la concurrence. concurrence.
est un noeud d contrle qui synchronise d t d de t l i h i des fl t flots multiples. multiples. Un tel noeud possde donc plusieurs arcs entrants et un seul arc sortant. Lorsque tous les arcs entrants sont sortant. activs, larc sortant lest galement. galement.
COO 2007/2008 115 Bouhlel Mohamed Salah
relcher embrayage
COO 2007/2008
116
Dans l cas d D le dun di diagramme d ti it partitionn, l dactivits titi les noeuds d dactivits appartiennent forcment une et une seule partition. partition. p Les transitions peuvent, bien entendu, traverser les frontires des partitions. partitions.
Bouhlel Mohamed Salah COO 2007/2008 118
Partition : exemple
UML permet de reprsenter graphiquement le comportement d'une mthode ou le droulement d'un cas d une d un d'utilisation, l'aide des diagrammes d'activits. d'activits. Une activit reprsente une excution d'un mcanisme un mcanisme, droulement d'tapes squentielles. squentielles. Le passage d'une activit vers une autre est matrialis par une transition. transition. Les transitions sont dclenches par la fin d'une activit et p provoquent le dbut immdiat d'une autre (elles sont q ( automatiques). automatiques). En thorie tous les mcanismes dynamiques pourraient thorie, tre dcrits par un diagramme d'activits, mais seuls les ca s es co p e es t essa ts te t d t e mcanismes complexes ou intressants mritent d'tre reprsents. reprsents.
Bouhlel Mohamed Salah COO 2007/2008 120
COO 2007/2008
119
Introduction
Chapitre 3
Le diagramme de classes est considr comme le plus important de la modlisation oriente objet. objet. il est obligatoire lors dune telle modlisation. d une modlisation. Le diagramme de cas dutilisation montre un systme du g y point de vue des acteurs tandis que le diagramme de classes en montre la structure interne. interne. Il permet de fournir une reprsentation abstraite des objets du systme qui vont interagir ensemble pour raliser les cas dutilisation. dutilisation. Il sagit dune vue statique car on ne tient pas compte du facteur temporel dans le comportement du systme. systme. t
Le diagramme de g classe
COO 2007/2008
121
COO 2007/2008
122
Introduction
Le diagramme de classes modlise les concepts du domaine d application dapplication ainsi que les concepts internes crs de toutes pices dans le cadre de limplmentation dune application. application. Chaque langage de Programmation Orient Objets donne un moyen spcifique dimplmenter le paradigme objet (pointeurs ou pas hritage multiple ou pas etc.) mais le pas, pas, etc.), diagramme de classes permet de modliser les classes du systme et leurs relations indpendamment dun langage de y p g g programmation particulier. particulier. Les principaux l L i i lments d cette vue statique sont l de i les classes et leurs relations : association, gnralisation et plusieurs types de dpendances telles que la ralisation et dpendances, lutilisation. lutilisation.
La notion de classe
COO 2007/2008
123
COO 2007/2008
124
la POLO5 qui se tro e dans votre garage est une instance d POLO5 q i trouve otre ne du concept abstrait Automobile. Automobile. Le restaurant les merveille de la mre est une instance du concept abstrait Restaurant
Une classe est la description formelle dun ensemble dobjets ayant une smantique et des caractristiques communes. communes. Un objet est une instance dune classe. Cest une entit d une classe. C est discrte dote dune identit, dun tat et dun comportement que lon peut invoquer. invoquer. Les objets sont des lments individuels dun systme en cours dexcution. d excution excution. Par exemple si lon considre que Homme (au sens tre exemple, l on humain) est un concept abstrait, on peut dire que la personne Mounir est une instance de Homme. Si Homme Homme. tait t it une classe, M l Mounir en serait une i t i it instance d donc un objet. objet.
Une classe est un concept abstrait reprsentant des lments varis comme :
des lments concrets ( : d avions), d l t t (ex des i ) des lments abstraits ( ex : des commandes de marchandises ou services), ), des composants dune application (ex : les boutons des botes de dialogue), des t t d structures i f informatiques ( : d t bl d h h ti (ex des tables de hachage), ) des lments comportementaux (ex : taches) etc. etc.
125
126
Une classe dfinit un jeu dobjets dots de caractristiques communes. communes. Les caractristiques dun objet permettent de d un spcifier son tat et son comportement. comportement.
tat dun objet : Ce sont les attributs ou tout simplement proprits, qui dcrivent ltat dun objet. objet.
Les attributs sont utiliss pour des valeurs de donnes pures, dpourvues didentit, telles que les nombres et les chanes de caractres. caractres. Les proprits dcrites par les attributs prennent des valeurs lorsque la p p p p q classe est instancie. instancie.
Nom de la classe
Comportement dun objet : Les oprations dcrivent les lments d un individuels dun comportement que lon peut invoquer. Ce sont des invoquer. fonctions qui peuvent prendre des valeurs en entre et modifier les attributs ou produire des rsultats. rsultats.
Une opration est la spcification (i.e. dclaration) dune mthode. (i. mthode. Limplmentation (i.e. dfinition) dune mthode est galement appele (i. mthode. mthode.
2007/2008 2007/ COO 2007/2008 127 Bouhlel Mohamed Salah 2007/ COO 2007/2008 2007/2008 128
Le nom de la classe doit voquer le concept dcrit par la classe. classe. Il commence par une majuscule. On peut ajouter des majuscule. informations subsidiaires comme le nom de lauteur de la l auteur modlisation, la date, etc. etc. Pour indiquer quune classe est abstraite, il faut ajouter le motmot-clef abstract. abstract. La syntaxe de base de la dclaration dun nom dune classe est l suivante : t la i t
Les attributs dfinissent des informations quune classe ou j connatre. p un objet doivent connatre. Ils reprsentent les donnes encapsules dans les objets de cette classe. classe. Chacune de ces informations est dfinie par un nom, un type de donnes, une visibilit et peut tre initialis. initialis. Le nom de lattribut doit tre unique dans la classe. La q classe. syntaxe de la dclaration dun attribut est la suivante :
[<Nom_du_paquetage_1>:: ... :: <Nom du paquetage N> ] [<Nom du paquetage 1>:: <Nom_du_paquetage_N> <Nom_de_la_classe> <Nom de la classe> [ { [abstract] [<auteur>] ... } ] [abstract], [<auteur>],
Bouhlel Mohamed Salah COO 2007/2008 129
COO 2007/2008
130
Le type de lattribut (<type>) peut tre un nom de classe, un nom dinterface ou un type de donn p prdfini. prdfini. La L multiplicit ( lti li it (<multiplicit>) d attribut prcise l lti li it ) dun tt ib t i le nombre de valeurs que lattribut peut contenir. contenir. Lorsqu une Lorsquune multiplicit suprieure 1 est prcise il prcise, est possible dajouter une contrainte ({<contrainte>}) pour prciser si l i i les valeurs sont ordonnes l t d ({ordered}) ou pas ({list}). ({list}).
Bouhlel Mohamed Salah COO 2007/2008 131
+ count : int = 0 { 40} t i t {<40} - nom : String - prenom : String = vide + adresse : Adresse =null
COO 2007/2008
132
Par dfaut, chaque instance dune classe possde sa propre copie des attributs de la classe. Les valeurs des attributs peuvent donc diffrer dun objet un autre. Cependant, il est parfois ncessaire d dfi i un t C d t t f i i de dfinir attribut de classe qui garde une valeur unique et partage p par toutes les instances de la classe. Les instances ont accs cet attribut mais nen possdent p pas une copie Un attribut de classe nest donc pas une proprit dune instance mais une proprit de la classe et laccs cet attribut ne ncessite pas lexistence dune l accs l existence d une instance. static en Java ou en C++) ) Graphiquement, un attribut de classe est soulign. p q g
Bouhlel Mohamed Salah COO 2007/2008 133
Ayant une classe appel voiture dans votre y pp diagramme de classe. On voudrais connatre classe. le nombre dinstance de voiture crer. d instance crer. Que faire?? + nbVoiture : int = 0
COO 2007/2008
134
Dans une classe, une opration (mme nom et mme types p ) unique. q de paramtres) doit tre unique. Quand le nom dune opration apparat plusieurs fois avec d une des paramtres diffrents, on dit que lopration est surcharge. surcharge. En revanche, il est impossible que deux oprations ne se distinguent que par leur valeur retourne. retourne. La dclaration dune opration contient les types des paramtres et le type de la valeur de retour, sa syntaxe est la suivante : i t
La direction peut prendre lune des valeurs suivante : l une in : Paramtre dentre pass par valeur. Les modifications du valeur.
p paramtre ne sont pas disponibles pour lappelant. Cest le p p p lappelant. pp comportement par dfaut. dfaut.
out : Paramtre de sortie uniquement. Il n a pas de valeur dentre uniquement. ny niq ement ale r
et la valeur finale est disponible pour lappelant. lappelant.
inout : Paramtre dentre/sortie. La valeur finale est disponible pour dentre/sortie. lappelant. lappelant.
COO 2007/2008 136
Comme pour les attributs de classe, il est possible de dclarer d mthodes d classe. d l des th d de classe. l Une th d de l U mthode d classe ne peut manipuler que d attributs t i l des tt ib t de classe et ses propres paramtres. paramtres.
Une mthode est dite abstraite lorsquon connat son entte mais pas la manire dont elle peut tre ralise. ralise. Une classe est dite abstraite lorsquelle dfinit au moins une mthode abstraite ou lorsquune classe parent contient une lorsqu une mthode abstraite non encore ralise. ralise. On ne peut instancier une classe abstraite. abstraite. Une classe abstraite peut trs bien contenir des mthodes concrtes. concrtes. Une classe abstraite pure ne comporte que des mthodes abstraites. abstraites. En programmation oriente objet, une telle classe est appele une interface. interface. Pour indiquer quune classe est abstraite, il faut ajouter le mot-clef q q , j motabstract derrire son nom. nom.
Bouhlel Mohamed Salah COO 2007/2008 138
Cette mthode na pas accs aux attributs de la classe (i.e. (i. des instances de la classe). classe). Laccs une mthode d classe ne ncessite pas L th d de l it lexistence dune instance de cette classe. classe. Graphiquement, une mthode de classe est souligne. souligne.
Bouhlel Mohamed Salah COO 2007/2008 137
Visibilit
Public ou + : laccs est possible de tous les objets de l accs toutes les autres classes. classes. Private ou - : laccs nest possible que depuis lintrieur des objets. Seules les oprations dfinies dans la classe objets. peuvent manipuler lattribut. lattribut. Protected ou # : laccs est possible pour les objets dune g ) sous classe. (hritage) classe. ( Package ou ~ ou rien : laccs est possible pour les objets l accs appartenant au mme package. package.
COO 2007/2008
139
COO 2007/2008
140
Notion dassociation
Une association est une relation entre deux classes (association binaire) ou plus (association n-aire) qui aire), dcrit les connexions structurelles entre leurs instances. instances. Une association indique donc quil peut y avoir des liens entre des instances des classes associes. associes. Comment une association doit-elle tre modlise ? doitPersonne - nom : String - prenom : String * + salaire() : float travaille pour 1 chiffre_affaire() : float Entreprise raison_sociale : String
141
142
nom : Comme un attribut, une association peut tre nomme. nomme. Le nom est situ proximit de la terminaison, mais contrairement un attribut, ce nom est f t i t tt ib t t facultatif. facultatif. lt tif visibilit : Comme un attribut une association possde une attribut, visibilit. visibilit. La visibilit est mentionne proximit de la terminaison, et plus prcisment, le cas chant, devant le nom de la terminaison. d l t terminaison. i i multiplicit : Comme un attribut une association peut attribut, possder une multiplicit. Elle est mentionne proximit de la multiplicit. terminaison. terminaison. Il nest pas impratif de la prciser. La multiplicit prciser. par df t d dfaut dune association est non spcifie. i ti t spcifie. ifi navigabilit : la navigabilit peut tre prcise. prcise.
Le terme rle dsigne la description de ce que fait lobjet dans la relation la manire dont il y participe participe. Exemple : de nombreux employs participent un projet de manire diffrentes.
Comment vais-je reprsenter a? vais-
COO 2007/2008
143
COO 2007/2008
144
Association rflexive
Employer
Concepteur
Participe
Programmeur
Une association est dite rflexive si elle sapplique a des objets dune mme classe.
Projet
Participe
Pre de
Personne
superviseur 1 * p 1..
Personne
Entreprise
Employ
ouvrier *
employ - nom : String travaille pour employeur raison_sociale : String p g - prenom : String * 1 + salaire() : float chiffre_affaire() : float
Fils de
COO 2007/2008
145
146
Une association binaire est matrialise par un trait plein entre les classes associes. Elle peut tre orne dun nom, associes. avec ventuellement une prcision d sens d l t t ll t i i du de lecture ( ou ). Quand les deux extrmits de lassociation pointent vers la , rflexive. mme classe, lassociation est dite rflexive.
Une association n-aire lie plus de deux classes. classes. On reprsente une association n-aire par un grand losange avec un chemin partant vers chaque classe participante. Le participante. nom d l de lassociation, l cas h t apparat proximit d i ti le chant, t i it du losange. losange.
cours Matiere * Etudiant *
Personne
employ 1..*
travaille pour
employeur 1
Entreprise * Professeur
147
COO 2007/2008
148
Multiplicit ou cardinalit
Navigabilit
La navigabilit indique sil est possible de traverser une association. association. On reprsente graphiquement la navigabilit par une :
exactement un : 1 ou 1..1 ..1 plusieurs : * ou 0..* au moins un : 1..* ..* de un six : 1..6 ..6
flche du ct de la terminaison navigable. navigable. on empche l navigabilit par une croix d ct d l h la i bilit i du t de la terminaison non navigable. navigable. Par dfaut, une association est navigable dans les deux sens. sens.
Dans une association binaire, la multiplicit sur la terminaison cible contraint le nombre dobjets de la d objets classe cible pouvant tre associs un seul objet donn d l classe source. d de la l source.
Produit
Produit
Produit
149
150
Navigabilit : exemple 2
Polygone 1 Dfinit par - sommet 3..*
Qualification
Point P i t
Quand une classe est lie une autre classe par une association, il est parfois prfrable de restreindre la porte de lassociation quelques l d l i ti l lments cibls ( t ibl (comme un ou plusieurs attributs) de la classe. classe. Ces lments cibls sont appels un qualificatif. Un qualificatif. q qualificatif permet donc de slectionner un ou des objets p j dans le jeu des objets dun objet (appel objet qualifi) reli qualifi) par une association un autre objet. objet. Lobjet slectionn par la valeur du qualificatif est appel objet cible. Lassociation est appele association qualifie. cible. L association qualifie. Un qualificatif agit toujours sur une association dont la multiplicit est plusieurs du ct cible (avant que lassociation ne soit qualifie). qualifie).
Bouhlel Mohamed Salah 2007/2008 COO 2007/2008 2007/ 152
La L terminaison d ct d l classe P l i i du de la l Polygone nest pas navigable : cela signifie que les instances de la classe Point ne stockent pas de liste dobjets du type Polygone. d objets Polygone. Inversement, Inversement la terminaison du ct de la classe Point est navigable : chaque objet Polygone contient une liste de Points. Points.
Bouhlel Mohamed Salah 2007/2008 2007/ COO 2007/2008 151
Qualification : exemple
Qualification : exemple 2
Un objet utilise le qualificateur pour accder lautre type (qualifi). (qualifi). Un des avantages est quil permet de rduire la multiplicit. multiplicit. Banque Client 1
Commande Commande C d
qualificateur
Banque
compte
Client
Num_cmd
*
Commande
1 * Personne
* Commande
1 Commande
+Num_cmd +N d
0..2 0 2 Personne
153
154
Classe Association
Par exemple, lassociation Emploie entre une socit et une personne possde comme proprits le salaire et la date dembauche. En ff t dembauche. E effet, ces d d b h deux proprits nappartiennent it ti t ni la socit, qui peut employer plusieurs personnes, ni aux personnes, qui peuvent avoir plusieurs emplois. emplois. Il sagit donc bien de proprits de lassociation Emploie. Emploie. Les associations ne pouvant possder de proprit, il f proprit, faut introduire un nouveau concept pour modliser cette situation : celui de classe-association. classe-association. Une classe-association possde les caractristiques des classep q associations et des classes : elle se connecte deux ou plusieurs classes et possde galement des attributs et des oprations. oprations. Une classe-association est caractrise par un trait classep discontinu entre la classe et lassociation quelle reprsente. reprsente.
Bouhlel Mohamed Salah 2007/2008 2007/ COO 2007/2008 155 Bouhlel Mohamed Salah
Emploie
+ date_embauche : Date + Salaire : float
employ
employeur
Personne P
Societe
156
Contrainte Association
1..*
Voiture V it
Client
Produit
Est il vraiment exacte que nimporte quel personnes peut conduire une voitures?
157
158
Agrgation et composition
Agrgation : Exemple
Agrgation
Lorsque lon souhaite modliser une relation tout/partie o une classe q p constitue un lment plus grand (tout) compos dlments plus petit (partie), il faut utiliser une agrgation. agrgation. Une agrgation est une association qui reprsente une relation dinclusion structurelle ou comportementale dun lment dans un p ensemble. ensemble. Graphiquement, on ajoute un l G hi t j t losange vide d ct d lagrgat. id du t de l t. lagrgat Contrairement une association simple, lagrgation est transitive. transitive. La signification de cette forme simple dagrgation est uniquement conceptuelle. conceptuelle. Elle ne contraint pas la navigabilit ou les multiplicits de lassociation. Elle nentrane pas non plus de contrainte sur la l association association. n entrane dure de vie des parties par rapport au tout. tout.
quipe
11..25
Joueur
1 Voiture V it 1 4
159
160
Agrgation : exemple 2
Pourquoi lagrgation
Elle dfi it Ell dfinit un point d contrle unique pour l bj t i t de t l i lobjet reprsentant lassemblage. lassemblage. Une voiture contrle la voiture. voiture. Si une instruction affecte lensemble de lassemblage, lobjet dtenant le contrle dicte la faon dont les membres rpondent. rpondent. Acclration de la voiture : si on appuie sur la pdale d acclration dacclration on a un ensemble dobjet qui vont interagir d objet pour acclrer. acclrer.
161
162
Agrgation et composition
Composition : exemple
Composition : si le livre est dtruit alors chapitre nexiste plus
La composition, galement appele agrgation composite, dcrit une composition, composite, contenance structurelle entre instances. Ainsi, la destruction de lobjet instances. composite implique la destruction de ses composants. composants. Une instance de la partie appartient toujours au plus une instance de llment composite : l multiplicit d ct composite ne doit pas t ll t it la lti li it du t it d it tre suprieure 1 (i.e. 1 ou 0..1). (i. ..1
Livre
1..1
1..*
Chapitre p
Graphiquement, on ajoute un losange plein du ct de lagrgat. lagrgat. Les notions dagrgation et surtout de composition posent de nombreux d agrgation problmes en modlisation et sont souvent le sujet de querelles dexperts et sources de confusions. confusions. Ce que dit la norme UML Superstructure version 2.1.1 reflte dailleurs trs bien le flou qui entoure ces notions : Precise semantics of shared aggregation varies by application area and modeler. The order and way in which part instances are created is not defined.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 163
chiquier
64
Case
164
Gnralisation et hritage
Gnralisation et hritage
La gnralisation dcrit une relation entre une classe gnrale (classe de base ou classe parent) et une classe spcialise (sous-classe). (sous-classe). La classe spcialise est intgralement cohrente avec la classe de base, base mais comporte des informations supplmentaires (attributs (attributs, oprations, associations). Un objet de la classe spcialise peut tre associations). utilis partout o un objet de la classe de base est autoris. autoris. Dans le langage UML, ainsi que dans la plupart des langages objet, cette relation de gnralisation se traduit par le concept dhritage. On dhritage. parle l l galement d relation dh it t de l ti dhritage Ai i lh it Ainsi, lhritage permet l t la classification des objets. objets. Le symbole utilis pour la relation dhritage ou de gnralisation est une flche avec un trait plein dont la pointe est un triangle ferm g p g gnral. dsignant le cas le plus gnral.
La classe enfant possde toutes les caractristiques des ses classes parents, mais elle ne peut accder aux caractristiques prives de cette dernire. dernire. Une classe enfant peut redfinir (mme signature) une ou plusieurs mthodes de la classe parent. Sauf indication contraire un objet parent. contraire, utilise les oprations les plus spcialises dans la hirarchie des classes. classes. Toutes les associations de la classe parent sappliquent aux classes drives. drives. Une instance dune classe peut tre utilise partout o une instance de sa classe parent est attendue. attendue. Une classe peut avoir plusieurs parents, on parle alors dhritage multiple
COO 2007/2008 2007/ 166
165
Interface
Le rle dune interface est de regrouper un ensemble de proprits et doprations assurant un service cohrent. cohrent. Lobjectif est de diminuer le couplage entre deux classeurs. classeurs. La notion dinterface en UML est trs proche de la notion dinterface en Java. d interface Java. Une interface est reprsente comme une classe except labsence du mot-clef abstract et lajout du strotype mot interface Une interface doit tre ralise par au moins une classe et peut lt par plusieurs. t ltre plusieurs. l i Une classe pe t trs bien raliser plusieurs interfaces. peut pl sie rs interfaces.
Bouhlel Mohamed Salah 2007/ COO 2007/2008 2007/2008 168
Interface : Exemple
Gnralisation et hritage
1. Proposez une modlisation sous forme de classe de cette notion de rpertoire rpertoire.
Personne P
realize
i t f interface Inscription
+ Calculer_tarif() : double + Dure_emprunt() : Date
2. Proposez une modlisation sous forme de classe de cette notion de fichier fichier. 3. Faites coexister ces deux notions sur un mme diagramme en en proposant une gnralisation. 4. Proposez une modlisation de ces relations. 5. une mthode pour l ff th d leffacement et l renommage. t t le une mthode permettant daccder au rpertoire parent, une mthode permettant d li h d de lister son contenu et une mthode permettant de se rendre dans lun de ses sous-rpertoires en prcisant sousson nom. 6. Compltez votre diagramme de classe en consquence consquence.
Etudiant Et di t
Enseignent
Toutes les proprits structurelles des rpertoires et des fichiers sont prives.
169
Exemple 1/6
Exemple 2/6
Un rpertoire possde un nom et des droits de lecture, d excution d critures lecture dexcution et dcritures. critures.
2. Proposez une modlisation sous forme de classe de cette notion de fichier. fichier.
Proposez une modlisation sous forme de classe de cette notion de rpertoire. rpertoire. Repertoire p Nom : String Ecriture : boolean Lecture : boolean Execution : boolean
171
172
Exemple 3/6
Exemple 4/6
3. Faites coexister ces deux notions sur un mme diagramme en en proposant une gnralisation gnralisation.
Fichier
Repertoire
Fichier
*
Repertoire
173
174
Exemple 5/6
Exemple 6/6
5 et 6
Fichier Fi hi
Fichier
Repertoire
+ effacer() : void
File {abstract}
- Nom : String - Ecriture : boolean - Lecture : boolean - Execution : boolean + effacer() : void {abstract} + renommer(String) : void + getNom() : String + getdroit(String) : boolean + getDroit(): String
Repertoire
+ parent() : Repertoire + ls() : void + cd (String) : repertoire + effacer() : void
175
176
Nous aurons rgulirement recours ce mta-langage pour mtadcrire des syntaxes de dclaration. dclaration. Ce mta-langage contient certains mta-caractres : mtamta [ ] : l les crochets indiquent que ce qui est lintrieur est h t i di t i t li t i t optionnel ;
< > : les signes infrieur et suprieur indiquent que ce qui est lintrieur est plus ou moins libre ; par exemple, la syntaxe de dclaration dune variable comme compteur : int est <nom_variable> : <type> ; <nom variable> ' ' : les cotes sont utiles quand on veut utiliser un mtamtacaractre comme un caractre ; par exemple pour dsigner un exemple, crochet ([) il faut crire '[' car [ est un mta-caractre ayant une mtasignification spciale ; ... : permet de dsigner une suite de squence de longueur non dfinie, le contexte permettant de comprendre de quelle suite il sagit. s agit agit.
COO 2007/2008 2007/ 177
Sommaire
Introduction Analyse d b A l des besoins et di i t diagramme d cas d tili ti de dutilisation Diagramme dactivit Diagramme de classe
Introduction Notion Objet N ti Obj t Notion de lien Diagramme classe vs diagramme objet Exemple
COO 2007/2008 2007/ 180
Diagramme
Objet
Diagramme dtat transition Diagramme de squence Diagramme de collaboration Diagramme de composant Diagramme de dploiement Les nouveaut de UML 2.0 Prsentation des t d d cas P t ti d tudes de
179
Introduction
Le diagramme de classe modlise les rgles concernant les types dentits tandis que le diagramme objet reprsente des faits concernant ces entits.
Introduction
Les objet sont des classes relles, comme une personne, personne livre ou chaise chaise,
Ex E :
supposons que le diagramme de classe modlise les rgle indiquant quune personne peut possder des livre En revanche le diagramme objet pourrait reprsenter le fait f it que vous possdez un exemplaire d ce li d l i de livre.
COO 2007/2008 2007/ 182
181
Introduction
simplement p
Un objet correspond a une instance de la classe. Un lien est cr a partir dune transition d une transition.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 183 Bouhlel Mohamed Salah COO 2007/2008 184
Objet
Un objet est reprsenter par deux compartiment :
Objet anonyme
Le nom de lobjet avec le nom de sa classe. NomObjet : NomClasse La valeur des attributs avec leurs nom. nomAttribut = valeur Att ib t l
Personne P foulen : Personne - Nom : String -P Prenom : String St i -Age : int + getAge() : int +getNom() : String Nom = Ben Foulen Prenom = Foulen Age = 25
Un objet anonyme
Un objet
On utilise les objets anonymes dans le cas ou n importe nimporte quel objet se comporte de la mme faon
185 Bouhlel Mohamed Salah COO 2007/2008 2007/ 186
La classe
Bouhlel Mohamed Salah COO 2007/2008 2007/
Tracer un diagramme de classe et supposer g pp quil est correct est un pige dans lequel il est facile de tomber tomber.
Le diagramme objet est un des diagramme qui permet de tester la validit du diagramme de classe
D. Classe vs D. Objet
187
188
D. Objet
Les classes ont 3 1. Les objets ont deux compartiments : nom compartiments : nom et nom, attributs attributs et mthodes Le nom de la classe est 2. Le format du nom de NClass. seule dans le lobjet est NObj : NClass. compartiment du nom. nom. On O peut parfois omettre l t f i tt le nom de lobjet objet anonyme. anonyme.
3. Le compartiment des 3. Les objets dfinissent attributs. attributs dfinit les les valeurs des attributs. proprits de lattribut. lattribut.
2.
4. Les oprations sont 4. Les opration ne sont prsentes d t dans l classe. pas incluses car elle la classe. l q p seront identique pour tous les objets. objets.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 190
189
Enfin un exemple
192
1 : ProdFournisseur
ProdFournisseur P dF i
*
Livraison
* *
ProdAssembl
432 : Livraison
22 : ProdAssembl
2 : ProdFournisseur
3 : ProdFournisseur
193
194
Modification lagrgation
du
diagramme
*
de
classe
en
ajoutant
ProdFournisseur
* 1..*
1 : ProdFournisseur
Livraison
* *
432 : Livraison
22 : ProdAssembl
2 : ProdFournisseur
ProdAssembl
195
COO 2007/2008
196
Les produits assembls et produit fournisseur peuvent faire parti dun produit assembl?
4 : ProdFournisseur
1 : ProdFournisseur
ProdFournisseur
* 2..*
432 : Livraison
22 : ProdAssembl
2 : ProdFournisseur
Livraison
* *
ProdAssembl
23 : ProdAssembl
4 : ProdFournisseur
197
COO 2007/2008
198
Fin chapitre
A vous de jouer
Livraison
* Livre 1..* 1 * 2..*
Produit
Srie de TD N 5 N
ProdFournisseur
ProdAssembl
199
200
Sommaire
Introduction Analyse des besoins et diagramme de cas dutilisation Diagramme dactivit Diagramme de classe Diagramme de squence Diagramme de collaboration
202
Un peut dhistoire Le gnie logiciel Lapproche oriente objet L approche Unified Modeling Language (UML) 2 Truck Unified Process (2TUP)
COO 2007/2008 2007/ 203 Bouhlel Mohamed Salah COO 2007/2008 2007/ 204
Introduction
Introduction
Les diagrammes dtats-transitions dUML dcrivent le comportement interne dun objet laide dun automate tats d un l aide d un finis.
Ils prsentent les squences possibles dtats et dactions quune instance de classe peut traiter au cours de son cycle de vie en raction des vnements discrets (invocations de mthode) mthode).
Cet historique est caractris par un tat global qui est un jeu de valeurs dobjet pour une classe donne produisant la d objet, donne, mme rponse face aux vnements.
Le diagramme dtats-transitions est le seul diagramme UML, d tats transitions offrir une vision complte et non ambigu de lensemble des comportements de llment auquel il est attach.
Toutes les instances dune mme classe ayant le mme tat global ragissent de la mme manire un vnement. Il ne faut f t pas confondre l notions dt t global et dt t f d les ti dtat l b l t dtat.
Concrtement, un diagramme dtats-transitions est un graphe qui reprsente un automate tats finis cest--dire une machine finis, c est dire dont le comportement des sorties ne dpend pas seulement de ltat de ses entres, mais aussi dun historique des sollicitations passes. passes
Un automate tats finis est graphiquement reprsent par un graphe comportant des tats, matrialiss par des g , , rectangles aux coins arrondis, et des transitions, matrialises par des arcs orients liant les tats entre eux.
Allum
Appuyer Appuyer
Cet automate tats finis illustre en fait le fonctionnement dun p interrupteur dans une maison. Lorsque lon appuie sur un bouton dclairage, la raction de l clairage lclairage associ dpendra de son tat courant (de son historique)
teint t i t
Exemple simple dautomate tats finis.
sil la lumire est allume, elle steindra, t i d s e e si elle est teinte, elle sallumera te te, e e s a u e a
COO 2007/2008 2007/
207
COO 2007/2008
208
Etat : Notation
Le nom de ltat peut tre spcifi dans le rectangles et doit tre t unique d i dans l di le diagrammes dt t t dtats-transitions, ou d iti dans ltat enveloppant. On peut lomettre, ce qui produit un tat anonyme. anonyme
Bien entendu le modle dynamique du systme comprend entendu, plusieurs diagrammes dtats-transitions. Il est souhaitable de construire un diagramme dtats-transitions pour chaque classeur ( i l plus souvent, est une classe) possdant un l (qui, le l t t l ) d t comportement dynamique important.
Un tat peut tre partitionn en plusieurs compartiments spars par une ligne horizontale.
Le premier compartiment contient le nom de ltat l tat les autres peuvent recevoir des transitions, ou des sous-tats.
Tous les automates tats finis des diagrammes dtatsg transitions dun systme sexcutent concurremment et peuvent donc changer dtat de faon indpendante.
Nom tat
tat initial
Les diagrammes dtats-transitions permettent justement de g p j spcifier les ractions dune partie du systme des vnements discrets.
Ltat final est un pseudo tat qui indique que le diagramme dtats transitions est dtats-transitions, termin.
Un vnement se produit un instant prcis et est dpourvu de dure Quand un vnement est reu une transition peut dure. reu, tre dclenche et faire basculer lobjet dans un nouvel tat.
tat final
211
Un signal est destin explicitement vhiculer une y q j communication asynchrone sens unique entre deux objets.
Lobjet expditeur cre et initialise explicitement une j p p instance de signal et lenvoi un objet explicite ou tout un groupe dobjets.
Il nattend pas que le destinataire traite le signal pour poursuivre son droulement La rception de signal est un droulement. vnement pour le destinataire.
La syntaxe dun signal est la suivante : <nom_vnement> ( [ <paramettre> : <type> [; <paramettre> : <t < tt > <type> ... ] ] ) >
Bouhlel Mohamed Salah COO 2007/2008 2007/ 213
Il sagit dune manire dclarative dattendre quune condition soit satisfaite. La syntaxe dun vnement de changement est la suivante :
La syntaxe dun vnement dappel est la mme que celle dun signal.
Par contre, les vnements dappel sont des mthodes dclares au niveau du diagramme de classes classes.
when ( <condition_boolenne> ) _
Un vnement de changement est valu continuellement jusqu ce quil d i j il devienne vrai, et cest ce moment-l que l i t t t l la transition se dclenche.
COO 2007/2008
215
216
Transition : Notion
Une transition dfinit la rponse dun objet loccurrence dun vnement. Ell li gnralement, d d t Elle lie, l t deux t t E1 et E2 et tats t t indique quun objet dans un tat E1 peut entrer dans ltat E2 et excuter certaines activits si un vnement dclencheur se activits, produit et que la condition de garde est vrifie.
Par dfaut, le temps commence scouler ds lentre dans ltat courant l tat courant.
La syntaxe dun vnement temporel spcifi de manire d un relative est la suivante : after ( <dure> )
La syntaxe dune transition est la suivante : [ <vnement> ][ '[' <garde> ']' ] [ '/' <activit> ] [ ] /
Le mme vnement peut tre le dclencheur de plusieurs transitions quittant un mme tat.
Un nement temporel spcifi de manire absol e est vnement absolue dfini en utilisant un vnement de changement : when ( date = <date> )
Chaque transition avec le mme vnement doit avoir une condition de garde diffrente diffrente.
Condition de garde
Un garde est une expression logique sur les attributs de lobjet, l bj t associ au di i diagramme dt t t dtats-transitions, ainsi que sur iti i i les paramtres de lvnement dclencheur. La condition de garde est value uniquement lorsque lvnement l vnement dclencheur se produit produit.
une opration primitive comme une instruction dassignation ; lenvoi dun signal ; lappel dune opration ; une liste dactivits etc d activits, etc.
Si lexpression est fausse ce moment l, la transition ne se dclenche pas, si elle est vraie, la transition se dclenche et ses effets se produisent.
La faon de spcifier lactivit raliser est laisse libre l activit (langage naturel ou pseudo-code).
Lorsque lexcution de leffet est termine, ltat cible de la transition devient actif.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 219 Bouhlel Mohamed Salah COO 2007/2008 2007/ 220
Transition externe
Transition dachvement
Une transition dpourvue dvnement dclencheur explicite se dclenche la fin de lactivit contenue dans ltat source (y compris les tat imbriqus).
tat source
tat cible
Une transition externe est une transition qui modifie ltat actif.
Elle peut contenir une condition de garde qui est value l au moment o l ti it contenue d t lactivit t dans lt t ltat sachve, et non pas ensuite.
Il sagit du type de transition le plus rpandu. Elle est reprsente par une flche allant de ltat source vers ltat l tat l tat cible.
La figure ci dessus illustre la reprsentation graphique dune transition externe entre deux tats.
Bouhlel Mohamed Salah COO 2007/2008 221
Les transitions de garde sont, par exemple, utilises pour connecter l t les t t i iti tats initiaux et l t les t t tats historiques avec leur tat successeurs puisque ces pseudo-tats pseudo tats ne peuvent rester actifs actifs.
COO 2007/2008
222
Transition interne
Les rgles de dclenchement dune transition interne sont les mmes que pour une transition externe except :
Transition interne
Les transitions internes possdent des noms dvnement prdfinis correspondant des dclencheurs particuliers : entry, exit, do et include.
Une transition interne ne possde pas dtat cible d tat Ltat actif reste le mme la suite de dclenchement. dclenchement
son
entry entry permet de spcifier une activit qui saccomplit quand on entre dans ltat. exit exit permet de spcifier une activit qui saccomplit quand on sort de ltat. do Une activit do commence ds que lactivit entry est termine. termine Si une transition se dclenche pendant que lactivit do l activit est en cours,cette dernire est interrompue et lactivit exit de ltat sexcute. include permet dinvoquer un sous-diagramme dtatstransitions.
COO 2007/2008 2007/ 224
La syntaxe dune transition interne reste la mme d une que celle dune transition classique.
Par contre, les transitions internes ne sont pas reprsentes par des arcs mais sont spcifies dans un compartiment de leur tat associ
Nom Etat Entry / action 1 y Exit / action 2 Do / action 3 Evt / action 4 Include
Exemples
COO 2007/2008
225
COO 2007/2008
226
Rveil sonne
Dmarrer
Endormis
En cours
Pause !!
En arrt
Arrter
En attente
Porte ouverte Porte ouverte
veill En marche
COO 2007/2008
227
228
Exemple : personne
Transition dentr : excuter a lentr de ltat Transition de sorti : excuter a la sorti de ltat l tat Mari Evt / action :a lapparition de lvnement faire activit
Malentendu Entente Remariage
Clibataire
Arrter Mort M t
Veuf
Entry E t / set echo invisible t h i i ibl Exit / set echo normale Character / t it caractre Ch t traiter t Help / afficher aide Clear / remise a 0 du mp After (20s) / exit
COO 2007/2008 2007/ 230
229
ETAT
E1 [Cond 1] / a0
E4 [Cond 2] / a3
Si E1 est activ : on commence par ralis laction sur la transition dentr puis laction dentr puis laction associ a ltat. E1 a0 puis a1 puis a6.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 231 Bouhlel Mohamed Salah COO 2007/2008 2007/ 232
ETAT E1 [Cond 1] / a0
E4 [Cond 2] / a3
Si E2 est activ : on commence par interrompre lactivit en cour l activit puis on excute laction interne puis on reprend laction de ltat. (le contexte de lactivit est sauv lors de son interruption) E2 interruption de a6 puis lancer a4 puis reprise de a6. 4 i i d 6
Bouhlel Mohamed Salah COO 2007/2008 2007/ 233
Si E4 est activ : on commence par interrompre lactivit en cours p p puis on excute laction de sortie puis laction sur la transition de sortie. Le contexte de laction nest pas sauvegard. E4 activ interruption a6 puis a2 puis a2 puis a3
Bouhlel Mohamed Salah COO 2007/2008 2007/ 234
E4 [Cond 2] / a3
Si E3 est activ : on commence par interrompre lactivit en cours puis on excute laction de sortie puis laction associ a la transition propre puis laction dentr puis lactivit associ a ltat (rinitialisation). (rinitialisation) E3 activ interruption a6 puis a2 puis a5 puis a1 puis relancer a6
Bouhlel Mohamed Salah COO 2007/2008 2007/ 235 Bouhlel Mohamed Salah COO 2007/2008 2007/ 236
Point de jonction
Les points de jonction sont un artefact graphique (un pseudo-tat en l d t t loccurrence) qui permet d partager d ) i t de t des segments de transition, lobjectif tant daboutir une notation plus compacte ou plus lisible des chemins alternatifs alternatifs.
tat t t 1 tat 2
E1 [A>0 and b>0] E2 [A>0 and b>0] E2 [A>0 and b=0] E2 [A>0 and b<0]
Un point de jonction peut avoir plusieurs segments de transition entrante et plusieurs segments de transition sortante.
Par contre, il ne peut avoir dactivit interne ni des transitions sortantes dotes de dclencheurs dvnements d vnements.
tat 1 tat 2
E1 [A>0]
[b=0] [b>0]
E2 [A>0]
[b<0]
237
238
Point de dcision
Un point de dcision possde une entre et au moins deux sorties. C t i ti Contrairement un point d j t i t de jonction, l ti les gardes d situes aprs le point de dcision sont values au moment o il est atteint atteint.
Chercher client
[Client non trouv]
Cela permet de baser le choix sur des rsultats obtenus en franchissant le segment avant le point de choix.
Il ne sagit pas dun tat qui peut tre actif au cours dun laps s agit d un d un de temps fini. Lorsquun chemin passant par un point de jonction est emprunt (donc lorsque la transition associe est dclenche) tous les gardes le long de ce chemin doivent p g svaluer vrai ds le franchissement du premier segment.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 239
Si, quand le point de dcision est atteint, aucun segment en aval nest franchissable, cest que le modle est mal form.
Il est possible dutiliser une garde particulire, note [else], sur un des segments en aval dun point de choix.
Lutilisation dune clause [else] est recommande aprs un point d d i i car elle garantit un modle bi f i t de dcision ll tit dl bien form.
Go / validerEntre
[entre valide]
Saisie formulaire
[else]
Demander conf
Afficher problmes
241
242
tat composite
Un tat composite est un tat dcompos en rgions contenant chacune un ou plusieurs sous-tats. t t h l i t t
Quand un t t composite comporte plus d Q d tat it t l dune rgion, il est i t qualifi dtat orthogonal. Lorsquun tat orthogonal est actif, un sous tat direct de chaque rgion est simultanment actif il sous-tat actif, y a donc concurrence.
Chercher client
[Client non trouv]
Lutilisation dtats composites permet de dvelopper une spcification par raffinements raffinements.
Une notation abrge permet dindiquer quun tat est d indiquer qu un composite et que sa dfinition est donne sur un autre g diagramme.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 243 Bouhlel Mohamed Salah
Notation abrger
COO 2007/2008 2007/ 244
Concurrence
Un tat orthogonal est un tat composite comportant plus d une rgion, dune rgion chaque rgion reprsentant un flot dexcution d excution.
Une transition ayant pour source la frontire dun tat composite est quivalente une transition qui sapplique tout sous-tat d lt t composite source. t t de ltat it
Graphiquement, Graphiquement dans un tat orthogonal les diffrentes orthogonal, rgions sont spares par un trait horizontal en pointill allant du bord gauche au bord droit de ltat composite.
Par contre si la transition ayant pour source la frontire dun contre, d un tat composite ne porte pas de dclencheur explicite (i.e. sil g ), sagit dune transition dachvement), elle est franchissable quand ltat final de ltat composite est atteint.
Chaque rgion peut possder un tat initial et final. Une transition qui atteint la bordure dun tat composite orthogonal d un est quivalente une transition qui atteint les tats initiaux de g toutes ses rgions concurrentes.
Les transitions peuvent galement toucher des tats de diffrents niveaux dimbrication en traversant les frontires des tats composites composites.
Toutes les rgions concurrentes dun tat composite g p orthogonal doivent atteindre leur tat final pour que ltat composite soit considr comme termin.
Concurrence : exemple
Prparer boisson et rendre monnaie
Prparer boisson Entry/placer goblet Do/servir liquide Terminer prparation Do/ajouter sucre
Concurrence : exemple
Il est galement possible de reprsenter ce type de Prparer boisson et rendre monnaie comportement au moyen de transitions concurrentes. D t ll t t d t iti t De telles transitions sont qualifies de complexes.
Prparer boisson Entry/placer goblet Do/servir liquide Terminer prparation Do/ajouter sucre
Goblet retir/
248
Exemple : Voiture
Reculer
Point mort
Stop Avance Stop
Marche arrire
En arrt
Arrter
En attente
Porte ouverte Porte ouverte
Divorc
+ + -
1re
2me
249
250
Exercice : nonc
On veut modliser un rveil matin qui dispose de trois boutons : alarme on/off, arrt d l sonnerie et reglage d b t l / ff t de la i t l de lalarme. A tous moment le rveil dispose dune heure d alarme, l heure dalarme lheure a laquelle il doit sonner Cette heure dalarme sonner. d alarme quand on met lalarme sur on . Chaque appui sur les q , boutons construit un vnement qui dclenche une transition, si le rveil teint dans un tat sensible lvnement:
TD1
TD2
Mini projet
Si le rveil est dsarm et si on appui sur alarme On, il passe dans ltat lt t arm. Si le rveil est arm ou est entrain de sonner et si on appui sur alam off il passe dans ltat dsarm. p Si le rveil est entrain de sonner et si on appui sur arret de la sonnerie il passe dans ltat arm.
Semaine bloque
Passer examen
Bouhlel Mohamed Salah COO 2007/2008 2007/ 251
Par ailleurs si lheure dalarme est atteinte et si le rveil est arm, il se met a sonner. Quand la sonnerie cesse de sonner le rveil passe automatiquement a ltat arm l tat arm.
Exercice : Solution
Fin chapitre
E1/ alarmOn(H_Alarm)
E2[Heure=H_Alarm]
Dsarm
Arm
Sonner
Do / sonner
E3/alarmOFF
Sommaire
Introduction Analyse des besoins et diagramme de cas dutilisation Diagramme dactivit Diagramme de classe
Diagramme de squence
Diagramme de collaboration Diagramme dtat transition d tat Diagramme de composant Diagramme de dploiement Les nouveaut de UML 2.0 Prsentation des t d d cas P t ti d tudes de
COO 2007/2008
256
Introduction
Introduction
257
258
Introduction
La vue statique reprsente la facon dont les objets sont dfinis et assembls en une structure Elle ne montre pas structure. comment les objets se comportent lorsque le programme fonctionne.
Introduction
Avec les cas dutilisation, nous avons modliser les fonctions du systmes et dvelopper les scnarios dcrivant la faon dont le systme doit se comporter lorsque ces fonctions sont utilises t tili
Le diagramme de squence illustre les intractions entre objet d bj t dans l t le temps. L Les i t ti intractions montrent comment l t t t les objets schangent des informations.
Chaque fois quun objet envoie un message a un autre j , ( q p objet, il sadresse a son interface (invoque une opration de cet objet)
Le diagramme de squence permet de passer de la description littrale des comportements dans les scnarios au opration/interface du diagramme de classe.
Par consquent si nous pouvons modliser les interaction, nous verrons apparatre les interfaces/oprations que les objets doivent comporter comporter.
Les principales informations contenues dans un diagramme de squence sont les messages changs entre les objets, prsents dans un ordre chronologique.
260
Composant de reprsentation
Le diagramme de squence est modlis au g q niveau des objets et non au niveau des classes. classes
261
262
Message
Un message dfinit une communication particulire entre des lignes de vie vie.
foulen P f l : Personne
La ligne de vie est identifie par une ligne verticale pointill dirig vers g p g le bas a partir de chaque objet.
lenvoi dun signal. linvocation dune opration. la ti l cration ou l d t ti d la destruction dune i t instance.
La dure reprsent dpend du scnario et des autres comportements q que nous modlisons.
Il est reprsent par une flche, le type de flche correspond au t d type d message. de
Message Synchrone Linvocation dune opration est le type de message le plus utilis en programmation objet. Dans la pratique, la plus part des invocations sont synchrones, lmetteur reste alors bloqu le temps que y , q p q dure linvocation de lopration. Ce message peut tre suivi dune rponse qui se d une reprsente par une flche en pointill
Objet1 : Classe1 Objet2 : Classe2
Objet1 : Classe1
Objet2 : Classe2
Message synchrone
Message de M d rponse
Bouhlel Mohamed Salah COO 2007/2008 2007/ 265 Bouhlel Mohamed Salah
Ligne de vie
266
Message Asynchrone Ils nattendent pas de rponse et ne bloquent pas lmetteur qui ne sait pas si le message arrivera destination, destination le cas chant quand il arrivera et sil sera s il trait par le destinataire.
Un signal est, par dfinition, un message asynchrone. Une interruption ou un vnement sont de bon exemple de signaux signaux.
Objet1 : Classe1 Objet2 : Classe2
Messages de cration et destruction dinstance La cration dun objet est matrialise par une flche qui pointe sur le sommet dune ligne de vie. La destruction dun objet est matrialise par une croix q qui marque la fin de la ligne de vie de lobjet. La q g j destruction dun objet nest pas ncessairement conscutive la rception dun message.
Objet1 : Classe1
create destroy
Objet2 : Classe2
267
COO 2007/2008
268
Message de rponse
La syntaxe de rponse un message est la suivante : [ [<attribut> = ] message [ : <valeur_de_retour>] g ]
[ '['<cond>']' [ *[||] ['['<iter>' ]' ] ] :] [<var> :=] <msg>([<par>]) [ <cond> ] [||] [ [ <iter> ] : ]
<cond> est une condition sous forme dexpression cond d expression boolenne entre crochets. <iter> spcifie lenvoi squentiel (ou en parallle, avec ||) de plusieurs message. O d l i On peut omettre cette t tt tt spcification et ne garder que le caractre * (ou *||) pour dsigner un message rcurrent envoy un certain nombre de fois. <var> est la valeur de retour du message, qui sera par exemple t l transmise en paramtre un autre message. i t t <msg> est le nom du message. <par> d i < > dsigne l paramtres ( ti les t (optionnels) d message. l ) du
COO 2007/2008 269
Client Chercher("Tintin")
nbLivre = Chercher("Tintin"): 42
270
les
oprateurs
Loprateur L t combin.
conditionne diti
la l
signification i ifi ti
du d
fragment f t
Les oprateurs de choix et de boucle : alternative, option, break et loop. Les oprateurs contrlant lenvoi en parallle de messages : parallel et critical region. Les oprateurs contrlant lenvoi de messages : ignore, p g g , consider, assertion et negative. Les oprateurs fixant lordre denvoi des messages : weak sequencing , strict sequencing.
COO 2007/2008 2007/ 272
Les fragments combins permettent de dcrire des diagrammes d squence d manire compacte. di de de i t
Les fragments combins peuvent faire intervenir lensemble des entits participant au scnario ou juste un sous-ensemble.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 271
Loprateur alternative, ou alt, est un oprateur L t lt ti lt t t conditionnel possdant plusieurs oprandes. Cest un peu lquivalent dune excution choix multiple (condition l quivalent d une switch en java). Chaque oprande dtient une condition de garde. Labsence de condition de garde implique une condition vraie (true). La condition else est vraie si aucune autre condition nest vraie. Exactement un oprande d t l condition est vraie est E t t d dont la diti t i t excut. Si plusieurs oprandes prennent la valeur vraie, le choix est non dterministe.
COO 2007/2008 2007/ 273
Un fragment combin de type loop possde un sousfragment et spcifie un compte minimum et maximum (boucle) ainsi quune condition de garde. La syntaxe de la boucle est la suivante : loop[ '('<minInt> [ ',' <maxInt> ] ')' ] La condition de garde est place entre crochets sur la ligne de vie La boucle est rpte au moins minInt fois avant vie. quune ventuelle condition de garde boolenne ne soit teste. Tant que la condition est vraie, la boucle continue, au plus maxInt fois fois.
COO 2007/2008 2007/ 274
Exemple
: Case Joueur dvoiler() alt [mine]
[numrote]
Sommaire
Voisines[i]: Case : Partie perdre() testGagner()
Introduction Analyse des besoins et diagramme de cas dutilisation Diagramme dactivit Diagramme de classe Diagramme de squence Diagramme de collaboration Diagramme dtat transition g
[vide] [ id ]
Loop (i=voisine)
dcouvrir()
275
276
Introduction
Les diagrammes de composants et les diagrammes de dploiement sont les deux derniers types de vues statiques en UML.
Diagramme de composant
Les premiers dcrivent le systme modlis sous forme de composants rutilisables et mettent en vidence leurs relations de dpendance. d d d
Les seconds se rapprochent encore plus de la ralit physique, puisquils identifient
Diagramme de dploiement
les lments matriels (PC, Modem, Station de travail, Serveur, ( , , , , etc.), leur disposition physique (connexions) et la disposition des excutables (reprsents par des composants) sur ces lments matriels.
COO 2007/2008
278
Lors de la construction, on utilise des composants fentres, portes, murs. Ce sont des choses physiques qui existent dans le monde rel.
Ils rendent des services mais dfinissent leurs exigences (taille, espace, etc.).
De mme, dans un systme informatique, le modle logique dans une application permet de visualiser, spcifier et documenter la structure et le comportement des entits qui collaborent. p q
La construction va sappuyer sur des composants qui existent dans le monde des ordinateurs : librairies fichiers tables documents excutables librairies, fichiers, tables, excutables, etc. Un composant dfinit les services qu'il rend et aussi les services dont il est en attente pour pouvoir fonctionner.
279
COO 2007/2008
280
Introduction
La programmation par composants constitue une volution technologique soutenue par de nombreuses plateformes (composants EJB, CORBA, .Net, WSDL, . . .). Ce type de programmation met l ti t laccent sur l rutilisation d composant t la tili ti du t et lindpendance de son volution vis--vis des applications qui l tili i lutilisent. t
Or, la notion de classe, ne constitue pas une rponse adapte la problmatique de la rutilisation rutilisation.
Pour faire face ce problme les notions de patrons et de problme, canevas dapplications ont perc dans les annes 1990 pour p p p g q ensuite laisser la place un concept plus gnrique et fdrateur : celui de composant.
La programmation oriente composant sintgre trs bien dans le contexte de la programmation oriente objet puisquil p g j p q ne sagit, finalement, que dun facteur dchelle. En effet, lutilisation de composants est assimilable une approche p pp objet, non pas au niveau du code, mais au niveau de larchitecture gnrale du logiciel.
281
Dfinition de composant
Un composant est une partie physique et remplaable dun systme qui sait faire et fournit la ralisation dun ensemble dinterfaces.
Notion de composant
Les fonctionnalits quil encapsule doivent tre cohrentes entre elles et gnriques (par opposition spcialises) puisque sa vocation est dtre rutilisable. Un composant est une unit autonome reprsente par un classeur structur, strotyp component, comportant une ou plusieurs interfaces requises ou offertes offertes.
Son comportement interne gnralement ralis par un interne, ensemble de classes, est totalement masqu : seules ses p p interfaces sont visibles. La seule contrainte pour pouvoir substituer un composant par un autre est de respecter les interfaces requises et offertes.
Bouhlel Mohamed Salah COO 2007/2008 283 Bouhlel Mohamed Salah COO 2007/2008 2007/ 284
Exemple de composant
Exemples de composant
Reprsentation classique dun composant et de ses interfaces requise (reprsent par un demi-cercle) et offerte (reprsente par un cercle) Reprsentation dun composant accompagne de la reprsentation explicite de ses interfaces requise et offerte.
Bouhlel Mohamed Salah COO 2007/2008 2007/ 285 Bouhlel Mohamed Salah COO 2007/2008 286
Exemples de composant
Notion de port
Un port est un point de connexion entre un classeur et son environnement.
Graphiquement, un port est reprsent par un petit carr cheval sur la bordure du contour du classeur On peut faire figurer le nom du port classeur. proximit de sa reprsentation.
Parfois, Parfois il est reli directement un autre port situ sur la limite du composant englobant par une flche en trait plein, pouvant tre strotype delegate, et appele connecteur de dlgation.
Reprsentation classique dun composant et de ses interfaces requise (reprsent par un demi-cercle) et offerte (reprsente par un cercle)
Lutilisation des ports permet de modifier la structure interne dun classeur sans affecter les clients externes.
287
288
Exemple de composant
Diagramme de composant
La relation de dpendance est utilise dans les diagrammes de composants pour indiquer quun lment de limplmentation dun composant fait appel aux services offerts par l l les lments di l t dimplmentation d autre composant. t ti dun t t
Reprsentation dun composant et de ses interfaces requise et offerte avec la reprsentation explicite de leur port correspondant.
Lorsquun composant utilise linterface dun autre composant, on peut imbriquer le demi-cercle dune interface requise dans le cercle de linterface offerte correspondante.
COO 2007/2008
289
290
Exemple de composant
Chaque ressource tant matrialise par un noeud, Ch t t t i li d le diagramme de dploiement prcise comment les composants sont rpartis sur les noeuds et quelles sont les connexions entre les composants ou les noeuds.
Noeud
Chaque ressource est matrialise par un noeud reprsent par un cube comportant un nom.
Un noeud est un classeur et peut p p possder des attributs (quantit de mmoire, vitesse du processeur, . . .).
294
Le diagramme de dploiement
Dans un diagramme de dploiement, les associations entre noeuds sont d d t des chemins d communication qui permettent h i de i ti i tt t lchange dinformations
soit placer le composant dans le noeud, soit les relier par une relation de dpendance strotype support oriente du composant vers le noeud noeud.
Il reprsente les diffrents processeurs priphriques et la processeurs, rpartition du systme sur ces diffrents lments.
295
296
Exemple
Exemple
COO 2007/2008
297
298
Exemple
299