Catalogue PlantUML
Catalogue PlantUML – principaux cas d’usage
Cette page présente plusieurs représentations réalisables avec PlantUML, sous la forme d’exemples simples, lisibles et facilement réutilisables.
Chaque section contient :
- le cas d’usage visé ;
- un exemple minimal ;
- un code PlantUML autonome.
1. Diagramme de séquence
Usage : représenter des échanges entre acteurs, applications, API, bases de données ou services.
@startuml
actor Utilisateur
participant "Frontend" as Front
participant "API" as API
database "Base PostgreSQL" as DB
Utilisateur -> Front : saisit ses identifiants
Front -> API : POST /login
API -> DB : vérifier le compte
DB --> API : compte valide
API --> Front : token
Front --> Utilisateur : accès autorisé
@endumlRendu du modèle
@startuml actor Utilisateur participant "Frontend" as Front participant "API" as API database "Base PostgreSQL" as DB Utilisateur -> Front : saisit ses identifiants Front -> API : POST /login API -> DB : vérifier le compte DB --> API : compte valide API --> Front : token Front --> Utilisateur : accès autorisé @enduml
2. Diagramme de classes
Usage : représenter une structure de données, un modèle métier ou l’organisation d’un code.
@startuml
class Utilisateur {
+id : UUID
+nom : String
+email : String
+seConnecter()
}
class Role {
+code : String
+libelle : String
}
class Session {
+token : String
+expiration : Instant
}
Utilisateur "1" -- "*" Role
Utilisateur "1" -- "0..*" Session
@endumlRendu du modèle
@startuml
class Utilisateur {
+id : UUID
+nom : String
+email : String
+seConnecter()
}
class Role {
+code : String
+libelle : String
}
class Session {
+token : String
+expiration : Instant
}
Utilisateur "1" -- "*" Role
Utilisateur "1" -- "0..*" Session
@enduml
3. Diagramme de cas d’utilisation
Usage : montrer les fonctionnalités offertes par un système à ses utilisateurs.
@startuml
left to right direction
actor "Chef de projet" as CP
actor "Analyste" as A
rectangle "Plateforme d'analyse" {
usecase "Lancer une analyse" as UC1
usecase "Consulter les résultats" as UC2
usecase "Exporter un rapport" as UC3
}
A --> UC1
A --> UC2
CP --> UC2
CP --> UC3
@endumlRendu du modèle
@startuml
left to right direction
actor "Chef de projet" as CP
actor "Analyste" as A
rectangle "Plateforme d'analyse" {
usecase "Lancer une analyse" as UC1
usecase "Consulter les résultats" as UC2
usecase "Exporter un rapport" as UC3
}
A --> UC1
A --> UC2
CP --> UC2
CP --> UC3
@enduml
4. Diagramme d’activité
Usage : représenter un processus, un enchaînement de traitements ou une procédure.
@startuml
start
:Réception du code source;
:Préparation de l'analyse;
if (Langage supporté ?) then (oui)
:Exécuter les règles;
:Consolider les résultats;
else (non)
:Notifier l'absence de support;
endif
stop
@endumlRendu du modèle
@startuml start :Réception du code source; :Préparation de l'analyse; if (Langage supporté ?) then (oui) :Exécuter les règles; :Consolider les résultats; else (non) :Notifier l'absence de support; endif stop @enduml
5. Diagramme d’états
Usage : décrire le cycle de vie d’un objet, d’un dossier ou d’un ticket.
@startuml
[*] --> Brouillon
Brouillon --> EnRevue : soumettre
EnRevue --> Valide : approuver
EnRevue --> Rejete : refuser
Rejete --> Brouillon : corriger
Valide --> Archive : clôturer
Archive --> [*]
@endumlRendu du modèle
@startuml [*] --> Brouillon Brouillon --> EnRevue : soumettre EnRevue --> Valide : approuver EnRevue --> Rejete : refuser Rejete --> Brouillon : corriger Valide --> Archive : clôturer Archive --> [*] @enduml
6. Diagramme de composants
Usage : présenter l’architecture logique d’une application ou la répartition des modules.
@startuml
component "Frontend Angular" as Front
component "API Spring Boot" as API
component "Moteur d'analyse" as Engine
database "PostgreSQL" as DB
Front --> API
API --> Engine
API --> DB
@endumlRendu du modèle
@startuml component "Frontend Angular" as Front component "API Spring Boot" as API component "Moteur d'analyse" as Engine database "PostgreSQL" as DB Front --> API API --> Engine API --> DB @enduml
7. Diagramme de déploiement
Usage : montrer où les composants sont installés et comment ils communiquent.
@startuml
node "Poste utilisateur" {
artifact "Navigateur"
}
node "Serveur applicatif" {
artifact "frontend.war"
artifact "api.jar"
}
node "Serveur base de données" {
database "PostgreSQL"
}
"Navigateur" --> "frontend.war"
"api.jar" --> "PostgreSQL"
@endumlRendu du modèle
@startuml
node "Poste utilisateur" {
artifact "Navigateur"
}
node "Serveur applicatif" {
artifact "frontend.war"
artifact "api.jar"
}
node "Serveur base de données" {
database "PostgreSQL"
}
"Navigateur" --> "frontend.war"
"api.jar" --> "PostgreSQL"
@enduml
8. Diagramme d’objets
Usage : illustrer un exemple concret d’instances d’objets.
@startuml
object utilisateur1 {
id = 42
nom = "Dupont"
email = "dupont@example.test"
}
object roleAdmin {
code = "ADMIN"
libelle = "Administrateur"
}
utilisateur1 -- roleAdmin
@endumlRendu du modèle
@startuml
object utilisateur1 {
id = 42
nom = "Dupont"
email = "dupont@example.test"
}
object roleAdmin {
code = "ADMIN"
libelle = "Administrateur"
}
utilisateur1 -- roleAdmin
@enduml
9. Diagramme de packages
Usage : décrire l’organisation modulaire d’un code ou d’une architecture applicative.
@startuml
package "presentation" {
class Controleur
}
package "application" {
class ServiceMetier
}
package "infrastructure" {
class Repository
}
Controleur --> ServiceMetier
ServiceMetier --> Repository
@endumlRendu du modèle
@startuml
package "presentation" {
class Controleur
}
package "application" {
class ServiceMetier
}
package "infrastructure" {
class Repository
}
Controleur --> ServiceMetier
ServiceMetier --> Repository
@enduml
10. Diagramme de timing
Usage : montrer l’évolution d’états au cours du temps.
@startuml
robust "Service" as S
concise "Cache" as C
@0
S is Arrêté
C is Vide
@10
S is Démarré
C is Chargement
@20
C is Prêt
@endumlRendu du modèle
@startuml robust "Service" as S concise "Cache" as C @0 S is Arrêté C is Vide @10 S is Démarré C is Chargement @20 C is Prêt @enduml
11. Gantt
Usage : représenter une planification simple de travaux ou de jalons.
@startgantt
Project starts 2026-04-01
[Analyse initiale] lasts 5 days
[Revue d'architecture] starts at [Analyse initiale]'s end and lasts 3 days
[Rapport final] starts at [Revue d'architecture]'s end and lasts 2 days
@endganttRendu du modèle
@startgantt Project starts 2026-04-01 [Analyse initiale] lasts 5 days [Revue d'architecture] starts at [Analyse initiale]'s end and lasts 3 days [Rapport final] starts at [Revue d'architecture]'s end and lasts 2 days @endgantt
12. WBS – découpage des travaux
Usage : structurer un projet en lots, sous-lots et activités.
@startwbs
* Projet d'analyse
** Préparation
*** Collecte du code
*** Vérification du périmètre
** Analyse
*** Qualité
*** Sécurité
*** Architecture
** Restitution
*** Rapport
*** Présentation
@endwbsRendu du modèle
@startwbs * Projet d'analyse ** Préparation *** Collecte du code *** Vérification du périmètre ** Analyse *** Qualité *** Sécurité *** Architecture ** Restitution *** Rapport *** Présentation @endwbs
13. Mindmap
Usage : organiser visuellement des idées, thèmes ou axes d’analyse.
@startmindmap
* Dette logicielle
** Dette de code
*** duplication
*** complexité
** Dette d'architecture
*** couplage fort
*** dépendances cycliques
** Dette d'exploitation
*** déploiement manuel
*** supervision absente
@endmindmapRendu du modèle
@startmindmap * Dette logicielle ** Dette de code *** duplication *** complexité ** Dette d'architecture *** couplage fort *** dépendances cycliques ** Dette d'exploitation *** déploiement manuel *** supervision absente @endmindmap
14. Organigramme / schéma de flux
Usage : représenter un enchaînement logique simple, proche d’une procédure.
@startuml
start
:Recevoir la demande;
if (Périmètre complet ?) then (oui)
:Planifier l'analyse;
else (non)
:Demander les éléments manquants;
endif
stop
@endumlRendu du modèle
@startuml start :Recevoir la demande; if (Périmètre complet ?) then (oui) :Planifier l'analyse; else (non) :Demander les éléments manquants; endif stop @enduml
15. Schéma de topologie réseau simple
Usage : représenter des flux entre postes, proxy, services ou zones.
@startuml
node "Client VPN" as Client
node "Reverse proxy" as Proxy
node "OpenWebUI" as OWUI
node "Dependency-Track" as DT
Client --> Proxy : HTTPS
Proxy --> OWUI : 8080
Proxy --> DT : 8081
@endumlRendu du modèle
@startuml node "Client VPN" as Client node "Reverse proxy" as Proxy node "OpenWebUI" as OWUI node "Dependency-Track" as DT Client --> Proxy : HTTPS Proxy --> OWUI : 8080 Proxy --> DT : 8081 @enduml
16. Vue d’architecture applicative simple
Usage : décrire une vue d’ensemble lisible sans entrer dans le détail UML formel.
@startuml
rectangle "Utilisateur" as User
rectangle "Portail Web" as Web
rectangle "API métier" as API
rectangle "Moteur d'analyse" as Engine
database "Référentiel" as Ref
User --> Web
Web --> API
API --> Engine
API --> Ref
@endumlRendu du modèle
@startuml rectangle "Utilisateur" as User rectangle "Portail Web" as Web rectangle "API métier" as API rectangle "Moteur d'analyse" as Engine database "Référentiel" as Ref User --> Web Web --> API API --> Engine API --> Ref @enduml
17. Exemple de légende
Usage : ajouter une légende de lecture commune à plusieurs schémas.
@startuml
legend
|= Niveau |= Signification |
| Critique | Correction immédiate |
| Majeur | Correction à court terme |
| Mineur | Amélioration souhaitable |
endlegend
rectangle "Exemple"
@endumlRendu du modèle
@startuml legend |= Niveau |= Signification | | Critique | Correction immédiate | | Majeur | Correction à court terme | | Mineur | Amélioration souhaitable | endlegend rectangle "Exemple" @enduml
18. Exemple d’écran / maquette fonctionnelle simple
Usage : esquisser rapidement une interface ou une disposition fonctionnelle.
@startuml
rectangle "Écran principal" {
rectangle "Menu" as Menu
rectangle "Filtres" as Filters
rectangle "Zone de résultats" as Results
rectangle "Détail" as Detail
}
Filters --> Results
Results --> Detail
@endumlRendu du modèle
@startuml
rectangle "Écran principal" {
rectangle "Menu" as Menu
rectangle "Filtres" as Filters
rectangle "Zone de résultats" as Results
rectangle "Détail" as Detail
}
Filters --> Results
Results --> Detail
@enduml
19. Exemple de workflow métier
Usage : représenter un traitement métier de bout en bout.
@startuml
start
:Réception d'un dossier;
:Contrôle de complétude;
if (Dossier complet ?) then (oui)
:Instruction;
if (Avis favorable ?) then (oui)
:Validation;
else (non)
:Rejet motivé;
endif
else (non)
:Demande de complément;
endif
stop
@endumlRendu du modèle
@startuml start :Réception d'un dossier; :Contrôle de complétude; if (Dossier complet ?) then (oui) :Instruction; if (Avis favorable ?) then (oui) :Validation; else (non) :Rejet motivé; endif else (non) :Demande de complément; endif stop @enduml
20. Exemple de pipeline CI/CD
Usage : représenter un pipeline d’intégration et de livraison.
@startuml
start
:Commit du développeur;
:Déclenchement CI;
:Compilation;
if (Compilation OK ?) then (oui)
:Tests automatiques;
if (Tests OK ?) then (oui)
:Analyse de qualité;
if (Qualité acceptable ?) then (oui)
:Construction de l'artefact;
:Déploiement;
else (non)
:Blocage de la livraison;
endif
else (non)
:Correction des tests;
endif
else (non)
:Correction de la compilation;
endif
stop
@endumlRendu du modèle
@startuml start :Commit du développeur; :Déclenchement CI; :Compilation; if (Compilation OK ?) then (oui) :Tests automatiques; if (Tests OK ?) then (oui) :Analyse de qualité; if (Qualité acceptable ?) then (oui) :Construction de l'artefact; :Déploiement; else (non) :Blocage de la livraison; endif else (non) :Correction des tests; endif else (non) :Correction de la compilation; endif stop @enduml
Limites à connaître
PlantUML est bien adapté :
- à la documentation ;
- à la démonstration ;
- aux schémas versionnables en texte ;
- à l’intégration dans un wiki ou un dépôt Git.
En revanche :
- le rendu BPMN natif n’est pas complet au sens d’un outil spécialisé ;
- les maquettes très visuelles sont moins naturelles qu’avec un outil graphique dédié ;
- les schémas très denses perdent rapidement en lisibilité.
Conseils d’utilisation
- Préférer un diagramme simple par idée.
- Donner un titre clair à chaque schéma.
- Réutiliser des alias courts pour garder un code lisible.
- Limiter le nombre d’éléments affichés pour éviter les schémas surchargés.
- Conserver ces exemples comme base de départ pour vos propres modèles.