![]() |
Thierry Cros Diagrammez vos modèles UML ! |
| | Accueil | Extreme Programming | UML, Objet | Formation | Consulting | Liens | Contact | |
|
Le Unified Modeling Language (UML) est, son nom l'indique clairement, un langage de modélisation. Il définit des concepts (objet, classe, message...) et des formalismes de représentation de ces concepts (un rectangle comportant un label souligné pour un objet, une flèche pour un message...). Ces formalismes qui représentent des éléments de modélisation sont groupés dans des diagrammes. Éléments de modélisation et diagrammes sont eux-mêmes organisés en paquetages. Si la modélisation elle-même est une activité technique, son résultat apparaît sous forme de diagramme et cet article porte sur la qualité de cette mise en diagramme ou "diagrammisation" du modèle. Comment bien "diagrammer" ? Comment organiser les diagrammes dans les modèles, quels diagrammes prendre la peine de créer, modifier, via le modeleur UML ? Cet article présente quelques éléments de réflexion. Il est complémentaire de la profession de foi d'un diagramme UML.
Quelques définitionsAvant tout, il est nécessaire de bien comprendre ce que manipule l'UML. Concepts, éléments de modélisation, formalismes sont à la fois distincts et reliés. Vous pouvez passer ce chapitre si vous êtes familier de l'UML.
Refactoring de modèleUML pour penser l'expression de besoins par les interactions ou bien une conception par les objets entr'autres est bien plus efficace dans une mise en oeuvre collective, au tableau. Si les éléments de modélisation sont d'ores et déjà présents dans le modèle, l'amélioration de sa "diagrammisation" correspond d'une certaine manière à un refactoring.^ ^ haut ^ ^ Différents types de diagrammesDétaillons ici les diagrammes proposés succinctement dans la profession de foi d'un diagramme UML.Inter et Intra-paquetageSupposons le modèle relativement abouti. Il est probablement organisé en paquetages, au moins un niveau. L'empaquetage dépend du modèle, de la culture des parties prenantes, etc. Il devrait toutefois préserver la facilité de maintenance : ce qui change ensemble est empaqueté ensemble. Alors, il est important de décrire le contenu de chaque paquetage mais aussi les relations entre éléments de paquetages différents. Prenons le cas d'un modèle d'expression de besoins par les cas d'utilisation. Ce modèle est organisé d'après un critère général d'empaquetage des acteurs et cas d'utilisation (les éléments de modélisation les plus importants dans ce modèle). Un critère pourrait être la priorité ou bien l'acteur déclenchant, ou encore une fonctionnalité de haut niveau du système. L'un des paquetages est destiné à recevoir les cas d'utilisation "crabe" et destination de relations de dépendance <<include>> par exemple (cas classique des interactions de Connexion/Déconnexion). Dans un tel modèle, nous trouverons les diagrammes "intra" ie intra-paquetages (à différents niveaux, voir le paragraphe suivant) et des diagrammes "inter" (inter-paquetages de cas d'utilisation) qui décrivent les relations <<include>> citées au-dessus, donc entre cas de différents paquetages.Général et détailléUn modèle comporte des éléments de modélisation qui se situent à différents niveaux. Une classe et ses relations (association...) forment le niveau général ; les attributs, opérations, responsabilités forment le niveau détaillé.Statique-Permanent et DynamiqueUne modélisation objet repose sur ces deux piliers. Le modèle sera d'autant plus pertinent qu'il sera visualisé par ces deux types fondamentaux de diagrammes, par exemple des diagrammes de collaboration et des diagrammes de classes. Nous sommes ici à la frontière entre la modélisation elle-même et sa diagrammisation. ^ ^ haut ^ ^Le modeleur : une problématiqueLe modeleur est un outil incontournable dans la mesure où les résultats de la modélisation doivent être communiqués par électronique. Si cet outil automatise la production de diagrammes, tout en vérifiant des règles "métier" ie les règles sémantiques et syntaxiques de l'UML, il doit faire face à des scénarios d'utilisation générateurs d'ambiguïté. Précisons cet aspect des choses. Pour fixer les idées, quelques questions :
Il est donc très important de "tester" l'outil avant son utilisation en production de diagrammes. En particulier, reprendre les questions soulevées au-dessus pour mieux comprendre son fonctionnement. Un autre aspect directement lié à l'outillage est la relation qu'il établit entre diagrammes, paquetages et éléments de modélisation. Comment sont-ils liés ? Comment retrouver un diagramme ? Son titre apparaît-il automatiquement lors d'une impression ? Est-il facile de naviguer entre diagrammes qui visualisent un même élément ? Autant de caractéristiques qui facilitent ou non la diagrammisation du modèle. ^ ^ haut ^ ^Bien diagrammer un modèleQuelques principesLa mise en diagramme s'attache à faciliter la lecture du modèle, à différents niveaux. Pour cela, établissons quelques principes.
L'organisation du modèle repose sur des paquetages. Si UML v2 crée le diagramme de paquetages, celui-ci est tout simplement une modulation du diagramme structurel statique de la v1, à tort systématiquement réduit au "diagramme de classes". Notez que les relations entre paquetages sont essentiellement : la dépendance (typiquement <<import>> ou bien l'inclusion. Ainsi, un diagramme de paquetages en tout début offre une vue "top-down" souvent bienvenue. Les recommandations proposées dans la profession de foi d'un diagramme UML s'appliquent naturellement à la diagrammisation. Notons que, comme pour tout principe, certaines exceptions surviennent parfois. Citons une équipe, qui souhaite absolument afficher l'ensemble des classes persistantes du modèle de conception. Point trop n'en fautSi un modèle précis et détaillé peut être une demande légitime en début de développement, la maintenance de cet artefact reste une question centrale. Plusieurs solutions ont été mises en oeuvre. De l'obsolescence programmée du modèle à la volonté de représenter uniquement les éléments les plus stables car de plus haut niveau, les équipes s'adaptent à cette situation. Une astuce consiste à reprendre la date dans le diagramme, ou bien à tracer les diagrammes depuis les spécifications par exemple. Un point à retenir est que tout développeur fera plus confiance au code officiel qu'au modèle UML. Cela revient à se poser la question de la modélisation et de sa documentation, pour qui, pourquoi.Un exempleSupposons un modèle de conception ou d'analyse, architecturé en trois paquetages . Supposons encore que chaque paquetage contient une quinzaine d'éléments de modélisation principaux (ici des classes). Par ailleurs, la conception s'inscrit dans un pilotage par les scénarios et les développeurs ont modélisés quelques collaborations dans deux paquetages (un par cas d'utilisation) d'une dizaine de collaboration.Les aspects statique et dynamique sont traités dans les paquetages : collaboration pour la dynamique, classes pour le statique. Combien de diagrammes pour visualiser correctement ce modèle ? Une possibilité est :
En conclusion...Et vous, comment diagrammez-vous vos modèles UML ? Est-ce l'outil qui décide pour vous ? Quel feedback de la part de vos lecteurs ? Quel est le look général de vos diagrammes ? Agréables à l'oeil ? Envie de les étudier ?Cet article se veut catalyseur de votre réflexion, le crayon est entre vos mains ! Révisions ^ ^ haut ^ ^ Retour page d'accueil © Thierry Cros, 2005 - Contact |