Aller au contenu

Méta-modèle du Diagramme d’Activités

Diagramme de classes du diagramme d’Activités

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.

Explications

Rôles de chaque élément

Exemple simple (instanciation du méta-modèle)

Processus : Préparation d’un café automatique

Concepts à retenir

Exercice

À partir du texte ci-dessous :

Contexte : Lavage de mains automatique

  1. L’utilisateur approche ses mains → le capteur s’active.
  2. L’eau commence à couler.
  3. Après 5 secondes, le savon est injecté.
  4. Après 10 secondes, rinçage automatique.
  5. Quand les mains se retirent, l’eau s’arrête.
  6. Fin du processus.

  7. Listez les nœuds (activités, décisions, début, fin).
  8. Identifiez les flux et conditions (gardes éventuelles).
  9. Dessinez le diagramme d’activités UML correspondant.
  10. Vérifiez la cohérence avec le méta-modèle UML (initial, final, conditions logiques).

Conclusion

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.

Bonus : Code PlantUML du diagramme de classes

@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

Correction Exercice

Version PlantUML

@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