25.02.2015 Views

UML 2.0 Diagrammes Henocque Esil Info 2008 - Laurent Henocque

UML 2.0 Diagrammes Henocque Esil Info 2008 - Laurent Henocque

UML 2.0 Diagrammes Henocque Esil Info 2008 - Laurent Henocque

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>UML</strong>2 : Les diagrammes<br />

<strong>Laurent</strong> <strong>Henocque</strong><br />

http://laurent.henocque.free.fr/<br />

Enseignant Chercheur ESIL/INFO France<br />

http://laurent.henocque.perso.esil.univmed.fr/<br />

mis à jour en Novembre <strong>2008</strong>


Licence Creative Commons<br />

Cette création est mise à disposition selon le Contrat<br />

Paternité-Partage des Conditions Initiales à<br />

l'Identique <strong>2.0</strong> France disponible en ligne<br />

http://creativecommons.org/licenses/by-sa/<strong>2.0</strong>/fr/<br />

ou par courrier postal à Creative Commons, 559<br />

Nathan Abbott Way, Stanford, California 94305,<br />

USA.


Références Normatives<br />

• L'infrastructure <strong>UML</strong><br />

• http://www.omg.org/cgi-bin/doc?formal/05-07-05<br />

• La superstructure <strong>UML</strong><br />

• http://www.omg.org/cgi-bin/doc?formal/05-07-04<br />

• OCL<br />

• http://www.omg.org/cgi-bin/doc?ptc/05-06-06


Autres références<br />

• Ce support de cours s'appuie sur des exemples<br />

concrets mis à disposition librement sur internet<br />

par différentes sources<br />

– http://www.rational.com<br />

– http://www.visualuml.com<br />

– http://uml.free.fr<br />

– http://http://www.sparxsystems.com.au/resourc<br />

es/uml2_tutorial/index.html


Objectifs<br />

• Présenter les différents diagrammes<br />

<strong>UML</strong><strong>2.0</strong>


<strong>UML</strong> : <strong>Diagrammes</strong> de Classes


Préambule<br />

• <strong>UML</strong> propose des artéfacts particuliers pour<br />

les diagrammes.<br />

• Toutefois, ces propositions sont seulement<br />

suggérées, ne sont pas obligatoires, et ne<br />

font en aucun cas partie de la norme<br />

• Un diagramme à la mode OOA (nuages)<br />

peut donc constituer un document <strong>UML</strong><br />

valide, selon des conventions prédéfinies


<strong>Diagrammes</strong> de Classes<br />

• les diagrammes de classes, ou de structure,<br />

définissent les constructions élémentaires<br />

d'un modèle: types, classes, relations utiles<br />

pour le reste (pose des contraintes)


Elements graphiques des<br />

diagrammes statiques


Exemple


Exemples de Classes


Classes: héritage


Classes: associations


Classe : notation simple<br />

• Une classe définit un "type", ensemble<br />

d'objets pouvant exister à l'exécution du<br />

programme<br />

Voiture<br />

Bateau<br />

Véhicule


Encapsulation


Classe : syntaxe détaillée


Attribut multivalué


Attribut dérivé


Classes Abstraites


Héritage


Heritage ??


Polymorphisme


Généralisation<br />

Animal<br />

Super-classe<br />

Généralisation<br />

Spécialisation<br />

Chat Chien Raton laveur<br />

Sous-classe<br />

COHERENCE


Héritage multiple<br />

Tapis<br />

Véhicule<br />

MULTIPLE<br />

Super-classe<br />

Super-classe<br />

Terrestre<br />

Aérien<br />

Fusion de plusieurs classes<br />

en une seule classe<br />

Tapis volant<br />

Sous-classe


Généralisations Multiples<br />

DISCRIMINANT<br />

Véhicule<br />

DISCRIMINANT<br />

Motorisation<br />

Milieu<br />

A voile<br />

A moteur<br />

Terrestre<br />

Marin


Obligation d'Héritage de toutes<br />

les dimensions<br />

Véhicule<br />

Motorisation<br />

Milieu<br />

{Inclusif}<br />

A voile<br />

A moteur<br />

Terrestre<br />

Marin<br />

Pétrolette<br />

Nécessaire


Exemple


Core Backbone Simplifié


Classification (Distilled)


Dérivation (Distilled)


Exemple : Espresso Compilateur<br />

• http://types.bu.<br />

edu/Espresso/r<br />

eport/Espresso.<br />

html


Types fondamentaux


Exemple<br />

log4j


Stéréotypes et Variations


Instances


Stéréotypes dans les classes


Le stéréotype "utility"


Templates


SP CPP


<strong>UML</strong> : Packages


<strong>Diagrammes</strong> de Packages<br />

• Utilisés pour séparer le modèle en<br />

conteneurs logiques, et décrire leurs<br />

interactions à un haut niveau


Exemple de Packages


Packages


Packages


Stéréotypes de Packages


Packages (Distilled)


<strong>UML</strong> : Associations


Association


Lien


Nommage d'Association


Rôles


Nécessité des noms de Rôles


Cardinalités


