Modeliser, c’est quoi?

Tous les modeles sont faux mais certains sont utiles – George E. P. Box

Modéliser c’est représentation un système par un autre, dans le but de faciliter sa compréhension, ou bien prévoir certains aspects du comportement d’un système.

Par nature un modèle est toujours faux, mais cela n’empèche pas d’être utile, en fonction du but à atteindre.

Modèles descriptifs vs prescriptifs

  • Descriptif : description de l’existant
  • Prescriptif : description d’un état futur. De ce qu’il faut construire ou développer.

Modèles statiques vs dynamiques

  • Statique : indique un état donné
  • Dynamique : systeme d’intéraction

UML aux sources

UML existe tant pour des raisons pratiques que historiques.

L’UML - comme son nom l’indique, c’est le Language de Modelisation Unifié - d’abord répond à un besoin pour la communité Object du début des années 90

Face aux multiples tentative de représenter les modèles et spécification logique, le groupe OMG (lobby Objet des années 90) va financer un language de modélisation qui va devenir UML et qui sera intégré comme outils de modélisation dans de nombreux process de développement (notament Rational Unified Process, issue également de la même boite de consulting, qui sera d’ailleur rachetée par IBM plus tard… )

UML s’est imposé comme le language visuel de l’objet.

(En France on est resté assez longtemps avec Merise qui était une méthodologie complète de developpement française, avec son propre languqge de modélisation visuelle. Il y avait pas mal de point commun entre les deux mais au final tout le monde a migré vers UML)

UML en bref

2 grande catégories de schéma:

Diagrammes de structure (statiques)

Diagrammes de comportement

Rapide survol des diagrammes

Diagrammes de structures

  • Diagrammes de Classes

    Il décrit les classes (les catégorie d’objets du système) et leur relations.

  • Diagramme d’objets

    Il exprime les relations qui existent entre les objets. Cela permet d’exprimer des cas particuliers d’implementation.

  • Diagramme de composants

    Il représente les éléments logiciels comme les modules (packages, bibliothèques, exécutables) ou données (fichiers, bases de données)

  • Diagramme de déploiement

    concerne l’infrastructure physique (ordinateurs, périphériques, réseaux, systèmes de stockage)

  • Diagramme de packages
  • Diagramme de structure composite
  • Diagramme de profils

Diagrammes de comportement

  • Diagramme des cas d’utilisation
  • Diagramme états-transitions
  • Diagramme d’activité
  • Diagramme de séquence
  • Diagramme de communication
  • Diagramme global d’interaction
  • Diagramme de temps

Quelques examples

Diagrammes de classes

Diagrammes d’objets

Diagrammes de composants

Diagramme de cas d’utilisations

Diagramme d’état

Diagramme de séquence

Dans la pratique

Bien que largement répandu aujourd’hui, UML est loin de ses ambitions originelle de devenir LE language de modélisation qui représenterai tout type de schéma ou système.

Dans la pratique, très souvent un simple dessin, ou diagrame fait le job d’une série de diagramme bien modélisé.

Ceci dit, la précision et l’universalité de UML en fond néanmoins un citoyen de première classe dès que l’on a besoin d’un système claire de modélisation.

Concretement, Martin Fowler a catégorisé le truc en 3 types d’utilisation:

Mode “Sketch”

Accent est mis sur la communication plus que sur la spécification. Le but principal est de communiquer un aspect du systeme, plus que de décrire le détail du fonctionnement.

Mode “Blue Print”

Ici l’accent est mis sur la spécification dans une optique d’implémentation du modèle. Le détail devient plus important soudainement.

Mode “Programmation”

La légende raconte que l’on peut traduire un schéma UML en code directement. Bizarrement c’est plus souvent le contraire qui a lieu. Ceci dit c’est le plus proche de vision originelle de UML mais bon… on est un peu dans le domaine de la prophétie perdu…

Outils pour l’UML

Gaphor

Gaphor est une application de modélisation UML (mais aussi SysML, RAAML et C4). Il est assez bien conçu et conforme avec UML 2.

Il est aussi multiplatformes, donc que vous soyez team Microsoft ou team Apple (ou bien avec les gens biens, sous linux) l’outils fonctionnera, ce qui est bien pratique quand on bosse en équipe.

Autres outils utiles

Excalidraw

Site : https://excalidraw.com/

Pour des dessins à main levée et schémas informels

Python

Pour l’implementation des examples modélisés sous forme de code concrets.

Site: https://www.python.org/downloads/

Diagramme de Classes

Schéma fondamentale en UML et très pratique pour communiquer la structure d’un modèle et par voie de conséquence, pour tout ce qui est base de données.

Ceci pour bien comprendre le diagramme, il faut comprendre le concept de classe et d’objet.

Classes et objets

Définitions

  • Classe
  • Objet
  • Interface ou Classe abstraite
  • Héritage de classe

    Aussi appelé “Généralisation”, ou “Dérivation” de classe.

    L’héritage est l’association entre deux classes permettant d’exprimer que l’une est plus générale que l’autre.

    L’héritage implique une transmission automatique des propriétés (attributs et méthodes) d’une classe mère A à une sous-classe fille B.

    Dire que B hérite de A équivaut à dire que B est une sous-classe de A. On peut également dire que A est une généralisation de B et que B est une spécialisation de A.

  • Composition

