soutenance mémoire : implémentation d'un dsl en entreprise
DESCRIPTION
TRANSCRIPT
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