IDM – DSL Internes Dans la vraie vie Thomas Moreau Software Engineer at HPE 13/01/2016.

Slides:



Advertisements
Présentations similaires
Mathilde VINCENT - Olivier JOURDAN Paris - le 7/2/2012
Advertisements

JEE Approfondi Frameworks : Maverick (MVC) JiBX (Persistance XML)
Conception de Site Webs dynamiques Cours 5
Cours Visual Basic pour Application
Démarche Analyse des OGL et des Méthodes Objectifs : Activités :
ISICIL SWEETDEKI Intégration du logiciel Mindtouch Core dans la plate-forme ISICIL Guillaume HUSSON.
Clients riches RIA (Rich Internet Application) / RDA
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
PHP 1° PARTIE : LES BASES © BTS IRIS 2002 [tv] Présentation Historique
Transformation de modèles Kick Off Motor Jean Marc Jézéquel & Didier Vojtisek La vision Triskell : Umlaut NG.
JavaScript Nécessaire Web.
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
FORUM REGIONAL DE NORMALISATION DE L'UIT POUR L'AFRIQUE (Dakar, Sénégal, mars 2015) Outils et méthodes pour tester la qualité de services (QoS) de.
Module : Pages Web Dynamiques (Production Électronique Avancée)
Présentation ESTRABOX
1.1: notions de bases de l’informatique
Outils bibliographiques Philippe Carrère, UAG 2013.
JI Les systèmes d’autorisation et d’authentification dans AMI Fabian Lambert.
ABF Améliorer nos formations pour une microfinance plus sociale.
Question de gestion 13 : Le document peut-il être vecteur de coopération ? Le document : - Dématérialisation des documents - Partage, mutualisation, sécurisation.
Création d’un site WEB 1 – Un site WEB c’est quoi ? 2 – Questions à se poser avant la construction d’un site WEB 3 – Principes de fonctionnement d’un site.
Cours de Mme Dominique Meganck - ICC - IFC MICROSOFT ACCESS Un système de gestion de bases de données...
1) Qu’est-ce que BCDI? BCDI est un logiciel informatique de recherche documentaire : C’est le catalogue informatique du CDI. Au collège on travaille principalement.
PROJET DE SESSION PRÉSENTÉ PAR : Rosemarie McHugh DANS LE CADRE DU COURS : SCG Réalisation d’applications en SIG 16 avril 2007.
Mediator 9 - Un outil de développement multimédia 3AC Techno/Informatique.
Développement d’application avec base de données Semaine 3 : Modifications avec Entité Framework Automne 2015.
Gabriel Dumouchel, doctorant Université de Montréal Atelier Jouvence 2011 Atelier Jouvence 2011.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 5 Support de cours rédigé par Bernard COFFIN Université.
Les outils de tests 1 1 CHAKI Abderrazak - ETIENNE Jonathan - TOUMI Nacereddine - VACHER Nicolas.
1 Monopalme Projet 4 Info Spécifications LE LAY Olivier MAHE Jocelyn FORM Nicolas HENRY Gurvan BONNIN Thomas BASSAND Guillaume Décembre 2009 MONNIER Laurent.
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
Freeplane Free mind mapping and knowledge ree mind mapping and knowledge Freeplane Free mind mapping and knowledge ree mind mapping and knowledge.
U6 : Parcours de professionnalisation Dimitri SANDRON Portfolio : dimitrisandron.fr Lundi 23 Mai 2016 – Lycée « La Martinière Duchère » - Lyon.
Développement d’application avec base de données Semaine 8 : WPF avec Entité Framework Automne 2015.
Chapitre 4 Gestion des disques Module S41. Plan du cours 1. Utilisation de l'outil Gestion des disques 2. Utilisation des disques de base 3. Utilisation.
FACTORY systemes Module 5 Page 5-1 Les outils clients Wonderware FORMATION InSQL 7.0.
1 Les logiciels en général sont classés en deux familles:  Logiciels de base  Logiciels d’applications (applications) 2.
Projet Personnel (Epreuve 6) Projet réalisé dans le cadre de mon épreuve E6 au sein de mon alternance au conseil départemental du val de marne Arnaud PICANO.
Migration Plan adressage EPLE Migration Plan d'adressage EPLE.
La création des données d’exemplaire pour un exemplarisateur Sudoc.
Les méthodes de tests Les grands principes pour réaliser des tests efficaces.
Développement d’application avec base de données Semaine 9 : Code First avec Entité Framework Automne 2015 Tous le matériel provient de :
Formation « Administrateur ATRIUM ». 1.Un accompagnement technique par la Région Formation des « administrateurs » Support technique Evolution des fonctions.
Atelier d’échange d’expériences et de capitalisation sur des projets d’électrification rurale en cours Schémas organisationnels Mardi 10 décembre 2002.
Réflexion sur un exemple possible de projet proposé en I.S.N.
Chapitre 6 Déploiement et gestion des logiciels à l'aide d'une stratégie de groupe Module S44.
RÉNOVATION BTS Comptabilité et Gestion 2015 CB2C : un exemple de situation professionnelle Christine Forest Stéphane Bessière Daniel Perrin Toinin.
Quelle(s) méthodologie(s) pour le suivi des collectifs d’enseignants ? Hussein Sabra et Isabelle Quentin Séminaire avec les collectifs d'enseignants concepteurs.
> 1 Pôle INSIDE GIGE mars Un pôle d’innovation regroupant le BRGM et l’Onema Formalisé en 2014, pour répondre aux enjeux du système d’information.
Introduction à la Programmation Orientée Objet H.GATI.
Supervision EC-Net AX Serveurs Web EC-BOS AX. ARCHITECTURE Les solutions EC-Net AX EC-Net AX Supervisor EC-Net AX EnerVue EC-Net AX Security  EC-Net.
1 Projet d'établissement Action 10.2 Créer un portail intranet dédié aux agents de l’Inrap Présentation des choix technologiques de l’Inrap.
SOLUTION ONLINE DE GESTION POUR LES SPECIALISTES DU TOURISME SUR MESURE
Human Task Service (2008) Oscar Barrios et François Charoy Human Task Service Service de tâches dans un système de gestion de workflow Oscar Barrios
On the analysis of CMMN expressiveness: revisiting workflow patterns Renata Carvalho Hafedh Mili.
#ConventionCRiP De la supervision du SI LMG à l’IT Performance Management Patrick BERTHOLON Responsable exploitation et solutions techniques DSIP/Opérations.
L'objectif permettre aux utilisateurs d'acquérir ou d'actualiser des compétences directement utilisables dans leur travail. KARA CHEIKH Cite.
Cours de Langage C Les structures
La spécialité mathématique en TS. Les mathématiques sont une science qui se construit elle-même grâce à la démonstration. Axiomes et définitions Théorèmes.
Compétences: Capacité d’analyse et de recherche Présentation/Discussion Adjoints des commissions des finances - WAAPAC.
Présenté par  Samira BELHORMA  Imane ZEHHAF. Introduction I. Définitions II. Quand et comment évaluer une compétence? III. Le contexte d’évaluation.
INSCRIPTIONS SPORTIVES
Tutoriel MATLAB-SIMULINK Projet UNIT 2009 Partenariat : Ecole des Mines d’Alès Ecole des Mines de Saint Etienne Université de Nice Sophia-Antipolis.
PARTIE 2 : LE PROJET.
Persistance en bases de données O.Legrand G. Seront.
Colloque LCG France14-15 mars SURVEILLANCE ET GESTION D’INCIDENTS Cécile Barbier (LAPP)
© 2007 Autodesk1 Nouveautés de Revit Architecture 2008.
BACCALAUREAT PROFESSIONNEL 3 ANS REPARATION DES CARROSSERIES Quelques points clés.
L’épreuve anticipée d’étude de gestion Sources : programme-seminaire-national
Transcription de la présentation:

