Générateur de code - EUGene Florian Desbois Code Lutin www.codelutin.com Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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, ... Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 7 2- Niveaux d'abstraction ● M3 : Super Meta-modèle – ● M2 : Meta-modèle – ● Bateau, longueur, couler()... M0 : Données – ● Classe, Attribut, Opération... M1 : Modèle – ● MOF Titanic, 291m, … Pour générer on manipule le méta-modèle, son contenu représente le modèle de données. Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 10 3- Génération avec EUGene Modèle Template N fichiers générés Copyright Code Lutin / Florian Desbois licence CC-by-SA 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) Copyright Code Lutin / Florian Desbois licence CC-by-SA 12 3- Génération avec EUGene ● Deux types de génération : – Template de génération (Generator) – Transformation de modèle (Transformer) Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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, ...) Copyright Code Lutin / Florian Desbois licence CC-by-SA 17 5- Framework ToPIA ● EUGene lui permet : – 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 Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 – ● Copyright Code Lutin / Florian Desbois licence CC-by-SA 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 :[email protected] Copyright Code Lutin / Florian Desbois licence CC-by-SA 20