augmenter la productivité de vos développements jee grâce ... · •jee, .net, php.. deux...

17
Architects Community Augmenter la productivité de vos développements JEE grâce à l’approche orientée modèles DSM Architecte JEE Bertrand Florat 29 janvier 2008

Upload: others

Post on 26-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

ArchitectsCommunity

Augmenter la productivité de vos développements JEE grâce à l’approche orientée modèles DSM

Architecte JEEBertrand Florat

29 janvier 2008

Page 2: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

Déroulement de la discussion

L’inertie du code et de la documentation sont des enjeux majeurs de productivité

Une solution est l’approche orienté modèle...• ...dont le champs d’application doit être correctement circonscrit

L’approche MDD nécessite la méta-modélisation de l’architecture..• ...et se décline en deux visions : MDA et DSM

• …l’approche DSM étant souvent pertinente

L’outillage Open Source DSM est maintenant à maturité• ...et peut être mis en œuvre dans une chaine de fabrication intégrée

Cette approche a été mise en œuvre avec succès notamment à l’Unedic...• ...dont nous tirons une première analyse

Questions / réponses

Page 3: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

L’inertie du code et de la documentation sont des enjeux majeurs de productivité

La documentation• Tache lourde et peu agile

• Souvent mal alignée sur le code ou uniquement à moment précis

• Modèles (UML en général) « contemplatifs et non productifs » (Jean Bezivin)

• ROI faible

Le code• Hétérogène suivant les développeurs

• Nécessite de nombreuses tâches fastidieuses automatisables

• Difficile à maintenir

Page 4: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

Une solution est l’approche orienté modèle...

MD : Model Driven

Apporte un niveau d’abstraction au dessus du code

Les modèles au centre du développement• Centralisent l’information de conception

Des modèles productifs• Servent de documentation

• Servent à générer itérativement une partie du code final

Page 5: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

...dont le champs d’application doit être correctement circonscrit

S’applique à tous les langages Orienté Objet• JEE, .NET, PHP..

Deux finalités : modèles de code ou modèles de données formelles

N’assure pas la génération de la totalité du code• De 50 à 70 %

• Trop de modélisation tue la modélisation

Ticket d’entrée• Impact humain (Nouvelle de vision, organisation, formation)

• Si existant, rétro-modélisation à prévoir

• Si utilisation de langage spécifiques, cout du développement de l’outillage

• Nécessite une méta-modélisation

Page 6: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

L’approche MDD nécessite la méta-modélisation de l’architecture...

Concepts de l’architecture

Liens entre ces concepts

Plusieurs méta-modèles suivant les couches

Pierre angulaire de l’approche

Facilité proportionnelle à l’utilisation de frameworks

Nécessite une grande maturité, se faire aider

Méta-modèle d’architecture

Écran

Action

Actegestion

Composantmétier

Composantd’accès

Couche IHM Couche Processus / Métier

Transaction

Table

Couche service

événement

Page 7: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

...et se décline en deux visions : MDA et DSM

MDA (Model Driven Architecture)• OMG

• UML

• Indépendance à la plateforme PIM / PSM

DSM (Domain Specific Modeling)• Méthode pragmatique

• DSL (langage spécifique)

• Modèle unique

Choix actuel ADC Capgemini Ouest

Mis partiellement en œuvre Capgemini Ouest depuis

2002 : qualité ↑, productivité =

Page 8: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

…l’approche DSM étant souvent pertinente

Les développeurs ou concepteurs fonctionnels manipulent « leurs » concepts, pas ceux d’UML: <<Contrat>>, pas <<Classe>>

Supporte la validation implicite du méta-modèle• Mais des validations complémentaires sont à prévoir

Personnalisation et ergonomie avancée « UML: prêt-à-porter, DSM: sur mesure » (Xavier Blanc, Lip6) Approche particulièrement pertinente pour:

• La modélisation de traitements formels spécifiques basé sur des frameworks • La modélisation d’informations métier

Attention, ne pas réinventer l’UML ! Les profiles UML 2.0 (notamment le stéréotypage) vont dans le sens

du DSM avec moins de flexibilité Peu adapté aux spécifications, utiliser l’UML

Page 9: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

What's wrong with MDA ?

A notre avis, le MDA (académique) est trop complexe à comprendre et à appliquer

• Qu'est ce qui est de l'ordre du PIM ou du PSM ?

