📚 Conception des Systùmes d'Information — GL2 INSAT

Le Guide Ultime
des Diagrammes UML

Tout ce que tu dois savoir pour les Cours 1→7, expliquĂ© simplement — comme si t'avais 5 ans 🧒

🧭

Démarche UML

Besoins, analyse, conception, itérations...

đŸ‘€

Cas d'Utilisation

Acteurs, use cases, include, extend, généralisation...

đŸ§±

Diagramme de Classes

Classes, attributs, associations, héritage, composition...

🔄

Diagramme de Séquence

Messages, lignes de vie, fragments alt/loop/opt/ref...

🔗

Diag. de Communication

Liens, numérotation, messages imbriqués...

🚩

États-Transitions

États, Ă©vĂ©nements, transitions, entry/do/exit...

đŸ›€ïž

Diagramme d'Activités

Actions, décisions, swimlanes, fork/join...

đŸ§©

Composants & Déploiement

Interfaces, ports, artefacts, nƓuds physiques...

🌍 C'est quoi UML ?

Avant de dessiner des diagrammes, comprends pourquoi on en a besoin.

đŸ€” Imagine que tu construis une maison...

Tu ne commences pas directement Ă  poser des briques, non ? D'abord, tu fais un plan (l'architecte dessine). UML, c'est exactement pareil mais pour les logiciels.

  • UML = Unified Modeling Language (Langage de ModĂ©lisation UnifiĂ©)
  • C'est un langage graphique, pas un langage de programmation !
  • Il permet de dessiner des plans pour comprendre un systĂšme avant de le coder
  • NormalisĂ© par l'OMG (Object Management Group)

📊 Diagrammes Statiques

Montrent la structure du systĂšme (c'est quoi les piĂšces de la maison ?)

  • Diagramme de Classes ⭐
  • Diagramme d'Objets
  • Diagramme de Paquetages
  • Diagramme de Composants

🎬 Diagrammes Dynamiques

Montrent le comportement (comment les choses bougent ?)

  • Diagramme de Cas d'Utilisation ⭐
  • Diagramme de SĂ©quence ⭐
  • Diagramme de Communication
  • Diagramme d'États-Transitions
  • Diagramme d'ActivitĂ©s

đŸ—ïž Le SystĂšme d'Information (SI)

Définition simple : Le SI d'une entreprise = toutes les données + tous les traitements nécessaires à son fonctionnement.

Donnée vs Information

ConceptC'est quoi ?Exemple
DonnéeSigne + code (brut)71540325
InformationDonnée + interprétation"C'est un numéro de téléphone"
ConnaissanceInformation interprétée"C'est un abonné de Tunis"

📜 Les 3 gĂ©nĂ©rations de mĂ©thodes de conception

GĂ©nĂ©rationApprochePoints Forts ✅Points Faibles ❌
1Úre Cartésienne Simple, bon sens, capture des besoins Focus fonctions, pas de réutilisation
2Ăšme SystĂ©mique CohĂ©rence donnĂ©es, 3 niveaux d'abstraction Manque de cohĂ©rence donnĂ©es↔traitements
3Úme Objet (UML) Modélise objets complexes, intÚgre données + traitements, encapsulation "Tout objet" difficile à apprendre

🧭 La DĂ©marche de ModĂ©lisation avec UML

UML te donne les dessins. La démarche te dit dans quel ordre les faire pour passer des besoins au code.

🚹 IdĂ©e fausse Ă  corriger : UML n'est PAS une mĂ©thode

UML, c'est comme une boßte de crayons avec des rÚgles de dessin. Une méthode, c'est la recette qui te dit : "dessine d'abord ça, vérifie ça, puis passe à l'étape suivante".

✅ UML = le langage

Il fournit les symboles : acteur, classe, transition, composant, nƓud, message...

🧭 MĂ©thode = le chemin

Elle organise le travail : besoins → analyse → conception → implĂ©mentation.

⚠ Ce qu'il ne faut pas faire Ne commence pas par un diagramme de classes juste parce que tu aimes les classes. Si les besoins sont flous, ton diagramme sera joli mais probablement faux.

đŸ›ïž Les 3 principes d'une mĂ©thode basĂ©e sur UML

1. Pilotée par les cas d'utilisation On part de ce qui est utile aux utilisateurs. Comme demander "à quoi sert le jouet ?" avant de fabriquer les piÚces.
2. Centrée sur l'architecture On pense au squelette du systÚme : gros composants, contraintes techniques, évolutions futures.
3. Itérative et incrémentale On construit petit morceau par petit morceau. Chaque tour améliore les modÚles précédents.

Version enfant : tu ne construis pas tout le chĂąteau LEGO d'un coup. Tu fais une tour, tu testes si elle tient, tu ajoutes un pont, tu corriges, puis tu continues.

đŸ§± La MĂ©thode Archi-Minimale (le minimum vital)

Le cours propose une démarche plus simple que RUP, adaptée aux projets modestes. Elle garde seulement ce qui aide vraiment.

  1. Recueillir les besoins
    Détermine les limites du systÚme, identifie les acteurs et recense les cas d'utilisation. Si le systÚme est gros, range les cas en paquetages.
  2. Classer les cas d'utilisation
    Donne à chaque cas un degré d'importance et un risque. On attaque d'abord ce qui apporte beaucoup de valeur ou ce qui peut casser le projet.
  3. Décrire les scénarios
    Écris le scĂ©nario nominal et les scĂ©narios alternatifs. Dessine un diagramme de sĂ©quence systĂšme pour montrer les Ă©changes acteur ↔ systĂšme.
  4. Faire une maquette IHM
    Ce n'est pas UML, mais ça aide l'utilisateur à dire clairement ce qu'il veut. Sans maquette, il imagine une chose et toi une autre.
  5. Construire le modĂšle du domaine
    Fais un premier diagramme de classes avec les concepts mĂ©tier : Client, Commande, Produit... À ce stade, mets surtout les attributs et associations, pas encore les opĂ©rations techniques.
  6. Ajouter les classes participantes
    Relie les cas d'utilisation au modÚle objet avec trois familles : dialogues, contrÎles, entités.
  7. Modéliser la navigation et les activités
    Si le scénario contient beaucoup de chemins ou d'écrans, utilise un diagramme d'activités pour clarifier le parcours.
  8. Passer Ă  la conception
    Transforme les séquences systÚme en interactions internes entre objets. Puis produis le diagramme de classes de conception qui servira au code.

🧑‍🍳 Les 3 Types de Classes d'Analyse

Quand tu passes des besoins au logiciel, tu ne mets pas tout dans une seule classe géante. Tu sépares les responsabilités.

TypeRîleImage simple 🧒Exemple
Dialogue GĂšre l'interaction avec l'utilisateur ou l'IHM Le guichet oĂč l'utilisateur parle FenetreConnexion, PagePanier
ContrÎle Organise le scénario et applique les rÚgles applicatives Le chef d'orchestre ControleurCommande
Entité Représente les données persistantes du métier Les fiches qu'on garde dans un classeur Client, Facture, Produit
🧠 RĂšgle de sĂ©paration L'IHM parle au contrĂŽle. Le contrĂŽle parle aux entitĂ©s. Si une page web contient toute la logique mĂ©tier, ton modĂšle est en train de devenir fragile.

🔄 Ce que chaque diagramme produit dans la dĂ©marche

ÉtapeDiagramme utileCe qu'il prouve
BesoinsCas d'utilisationOn sait qui utilise le systĂšme et pour quoi faire.
SpécificationSéquence systÚmeOn sait quels messages passent entre acteur et systÚme.
Analyse métierClasses du domaineOn sait quels concepts métier existent et comment ils sont liés.
Scénarios complexesActivitésOn voit les décisions, branches, boucles et responsabilités.
Conception logicielleSéquence / CommunicationOn sait quels objets collaborent à l'intérieur du systÚme.
ArchitectureComposants / DĂ©ploiementOn sait comment le logiciel est dĂ©coupĂ© et oĂč il s'exĂ©cute.
✅ Conclusion pratique Les diagrammes ne sont pas indĂ©pendants : chaque diagramme doit corriger, prĂ©ciser ou valider les autres. Si ton diagramme de sĂ©quence appelle une mĂ©thode absente du diagramme de classes, il y a une incohĂ©rence Ă  rĂ©parer.

đŸ‘€ Diagramme de Cas d'Utilisation

Le premier diagramme qu'on fait — il rĂ©pond Ă  la question : "Qui fait quoi avec le systĂšme ?"

📖 C'est quoi ?

Imagine un restaurant đŸœïž. Le diagramme de cas d'utilisation, c'est comme lister :

  • Qui vient au restaurant ? → Les Acteurs (client, serveur, cuisinier...)
  • Que font-ils ? → Les Cas d'Utilisation (commander, payer, cuisiner...)
  • Quels liens entre ces actions ? → Les Relations
💡 Objectif Principal C'est un outil de communication avec le client. Il montre les fonctionnalitĂ©s du systĂšme du point de vue de l'utilisateur. C'est le cahier des charges visuel.

đŸ§© Les 4 Composants

1. Le SystĂšme (le rectangle)

Un grand rectangle qui représente les limites du systÚme. Tout ce qui est dedans = ce que le systÚme fait. Tout ce qui est dehors = l'environnement.

📩 SystĂšme Restaurant Client (acteur principal) Banque (acteur secondaire) Commander Payer Payer par CB Payer en liquide «extend» «extend»

2. Les Acteurs (les bonhommes)

TypeDescriptionPosition
Principal Celui qui initie le cas d'utilisation et en tire un bĂ©nĂ©fice đŸ”” À gauche
Secondaire SollicitĂ© pour des infos complĂ©mentaires (ne dĂ©marre rien) 🟡 À droite
⚠ Attention ! Un acteur peut ĂȘtre une personne (client, admin) ou un systĂšme externe (banque, API, serveur...). Ce n'est PAS forcĂ©ment un humain !

3. Les Cas d'Utilisation (les ellipses)

Chaque ellipse = une fonctionnalité que le systÚme offre. Le nom est toujours un verbe à l'infinitif.

4. Les Relations

RelationSymboleSignificationExemple Simple 🧒
Association Trait simple —— L'acteur participe au cas Le client utilise "Commander"
«include» FlĂšche pointillĂ©e → Le cas A inclut TOUJOURS le cas B "Retirer argent" inclut toujours "S'authentifier"
«extend» FlĂšche pointillĂ©e → Le cas B est optionnel/exceptionnel pour le cas A "Payer" peut ĂȘtre Ă©tendu par "Payer en CB"
GĂ©nĂ©ralisation FlĂšche avec triangle △ Relation parent → enfant (hĂ©ritage) "Client VIP" hĂ©rite de "Client"

🎯 Include vs Extend — La Confusion #1

C'est la question piĂšge favorite des profs. Voici comment ne JAMAIS se tromper :

✅ «include» (toujours)

Le cas principal a BESOIN du cas inclus. Sans lui, ça ne marche pas.

Retirer argent ----«include»---→ S'authentifier (Tu DOIS t'authentifier pour retirer)

