Anaïs Sparesotto
Architecture · ModélisationDébutant≈ 2h · 7 chapitres

UML-Merise : comprendre et modéliser

Modéliser un système ou une base de données avant de coder. Une heure de schéma économise une journée de refactor.

À la fin du cours, tu sais

  • Savoir quand utiliser Merise et quand utiliser UML
  • Lire et écrire un MCD propre
  • Passer du MCD au MLD puis au SQL
  • Construire un diagramme de classes UML
  • Documenter une interaction avec un diagramme de séquence
  • Versionner ses schémas avec Mermaid ou PlantUML

Prérequis

  • Notions de base SQL (idéalement avoir suivi le cours Intro SQL)
  • Avoir un projet à modéliser, même fictif

Chapitre 1

Pourquoi modéliser avant de coder

Un schéma t'évite trois jours de refacto. Plus le projet grandit, plus l'absence de modèle coûte cher.

  • Clarifier le besoin métier avant d'écrire la moindre ligne
  • Détecter les incohérences et les trous fonctionnels tôt
  • Aligner dev, PO et client sur un vocabulaire commun
  • Anticiper la scalabilité de ta base et de tes services
  • Documenter pour les futurs devs (et pour toi dans 6 mois)

La règle du quart d'heure

Avant d'attaquer une feature un peu complexe, prends 15 minutes pour la croquer (papier, Excalidraw, Mermaid). Souvent, tu vois des problèmes invisibles autrement et tu repars sur de meilleures bases.

Chapitre 2

UML vs Merise : quand utiliser quoi

Deux approches complémentaires, pas concurrentes. L'une est plus orientée données, l'autre plus orientée code.

Merise

  • Origine francophone, utilisé dans l'enseignement et le secteur public en France
  • Orienté base de données et système d'information
  • Excelle sur le MCD / MLD / MPD (passage progressif du concept au technique)
  • Cardinalités explicites : 1,1, 0,n, 1,n

