Outil · Diagrammes textuels
PlantUML
Créez des diagrammes UML à partir de texte simple. Versionnez, automatisez, et générez des visuels clairs sans souris.
Qu'est-ce que PlantUML ?
PlantUML est un outil open-source qui permet de décrire des diagrammes UML en langage texte et de les transformer en images. L'approche « diagrams-as-code » s'intègre naturellement dans Git, CI/CD et les éditeurs.
Écrire du texte
Décrivez votre diagramme avec une syntaxe lisible entre balises @startuml et @enduml.
Générer l'image
PlantUML compile le texte via Java et Graphviz pour produire un PNG, SVG ou PDF.
Versionner avec Git
Suivez les évolutions de vos diagrammes comme du code : diff, historique, revue de code.
Intégrer partout
Plugins pour VS Code, IntelliJ, Confluence, GitLab, GitHub Actions, Notion et bien d'autres.
Prérequis : PlantUML nécessite Java 8+ pour fonctionner. Graphviz est requis uniquement pour certains types de diagrammes (classes, composants). Le serveur en ligne plantuml.com permet de tester sans installation.
Syntaxe de base
Tout diagramme PlantUML est encadré par @startuml et @enduml. Entre les deux, vous décrivez les éléments et leurs relations.
@startuml
' Commentaire sur une ligne
/' Commentaire
multi-lignes '/
title Titre du diagramme
caption Légende en bas
' Corps du diagramme ici...
@enduml
Éléments communs
| Syntaxe | Description |
|---|---|
| @startuml / @enduml | Délimite chaque diagramme |
| ' texte | Commentaire ligne |
| /' … '/ | Commentaire bloc |
| title Xxx | Titre affiché en haut |
| skinparam … | Personnalisation visuelle |
| !theme … | Thème prédéfini |
| note left/right/top | Annotation flottante |
| hide empty members | Masque compartiments vides |
Diagramme de classes
Déclarez des classes, interfaces, énumérations et leurs relations avec une syntaxe concise et intuitive.
@startuml
hide empty members
abstract class Animal {
- nom : String
+ manger() : void
{abstract} parler() : String
}
class Chien {
- race : String
+ parler() : String
}
class Chat {
+ parler() : String
}
interface IDressable {
+ dresser() : bool
}
Animal <|-- Chien
Animal <|-- Chat
Chien ..|> IDressable
@enduml
Flèches de relations
| Symbole | Relation |
|---|---|
| <|-- | Héritage (généralisation) |
| ..|> | Réalisation (interface) |
| *-- | Composition |
| o-- | Agrégation |
| -- | Association simple |
| ..> | Dépendance (pointillé) |
| "1" -- "0..*" | Multiplicités |
Ajoutez hide empty members en début de fichier pour masquer les compartiments vides et alléger le rendu.
Diagramme de séquence
Le diagramme de séquence est l'un des points forts de PlantUML. La syntaxe y est particulièrement naturelle et expressive.
@startuml
actor Utilisateur
participant Frontend
participant API
database BDD
Utilisateur -> Frontend : Se connecter
activate Frontend
Frontend -> API : POST /login
activate API
API -> BDD : SELECT user
BDD --> API : user record
API --> Frontend : 200 + token
deactivate API
Frontend --> Utilisateur : Accès accordé
deactivate Frontend
note right of API
Token JWT signé
valable 24h
end note
@enduml
Participants & messages
| Syntaxe | Rôle |
|---|---|
| actor / participant | Types de participants |
| database / queue | Participants spéciaux |
| A -> B : msg | Message synchrone |
| A --> B : msg | Message retour/pointillé |
| A ->> B : msg | Message asynchrone |
| activate / deactivate | Barres d'activation |
| alt / else / end | Fragment conditionnel |
| loop / end | Fragment boucle |
| note left/right | Annotation |
Cas d'utilisation
Définissez acteurs, cas d'utilisation et leurs relations avec une syntaxe claire.
@startuml
left to right direction
skinparam packageStyle rectangle
actor Client
actor Admin
rectangle Boutique en ligne {
(Consulter catalogue)
(Passer commande)
(Payer)
(Gérer le stock)
}
Client --> (Consulter catalogue)
Client --> (Passer commande)
(Passer commande) .> (Payer) : <<include>>
Admin --> (Gérer le stock)
@enduml
left to right direction oriente le diagramme horizontalement, plus adapté à de nombreux cas d'utilisation.
Les stéréotypes <<include>> et <<extend>> s'écrivent avec une flèche en pointillé .> ou <..
Diagramme d'activité
PlantUML offre deux syntaxes pour les diagrammes d'activité. La version « bêta » (recommandée) est plus expressive et moderne.
@startuml
start
:Saisir identifiants;
if (Identifiants valides ?) then (oui)
:Accès accordé;
:Charger tableau de bord;
else (non)
:Afficher erreur;
if (3 tentatives ?) then (oui)
:Bloquer le compte;
stop
else (non)
goto start
endif
endif
:Journaliser la connexion;
stop
@enduml
Éléments du diagramme
| Syntaxe | Élément |
|---|---|
| start / stop | Début / fin |
| :action; | Activité (point-virgule final) |
| if (?) then / else / endif | Condition |
| fork / fork again / end fork | Parallélisme |
| while (?) is (oui) / endwhile | Boucle |
| |couloir| | Swimlane |
| note right / left | Annotation |
Thèmes & styles
PlantUML dispose d'un système de personnalisation via skinparam et de thèmes prédéfinis activables en une ligne.
@startuml
' Activer un thème prédéfini
!theme minty
' Ou personnaliser manuellement
skinparam {
BackgroundColor #0e0f14
ArrowColor #89ddff
ClassBorderColor #4a90d9
ClassBackgroundColor #1a1d28
ClassFontColor #e2e4f0
ClassFontName Fira Code
ClassFontSize 12
}
' Mode monochrome
skinparam monochrome true
' Ombres
skinparam shadowing false
@enduml
Thèmes disponibles
Thèmes clairs
| plain | Minimaliste |
| minty | Vert pastel |
| cerulean | Bleu clair |
| cloudscape | AWS-like |
Thèmes sombres
| darkAmiga | Rétro sombre |
| cyborg | Bootstrap dark |
| blueprint | Bleu blueprint |
| hacker | Terminal vert |
Listez tous les thèmes avec !theme _none_ puis consultez plantuml.com/theme pour les previews.
Rendu & export
PlantUML peut générer plusieurs formats d'image. En ligne de commande, via un serveur HTTP ou directement dans votre éditeur.
Ligne de commande
# Télécharger le JAR
wget https://github.com/plantuml/plantuml/releases/latest/download/plantuml.jar
# Générer un PNG (par défaut)
java -jar plantuml.jar diagramme.puml
# Générer un SVG
java -jar plantuml.jar -tsvg diagramme.puml
# Générer un PDF
java -jar plantuml.jar -tpdf diagramme.puml
# Traiter tous les .puml d'un dossier
java -jar plantuml.jar -tsvg ./diagrams/
# Mode serveur HTTP (port 8080)
java -jar plantuml.jar -picoweb:8080
Formats de sortie
| Option | Format | Usage recommandé |
|---|---|---|
| (aucun) | PNG | Documentation, emails |
| -tsvg | SVG | Web, zoomable |
| -tpdf | Impression | |
| -tlatex | LaTeX | Publications |
| -tutxt | ASCII art | Terminaux, READMEs |
Le serveur PlantUML expose une API REST : encodez votre code en Base64 URL-safe et appelez https://www.plantuml.com/plantuml/svg/{code} pour intégrer des diagrammes dynamiques dans n'importe quelle page web.