Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 113 minIntermédiaire

C'est quoi UML ? Les 14 diagrammes UML

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • dire ce qu'est UML et ce qu'il n'est pas : une notation, pas une méthode ;
  • classer les 14 diagrammes UML en structure et comportement ;
  • choisir le diagramme adapté à une question ;
  • vérifier la cohérence entre les vues d'un même modèle.

3 exercices corrigés1 schéma

UML (Unified Modeling Language, « langage de modélisation unifié ») est une notation graphique normalisée qui sert à décrire un logiciel avant, pendant et après son développement : ce qu'il fait pour ses utilisateurs, de quels objets il est fait et comment ces objets collaborent. Ce n'est pas un langage de programmation ni une méthode, c'est un ensemble de 14 types de diagrammes que tout développeur sait lire. Ce chapitre explique à quoi sert UML, comment il est organisé et quels diagrammes comptent au BTS SIO.

À quoi sert UML

Quand tu écris une application seul, pour toi, tu peux garder sa conception dans ta tête. Dès que tu travailles pour quelqu'un, ou avec quelqu'un, il faut la poser sur le papier. Un diagramme UML sert alors à trois choses.

  • Comprendre le besoin. Avant d'écrire une ligne de code, un diagramme de cas d'utilisation montre au client ce que l'application fera, et pour qui. Il le valide ou le corrige en cinq minutes ; une erreur de compréhension découverte à la livraison coûte des semaines.
  • Concevoir. Un diagramme de classes ou de séquence te force à décider où va chaque donnée et quelle classe fait quoi. Effacer une flèche coûte moins cher que réécrire trois classes.
  • Communiquer et documenter. Un développeur C#, un développeur PHP et un développeur JavaScript lisent le même diagramme de la même façon. Quand quelqu'un reprend ton projet, ou quand une commission d'examen découvre ta réalisation, un bon diagramme explique en deux minutes ce que le code dit en deux mille lignes.

D'où vient UML

Au début des années 1990, chaque auteur de méthode objet avait sa propre notation. Trois d'entre eux, Grady Booch, James Rumbaugh (méthode OMT) et Ivar Jacobson (méthode OOSE, qui a inventé les cas d'utilisation), ont fusionné leurs notations chez l'éditeur Rational Software. L'OMG (Object Management Group), un consortium d'industriels, a adopté UML 1.1 comme standard en 1997.

