Générateur de code - EUGene

publicité
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
Téléchargement