Génération de code Java à partir d`un diagramme de classes UML

publicité
Génération de code Java
à partir d'un diagramme de
classes UML
Cedric Dumoulin
Objectifs
package mypackage;
import java.util.Date;


Modéliser les classes
dans des diagrammes
de classes UML
Générer le code Java
(squelette des
classes) à partir du
modèle UML
/**
*
*/
public class Person {
/** Name property */
protected String name;
/** birthday property */
/**
protected Date birthday;
*
/** Address property */
*/
protected Address address;
public class Address {
package mypackage;
/**
/** The town property */
*
protected String town;
* @return int
/** The town property */
*/
protected String street;
public int getAge() {
/** The town property */
return 0;
protected String zipcode;
}
}
}
Principe de l’application



Utilise une approche Ingénierie Dirigé par les Modèles
(IDM)
Les diagrammes de classes sont définit dans Papyrus
(modeleur UML)
Passe par un modèle Java intermédiaire


définit en EMF : permet de générer les classes Java pour
manipuler le modèle + import/export xml
Génère le texte à l’aide de template Acceleo
modèle UML
code Java
modèle Java
transfo
.UML
génération
Address.java
.mjava
code Java
QVTo
Acceleo
Person.java
Déroulement du projet

1ere partie


2éme partie


Générer du texte à partir d’un modèle à l’aide de
template avec Acceleo
3éme partie


Apprentissage d’EMF – construire un métamodèle,
générer les classes de manipulation, manipuler des
modèles, customiser le code générer
Transformer des modèles – Transformer un modèle de
classes UML en notre modèle Java
4éme partie

Intégrer l’application dans Papyrus Eclipse
Technologies




Java
Eclipse

Environnement de développement

pour manipuler les modèles
EMF
Papyrus

Editeur UML 2 – Pour concevoir le métamodèle
(grammaire décrivant le modèle)
www.eclipse.org/papyrus

Pour transformer des modèles

Template de génération de code




QVTo
Acceleo
SVN
Acquis a la fin du module


Introduction à l’approche IDM
Construction de métamodèles


Génération de texte, à partir de modèles, avec
des templates


Avec Acceleo
Transformation de modèle


manipulation avec EMF
avec QVTo
maîtrise dans Eclipse des environnements de
développement Java et modèle
Cahier des charges











L’objectif de ce projet est de créer une application permettant de générer du code Java à partir d’un modèle UML. Ce modèle
UML sera construit à l’aide de diagrammes de classes.
Un diagramme de classes UML permet de modéliser des packages, des classes, leurs méthodes, leurs propriétés, leurs relations,
des commentaires ...
Papyrus, un modeleur UML Open source, sera utilisé pour construire les modèles UML.
Une utilisation typique de l’application est : l’utilisateur modélise une application dans Papyrus en utilisant des diagrammes de
classes. Il sélectionne une ou plusieurs classe et demande le menu contextuel. Dans ce menu, il choisit « Generate Java ».
L’application génère alors le code Java correspondant: package, squelette des classes avec propriétés, signatures des méthodes,
javadoc …
Une variante consiste a modéliser une application dans Papyrus, puis à sauver le modèle (dans un fichier.uml). L’utilisateur
sélectionne alors le modèle (le fichier .uml) et choisit dans le menu contextuel « Generate Java ». L’application ouvre alors le
modèle et génére toutes les classes et packages contenus dans le modèle.
L’utilisateur peut aussi utiliser des stéréotypes et des valeurs marqués pour enrichir son modèle. Ces stéréotypes et valeurs
marquées généreront des annotations Java ou du code supplémentaire.
Le corps des méthodes sera laissé vide par défaut, ou avec le code « return null » pour les méthodes retournant une valeur.
L’application permettra de spécifier le corps d’une méthode dans le modèle UML sous la forme d’un texte. Si le corps est spécifié,
le texte sera inséré dans le corps de la méthode lors de la génération.
L’application permettra de surcharger n’importe quel nom en utilisant un profil, des stéréotypes et valeurs marquées. Surcharger
consiste à spécifier un nom différent de celui donné dans le modèle UML. Le générateur utilisera le nom surchargé si celui-ci est
présent. Si il n’est pas présent, il utilise le nom donné dans le modèle.
L’application permet de définir des Datatypes faisant référence à des types préexistant en Java.
Les technologies utilisées sont : Java, Papyrus UML et EMF pour construire le modèle, un moteur de templates pour générer le
code (Acceleo d’Eclipse ...).
Téléchargement