UML : langage graphique de modélisation

Fiche ressource Article, événement, site web...
  • Création ou MAJ importante : 06/07/09
  • Correction mineure : 19/04/13
Mots-clés

UML : langage graphique de modélisation

  • http://www.uml.org/
  • Type de ressource : article
  • Date de publication du document ou de l'événement : Juin 2009
  • Auteur(s) ou responsable(s) : Laurent Perochon (INRA)
  • Contact pour plus d'informations : laurent.perochon@clermont.inra.fr

Unified Modeling Langage : UML

Historique

Au début des années 90, une cinquantaine de méthodes d'analyse et de conception objet existaient. Parmis elles, trois étaient considérées comme les plus importantes : BOOCH de Grady Booch, OMT de James Rumbaugh et enfin OOSE d'Ivar Jacobson. Ces trois auteurs ont ensuite décidé d'unir leurs efforts au sein de la société Rational Software et en 1996 la version 0.9 d'Unified Modeling Langage (UML) est proposée. Deux éléments importants sont à noter : 1) le terme unified signifie que les auteurs ont essayé de regrouper les éléments importants des concepts objets, 2) le terme langage montre qu'il s'agit d'un langage de modélisation et non d'une méthode! Les principaux acteurs du secteur informatique ont ensuite participé à cet effort, et UML 1.0 a été proposé à l'Object Management Group (OMG). Cet organisme international chargé de définir des standards dans le domaine de l'objet normalise UML 1.1 en 1997. Cette norme a depuis continué d'évoluer et nous en sommes aujourd'hui à la norme 2.2 sortie en le 02/2009. UML est un langage qui permet de modéliser non seulement des applications informatiques ou des structures de données, mais également les activités d'un domaine : mécanique, biologie, processus métier ...

UML en bref

Ce langage est tout d'abord graphique et basé autour d'entités et de relations. Contrairement à d'autres formalismes reposant sur un seul type de diagramme, tel que par exemple celui des systèmes dynamiques de J. Forrester (http://www.hypergeo.eu/spip.php?article384), un modèle est ici représenté selon différents aspects, chacun à l'aide d'un type de diagramme particulier. Il peut être utilisé aussi bien durant les phases d'analyse, de conception, ou d'implémentation. Enfin, ce langage n'est pas formel. Certains termes sont flous, voir peuvent être considérés comme redondants. Certains y voient une facilité permettant de mieux modéliser les systèmes, d'autres une lacune. UML permet de modéliser des comportements synchrones et asynchones, cette modélisation est parfois complexe car elle n'est pas formelle. C'est le cas des systèmes temps réels qui utilisent souvent l'approche synchrone et asynchrone, la compréhension est parfois complexe et demande une certaine pratique pour la rédaction des diagrammes de séquence et des machines à état. Dans les projets complexes, il devient indispensable d'utiliser des outils de simulation afin de comprendre le cas nominal et les cas dégradés.

Les diagrammes

Ils sont au nombre de treize, de 3 types : - les diagrammes de structure : diagramme de classe, diagramme composite, diagramme de composants, diagramme de déploiement, diagramme d'objets, diagramme de package - les diagrammes de comportement : diagramme d'activité, diagramme de cas d'utilisation, diagramme d'état-transition - les diagrammes dynamiques : diagramme de séquence, diagramme de communication, diagramme global d'interaction, diagramme de temps Les diagrammes les plus utilisés sont les suivants : cas d'utilisation, diagramme de séquence, diagramme de classe, diagramme de package, diagramme composite, diagramme d'état-transition. Certains utiliseront UML durant tout le cycle de développement du logiciel, d'autres seulement durant une certaine partie.

Les principaux diagrammes

Il s'agit des diagrammes les plus fréquemment utilisés. Comme les exemples d'utilisation d'UML dans le domaine informatique sont nombreux, il a été choisi ici d'utiliser des domaines différents.

1) Le diagramme de cas d'utilisation

En ingénierie informatique, ce diagramme est principalement utilisé durant l'analyse des besoins. Il définit les principales fonctionnalités (cas d'utilisations) que le logiciel fournit à des types d'utilisateurs. D'un point de vue plus général, il montre les interactions entre un système et son environnement. L'exemple (A. Lisec et al. 2008) montre les types d'acteurs (les personnages) et les cas d'utilisation (ovales). Un type d'acteur peut-être un humain, un système informatique externe, un système biologique ....

diagramme de cas d'utilisation

Diagramme de cas d'utilisation dans le domaine de la vente

2) Le diagramme de classe

Ce diagramme décrit la structure du logiciel. Les entités (classes) et leurs liens (associations) sont décrits. L'exemple (J.L. Drouet et L. Pagès, 2003 et 2007) montre l'évolution d'un modèle grâce à deux diagrammes de classes. Les croix indiquent la suppression de classes comparé à la deuxième version (à droite) et la ligne verticale marque le découpage effectué qui n'existait pas dans la première version.

diagramme de classe

