Enseignant Chercheur ESIL/INFO France UML2 : Les diagrammes Laurent Henocque http://laurent.henocque.free.fr/ Enseignant Chercheur ESIL/INFO France http://laurent.henocque.perso.esil.univmed.fr/ mis à jour en Novembre 2008
Licence Creative Commons Cette création est mise à disposition selon le Contrat Paternité-Partage des Conditions Initiales à l'Identique 2.0 France disponible en ligne http://creativecommons.org/licenses/by-sa/2.0/fr/ ou par courrier postal à Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Références Normatives L'infrastructure UML http://www.omg.org/cgi-bin/doc?formal/05-07-05 La superstructure UML http://www.omg.org/cgi-bin/doc?formal/05-07-04 OCL http://www.omg.org/cgi-bin/doc?ptc/05-06-06
Autres références Ce support de cours s'appuie sur des exemples concrets mis à disposition librement sur internet par différentes sources http://www.rational.com http://www.visualuml.com http://uml.free.fr http://http://www.sparxsystems.com.au/resources/uml2_tutorial/index.html
Objectifs Présenter les différents diagrammes UML2.0
UML : Diagrammes de Classes
Préambule UML propose des artéfacts particuliers pour les diagrammes. Toutefois, ces propositions sont seulement suggérées, ne sont pas obligatoires, et ne font en aucun cas partie de la norme Un diagramme à la mode OOA (nuages) peut donc constituer un document UML valide, selon des conventions prédéfinies
Diagrammes de Classes les diagrammes de classes, ou de structure, définissent les constructions élémentaires d'un modèle: types, classes, relations utiles pour le reste (pose des contraintes)
Elements graphiques des diagrammes statiques
Exemple
Exemples de Classes
Classes: héritage
Classes: associations
Classe : notation simple Une classe définit un "type", ensemble d'objets pouvant exister à l'exécution du programme Voiture Bateau Véhicule
Encapsulation
Classe : syntaxe détaillée
Attribut multivalué
Attribut dérivé
Classes Abstraites
Héritage
Heritage ??
Polymorphisme
Généralisation Super-classe Animal Généralisation Spécialisation Chat Chien Raton laveur COHERENCE Sous-classe
Héritage multiple MULTIPLE Tapis Véhicule Super-classe Super-classe Terrestre Aérien Tapis volant Fusion de plusieurs classes en une seule classe Sous-classe
Généralisations Multiples Véhicule DISCRIMINANT DISCRIMINANT Motorisation Milieu A voile A moteur Terrestre Marin
Obligation d'Héritage de toutes les dimensions Véhicule Motorisation Milieu {Inclusif} A voile A moteur Terrestre Marin Pétrolette Nécessaire
Exemple
Core Backbone Simplifié
Classification (Distilled)
Dérivation (Distilled)
Exemple : Espresso Compilateur http://types.bu.edu/Espresso/report/Espresso.html
Types fondamentaux
Exemple log4j
Stéréotypes et Variations
Instances
Stéréotypes dans les classes
Le stéréotype "utility"
Templates
SP CPP
UML : Packages
Diagrammes de Packages Utilisés pour séparer le modèle en conteneurs logiques, et décrire leurs interactions à un haut niveau
Exemple de Packages
Packages
Packages
Stéréotypes de Packages
Packages (Distilled)
UML : 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 (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 Une dépendance traduit l’existence d’un lien fugitif entre deux classes, par exemple lors de la création d’un objet, ou d’un passage de paramètre
Dernier Diagramme Classes (Distilled)
UML : Contraintes Exprimées dans le modèle
Contraintes
Contraintes
Contraintes
Contraintes: Exercice : tout peut être décrit dans le modèle?
UML : Interfaces
Interfaces
Interfaces
Réalisation d'Interfaces
Interfaces (Distilled)
Interfaces (Distilled)
UML : Composants Déploiement
Diagrammes Objet (d'instances) Les diagrammes objet illustrent les interactions concrètes entre instances de classes (les liens y sont des instances des relations)
Composants et Composites
Liens internes entre composants
Instances Les instances ne sont pas utilisées dans les diagrammes de classes, mais apparaissent dans les cas d'utilisation, et les diagrammes de trace d'événements (activity diagrams)
Instances
Diagramme de collaboration
Exemple
Diagrammes de Structure Composite Les diagrammes de structure composite donnent le moyen de stratifier la structure et de se concentrer sur des détails internes concernant les associations. Un tel diagramme décrit la structure interne d'un classifieur.
Exemples
Collaborations
Diagrammes de Composants Les diagrammes de composants sont utilisés pour modéliser des structures à plus haut niveau, ou plus complexes, qui déclarent des interfaces précises. La plupart du temps, un composant fait intervenir plusieurs classes
Exemples
Deployment Diagrams Les diagrammes de déploiement décrivent la disposition concrète des éléments du modèle dans le monde physique
Exemples
Exemples
Modules
Composants
Ex: Composants ArgoUML
Déploiement
Deploiement (Distilled)
UML : Etats
Diagrammes de machines d'états finis Les diagrammes d'état finis décrivent les états stables d'une classe, et les transitions quoi s'y appliquent
Exemple
Exemples
Exemples
Exemple
Exemple
Jonction
Historique
Concurrence
Diagrammes de Communication Les diagrammes de communication décrivent le réseau et le séquencement de messages entre objets pendant l'exécution 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)
UML : Activités
Activity Diagrams Les diagrammes d'activité ont un large champ d'utilisation. A plus haut niveau, ils peuvent servir à capturer les points de décision et le contrôle dans un process. Ils peuvent aussi servir à documenter un algorithme.
Exemple
Exemple
Exemple
Exemple
Expansion regions
Exemple : exceptions, régions interruptibles
Parameter sets
Transition entre Activités
Couloirs d'Activités
Transition Gardée
Machine à Café
Synchronisation
UML : Séquences
Diagrammes de Séquence Les diagrammes de séquence sont des diagrammes de communication dans lesquels la dimension verticale est utilisée 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 Séquence
Sequence (Distilled)
Sequence (Distilled)
Sequence (Distilled)
UML : Collaborations
Collaborations
Collaborations
Collaborations
Collaboration au Niveau Classe
Collaboration (Distilled)
Collaborations et Packages
UML : Use Cases
Diagrammes de Cas d'Utilisation Ces diagrammes modélisent des interactions entre les utilisateurs et le système. Ils définissent le comportement, les conditions et contraintes sous la forme de scripts ou de scénarios
Exemples
Exemples
Exemples
Use Cases dans 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)
UML : Diagrammes de Timing
Timing Diagrams Ces diagrammes combinent les diagrammes de séquence et d'état pour proposer un point de vue sur l'évolution de l'état d'un objet au fil du temps, et sur les messages qui modifient cet état.
UML : Diagrammes d'"interaction overview"
Interaction Overview Diagrams Ces diagrammes utilisent diagrammes d'activité et de séquence pour décrire comment des fragments d'interaction (décrits par des diagrammes de séquence) sont combinés par des points de décision et des flux
UML 2.0 Elements nouveaux
Métamodèle Diagrammes de collaboration -> diagrammes de communication Diagrammes de d'interaction hybrides (overview of interaction) Diagrammes temporels (timing diagrams) Diagrammes de structure composite
Diagrammes de classe Les attributs et les associations unidirectionnelles sont devenues deux notations équivalentes pour le même concept de "propriété" (property). Les multiplicités discontinues ont été abandonnées ([2,7]) Diverses propriétés et mots clef ont été abandonnées ("frozen", <<parameter>>, <<local>>)
Diagrammes de séquence Nouvelle notation dite de "cadre d'interaction" (interaction frame) pour les sections itératives, conditionnelles de l'exécution, et divers modes de contrôle Cela permet de décrire des algorithmes de façon réaliste dans les diagrammes de séquence
Diagrammes de Séquence
Diagrammes de séquence (2) Les marqueurs d'itération et les gardes des messages ont été supprimés (ils servaient précisément à décrire des algorithmes) Les têtes de lignes de vie ne sont plus des instances, mais des "participants"
Diagrammes de classe Les stéréotypes sont plus précisément définis. Les chaînes entre guillemets sont des "mots clef" (keyword), dont certains seulement sont des stéréotypes La classification multiple utilise des ensembles de classification ("classification sets") pour grouper les généralisations
Interfaces Les classes peuvent requérir des interfaces, et pas seulement les proposer
Diagrammes de composants Les composants n'ont plus une icône spécifique, mais deviennent un stéréotype comme les autres (la différence entre classe et composant n'avait jamais été claire)
Structure composite La structure composite permet de décomposer récursivement une classe dans sa structure interne, notamment pour faire apparaître les éléments de la classe liés aux interfaces
Exemple de Structure Composite
Classe Active Une classe active décrit des instances don’t chacune possède son propre thread de contrôle.
Diagrammes d'état UML 2.0 supprime la distinction entre actions et activités. Une activité est simplement indiquée par une clause dans un état "do/" (ou "do-activity/")
Diagrammes d'activité Ces diagrammes ne sont plus un cas particulier des diagrammes d'état Suppression de l'obligation de faire correspondre chaque "fork" à un "join" Ces diagrammes sont mieux compris comme des diagrammes de flot de jetons (de type réseau de Petri)
Diagrammes d'activité
Diagrammes d'activité Nombreuses nouvelles notations : signaux de temps et d'acceptation paramètres spécifications de join pins (puces) transformations de flot rateaux de sous diagrammes (subdiagram rakes) régions d'expansion terminaisons de flots
Diagrammes d'activité Les flots entrants multiples étaient traités comme un "merge" implicite en UML 1.x (sans synchronisation) Ils deviennent un "join" implicite (avec synchronisation) Recommandation : utiliser des join ou merge explicites!
Diagrammes d'activité Les lignes de vie (life lines ou swim lanes) devinennent multi dimensionnelles, elles sont appelées des partitions
Fin du document