Implémentation d’un Domain Specific Language
en entreprise
Soutenance Mémoire de fin
d’étudeBrice Argenson
Promotion SUPINFO 2010
Agenda
Contexte
Problématique
Définition d’un DSL
Mise en œuvre
Réflexion
Conclusion
www.xebia.fr / blog.xebia.fr 2
CONTEXTE
XebiaLa mission
Xebia
Stage de fin d’étude chez Xebia IT Architect
▶ Groupe d’experts dédié aux technologies Java▶ Présent au Pays Bas, en France et en Indes▶ Un modèle d’entreprise vertueux
» Relations proches avec le client» Partage de connaissance» Participation à la communauté
Envoyé en régie chez un client grand compte
www.xebia.fr / blog.xebia.fr 4
La mission
Module de facturation
Refonte globale de l’outil de gestion interne
Règles de facturation
▶ Nombreuses
▶ Changent souvent
www.xebia.fr / blog.xebia.fr 5
L’existant
Logiciel de facturation : Magora
Une application / client
Développement long
Pas de factorisation des règles
Pas de connexion à la BDD métier
www.xebia.fr / blog.xebia.fr 6
PROBLEMATIQUES
Problématiques
Comment créer et modifier des règles ?
▶ Utilisation d’un pseudo langage
Comment éviter l’intervention des développeurs ?
▶ Interprétation au « Runtime »
Utilisation d’un DSL !
www.xebia.fr / blog.xebia.fr 8
Problématiques
Comment introduire un DSL ?
▶ Le rendre utilisable par les gens du métier
▶ En expliquer la plus value
▶ Accompagner les utilisateurs
www.xebia.fr / blog.xebia.fr 9
QU’EST CE QU’UN DSL ?
DéfinitionDifférents types
Définition
Définition exacte pas évidente
« Domain Specific Language (noun): a computer programming language of limited
expressiveness focused on a particular domain » - Martin Fowler -
www.xebia.fr / blog.xebia.fr 11
Définition
Existent depuis longtemps
▶ awk, sed
▶ CSS
▶ Configurations XML
▶ Excel
www.xebia.fr / blog.xebia.fr 12
Différents types
DSL externes
DSL internes
« Language Workbench DSL »
www.xebia.fr / blog.xebia.fr 13
Différents types
DSL pour personnes techniques
▶ Configuration XML, Expression Language, …
DSL pour tous
▶ Excel, Kodu, …
www.xebia.fr / blog.xebia.fr 14
MISE EN OEUVRE
Solutions choisiesRésultats
Choix méthodologiques
Scrum
www.xebia.fr / blog.xebia.fr 16
Choix méthodologiques
www.xebia.fr / blog.xebia.fr 17
Choix méthodologiques
www.xebia.fr / blog.xebia.fr 18
Choix méthodologiques
Quatre principes directeurs :
▶ Individus et interactions contre processus et outils
▶ Logiciel qui fonctionne contre documentation exhaustive
▶ Collaboration du client contre négociation de contrat
▶ Réponse au changement contre suivi d'un plan prédéfini
www.xebia.fr / blog.xebia.fr 19
Choix techniques
www.xebia.fr / blog.xebia.fr 20
Choix techniques
DSL interne en Groovy
▶ Démarrage rapide
▶ Coût d’entrée faible
▶ Compétences en Groovy
▶ Plus rassurant
www.xebia.fr / blog.xebia.fr 21
Résultats
Première version fonctionnelle
▶ Adapté pour un seul client
▶ Échéance imposé par le client
▶ Jeune avec quelques maladresses d’implémentation
»Dette technique !
www.xebia.fr / blog.xebia.fr 22
Résultats
www.xebia.fr / blog.xebia.fr 23
Résultats
www.xebia.fr / blog.xebia.fr 24
Résultats
Application bien accueillie
+500 factures
< 1% d’erreur
www.xebia.fr / blog.xebia.fr 25
Et ensuite…
Nouvelles échéances▶ 2 mois▶ 2 mois et demi▶ 3 mois
Règles foncièrement différentes
Dette technique
Manque de temps !
www.xebia.fr / blog.xebia.fr 26
Et ensuite…
Référents métier ne s’impliquent pas assez
Intérêt et complexité de le solution mal compris
Échéances plus importantes !
▶ Abandon du DSL augmentation de la productivité
www.xebia.fr / blog.xebia.fr 27
Et ensuite…
Changements radicaux de certaines parties
Très peu de changements pour d’autres
Utilisation d’un DSL technique
Améliorations par rapport à l’existant
▶ Mais toujours un besoin de développeur(s)
www.xebia.fr / blog.xebia.fr 28
REFLEXIONS
Réflexions
Projet particulièrement innovant et ambitieux
▶ Trop ?
Premiers résultats en quelques mois
Mais problème d’adoption par le métier
www.xebia.fr / blog.xebia.fr 30
Réflexions
Notion de DSL difficile à comprendre
▶ Peur ?
Très peu d’existant / d’éléments de comparaison
Langages textuels effrayants
▶ DSL graphiques ?
www.xebia.fr / blog.xebia.fr 31
Réflexions
La programmation pour tous !
▶ « Savoir utiliser l’informatique sans savoir programmer, c’est comme savoir lire sans savoir écrire ! » - Bernard Ourghanlian
Exemple de succès :
▶ Excel
www.xebia.fr / blog.xebia.fr 32
CONCLUSION