Comment dessiner un diagramme de classes UML
Cinq étapes dans l'ordre qui marche : trouver les noms, tracer les traits, décider les multiplicités, puis les attributs, puis les opérations - et s'arrêter quand la question est répondue.
7 min de lectureUML 2.5.16 sur 35
La réponse courte
- Les classes, puis les relations, puis les multiplicités, puis les attributs, puis les opérations. Les attributs ressemblent au début et en sont le pire.
- Un nom devient une classe quand il a une identité, un état qui change et une durée de vie propre. Une couleur ou un montant est un attribut.
- Il est terminé quand il répond à la question pour laquelle il a été tracé et que chaque relation porte une multiplicité.
- Pas quand toutes les classes y figurent, ni quand tous les attributs sont listés : un diagramme atteint ces deux états sans rien répondre.
01Étapes un et deux : les noms, puis les traits#
L'étape un consiste à écrire comment le domaine se raconte à voix haute et à souligner les noms."Un patient prend rendez-vous avec un médecin, et le médecin peut délivrer une ordonnance" donne quatre candidats immédiatement. Gardez ceux qui ont trois propriétés : une identité (deux d'entre eux se distinguent), un état qui change dans le temps, et une durée de vie propre. Un nom qui échoue aux trois - une couleur, un montant, un statut - est un attribut de quelque chose d'autre.
L'étape deux, c'est un trait par phrase que vous pouvez dire sur le domaine. Pas par jointure de base ni par appel de méthode : un trait signifie que les deux classes se connaissent au sens métier. Le diagramme ci-dessus est là que cela s'arrête, et il vaut déjà la peine d'être posé devant quelqu'un qui connaît le domaine, parce que la discussion que vous voulez porte sur l'appartenance d'une ordonnance à un rendez-vous ou à un patient - et cette discussion est disponible maintenant, avant qu'un seul attribut ait été tapé.
02Étape trois : les multiplicités, avant tout le reste#
Chaque trait reçoit un nombre à chaque extrémité avant qu'un seul attribut soit ajouté. C'est l'étape que l'on saute et celle qui paie, parce qu'une multiplicité est une décision sur ce que le système autorise et qu'un attribut est un détail qui en découle.
Lisez chaque extrémité comme une phrase et dites-la à voix haute. "Un patient a zéro ou plusieurs rendez-vous" : très bien. "Un rendez-vous a exactement un patient" : très bien, et à vérifier, car un cabinet qui prend un jour un créneau familial vient de vous dire le contraire. Les trois questions à poser à chaque extrémité sont : cela peut-il valoir zéro, cela peut-il valoir plus d'un, et cela change-t-il un mauvais jour ?
Choisissez ensuite la sorte de relation, et seules deux décisions méritent qu'on s'y attarde. La partie est-elle supprimée avec le tout : si oui, composition. Quelque chose détient-il le type parent sans se soucier du sous-type : si oui, généralisation. Tout le reste est une association simple, et les exemples traités montrent les deux jugements à l'oeuvre.
03Étapes quatre et cinq : attributs, opérations, et s'arrêter#
Les attributs viennent en quatrième, et chacun doit avoir une source. Si vous ne pouvez pas dire d'où vient une valeur - un formulaire, un autre système, un calcul -, c'est une supposition, et les suppositions sont ce qui fait qu'un modèle cesse de correspondre à ce qu'il décrit. Écrire les types en vaut la peine : startsAt: Instant tranche une question que startsAt: Date laisse ouverte.
Les opérations viennent en cinquième, et la plupart des classes n'en reçoivent aucune. Une opération appartient à une classe quand le comportement a réellement besoin de l'état propre de cette classe : cancel() a besoin du statut du rendez-vous, donc il y a sa place. Tout ce qui a besoin de trois autres objets pour faire son travail est un service, et le mettre ici est la façon dont un modèle de domaine devient discrètement un diagramme du code plutôt qu'un diagramme du domaine.
Puis arrêtez-vous. Le diagramme fini ci-dessus a quatre classes et répond à une question ; ajouter Clinic, Room, Invoice et Insurer le rendrait plus complet et moins utile. Si une seconde question doit être traitée, dessinez une seconde vue sur le même modèle : c'est à cela que servent les vues.
En une ligne chacun
- 01Les noms dotés d'identité, d'un état changeant et d'une durée de vie propre deviennent des classes. Le reste, des attributs.
- 02Tracez les traits avant les attributs, et montrez la version laide : c'est celle que les gens corrigent.
- 03Décidez les multiplicités en troisième, à voix haute, en demandant si chaque extrémité peut valoir zéro ou plus d'un.
- 04Chaque attribut a besoin d'une source. Les types tranchent ce que les noms laissent ouvert.
- 05Arrêtez quand la question est résolue, pas quand le système est entièrement dessiné.
04Questions fréquentes#
Comment décider ce qui devient une classe ?
Prenez les noms tels qu'on décrit le domaine à voix haute, et gardez ceux qui ont une identité, un état qui change et une durée de vie propre. Un nom qui n'est jamais que la valeur d'autre chose, comme une couleur ou un montant, est un attribut et non une classe.
Dans quel ordre dessiner un diagramme de classes ?
Les classes, puis les relations, puis les multiplicités, puis les attributs, puis les opérations. Les attributs semblent le point de départ évident et sont le pire, car ce sont eux qu'on jette en premier dès que les relations obligent à revoir ce qui appartient à quoi.
Quand un diagramme de classes est-il terminé ?
Quand il répond à la question pour laquelle il a été tracé et que chaque relation porte une multiplicité. Pas quand toutes les classes du système y figurent, ni quand tous les attributs sont listés : un diagramme peut atteindre ces deux états sans répondre à quoi que ce soit.
Dans cette série
- 01Qu'est-ce que UML ?
- 02Symboles UML
- 03Choisir un diagramme
- 04Diagrammes de classes
- 05Exemples de diagrammes de classes
- 06Dessiner un diagramme de classes
- 07Symboles du diagramme de classes
- 08Diagrammes de séquence
- 09Exemples de diagrammes de séquence
- 10Dessiner un diagramme de séquence
- 11Diagrammes de cas d'utilisation
- 12Exemples de cas d'utilisation
- 13Diagrammes d'activité
- 14Exemples d'activité
- 15Diagrammes états-transitions
- 16Exemples d'états-transitions
- 17Diagrammes de composants
- 18Exemples de composants
- 19Dessiner un diagramme de composants
- 20Symboles de composants
- 21Diagrammes de déploiement
- 22Exemples de déploiement
- 23Diagrammes d'objets
- 24Diagrammes de paquetages
- 25Diagrammes de structure composite
- 26Diagrammes de communication
- 27Séquence vs communication
- 28Diagrammes de temps
- 29Diagrammes globaux d'interaction
- 30Diagrammes de profil
- 31UML avec l'IA
- 32Exemple e-commerce
- 33Exemple bancaire
- 34Exemple microservices
- 35Exemple AWS
À lire aussi
Diagrammes de structure
Diagrammes de structure
Référence de notation
Pratique de la modélisation
Pratique de la modélisation
Diagrammes de comportement