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.

01

Écrire du texte

Décrivez votre diagramme avec une syntaxe lisible entre balises @startuml et @enduml.

02

Générer l'image

PlantUML compile le texte via Java et Graphviz pour produire un PNG, SVG ou PDF.

03

Versionner avec Git

Suivez les évolutions de vos diagrammes comme du code : diff, historique, revue de code.

04

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.

PlantUML — Structure générale
@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

SyntaxeDescription
@startuml / @endumlDélimite chaque diagramme
' texteCommentaire ligne
/' … '/Commentaire bloc
title XxxTitre affiché en haut
skinparam …Personnalisation visuelle
!theme …Thème prédéfini
note left/right/topAnnotation flottante
hide empty membersMasque compartiments vides

Diagramme de classes

Déclarez des classes, interfaces, énumérations et leurs relations avec une syntaxe concise et intuitive.

PlantUML — Classes
@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

SymboleRelation
<|--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.

PlantUML — Séquence
@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

SyntaxeRôle
actor / participantTypes de participants
database / queueParticipants spéciaux
A -> B : msgMessage synchrone
A --> B : msgMessage retour/pointillé
A ->> B : msgMessage asynchrone
activate / deactivateBarres d'activation
alt / else / endFragment conditionnel
loop / endFragment boucle
note left/rightAnnotation

Cas d'utilisation

Définissez acteurs, cas d'utilisation et leurs relations avec une syntaxe claire.

PlantUML — Use Case
@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.

PlantUML — Activité (syntaxe bêta)
@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 / stopDébut / fin
:action;Activité (point-virgule final)
if (?) then / else / endifCondition
fork / fork again / end forkParallélisme
while (?) is (oui) / endwhileBoucle
|couloir|Swimlane
note right / leftAnnotation

Thèmes & styles

PlantUML dispose d'un système de personnalisation via skinparam et de thèmes prédéfinis activables en une ligne.

PlantUML — Thèmes & skinparam
@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

plainMinimaliste
mintyVert pastel
ceruleanBleu clair
cloudscapeAWS-like

Thèmes sombres

darkAmigaRétro sombre
cyborgBootstrap dark
blueprintBleu blueprint
hackerTerminal 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

Bash
# 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

OptionFormatUsage recommandé
(aucun)PNGDocumentation, emails
-tsvgSVGWeb, zoomable
-tpdfPDFImpression
-tlatexLaTeXPublications
-tutxtASCII artTerminaux, 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.