Générateur de code - EUGene Florian Desbois Code Lutin www.codelutin.com 1
Plan 1.Présentation de Code Lutin 2.Différentes techniques de génération 3.Génération avec EUGene 4.Exemple de genération en Java 5.Framework ToPIA 2
Plan 1.Présentation de Code Lutin 2.Différentes techniques de génération 3.Génération avec EUGene 4.Exemple de genération en Java 5.Framework ToPIA 3
1- Code Lutin Créée en mai 2002 SSLL experte en Java/UML/XML Membre fondateur de: Libre-entreprise 2002 Alliance-Libre 2006 Soutient chaque année un projet libre qu'elle utilise Soutient financièrement les RMLL 4
1- Code Lutin nos clients Grand Compte TIEE (Toyota Europe), Leroy Merlin France et Groupe ADEO, Decathlon France et Oxylane,... Administration Ministère de la culture, Ministère de l'éducation,... Centre de recherche Ifremer, INRA, Cemagref,... PME Sextant géomètre,... 5
Plan 1.Présentation de Code Lutin 2.Différentes techniques de génération 3.Génération avec EUGene 4.Exemple de genération en Java 5.Framework ToPIA 6
2- Différentes techniques de génération Byte code vs code source Approche MDA (Model Driven Architecture) Génération par template ou par langage de transformation Génération dans le processus de build ou en amont, directement dans les sources 7
2- Niveaux d'abstraction M3 : Super Meta-modèle MOF M2 : Meta-modèle Classe, Attribut, Opération... M1 : Modèle Bateau, longueur, couler()... M0 : Données Titanic, 291m, Pour générer on manipule le méta-modèle, son contenu représente le modèle de données. 8
Plan 1.Présentation de Code Lutin 2.Différentes techniques de génération 3.Génération avec EUGene 4.Exemple de genération en Java 5.Framework ToPIA 9
3- Génération avec EUGene Approche MDA, génération à travers le processus de build : Utilisation d'xmi pour décrire le modèle métier (exemple de modeleur : ArgoUML) Utilisation du plugin EUGene (maven/ant) pour générer le code source 10
3- Génération avec EUGene Modèle Template N fichiers générés 11
3- Génération avec EUGene Avantages par rapport aux autres : Génération écrite en langage Java (connu par le développeur) Aucune liaison avec l'ide/modeleur Pas de code développeur dans les sources générées Meta-modèle objet générique simplifié : ObjectModel (indépendant des variations du XMI) 12
3- Génération avec EUGene Deux types de génération : Template de génération (Generator) Transformation de modèle (Transformer) 13
3- Génération avec EUGene Utilisation avec maven : Ajouter le modèle (fichier zargo, objectmodel ou xmi) dans le dossier src/main/xmi Déclarer le plugin EUGene dans le pom.xml en spécifiant les templates (Generator, Transformer, ) à utiliser Lancer la compilation (mvn clean install) pour générer le code dans target/generated-sources 14
Plan 1.Présentation de Code Lutin 2.Différentes techniques de génération 3.Génération avec EUGene 4.Exemple de genération en Java 5.Framework ToPIA 15
Plan 1.Présentation de Code Lutin 2.Différentes techniques de génération 3.Génération avec EUGene 4.Exemple de genération en Java 5.Framework ToPIA 16
5- Framework ToPIA ToPIA : framework d'abstraction de plateformes techniques Architecture orienté métier pour le développement d'application Génération de code pour la persistence (entités, daos, mapping hibernate, ) ToPIA transforme un modèle UML en code source : Une classe UML = une entité, un dao et un mapping XML Une lecture de modèle par type de génération (EntityTransformer, DAOTransformer,...) 17
EUGene lui permet : 5- Framework ToPIA Plusieurs fichiers sources pour une seule représentation UML (classe) Possibilité d'étendre les sources via l'héritage sur les fichiers générés Utilisation de stéréotypes et tagvalue UML pour spécifier le modèle (<<entity>>, tagvalue.lazy, ) définis dans un fichier properties associé au modèle 18
Conclusion Eprouvé sur plusieurs projets (ToPIA, Wikitty, Neogia) Génération Java simplifié Peut supporter d'autres modèles et langages 2 générations possible : Model To Model Model To File Futur support de fichier modèle texte, type Km3 19
Merci... Référence : http://www.codelutin.com http://www.libre-entreprise.com http://www.alliance-libre.org Http://maven-site.nuiton.org/eugene Http://www.nuiton.org/projects/eugene http://argouml.tigris.org/ http://www.nuiton.org/projects/topia Contact :contact@codelutin.com 20