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
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