Truc : La flĂšche part du cas principal VERS le cas inclus

đŸ”¶ «extend» (parfois)

Le cas étendu peut ou ne peut pas se produire. C'est optionnel.

Payer ←---«extend»---- Payer par CB (Payer par CB est UNE OPTION de payer)

Truc : La flĂšche part du cas optionnel VERS le cas principal

🧠 Moyen mnĂ©motechnique ULTIME «include» = "J'ai INCLUS mon dĂ©jeuner dans mon sac, je l'emporte TOUJOURS"
«extend» = "J'ÉTENDS ma serviette Ă  la plage SI il fait beau (optionnel)"

Direction des flĂšches :
‱ include : Cas principal → → → Cas inclus (je vais CHERCHER ce dont j'ai besoin)
‱ extend : Cas optionnel → → → Cas principal (le cas optionnel VIENT se greffer)

📝 Comment Construire un Diagramme de Cas d'Utilisation (Pas à Pas)

  1. Identifie le SYSTÈME
    Lis l'énoncé et trouve ce qu'on construit. Dessine le rectangle avec le nom du systÚme.
  2. Trouve les ACTEURS
    Cherche les noms de personnes/rÎles/systÚmes externes dans le texte. Pose la question : "Qui utilise le systÚme ?" et "Qui est sollicité par le systÚme ?"
  3. Trouve les CAS D'UTILISATION
    Cherche les verbes d'action dans le texte : "le client peut consulter", "le serveur enregistre"... Chaque verbe = un cas potentiel.
  4. Relie les acteurs aux cas
    Chaque acteur est relié par un trait simple aux cas auxquels il participe.
  5. Ajoute les relations entre cas
    Y a-t-il des actions obligatoires (include) ? Des alternatives optionnelles (extend) ? Des spécialisations (généralisation) ?
  6. Vérifie la cohérence
    Chaque acteur est lié à au moins un cas. Chaque cas est lié à au moins un acteur. Pas de cas "orphelin".

🔍 Comment Analyser un ÉnoncĂ© (Exemple TD1)

Prenons l'exercice de l'agence de voyages :

📋 Texte : "Une agence de voyages organise des voyages oĂč l'hĂ©bergement se fait en hĂŽtel. Le client doit disposer d'un taxi quand il arrive Ă  la gare. Certains clients demandent Ă  l'agent de voyages d'Ă©tablir une facture dĂ©taillĂ©e. Le voyage se fait soit par avion, soit par train."

🔎 Analyse mot par mot :

  • Acteurs : Client (celui qui demande) — acteur principal
  • SystĂšme : Agence de voyages
  • Cas principaux : "Organiser voyage", "RĂ©server hĂ©bergement", "RĂ©server transport"
  • "soit par avion, soit par train" → C'est un «extend» ou une gĂ©nĂ©ralisation de "RĂ©server transport"
  • "certains clients demandent une facture dĂ©taillĂ©e" → C'est optionnel → «extend»
  • "doit disposer d'un taxi" → C'est obligatoire → «include»
🔑 Mots-clĂ©s magiques dans les Ă©noncĂ©s :
  • "doit", "toujours", "obligatoire" → «include»
  • "peut", "certains", "optionnel", "soit...soit" → «extend»
  • "est un type de", "est aussi" → gĂ©nĂ©ralisation

⚖ RĂšgles de CohĂ©rence (Erreurs Ă  ne PAS faire)

❌ ERREUR : Acteur dans le systùme Un acteur est TOUJOURS à l'EXTÉRIEUR du rectangle systùme. Jamais dedans !
❌ ERREUR : Cas sans acteur Chaque cas d'utilisation doit ĂȘtre reliĂ© Ă  au moins un acteur (directement ou indirectement via include/extend).
❌ ERREUR : Trait entre 2 acteurs Les acteurs ne communiquent pas entre eux ! Seule relation possible : la gĂ©nĂ©ralisation (hĂ©ritage).
❌ ERREUR : Trop de dĂ©tails Un cas d'utilisation n'est PAS un "bouton" ou une "page web". C'est un SERVICE complet rendu Ă  l'acteur.

📄 Description Textuelle d'un Cas d'Utilisation

Chaque cas d'utilisation peut (et souvent doit) ĂȘtre dĂ©crit textuellement :

ChampDescription
NomLe nom du cas (verbe Ă  l'infinitif)
Acteur principalQui lance ce cas
PrĂ©conditionsCe qui doit ĂȘtre vrai AVANT
Scénario nominalLes étapes du cas normal (1, 2, 3...)
Scénarios alternatifsLes variantes (extend)
PostconditionsCe qui est vrai APRÈS

đŸ§± Diagramme de Classes

Le diagramme STAR ⭐ d'UML — il montre la structure de ton systùme : les objets et leurs liens.

📖 C'est quoi ?

Le diagramme de cas d'utilisation dit Ă  QUOI sert le systĂšme. Le diagramme de classes dit DE QUOI il est fait.

Imagine un jeu LEGO đŸ§±. Le diagramme de classes, c'est la notice qui liste toutes les piĂšces et comment elles s'emboĂźtent.

📩 Comment dessiner une Classe

Une classe a 3 compartiments :

Personne - nom: String - age: int + getNom(): String + getAge(): int + setNom(n: String): void ← Nom ← Attributs ← OpĂ©rations

Visibilité des attributs/opérations

SymboleVisibilitĂ©Signification 🧒
-privatePersonne ne peut y toucher sauf moi
+publicTout le monde peut y accéder
#protectedMoi et mes enfants seulement
~packageCeux de mon groupe/paquet

🔗 Les Associations (les liens entre classes)

Association Simple

Un trait entre deux classes = elles sont liées. On peut ajouter :

  • Nom de l'association (un verbe : "emploie", "possĂšde"...)
  • RĂŽles (Ă  chaque extrĂ©mitĂ© : "employeur", "employĂ©")
  • Sens de lecture (petite flĂšche ▶)
Personne Entreprise emploie ▶ -employĂ© 1..* -employeur 0..1

⭐ Les Multiplicités (SUPER IMPORTANT)

NotationSignificationExemple 🧒
1Exactement 1 (obligatoire)1 personne a exactement 1 cerveau
0..10 ou 1 (optionnel)1 personne a 0 ou 1 voiture
* ou 0..*0 ou plusieurs1 personne peut avoir 0 ou plein d'amis
1..*Au moins 11 équipe a au minimum 1 joueur
n..mEntre n et m1 main a entre 0 et 5 doigts
🧠 Comment lire les multiplicitĂ©s ? Lis toujours depuis UNE instance d'un cĂŽtĂ© vers l'autre cĂŽtĂ© :

Personne 1..* ————— 0..1 Entreprise

→ "1 Entreprise emploie 1 ou plusieurs (1..*) Personnes"
→ "1 Personne travaille dans 0 ou 1 (0..1) Entreprise"

⚠ La multiplicitĂ© est TOUJOURS du cĂŽtĂ© OPPOSÉ Ă  la classe qu'on lit !

💎 AgrĂ©gation vs Composition

C'est la question piĂšge #2 des profs !

◇ AgrĂ©gation (losange VIDE)

Relation "contient" mais les parties peuvent exister seules.

Exemple : Une Équipe ◇—— Joueur

Si l'équipe est dissoute, les joueurs existent encore ! Ils peuvent rejoindre une autre équipe.

◆ Composition (losange PLEIN)

Relation "composé de" et les parties meurent avec le tout.

Exemple : Une Maison ◆—— Piùce

Si la maison est détruite, les piÚces n'existent plus !

🧠 Test magique en 2 questions :
  1. Si je dĂ©truis le tout, les parties sont-elles dĂ©truites aussi ? OUI → Composition ◆
  2. Une partie peut-elle appartenir Ă  plusieurs "touts" en mĂȘme temps ? NON → Composition ◆
Si tu rĂ©ponds OUI Ă  Q1 ET NON Ă  Q2 → Composition ◆
Sinon → AgrĂ©gation ◇
Équipe Joueur ◇ AgrĂ©gation (vide) Maison PiĂšce ◆ Composition (plein)

🧬 HĂ©ritage (GĂ©nĂ©ralisation / SpĂ©cialisation)

C'est comme une famille đŸ‘šâ€đŸ‘©â€đŸ‘§ : l'enfant hĂ©rite des caractĂ©ristiques du parent mais peut avoir les siennes en plus.

  • La classe enfant hĂ©rite tous les attributs et opĂ©rations du parent
  • L'enfant peut redĂ©finir (override) les mĂ©thodes du parent
  • Toutes les associations du parent s'appliquent aux enfants
  • Principe de substitution : partout oĂč on attend un Animal, on peut mettre un Chat đŸ±
VĂ©hicule Voiture 🚗 Moto đŸïž Camion 🚛

🎓 Concepts AvancĂ©s

📎 Classe d'Association

Quand une association elle-mĂȘme a des attributs ou des opĂ©rations, on crĂ©e une classe d'association.

Exemple : Personne — travaille — SociĂ©tĂ©. Le "contrat de travail" a un salaire et une date → classe d'association "Contrat"

Elle est reliée à l'association par un trait en pointillé.

🔒 Classe Abstraite & Interface

Classe abstraite : Une classe qu'on ne peut pas instancier directement. Son nom est en italique. Elle contient au moins une méthode abstraite (sans corps).

Interface : Un "contrat" qui dit quelles opérations une classe doit implémenter. Notation : «interface» au-dessus du nom.

Relation d'implĂ©mentation = flĂšche pointillĂ©e avec triangle vide △

🧭 NavigabilitĂ©

Une flÚche à une extrémité indique dans quel sens on peut traverser l'association.

A ——→ B signifie : A connaüt B, mais B ne connaüt pas A.

Par défaut (pas de flÚche) : la navigabilité est dans les deux sens.

📊 Diagramme d'Objets (compagnon du diag. de classes)

Le diagramme d'objets montre des instances concrÚtes à un moment donné.

  • Le nom est soulignĂ© : jean:Personne
  • On montre les valeurs des attributs (pas les types)
  • Pas de multiplicitĂ©s dans un diagramme d'objets !

Diagramme de classes = les RÈGLES / Diagramme d'objets = les FAITS

🔹 Comment Construire un Diagramme de Classes (Pas à Pas)

  1. Trouver les CLASSES
    Cherche les noms / substantifs importants dans le texte. "Client", "Commande", "Produit" → ce sont des classes.
  2. Trouver les ASSOCIATIONS
    Cherche les verbes qui relient deux classes. "Le client passe une commande" → association entre Client et Commande.
  3. Trouver les MULTIPLICITÉS
    Pour chaque association, pose la question : "1 Client peut passer combien de commandes ?" et "1 Commande est passée par combien de clients ?"
  4. Trouver les ATTRIBUTS
    Cherche les détails (nom, prix, date...) = ce sont des attributs. Ils sont plus "petits" que des classes.
  5. Organiser avec l'HÉRITAGE
    Y a-t-il des "types de" ? "Un vĂ©lo est un type de produit" → hĂ©ritage.
  6. Vérifier agrégation/composition
    Y a-t-il des relations "fait partie de" ? Utilise le test des 2 questions.
  7. Raffiner et itérer
    Vérifie les chemins d'accÚs. Simplifie. Ajoute les opérations si demandé.
🔑 Truc pour diffĂ©rencier Classe vs Attribut :
Si un concept a ses propres attributs ou relations → c'est une classe.
Si c'est juste une valeur simple (nom, ñge, prix) → c'est un attribut.

Exemple : "adresse" → Si c'est juste "12 rue X" → attribut. Si elle a (rue, ville, codePostal) → classe !

🔄 Diagramme de SĂ©quence

Il montre comment les objets discutent entre eux dans le temps — comme un script de film 🎬

📖 C'est quoi ?

Imagine un groupe WhatsApp đŸ“± : chaque personne envoie des messages, et tu vois l'ordre dans lequel ils arrivent (qui a parlĂ© en premier, en deuxiĂšme...). Le diagramme de sĂ©quence, c'est exactement ça !

  • Dimension horizontale → Les objets/acteurs (les "participants")
  • Dimension verticale ↓ Le temps (de haut en bas)
  • Les flĂšches = les messages Ă©changĂ©s

đŸ§© Les Composants

Client :Caisse :BaseDeDonnĂ©es 1: scanner(article) 2: getPrix(article) prix afficherPrix() 3: finVente() ← message synchrone (flĂšche pleine ▶) ← retour (flĂšche pointillĂ©e) ← asynchrone (flĂšche ouverte >) Zone d'activation Ligne de vie ↑

Les Participants

  • Ligne de vie = ligne verticale pointillĂ©e sous chaque participant = son "existence" dans le temps
  • Zone d'activation = petit rectangle sur la ligne de vie = le moment oĂč l'objet est actif (il fait quelque chose)

✉ Les Types de Messages

TypeFlùcheDescriptionExemple 🧒
Synchrone —▶ (pleine) L'envoyeur attend la rĂ©ponse avant de continuer Tu appelles quelqu'un au tel et tu attends qu'il dĂ©croche
Asynchrone —> (ouverte) L'envoyeur continue sans attendre Tu envoies un SMS et tu continues ta vie
Retour - - - > (pointillé) La réponse à un message synchrone La personne te rappelle avec la réponse
Création - -«create»- -> Crée un nouvel objet Tu crées un nouveau groupe WhatsApp
Destruction ❌ sur la ligne de vie DĂ©truit un objet Tu supprimes le groupe
RĂ©cursif FlĂšche qui revient sur soi L'objet s'envoie un message Ă  lui-mĂȘme Tu te parles tout seul đŸ€·

đŸ—ïž Les Fragments CombinĂ©s (Structures de contrĂŽle)

Ce sont des boĂźtes rectangulaires qui entourent des messages pour montrer des conditions, boucles, etc.

🔀 alt (si...sinon)

Comme un if/else. Divisé en 2 zones par une ligne pointillée. Chaque zone a sa condition entre [crochets].

┌─ alt ─────────────┐ │ [montant > 0] │ │ payer() │ │- - - - - - - - - -│ │ [else] │ │ erreur() │ └───────────────────┘

🔁 loop (boucle)

Comme un while. RépÚte les messages tant que la condition est vraie.

┌─ loop ────────────┐ │ [pour chaque │ │ article] │ │ scanner(article) │ │ afficherPrix() │ └────────────────────┘

❓ opt (optionnel)

Comme un if sans else. Le fragment est exécuté seulement SI la condition est vraie.

┌─ opt ─────────────┐ │ [clientFidùle] │ │ appliquerRemise()│ └───────────────────┘

📌 ref (rĂ©fĂ©rence)

Fait référence à un autre diagramme de séquence. Utile pour ne pas surcharger le schéma.

┌─ ref ─────────────┐ │ │ │ Processus de │ │ paiement │ │ │ └───────────────────┘

🔹 Comment Construire un Diagramme de SĂ©quence (Pas Ă  Pas)

  1. Identifie le SCÉNARIO
    Un diag. de séquence illustre UN scénario (souvent le scénario nominal d'un cas d'utilisation). Lis l'énoncé et identifie les étapes.
  2. Identifie les PARTICIPANTS
    Les acteurs + les objets impliqués. Regarde le diagramme de classes pour trouver les bonnes classes.
  3. Place-les horizontalement
    L'acteur Ă  gauche, puis les objets dans l'ordre oĂč ils interviennent.
  4. Trace les MESSAGES de haut en bas
    Suis l'ordre chronologique du scénario. Chaque étape = un message (ou plusieurs).
  5. Ajoute les RETOURS
    Chaque message synchrone doit avoir un message de retour (pointillé).
  6. Ajoute les FRAGMENTS si nécessaire
    S'il y a des conditions → alt/opt. Des boucles → loop. Des sous-scĂ©narios → ref.
🧠 CohĂ©rence avec le diagramme de classes !
  • Les participants doivent ĂȘtre des instances de classes qui existent dans le diag. de classes
  • Les messages doivent correspondre Ă  des opĂ©rations dĂ©finies dans la classe du destinataire
  • Les arguments des messages doivent ĂȘtre cohĂ©rents avec les paramĂštres des opĂ©rations

🔍 Analyse d'Exercice (TD3 — ChampionnatEchecs)

Voici comment aborder ce type d'exercice pas Ă  pas :

Question 1 : Comment modéliser admin et participants ?

Ce sont des acteurs (bonhommes allumettes). Ils sont extérieurs au systÚme.

L'administrateur crée le championnat et génÚre les parties.

Les participants s'inscrivent et jouent.

Question 2 : Création championnat + inscription 2 joueurs

Participants : Admin, :ChampionnatDEchecs, :Joueur1, :Joueur2

  1. Admin → «create» → :ChampionnatDEchecs(MAX=...)
  2. Participant1 → :ChampionnatDEchecs : inscriptionJoueur("nom1","prĂ©nom1")
  3. :ChampionnatDEchecs → «create» → :Joueur (numĂ©ro=1)
  4. Retour ← numĂ©ro=1
  5. Participant2 → :ChampionnatDEchecs : inscriptionJoueur("nom2","prĂ©nom2")
  6. :ChampionnatDEchecs → «create» → :Joueur (numĂ©ro=2)
  7. Retour ← numĂ©ro=2

⚠ CohĂ©rence : L'opĂ©ration inscriptionJoueur retourne un integer (le numĂ©ro) — exactement comme dans le diag. de classes !

Question 4 : Déroulement d'une partie en 4 coups

Astuce : Utilise un fragment loop pour les coups !

  1. Joueur1 → :Partie : jouerCoup("e2-e4")
  2. :Partie → :Partie : vĂ©rifierMat() → retour false
  3. Joueur2 → :Partie : jouerCoup("e7-e5")
  4. :Partie → :Partie : vĂ©rifierMat() → retour false
  5. ... (répéter)
  6. Au dernier coup : vĂ©rifierMat() → retour true
  7. :Partie → :Partie : finirPartie()

Le message vĂ©rifierMat() est un message rĂ©cursif (l'objet :Partie s'appelle lui-mĂȘme).

🔗 Diagramme de Communication

C'est le jumeau du diagramme de sĂ©quence — mĂȘme info, prĂ©sentation diffĂ©rente.

📖 C'est quoi ?

Imagine que au lieu de lire les messages d'un groupe WhatsApp de haut en bas (séquence), tu vois tous les participants reliés en réseau avec des numéros sur les messages. C'est le diagramme de communication !

  • Les objets sont des rectangles reliĂ©s par des traits (liens)
  • Les messages sont numĂ©rotĂ©s pour montrer l'ordre
  • C'est un graphe, pas une timeline

✍ Syntaxe des Messages

FormatSignificationExemple
4 : méthode()Message simple numéro 44 : Afficher(x,y)
3.3.1 : mĂ©thode()Message imbriquĂ© (3→3.3→3.3.1)3.3.1 : Afficher(x,y)
4.2 : ret := méthode()Avec valeur de retour4.2 : ùge := Calculer(date)
[condition] 6 : méthode()Message conditionnel[age>=18] 6.2 : Voter()
1 * : méthode()Message itéré (boucle)1 * : Laver()
:GUI :CourseSection :Course aStudent:Student :Registration 1: requestToRegister → 2: getPrereq → 3: hasPassedCourse? 4: «create» 5: addToSchedule →

⚔ SĂ©quence vs Communication — Quand utiliser quoi ?

📊 Diagramme de SĂ©quence

  • Quand l'ordre temporel est important
  • Quand on part d'un cas d'utilisation
  • Pour des scĂ©narios dĂ©taillĂ©s et longs
  • Plus facile Ă  lire pour les dĂ©butants

🔗 Diagramme de Communication

  • Quand on veut voir l'architecture
  • Pour valider le diag. de classes
  • Quand les relations entre objets comptent plus
  • ReflĂšte mieux la structure du systĂšme
💡 Ils sont Ă©quivalents ! Tout diagramme de sĂ©quence peut ĂȘtre converti en diagramme de communication et vice versa. C'est juste un point de vue diffĂ©rent sur la mĂȘme interaction.

🚩 Diagramme d'États-Transitions

Il décrit la vie interne d'un objet : dans quel état il est, quel événement arrive, et dans quel état il part.

📖 C'est quoi ?

Imagine un feu tricolore. Il peut ĂȘtre vert, puis orange, puis rouge. Il ne change pas au hasard : un Ă©vĂ©nement comme after(25s) dĂ©clenche le passage Ă  l'Ă©tat suivant.

  • Un Ă©tat = une situation stable pendant un moment
  • Une transition = le passage d'un Ă©tat Ă  un autre
  • Un Ă©vĂ©nement = ce qui dĂ©clenche la transition
  • Le diagramme est un graphe : Ă©tats = nƓuds, transitions = flĂšches
💡 À quoi ça sert ? À modĂ©liser un objet qui a un cycle de vie clair : Commande (créée → validĂ©e → payĂ©e → livrĂ©e), Compte (actif → bloquĂ©), Partie (en attente → en cours → terminĂ©e).

đŸ§© Les ÉlĂ©ments de Base

ÉlĂ©mentNotationExplication simple
ÉtatRectangle arrondiL'objet reste ici jusqu'Ă  ce qu'un Ă©vĂ©nement arrive.
État initialPoint noir ●Le point de dĂ©part de la vie de l'objet.
État finalCible ◉La fin du cycle de vie.
Transition externeFlĂšche Ă©tat A → Ă©tat BElle change l'Ă©tat actif.
ÉvĂ©nementevenement()Le bouton qui dĂ©clenche le changement.
Garde[condition]La porte ne s'ouvre que si la condition est vraie.
Action/ action()Ce qu'on fait pendant la transition.
GreenLight do: éclairer vert after(25s) YellowLight entry: prévenir after(5s) RedLight exit: stopper after(30s)

⚡ Les ÉvĂ©nements DĂ©clencheurs

TypeSyntaxeQuand l'utiliser ?Exemple
callnomEvenement(params)Quand une méthode est appeléepayer(montant)
signalsignal(params)Quand un signal externe arrivealarmeDeclenchee()
changewhen(condition)Quand une condition devient vraiewhen(stock == 0)
afterafter(duree)Quand un délai est écoulé depuis l'entrée dans l'étatafter(10s)
🧠 Syntaxe complĂšte d'une transition Ă©vĂ©nement(paramĂštres) [garde] / action
Exemple : valider() [panierNonVide] / créerFacture()

🏠 Transitions Internes : entry, do, exit

Parfois l'objet fait quelque chose dans l'état sans forcément changer d'état.

Mot-cléMomentImage simple
entryJuste à l'entrée de l'étatTu entres dans une piÚce et tu allumes la lumiÚre.
doPendant que l'objet reste dans l'étatTu restes dans la piÚce et tu travailles.
exitJuste avant de quitter l'étatTu sors et tu éteins la lumiÚre.
includeAppel d'une sous-machine d'étatsTu délÚgues un mini-cycle de vie à un autre schéma.

Transition externe

Elle quitte l'état source et active un autre état. C'est le cas le plus courant.

Transition interne

Elle exécute une action sans changer l'état actif. Pratique pour éviter des faux états.

🧠 États AvancĂ©s

🔀 Point de choix vs point de jonction

Point de choix = losange. Il choisit une branche selon les gardes [condition].

Point de jonction = petit cercle. Il sert surtout Ă  partager des morceaux de transition pour rendre le dessin plus compact.

📩 État composite

Un état composite contient des sous-états. Exemple : Commande en traitement peut contenir Préparation, ContrÎle, Emballage.

On l'utilise quand un Ă©tat est trop gros pour ĂȘtre expliquĂ© par une seule boĂźte.

↩ État historique

L'Ă©tat historique mĂ©morise le dernier sous-Ă©tat actif. C'est comme reprendre un jeu exactement lĂ  oĂč on l'a laissĂ©.

🔹 Comment Construire un Diagramme d'États (Pas à Pas)

  1. Choisis UN objet
    Un diagramme d'états décrit un objet précis, pas tout le systÚme.
  2. Liste les états stables
    Cherche les adjectifs ou situations : brouillon, validé, payé, bloqué, terminé...
  3. Ajoute l'état initial et l'état final
    Le cycle doit avoir un début clair et, si possible, une fin claire.
  4. Trouve les événements
    Cherche ce qui déclenche les changements : valider(), annuler(), after(30j), when(solde<0)...
  5. Ajoute les gardes et actions
    Une garde bloque la transition si elle est fausse. Une action décrit ce qu'on fait pendant le passage.
  6. Simplifie
    Si le dessin devient illisible, utilise points de choix, états composites ou sous-machines.

đŸ›€ïž Diagramme d'ActivitĂ©s

Il montre le déroulement d'un travail : actions, décisions, boucles, parallélisme et responsabilités.

📖 C'est quoi ?

Le diagramme d'activités est une variante du diagramme d'états, mais il met l'accent sur les actions. Quand une action se termine, le flot passe automatiquement à la suivante.

  • TrĂšs utile pour dĂ©tailler une mĂ©thode ou un cas d'utilisation
  • Plus lisible qu'un diagramme de sĂ©quence quand il y a beaucoup de conditions
  • Permet de montrer qui fait quoi avec des couloirs d'activitĂ©s
💡 Version enfant C'est une recette avec des flĂšches : "prendre commande" → "vĂ©rifier paiement" → si OK "prĂ©parer", sinon "refuser".

đŸ§© Les NƓuds d'ActivitĂ©

NƓudNotationRîle
ActionRectangle arrondiUne étape exécutable : calculer, vérifier, envoyer...
ObjetRectangleUn objet produit ou consommé par une action.
DécisionLosangeChoisit une branche selon une condition.
FusionLosangeRassemble plusieurs branches alternatives.
BifurcationBarre épaisseLance plusieurs flots en parallÚle.
UnionBarre épaisseAttend que les flots parallÚles se rejoignent.
InitialPoint noir ●DĂ©but de l'activitĂ©.
Final d'activitĂ©Cible ◉Termine toute l'activitĂ©.
Final de flotCercle avec XTermine seulement un flot, pas les autres.
Client SystÚme Saisir commande Vérifier paiement OK ? [oui] Préparer livraison [non] Refuser fin de flot

🏊 Couloirs d'ActivitĂ©s (Swimlanes)

Un couloir indique qui est responsable de chaque action : client, systĂšme, banque, service livraison...

✅ Quand les utiliser ? Utilise les swimlanes si plusieurs acteurs/objets se partagent le travail. Tu Ă©vites ainsi de dessiner un processus oĂč on ne sait pas qui fait quoi.
⚠ Limite Si les flĂšches traversent trop de couloirs dans tous les sens, le diagramme devient illisible. Dans ce cas, sĂ©pare en plusieurs diagrammes plus petits.

🔀 DĂ©cision, Fusion, Fork, Join

Décision / Fusion Un losange coupe le flot en alternatives ou réunit des alternatives. Chaque sortie de décision doit avoir une garde : [oui], [non], [stock>0].
Bifurcation / Union Une barre Ă©paisse lance des actions en parallĂšle ou les synchronise. Exemple : prĂ©parer facture et prĂ©parer colis en mĂȘme temps, puis attendre les deux.
🧠 Final d'activitĂ© vs final de flot Le final d'activitĂ© arrĂȘte tout le processus. Le final de flot arrĂȘte seulement une branche. Si tu as des actions parallĂšles, cette diffĂ©rence peut changer le sens du diagramme.

🔹 Comment Construire un Diagramme d'ActivitĂ©s (Pas Ă  Pas)

  1. Choisis le processus
    Prends un cas d'utilisation ou une méthode : "traiter commande", "inscrire étudiant", "payer facture".
  2. Écris les actions dans l'ordre
    Chaque action doit ĂȘtre courte et verbale : vĂ©rifier, calculer, envoyer, enregistrer...
  3. Ajoute les décisions
    Quand le texte dit "si", "sinon", "selon", "peut", ajoute un losange avec des gardes.
  4. Ajoute les objets si utiles
    Montre les documents ou données qui circulent : Facture, Demande, Reçu...
  5. Ajoute les swimlanes
    Si plusieurs responsables interviennent, sépare-les en couloirs.
  6. Vérifie le début et la fin
    Un début clair, une fin claire, pas de branche qui part dans le vide.

⚔ ActivitĂ© vs SĂ©quence vs États

Tu veux montrer...ChoisisPourquoi
Les étapes d'un processus avec conditionsActivitéLe flot de travail est le plus important.
Les messages entre objets dans le tempsSéquenceL'ordre chronologique des appels est le plus important.
La vie interne d'un objetÉtatsLes Ă©tats stables et les Ă©vĂ©nements sont le plus important.

đŸ§© Diagrammes de Composants & DĂ©ploiement

Ces vues montrent l'architecture : comment le logiciel est dĂ©coupĂ© et oĂč il est installĂ©.

📩 Diagramme de Composants — C'est quoi ?

Un composant est une brique logicielle autonome qui fournit un service précis. Il cache ses classes internes et montre seulement ses interfaces.

  • Il encapsule des fonctionnalitĂ©s cohĂ©rentes
  • Il doit ĂȘtre rĂ©utilisable autant que possible
  • Il peut avoir des interfaces offertes et des interfaces requises
  • Son comportement interne peut ĂȘtre rĂ©alisĂ© par des classes, d'autres composants ou des artefacts
💡 Version enfant C'est comme une prise Ă©lectrique : tu n'as pas besoin de voir les fils dans le mur. Tu connais juste l'interface : brancher ici, recevoir de l'Ă©nergie.

🔌 Interfaces, Ports et DĂ©pendances

GestionCommande interface offerte ICommande interface requise IPaiement port Paiement dépend de
ÉlĂ©mentSignificationÀ retenir
Interface offerteService fourni par le composantNotation "lollipop" : petit cercle.
Interface requiseService dont le composant a besoinNotation "socket" : demi-cercle.
PortPoint de connexion sur le bord du composantPermet de changer l'intérieur sans casser les clients externes.
Connecteur «delegate»Relie un port externe à un élément interneIl délÚgue le travail vers l'intérieur du composant.
DépendanceUn composant utilise un autre composantFlÚche pointillée orientée vers ce dont on dépend.

đŸ–„ïž Diagramme de DĂ©ploiement — C'est quoi ?

Le diagramme de déploiement montre la réalité physique : serveurs, postes clients, appareils, connexions réseau, et artefacts installés dessus.

  • Un nƓud = ressource matĂ©rielle ou environnement d'exĂ©cution
  • Un artefact = fichier dĂ©ployable : exĂ©cutable, script, document, table, archive...
  • Un composant doit normalement ĂȘtre manifestĂ© par un artefact avant d'ĂȘtre dĂ©ployĂ©
«device» Poste Client «artifact» navigateur «node» Serveur Web «artifact» app.jar GestionCommande HTTPS «manifest» Le déploiement répond à : "sur quelle machine tourne quoi ?"

🔗 Relations Importantes en DĂ©ploiement

RelationSyntaxeExplication
DĂ©ploiement directArtefact dans le nƓudOn dessine le fichier Ă  l'intĂ©rieur du serveur ou poste.
«support»Composant → nƓudMontre qu'un nƓud supporte un composant.
«manifest»Artefact → Ă©lĂ©ment modĂšleMontre qu'un fichier implĂ©mente un composant ou une classe.
ConnexionLigne entre nƓudsMontre une communication physique ou rĂ©seau.
⚠ Rigueur UML En thĂ©orie, on dĂ©ploie des artefacts sur des nƓuds, pas directement des composants. Le composant est manifestĂ© par un artefact, puis l'artefact est dĂ©ployĂ©.

🔹 Comment Construire ces Diagrammes (Pas à Pas)

Diagramme de composants
  1. Liste les gros blocs logiciels réutilisables.
  2. Donne Ă  chaque composant un service clair.
  3. Ajoute les interfaces offertes et requises.
  4. Relie les dépendances.
  5. Cache les classes internes sauf si elles aident Ă  comprendre.
Diagramme de déploiement
  1. Liste les machines, serveurs et environnements.
  2. Ajoute les artefacts installés dessus.
  3. Relie les nƓuds par leurs connexions.
  4. Ajoute «manifest» si tu montres quel artefact implémente quel composant.
  5. Vérifie que l'architecture physique correspond aux contraintes du systÚme.

⚔ Composant vs Classe vs Artefact vs NƓud

ConceptC'est quoi ?Exemple
ClassePlan d'un objet dans le codeCommande, Client, Facture
ComposantBloc logiciel qui fournit des servicesGestionCommande, Paiement
ArtefactFichier concret produit ou utiliséapp.jar, schema.sql, facture.pdf
NƓudMachine ou environnement d'exĂ©cutionServeur web, PC client, JVM, conteneur

🧠 Astuces pour RĂ©ussir TOUT Exercice

Les stratĂ©gies qui font la diffĂ©rence entre 10/20 et 18/20 đŸ’Ș

📋 Comment Lire un ÉnoncĂ© (MĂ©thode du Surlignage)

  1. 1Ăšre lecture : COMPRENDS le contexte
    Lis tout sans rien marquer. Comprends de quoi on parle (une banque ? un hĂŽpital ? un jeu ?).
  2. 2Ăšme lecture : SURLIGNE avec des couleurs mentales
    🟱 VERT = Acteurs (noms de personnes/rîles/systùmes externes)
    đŸ”” BLEU = Classes/EntitĂ©s (noms/concepts importants)
    🟡 JAUNE = Actions/Cas (verbes d'action)
    🟣 ROSE = Conditions ("si", "peut", "doit", "certains"...)
  3. 3ùme lecture : VÉRIFIE ce qu'on te demande
    Quel diagramme ? Quel scénario ? Quelles contraintes ?

💀 Top 14 des Erreurs qui Font Perdre des Points

1. ❌ Sens des flùches include/extend Include : Cas principal → Cas inclus
Extend : Cas optionnel → Cas principal
2. ❌ MultiplicitĂ©s inversĂ©es La multiplicitĂ© se lit depuis l'autre cĂŽtĂ© ! "1..*" Ă  droite = "un objet Ă  gauche est liĂ© Ă  1 ou plusieurs Ă  droite"
3. ❌ AgrĂ©gation au lieu de Composition Pose les 2 questions magiques ! Destruction + Appartenance exclusive = Composition ◆
4. ❌ Messages vers le mauvais objet En sĂ©quence : vĂ©rifie que le message correspond Ă  une opĂ©ration de la classe du DESTINATAIRE
5. ❌ Oublier les messages de retour Chaque message synchrone ▶ doit avoir un retour ← (flĂšche pointillĂ©e)
6. ❌ Acteur Ă  l'intĂ©rieur du rectangle systĂšme Les acteurs sont TOUJOURS dehors !
7. ❌ Cas d'utilisation trop dĂ©taillĂ©s "Cliquer sur bouton" n'est PAS un cas d'utilisation ! "S'authentifier" OUI.
8. ❌ Oublier les attributs/opĂ©rations En classe : mets les attributs (privĂ©s -) et les opĂ©rations (publiques +)
9. ❌ NumĂ©rotation dĂ©sordonnĂ©e (communication) Les numĂ©ros doivent reflĂ©ter l'ordre chronologique ET l'imbrication
10. ❌ Pas de cohĂ©rence entre diagrammes Si tu as un diag. de classes ET de sĂ©quence, les classes/opĂ©rations doivent ĂȘtre les mĂȘmes !
11. ❌ Confondre activitĂ© et Ă©tat ActivitĂ© = flot de travail. État = cycle de vie d'un objet. Ce n'est pas interchangeable.
12. ❌ Oublier les gardes Aprùs un losange, chaque branche doit dire quand elle est prise : [oui], [non], [stock>0]...
13. ❌ DĂ©ployer un composant comme un fichier En dĂ©ploiement, le fichier concret est l'artefact. Le composant est manifestĂ© par cet artefact.
14. ❌ Croire qu'UML est une mĂ©thode complĂšte UML donne les notations. La dĂ©marche organise les Ă©tapes et les itĂ©rations.

🌳 Arbre de DĂ©cision : Quel Diagramme Utiliser ?

La question demande...→ DiagrammeIndice dans l'Ă©noncĂ©
"Qui fait quoi ?"Cas d'Utilisation"les acteurs", "les fonctionnalités", "les besoins"
"De quoi est composé le systÚme ?"Classes"les entités", "la structure", "les données"
"Dans quel ordre ça se passe ?"Séquence"le scénario", "le déroulement", "les échanges"
"Comment les objets coopÚrent ?"Communication"la coopération", "les liens entre objets"
"Quels Ă©tats traverse un objet ?"États-Transitions"Ă©tat", "cycle de vie", "Ă©vĂ©nement", "aprĂšs X secondes"
"Quelles étapes suit un processus ?"Activités"workflow", "si/sinon", "parallÚle", "responsable"
"Quels modules logiciels composent l'application ?"Composants"interface offerte/requise", "service", "dépendance"
"Sur quelles machines tourne le systÚme ?"Déploiement"serveur", "poste client", "artefact", "réseau"
"Comment passer des besoins au code ?"Démarche UML"besoins", "analyse", "conception", "itération"

📜 Cheat Sheet Express par Diagramme

đŸ‘€ Cas d'Utilisation — Checklist rapide
  • ☐ Rectangle systĂšme avec nom
  • ☐ Acteurs principaux Ă  gauche
  • ☐ Acteurs secondaires Ă  droite
  • ☐ Cas = ellipse + verbe infinitif
  • ☐ Traits acteur ↔ cas
  • ☐ «include» = toujours obligatoire (flĂšche vers le cas inclus)
  • ☐ «extend» = optionnel (flĂšche vers le cas Ă©tendu)
  • ☐ GĂ©nĂ©ralisation = triangle vide
  • ☐ Chaque cas liĂ© Ă  au moins 1 acteur
đŸ§± Classes — Checklist rapide
  • ☐ Chaque classe : Nom + Attributs + OpĂ©rations
  • ☐ VisibilitĂ© : - private, + public, # protected
  • ☐ Associations avec nom et/ou rĂŽles
  • ☐ MultiplicitĂ©s aux DEUX extrĂ©mitĂ©s
  • ☐ AgrĂ©gation ◇ / Composition ◆ si nĂ©cessaire
  • ☐ HĂ©ritage avec triangle △ vide
  • ☐ Classe d'association si l'association a des attributs
  • ☐ Attribut type = String, int, boolean, Date...
  • ☐ NavigabilitĂ© si prĂ©cisĂ©e
🔄 SĂ©quence — Checklist rapide
  • ☐ Participants en haut : nomObjet:Classe
  • ☐ Lignes de vie verticales en pointillĂ©
  • ☐ Zones d'activation (rectangles)
  • ☐ Messages synchrones = flĂšche pleine ▶
  • ☐ Messages de retour = flĂšche pointillĂ©e
  • ☐ Messages = opĂ©rations de la classe destinataire
  • ☐ Fragments alt/loop/opt/ref si conditions
  • ☐ «create» pour crĂ©er un objet
  • ☐ CohĂ©rence avec le diagramme de classes
🔗 Communication — Checklist rapide
  • ☐ Objets = rectangles
  • ☐ Liens = traits entre objets
  • ☐ Messages numĂ©rotĂ©s : 1, 2, 3...
  • ☐ Messages imbriquĂ©s : 1.1, 1.2, 2.1...
  • ☐ Conditions entre [crochets]
  • ☐ * pour itĂ©ration
  • ☐ FlĂšche sur le lien pour la direction du message
🚩 États-Transitions — Checklist rapide
  • ☐ Un seul objet ou systĂšme Ă  cycle de vie clair
  • ☐ État initial ● et Ă©tat final ◉ si le cycle se termine
  • ☐ États stables nommĂ©s proprement
  • ☐ Transitions avec Ă©vĂ©nement dĂ©clencheur
  • ☐ Gardes entre [crochets] quand il y a condition
  • ☐ Actions aprĂšs / si nĂ©cessaire
  • ☐ entry / do / exit seulement pour les actions internes Ă  l'Ă©tat
đŸ›€ïž ActivitĂ©s — Checklist rapide
  • ☐ Actions courtes avec verbes d'action
  • ☐ DĂ©but ● et fin claire
  • ☐ DĂ©cisions avec gardes sur toutes les sorties
  • ☐ Fork/join si actions parallĂšles
  • ☐ Swimlanes si plusieurs responsables
  • ☐ Final de flot utilisĂ© seulement pour arrĂȘter une branche
đŸ§© Composants — Checklist rapide
  • ☐ Composants = blocs logiciels rĂ©utilisables
  • ☐ Chaque composant fournit un service prĂ©cis
  • ☐ Interfaces offertes = services fournis
  • ☐ Interfaces requises = services nĂ©cessaires
  • ☐ Ports si on veut montrer les points de connexion
  • ☐ DĂ©pendances orientĂ©es vers ce dont on dĂ©pend
đŸ–„ïž DĂ©ploiement — Checklist rapide
  • ☐ NƓuds = machines ou environnements d'exĂ©cution
  • ☐ Artefacts = fichiers concrets dĂ©ployables
  • ☐ Connexions rĂ©seau entre nƓuds
  • ☐ «manifest» pour relier artefact et composant
  • ☐ «support» si un nƓud supporte un composant
  • ☐ Ne pas confondre composant logique et fichier physique
🧭 DĂ©marche UML — Checklist rapide
  • ☐ UML = langage de modĂ©lisation, pas mĂ©thode complĂšte
  • ☐ DĂ©marche pilotĂ©e par les cas d'utilisation
  • ☐ Architecture pensĂ©e tĂŽt, pas Ă  la fin
  • ☐ Travail itĂ©ratif et incrĂ©mental
  • ☐ Besoins → analyse du domaine → classes participantes → conception
  • ☐ Chaque diagramme doit rester cohĂ©rent avec les autres

🎯 StratĂ©gie d'Examen

✅ Avant de commencer :
  • Lis TOUT l'Ă©noncĂ© 2 fois
  • Identifie le type de diagramme demandĂ©
  • Surligne les acteurs, classes, actions
  • Dessine d'abord un brouillon
✅ Pendant le dessin :
  • Commence par le plus Ă©vident (acteurs ou classes principales)
  • Ajoute les dĂ©tails progressivement
  • VĂ©rifie la cohĂ©rence Ă  chaque Ă©tape
  • Relis l'Ă©noncĂ© pour ne rien oublier
✅ Aprùs avoir fini :
  • VĂ©rifie que chaque Ă©lĂ©ment du texte est dans ton diagramme
  • VĂ©rifie les multiplicitĂ©s
  • VĂ©rifie les sens des flĂšches
  • VĂ©rifie la notation (include vs extend, ◇ vs ◆)
✅ Si tu bloques :
  • Commence par ce que tu sais
  • Mets des post-it mentaux "Ă  vĂ©rifier"
  • Ne perds pas 20min sur une multiplicitĂ©, avance !
  • Un diagramme partiel > pas de diagramme

✅ Checklist Globale — Tout en un Coup d'ƒil

La derniĂšre page Ă  relire avant l'exam đŸ”„

📊 RĂ©sumĂ© des 4 Diagrammes Fondamentaux

đŸ‘€ Cas d'Utilisation đŸ§± Classes 🔄 SĂ©quence 🔗 Communication
Type Dynamique (fonctionnel) Statique (structurel) Dynamique (temporel) Dynamique (spatial)
Question Qui fait quoi ? De quoi c'est fait ? Dans quel ordre ? Qui parle Ă  qui ?
ÉlĂ©ments clĂ©s Acteurs, Cas (ellipses), Relations Classes, Attributs, Associations Objets, Messages, Temps Objets, Liens, Messages numĂ©rotĂ©s
PiÚge #1 Include vs Extend Agrégation vs Composition Oublier les retours Numérotation incorrecte
Source TD TD1 TD2 TD3 Cours 4

📊 RĂ©sumĂ© des Diagrammes d'Architecture et de Comportement

🚩 États đŸ›€ïž ActivitĂ©s đŸ§© Composants đŸ–„ïž DĂ©ploiement 🧭 DĂ©marche
Type Dynamique interne Dynamique procédural Statique architectural Physique Processus de modélisation
Question Quels Ă©tats ? Quelles Ă©tapes ? Quels modules ? OĂč ça tourne ? Dans quel ordre travailler ?
ÉlĂ©ments clĂ©s États, transitions, Ă©vĂ©nements, gardes Actions, dĂ©cisions, fork/join, swimlanes Composants, interfaces, ports, dĂ©pendances NƓuds, artefacts, connexions, manifest Besoins, analyse, conception, itĂ©rations
PiÚge #1 Mettre un processus entier au lieu d'un objet Oublier les gardes sur les branches Confondre interface offerte et requise Confondre composant et artefact Traiter UML comme une méthode complÚte
Source Cours 5 Cours 5 Cours 6 Cours 6 Cours 7

đŸ—ïž Les Mots Magiques (RĂ©sumĂ©)

→ Include "doit", "toujours", "nĂ©cessite", "obligatoire", "il faut"
→ Extend "peut", "optionnel", "certains", "parfois", "soit...soit"
→ HĂ©ritage "est un type de", "est un", "spĂ©cialise", "hĂ©rite"
→ Composition ◆ "composĂ© de", "contient" (et meurt avec), "fait partie intĂ©grante"
→ AgrĂ©gation ◇ "contient", "regroupe" (mais indĂ©pendant), "a des"
→ Association simple "utilise", "rĂ©serve", "emploie", tout autre verbe
→ États "Ă©tat", "devient", "passe Ă ", "aprĂšs", "quand", "si condition"
→ ActivitĂ©s "workflow", "Ă©tape", "processus", "parallĂšle", "responsable"
→ Composants "module", "service", "interface", "dĂ©pend de", "rĂ©utilisable"
→ DĂ©ploiement "serveur", "poste", "artefact", "installĂ© sur", "connexion rĂ©seau"
→ DĂ©marche "besoins", "analyse", "conception", "itĂ©ratif", "cas d'utilisation"

💎 Formule de Succùs

🏆 La MĂ©thode R.A.C.E.

RRead — Lis l'Ă©noncĂ© 2 fois minimum
AAnalyse — Surligne acteurs/classes/verbes/conditions
CConstruis — Dessine Ă©tape par Ă©tape (brouillon d'abord!)
EExamine — VĂ©rifie cohĂ©rence, multiplicitĂ©s, flĂšches