Navigabilité


Agregation


Relation de Composition


Composition Vue Interne


Agrégation et composition<br />

(Distilled)


Associations qualifiées


Association qualifiée (Distilled)


Relation N-aire


Classe d'association


Classe d'association (Distilled)


Classe d'association 2


Association dérivée


Relation de dépendance<br />

• Une dépendance traduit l’existence d’un<br />

lien fugitif entre deux classes, par exemple<br />

lors de la création d’un objet, ou d’un<br />

passage de paramètre


Dernier<br />

Diagramme<br />

Classes<br />

(Distilled)


<strong>UML</strong> : Contraintes Exprimées dans<br />

le modèle


Contraintes


Contraintes


Contraintes


Contraintes: Exercice : tout peut être<br />

décrit dans le modèle?


<strong>UML</strong> : Interfaces


Interfaces


Interfaces


Réalisation d'Interfaces


Interfaces (Distilled)


Interfaces (Distilled)


<strong>UML</strong> : Composants Déploiement


<strong>Diagrammes</strong> Objet (d'instances)<br />

• Les diagrammes objet illustrent les<br />

interactions concrètes entre instances de<br />

classes (les liens y sont des instances des<br />

relations)


Composants et Composites


Liens internes entre composants


Instances<br />

• Les instances ne sont pas utilisées dans les<br />

diagrammes de classes, mais apparaissent<br />

dans les cas d'utilisation, et les diagrammes<br />

de trace d'événements (activity diagrams)


Instances


Diagramme de collaboration


Exemple


<strong>Diagrammes</strong> de Structure Composite<br />

• Les diagrammes de structure composite<br />

donnent le moyen de stratifier la structure et<br />

de se concentrer sur des détails internes<br />

concernant les associations.<br />

• Un tel diagramme décrit la structure interne<br />

d'un classifieur.


Exemples


Collaborations


<strong>Diagrammes</strong> de Composants<br />

• Les diagrammes de composants sont utilisés<br />

pour modéliser des structures à plus haut<br />

niveau, ou plus complexes, qui déclarent<br />

des interfaces précises. La plupart du temps,<br />

un composant fait intervenir plusieurs<br />

classes


Exemples


Deployment Diagrams<br />

• Les diagrammes de déploiement décrivent<br />

la disposition concrète des éléments du<br />

modèle dans le monde physique


Exemples


Exemples


Modules


Composants


Ex: Composants Argo<strong>UML</strong>


Déploiement


Deploiement<br />

(Distilled)


<strong>UML</strong> : Etats


<strong>Diagrammes</strong> de machines d'états<br />

finis<br />

• Les diagrammes d'état finis décrivent les<br />

états stables d'une classe, et les transitions<br />

quoi s'y appliquent


Exemple


Exemples


Exemples


Exemple


Exemple


Jonction


Historique


Concurrence


<strong>Diagrammes</strong> de Communication<br />

• Les diagrammes de communication<br />

décrivent le réseau et le séquencement de<br />

messages entre objets pendant l'exécution<br />

d'une collaboration


Transition


Transition Gardée


Etats Composites


Abstraction des Etats Composites


Entry / Exit / On / Do


Transitions Boucles


Parallélisme


Synchronisation


Exemple Etats


Etats (Distilled)


Etats (Distilled)


Etats (Distilled)


<strong>UML</strong> : Activités


Activity Diagrams<br />

• Les diagrammes d'activité ont un large<br />

champ d'utilisation. A plus haut niveau, ils<br />

peuvent servir à capturer les points de<br />

décision et le contrôle dans un process. Ils<br />

peuvent aussi servir à documenter un<br />

algorithme.


Exemple


Exemple


Exemple


Exemple


Expansion regions


Exemple : exceptions, régions<br />

interruptibles


Parameter sets


Transition entre Activités


Couloirs d'Activités


Transition Gardée


Machine<br />

à Café


Synchronisation


<strong>UML</strong> : Séquences


<strong>Diagrammes</strong> de Séquence<br />

• Les diagrammes de séquence sont des<br />

diagrammes de communication dans<br />

lesquels la dimension verticale est utilisée<br />

pour matérialiser l'écoulement du temps


Exemples


Exemples


Temps concret


Boucles


Sections critiques


Décomposition


Invariants


Séquences


Activation


Messages de Séquences


Diagramme de<br />

Séquence


Sequence<br />

(Distilled)


Sequence (Distilled)


Sequence (Distilled)


<strong>UML</strong> : Collaborations


Collaborations


Collaborations


Collaborations


Collaboration au Niveau Classe


Collaboration (Distilled)


Collaborations et Packages


<strong>UML</strong> : Use Cases


<strong>Diagrammes</strong> de Cas d'Utilisation<br />

• Ces diagrammes modélisent des interactions<br />

entre les utilisateurs et le système. Ils<br />

définissent le comportement, les conditions<br />

et contraintes sous la forme de scripts ou de<br />

scénarios


Exemples


Exemples


Exemples


Use Cases<br />

dans<br />

l'analyse


Use Cases


Use Case


Use Case


Stéréotypes de Use Cases


Relations de Use Case (Distilled)


Use Case Points d'extension (Distilled)


<strong>UML</strong> : <strong>Diagrammes</strong> de Timing


Timing Diagrams<br />

• Ces diagrammes combinent les diagrammes<br />

de séquence et d'état pour proposer un point<br />

de vue sur l'évolution de l'état d'un objet au<br />

fil du temps, et sur les messages qui<br />

modifient cet état.


<strong>UML</strong> : <strong>Diagrammes</strong> d'"interaction<br />

overview"


Interaction Overview Diagrams<br />

• Ces diagrammes utilisent diagrammes<br />

d'activité et de séquence pour décrire<br />

comment des fragments d'interaction<br />

(décrits par des diagrammes de séquence)<br />

sont combinés par des points de décision et<br />

des flux


<strong>UML</strong> <strong>2.0</strong> Elements nouveaux


Métamodèle<br />

• <strong>Diagrammes</strong> de collaboration -><br />

diagrammes de communication<br />

• <strong>Diagrammes</strong> de d'interaction hybrides<br />

(overview of interaction)<br />

• <strong>Diagrammes</strong> temporels (timing diagrams)<br />

• <strong>Diagrammes</strong> de structure composite


<strong>Diagrammes</strong> de classe<br />

• Les attributs et les associations unidirectionnelles<br />

sont devenues deux notations équivalentes pour le<br />

même concept de "propriété" (property).<br />

• Les multiplicités discontinues ont été abandonnées<br />

([2,7])<br />

• Diverses propriétés et mots clef ont été<br />

abandonnées ("frozen", ,<br />

)


<strong>Diagrammes</strong> de séquence<br />

• Nouvelle notation dite de "cadre<br />

d'interaction" (interaction frame) pour les<br />

sections itératives, conditionnelles de<br />

l'exécution, et divers modes de contrôle<br />

• Cela permet de décrire des algorithmes de<br />

façon réaliste dans les diagrammes de<br />

séquence


<strong>Diagrammes</strong> de Séquence


<strong>Diagrammes</strong> de séquence (2)<br />

• Les marqueurs d'itération et les gardes des<br />

messages ont été supprimés (ils servaient<br />

précisément à décrire des algorithmes)<br />

• Les têtes de lignes de vie ne sont plus des<br />

instances, mais des "participants"


<strong>Diagrammes</strong> de classe<br />

• Les stéréotypes sont plus précisément<br />

définis. Les chaînes entre guillemets sont<br />

des "mots clef" (keyword), dont certains<br />

seulement sont des stéréotypes<br />

• La classification multiple utilise des<br />

ensembles de classification ("classification<br />

sets") pour grouper les généralisations


Interfaces<br />

• Les classes peuvent requérir des interfaces,<br />

et pas seulement les proposer


<strong>Diagrammes</strong> de composants<br />

• Les composants n'ont plus une icône<br />

spécifique, mais deviennent un stéréotype<br />

comme les autres<br />

– (la différence entre classe et composant n'avait<br />

jamais été claire)


Structure composite<br />

• La structure composite permet de<br />

décomposer récursivement une classe dans<br />

sa structure interne, notamment pour faire<br />

apparaître les éléments de la classe liés aux<br />

interfaces


Exemple de Structure Composite


Classe Active<br />

• Une classe active décrit des instances don’t<br />

chacune possède son propre thread de<br />

contrôle.


<strong>Diagrammes</strong> d'état<br />

• <strong>UML</strong> <strong>2.0</strong> supprime la distinction entre<br />

actions et activités.<br />

• Une activité est simplement indiquée par<br />

une clause dans un état "do/"<br />

• (ou "do-activity/")


<strong>Diagrammes</strong> d'activité<br />

• Ces diagrammes ne sont plus un cas<br />

particulier des diagrammes d'état<br />

• Suppression de l'obligation de faire<br />

correspondre chaque "fork" à un "join"<br />

• Ces diagrammes sont mieux compris<br />

comme des diagrammes de flot de jetons<br />

(de type réseau de Petri)


<strong>Diagrammes</strong> d'activité


<strong>Diagrammes</strong> d'activité<br />

Nombreuses nouvelles notations :<br />

• signaux de temps et d'acceptation<br />

• paramètres<br />

• spécifications de join<br />

• pins (puces)<br />

• transformations de flot<br />

• rateaux de sous diagrammes (subdiagram rakes)<br />

• régions d'expansion<br />

• terminaisons de flots


<strong>Diagrammes</strong> d'activité<br />

• Les flots entrants multiples étaient traités<br />

comme un "merge" implicite en <strong>UML</strong> 1.x<br />

(sans synchronisation)<br />

• Ils deviennent un "join" implicite (avec<br />

synchronisation)<br />

• Recommandation : utiliser des join ou<br />

merge explicites!


<strong>Diagrammes</strong> d'activité<br />

• Les lignes de vie (life lines ou swim lanes)<br />

devinennent multi dimensionnelles,<br />

• elles sont appelées des partitions


Fin du document

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!