Archyno
UMLDiagrammes de comportement

Exemples de diagrammes d'activité

Trois diagrammes d'activité de processus que vous connaissez - une chaîne d'intégration continue, un tri de tickets et un fragment qui termine deux jetons différemment - chacun avec la raison d'être de chaque nœud.

8 min de lectureUML 2.5.114 sur 35

La réponse courte

  • Une chaîne d'intégration continue est l'exemple le plus clair : construire, puis trois vérifications en parallèle derrière une bifurcation, une jointure qui attend les trois, et un branchement selon le résultat.
  • Les arêtes sortant d'une bifurcation ne portent jamais de garde, puisque toutes sont empruntées. Les gardes vont sur les arêtes d'une décision.
  • Un final de flux arrête un jeton, un final d'activité arrête tout. Le disque cerclé sur une branche secondaire tue silencieusement le flux principal.
  • Donnez à la dernière arête d'une décision la garde [else]. Sans elle un jeton peut arriver là où aucune garde ne tient, et l'activité se bloque.
Un diagramme d'activité UML d'un pipeline d'intégration continue. Depuis le noeud initial, construire l'artefact. Une barre de bifurcation se divise en trois actions parallèles : lancer les tests unitaires, lancer les linters et analyser les dépendances. Une barre de jonction attend les trois, puis une décision bifurque selon le résultat : tout au vert va vers déployer en préproduction et le noeud final d'activité, un échec quelconque va à droite vers notifier l'auteur et son propre noeud final.
Un pipeline d'intégration continue : une bifurcation, trois actions concurrentes, une jonction qui les attend toutes, et une décision sur le résultat.

01Exemple 1 : du travail parallèle derrière une bifurcation#

Un pipeline de build est le premier exemple le plus clair parce que la concurrence y est réelle et non théorique. Les tests unitaires, le linting et l'analyse de dépendances tournent vraiment en même temps, rien en aval ne peut démarrer avant que les trois soient finis, et tout le monde l'a déjà vu se produire.

Le travail est fait par les deux barres pleines. Celle du haut est une bifurcation : un jeton arrive et trois repartent, donc les trois branches s'exécutent. Celle du bas est une jonction : elle attend qu'un jeton soit arrivé sur chaque arête entrante avant d'en laisser un continuer. Remplacez l'une ou l'autre par un losange et le diagramme affirme désormais quelque chose de faux - un losange se déclenche au premier jeton et n'attend jamais.

Notez les deux noeuds finaux distincts. Un build en échec et un build déployé sont deux fins différentes, et les dessiner en deux disques cerclés est à la fois légal et plus clair que de les ramener tous deux vers un seul. UML ne limite pas le nombre de noeuds finaux d'activité qu'une activité possède.

02Exemple 2 : une bifurcation à trois voies aux gardes exhaustives#

La plupart des processus métier ne sont pas concurrents. Ce sont des décisions à plusieurs issues qui se rejoignent ensuite, et c'est la forme ci-dessous.

Un diagramme d'activité UML du tri des tickets de support. Depuis le noeud initial, recevoir le ticket, puis une décision bifurque en trois selon la gravité : gravité un va à gauche vers alerter l'astreinte, gravité deux va en bas vers mettre en file de l'équipe, et tout le reste va à droite vers répondre automatiquement et clore. Les trois chemins atteignent un losange de fusion, puis enregistrer la résolution, puis le noeud final d'activité.

Trois choses de ce diagramme sont délibérées. Les gardes sont exhaustives : [sev 1], [sev 2 or 3] et [else] couvrent à elles trois tous les tickets, donc aucun jeton ne peut arriver au losange sans issue. Un jeton sans arête sortante activée est un processus bloqué, et c'est un défaut qui vaut la peine d'être attrapé sur le papier.

Le losange du bas est une fusion, pas une jonction, et la différence compte : un seul des trois chemins porte jamais un jeton, donc attendre les trois se bloquerait immédiatement. La règle est facile à retenir - un losange ferme ce qu'un losange a ouvert, et une barre ferme ce qu'une barre a ouvert.

Enfin, chaque action est une locution verbale à l'impératif : « Alerter l'astreinte », pas « Alerte de l'astreinte ». Les substantifs s'infiltrent quand quelqu'un décrit un système plutôt qu'un processus, et un diagramme de substantifs est un diagramme de classes qui a pris la mauvaise forme.

03Exemple 3 : les deux façons dont un flux peut finir#

La paire de noeuds de fin est le détail que la plupart des premiers diagrammes ratent, et l'erreur est invisible : le diagramme a toujours l'air juste.

Un fragment de diagramme d'activité UML opposant les deux noeuds de fin. Une bifurcation se divise en deux branches : écrire l'entrée d'audit se termine à un noeud de fin de flux dessiné comme un cercle barré, et confirmer au client se termine à un noeud de fin d'activité dessiné comme un disque cerclé. Une note explique que le cercle barré ne termine que son propre jeton tandis que le disque cerclé termine toute l'activité.