UML

  • Standard international, orienté code objet et applicatif
  • 14 diagrammes possibles, on en utilise 4 à 5 en pratique
  • Structure (classes, composants) et comportement (séquence, cas d'usage, activité)
  • Multiplicités : 1, 0..1, 0..*, 1..*

Le combo gagnant

Merise pour la donnée, UML pour le code et les interactions. Pas besoin de choisir un camp : utilise les deux selon le besoin.

Chapitre 3

Le MCD Merise

Le Modèle Conceptuel de Données décrit le quoi, pas le comment. Indépendant de la techno cible.

Les briques de base

  • Entité : un objet du métier (Client, Produit, Commande)
  • Association : un lien entre entités (passer, contenir)
  • Cardinalités : 0,1, 1,1, 0,n, 1,n (min et max)
  • Propriétés (attributs) : portées par les entités, parfois par les associations
  • Identifiant unique : chaque entité en a un (souvent un id technique)

Exemple : boutique en ligne (Mermaid)

erDiagram
    CLIENT ||--o{ COMMANDE : passe
    COMMANDE }o--|| PRODUIT : contient

    CLIENT {
        int id PK
        string nom
        string email
    }
    COMMANDE {
        int id PK
        date date_commande
        int client_id FK
    }
    PRODUIT {
        int id PK
        string libelle
        decimal prix
    }

Lecture : un CLIENT peut passer zéro ou plusieurs commandes (notation ||--o{). Chaque COMMANDE est passée par exactement un client.

Chapitre 4

Du MCD au MLD puis au SQL

Le Modèle Logique de Données traduit le conceptuel en tables. Quelques règles de passage à mémoriser.

Règles de passage

  • Chaque entité devient une table
  • Association 1,n : clé étrangère côté n
  • Association n,n : table de jonction avec les deux clés étrangères
  • Les attributs deviennent des colonnes typées
  • Les identifiants deviennent des PRIMARY KEY

Le SQL correspondant

CREATE TABLE client (
  id     SERIAL PRIMARY KEY,
  nom    VARCHAR(100) NOT NULL,
  email  VARCHAR(150) UNIQUE NOT NULL
);

CREATE TABLE produit (
  id       SERIAL PRIMARY KEY,
  libelle  VARCHAR(150) NOT NULL,
  prix     NUMERIC(10,2) NOT NULL
);

CREATE TABLE commande (
  id              SERIAL PRIMARY KEY,
  date_commande   DATE NOT NULL,
  client_id       INT NOT NULL REFERENCES client(id)
);

-- Table de jonction pour l'association n,n
CREATE TABLE commande_produit (
  commande_id  INT NOT NULL REFERENCES commande(id),
  produit_id   INT NOT NULL REFERENCES produit(id),
  quantite     INT NOT NULL DEFAULT 1,
  PRIMARY KEY (commande_id, produit_id)
);

Toujours déclarer les FK

Un REFERENCES n'est pas optionnel : il garantit que tu ne peux pas créer une commande qui pointe vers un client inexistant. C'est cette contrainte qui fait la solidité d'un schéma relationnel.

Chapitre 5

Le diagramme de classes UML

Vue statique de ton code objet : les classes, leurs attributs, leurs méthodes, et les liens entre elles.

Anatomie d'une classe UML

  • Nom de la classe en haut
  • Attributs au milieu (avec visibilité : + public, - private, # protected)
  • Méthodes en bas
  • Italique = classe abstraite ou interface

Les liens

  • Association simple : flèche pleine (les classes se connaissent)
  • Agrégation : losange vide (lien faible, le tout peut exister sans la partie)
  • Composition : losange plein (cycle de vie partagé, si le tout meurt la partie aussi)
  • Héritage : flèche triangulaire vide
  • Implémentation d'interface : flèche triangulaire en pointillés

Exemple Mermaid

classDiagram
    class Utilisateur {
        -int id
        -string email
        +seConnecter()
    }
    class Commande {
        -int id
        -Date date
        +calculerTotal() float
    }
    class Produit {
        -string nom
        -float prix
    }
    Utilisateur "1" --> "*" Commande : passe
    Commande "*" --> "*" Produit : contient

Chapitre 6

Cas d'usage, séquence, activité

Trois diagrammes UML qui décrivent le comportement, pas la structure. Utiles pour spécifier un parcours utilisateur ou une API.

Cas d'utilisation

Vue très haute, côté utilisateur : qui peut faire quoi. Les acteurs (bonhommes) sont reliés à des bulles (les fonctionnalités). Utile en kick-off de projet pour partager le périmètre avec le métier.

Diagramme de séquence

Le plus utile au quotidien. Axe vertical = temps. Tu vois les échanges chronologiques entre objets ou services : appels API, événements, réponses.

sequenceDiagram
    participant U as Utilisateur
    participant F as Frontend
    participant A as API
    participant DB as Database

    U->>F: Clic "Valider commande"
    F->>A: POST /commandes
    A->>DB: INSERT INTO commande
    DB-->>A: id de la commande
    A-->>F: 201 Created { id }
    F-->>U: "Commande validée ✓"

Diagramme d'activité

Proche d'un organigramme : début, étapes, décisions (losanges), fin. Utile pour documenter un workflow complexe (parcours de validation, processus métier).

Garde simple

Un diagramme par scénario clé suffit. Si ton diagramme ne tient pas sur un écran, c'est qu'il est trop détaillé. Découpe-le.

Chapitre 7

Outils pratiques et bonnes pratiques

Tu n'as pas besoin d'un outil payant pour bien modéliser. Trois options gratuites couvrent 99 % des besoins.

Les outils recommandés

  • Mermaid : diagrammes en markdown, rendu natif dans GitHub/GitLab/Notion. Versionnable. Idéal pour la doc.
  • draw.io / diagrams.net : éditeur visuel gratuit, export PNG/SVG, intégration VS Code via extension
  • PlantUML : syntaxe texte puissante, plus complet que Mermaid sur les diagrammes UML avancés
  • Excalidraw : pour les croquis rapides en brainstorm ou réunion

Bonnes pratiques

  • Versionne les sources texte (Mermaid, PlantUML), pas les images PNG
  • Range tes diagrammes dans docs/diagrams/ du repo
  • Lie un diagramme à un cas d'usage ou un ADR, pas en vrac
  • Mets à jour quand le code évolue (ou supprime, mieux qu'un schéma faux)

Mermaid dans le README

Mermaid s'affiche directement dans le README sur GitHub. Tu peux donc inclure un diagramme d'architecture versionnable dans la doc de ton projet, sans passer par une image externe. C'est devenu la référence open source.

🛠️ Exercice optionnel

Modéliser une bibliothèque municipale

Tu vas modéliser un mini-système de prêts de livres dans une bibliothèque municipale. L'exercice couvre toute la chaîne : du concept au SQL.

Ta mission

Règles métier :

  • Un·e adhérent·e peut emprunter plusieurs livres en même temps
  • Un livre a un titre, un auteur et peut avoir plusieurs exemplaires physiques
  • Chaque emprunt concerne un exemplaire précis, avec date de début et date de retour prévue
  • Un·e bibliothécaire enregistre l'emprunt

Livrables :

  1. Un MCD Merise (Mermaid erDiagram) couvrant les entités et leurs associations
  2. Un diagramme de classes UML (Mermaid classDiagram) côté code applicatif
  3. Un diagramme de cas d'usage côté utilisateur·ice (acteurs + actions)
  4. Le script SQL CREATE TABLE correspondant au MCD

Tu bloques ? Des indices, à dévoiler quand tu en as besoin.

Indice 1

Indice masqué.

Indice 2

Indice masqué.

Indice 3

Indice masqué.

✅ QCM de fin de cours

Teste tes acquis

10 questions, plusieurs réponses parfois possibles. Coche tout ce qui te semble juste, puis valide pour voir ton score et les explications.

  1. 1

    Le MCD Merise sert à...

  2. 2

    Une cardinalité 1,n signifie...

  3. 3

    Une association n,n devient en MLD...

  4. 4

    UML est plus adapté que Merise pour...

  5. 5

    Le diagramme de séquence montre...

  6. 6

    La composition en UML implique...

  7. 7

    Mermaid est...

  8. 8

    Avant de coder une feature complexe, le bon réflexe est de...

  9. 9

    Tu modélises une boutique en ligne. Quel diagramme est le plus adapté pour décrire le parcours Visiteur ajoute au panier puis paie ?

  10. 10

    Bonne pratique pour archiver ses diagrammes dans un projet...

Tu peux laisser des questions sans réponse, elles compteront comme fausses.

Tu veux ce cours pour ton équipe ?

Je peux adapter et animer ce cours pour tes formateur·ices ou tes apprenant·es, en présentiel ou en distanciel. Parlons-en pendant l'audit gratuit.

Réserver un audit gratuit →