Comme indiqué à la séance 7, la version actuelle d’UML est constituée de 14 diagrammes, que l’on peut scinder en 3 grands groupes :
les diagrammes structurels, qui définissent les différents éléments qui constituent votre application,
les diagrammes de comportement, qui définissent comment ces éléments se comportent tout au long de l’application,
les diagrammes d’interaction, qui définissent comment les éléments interagissent entre eux.
Nous avons vu un diagramme de chacun de ces groupes.
perspective conceptuelle des classes intervenant dans le logiciel.
représentation des instances de classes utilisées dans le logiciel.
représentation des composants du système d’un point de vue physique, tels qu’ils sont mis en œuvre (fichiers, bibliothèques, etc.).
gestion des dépendances entre packages.
représentation des éléments physiques (ordinateurs, périphériques, etc.) et la manière dont les composants du système sont répartis sur ces éléments matériels et interagissent entre eux.
représentation des relations entre composants d’une classe.
Diagramme de profil (Profile diagram)
représentation des interactions possibles entre le système et les acteurs (intervenants extérieurs au système).
représentation sous forme de flux ou d’enchaînements d’activités du comportement du système ou de ses composants.
représentation sous forme de machine à états finis du comportement du système ou de ses composants.
représentation séquentielle des traitements et des interactions entre les éléments du système et/ou ses acteurs.
représentation simplifiée d’un diagramme de séquence
représentation des enchaînements possibles entre les scénarios identifiés sous forme de diagrammes de séquences.
représentation de l’évolution d’une donnée au cours du temps.
On peut décomposer l’élaboration d’une application en 4 grandes phases :
Ici, on s’intéresse au « quoi faire » et non au « comment faire ». Il s’agit donc de déterminer quels sont les acteurs exploitant l’application et, surtout, leur buts. On va ainsi déterminer les grandes fonctionnalités de l’application.
Les diagrammes UML utiles pour cette phase sont, en particulier :
les diagrammes de cas d’utilisation,
les diagrammes de séquences « systèmes »,
les diagrammes d’activités.
Ici, on essaye de déterminer les classes de l’application, leurs relations et leurs attributs. On décrit les abstractions et les informations essentielles du domaine.
Les diagrammes UML utiles pour cette phase sont, en particulier :
les diagrammes de classes,
les diagrammes d’objets.
Ici, on détermine les méthodes, les types, les dépendances entre packages. On décrit les interactions entre objets et les sens de navigabilité (un objet dépend d’un autre mais pas inversement).
Les diagrammes UML utiles pour cette phase sont, en particulier :
les diagrammes de packages,
les diagrammes d’interactions.
Ici, on s’appuie beaucoup sur les diagrammes de classes et de séquence afin de coder l’application. Attention : on ne débute pas le codage avant de savoir précisément ce que l’on doit coder, autrement dit avant que les diagrammes mentionnés ci-dessus soient bien clairs !
Les design patterns (on dit aussi patrons en français) sont des solutions générales, flexibles, éprouvées et bien connues pour résoudre des problèmes récurrents en programmation. Ils sont indépendants du langage de programmation objet que vous utilisez. C’est pourquoi ils sont assez incontournables.
Le « Gang of Four » (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) a formalisé 23 patrons dans un livre best-seller :
On peut séparer ces design patterns en plusieurs catégories. Ici, j’en ai choisi 3 :
dont le but est de permettre de construire des objets complexes répondant à certaines spécifications ou contraintes. Parmi ces design patterns, on trouve :
dont le but est de structurer des objets complexes :
dont le but est d’étendre le comportement, les fonctionnalités, d’objets ou, tout simplement, de rendre certaines fonctionnalités possibles :
Les design patterns indiqués en rouge sont ceux décrits dans les séances suivantes.
Une référence utile avec plein d'exemples et d'explications : Refactoring Guru.