UML
Unified Modeling Language
« Bien penser avant de construire ». Apprenez à modéliser des systèmes logiciels avec 14 diagrammes : classes, cas d'utilisation, séquence, états, activités, et plus. Cours complet avec quiz interactifs, glossaire, mode sombre/clair et couleurs personnalisables.

Auteur du cours
Baba Niang
« La constance bat le talent »
Le parcours débutant — 11 étapes
Tu n'y connais rien à UML ? Parfait. Ce parcours te mène de zéro jusqu'à modéliser un système complet. Chaque étape suit la même méthode : Comprendre → Exemple → Différence → Erreur → Mini-quiz, avec 3 niveaux : 🟢 je comprends, 🟡 je sais lire, 🔴 je sais faire.
🎓 Fil rouge : un système de gestion d'université
Pendant tout le cours, on utilise le MÊME système : une université avec des Étudiants, des Professeurs et des Cours. Tu apprends une nouvelle notion ? Tu la vois appliquée à l'université. Résultat : tu connais déjà le système, tu te concentres uniquement sur la nouvelle manière de le représenter.
UML, c'est quoi ? Et pourquoi l'utiliser ?
Le modèle qui décrit un type d'objet
Classe ≠ objet : le modèle vs l'instance
Association, rôles et multiplicités
Généralisation, agrégation, composition
Le diagramme de cas d'utilisation
Séquence + communication
États + activités
Composants + déploiement + paquetages
Structure composite, profils, vue d'ensemble, temps
Construisons ensemble le système d'une université
Comment suivre ce parcours
Découvrir UML
UML, c'est quoi ? Et pourquoi l'utiliser ?
Comprendre
UML est un langage graphique qui permet de représenter un système avant ou pendant sa conception — comme un architecte dessine le plan d'une maison.
Problème
On veut construire un système informatique.
Un système devient complexe : beaucoup d'éléments, de liens, d'acteurs.
On représente le système avec des dessins standardisés.
Ces dessins sont lus par tous les acteurs du projet :
Du problème à la solution : UML aide à représenter un système complexe.
Exemple réel
Pour construire une maison, on ne pose pas les briques au hasard : on dessine d'abord les plans. Pour construire un logiciel, c'est pareil : on dessine d'abord avec UML. Plusieurs développeurs peuvent ainsi se mettre d'accord avant d'écrire une seule ligne de code.
UML intervient surtout à l'étape de MODÉLISATION et COMMUNICATION.
Différence
UML vs langage de programmation
| UML | Langage de programmation |
|---|---|
| Langage GRAPHIQUE | Langage de CODE |
| On MODÉLISE | On PROGRAMME |
| Avant de coder | Pendant qu'on code |
Erreur fréquente
UML sert à écrire du code.
UML sert à RÉFLÉCHIR sur le code avant de l'écrire. Ce n'est pas un langage de programmation.
Mini quiz
UML est-il un langage de programmation ?
Comprendre une classe
Le modèle qui décrit un type d'objet
Comprendre
Une classe est un MODÈLE qui décrit un type d'objet. Elle regroupe des données (les attributs) et des actions (les méthodes).
La classe Étudiant décrit TOUT ce que peuvent avoir les étudiants.
La classe Étudiant : un rectangle à 3 compartiments (Nom / Attributs / Méthodes).
Exemple réel
Dans notre université, un Étudiant a un nom, un email et un âge (attributs). Il peut s'inscrire à un cours et consulter ses notes (méthodes). La classe Étudiant décrit TOUT ce que peuvent avoir les étudiants — c'est le modèle général.
La classe Étudiant décrit TOUT ce que peuvent avoir les étudiants.
Différence
Classe vs Objet
| Classe | Objet |
|---|---|
| Le MODÈLE | Une INSTANCE concrète |
| Étudiant | Baba |
| Général | Particulier |
| Le plan d'une maison | La maison construite |
Erreur fréquente
Une classe EST une personne réelle.
Une classe DÉCRIPT ce que peuvent avoir les objets. Étudiant n'est pas une personne — c'est le modèle de toutes les personnes étudiantes.
Mini quiz
Ali est-il une classe ou un objet ?
Comprendre un objet
Classe ≠ objet : le modèle vs l'instance
Comprendre
Un objet est une INSTANCE concrète d'une classe, à un instant donné. Le nom d'un objet est souligné et s'écrit : nomObjet : Classe.
Deux OBJETS de la classe Étudiant. Le nom est souligné : ce sont des instances.
Deux objets de la classe Étudiant : baba et awa, avec leurs valeurs concrètes.
Exemple réel
La classe Étudiant dit 'un étudiant a un nom'. Les objets concrets sont : baba:Étudiant (nom = 'Baba Niang', email = 'baba@univ.edu') et awa:Étudiant (nom = 'Awa Diop', email = 'awa@univ.edu'). On peut créer autant d'objets qu'on veut à partir d'une seule classe.
Deux OBJETS de la classe Étudiant. Le nom est souligné : ce sont des instances.
Différence
Classe vs Objet (rappel visuel)
| Classe (le modèle) | Objet (l'instance) |
|---|---|
| Étudiant | baba : Étudiant |
| Attributs abstraits (nom, email) | Valeurs concrètes (nom = 'Baba') |
| Une seule définition | Autant d'instances qu'on veut |
Erreur fréquente
Écrire 'Étudiant' (sans soulignement) pour représenter un objet.
Le nom d'un objet est SOULIGNÉ et s'écrit 'nomObjet : Classe' (ex: baba : Étudiant). Le soulignement indique une instance.
Mini quiz
Comment différencier visuellement un objet d'une classe en UML ?
Relier les classes
Association, rôles et multiplicités
Comprendre
Une ASSOCIATION est un lien simple entre deux classes. On peut y ajouter un RÔLE (le rôle joué par chaque côté) et une MULTIPLICITÉ (combien d'objets sont liés).
Un Étudiant suit 1 à plusieurs Cours. Un Cours est suivi par 0 à plusieurs Étudiants.
Un Étudiant suit 1 à plusieurs Cours. Un Cours est suivi par 0 à plusieurs Étudiants.
Exemple réel
Dans l'université : un Étudiant 'suit' des Cours (rôle = 'suit'), et un Cours est 'suivi par' des Étudiants. La multiplicité '1..*' côté Cours signifie qu'un étudiant suit AU MOINS 1 cours. La multiplicité '*' côté Étudiant signifie qu'un cours peut avoir 0 ou plusieurs étudiants.
Un Étudiant suit 1 à plusieurs Cours. Un Cours est suivi par 0 à plusieurs Étudiants.
Différence
Les 4 multiplicités à connaître
| Symbole | Signification |
|---|---|
| 1 | Exactement UN |
| 0..1 | ZÉRO ou UN |
| * (ou 0..*) | ZÉRO ou PLUSIEURS |
| 1..* | UN ou PLUSIEURS |
Erreur fréquente
Mettre la multiplicité du mauvais côté de la relation.
La multiplicité se lit du CÔTÉ OPPOSÉ à la classe de référence. 'Étudiant 1 ─ 0..* Cours' se lit : 'Un Étudiant possède 0 à plusieurs Cours'.
Mini quiz
Comment lit-on « Étudiant 1 ──── 0..* Cours » ?
Les relations importantes
Généralisation, agrégation, composition
Comprendre
Au-delà de l'association simple, il existe 3 relations importantes : la GÉNÉRALISATION (héritage), l'AGRÉGATION (contient, faible) et la COMPOSITION (possède, fort).
Généralisation (héritage)
Étudiant et Professeur SONT des Personne (héritage).
Agrégation
L'Université REGROUPE des Départements (lien faible — un département peut exister ailleurs).
Composition
L'Université POSSÈDE ses Bâtiments (lien fort — pas de bâtiment sans université).
Généralisation (Personne ▷ Étudiant), Agrégation (Université ◇ Département), Composition (Université ◆ Bâtiment).
Exemple réel
Dans l'université : (1) GÉNÉRALISATION — Étudiant et Professeur sont des Personne (héritage). (2) AGRÉGATION — l'Université regroupe des Départements (un département peut exister sans l'université). (3) COMPOSITION — l'Université possède ses Bâtiments (pas de bâtiment sans université).
Généralisation (héritage)
Étudiant et Professeur SONT des Personne (héritage).
Agrégation
L'Université REGROUPE des Départements (lien faible — un département peut exister ailleurs).
Composition
L'Université POSSÈDE ses Bâtiments (lien fort — pas de bâtiment sans université).
Différence
Agrégation ◇ vs Composition ◆
| Agrégation ◇ (losange vide) | Composition ◆ (losange plein) |
|---|---|
| Contient (FAIBLE) | Possède (FORT) |
| L'enfant survit au parent | L'enfant meurt avec le parent |
| Université ◇── Département | Université ◆── Bâtiment |
Erreur fréquente
Utiliser la composition ◆ quand l'élément peut exister seul.
Composition = lien FORT (l'enfant meurt avec le parent). Agrégation = lien FAIBLE (l'enfant survit). Demande-toi : 'X peut-il exister sans Y ?'
Mini quiz
Une Équipe ◇── Joueurs. Si l'équipe disparaît, les joueurs...
Décrire les besoins
Le diagramme de cas d'utilisation
Comprendre
Le diagramme de cas d'utilisation montre les FONCTIONNALITÉS offertes par le système, vues par les ACTEURS (personnes ou systèmes externes).
L'étudiant peut s'inscrire à un cours et consulter ses notes.
Exemple réel
Dans l'université : l'Étudiant (acteur) peut 'S'inscrire à un cours' et 'Consulter ses notes' (cas d'utilisation). Le Professeur (acteur) peut 'Saisir des notes' et 'Consulter sa classe'. Ces cas d'utilisation sont dans la frontière du système 'Gestion Universitaire'.
Différence
include <<include>> vs extend <<extend>>
| <<include>> | <<extend>> |
|---|---|
| TOUJOURS exécuté (obligatoire) | PARFOIS exécuté (sous condition) |
| S'inscrire INCLUDE Vérifier éligibilité | Payer EXTEND Appliquer code promo |
| A a BESOIN de B | A AJOUTE un comportement à B |
Erreur fréquente
Utiliser <<extend>> pour une action obligatoire.
include = TOUJOURS (obligatoire). extend = PARFOIS (optionnel, sous condition). Si l'action est obligatoire → include.
Mini quiz
Dans un système universitaire, 'S'inscrire' exécute TOUJOURS 'Vérifier les prérequis'. Quelle relation ?
Montrer les interactions
Séquence + communication
Comprendre
Le diagramme de SÉQUENCE montre QUI envoie QUEL message à QUI, et dans quel ORDRE (le temps va de haut en bas). Le diagramme de COMMUNICATION montre la même chose mais en mettant l'accent sur la STRUCTURE des objets.
L'étudiant se connecte : 4 messages dans l'ordre chronologique (de haut en bas).
L'étudiant se connecte : séquence des messages entre Étudiant, Application et Base de données.
Exemple réel
Quand l'étudiant se connecte à l'application universitaire : (1) l'Étudiant envoie 'login(email, mdp)' à l'Application, (2) l'Application envoie 'vérifier(mdp)' à la Base de données, (3) la Base répond 'OK', (4) l'Application affiche 'Bienvenue'. Le temps s'écoule de haut en bas.
L'étudiant se connecte : 4 messages dans l'ordre chronologique (de haut en bas).
Différence
Séquence vs Communication
| Séquence | Communication |
|---|---|
| Insiste sur l'ORDRE (le temps) | Insiste sur la STRUCTURE des objets |
| Lignes de vie verticales + flèches horizontales | Objets + flèches numérotées |
| Temps de haut en bas | Ordre par numérotation 1, 2, 3... |
Erreur fréquente
Placer les messages dans le désordre dans une séquence.
Le temps va de HAUT en BAS. Les numéros des messages (1, 2, 3...) doivent suivre l'ordre chronologique.
Mini quiz
Dans un diagramme de séquence, dans quelle direction s'écoule le temps ?
Décrire les comportements
États + activités
Comprendre
Le diagramme d'ÉTATS montre le CYCLE DE VIE d'un objet (comment il change dans le temps). Le diagramme d'ACTIVITÉS montre un PROCESSUS / workflow (les étapes, dans quel ordre, avec quelles décisions).
Cycle de vie d'une Inscription : En attente → Validée → Confirmée (ou Annulée).
Cycle de vie d'une inscription : En attente → Validée → Confirmée (ou Annulée).
Exemple réel
Dans l'université : (1) ÉTATS — une Inscription passe de 'En attente' à 'Validée' (si le professeur valide) puis à 'Confirmée' (après paiement), ou à 'Annulée'. (2) ACTIVITÉS — le processus d'inscription : Saisir le formulaire → Vérifier les prérequis → [décision : OK ?] → Payer les frais → Confirmer.
Processus d'inscription : un workflow avec décision (oui / non).
Différence
État vs Activité
| États (cycle de vie) | Activités (processus) |
|---|---|
| Comment un OBJET change | Les ÉTAPES d'un processus |
| Inscription : En attente → Validée | Saisir → Vérifier → Payer → Confirmer |
| États stables + transitions | Actions + décisions (◇) |
Erreur fréquente
Confondre états et activités.
États = cycle de VIE d'un objet (comment il change dans le temps). Activités = les ÉTAPES d'un processus (ce qu'on fait, dans quel ordre).
Mini quiz
Vous voulez montrer le processus d'inscription (étapes avec décision). Quel diagramme ?
Décrire l'architecture
Composants + déploiement + paquetages
Comprendre
Les diagrammes d'ARCHITECTURE montrent comment le système est ORGANISÉ : COMPOSANTS (modules logiciels), DÉPLOIEMENT (machines physiques) et PAQUETAGES (regroupements logiques).
1. Composants (logiciels)
2. Déploiement (machines physiques)
Architecture : 3 composants logiciels déployés sur 3 machines physiques.
Architecture de l'université : Interface Web → Service Inscription → Base de données, déployée sur 3 machines.
Exemple réel
Dans l'université : (1) COMPOSANTS — Interface Web, Service Inscription, Base de données, chacun avec un rôle précis. (2) DÉPLOIEMENT — Poste Client (navigateur de l'étudiant) → Serveur Web (Application) → Serveur BD (PostgreSQL). (3) PAQUETAGES — les classes sont regroupées : 'ihm', 'métier', 'accès-données'.
1. Composants (logiciels)
2. Déploiement (machines physiques)
Architecture : 3 composants logiciels déployés sur 3 machines physiques.
Différence
Composant vs Nœud de déploiement
| Composant ( logiciel) | Nœud (matériel) |
|---|---|
| Module LOGICIEL | MACHINE physique |
| Service Inscription | Serveur Web (Apache) |
| Expose des interfaces | Héberge des artefacts (JAR, WAR) |
Erreur fréquente
Confondre composants (logiciels) et nœuds (matériels).
Composant = module logiciel (Service Inscription). Nœud = machine physique (Serveur Web). Les composants sont DÉPLOYÉS sur les nœuds.
Mini quiz
Lequel est un NŒUD de déploiement (machine) ?
Les autres diagrammes
Structure composite, profils, vue d'ensemble, temps
Comprendre
UML a 4 diagrammes plus avancés : la STRUCTURE COMPOSITE (intérieur d'une classe), les PROFILS (extensions UML), la VUE D'ENSEMBLE (combinaison d'interactions) et le TEMPS (chronologie avec contraintes temporelles).
Parties internes (rôles) :
Connecteurs (composition)
- ◆── Université → 1 Direction
- ◆── Université → 1..* Département
- ◆── Université → 1..* Salle
La classe Université contient 1 Direction, plusieurs Départements, plusieurs Salles.
Structure composite : l'Université contient 1 Direction, plusieurs Départements, plusieurs Salles.
Exemple réel
Dans l'université : (1) STRUCTURE COMPOSITE — la classe Université contient 1 Direction, plusieurs Départements, plusieurs Salles. (2) PROFILS — on peut stéréotyper une classe '«service»' pour marquer que c'est une API REST. (3) VUE D'ENSEMBLE — combine plusieurs séquences en une vue globale. (4) TEMPS — montre précisément à quel moment un étudiant reçoit sa confirmation (ex: à t=200ms).
Parties internes (rôles) :
Connecteurs (composition)
- ◆── Université → 1 Direction
- ◆── Université → 1..* Département
- ◆── Université → 1..* Salle
La classe Université contient 1 Direction, plusieurs Départements, plusieurs Salles.
Différence
Les 4 diagrammes avancés
| Diagramme | Usage |
|---|---|
| Structure composite | Intérieur d'une classe complexe |
| Profils | Étendre UML avec des stéréotypes |
| Vue d'ensemble | Combiner plusieurs interactions |
| Temps | Chronologie avec contraintes temporelles |
Erreur fréquente
Penser que ces 4 diagrammes sont inutiles.
Ils sont plus avancés mais précieux : la structure composite pour détailler une classe complexe, les profils pour adapter UML à un domaine, etc.
Mini quiz
Quel diagramme montre la chronologie précise des changements d'état (en ms) ?
Exercices complets
Construisons ensemble le système d'une université, en réutilisant TOUT ce que tu as appris.
Construisons ensemble le système d'une université
Tu vas progressivement produire 10 diagrammes pour modéliser un système complet. Ouvre chaque étape, observe le diagramme, puis marque-la comme faite. À la fin, tu auras modélisé un système universitaire complet avec UML !
On commence par identifier les classes principales du système : Étudiant, Professeur, Cours, Personne.
La classe Étudiant décrit TOUT ce que peuvent avoir les étudiants.
Quiz final — Teste tes connaissances
20 questions pour vérifier ta compréhension d'UML. Ton score est sauvegardé automatiquement.
Votre progression
0 / 20 questions répondues
Que signifie l'acronyme UML ?
Glossaire UML
Plus de 50 termes UML avec leurs définitions. Recherche et filtres par catégorie.
51 termes trouvés
*
RelationMultiplicité : zéro ou plusieurs objets (alias 0..*).
0..1
RelationMultiplicité : zéro ou un objet.
1
RelationMultiplicité : exactement un objet.
1..*
RelationMultiplicité : un ou plusieurs objets.
Acteur
ComportementalPersonne ou système externe qui interagit avec le système. Représenté par un bâtonnet.
Activité
ComportementalÉtape d'un processus dans un diagramme d'activités. Représentée par un rectangle arrondi.
Agrégation
RelationRelation « contient » faible (losange vide ◇). L'élément contenu peut exister sans le conteneur. Ex : Panier ◇ Produits.
alt
ComportementalFragment « Alternative » dans un diagramme de séquence — équivalent à if/else.
Artefact
StructurelFichier logiciel (JAR, WAR, EXE) déployé sur un nœud dans un diagramme de déploiement.
Association
RelationRelation simple entre deux classes (ligne pleine). Ex : Client — Compte.
Attribut
StructurelDonnée d'une classe. S'écrit : visibilité nom : type (ex : - solde : double).
Cas d'utilisation
ComportementalFonctionnalité offerte à un acteur. Représentée par une ellipse.
Classe
StructurelModèle regroupant des attributs (données) et des méthodes (actions). Représentée par un rectangle à 3 compartiments.
Compartiment
StructurelUne des 3 zones d'une classe UML : Nom, Attributs, Méthodes.
Composant
StructurelModule logiciel avec un rôle précis, exposant/requérant des interfaces. Rectangle avec pictogramme composant.
Composition
RelationRelation « possède » forte (losange plein ◆). L'élément contenu ne peut pas exister sans le conteneur. Ex : Maison ◆ Pièces.
Décision
ComportementalLosange ◇ dans un diagramme d'activités représentant un choix (oui/non).
Diagramme comportemental
ComportementalFamille de 7 diagrammes qui décrivent « ce que le système FAIT » (cas d'utilisation, séquence, communication, états, activités, vue d'ensemble, temps).
Diagramme structurel
StructurelFamille de 7 diagrammes qui décrivent « ce que le système EST » (classes, objets, composants, déploiement, paquetages, structure composite, profils).
Encapsulation
GénéralPrincipe qui consiste à cacher les détails internes (attributs privés) et n'exposer que des méthodes publiques.
État
ComportementalSituation stable d'un objet dans un diagramme d'états-transitions. Représenté par un rectangle arrondi.
État final
ComportementalPoint d'arrivée d'un diagramme d'états. Représenté par un cercle cerclé ◉.
État initial
ComportementalPoint de départ d'un diagramme d'états. Représenté par un disque plein ●.
Extension (<<extend>>)
ComportementalRelation entre cas : le cas d'extension s'exécute SOUS CONDITION (optionnel).
Fork / Join
ComportementalTrait épais ▬ dans un diagramme d'activités pour diviser (fork) ou synchroniser (join) des branches parallèles.
Fragment combiné
ComportementalCadre dans un diagramme de séquence pour exprimer un comportement conditionnel ou répétitif : alt, opt, loop, par, ref.
Frontière du système
ComportementalRectangle qui englobe les cas d'utilisation, délimitant le système de son extérieur.
Garde
ComportementalCondition (entre crochets [...]) qui doit être vraie pour franchir une transition.
Généralisation d'acteur
ComportementalUn acteur spécialisé hérite du comportement d'un acteur général. Ex : Client VIP ▷ Client.
Héritage
RelationRelation « est un » (flèche triangulaire vide ▷). La sous-classe hérite des attributs et méthodes de la super-classe. Ex : Chien ▷ Animal.
Inclusion (<<include>>)
ComportementalRelation entre cas : le cas de base exécute TOUJOURS le cas inclus (obligatoire).
Instance
StructurelObjet réel créé à partir d'une classe (la maison construite vs le plan).
Interface
StructurelContrat d'utilisation d'un composant : ce qu'il offre (fourni) ou ce dont il a besoin (requis).
Ligne de vie
ComportementalLigne pointillée verticale sous un objet dans un diagramme de séquence, représentant sa durée de vie.
loop
ComportementalFragment « Répétition » dans un diagramme de séquence — équivalent à while/for.
Message
ComportementalFlèche horizontale entre lignes de vie dans un diagramme de séquence. Plein = appel synchrone, pointillé = retour.
Méthode
StructurelAction d'une classe. S'écrit : visibilité nom(): typeRetour (ex : + consulterSolde() : double).
Multiplicité
RelationNombre d'objets liés d'un côté d'une relation. Se lit du côté opposé à la classe de référence.
Nœud
StructurelMachine ou environnement d'exécution dans un diagramme de déploiement.
Objet
StructurelInstance concrète d'une classe à un instant T. Nom souligné : nomObjet : Classe.
OMG
GénéralObject Management Group — organisme qui maintient le standard UML.
opt
ComportementalFragment « Optionnelle » dans un diagramme de séquence — équivalent à if (une branche conditionnelle).
Paquetage
StructurelRegroupement logique de classes, représenté par un dossier avec onglet. Les dépendances se notent par flèche pointillée.
Paquetage (~)
VisibilitéAccessible uniquement dans le même paquetage.
par
ComportementalFragment « Parallèle » dans un diagramme de séquence — exécution concurrente.
Privé (-)
VisibilitéAccessible uniquement à l'intérieur de la classe (encapsulation).
Protégé (#)
VisibilitéAccessible dans la classe et ses sous-classes (héritage).
Public (+)
VisibilitéAccessible partout, y compris à l'extérieur de la classe.
Transition
ComportementalChangement d'état déclenché par un événement dans un diagramme d'états-transitions.
UML
GénéralUnified Modeling Language — langage graphique normalisé pour modéliser des systèmes logiciels.
Visibilité
VisibilitéNiveau d'accessibilité d'un attribut ou d'une méthode : + public, - privé, # protégé, ~ paquetage.
Conclusion
Tu sais maintenant modéliser avec UML
Tu es passé de zéro à la modélisation complète d'un système universitaire. Tu comprends les 14 diagrammes, les relations, les comportements et l'architecture. UML n'est plus un mystère pour toi — c'est devenu un outil de réflexion.
« La modélisation, c'est comme la lecture : on commence par les lettres, puis les mots, puis les phrases, puis ses propres histoires. »