Evolution d'un modèle mis en évidence par diagrammes de classes

3) Le diagramme d'activité

Met l'accent sur la modélisation des comportements. L'exemple (L. Pérochon et al. 12001) présente pour une seule entité l'ensemble des activités qu'elle peut réaliser. On peut aussi montrer sur un même diagramme plusieurs entités en interaction.

diagramme d'activite

Diagramme d'activités d'un agent animal (système multi-agents)

4) Le diagramme d'état-transition

Il s'agit d'une variante orientée objet des diagrammes de Harel (statecharts). Un état représente une situation dans laquelle se trouve un élément du modèle, par exemple une instance. Une situation peut être dynamique, comme lorsqu'une activité est réalisée, ou statique comme l'attente d'un signal. L'exemple (A. Lisec et al, 2008) permet de comparer les états de deux animaux : le rat et la puce.

diagramme d'états-transitions

Comparaison des états de deux animaux par diagramme d'état-transition

5) Le diagramme de séquence

Décrit les séquences d'échanges au cours du temps entre instances. En phase d'analyse des besoins, on l'utilise pour montrer les échanges entre un acteur et le système. L'exemple (C. Linard et al., 2009) montre l'envoi de messages (flèche) entre instances (rectangle).

diagramme de sequence

Interaction entre un acteur et son environnement par diagramme de séquence (multi-agents)

Pour aller plus loin

Références bibliographiques

Informatique

L. Doldi. UML2 Illustrated, Developing Real-Time and Communication Systems. TMSO

J. Gabay et D. Gabay. UML 2 Analyse et Conception. Mise en oeuvre guidée avec études de cas. Dunod. 226 p. 2008.

P. Roques et G. Renault. UML2 par la pratique: Etudes de cas et exercices corrigés. Eyrolles. 367 p. 2008.

J. Rumbaugh, I. Jacobson, G. Booch. UML 2.0 Guide de référence. Campus Press. 774 p. 2004.

Autres domaines

L. Debrauwer et F. V. der Heyde. UML2. Initiation, exemples et exercices corrigés. Ed. ENI. Coll. Informatique Technique. 274 p. 2005

J.L. Drouet et L. Pagès . 2003. GRAAL : a model of the Growth, Architecture and carbon Allocation during the vegetative phase of the whole maize plant . Model description and parameterisation. 2003. Ecological Modelling, 165 pp. 147-173.

J.L. Drouet et L. Pagès . 2007. GRALL-CN: A model of the Growth, Architecture and Allocation for the Carbon and Nitrogen dynamics within whole plants formalised at the organ level. Ecological Modelling, 206 pp.231-249.

C. Linard, N. Ponçon, D. Fontenille, E. F. Lambin. 2009. A multi-agent simulation to assess the risk of malaria re-emergence in southern France. Ecological Modelling 220, pp. 160-174.

A. Lisec, M. Ferlan, F. Lobnik, R. Sumrada. 2008. Modelling the rural land transaction procedure. Land Use Policy, 25 pp. 208-297.

P. J. Papajorgji et P. M. Pardalos. Software engineering Techniques Applied to Agricultural Systems. An Object-Oriented and UML Approach. Springer. Applied Optimization. 247 p. 2006

L. Pérochon, P. Carrère, R. Baumont, B. Dumont, C. Mazel, C. Force, D.R.C. Hill, P. D’Hour, F. Louault, S. Prache, J.F. Soussana, M. Petit. Design of a spatial multi-agent model of a perennial grassland ecosystem grazed by a herd of ruminants. ESS01. 13th european simulation symposium. Simulation in industry. SCS, pp. 509-513. 2001.

Etendre UML (stéréotype / profils)

Il est possible de spécialiser UML à un domaine particulier à travers un profil.

Un profil UML est un ensemble cohérent de stéréotypes et de règles dédiés à un aspects métier ou technique

L'OMG a normalisé ou est en train de concevoir les profils suivants :

OMG Systems Modeling Language (SysML); PIM and PSM for Smart Antenna; UML Profile for CORBA®; UML Profile for CORBA® Component Model (CCM); UML Profile for CORBA®  & CORBA® Component Model (CCCMP); UML Profile for Data Distribution; UML Profile for Enterprise Application Integration (EAI); UML Profile for Enterprise Distributed Object Computing (EDOC); UML Profile for Modeling and Analysis of Real-time and Embedded Systems (MARTE); UML Profile for Modeling QoS and Fault Tolerance Characteristics and Mechanisms; UML Profile for Schedulability, Performance and TimeUML Profile for Software Radio; UML Profile for System on a Chip (SoC); UML Profile for VoiceUML Testing Profile.

D'autres profils sont développés par ailleurs. Ce mécanisme est utilisable par tous.

Détail pour deux de ces profils

