
2. Diagrammes standard du langage de modélisation unifiée (UML)
Au cœur de son fonctionnement, PlantUML a été conçu pour simplifier la création de diagrammes UML officiels. Il se divise en deux grandes catégories : les diagrammes structurels et les diagrammes comportementaux.
Diagrammes structurels
Diagrammes de classes et d’objets
Modélisez les structures orientées objet, les hiérarchies de classes, les interfaces, les attributs et les relations (héritage, agrégation, composition) directement à partir des définitions de code.

@startuml
titre Système de gestion d'hôtel
' Définir les interfaces
interface IReservable {
+ faireReservation(client: Client, dates: PlageDate): boolean
+ annulerReservation(idReservation: String): boolean
+ vérifierDisponibilité(date: Date): boolean
}
interface IPayable {
+ traiterPaiement(montant: double): boolean
+ émettreRemboursement(idReservation: String): boolean
+ obtenirStatutPaiement(): String
}
' Définir une classe abstraite
classe abstraite Personne {
- id: String
- nom: String
- email: String
- téléphone: String
+ getId(): String
+ getNom(): String
+ obtenirCoordonnées(): String
+ mettreÀJourCoordonnées(infos: String): void
}
' Définir des classes concrètes
class Client {
- pointsFidélité: int
- nombreSéjoursTot: int
- préférences: Liste
+ gagnerPointsFidélité(coûtSéjour: double): void
+ échangerPointsFidélité(points: int): boolean
+ obtenirNiveauFidélité(): String
+ ajouterPréférence(préférence: String): void
}
class Chambre {
- numéroChambre: String
- typeChambre: TypeChambre
- capacité: int
- prixParNuit: double
- équipements: Liste
- estDisponible: boolean
+ réserverChambre(client: Client, dates: PlageDate): boolean
+ libérerChambre(): void
+ obtenirPrix(client: Client): double
+ ajouterÉquipement(équipement: String): void
+ obtenirStatutChambre(): String
}
class Réservation {
- idRéservation: String
- dateArrivée: Date
- dateDépart: Date
- prixTotal: double
- statut: StatutRéservation
- demandesSpéciales: String
+ calculerPrixTotal(): double
+ confirmerRéservation(): void
+ enregistrerArrivée(): void
+ enregistrerDépart(): boolean
+ mettreÀJourDates(nouvelleArrivée: Date, nouveauDépart: Date): boolean
+ obtenirDurée(): int
}
' Énumération
énum TypeChambre {
STANDARD
LUXE
SUITE
PRÉSIDENTIELLE
}
' Énumération
énum StatutRéservation {
EN_ATTENTE
CONFIRMÉE
ARRIVÉE
DÉPART
ANNULÉE
}
' Relations
' Implémentation d'interface (ligne pointillée avec triangle)
IReservable <|.. Réservation : implémente
IPayable <|.. Réservation : implémente
' Héritage abstrait (ligne pleine avec triangle)
Personne <|-- Client : étend
' Composition (losange plein) - Chambre fait partie de Réservation
Réservation *-- "1..*" Chambre : contient >
' Association (ligne pleine simple) avec multiplicité
Client "1" -- "0..*" Réservation : effectue >
' Dépendance (flèche pointillée) - Client dépend de TypeChambre
Client ..> TypeChambre : a un niveau de fidélité basé sur >
' Association avec libellé personnalisé
Réservation "1" --o "1" Client : réservée par >
' Réalisation d'interface par classe abstraite (connecteur optionnel supplémentaire)
IReservable <|.. Chambre : implémente
@enduml Diagrammes de composants et de déploiement
Cartographiez les composants logiciels, les nœuds physiques, les artefacts et les environnements de déploiement pour visualiser la distribution logicielle sur des infrastructures matérielles ou cloud.
@startuml
titre Diagramme de composants d'application web
package "Couche client" {
[Navigateur web] as Navigateur
[Application mobile] as Mobile
}
package "Serveur d'application" {
[Passerelle API] as Passerelle
[Service Utilisateur] as ServiceUtilisateur
[Service Commande] as ServiceCommande
[Service Paiement] as ServicePaiement
}
package "Couche base de données" {
base "Base de données Utilisateurs" as BaseUtilisateurs
base "Base de données Commandes" as BaseCommandes
}
package "Services tiers" {
[API Stripe] as Stripe
}
' Connexions
Navigateur --> Passerelle : HTTP / REST
Mobile --> Passerelle : HTTP / REST
Passerelle --> ServiceUtilisateur : REST interne
Passerelle --> ServiceCommande : REST interne
ServiceUtilisateur --> BaseUtilisateurs : Lecture / Écriture
ServiceCommande --> BaseCommandes : Lecture / Écriture
ServiceCommande --> ServicePaiement : Traiter le paiement
ServicePaiement --> Stripe : HTTPS / API
@enduml 
@startuml
titre Diagramme de déploiement - Application web en trois niveaux
skinparam styleComposant rectangle
nœud "Bureau client" as nœudClient {
nœud "Navigateur web" as navigateur {
artefact "Frontend de l'application web (HTML/JS)" as frontend
}
}
nœud "Serveur d'application" as nœudServeurApp {
nœud "Conteneur de servlets (Tomcat)" as tomcat {
artefact "API backend (fichier WAR)" as apiApp
}
}
nœud "Serveur de base de données" as nœudBaseDonnées {
base "PostgreSQL" as postgres {
artefact "Schéma de base de données de l'application" as schémaBase
}
}
nœudClient -- nœudServeurApp : HTTPS (Port 443)
nœudServeurApp -- nœudBaseDonnées : JDBC (Port 5432)
@enduml 
Diagrammes comportementaux et d’interaction
Diagrammes de séquence
Le type de diagramme PlantUML le plus populaire. Suivez les interactions étape par étape, les appels d’API synchrones/asynchrones et les flux de messages entre les acteurs et les systèmes au fil du temps.
@startuml
titre Flux d'authentification de l'utilisateur
acteur "Utilisateur" comme utilisateur
participant "Application Web" comme app
participant "API d'authentification" comme auth
database "Base de données des utilisateurs" comme db
utilisateur -> app : Saisir les identifiants
activer app
app -> auth : POST /api/v1/login
activer auth
auth -> db : Rechercher l'utilisateur par courriel
activer db
db --> auth : Retourner l'enregistrement utilisateur & hachage
désactiver db
alt Identifiants valides
auth -> auth : Vérifier le mot de passe et générer un JWT
auth --> app : 200 OK (Jeton & Profil)
app --> utilisateur : Rediriger vers le tableau de bord
sinon Identifiants invalides
auth --> app : 401 Non autorisé (Erreur)
app --> utilisateur : Afficher « Identifiants invalides »
fin
désactiver auth
désactiver app
@enduml 
Diagrammes de cas d’utilisation
Définissez les limites du système, les acteurs, les objectifs des utilisateurs et la portée fonctionnelle.
@startuml
titre Diagramme des cas d'utilisation du système de vente en ligne
direction de gauche à droite
acteur Client
acteur "Client enregistré" comme ClientEnregistré
acteur "Passerelle de paiement" comme SystèmePaiement
Client <|-- ClientEnregistré rectangle "Système de commerce électronique" { usecase "Parcourir les produits" comme UC_Parcourir usecase "Rechercher des articles" comme UC_Rechercher usecase "Gérer le panier" comme UC_Panier usecase "Passer à la caisse" comme UC_Caisse usecase "Appliquer un bon de réduction" comme UC_Bon usecase "Traiter le paiement" comme UC_Paiement usecase "Voir l'historique des commandes" comme UC_Historique } Client --> UC_Parcourir
Client --> UC_Rechercher
Client --> UC_Panier
Client --> UC_Caisse
ClientEnregistré --> UC_Historique
UC_Caisse .> UC_Paiement : <>
UC_Caisse <.. UC_Bon : <>
UC_Paiement -- SystèmePaiement
@enduml 
Diagrammes d’activité et d’état
Diagramme de flux logique métier complexe, flux algorithmiques, transitions de machine à états et concurrence.
@startuml
titre Processus de traitement de commande
|Client|
commencer
:Passer la commande;
:Soumettre les détails de paiement;
|Système de commande|
si (Paiement valide ?) alors (oui)
:Réserver l'inventaire;
' Séparation de concurrence
fork
|Entrepôt|
:Prendre les articles sur l'étagère;
:Emballer les articles dans une boîte;
fork à nouveau
|Facturation|
:Générer le PDF de la facture;
:Débiter la méthode de paiement;
fin fork
|Expédition|
:Attacher l'étiquette d'expédition;
:Remettre au transporteur;
|Client|
:Réception du colis;
arrêter
sinon (non)
|Système de commande|
:Envoyer une notification d'échec de paiement;
|Client|
:Mettre à jour la méthode de paiement;
arrêter
fin si
@enduml 
@startuml
titre Cycle de vie d'une commande e-commerce
[*] --> En attente : Commande passée
état En attente {
[*] --> En attente de paiement
En attente de paiement --> Paiement échoué : Erreur de paiement
Paiement échoué --> En attente de paiement : Réessayer le paiement
}
En attente --> En traitement : Paiement autorisé
En attente --> Annulée : Utilisateur annule la commande
état En traitement {
[*] --> Emballage
Emballage --> Prêt à expédier : Contrôle qualité réussi
}
En traitement --> Expédiée : Remise au transporteur
Expédiée --> Livrée : Livraison confirmée
Expédiée --> Retournée : Livraison échouée / Refusée
Livrée --> [*]
Annulée --> [*]
Retournée --> [*]
@enduml 
Diagrammes de timing
Détail précis des transitions d’état et des interactions entre objets sur des intervalles de temps discrets — idéal pour les systèmes embarqués ou la conception matérielle en temps réel.
@startuml
titre Diagramme de timing du transfert de données SPI
robuste "Horloge (SCLK)" comme CLK
binaire "Sélection de puce (CS)" comme CS
binaire "Sortie maître (MOSI)" comme MOSI
concis "Bus de données (MISO)" comme MISO
@0
CS est haut
CLK est bas
MOSI est bas
MISO est « Inactif »
@1
CS est bas
MISO est « En-tête »
@2
CLK est haut
MOSI est haut
@3
CLK est bas
@4
CLK est haut
MOSI est bas
MISO est « Charge utile »
@5
CLK est bas
@6
CS est haut
CLK est bas
MOSI est bas
MISO est « Inactif »
@enduml 
3. Architecture de haut niveau et diagrammes spécifiques au domaine
Au-delà des UML traditionnels, PlantUML excelle à représenter les systèmes logiciels multicouches et les architectures de données à l’aide de bibliothèques d’extensions spécialisées.
Diagrammes du modèle C4
Exprimer l’architecture logicielle à différents niveaux d’abstraction — Contexte, Conteneur, Composant et Code — afin de rendre la conception du système compréhensible pour les parties prenantes techniques et non techniques.
@startuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
TITRE Diagramme de contexte du système pour le système de banque en ligne
Personne(client, "Client de banque personnelle", "Un client de la banque, possédant des comptes bancaires personnels.")
Système(systeme_bancaire, "Système de banque en ligne", "Permet aux clients de consulter les informations relatives à leurs comptes bancaires, et d'effectuer des paiements.")
Système_Ext(systeme_mainframe, "Système bancaire principal", "Stocke toutes les informations essentielles sur les clients, les comptes, les transactions, etc.")
Système_Ext(systeme_email, "Système de messagerie", "Le système interne de messagerie Microsoft Exchange.")
Rel(client, systeme_bancaire, "Consulte les soldes des comptes, et effectue des paiements en utilisant")
Rel(systeme_bancaire, systeme_mainframe, "Récupère les informations sur les comptes, et effectue des paiements en utilisant")
Rel(systeme_bancaire, systeme_email, "Envoie des e-mails en utilisant")
Rel_Arriere(systeme_email, client, "Envoie des e-mails à")
@enduml 
Diagrammes ArchiMate
Prendre en charge la modélisation de l’architecture d’entreprise à travers les couches métier, application et technologie afin de relier la stratégie organisationnelle aux systèmes opérationnels.
@startuml
!include <archimate/Archimate>
titre Exemple ArchiMate - Paiement en ligne de factures
Groupement(business, "Couche Métier"){
Processus_metier(payerFacture, "Processus de paiement de facture")
Objet_metier(compteBancaireClient, "Compte bancaire du client")
Service_metier(servicePaiement, "Service métier de paiement de factures")
}
Groupement(application, "Couche Application"){
Composant_application(applicationMobile, "Application bancaire mobile")
Fonction_application(processusPaiement, "Logique de traitement du paiement")
Objet_donnee_application(enregistrementTransaction, "Charge utile des données de transaction")
}
Groupement(technologie, "Couche Technologie"){
Artéfact_technologie(jwtToken, "Jeton de session chiffré")
Service_technologie(portailAPI, "Service de passerelle API")
Service_technologie(serviceBaseDonnees, "Service de base de données principale")
}
Rel_Fluide_Droite(payerFacture, compteBancaireClient, "")
Rel_Servir_Haut(servicePaiement, payerFacture, "")
Rel_Spécialisation_Haut(processusPaiement, servicePaiement, "")
Rel_Fluide_Droite(enregistrementTransaction, processusPaiement, "")
Rel_Assignation_Gauche(applicationMobile, processusPaiement, "")
Rel_Realisation_Haut(jwtToken, enregistrementTransaction, "")
Rel_Servir_Haut(portailAPI, processusPaiement, "")
Rel_Servir_Haut(serviceBaseDonnees, portailAPI, "")
@enduml 
Diagrammes Entité-Relation (ERD)
Générer des visualisations claires des schémas de base de données, incluant la notation standard en forme de pied de corbeau et les modèles ERD de Chen.
@startuml
titre Schéma de base de données E-Commerce (forme de pied de corbeau)
' Masquer les icônes circulaires pour les entités
masquer cercle
paramètre_peau linetype ortho
entité "Utilisateur" comme utilisateur {
* user_id : INT <>
--
* email : VARCHAR(255)
* hash_mot_de_passe : VARCHAR(255)
* date_creation : TIMESTAMP
}
entité "ProfilClient" comme profil {
* profil_id : INT <>
--
* user_id : INT <>
* prénom : VARCHAR(100)
* nom : VARCHAR(100)
téléphone : VARCHAR(20)
}
entité "Commande" comme commande {
* commande_id : INT <>
--
* user_id : INT <>
* date_commande : TIMESTAMP
* montant_total : DECIMAL(10,2)
* statut : VARCHAR(50)
}
entité "ArticleCommande" comme article {
* article_commande_id : INT <>
--
* commande_id : INT <>
* produit_id : INT <>
* quantité : INT
* prix_unitaire : DECIMAL(10,2)
}
entité "Produit" comme produit {
* produit_id : INT <>
--
* reference : VARCHAR(50)
* nom : VARCHAR(150)
description : TEXT
* prix : DECIMAL(10,2)
}
' Relations
utilisateur ||--o| profil : "a"
utilisateur ||--o{ commande : "place"
commande ||--|{ article : "contient"
produit ||--o{ article : "apparaît dans"
@enduml 
Cartes de réseau et d’infrastructure
Générer facilement des topologies réseau, des nœuds serveurs, des connexions cloud et des pare-feu.
@startnwdiag
titre Topologie du réseau d'entreprise
nwdiag {
réseau Internet_Externe {
adresse = "0.0.0.0/0"
client_utilisateur [adresse = "203.0.113.15", description = "Utilisateur distant"];
pare_feu_frontière [adresse = "192.168.1.1", description = "Pare-feu de périmètre"];
}
réseau Zone_DMZ {
adresse = "192.168.1.0/24"
pare_feu_frontière;
équilibreur_charge [adresse = "192.168.1.10", description = "Équilibreur de charge Nginx"];
serveur_mail [adresse = "192.168.1.25", description = "Serveur SMTP"];
pare_feu_interne [adresse = "192.168.1.254", description = "Pare-feu interne"];
}
réseau LAN_Prive {
adresse = "10.0.1.0/24"
pare_feu_interne;
serveur_application_01 [adresse = "10.0.1.50", description = "Nœud API 1"];
serveur_application_02 [adresse = "10.0.1.51", description = "Nœud API 2"];
base_donnees_primaire [adresse = "10.0.1.100", description = "PostgreSQL principal"];
}
réseau Sous-réseau_Gestion {
adresse = "10.0.99.0/24"
pare_feu_interne;
bastion_admin [adresse = "10.0.99.5", description = "Hôte Bastion SSH"];
nœud_monitoring [adresse = "10.0.99.20", description = "Hôte Prometheus"];
}
}
@endnwdiag 
4. Visualisations pour la planification, la gestion et les séances de cerveau-attaque
PlantUML n’est pas limité à la conception logicielle — c’est aussi un outil puissant pour la gestion de projet et les séances de cerveau-attaque d’équipe.
Graphiques de Gantt
Planifier les calendriers de projet, les dépendances des tâches, les jalons et l’allocation des ressources à l’aide d’une notation en texte clair.
gantt
titre Planification du lancement du produit logiciel
dateFormat AAAA-MM-JJ
axisFormat %b %d
section Planification et conception
Recueil des exigences :a1, 2026-09-01, 10j
Conception de l'architecture :a2, après a1, 10j
section Développement
Développement de l'API backend :b1, après a2, 15j
Développement de l'interface frontend :b2, après a2, 15j
section Tests et déploiement
Tests d'intégration :c1, après b1 b2, 8j
Audit de sécurité :c2, après c1, 5j
Déploiement en production :étape clé, m1, après c2, 0j 
Structure des décompositions de travail (WBS)
Décomposer les projets complexes en livrables hiérarchiques et en morceaux de tâches gérables.
@startwbs
titre Structure de décomposition du projet de refonte du site web
* Projet de refonte du site web
** 1. Découverte et stratégie
*** 1.1 Entrevues avec les parties prenantes
*** 1.2 Analyse des concurrents
*** 1.3 Validation du périmètre et de la stratégie
** 2. Conception UX/UI
*** 2.1 Maquettage
**** 2.1.1 Maquettes pour ordinateur
**** 2.1.2 Maquettes pour mobile
*** 2.2 Système de design
**** 2.2.1 Bibliothèque de composants
**** 2.2.2 Typographie et guide de style
** 3. Développement technique
*** 3.1 Frontend
**** 3.1.1 Modèles de pages
**** 3.1.2 Intégrations API
*** 3.2 CMS et backend
**** 3.2.1 Types de publications personnalisés
**** 3.2.2 Migration de base de données
** 4. Qualité et mise en production
*** 4.1 Tests multi-navigateurs
*** 4.2 Migration du contenu
*** 4.3 Passage DNS et mise en ligne
@endwbs 
Cartes mentales
Capturer rapidement des idées structurées, des taxonomies de fonctionnalités et des notes d’exploration technique lors des réunions d’équipe.
@startmindmap
titre Carte des fonctionnalités de la plateforme e-commerce
* Plateforme e-commerce
** Gestion des comptes utilisateurs
*** Authentification sociale (Google, Apple)
*** Authentification à deux facteurs
*** Historique des commandes et suivi
** Catalogue de produits et recherche
*** Recherche facetée et filtres
*** Synchronisation des stocks
*** Avis et notes sur les produits
** Passerelle de paiement et paiement
*** Passerelles de paiement (Stripe, PayPal)
*** Moteur de coupons et promotions
*** Paiement express invité
** Assistance client
*** Assistant de chat en direct
*** Portail automatisé de retour
@endmindmap 
5. Rédaction et rendu rapides de PlantUML : l’avantage de VPasCode
Bien que PlantUML soit extrêmement puissant, la configuration d’environnements Java locaux, des dépendances Graphviz et des outils en ligne de commande peut créer des difficultés. Utiliser un outil dédié, basé sur le web, Outil PlantUML élimine complètement ces obstacles.
Visual Paradigm VPasCode est une plateforme unifiée de diagrammes en code conçue spécifiquement pour simplifier les flux de travail du texte au diagramme.
Principaux avantages de VPasCode :
- Plateforme en ligne sans configuration : Accédez instantanément à un éditeur puissant sur vpascode.com sans installer de compilateurs ou de plugins locaux. Découvrez-en plus dans l’Aperçu de VPasCode.
- Détection automatique du format et aperçu en temps réel : Collez votre script, et VPasCode détecte automatiquement s’il s’agit de PlantUML, Mermaid ou Graphviz, en affichant des mises à jour instantanées en direct au fur et à mesure de votre frappe.
- Correction automatique des erreurs de code par IA : Si vous rencontrez une erreur de syntaxe, cliquez simplement sur « Corriger par IA ». VPasCode corrige le code et fournit une comparaison côte à côte avec des explications claires, afin que vous puissiez maîtriser la syntaxe PlantUML plus rapidement.
- Traduction de diagrammes par IA native : Traduisez les étiquettes et les notes des diagrammes dans plusieurs langues directement dans l’éditeur — idéal pour les équipes de développement mondiales.
- Export flexible et intégration à la documentation : Exportez des PNGs haute résolution ou des images vectorielles SVG évolutives gratuitement. Vous pouvez également envoyer directement les diagrammes vers Visual Paradigm OpenDocs en utilisant leur guide de fonctionnalité diagramme-en-code.
6. Exemple de démarrage rapide : Affichage d’un diagramme de séquence dans VPasCode
Pour voir à quel point il est facile d’utiliser un éditeur UML gratuit comme VPasCode, envisagez ce script de diagramme de séquence PlantUML basique :
@startuml
autonumber
acteur Utilisateur
participant "Éditeur VPasCode" comme Éditeur
participant "Moteur IA" comme IA
Utilisateur -> Éditeur : Coller le code PlantUML
Éditeur -> Éditeur : Détection automatique du format et rendu en temps réel
alt Erreur de syntaxe détectée
Utilisateur -> Éditeur : Cliquez sur « Corriger par IA »
Éditeur -> IA : Envoyer le code corrompu
IA --> Éditeur : Retourner le code corrigé et la différence
fin
Éditeur --> Utilisateur : Afficher le diagramme vectoriel propre (SVG/PNG)
@enduml 
Copiez simplement le code ci-dessus, ouvrez VPasCode, puis collez-le dans l’éditeur pour visualiser le rendu instantané en direct et expérimenter les améliorations automatisées par IA.
7. Conclusion et étapes suivantes
PlantUML permet aux équipes de maintenir une documentation visuelle claire, versionnable et cohérente pour les UML, l’architecture, les schémas de base de données et les diagrammes de gestion de projet. Associé à un outil moderne outil PlantUML comme VPasCode, la rédaction technique devient plus rapide, sans erreurs et parfaitement collaborative.
Prêt à simplifier votre processus de création de diagrammes ? Commencez dès aujourd’hui à éditer et à rendre des diagrammes PlantUML gratuitement sur vpascode.com.



