avril
2014
UML est le langage canonique de tous les langages de programmation, il vous fournis le moyen de schématiser votre système et par conséquent de l’optimiser.
Un système informatique possède plusieurs dimensions, UML fourni des outils pour les appréhender.
La programmation orientée objet
La programmation orientée objet est une simplification de la réalité, si on veut programmer une course de chevaux, les classes qui serviront à définir les chevaux se limiteront à la vitesse et l’endurance tandis que si on voulait programmer une simulation de chevaux de trait alors cette définition porterait sur l’endurance et la force.
D’abord il y a les classes abstraites et concrètes, les interfaces, les variables statiques de classe, la données membres et les méthodes
Avant d’aborder l’héritage il faut savoir qu’il est souvent mal employé, il est fortement recommandé d’utiliser la composition faible (ou agrégation) et la composition forte selon les circonstances, par exemple une classe « corps de cheval » aura une composition forte avec une classe tête de cheval mais aura une composition faible avec une classe « scelle de cheval »
L’héritage peut subir des contraintes de type « complete/disjoint » – Par exemple une classe poulin male héritant d’une classe étalon et jument – ou « incomplete/overlap » – dans el cas d’une classe mulet héritant d’une classe cheval et d’une classe âne.
La surcharge permet de définir plusieurs fois une même méthodes afin de prendre en charge des paramètres différents à l’opposé du polymorphisme qui pour une même méthode redéfinit son corps mais pas ses paramètres changeant ainsi son comportement, la méthode « caresser » de la classe de mère cheval aura une réaction différente selon que la classe fille est « cheval sauvage » ou « cheval domestique »
Une classe est composée d’un nom, d’attributs et de méthodes
Les attributs et méthodes ont une visibilité:
# = protégeé
+ = publique
– = privée
Il existe aussi des méthodes et attributs dit de classe, qui existent en dehors des instances de la classes (appelée aussi méthodes statiques)
Diagramme de cas d’utilisation
Les diagramme de cas d’utilisation ou use cases en anglais servent à schématiser la partie fonctionnelle de votre application, soit le point de vue du client
Les éléments du schéma sont: l’acteur, le système, les parties du système, et les dépendances entre les différentes parties du système soit par inclusion soit par extension (facultative), et les actions/interactions type appelle/réponse, numérotées 1, 1.2, 2.1, 2.2 …
Lorsque vous discutez avec la cellule de test ou le personnel du produit, c’est ce niveau de lecture qui est en jeu
De tout ceci découlera un tableau qui présente le système, les conditions nécessaire au fonctionnement du système, les actions/interactions ainsi que leurs conditions de réalisation, ce qui finalement constitue la base d’un cahier des charges.
Combine à la fois diagramme de classes, de séquence et de cas d’utilisation
Il s’agit d’une représentation graphique à deux dimensions action/temps
C’est un diagramme qui représente les communications ordonnées dans le temps entre les différents objets du logicielle
C’est une sorte de diagramme de cas d’utilisations mais a un niveau de lecture développeur.
Grâce à lui on peut aller à la découverte des objets du système et de leur interractions
On pourrait schématiser une page web basique en définissant:
Un objet javascript qui communique en ajax asynchrone (flèche simple) avec un script php
Le script php qui communique en synchrone avec un objet base de données (flèche noire)
Diagramme d’associations/Relations
Les diagrammes de relations permettent de montrer de façon simple le type et le nombre de relation qu’on un ou plusieurs objets du système entre eux
Ici on parle de relation *, 1.1, 1.N, ou N.N
Les contraintes y sont aussi consignées en langage ocl
Diagramme de structure composite
Les diagrammes de structure composite permet de visualiser la collaboration entre objets du système
Les éléments de ce diagramme sont
les parties, par exemple dans le cas d’une voiture ça peut être volant, arbre gauche, arbre droit, et roues
Les ports, représentés par des carrés, ce sont les points d’interconnexion des différents connecteurs du système, par exemple dans le cas d’une voiture la transmission
Les connecteurs: Relies les parties entre elles via les ports
Les compositions faibles ou agrégations sont représentées par un carré hachuré, les composition fortes par des carrés pleins
Ce type de diagramme permet de créer des pattern, comme le composite pattern qui schématise la structure arborescente d’un système de fichier
Ce type de diagramme schématise toutes les étapes fonctionnelles de l’application, depuis son début à sa fin
On peut y inclure des diagrammes de séquences qui se prête bien à l’exercice pour détailler certaines parties
Des notions de couloir permettent de séparer deux entités précédemment lié, par exemple pour une course de cheval pendant un saut, on peut séparé le comportement du cavalier et du cheval
Un composant est une applications qui regroupe plusieurs classes et qui est accessible par des connecteurs d’entrées et qui accède à d’autre composant par des connecteurs en sortie
Les package sont des librairies, des collections de classes, on y accède de deux manières:
par importation: le contenu est rapatrié en local avant d’être utilisé, typiquement quand vous faites un include dans vos programme
par accès: le contenu est accessible à distance, quand vous faites du soap ou du REST par exemple
Ultime étape dans la finalisation d’un logiciel, ce type de diagrammes décrit la répartition physique de l’application sur les différents serveurs
Ce diagramme est composé de noeuds pouvant inclure des composants reliés entre eux par des relations de dépendances
Conclusion
Les différentes dimensions proposées par UML aident à maîtriser une application durant tout son cycle de vie, l’abstraction fournie permet quant à elle une aide à la décision sur le choix de la technologie à utiliser, enfin le schématisation permet de visualiser les faiblesses du logiciel pour y apporter les optimisation nécessaires,