OMG SysML pour la conception de systèmes: Il constitue un moyen de rassembler dans un même modèle commun à tous les corps de métier impliqués, les spécifications, les contraintes et les paramètres de l’ensemble du système.

 UML Profile for Enerprise Application Integration (EAI) fournit une norme d’échange de méta-données pour des informations sur des Interfaces Homme Machine d’accès à des applications. L’objectif est de faciliter l’intégration d’applications en normalisant des ùéta-données d’applications pour appeler et échanger des informations entre applications.

Quelques outils

Liste de logiciel

  • http://uml.developpez.com/outils/
  • http://www.objectsbydesign.com/tools/modeling_tools_fr.html
  • http://www.objectsbydesign.com/tools/umltools_byProduct.html
  • libres (100 % licence GPL ou EPL) 

    BoUML (linux, windows)  http://bouml.free.fr/

    Open ModelSphere (windows) http://www.modelsphere.org/fr/open_modelsphere.html

    Umbrello UML Modeller (Linux) http://uml.sourceforge.net/

    Plugins Eclipse (Eclipse tourne sous windows ou linux) http://www.eclipseplugincentral.com/ sous partie UML

    Papyrus et topCased UML Editor (vont fusionner, Eclipse)

    UMLet-Fast UML  Editor (Eclipse)

    Violet UML Editor for Eclipse (Eclipse)

    Outils commerciaux (certains tournent aussi sous Eclipse)

    A noter : pour l'enseignement, certains offrent des conditions avantageuses voir la gratuité

    MagicDraw http://www.magicdraw.com/

    Plugin UML sous NetBeans (linux, windows) Fiche Plume

    Objecteering (Softeam) http://www.objecteering.com/

    Poseidon (Gentleware) http://www.gentleware.com/

    Simulateur UML TAUG2  http://www.telelogic.fr

    Rational Software Modeler (IBM) http://www-01.ibm.com/software/awdtools/modeler/swmodeler/

    Together (Borland) http://www.borland.com/us/products/together/index.html

    Visual Paradigm http://www.visual-paradigm.com/news/vpsuite40/vpuml70.jsp

     

    Utilité de ces logiciels

    Tout d'abord, ils permettent de pouvoir gérer efficacement tous les éléments créés en UML. Ceux-ci sont en effet trés nombreux, et une aide pour assurer une cohérence d'ensemble est bienvenue. A partir de ces outils, on peut générer un squelette du futur code source. Par squelette il faut entendre les noms des classes, méthodes, attributs, associations provenant principalement des diagrammes de classe. Il faudra ensuite compléter directement dans le code les parties manquantes (par exemple le contenu des méthodes). Une autre possibilité pouvant être offerte est la retro-ingénierie (ou ingénierie inverse), qui permet à partir d'un code source de générer des diagrammes de classe. Certains logiciels permettent d'aller plus loin avec par exemple des diagrammes de séquence montrant les échanges entre classes obtenus à partir de l'activation d'une méthode donnée. Parmis les langages couverts par ces différentes possibilités, on peut noter principalement Java et C++. On touche ici une des limites de ces outils. En effet, les modifications futures du code source se feront directement sur lui et non dans les diagrammes UML, d'ou une perte de cohérence entre diagrammes et code, qui risque de s'accentuer avec le temps. Avec la retro-ingénierie on peut conserver cette cohérence, mais uniquement à un même niveau d'abstraction : celui du code source. Les premiers diagrammes UML obtenus durant l'analyse, de plus haut niveau d'abstraction, ne seront eux pas mis à jour automatiquement. Il reste donc la possibilité de les modifier soi-même, ou alors d'adopter une démarche d'ingénierie dirigée par les modèles (J.M. Favre et al. 2006). Model Driven Architecture (MDA) est la solution proposée par l'OMG (X. Blanc 2005).

    X. Blanc. 2005. MDA en action. Ingénierie guidée par les modèles.Eyrolles. 269 pages.
    J.M. Favre, J. Estublier, M. Blay-Fornarino. 2006. L’ingénierie dirigée par les modèles. Au-delà du MDA. Lavoisier. 227 pages.

    Les méthodes de gestion de projet

    L'OMG laisse à chacun libre choix de la méthode à utiliser. Voici donc quelques liens permettant de rechercher votre méthode idéale (si elle existe) :

    Commentaires

    Responsable thématique précédent

    Cette fiche a d'abord été suivie par le responsable thématique Frédéric Camps. David Rousse l'a reprise en avril 2013.

    Méthodes - Génération de code

    Synthèse tout à fait claire et précise pour présenter le concept.

    2 petites remarques :
    - Par "méthodes" (rubrique méthode) vous entendez je pense "méthodes de gestion de projet".
    - Il serait peut-être utile d'indiquer que certains logiciels permettent à partir d'un "diagramme des classes" de générer le squelette du programme correspondant (en C++, Java ...) de la même façon que certains logiciels permettent de créer les tables relationnelles (en SQL) à partir d'un modèle de données.

    prise en compte de cette remarque

    merci pour ce commentaire, une mise à jour vient d'être réalisée en ce sens.

    Autre fiche PLUME