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
-
Que choisir?
Références
- Composition vs. Inheritance: How to Choose? par Steven Lowe
- Composition over Inheritance par Fun Fun Function
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