UMLAUT : un outil de manipulation de
modèles UML
Participants : Jean-Marc
Jézéquel, Wai Ming Ho, Alain Le Guennec, François
Pennaneac'h, Gerson Sunye, Séverine Simon, Katia Vinceller,
Hanh Vu Le.
Mots clés : UML, composant, patterns,
validation .
Résumé :
De nombreux Ateliers de Génie Logiciel
(AGL) pour UML permettent aux
ingénieurs logiciels de tracer des diagrammes et de générer
des squelettes de code à partir de ceux-ci. Mais souvent
les utilisateurs avertis voudraient faire plus de chose
avec leurs modèles UML, comme par exemple
appliquer des design patterns spécifiques, générer du code
pour des systèmes embarqués, simuler des aspects
fonctionnels ou non fonctionnels du système, ou encore
passer des outils de validation sur le modèle ;
activités difficiles à mener en utilisant les facilités de
script offertes par la plupart des
AGL.
UMLAUT (UML Automatic
Universal Transformations) est un framework de
transformation de modèles (dont le coeur est développé dans
le cadre de la CTI Cnet
MetaFOR) permettant d'appliquer des
manipulations complexes à un modèle UML. Ces
manipulations sont exprimées comme des compositions
algébriques de transformations élémentaires réifiées. Elle
sont donc extensibles au travers des mécanismes classiques
d'héritage et d'agrégation. UMLAUT est
utilisé en particulier dans le cadre du projet
RNRT Oural pour transformer le modèle
UML d'une application répartie en un système
de transitions étiquetées ; dans l'objectif de le
valider avec des outils avancés de validation de protocoles
(e.g. TGV). UMLAUT est aussi
utilisé, dans le cadre du projet RNRT
Convergence, pour prototyper de futures évolutions
d'UML telles que discutées actuellement à
l'OMG.
UMLAUT a été déposé par l'Inria à
l'Agence de Protection des Programmes en 1999. Des versions
de démonstration pour Linux, Solaris et Windows
NT sont librement disponibles depuis le site
web de l'équipe (http://www.irisa.fr/pampa).
La notation UML ( Unified Modeling
Language) est issue des travaux de Booch, Rumbaugh et
Jacobson, auteurs des méthodes de développement à objets
parmi les plus utilisées (les méthodes Booch,
OMT et OOSE).
UML est le successeur commun de ces trois
méthodes, dont elle reprend la plupart des concepts et
notations, dans un souci d'unification. Le manque
d'uniformisation, les difficultés à communiquer entre outils
constituaient en effet un frein au déploiement des méthodes
de développement à objets. Il était donc souhaitable de créer
un langage commun convenant à la modélisation des systèmes
informatiques, mais également suffisamment générique pour
prendre en compte des problèmes d'autres domaines.
Contrairement à ces prédécesseurs, UML impose
un langage (en cours de normalisation par
l'OMG), mais laisse libre le choix du
processus de développement associé.
La principale particularité de la notation
UML réside dans sa base formelle appelée
méta modèle : la sémantique des concepts
manipulés par la notation UML est décrite en
utilisant la notation elle-même. Cela a pour conséquence
l'amélioration de la correction des modèles (suppression des
ambiguïtés et des incohérences), et permet d'envisager
l'utilisation de techniques formelles à des fins de
vérification/validation, les éléments d'un modèle devant
respecter les propriétés et contraintes définies dans le
méta-modèle.
L'outil UMLAUT vise à montrer la validité
d'une telle approche. Cet outil intègre le méta-modèle
UML et fournit un ensemble de facilités
permettant de raisonner sur des modélisations
UML. Il s'agit en fait d'un véritable
framework de transformation de modèles permettant d'appliquer
des manipulations complexes à un modèle UML.
Ces manipulations sont exprimées comme des compositions
algébriques de transformations élémentaires réifiées. Elle
sont donc extensibles au travers des mécanismes classiques
d'héritage et d'aggrégation.
Les modèles sont fournis à l'outil soit à l'aide d'une
interface graphique (implantée en Java avec Swing), soit dans
un format d'échange comme CDIF (Case Data
Interchange Format) ou XMI (le format
normalisé par l'OMG d'échange de modèles
UML sur la base de XML), ou
encore un format ``propriétaire'' comme celui de Rational
Rose (en cours de développement).
L'outil accepte également en entrée des sources de
programmes Java ou Eiffel, afin de reconstruire
automatiquement les modèles UML correspondants
( reverse-engineering).
UMLAUT intégrant le méta-modèle
UML, il est possible de réaliser simplement
des transformations de modèles définies par un ensemble de
règles fournies par l'utilisateur. Dans le cadre du projet
RNRT Oural, nous avons commencé à appliquer
cette idée pour transformer le modèle UML
d'une application répartie en un système de transitions
étiquetées ; dans l'objectif de le valider avec des
outils avancés de validation de protocoles.
UMLAUT est aussi utilisé, dans le cadre du
projet RNRT Convergence, pour prototyper de
futures évolutions d'UML en ce qui concerne un
langage d'actions (ASL) telles que discutées
actuellement à l'OMG.