
2. Diagrammes standard de Unified Modeling Language (UML)
À sa base, PlantUML a été conçu pour simplifier la création de diagrammes UML officiels. Il se divise en deux catégories principales : 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
title Système de gestion hôtelière
' Définir les interfaces
interface IReservable {
+ faireReservation(client: Client, dates: PlageDates): boolean
+ annulerReservation(idReservation: String): boolean
+ verifierDisponibilite(date: Date): boolean
}
interface IPayable {
+ traiterPaiement(montant: double): boolean
+ emettreRemboursement(idReservation: String): boolean
+ obtenirStatutPaiement(): String
}
' Définir la classe abstraite
abstract class Personne {
- id: String
- nom: String
- email: String
- telephone: String
+ getId(): String
+ getNom(): String
+ getInfosContact(): String
+ mettreAJourInfosContact(info: String): void
}
' Définir les classes concrètes
class Client {
- pointsFidelite: int
- sejoursTotaux: int
- preferences: List
+ gagnerPointsFidelite(coûtSejour: double): void
+ utiliserPointsFidelite(points: int): boolean
+ obtenirNiveauFidelite(): String
+ ajouterPreference(preference: String): void
}
class Chambre {
- numeroChambre: String
- typeChambre: TypeChambre
- capacite: int
- prixParNuit: double
- equipements: List
- disponible: boolean
+ reserverChambre(client: Client, dates: PlageDates): boolean
+ libererChambre(): void
+ getPrix(client: Client): double
+ ajouterEquipement(equipement: String): void
+ obtenirStatutChambre(): String
}
class Reservation {
- idReservation: String
- dateArrivee: Date
- dateDepart: Date
- prixTotal: double
- statut: StatutReservation
- demandesSpeciales: String
+ calculerPrixTotal(): double
+ confirmerReservation(): void
+ checkIn(): void
+ checkOut(): boolean
+ mettreAJourDates(nouvelleArrivee: Date, nouveauDepart: Date): boolean
+ obtenirDurée(): int
}
' Énumération
enum TypeChambre {
STANDARD
DELUXE
SUITE
PRESIDENTIAL
}
' Énumération
enum StatutReservation {
EN_ATTENTE
CONFIRMÉE
ARRIVÉE
DÉPART
ANNULÉE
}
' Relations
' Implémentation d'interface (ligne pointillée avec triangle)
IReservable <|.. Reservation : implémente
IPayable <|.. Reservation : implémente
' Héritage abstrait (ligne pleine avec triangle)
Personne <|-- Client : étend
' Composition (losange plein) - La Chambre fait partie de la Reservation Reservation *-- "1..*" Chambre : contient >
' Association (ligne pleine simple) avec multiplicité
Client "1" -- "0..*" Reservation : fait >
' Dépendance (flèche pointillée) - Le Client dépend du TypeChambre
Client ..> TypeChambre : a un niveau de fidélité basé sur >
' Association avec étiquette personnalisée
Reservation "1" --o "1" Client : réservé par >
' Réalisation d'interface par une classe abstraite (connecteur supplémentaire optionnel)
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 du logiciel sur le matériel ou l’infrastructure cloud.
@startuml
title Diagramme de composants d'application web
package "Couche Client" {
[Navigateur Web] as Browser
[Application Mobile] as Mobile
}
package "Serveur d'application" {
[Passerelle API] as Gateway
[Service Utilisateur] as UserService
[Service Commande] as OrderService
[Service Paiement] as PaymentService
}
package "Couche Base de données" {
database "Base de données Utilisateur" as UserDB
database "Base de données Commande" as OrderDB
}
package "Services Tiers" {
[API Stripe] as Stripe
}
' Connexions
Browser --> Gateway : HTTP / REST
Mobile --> Gateway : HTTP / REST
Gateway --> UserService : REST Interne
Gateway --> OrderService : REST Interne
UserService --> UserDB : Lecture / Écriture
OrderService --> OrderDB : Lecture / Écriture
OrderService --> PaymentService : Traitement Paiement
PaymentService --> Stripe : HTTPS / API
@enduml 
@startuml
title Diagramme de déploiement - Application web à 3 niveaux
skinparam componentStyle rectangle
node "Poste client" as clientNode {
node "Navigateur Web" as browser {
artifact "Frontend Application Web (HTML/JS)" as frontend
}
}
node "Serveur d'application" as appServerNode {
node "Conteneur Servlet (Tomcat)" as tomcat {
artifact "API Backend (fichier WAR)" as appApi
}
}
node "Serveur de base de données" as databaseNode {
database "PostgreSQL" as postgres {
artifact "Schéma de base de données d'application" as dbSchema
}
}
clientNode -- appServerNode : HTTPS (Port 443)
appServerNode -- databaseNode : JDBC (Port 5432)
@enduml 
Diagrammes comportementaux et d’interaction
Diagrammes de séquence
Le type de diagramme PlantUML le plus populaire. Tracez étape par étape les interactions, 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 utilisateur
acteur "Utilisateur" as user
participant "Application Web" as app
participant "API d'authentification" as auth
database "Base de données utilisateur" as db
user -> app : Saisir les identifiants
activer app
app -> auth : POST /api/v1/login
activer auth
auth -> db : Interroger l'utilisateur par e-mail
activer db
db --> auth : Retourner l'enregistrement utilisateur et le 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 et profil)
app --> user : Rediriger vers le tableau de bord
sinon Identifiants invalides
auth --> app : 401 Non autorisé (Erreur)
app --> user : Afficher "Identifiants invalides"
fin
désactiver auth
désactiver app
@enduml 
Diagrammes de cas d’utilisation
Définir les limites du système, les acteurs, les objectifs des utilisateurs et la portée fonctionnelle.
@startuml
titre Système d'achat en ligne - Diagramme de cas d'utilisation
direction de gauche à droite
acteur Client
acteur "Client inscrit" as RegCustomer
acteur "Passerelle de paiement" as PaymentSystem
Client <|-- RegCustomer rectangle "Système de commerce électronique" { casd'utilisation "Parcourir les produits" as UC_Browse casd'utilisation "Rechercher des articles" as UC_Search casd'utilisation "Gérer le panier" as UC_Cart casd'utilisation "Passer la commande" as UC_Checkout casd'utilisation "Appliquer un coupon de réduction" as UC_Coupon casd'utilisation "Traiter le paiement" as UC_Payment casd'utilisation "Voir l'historique des commandes" as UC_History } Client --> UC_Browse
Client --> UC_Search
Client --> UC_Cart
Client --> UC_Checkout
RegCustomer --> UC_History
UC_Checkout .> UC_Payment : <>
UC_Checkout <.. UC_Coupon : <>
UC_Payment -- PaymentSystem
@enduml 
Diagrammes d’activité et d’état
Modéliser la logique métier complexe, les flux algorithmiques, les transitions de machines à états et la concurrence.
@startuml
titre Processus d'exécution de commande
|Client|
début
:Passer une commande;
:Soumettre les détails de paiement;
|Système de commande|
si (Paiement valide ?) alors (oui)
:Réserver l'inventaire;
' Division de concurrence
fork
|Entrepôt|
:Prélever les articles sur l'étagère;
:Emballer les articles dans une boîte;
fork again
|Facturation|
:Générer le PDF de facture;
:Prélever le moyen de paiement;
end fork
|Expédition|
:Joindre l'étiquette d'expédition;
:Remettre au transporteur;
|Client|
:Recevoir le colis;
stop
sinon (non)
|Système de commande|
:Envoyer un avis d'échec de paiement;
|Client|
:Mettre à jour le moyen de paiement;
stop
fin si
@enduml 
@startuml
titre Cycle de vie d'une commande de commerce électronique
[*] --> En attente : Commande passée
état En attente {
[*] --> En attente du paiement
En attente du paiement --> Échec du paiement : Erreur de paiement
Échec du paiement --> En attente du paiement : Réessayer le paiement
}
En attente --> En traitement : Paiement autorisé
En attente --> Annulé : L'utilisateur annule la commande
état En traitement {
[*] --> Emballage
Emballage --> Prêt pour l'expédition : Contrôle qualité réussi
}
En traitement --> Expédié : Remise au transporteur
Expédié --> Livré : Livraison confirmée
Expédié --> Retourné : Échec de la livraison / Refusé
Livré --> [*]
Annulé --> [*]
Retourné --> [*]
@enduml 
Diagrammes temporels
Détaille les transitions d’état précises et les interactions d’objets sur des tranches de temps discrètes — idéal pour les systèmes embarqués ou la conception matérielle en temps réel.
@startuml
titre Diagramme temporel de transfert de données SPI
robuste "Horloge (SCLK)" as CLK
binaire "Sélection de puce (CS)" as CS
binaire "Sortie maître (MOSI)" as MOSI
concis "Bus de données (MISO)" as 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à de l’UML traditionnel, PlantUML excelle dans la représentation de systèmes logiciels multicouches et d’architectures de données grâce à des bibliothèques d’extensions spécialisées.
Diagrammes du modèle C4
Exprimez l’architecture logicielle à différents niveaux d’abstraction — Contexte, Conteneur, Composant et Code — rendant 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
TITLE Diagramme de contexte du système pour le système de banque en ligne
Person(customer, "Client de banque personnelle", "Un client de la banque, disposant de comptes bancaires personnels.")
System(banking_system, "Système de banque en ligne", "Permet aux clients de consulter les informations de leurs comptes bancaires et d'effectuer des paiements.")
System_Ext(mainframe, "Système bancaire sur mainframe", "Stocke toutes les informations bancaires de base concernant les clients, les comptes, les transactions, etc.")
System_Ext(email_system, "Système de messagerie", "Le système de messagerie interne Microsoft Exchange.")
Rel(customer, banking_system, "Consulte les soldes des comptes et effectue des paiements via")
Rel(banking_system, mainframe, "Récupère les informations de compte et effectue des paiements via")
Rel(banking_system, email_system, "Envoie des e-mails via")
Rel_Back(email_system, customer, "Envoie des e-mails à")
@enduml 
Diagrammes ArchiMate
Prend en charge la modélisation de l’architecture d’entreprise à travers les couches métier, application et technologie pour mapper la stratégie organisationnelle aux systèmes opérationnels.
@startuml
!include <archimate/Archimate>
title Exemple ArchiMate - Paiement de factures en ligne
Grouping(business, "Couche métier"){
Business_Process(payBillProcess, "Processus de paiement de factures")
Business_Object(bankAccount, "Compte bancaire du client")
Business_Service(paymentService, "Service métier de paiement de factures")
}
Grouping(application, "Couche application"){
Application_Component(bankingApp, "Application de banque mobile")
Application_Function(paymentProcessing, "Logique de traitement des paiements")
Application_DataObject(transactionRecord, "Charge utile de données de transaction")
}
Grouping(technology, "Couche technologie"){
Technology_Artifact(jwtToken, "Jeton de session crypté")
Technology_Service(apiGateway, "Service de passerelle API")
Technology_Service(dbService, "Service de base de données principal")
}
Rel_Flow_Right(payBillProcess, bankAccount, "")
Rel_Serving_Up(paymentService, payBillProcess, "")
Rel_Specialization_Up(paymentProcessing, paymentService, "")
Rel_Flow_Right(transactionRecord, paymentProcessing, "")
Rel_Assignment_Left(bankingApp, paymentProcessing, "")
Rel_Realization_Up(jwtToken, transactionRecord, "")
Rel_Serving_Up(apiGateway, paymentProcessing, "")
Rel_Serving_Up(dbService, apiGateway, "")
@enduml 
Diagrammes Entité-Relation (DER)
Générez des visualisations propres de schémas de base de données, y compris la notation standard de pied de corbeau et les modèles ERD de Chen.
@startuml
title Schéma de base de données E-Commerce (Pied de corbeau)
' Masquer les icônes de cercle pour les entités
hide circle
skinparam linetype ortho
entity "Utilisateur" as user {
* user_id : INT <>
--
* email : VARCHAR(255)
* password_hash : VARCHAR(255)
* created_at : TIMESTAMP
}
entity "ProfilClient" as profile {
* profile_id : INT <>
--
* user_id : INT <>
* first_name : VARCHAR(100)
* last_name : VARCHAR(100)
phone : VARCHAR(20)
}
entity "Commande" as order {
* order_id : INT <>
--
* user_id : INT <>
* order_date : TIMESTAMP
* total_amount : DECIMAL(10,2)
* status : VARCHAR(50)
}
entity "ArticleCommande" as item {
* order_item_id : INT <>
--
* order_id : INT <>
* product_id : INT <>
* quantity : INT
* unit_price : DECIMAL(10,2)
}
entity "Produit" as product {
* product_id : INT <>
--
* sku : VARCHAR(50)
* name : VARCHAR(150)
description : TEXT
* price : DECIMAL(10,2)
}
' Relations
user ||--o| profile : "possède"
user ||--o{ order : "passe"
order ||--|{ item : "contient"
product ||--o{ item : "apparaît dans"
@enduml 
Cartes réseau et infrastructure
Rendez les topologies réseau, les nœuds de serveurs, les connexions cloud et les pare-feu sans effort.
@startnwdiag
title Topologie réseau d'entreprise
nwdiag {
network External_Internet {
address = "0.0.0.0/0"
user_client [address = "203.0.113.15", description = "Utilisateur distant"];
edge_firewall [address = "192.168.1.1", description = "Pare-feu périmétrique"];
}
network DMZ_Zone {
address = "192.168.1.0/24"
edge_firewall;
load_balancer [address = "192.168.1.10", description = "Équilibreur de charge Nginx"];
mail_server [address = "192.168.1.25", description = "Serveur SMTP"];
internal_firewall [address = "192.168.1.254", description = "Pare-feu interne"];
}
network Private_LAN {
address = "10.0.1.0/24"
internal_firewall;
app_server_01 [address = "10.0.1.50", description = "Nœud API 1"];
app_server_02 [address = "10.0.1.51", description = "Nœud API 2"];
db_master [address = "10.0.1.100", description = "PostgreSQL Primaire"];
}
network Management_Subnet {
address = "10.0.99.0/24"
internal_firewall;
admin_bastion [address = "10.0.99.5", description = "Hôte bastion SSH"];
monitoring_node [address = "10.0.99.20", description = "Hôte Prometheus"];
}
}
@endnwdiag 
4. Visuels de planification, de gestion et de brainstorming
PlantUML n’est pas limité à la conception logicielle ; c’est également un outil puissant pour la gestion de projet et le brainstorming d’équipe.
Diagrammes de Gantt
Planifiez les calendriers de projet, les dépendances de tâches, les jalons et l’allocation des ressources en utilisant un balisage texte épuré.
gantt
titre Calendrier de lancement de produit logiciel
formatDate YYYY-MM-DD
formatAxis %b %d
section Planification & Conception
Collecte des besoins :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 utilisateur Frontend :b2, après a2, 15j
section Tests & Lancement
Tests d'intégration :c1, après b1 b2, 8j
Audit de sécurité :c2, après c1, 5j
Lancement en production :jalón, m1, après c2, 0j 
Structure de découpage du projet (WBS)
Décomposez les projets complexes en livrables hiérarchiques et en blocs de tâches gérables.
@startwbs
titre WBS de refonte de site web
* Projet de refonte de site web
** 1. Découverte & Stratégie
*** 1.1 Entretiens avec les parties prenantes
*** 1.2 Audit des concurrents
*** 1.3 Validation du périmètre et de la stratégie
** 2. Conception UX/UI
*** 2.1 Wireframing
**** 2.1.1 Maquettes pour bureau
**** 2.1.2 Maquettes pour mobile
*** 2.2 Système de design
**** 2.2.1 Bibliothèque de composants
**** 2.2.2 Typographie & Guide de style
** 3. Développement technique
*** 3.1 Frontend
**** 3.1.1 Modèles de pages
**** 3.1.2 Intégrations d'API
*** 3.2 CMS & Backend
**** 3.2.1 Types de publications personnalisés
**** 3.2.2 Migration de base de données
** 4. QA & Lancement
*** 4.1 Tests multi-navigateurs
*** 4.2 Migration de contenu
*** 4.3 Basculage DNS & Mise en ligne
@endwbs 
Cartes mentales
Capturez rapidement des idées structurées, des taxonomies de fonctionnalités et des notes d’exploration technique lors des séances d’équipe.
@startmindmap
titre Carte des fonctionnalités de la plateforme de commerce électronique
* Plateforme de commerce électronique
** Gestion des comptes utilisateurs
*** Authentification sociale (Google, Apple)
*** Authentification multifacteur
*** Historique des commandes & Suivi
** Catalogue de produits & Recherche
*** Recherche facettée & Filtres
*** Synchronisation des stocks
*** Avis & Notations des produits
** Paiement & Paiements
*** Passerelles de paiement (Stripe, PayPal)
*** Moteur de coupons & Promotions
*** Paiement invité en un clic
** Support client
*** Assistant de chat en direct
*** Portail de retour automatisé
@endmindmap 
5. Écriture 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 frictions. L’utilisation d’une plateforme web dédiée,outil PlantUMLélimine complètement ces obstacles.
Visual Paradigm VPasCodeest une plateforme unifiée de diagrammes en code conçue spécifiquement pour rationaliser les flux de travail de texte vers diagramme. Grâce aux récentes améliorations mises en évidence dans notreMise à jour majeure de VPasCode : Générez et modifiez des diagrammes instantanément avec l’IA, elle prend désormais en charge des capacités d’IA natives directement dans l’éditeur.
Principaux avantages de VPasCode :
- Génération et modification de diagrammes par IA native :Créez instantanément des diagrammes complets PlantUML, Mermaid ou Graphviz en utilisant des invites en langage naturel (par exemple,« Générer un diagramme de cas d’utilisation en PlantUML pour un système de distributeur automatique ») ou demandez à l’IA de modifier le code existant en temps réel.
- Plateforme en ligne sans configuration :Accédez instantanément à un éditeur robuste sur vpascode.com sans installer de compilateurs locaux ou de plugins. Découvrez-en plus dansAperç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, générant des mises à jour en direct instantanément au fur et à mesure que vous tapez.
- Correction automatique des erreurs de code par IA : Si vous rencontrez un bug de syntaxe, cliquez simplement sur « Corriger par IA ». VPasCode répare le code et fournit une comparaison côte à côte avec des explications claires pour vous permettre de maîtriser plus rapidement la syntaxe PlantUML.
- Traduction native de diagrammes par IA : Traduisez les étiquettes et notes des diagrammes dans plusieurs langues directement dans l’éditeur — idéal pour les équipes de développement mondiales.
- Exportation flexible et intégration à la documentation : Exportez gratuitement des PNG haute résolution ou des images vectorielles SVG évolutives. Vous pouvez également envoyer directement des diagrammes vers Visual Paradigm OpenDocs en utilisant leur guide de fonctionnalité diagramme-as-code.
(Note : Les fonctionnalités avancées de génération, de modification et de correction d’erreurs de diagrammes par IA sont disponibles dans l’édition Deluxe en ligne de Visual Paradigm / l’édition Professionnelle+ de bureau de Visual Paradigm).
6. Exemple de démarrage rapide : Rendu 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 base de diagramme de séquence PlantUML :
@startuml
autonumber
actor User
participant "Éditeur VPasCode" as Editor
participant "Moteur IA" as AI
User -> Editor: Coller le code PlantUML
Editor -> Editor: Détection automatique du format et rendu en direct
alt Erreur de syntaxe détectée
User -> Editor: Cliquer sur « Corriger par IA »
Editor -> AI: Envoyer le code défectueux
AI --> Editor: Retourner le code corrigé et la diff
end
Editor --> User: Afficher le diagramme vectoriel propre (SVG/PNG)
@enduml 
Copiez simplement le code ci-dessus, ouvrez VPasCode et collez-le dans l’éditeur pour voir un rendu en direct instantané et expérimenter les améliorations automatisées par IA.
7. Conclusion et prochaines étapes
PlantUML permet aux équipes de maintenir une documentation visuelle claire, versionnable et cohérente pour les diagrammes UML, l’architecture, les schémas de bases de données et les tableaux de gestion de projet. Associé à un outil moderne outil PlantUML comme VPasCode, la rédaction technique devient plus rapide, exempte d’erreurs et parfaitement collaborative.
Prêt à rationaliser votre processus de création de diagrammes ? Commencez à éditer et à rendre des diagrammes PlantUML gratuitement dès aujourd’hui sur vpascode.com.