Après la bifurcation, deux jetons circulent. La branche d'audit atteint une fin de flux - le cercle barré - qui consomme ce jeton et rien d'autre. La branche client atteint une fin d'activité, le disque cerclé, qui termine toute l'activité et abandonne tous les autres jetons.

Mettez le disque cerclé sur la branche d'audit à la place, et le diagramme dit maintenant que la commande est abandonnée dès que la ligne de journal est écrite. Rien n'y paraît faux, et c'est exactement pourquoi cette distinction vaut d'être apprise une fois : une fin de flux pour une branche latérale qui se termine simplement, et une fin d'activité seulement là où vous voulez dire « nous avons fini ».

04En faire les vôtres#

Ces trois-là couvrent les formes dont presque tout diagramme d'activité est fait. Ce qui change entre eux et le vôtre, ce sont les étiquettes ; ce qui ne devrait pas changer, c'est la discipline sur le périmètre.

À utiliser quand

  • Un processus par diagramme, avec un nom que vous pourriez mettre en objet d'e-mail.
  • Des actions en locutions verbales, pour que chaque boîte soit quelque chose que quelqu'un ou quelque chose fait.
  • Des couloirs quand les passages de relais entre rôles sont le sujet : c'est aux franchissements que les processus échouent.
  • Une garde [else] sur la dernière arête de chaque décision, pour que l'ensemble soit exhaustif.

Préférer autre chose quand

  • Plus d'une quinzaine d'actions. Extrayez plutôt un sous-arbre comme activité à part.
  • Une barre là où des alternatives se rejoignent, ou un losange là où du travail concurrent le fait.
  • La gestion d'erreur à chaque étape. Dessinez le chemin nominal, puis un diagramme pour l'échec qui compte.
  • Modéliser le cycle de vie d'un seul objet : c'est une machine à états, pas une activité.

Si le public est composé d'analystes métier plutôt que d'ingénieurs, le même processus gagne en général à être dessiné en BPMN, qui a une sémantique d'événements plus riche et qui est ce qu'un moteur de processus exécutera. Les deux notations répondent à la même question pour des salles différentes.

05Ce qu'il faut retenir#

En une ligne chacun

  1. 01Une barre bifurque et rejoint ; un losange branche et fusionne. Un losange n'attend jamais, une barre toujours.
  2. 02Les gardes vont sur les arêtes sortant d'une décision et jamais sur celles sortant d'une bifurcation.
  3. 03Rendez l'ensemble des gardes exhaustif - [else] sur la dernière arête - ou le processus peut se bloquer.
  4. 04Une fin de flux termine un jeton ; une fin d'activité termine tout. La mauvaise a l'air identique.
  5. 05Les actions sont des locutions verbales. Si les boîtes sont des noms, vous dessinez le mauvais diagramme.

06Questions fréquentes#

Quel est un bon exemple de diagramme d'activité ?

Une chaîne d'intégration continue est le plus clair : construire l'artefact, puis lancer en parallèle derrière une bifurcation les tests, les linters et l'analyse des dépendances, attendre les trois à la jointure, et brancher selon le résultat. Elle utilise tous les nœuds qui comptent en dix boîtes.

Comment dessiner des étapes parallèles dans un diagramme d'activité ?

Placez une barre pleine - la bifurcation - en travers du flux et tirez une arête vers chaque action concurrente. Fermez le groupe par une seconde barre, la jointure, qui attend un jeton sur chaque arête entrante. Les arêtes sortant d'une bifurcation ne portent jamais de garde, puisque toutes sont empruntées.

Quelle différence entre un final de flux et un final d'activité ?

Le final de flux, un cercle barré d'une croix, arrête le jeton qui l'atteint et laisse le reste de l'activité tourner. Le final d'activité, un disque cerclé, arrête toute l'activité et abandonne les autres jetons. Mettre le disque cerclé sur une branche secondaire tue silencieusement le flux principal.

Les gardes sortant d'une décision doivent-elles couvrir tous les cas ?

Oui. Si aucune garde ne tient, le jeton n'a nulle part où aller et l'activité se bloque : c'est un vrai défaut, pas une question de style. L'habitude sûre est de donner la garde [else] à la dernière arête, ce qui rend l'ensemble exhaustif par construction.

Combien d'actions dans un diagramme d'activité ?

Une quinzaine avant qu'il cesse d'être lisible. Au-delà, sortez un sous-arbre comme activité à part et référencez-le par une seule action d'appel. Un diagramme qu'il faut agrandir est un diagramme que personne ne confronte à la réalité.

Dans cette série

À lire aussi

Tous les articles