VersionAnnéeCe qui a changé
UML 1.11997Première version normalisée par l'OMG
UML 2.02005Refonte : fragments combinés dans les diagrammes de séquence, nouveaux diagrammes (temporel, vue d'ensemble des interactions)
UML 2.4.12011Reprise par l'ISO en 2012 (norme ISO/IEC 19505)
UML 2.5.12017Version en vigueur : spécification simplifiée, sans nouveau diagramme

Aucune version n'est sortie depuis 2017 : UML est stable. Ce que tu apprends ici ne sera pas périmé dans deux ans, contrairement à la version de ton framework.

Les 14 diagrammes UML

UML 2.5 définit 14 types de diagrammes, rangés en deux familles. Les diagrammes de structure montrent ce qui existe, à un moment donné : les classes, les objets, les composants, les serveurs. Les diagrammes de comportement montrent ce qui se passe : les services rendus, les échanges de messages, les enchaînements d'actions, les changements d'état. Parmi ces derniers, quatre sont des diagrammes d'interaction, qui décrivent des échanges entre objets.

Diagramme UMLStructure (7)Comportement (7)ClassesObjetsComposantsDéploiementPaquetagesStructure compositeProfilsCas d'utilisationActivitéÉtats-transitionsInteraction (4)SéquenceCommunicationVue d'ensemble des interactionsTemporelessentiels au BTS SIOutiles à connaîtrerares
Les 14 diagrammes UML 2.5 ; en couleur, ceux qui comptent le plus au BTS SIO
DiagrammeFamilleQuestion à laquelle il répondAu BTS SIO
Cas d'utilisationComportementQui utilise l'application, et pour faire quoi ?Très fréquent (chapitre 2)
ClassesStructureDe quels objets est fait le logiciel, et comment sont-ils reliés ?Le plus important (chapitre 4)
SéquenceInteractionDans quel ordre les objets s'envoient-ils des messages pour réaliser un scénario ?Fréquent (chapitre 7)
ActivitéComportementQuelles actions s'enchaînent, avec quels choix et qui les fait ?Fréquent (chapitre 8)
États-transitionsComportementPar quels états passe un objet, et quels événements le font changer ?Utile (chapitre 9)
DéploiementStructureSur quelles machines tourne chaque partie de l'application ?Utile (chapitre 10)
ComposantsStructureDe quels blocs logiciels est fait le système, et quelles interfaces échangent-ils ?Utile (chapitre 10)
PaquetagesStructureComment le code est-il rangé en couches ou en modules ?Utile (chapitre 10)
ObjetsStructureQuels objets existent à un instant précis, avec quelles valeurs ?Utile (chapitre 10)
CommunicationInteractionLes mêmes échanges qu'un diagramme de séquence, dessinés autour des liensRare
Vue d'ensemble des interactionsInteractionUn diagramme d'activité dont les étapes sont des interactionsRare
Temporel (timing)InteractionCombien de temps un objet reste-t-il dans chaque état ?Rare (informatique embarquée)
Structure compositeStructureComment une classe est-elle faite à l'intérieur ?Rare
ProfilsStructureComment étendre UML avec ses propres stéréotypes ?Rare

Personne n'utilise les 14. Une application de gestion se documente très bien avec trois ou quatre diagrammes : cas d'utilisation pour le besoin, classes pour la structure, séquence pour un ou deux scénarios délicats, états-transitions pour les objets qui ont un cycle de vie.

Les vues d'un même système

Chaque diagramme est une vue partielle d'un modèle unique. Le diagramme de cas d'utilisation montre l'application de l'extérieur ; le diagramme de classes montre sa structure de l'intérieur ; le diagramme de séquence montre comment cette structure réalise un cas d'utilisation. Ces vues doivent rester cohérentes :

  • chaque message d'un diagramme de séquence envoyé à un objet correspond à une opération de sa classe dans le diagramme de classes ;
  • chaque transition d'un diagramme d'états-transitions est déclenchée par une opération ou un événement qui existe quelque part ;
  • chaque cas d'utilisation est réalisé par au moins un scénario, qu'on peut détailler en séquence.

C'est exactement ce que vérifie un correcteur, ou une commission d'E6 : un diagramme de séquence qui appelle une méthode absente du diagramme de classes trahit une conception faite à la hâte.

UML dans la vie d'un projet

UML sert à des moments différents du projet, avec un niveau de détail différent.

ÉtapeDiagrammesNiveau de détail
Analyse du besoinCas d'utilisation, descriptions textuelles, activité (processus métier)Le point de vue de l'utilisateur, sans technique
ConceptionClasses (métier, puis détaillé), séquence, états-transitionsLes classes, leurs attributs typés, leurs opérations
ArchitecturePaquetages, composants, déploiementLes couches, les serveurs, les protocoles
MaintenanceClasses et séquence obtenus par rétro-conception du code existantCe que fait vraiment le code, pour le reprendre

Martin Fowler, auteur de UML Distilled, distingue trois usages : UML esquisse (au tableau, pour réfléchir à plusieurs, sans souci de complétude), UML plan (un modèle précis que les développeurs suivent) et UML langage de programmation (un modèle si détaillé qu'un outil génère le code). En entreprise comme au BTS, l'esquisse et le plan dominent. Un diagramme n'a pas besoin de tout montrer : il montre ce qui sert à la question posée.

UML, Merise et le code

Au BTS SIO, tu croises deux familles de modèles qui se ressemblent :

  • Merise, méthode française, modélise les données à stocker dans une base relationnelle : MCD, puis MLD, puis tables (cours Merise) ;
  • UML modélise le logiciel : ses utilisateurs, ses classes avec leurs méthodes, ses échanges.

Le MCD et le diagramme de classes se traduisent l'un dans l'autre presque terme à terme, avec un piège sur le côté où l'on écrit les cardinalités (chapitre 5). Dans un projet, il est courant de présenter un MCD (ou un schéma relationnel) pour la base et un diagramme de classes pour le code.

UML ne dépend d'aucun langage. Ce cours traduit les diagrammes en C#, le langage du cours Programmation orientée objet, et montre au passage l'équivalent en TypeScript et en PHP, que tu utilises avec React, Node.js ou PHP et PDO.

Lire un diagramme : les éléments communs

Quelques éléments se retrouvent dans tous les diagrammes :

  • une note, un rectangle au coin replié relié par un pointillé à l'élément qu'elle commente : elle porte une explication en français ou une règle de gestion ;
  • un stéréotype, un mot entre guillemets doubles, «interface», «include», «device», qui précise la nature d'un élément ou d'une relation ;
  • une contrainte, une règle entre accolades : {ordered}, {abstract}, {montant > 0} ;
  • un cadre (frame) autour du diagramme, avec un onglet qui donne son type et son nom : sd Valider une fiche pour un diagramme de séquence, stm FicheFrais pour une machine à états. Les sujets d'examen l'omettent souvent ; tu peux faire de même sur ta copie.

Les guillemets de stéréotype « » sont les mêmes que les guillemets français. Sur un clavier sans eux, on écrit <<include>> : les outils comme PlantUML acceptent les deux.

AppliFrais, le fil rouge du cours

Tous les exemples du cours portent sur AppliFrais, l'application de gestion des frais des visiteurs médicaux du laboratoire GSB, un contexte que tu retrouves dans beaucoup d'ateliers de professionnalisation et que le cours API REST utilise aussi. Voici le cahier des charges simplifié.

Les visiteurs médicaux de GSB parcourent leur région pour présenter les médicaments du laboratoire aux praticiens. Chaque mois, un visiteur renseigne sa fiche de frais : les frais forfaitisés (forfait étape à 110 €, frais kilométriques à 0,62 € le kilomètre, nuitée à 80 €, repas à 25 €), en quantités, et les frais hors forfait (un taxi, un repas avec un praticien), chacun avec une date, un libellé et un montant. Quand il a terminé, le visiteur clôture sa fiche ; le 1er du mois suivant, les fiches restées ouvertes sont clôturées automatiquement. Un comptable contrôle alors chaque fiche clôturée : il peut refuser un frais hors forfait non conforme, puis il valide la fiche, ce qui fixe le montant validé. Les fiches validées sont mises en paiement : le service de paie effectue le virement, puis la fiche est marquée remboursée. Chaque visiteur est rattaché à une région.

Les visiteurs utilisent une application web (un front React qui appelle une API Node.js) ; les comptables utilisent une application de bureau en C# WinForms. Au fil des chapitres, tu vas dessiner les cas d'utilisation d'AppliFrais, décrire le cas « Valider une fiche de frais », bâtir son diagramme de classes et le traduire en C#, tracer la séquence de la validation, l'activité de la campagne mensuelle, les états d'une fiche et le déploiement de l'ensemble.

Exercices

Exercice 1 sur 3 Le bon diagramme Réussi À revoir

Pour chaque besoin, indique le diagramme UML le plus adapté.

  1. Montrer au directeur commercial ce que pourront faire les visiteurs et les comptables dans AppliFrais.
  2. Expliquer à un nouveau développeur l'ordre des appels entre l'interface, le contrôleur et la base quand un comptable valide une fiche.
  3. Lister les classes métier, leurs attributs et leurs liens avant de créer le projet C#.
  4. Montrer par quels états passe une fiche de frais, de sa création à son remboursement.
  5. Indiquer à l'équipe SISR sur quels serveurs installer le front, l'API et la base, et quels ports ouvrir.
  6. Décrire le processus mensuel de contrôle des fiches, en montrant ce que fait le comptable et ce que fait l'application.
Voir la réponseMasquer la réponse de l'exercice 1
  1. Le diagramme de cas d'utilisation : il montre les acteurs et les services rendus, sans technique.
  2. Le diagramme de séquence : les objets en colonnes, les messages dans l'ordre du temps.
  3. Le diagramme de classes.
  4. Le diagramme d'états-transitions de la classe FicheFrais.
  5. Le diagramme de déploiement : les nœuds (serveurs), les artefacts installés dessus et les chemins de communication avec leur protocole.
  6. Le diagramme d'activité, avec un couloir pour le comptable et un pour l'application.

Tu avais trouvé ?

Exercice 2 sur 3 Vrai ou faux Réussi À revoir

  1. UML est une méthode de conception, comme Merise ou Scrum.
  2. Un diagramme de classes UML ne peut être traduit qu'en Java.
  3. Le diagramme de séquence est un diagramme de comportement.
  4. Il faut produire les 14 diagrammes pour documenter correctement une application.
  5. Un message envoyé à un objet dans un diagramme de séquence doit correspondre à une opération de sa classe.
Voir la réponseMasquer la réponse de l'exercice 2
  1. Faux. UML est une notation. Merise est une méthode (avec sa propre notation) et Scrum un cadre de gestion de projet ; UML peut s'utiliser avec l'un ou l'autre.
  2. Faux. UML est indépendant du langage : le même diagramme se traduit en C#, Java, PHP, TypeScript ou Python.
  3. Vrai. C'est même un diagramme d'interaction, une sous-famille des diagrammes de comportement.
  4. Faux. On choisit les diagrammes utiles à la question posée ; trois ou quatre suffisent souvent.
  5. Vrai. C'est l'une des règles de cohérence entre les vues : sinon, le diagramme de séquence appelle une méthode qui n'existe pas.

Tu avais trouvé ?

Exercice 3 sur 3 Structure ou comportement Réussi À revoir

Range chaque diagramme dans sa famille, et précise lesquels sont des diagrammes d'interaction : déploiement, activité, objets, communication, paquetages, états-transitions, temporel, composants, cas d'utilisation, séquence.

Voir la réponseMasquer la réponse de l'exercice 3
  • Structure : déploiement, objets, paquetages, composants.
  • Comportement : activité, états-transitions, cas d'utilisation, et les diagrammes d'interaction : communication, temporel, séquence.

Les trois diagrammes de structure qui manquent à la liste pour arriver à sept sont les classes, la structure composite et les profils ; le quatrième diagramme d'interaction est la vue d'ensemble des interactions.

Tu avais trouvé ?

Chapitre terminé !

Fais les 3 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Diagramme de cas d'utilisation : acteurs, include et extendRevoir le sommaire du cours