Un example qui roule

(il est pourri ce jeu de mot)

  • Classes : Véhicule

    • Attributs

      • Couleur
      • Vitesse maximale
      • matricule
      • prix de vente
    • Méthodes

      • Démarrer
      • Accelerrer
      • Freiner
  • Sous Classes : Camion, Voiture, Tracteur, Avion, Drone
  • Nouvelles méthodes

    • décoler/attérir
    • labourer
  • Objects

Héritage ou composition

  • Examples des marques de voiture

Exercices

Modelisation d’un cursus de formation

  • Le modèle classique
  • Un modèle est fonction de son application

Modélisation d’une bibliothèque

  • Paramètres

    • Les adhérents ont un prénom et un nom
    • La bibliothèque comprend un ensemble de documents et un ensemble d’adhérents.
    • Les adhérents sont inscrits ou désinscrits sur une simple demande.
    • De nouveaux documents sont ajoutés régulièrement à la bibliothèque.
    • Ces documents sont soit des journaux, soit des volumes. (heritage/composition)
    • Les volumes sont soit des dictionnaires, soit des livres, soit des BD.
    • Les documents sont caractérisés par un titre (chaîne de caractères).
    • Les volumes ont en plus un auteur. Les BD ont en plus un nom de dessinateur (chaîne de caractères).
    • Les journaux ont, outre les caractéristiques des documents, une date de parution (une date).
    • Seuls les livres sont empruntables.
    • Un adhérent peut emprunter ou restituer un livre.
    • Les adhérents peuvent emprunter des livres (et uniquement des livres) et on doit pouvoir savoir à tout moment quels sont les livres empruntés par un adhérent.
    • Un adhérent peut emprunter au plus 3 livres.
    • La date de restitution d’un livre emprunté est fixée au moment du prêt. Cette date peut être prolongée sur demande.
  • Solution

Modèlisation diverse

  • Ennoncés

    • Un répertoire contient des fichiers
    • Une pièce contient des murs
    • Les modems et claviers sont des périphériques d’entrée / sortie
    • Une transaction boursière est un achat ou une vente
    • Un compte bancaire peut appartenir à une personne physique ou morale
    • Les femmes et les hommes sont des humains, les humains et le chiens sont des mamifères

Agence de voyage

  • Ennoncee

    • Les compagnies aériennes proposent différents vols
    • Un vol est ouvert à la réservation et refermé sur ordre de la compagnie
    • Un client peut réserver un ou plusieurs vols, pour des passagers différents
    • Une réservation concerne un seul vol et un seul passager
    • Une réservation peut être confirmée ou annulée
    • Un vol a un aéroport de départ et un aéroport d’arrivée
    • Un vol a un jour et une heure de départ, et un jour et une heure d’arrivée
    • Un vol peut comporter des escales dans un ou plusieurs aéroport(s)
    • Une escale a une heure de départ et une heure d’arrivée
    • Chaque aéroport dessert une ou plusieurs villes

Composition ou Heritage

  • Ennoncé

    • les poissons, les chats et les chiens sont des animaux
    • les chiens aboients
    • les chats miaulent
    • tous les animaux mangent
    • un robots nettoyeur nettoie
    • un robot tueur tue
    • Comment faire un robot chien tueur?

Diagramme de sequence

Exercices

DAB

Le déroulement normal d’utilisation d’un distributeur automatique de billets est le suivant :

  • le client introduit sa carte bancaire
  • la machine vérifie alors la validité de la carte et demande le code au client
  • si le code est correct, elle envoie une demande d’autorisation de prélèvement au groupement de banques. Ce dernier renvoie le solde autorisé à prélever.
  • le distributeur propose alors plusieurs montants à prélever
  • le client saisit le montant à retirer
  • après contrôle du montant par rapport au solde autorisé, le distributeur demande au client s’il désire un ticket
  • Après la réponse du client, la carte est éjectée et récupérée par le client
  • les billets sont alors délivrés (ainsi que le ticket)
  • le client récupère enfin les billets et son ticket

Fleuriste

On souhaite gérer les différents objets qui concourent à l’activité d’un magasin de vente de fleurs:

  • Le client demande au vendeur des renseignements sur les compositions florales
  • Le vendeur lui fournit toutes les informations nécessaires
  • Le client commande alors la composition de son choix et le vendeur émet le bon de fabrication qu’il transmet à son ouvrier fleuriste.
  • Le vendeur édite ensuite la facture correspondante.
  • L’ouvrier fleuriste crée la composition puis archive le bon de fabrication
  • Il remet alors la composition au vendeur
  • La facture est remise au client pour règlement une fois le bouquet réalisé
  • Une fois la facture réglée, le client récupère sa composition et quitte le magasin.

Code, solutions et illustration - disponible sur github

Note de fin: ceci est un travail en cours et des mises à jour régulières sont réalisées