IDM – DSL Internes Dans la vraie vie Thomas Moreau Software Engineer at HPE 13/01/2016

Sommaire   Retour d’expérience : HP Customer Care Dashboard  Pourquoi un DSL  DSL interne vs DSL externe  Concevoir un DSL interne  Méthode  Exemple avec  ArduinoML avec Groovy (live coding, mise en pratique) 2

HPE à Sophia-Antipolis  Communication Media & Services (CMS)  Operation Support System (OSS)  Solutions techniques et logicielles  Supervision  Détection de problèmes  Analyse d’état de réseaux télécom  Recherche et développement 3

Retour d’expérience HP Customer Care Dashboard 4

L’application CEA  HP Customer Experience Assurance solution  Contexte “Big Data”  Visualisation en temps réel de l’expérience utilisateur d’un client  Détection d’anomalies  “drill-down” 5

L’application CEA  Architecture MPP (Massive Parallel Processing)  Bases de données orientées colonnes “Zstore”  UI GWT 6

Besoins  Affichage d’indicateurs synthétiques de QoE  Utilisateur/abonné  Plage de temps  Customer Care Console  Utilisateur: technicien de niveau 1  Identification par numéro téléphonique/IMSI/IMEI  Visualisations adaptées  Indicateur d’état, Jauges, Informations  Hautement configurable (diversité des exigences des clients)  Lien avec CEA  Data sources 7

Customer Care Dashboard  Liens avec CEA  Surcouche de calculs, agrégations  Configurable 8

