🖨️ Version PDF
Si vous maitrisez le diagramme de classes, vous allez mieux comprendre comment est construit un diagramme d’Activités avec les éléments qui le composent et les relations entre eux. Nous avons vu que le diagramme d’activités sert à modéliser le flux d’un processus, les étapes (activités), les décisions, les parallélismes et la circulation des données.
Processus : Préparation d’un café automatique
À partir du texte ci-dessous :
Contexte : Lavage de mains automatique
Fin du processus.
Un diagramme d’activités est une machine de flux de travail : des nœuds d’activité reliés par des flux conditionnels ou parallèles, souvent organisés en swimlanes selon les rôles.
@startuml ' ============================================================ ' Méta-modèle UML — Diagramme d’Activités (version française) ' ============================================================ hide empty methods hide empty fields skinparam classAttributeIconSize 0 skinparam wrapWidth 240 skinparam maxMessageSize 120 title Méta-modèle UML — Diagramme d’activités (FR) ' ====================== ' Éléments principaux ' ====================== class DiagrammeActivité { + nom : Chaîne } class NœudActivité { <<abstrait>> + nom : Chaîne } class Activité extends NœudActivité { + estComposite : Booléen } class NœudInitial extends NœudActivité class NœudFinal extends NœudActivité class NœudFinalFlux extends NœudActivité class NœudDécision extends NœudActivité class NœudFusion extends NœudActivité class NœudFourche extends NœudActivité class NœudJonction extends NœudActivité class Flux { + garde : ExpressionBooléenne [0..1] } class Garde { + expression : ExpressionBooléenne } class Partition { + nom : Chaîne } class Objet { + type : Chaîne } class FluxObjet { + transformation : Comportement [0..1] } class Comportement { + corps : Chaîne } ' ====================== ' Relations ' ====================== DiagrammeActivité "1" *-- "1..*" NœudActivité : contient > NœudActivité "0..*" --> "0..*" Flux : fluxSortants > Flux "1" --> "1" NœudActivité : cible > Flux "0..1" --> "0..1" Garde : condition > DiagrammeActivité "0..*" *-- "0..*" Partition : swimlanes > Partition "0..*" o-- "0..*" NœudActivité : regroupe > Objet "0..*" <-- "0..*" FluxObjet : transporté > FluxObjet "0..*" --> "1" Activité : transformation > ' ====================== ' Notes explicatives ' ====================== note top of DiagrammeActivité Représente un processus ou un flux de travail. Contient des Nœuds reliés par des Flux de contrôle ou d’objet. end note note bottom of NœudDécision Nœud de contrôle logique : choisit un chemin en fonction d'une Garde (condition). end note note right of Partition Représente un acteur, une entité ou une responsabilité (appelée « swimlane »). end note note right of Flux Relie deux Nœuds d’activité. Peut avoir une condition (Garde). end note @enduml
@startuml title Corrigé — Lavage de mains automatique start :Détecter mains; if (Mains détectées ?) then (oui) :Faire couler eau; :Attendre 5s; :Injecter savon; :Attendre 5s; :Rincer; :Détecter retrait mains; if (Mains retirées ?) then (oui) :Arrêter eau; stop else (non) :Continuer rinçage; endif else (non) stop endif stop @enduml