• Transformations de modèles PIM vers PSM (M2M) faiblement outillée et très complexe

• Complexité de la chaîne de fabrication, augmentation du nombre d’artéfacts...

L’UML ne permet pas le contrôle dynamique (besoin de validations ultérieures)

Le MDA n’adresse pas les vrais problématiques (traçabilité code/modèles)

Intégration IDE limitée.

Problématique de l’indépendance à la plateforme : qui a réellement ce besoin ?

• La réécriture des scripts de génération et des outils de migration T2T ne suffisent-ils pas à migrer le code ?

Page 10: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

L’outillage Open Source DSM est maintenant à maturité...

Page 11: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

EMF

EMF (Eclipse Modeling Framework) est le socle applicatif sur lequel repose la plupart des outils MDE utilisés dans le cadre d’Eclipse.

EMF comprend principalement:• Un méta-méta-modele (niveau M3) nommé « ecore »

• Des fonctions d’import/export en XMI 2 pour la persistence de modèles.

• EMF.Codegen (JET): générateur de code à partir des modèles.

• EMF.Edit: framework : framework pour la création d’éditeurs arborescents

• EMF.edit contient les classes nécessaires à la création d’éditeur arborescents

Page 12: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

GMF

GMF (Graphical Modeling Framework) est un projet OSS porté principalement par Borland ayant pour but la génération d’éditeurs graphiques (modeleurs)

Sera intégré dans les prochaines versions de Borland Together

Outils propriétaires équivalents : MagicDraw, Microsoft DSL Tools

GMF s’appuie sur • EMF pour la génération des classes métier et d’édition du méta-modèles

• GEF pour les fonctionnalités de modeleur (fonctions de dessin, palettes, undo/redo etc..)

GMF est un framework très prometteur mais également jeune mais très actif.

Exemple de modeleur spécifique généré

Page 13: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

Acceleo

Acceleo est un générateur de code orienté Template OSS développé par OBEO

Approche bottom-up : on part du code (les Templates) et non du méta-modèle

Permet de générer des artéfacts (code Java, fichiers XML, sites Web HTML...) à partir des données contenues dans un modèle

Outil propriétaire équivalent : Mia-Generation (MIA Software)

<% metamodel http://www.eclipse.org/uml2/2.0.0/UML %><%script type="uml.Class" name="classTemplate" file="<%name%>.java"%>public class <%class.name%>{

public <%class.name%>{ //Constructeur//<%startUserCode%>

//code concret//<%endUserCode%>

}}

meta-modèle utilisétype d'artéfact et nom du fichier cible

inclusion de code manuel (conservé lors des générations de code suivantes)

corps de la classe utilisant des éléments définis dans le méta-modèle qui seront remplacés par les valeur du modèle

Page 14: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

...et peut être mis en œuvre dans une chaîne de fabrication intégrée

Notion de Fabrique Logicielle (SoFa)

Chaîne de fabrication JEE Capgemini ADC Ouest en cours de mise en place

Couches présentation et navigation : opérationnel

Couches métier et services : en cours

Page 15: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

Cette approche a été mise en œuvre avec succès notamment à l’Unedic...

Projet Unédic / OBEO avec Capgemini en assistance

Test sur projet de 5000 JH (couche navigation)

Solution technique: EMF + GMF 1 + Acceleo

1 méta-modèle, 100 méta-éléments, 3 modeleurs, 70 templates

Coût outillage : 200 JH sur 6 mois, réalisation OBEO / Unédic

Gain de productivitéet qualité importants de l'ordre estimé de 30 % conception + développement

Page 16: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

...dont nous tirons une première analyse

Forces Simplicité et pragmatisme

Outils adaptés au métier de l’utilisateur

Contrôle dynamique

Flexibilité méthodologique

Faiblesses GMF est un outil récent en cours de

documentation

Besoin d’expertise pour la personalisation

Attention à la montée en charge (taille et distribution des modèles )

GMF : orienté boites / traits, pas de copier/coller

Opportunités Risques

Evolution des méta-modèles

Couplage avec Eclipse

Intégration continue des modèles

Gain de productivité considérables

Page 17: Augmenter la productivité de vos développements JEE grâce ... · •JEE, .NET, PHP.. Deux finalités : modèles de code ou modèles de données formelles N’assure pas la génération

Questions / Réponses

Echanges