Pourquoi des DSLs ?  Besoins  Configurable à chaud sans besoin de connaissances en programmation particulière  Java (Google Web Toolkit)  Lisibilité, simplicité, comprehension rapide de la configuration (client, support, …)  Accessible aux experts du domaine  Deux configurations nécessaires  UI: agencement de widgets  Scripting: définition et traitement des données à afficher (calculs, formules, …)  Cette configuration de type “scripting” doit être extensible/flexible pour répondre à des besoins clients très spécifiques (sans délivrer de nouvelle version) 9

Définition: DSL interne 10  DSL >  < DSL interne Assez similaire à une API enjolivée

DSL interne  Un exemple :  Java method chainingJava simple method calls 11  Un schéma XSD peut être considéré comme un DSL interne  Lisp permet de faire facilement des DSLs internes (function arg1 … argn)

DSL interne  Un exemple :  Java method chainingJava simple method calls 12  Un schema XSD peut être considéré comme un DSL interne  Lisp permet de faire facilement des DSLs internes (function arg1 … argn)

DSL interne vs DSL externe  Coût de développement  Facilité à appréhender, déveloper et à utiliser Sorte d’API enjolivée VS grammaire + parseur + …  Un DSL interne repose souvent sur des utilisations de subtilités “cachées” du langage hôte pour parvenir à façonner la syntaxe souhaitée  Maintenabilité, stabilité, apprentissage, utilisation  Pas besoin de maintenir l’interpréteur d’un DSL interne  Adaptation au domaine  Un DSL interne est limité par les possibilités du langage hôte  La flexibilité d’un DSL interne dépend du langage hôte sélectionné, celle d’un DSL externe dépend du parseur développé 13

HP Customer Care Dashboard  Choix du langage pour l’accès aux données : DSL Interne  Raisons précédentes + API existante  Version alpha en Lisp  API Java + interpréteur Lisp enrichi  Configuration au runtime rendue possible par le fait d’avoir un DSL interne à un langage interprété aux cotés de Java (langage compilé)  Finalement : Groovy  API Java + GroovyShell  Beaucoup plus de flexibilité/possibilités  Configuration au runtime rendue possible par l’aspect scripting de Groovy 14

HP Customer Care Dashboard : Architecture 15 (distributed)

HP Customer Care Dashboard : Extensibilité & Adaptabilité  Une vue configurable (Schema XSD) (simplifié)  Facilité d’ajout/modification de visualisations 16

HP Customer Care Dashboard : Extensibilité & Adaptabilité  Un langage dédié pour définir des indicateurs  Lié à la partie vue par des identifiants communs  Configurable “à chaud” 17

Concevoir un DSL interne Méthode & exemple avec Groovy 18

Concevoir un DSL interne 2 approches :  A partir de la syntaxe souhaitée Syntaxe  Fonctionnement  A partir des fonctionnalités Fonctionnement  Syntaxe 19 Le plus souvent en pratique :  Création d’une API ou déjà existante  Utilisation de cette API au sein d’un langage hôte  Adaptation incrémentale de la syntaxe

HP Customer Care Dashboard: DSL interne à Groovy  Architecture mise en place : 20

HP Customer Care Dashboard: DSL interne à Groovy  Architecture mise en place : 21

Groovy en quelques mots…  Inspiré de Java, Python, Ruby et Smalltalk  Langage OO pour la JVM  Alternative au langage Java  Compilé ~Java  Ou compilé à la volée/interprété ~Javascript 22  Java bytecode  Typage dynamique ou statique  Grandes libertés syntaxiques  Méta-programmation (méta-classes, operator overloading, AST transformations)

… Groovy en plus de mots  Script vs class  Typage optionnel 23

… Groovy en plus de mots  Déclaration de listes/map facilitée  Parenthèses et points-virgule optionnels 24

… Groovy en plus de mots  ExpandoMetaClass  Command chain expressions Code 25

… Groovy en plus de mots  Sécurité : ImportCustomizer, SecureASTCustomizer 26

… Groovy en plus de mots  Operator overloading 27  AST Transformations  Modifier l’Abstract Syntax Tree pour faire de la “compile-time” méta-programmation  Plus complexe mais plus puissant que Java  metaClass > class > instance  methodMissing est appelé si une méthode n’existe pas  Et plein d’autre choses…

Concevoir un DSL interne Exemple avec Groovy 28

Exemple : Créer un DSL interne avec Groovy  Considérons un cas simple : un lance missile USB  API Java disponible  Approche : API  Syntaxe 29

Exemple : Créer un DSL interne avec Groovy  Ce qu’on écrirait en Java 30

Exemple : Créer un DSL interne avec Groovy  Ce qu’on écrirait en Java  Compréhensible que par un développeur  Beaucoup de “bruit” 31

Exemple : Créer un DSL interne avec Groovy  En rouge, ce qui ne sert à rien 32

Exemple : Créer un DSL interne avec Groovy  En vert, ce qui ne contribue pas à la compréhension du programme 33

Exemple : Créer un DSL interne avec Groovy  En jaune, ce qui n’est pas indispensable non plus 34

Exemple : Créer un DSL interne avec Groovy  On voudrait plutôt écrire…  Ou bien à terme… 35

Exemple : Créer un DSL interne avec Groovy 36  Première étape : utiliser un GroovyShell dans un main Java  Script (équivalent au main Java)  On peut par exemple n’implémenter que le cœur du DSL en Groovy, le reste en Java

Exemple : Créer un DSL interne avec Groovy  Structure  Premier objectif 37 Binding =~ Map de variables attachées au script Basecript =~ fonctions prédéfinies du script

Exemple : Créer un DSL interne avec Groovy  Binding (Java or Groovy class)   Basescript (Groovy class) 38

Exemple : Créer un DSL interne avec Groovy  DSL utilisant  Binding  Basescript  GroovyShell  Nouveau main 39

Exemple : Créer un DSL interne avec Groovy ?? 40

Exemple : Créer un DSL interne avec Groovy  Injecter le missileLauncher dans le Binding (MetalGearDSL) 41

Exemple : Créer un DSL interne avec Groovy ?? 42

Exemple : Créer un DSL interne avec Groovy  Injecter chaque valeur dans le binding (il existe une syntaxe Groovy plus courte)  Ou bien utiliser un ImportCustomizer 43

Exemple : Créer un DSL interne avec Groovy ?? 44

Exemple : Créer un DSL interne avec Groovy  Utiliser le Basescript pour définir les fonctions pivot et fire  Note : Une solution plus élégante serait de stocker le missileLauncher en tant que variable privée de la classe MetalGearBinding (car plus besoin de la variable dans le script) 45

Exemple : Créer un DSL interne avec Groovy  pivot left et pivot right fonctionnent nativement  Mais fire renvoie une Exception. Comment faire ? 46

Exemple : Créer un DSL interne avec Groovy  pivot left et pivot right fonctionne nativement  Pour fire, on peut ajouter un « hook » dans la méthode getVariable du binding, et supprimer la méthode fire créée dans le Basescript précédemment 47

Exemple : Créer un DSL interne avec Groovy 48  Comment supporter 10.degree et 42.tr/min ?

Exemple : Créer un DSL interne avec Groovy 49  Enrichir la metaClass de Integer et utiliser des classes simples d’angle, durée et vitesse  MetalGearDSL  metaClass  Closures  Binding

Exemple : Créer un DSL interne avec Groovy 50  class AngleUnit class TimeUnit

Exemple : Créer un DSL interne avec Groovy 51  class Angle

Exemple : Créer un DSL interne avec Groovy 52  class Duration

Exemple : Créer un DSL interne avec Groovy 53  class RotationSpeed

Exemple : Créer un DSL interne avec Groovy 54  On peut maintenant écrire  Et maintenant ?

Exemple : Créer un DSL interne avec Groovy 55  On peut maintenant écrire  Equivaut à  Utiliser le method-chaining  Remplacer la méthode pivot dans le Basescript

Conclusion  On y est ! Le lance missile USB est facilement pilotable !  Cette approche d’élaboration d’un DSL interne avec Groovy serait la même avec un autre langage hôte (ex: Scala) ou un modèle different, plus complexe. 56

Des Questions ? 57

ArduinoML avec Groovy Application, live coding 58

ArduinoML avec Groovy  Appliquons tout ça à ArduinoML  … Elaborons GroovuinoML  Time to… 59

ArduinoML avec Groovy 60

Bonus : Subtilités avancées de Groovy  2 aspects du DSL Groovy de HP Customer Care Dashboard :  Fichier(s) de scripting limité/sécurisé/restreint  Fichier(s) d’extension dynamique, ouvert(s), maximisant l’adaptabilité du DSL  Exploitation des capacités de Groovy (Méta-programmation, langage fonctionnel, closures, …)  Pour permettre l’extension dynamique du DSL, le Basescript ne contient plus toutes les fonctions  Fonctions complexes et extensions ajoutées au Binding, sous forme de closures  Sinon : de nombreux problems lors d’accès concurrents (fuites mémoires car certaines modifications de metaClass ne peuvent être garbage collectées, …)  Tout comportement de Groovy ou de Java, visible dans le scope de notre DSL peut être modifié, à la volée ! 61

Bibliographie + liens utiles  Domain Specific Languages (Martin Fowler)  Going to Mars with Groovy (Guillaume Laforge)  Bons articles pour commencer avec Groovy  Installation  Documentation officielle pour l’elaboration d’un DSL languages.html  Méta-programmation 62

Thank you 63