Jean-Marc Prieur (ANPROS)

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.
LES NOMBRES PREMIERS ET COMPOSÉS
Applications N-Tiers Rappels: architecture et méthodologie
Les Systèmes d’Information Financière Atelier conjoint ACBF / Banque Mondiale / AFRITAC de l’Ouest Gérer l’application dans le temps, sur les plans fonctionnel,
1 Modéliser Ou comment RE-présenter sa connaissance.
Eléments de Génie Logiciel
« Les Mercredis du développement » Introduction Office « 12 » Présenté par Bernard Fedotoff Microsoft Regional Director Agilcom.
Test et Développement Visual Studio Team System Eric Mittelette – Benjamin Gauthey – Yann Faure DevDays 2006 Equipé aujourdhui, prêt pour demain !
Transformation de documents XML
Affichage interactif, bidimensionnel et incrémental de formules mathématiques Hanane Naciri et Laurence Rideau INRIA Sophia Antipolis CARI'2000.
Concevoir, déployer et gérer les workflows
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
JXDVDTEK – Une DVDthèque en Java et XML
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
Initiation et perfectionnement à lutilisation de la micro-informatique Publier des films sur DailyMotion (sur Mac et sur PC) ©Yves Roger Cornil
Systèmes Experts implémentation en Prolog
Autorisations Utilisation eCATT
JOME, un Composant Logiciel pour le Télé-Enseignement des Mathématiques via le WEB, Compatible OpenMath et MathML Laurent DIRAT OVE / I3S-UNSA.
Les Ateliers de Génie Logiciel
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
Interface Homme Machine IHM Pro
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Développement d’applications web
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
le profil UML en temps réel MARTE
Vuibert Systèmes dinformation et management des organisations 6 e édition R. Reix – B. Fallery – M. Kalika – F. Rowe Chapitre 1 : La notion de système.
Plugin B pour JEdit Matthias Meusburger Antoine Acquaviva
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
Chaque use-case génère un ou des scénarios, traduits par des diagrammes objets, qui permettent d’introduire et/ou de compléter les diagrammes des catégories.
La voyage de Jean Pierre
Configuration de Windows Server 2008 Active Directory
Patterns et maintenabilité dans lindustrie : un cas concret Christophe Saint-Marcel Silicomp Ingénierie.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
Des outils pour le développement logiciel
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
VOC 1 CE2 Je sais utiliser des mots de la vie quotidienne.
SCIENCES DE L ’INGENIEUR
Développement d’application web
GPA789 Analyse et conception orientées objet 1 Professeur: Tony Wong, Ph.D., ing. Chapitre 6 Correspondance UML et C++
Ecaterina Giacomini Pacurar
© Petko ValtchevUniversité de Montréal Janvier IFT 2251 Génie Logiciel Notions de Base Hiver 2002 Petko Valtchev.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Processus d'un projet F.Pfister
Sensibilisation a la modelisation
Ingénierie Système en SysML appliquée à la rédaction du cahier des charges Y. Le Gallou Séminaire académique STI2D - Calais – 1er avril 2014.
Architecture et développement Web
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
Entity Framework 4 Mitsuru FURUTA Relations techniques développeurs
1 journée, 5 sessions, 1 réalisation.NET Enterprise Realization Day.
1 PLAN I. Eclipse Modeling Framework  Présentation  Le modèle Ecore  Code généré  Utilisation de template II.Graphical Modeling Framework  Présentation.
Biologie – Biochimie - Chimie
Transformation de modèles Kick Off Motor Jean Marc Jézéquel & Didier Vojtisek La vision Triskell : Umlaut NG.
Marc Bouissou, Guillaume Torrente, EDF
LES PILES ET FILES.
Supports de formation au SQ Unifié
22 Visual Studio Tools et Office 2010 Thomas LEBRUN Architecte Access It Sebastien BOVO Application Dev Consultant Microsoft France
Hatainville Les Moitiers d’Allonne – Tel : Website : stratic.online.com La démarche projet Mars 2001.
Introduction à SolidWorks
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Créer des packages.
Introduction au Génie Logiciel
Fil rouge : éditeur de dessins en WPF Les Custom Tools de VS2005 Comment çà marche ? Les Custom Tools de VS2005 Comment çà marche ? Utilisons notre DSL.
Extrait du Referentiel BTS Systèmes numériques Options : Informatique et réseaux et Électronique et communication S1 à S9 Définition des savoirs et savoir-faire.
Initiation à la conception des systèmes d'informations
2 Tracks Unified Process
Conférence 2TUP Stéphane Barthon 03/12/
Transcription de la présentation:

Jean-Marc Prieur (ANPROS) j-m.prieur@wanadoo.fr DSL et DSL Tools Jean-Marc Prieur (ANPROS) j-m.prieur@wanadoo.fr Quelles stratégies de modélisation : d’UML aux Domain-Specific Languages (DSL) ? Visual Studio 2005 apporte de nouveaux designers permettant de générer et manipuler du code, à partir de vues conceptuelles de plus haut niveau : les modèles. Grâce à un outillage sous forme de SDK, Microsoft offre la possibilité d’étendre ceux existants. Ce SDK sera complété par un produit permettant de créer soi-même, relativement simplement, ses propres modèles, designers graphiques, validateurs, et générateur de code : les DSL Tools. Cette session, illustrée par un exemple de mise en œuvre des DSL Tools, fera le point sur cette technologie : • Qu’est ce que les DSL ? • Est-ce la fin d’UML ? • Qu’est ce que les DSL Tools ? • Qu’en attendre techniquement et économiquement ? • Qu’elles en sont les limites techniques actuelles ? • Dans quelles conditions et comment les intégrer à une chaine de développement ? TechEd 2002

Plan de la présentation Manipuler des « concepts et d’intentions » dans Visual Studio 2005 Custom Tools pour les settings et ressources Editeurs de Windows Forms Class Diagram Formaliser nos solutions … jusqu’aux DSL Retour d’expérience dans le domaine de la simulation Personnaliser Visual Studio 2005 Le Visual Studio SDK Les DSL Tools Discussion UML et DSL Limites techniques actuelles des DSL Tools L’avenir à court terme Quelles stratégies de modélisation : d’UML aux Domain-Specific Languages (DSL) ? Visual Studio 2005 apporte de nouveaux designers permettant de générer et manipuler du code, à partir de vues conceptuelles de plus haut niveau : les modèles. Grâce à un outillage sous forme de SDK, Microsoft offre la possibilité d’étendre ceux existants. Ce SDK sera complété par un produit permettant de créer soi-même, relativement simplement, ses propres modèles, designers graphiques, validateurs, et générateur de code : les DSL Tools. Cette session, illustrée par un exemple de mise en œuvre des DSL Tools, fera le point sur cette technologie : • Qu’est ce que les DSL ? • Est-ce la fin d’UML ? • Qu’est ce que les DSL Tools ? • Qu’en attendre techniquement et économiquement ? • Qu’elles en sont les limites techniques actuelles ? • Dans quelles conditions et comment les intégrer à une chaine de développement ? Jeudis de l'objet - 30 mars 2006 TechEd 2002

Plan de la présentation Manipuler des « concepts et d’intentions » dans Visual Studio 2005 Custom Tools pour les settings et ressources Editeurs de Windows Forms Class Diagram Formaliser nos solutions … jusqu’aux DSL Retour d’expérience dans le domaine de la simulation Personnaliser Visual Studio 2005 Le Visual Studio SDK Les DSL Tools Discussion UML et DSL Limites techniques actuelles des DSL Tools L’avenir à court terme Quelles stratégies de modélisation : d’UML aux Domain-Specific Languages (DSL) ? Visual Studio 2005 apporte de nouveaux designers permettant de générer et manipuler du code, à partir de vues conceptuelles de plus haut niveau : les modèles. Grâce à un outillage sous forme de SDK, Microsoft offre la possibilité d’étendre ceux existants. Ce SDK sera complété par un produit permettant de créer soi-même, relativement simplement, ses propres modèles, designers graphiques, validateurs, et générateur de code : les DSL Tools. Cette session, illustrée par un exemple de mise en œuvre des DSL Tools, fera le point sur cette technologie : • Qu’est ce que les DSL ? • Est-ce la fin d’UML ? • Qu’est ce que les DSL Tools ? • Qu’en attendre techniquement et économiquement ? • Qu’elles en sont les limites techniques actuelles ? • Dans quelles conditions et comment les intégrer à une chaine de développement ? Jeudis de l'objet - 30 mars 2006 TechEd 2002

Manipulations de concepts dans Visual Studio 2005 L’exemple des fichiers de settings et ressources Persistance dans des fichiers XML (.settings, .resources) Resources.Designer.cs namespace WindowsApplication1.Properties { internal class Resources { internal static string Gagné { get {return ResourceManager.GetString("Gagné", resourceCulture);}} internal static string Perdu { get {return ResourceManager.GetString("Perdu", resourceCulture);}} } private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture;} set {resourceCulture = value;} internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsApplication1.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; return resourceMan; ResXFileCodeGenerator Jeudis de l'objet - 30 mars 2006

Voir la documentation de référence de la StronglyTypedResourceBuilder. TechEd 2002

Le mécanisme … Nous manipulons des ressources ou des paramètres de configuration de manière naturelle. Des Custom Tools génèrent du code basé sur un Framework (.NET 2.0) pour y accéder en runtime (masquant l’utilisation du Framework) System.Resources et System.Globalization System.Configuration Ce mécanisme est unidirectionnel. Jeudis de l'objet - 30 mars 2006

demo Custom Tools de Visual Studio 2005 Démo où on présente rapidement : Le fichier de ressource, et l’utilisation dans un programme Windows.Forms. On en profite pour montrer que les Windows.Forms sont maintenant dans des classes partielles. Et on en profite pour montrer le class diagram (bidirectionnel) TechEd 2002

De la Manipulation bi-directionnelle de concepts Pour les Windows.Forms c’est comme pour les ressources ou settings mais L’éditeur est graphique la sérialisation s’effectue dans le code c’est built-in (pas de Custom Tool) Même chose pour le Class diagram La notion de classe partial est très intéressante pour les générateurs de code Jeudis de l'objet - 30 mars 2006

Et si nous ... ... nous pouvions C’est possible prendre un modèle (par exemple un automate d’états finis) et en déduire du code source? « Ajouter StateMachine » à un projet Visual Studio. C’est possible car Visual Studio 2005 est extensible Mais il nous faut d’abord formaliser nos solutions à nos problèmes répétitifs Jeudis de l'objet - 30 mars 2006

Plan de la présentation Manipuler des « concepts et d’intentions » dans Visual Studio 2005 Custom Tools pour les settings et ressources Editeurs de Windows Forms Class Diagram Formaliser nos solutions … jusqu’aux DSL Retour d’expérience dans le domaine de la simulation Personnaliser Visual Studio 2005 Le Visual Studio SDK Les DSL Tools Discussion UML et DSL Limites techniques actuelles des DSL Tools L’avenir à court terme Quelles stratégies de modélisation : d’UML aux Domain-Specific Languages (DSL) ? Visual Studio 2005 apporte de nouveaux designers permettant de générer et manipuler du code, à partir de vues conceptuelles de plus haut niveau : les modèles. Grâce à un outillage sous forme de SDK, Microsoft offre la possibilité d’étendre ceux existants. Ce SDK sera complété par un produit permettant de créer soi-même, relativement simplement, ses propres modèles, designers graphiques, validateurs, et générateur de code : les DSL Tools. Cette session, illustrée par un exemple de mise en œuvre des DSL Tools, fera le point sur cette technologie : • Qu’est ce que les DSL ? • Est-ce la fin d’UML ? • Qu’est ce que les DSL Tools ? • Qu’en attendre techniquement et économiquement ? • Qu’elles en sont les limites techniques actuelles ? • Dans quelles conditions et comment les intégrer à une chaine de développement ? Jeudis de l'objet - 30 mars 2006 TechEd 2002

Evolution du processus Designers Fourniture d’outils pour aider les utilisateurs du framework Fourniture d’éléments stables sous forme compilée Frameworks Automatisation de l’application de patterns DSL SM Templates Designs.StateMachine Formalisées issues de l’experience Patterns Exemple de code solutions State-Pattern Clignottant éteint Allumé Eteint Automates d’états-finis Jeudis de l'objet - 30 mars 2006 TechEd 2002

Les Roles et les Artefacts Les « architectes » sélectionnent des procédures et conseils et créent deux types d’artefacts : un Framework Une codification des conseils (assistant, designer graphique ou non...) Les « développeurs » utilisent un modèle pour implémenter une solution Jeudis de l'objet - 30 mars 2006

Des DSL Nous avons besoin de langages spécifiques pour décrire les points d’extension de nos Frameworks Ces langages peuvent être : Textuels (XML, et autres : exemple ASPX, T4) ou Graphiques (DSL Tools) Horizontaux (techniques) Designer de Windows.Form, Class Designer, Workflow State Machine Designer Verticaux (métier) DSL Architecture de composants de simulation Jeudis de l'objet - 30 mars 2006

Les langages visuels Permettent d’échanger des informations dans un domaine spécifique property Corona label waiting running pause begin stop playing Shape Group Base members +v 0v 0.7CR R C 0.1R Jeudis de l'objet - 30 mars 2006 TechEd 2002

Plan de la présentation Manipuler des « concepts et d’intentions » dans Visual Studio 2005 Custom Tools pour les settings et ressources Editeurs de Windows Forms Class Diagram Formaliser nos solutions … jusqu’aux DSL Retour d’expérience dans le domaine de la simulation Personnaliser Visual Studio 2005 Le Visual Studio SDK Les DSL Tools Discussion UML et DSL Limites techniques actuelles des DSL Tools L’avenir à court terme Quelles stratégies de modélisation : d’UML aux Domain-Specific Languages (DSL) ? Visual Studio 2005 apporte de nouveaux designers permettant de générer et manipuler du code, à partir de vues conceptuelles de plus haut niveau : les modèles. Grâce à un outillage sous forme de SDK, Microsoft offre la possibilité d’étendre ceux existants. Ce SDK sera complété par un produit permettant de créer soi-même, relativement simplement, ses propres modèles, designers graphiques, validateurs, et générateur de code : les DSL Tools. Cette session, illustrée par un exemple de mise en œuvre des DSL Tools, fera le point sur cette technologie : • Qu’est ce que les DSL ? • Est-ce la fin d’UML ? • Qu’est ce que les DSL Tools ? • Qu’en attendre techniquement et économiquement ? • Qu’elles en sont les limites techniques actuelles ? • Dans quelles conditions et comment les intégrer à une chaine de développement ? Jeudis de l'objet - 30 mars 2006 TechEd 2002

Retour d’expérience dans le domaine de la simulation Contexte d’application Des études de recherche opérationnelle aux applications de simulation Un processus outillé. Jeudis de l'objet - 30 mars 2006

Le besoin initial : répondre plus efficacement aux demandes d’études de recherche opérationnelle Expert opérationnel, pilote de l’étude : « Je suis pressé. J’ai besoin d’une réponse rapidement. » Le client d’une étude de recherche opérationnelle ou le pilote qu’il désignera a besoin d’une réponse : Soit pour prendre une décision de type oui/non : il faut alors que cette réponse soit rapide Soit pour un besoin répétitif (il faut, dans ce cas produire un guide d’emploi ou un logiciel d’aide tactique) Le vocabulaire du client est un vocabulaire d’opérationnel. Pas un vocabulaire d’informaticien (par contre il n’est pas contre la formalisation du besoin sous forme d’un modèle graphique, ou sous forme mathématique, si une telle formalisation a une plus value pour décrire le problème) Jeudis de l'objet - 30 mars 2006 TechEd 2002

Rêve du chef … CDT : « Je voudrais que les études de RO soient réalisées plus rapidement en maîtrisant toute la verticalité » Le chef de l’ANPROS voudrait réaliser plus d’études en moins de temps. - Le cycle des ETO du ministère de la défense est d’au moins 3 ans ; c’est trop pour un opérationnel qui aura changé d’affectation). - l’ANPROS peut espérer réaliser des études en à peu près un an. Ce peut être trop pour prendre une décision Jeudis de l'objet - 30 mars 2006 TechEd 2002

Rêve du directeur d’étude … Directeur d’études : « Je comprends son problème. Il faut maintenant que je le modélise. Cette modélisation consiste à trouver une transformation vers un modèle qui pourra être manipulé pour résoudre le problème. Dans certains cas, ce qui pourra être manipulé pourra être une application de simulation - Traduire en termes de critères à évaluer sur des scénarii, - Construire un plan d’expérience i.e. développer une application de simulation dans laquelle je vais mesurer des variables qui seront transformées en critères Jeudis de l'objet - 30 mars 2006 TechEd 2002

La Démarche « Etude RO » Une réponse : Problématique Analyse de l’étude définit un besoin technique - Reformulation de la problématique -Utilisation de méthodes pour analyser le problème : analyse fonctionnelle, UML non formel,… Approche Mathématique - théorie des graphes, - probabilités, - programmation linéaire … Approche par la simulation - Création d’un scénario traduisant la problématique - Utilisation de modèles - Création d’une application à partir d’un environnement de simulation Etapes de réalisation d’une application d’étude Spécification de l’appli de simulation Conception -Développement Implémentation - Tests Exploitation (Variation des paramètres du modèle et de son environnement) Produit Mathématique Produit logiciel Résultats Validation Ou Modification Analyse des résultats Rédaction d’un rapport Une réponse : Un environnement générique de - développement, - exécution - et exploitation de simulations. Très rapide exposé de la démarche. Analyse (opérationnel) / dans certains cas, besoin d’une application de simulation. L’outil DirectSim Jeudis de l'objet - 30 mars 2006 TechEd 2002

Rêve du directeur d’étude… … qui est le maillon entre la demande et la réponse Directeur d’études : « Je comprends son problème. Il faut maintenant que je le modélise. Si la traduction du modèle en programme informatique pouvait aller plus vite ...» Le problème, dans ce cas, c’est que l’écriture d’une application de simulation prend énormément de temps … le directeur d’étude aimerait que cela aille plus vite. Jeudis de l'objet - 30 mars 2006 TechEd 2002

Rêve des développeurs Développeur : « Je souhaiterais : - Développer avec des langages et outils modernes, efficaces et adaptés au problème. Réutiliser ce que j’ai déjà fait  Que les tâches de développement répétitives soient faites par l’ordinateur » Le développeur (ce peut être le directeur d’études d’ailleurs) aimerait, lui aussi, aller plus vite. Cela peut se traduire en : Utiliser des socles applicatifs et des langages dont la puissance d’expressivité est plus grande. Réutiliser des composants, des modèles, des conceptions, des motifs architecturaux, etc … Utiliser des meilleurs outils de développement C’est très important pour la motivation d’accéder à ces besoins. Jeudis de l'objet - 30 mars 2006 TechEd 2002

De quoi avons-nous besoin concrètement? Besoin de capitaliser des expertises métiers Besoin d’usines de développements d’applications de simulation Assembler des applications de simulation avec des outils, en s’exprimant dans un langage proche de l’opérationnel, et s’appuyant sur des briques de connaissances métier (moyens + concepts d’emploi) Cette usine de développement doit être intégrée à un environnement de développement moderne Besoin d’un langage pour le binôme opérationnel / ingénieur pour les applications La situation passée : notation UML … Jeudis de l'objet - 30 mars 2006

L’environnement de développement, exécution, et exploitation de simulations DirectSim Jeudis de l'objet - 30 mars 2006

Contexte d’application Jeudis de l'objet - 30 mars 2006

Créer des applications de simulation A l’ANPROS, nous créons des applications de simulation pour les études de recherche opérationnelle Processus de développement basé sur une analyse de haut niveau en privilégiant UML – notation « general purpose » (depuis 1999) Mais C’est une affaire de spécialiste génie logiciel Or ceux qui ont besoin des simulations d’étude peuvent être des opérationnels (qui ne peuvent/veulent pas forcément parler UML) et ne peuvent / veulent pas aller trop loin dans le code. Or il faut pouvoir collaborer. Et Nos applications de simulation sont basées sur un « framework de simulation » générique et complexe qui capture et factorise ce qui est commun aux applications de simulation d’étude. Les modèles représentent visuellement les variations (points d’insertion) que permettent le framework Or le modeleur UML ne connaît pas ce framework, et ce n’est pas forcément facile de le lui apprendre. Aujourd’hui des outils (http://www.modelisoft.com) permettent une bonne synchronisation entre modèles et code (génération de code et rétro-ingénierie avec conservation des décisions de modélisation) – utilisation de frameworks spécifiques. Sur Ductor.NET : La chose à savoir c’est que que le framework met à la disposition des développeurs d’applications de simulation des composants de simulation de base (animés par le moteur de simulation) à étendre en fonction de ses besoins propres. Jeudis de l'objet - 30 mars 2006 TechEd 2002

Créer, maintenir des applications de simulation à partir de modèles Nous avons identifié 4 types de modèles pour spécifier, concevoir et développer des applications de simulation Parmi ceux-ci, la notion de « Comportement ». Ex : le comportement du chien ou de l’hélicoptère de la vidéo. Il est complexe en soi. Mais les choses sont encore plus compliquées par le manque d’interaction entre le modèle et le framework de simulation sous-jacent ou les composants de simulation réutilisés qui contraignent la modélisation Explication des petits bonshommes. Les 7 types de modèles couvrent la spécification, la conception des applications de simulation : En terme de capacité (ce à quoi cela doit répondre). C’est le domaine même de l’opérationnel En terme de structure (à différents niveaux de détails : 3 différents) En terme de comportements En terme de mapping avec des entrées et sorties pertinentes pour un opérateur opérationnel et l’application de simulation En terme de planification Ces 7 types de modèles ne sont pas explicités ici (cela dépasse le cadre de cette présentation). On ne retiendra que les modèles de comportement. Rendre explicite le lien avec la vidéo : le comportement du chien que nous venons de voir est ici modélisé par un StateDiagram UML Les modèles de comportements sont très proches du framework sous-jacent (on le redétaillera au transparent n°13. IntelliSense au niveau du modèle, débugging idem . Jeudis de l'objet - 30 mars 2006 TechEd 2002

Développement d’applications de simulation par les modèles Nous cherchons à rendre la modélisation d’applications de simulation possible par des non spécialistes (un plus grand nombre) S’attacher aux concepts Masquer le plus possible les détails du framework et aider à l’apprendre Avoir des éditeurs graphiques attractifs et ergonomiques qui parlent dans le langage de l’opérationnel. Les DSL … une solution possible Assembling Applications with Patterns, Models, Frameworks and Tools Microsoft nous fournit des outils « les DSL Tools » pour créer des éditeurs graphiques permettant de manipuler nos modèles spécifiques / métier Un problème … une solution possible. Jeudis de l'objet - 30 mars 2006 TechEd 2002

DirectSim : pourquoi ça va plus vite ! Ce qui est commun aux applications de simulation est factorisé dans des framework DirectSim : pourquoi ça va plus vite ! Des framework génériques Génie logiciel, métiers techniques. Framework de simulation Des modèles d’expertise métier « Marine » Capitalisés au fur et à mesure des études Un environnement de développement d’applications de simulation Dans Visual Studio.NET 2005 La modélisation y tient une place importante Un environnement d’exploitation Ce qui est spécifique à une application de simulation est capturé dans des modèles Jeudis de l'objet - 30 mars 2006

Plan de la présentation Manipuler des « concepts et d’intentions » dans Visual Studio 2005 Custom Tools pour les settings et ressources Editeurs de Windows Forms Class Diagram Formaliser nos solutions … jusqu’aux DSL Retour d’expérience dans le domaine de la simulation Personnaliser Visual Studio 2005 Le Visual Studio SDK Les DSL Tools Discussion UML et DSL Potentiel et limites techniques actuelles des DSL Tools L’avenir à court terme Quelles stratégies de modélisation : d’UML aux Domain-Specific Languages (DSL) ? Visual Studio 2005 apporte de nouveaux designers permettant de générer et manipuler du code, à partir de vues conceptuelles de plus haut niveau : les modèles. Grâce à un outillage sous forme de SDK, Microsoft offre la possibilité d’étendre ceux existants. Ce SDK sera complété par un produit permettant de créer soi-même, relativement simplement, ses propres modèles, designers graphiques, validateurs, et générateur de code : les DSL Tools. Cette session, illustrée par un exemple de mise en œuvre des DSL Tools, fera le point sur cette technologie : • Qu’est ce que les DSL ? • Est-ce la fin d’UML ? • Qu’est ce que les DSL Tools ? • Qu’en attendre techniquement et économiquement ? • Qu’elles en sont les limites techniques actuelles ? • Dans quelles conditions et comment les intégrer à une chaine de développement ? Jeudis de l'objet - 30 mars 2006 TechEd 2002

L’extensibilité Visual Studio Les possibilités Nécessite le VS SDK Cas des Language Packages et en particulier des DSL Options de personnalisation, Snippets Macros Add-Ins Packages Niveau d’intégration Cout d’intégration Accessibilité aux développeurs Jeudis de l'objet - 30 mars 2006 TechEd 2002

L’extensibilité de VS Comment choisir ? Options de personnalisation, Snippets Macros Add-Ins Packages L’extensibilité de VS Comment choisir ? Type Avantages Limitations Personnalisation Simple Ne peut pas contrôler l’IDE Macros Contrôle complet de l’IDE Ne peut rien ajouter. Fourni en code source Add-ins Compilé (performance et protection des sources) Permet d’ajouter : Des tool windows, Des commandes, Des pages d’Options Ne peut pas ajouter: Nouveaux types de documents, Nouveaux type de projets, Moteurs de debugging, Etc Packages Comme Add-In + Possibilités totales d’ajouts Modèle de développement plus complexe Jeudis de l'objet - 30 mars 2006 TechEd 2002

Les DSL Tools Auteur de DSL (Architecte) Utilisateur de DSL (Développeur) Utilisateur final crée Package DSL génère Framework VS 2005 SDK DSL Tools Code, Doc Fichiers de config Framework produit Application Framework Visual Studio 2005 Jeudis de l'objet - 30 mars 2006

Avec des DSL bien faits : Nous sommes guidés au fur et à mesure Le modèle est validé à tous moments Un Custom Tool génère du code Le code généré compile forcément ! Il y a des possibilités illimitées d’interactions avec Visual Studio : Editeurs spécialisés pour les propriétés Drag & Drop Debugger Etc … Jeudis de l'objet - 30 mars 2006

Comment créer un DSL ? Un type de projet dans VS 2005 (choix d’un template) Modification du Domain Model (méta-modèle) Mise à jour de la Designer Definition (notation graphique) Ecriture de code personnalisé pour la validation … et les aspects graphiques avancés, l’interaction avec VS Code T4 pour les générateurs de code Les détails de tout cela dépassent la portée de cette conférence … Jeudis de l'objet - 30 mars 2006

Le processus de création d’un DSL avec les DSLTools Assistant Crée et configure une solution Visual Studio.NET pour un éditeur de DSL (à partir d’un patron) Définition du DSL Création d’un installeur pour le déploiement du DSL Édition du « Domain Model » Méta modèle (DMD) Sérialisation du modèle Contraintes Partie « Package VS.NET » Ajout de code Corps des contraintes Import / Export personnalisé Autres enrichissements Génération de code de l’éditeur graphique Édition de la définition de l’éditeur graphique Notation graphique(DD) Lien entre méta modèle et Notation graphique Explorateur Fenêtre des propriétés Comportement de validation Sérialisation de l’état de l’éditeur Ce qui est : Vert est ce qui est réalisé. Rouge : les fonctionnalités à venir dans des versions ultérieures des DSLTools. Orange ce qui est partiellement réalisé. Build (F5) Test Debugging Utilisation du designer Génération d’artefacts Modification de patrons Exécution Lancement d’une instance expérimentale de VS.NET sur la solution de debugging Jeudis de l'objet - 30 mars 2006 TechEd 2002

Création d’un Designer avec les DSL Tools Code généré par les DSL Tools Notation Graphique (Dd) Mapping Dm <-> Dd Définition du méta- Modèle (Dm) Comportement spécifique Validation/ Contraintes Sérialisation XML Génération Code/ Artefact Code personnalisé (Utiliser le VS SDK) Jeudis de l'objet - 30 mars 2006

Anatomie d’un DSL 2. Designer Definition 1. Domain Model 4. Code sur mesure (validation) (effets élaborés) 3. Correspondance entre les deux. Jeudis de l'objet - 30 mars 2006

Code sur mesure Règles de cohérence du modèle /// <summary> /// When the event / condition / action changes the label is recomputed and /// vice versa /// </summary> [RuleOn(typeof(Transition), FireTime = TimeToFire.TopLevelCommit)] public sealed class TransitionAttributesChanged : ChangeRule { /// This method is called whenever any attribute of a Transition changes. /// It processes the coherence Label = Event + "["+Condition+"] / "+Action /// <param name="e"></param> public override void ElementAttributeChanged(ElementAttributeChangedEventArgs e) Transition t = e.ModelElement as Transition; // Compute Label when Event changes if (e.MetaAttribute.Id == Transition.EventMetaAttributeGuid) t.Label = ComputeSummary(e.NewValue as string, t.Condition, t.Action); // Compute Label when Condition changes else if (e.MetaAttribute.Id == Transition.ConditionMetaAttributeGuid) t.Label = ComputeSummary(t.Event, e.NewValue as string, t.Action); // Compute Label when Action changes else if (e.MetaAttribute.Id == Transition.ActionMetaAttributeGuid) t.Label = ComputeSummary(t.Event, t.Condition, e.NewValue as string); // Compute Event, Condition, Action when Label changes else if (e.MetaAttribute.Id == Transition.LabelMetaAttributeGuid) System.Text.RegularExpressions.Match match = eventLabelRegEx.Match(e.NewValue as string); if (match.Success) t.Event = match.Groups["EventGroup"].Value.Trim(); t.Condition = match.Groups["Condition"].Value.Trim(); string actionWithSlash = match.Groups["ActionGroup"].Value.Trim(); if (actionWithSlash.StartsWith("/")) t.Action = actionWithSlash.Substring(1).TrimStart(); else t.Action = actionWithSlash; } Règles de cohérence du modèle Règles de validation du modèle [ValidationState(ValidationState.Enabled)] public partial class State { /// <summary> /// A final state should not have outgoing transitions /// </summary> /// <param name="context"></param> [ValidationMethod(ValidationCategory.Open | ValidationCategory.Save | ValidationCategory.Menu)] private void ValidateFinalStateHasNoOutgoingTransitions(ValidationContext context) Transition[] transitions = GetOutgoingTransitions(); if ((Kind == StateKind.Final) && (transitions.Length > 0)) string error = string.Format(System.Globalization.CultureInfo.CurrentUICulture, DomainModel_Resource.FinalCannotHaveOutgoingTransitions, Name); context.LogError(error, "StateMachines 42", transitions); } … Jeudis de l'objet - 30 mars 2006

Générateur de code écrit en T4 (Text Templating Transformation) On peut en faire un Custom Tool ! /// <summary> /// Method to clean up the resources(such as timers for example) allocated by the state. /// </summary> /// <param name="disposing">Is the state disposing</param> /// <param name="stateMachine">State machine owning this state</param> /// <param name="driven">Driven interface</param> public virtual void Dispose(bool disposing, <#=stateMachineName#> stateMachine, <#=drivenInterface#> driven) { } } <# foreach(State state in StateMachine.AllStates) { // Find base class (class implementing ParentState) string baseName; if (state.ParentState == StateMachine) baseName = baseStateName; else baseName = state.ParentState.GetFullName(); // List of events Dictionary<string, List<Transition>> transitionsFromStateByEventSignature = state.GetOutgoingTransitionsGroupedByEventSignature(true); #> /// <#=state.Comment#> class <#=state.GetFullName()#> : <#=baseName#> foreach(string transitionEventSignature in transitionsFromStateByEventSignature.Keys) Transition t = transitionsByEventSignature[transitionEventSignature][0]; /// <summary> /// Declaration of the package providing the Simulation code generator /// </summary> [ProvideCodeGenerator(typeof(StateMachinesGenerator), "StateMachinesGenerator", "Custom tool that generates C# files based on .StateMachine files", true)] public sealed partial class StateMachinesPackage {} [Guid("9DA6F053-E5B9-4955-A6AE-89FB5505E8E6")] public class StateMachinesGenerator : TemplatedCodeGenerator { protected override byte[] GenerateCode(string inputFileName, string inputFileContent) // Replace the supplied file contents with the template we want to run inputFileContent = ASCIIEncoding.UTF8.GetString(Properties.Resources.StateMachinesReport); // Substitute the name of the current model file into the template. FileInfo fi = new FileInfo(inputFileName); inputFileContent = inputFileContent.Replace(@"%MODELFILENAME%", fi.Name); inputFileContent = inputFileContent.Replace(@"FileNameSpace", this.FileNameSpace); // Now just delegate the rest of the work to the base class byte[] data = base.GenerateCode(inputFileName, inputFileContent); byte[] ascii = new byte[data.Length - 3]; Array.Copy(data, 3, ascii, 0, data.Length - 3); return ascii; } Jeudis de l'objet - 30 mars 2006

demo Anatomie du DSL de comportement dynamique Démo où on présente le DSL State machine sur deux exemples : La lampe clignotante (qu’on crée in extenso … validation du modèle, etc …) Le portail automatique (on ajoute une transition temporelle pour limiter le blocage du portail) … et on utilise le débuggeur. TechEd 2002

Exemple d’utilisation des DSL Simulation Démo où on présente le DSL State machine sur deux exemples : La lampe clignotante (qu’on crée in extenso … validation du modèle, etc …) Le portail automatique (on ajoute une transition temporelle pour limiter le blocage du portail) … et on utilise le débuggeur. TechEd 2002

Vie d’une application de simulation  Modèle d’analyse d’une application de simulation Bibliothèque de modèles capitalisés  Conception de nouveaux composants de simulation  Mise au point Structure dynamique  Exécution Structure statique Code utilisation expertise Jeudis de l'objet - 30 mars 2006

L’hélicoptère suit un hippodrome et regarde (au radar) Le sujet Travail d’un hélicoptère en « sentinelle » Un sous-marin s’approche. L’hélicoptère arrête sa patrouille pour aller voir. Lorsqu’il détecte quelque-chose il va pour l’identifier L’hélicoptère suit un hippodrome et regarde (au radar) Jeudis de l'objet - 30 mars 2006

L’Environnement de développement Simulations Jeudis de l'objet - 30 mars 2006

Ce que nous avons vu dans la démo Des designers qui présentent des concepts spécialisés dans des modèles spécifiques Des générateurs de code qui savent prendre ces modèles et générer du code ciblant un framework. Une excellente intégration à VS 2005 Une autre façon d’architecturer ses projets Jeudis de l'objet - 30 mars 2006

Un découpage des classes par domaine Grâce aux classes partielles Structure statique Comportement (state machines) Code métier Application Team Frigate Helicoptere Station Domaine Classes Main.cs Application.simu Frigate.Behavior.sm Helicoptere.cs Station.simu Station.Behavior.sm Jeudis de l'objet - 30 mars 2006

Plan de la présentation Manipuler des « concepts et d’intentions » dans Visual Studio 2005 Custom Tools pour les settings et ressources Editeurs de Windows Forms Class Diagram Formaliser nos solutions … jusqu’aux DSL Personnaliser Visual Studio 2005 Le Visual Studio SDK Les DSL Tools Discussion UML et DSL Potentiel et limites techniques actuelles des DSL Tools L’avenir à court terme Quelles stratégies de modélisation : d’UML aux Domain-Specific Languages (DSL) ? Visual Studio 2005 apporte de nouveaux designers permettant de générer et manipuler du code, à partir de vues conceptuelles de plus haut niveau : les modèles. Grâce à un outillage sous forme de SDK, Microsoft offre la possibilité d’étendre ceux existants. Ce SDK sera complété par un produit permettant de créer soi-même, relativement simplement, ses propres modèles, designers graphiques, validateurs, et générateur de code : les DSL Tools. Cette session, illustrée par un exemple de mise en œuvre des DSL Tools, fera le point sur cette technologie : • Qu’est ce que les DSL ? • Est-ce la fin d’UML ? • Qu’est ce que les DSL Tools ? • Qu’en attendre techniquement et économiquement ? • Qu’elles en sont les limites techniques actuelles ? • Dans quelles conditions et comment les intégrer à une chaine de développement ? Jeudis de l'objet - 30 mars 2006 TechEd 2002

Discussion L’UML est-il mort ? à l’ANPROS nous utilisons UML et des DSL Les potentialités et les limites actuelles des DSL Tools ? Peut-on refaire ‘Rose’ avec des DSL ? Ce qu’on peut faire avec et qu’on ne peut pas faire sans L’avenir à court terme La V1 est pour mai. Beaucoup de changements en perspective Et ce n’est qu’un début ! Jeudis de l'objet - 30 mars 2006

FAQ Combien couteront les DSLTools ? Ils seront gratuits, dans le VS SDK. Est-ce qu’on est obligé d’héberger nos DSL dans VS 2005 ? Oui, pour le moment (sauf version Express) A terme, on pourra se procurer un VS « vide » Puis, on pourra héberger les designers hors de VS (V2 des DSLTools) Est-ce qu’on ne pourrait pas faire la même chose en UML ? C’était ce que nous faisions avant, mais : on a des compartiments spécifiques du métier pour le DSL « Simulation Architecture » et le DSL « State Machine » comporte la notion de « Délégation à une entité de simulation » Les deux connaissent le Framework et interagissent avec les assemblages de modèles. Tout est intégré et synchronisé dans le processus de production de code. Jeudis de l'objet - 30 mars 2006

Conclusion Utiliser un DSL ne nécessite pas d’être architecte. Le créer : si ! Les langages visuels y ont une place importante dans la Vision « Software Factory » de Microsoft. Un autre « pilier » est GAT (Guidage assisté), non présenté ici A Vous d’imaginer votre problème factorisé dans un Framework et ses variations capturées dans un DSL Jeudis de l'objet - 30 mars 2006

Liens utiles Informations sur les DSL Tools http://msdn.microsoft.com/vstudio/dsltools/default.aspx (Home page) http://forums.microsoft.com/msdn/showforum.aspx?forumid=61&siteid=1 Présentation ‘DSL Tools’ au symposium DNG 2005 http://www.dotnetguru.org/modules.php?op=modload&name=News&file=article&sid=681 (compte-rendus) http://dotnetguru.cledunet.com/SymposiumDNG-2005.zip : (13 Mo, planches 122-180) http://www.brainsonic.net/DesktopDefault.aspx?tabid=24&parentid=164&site=353 (Webcast) Lab virtuel en ligne http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032285310&EventCategory=3&culture=en-US&CountryCode=US VS 2005 SDK (Février 2006) http://affiliate.vsipmembers.com/affiliate/downloadfiles.aspx Compléments Indispensables jusqu’à la V1 ! http://www.modelisoft.com/Dmd2Dd.aspx (Synchro Dm <-> Dd) http://www.modelisoft.com/T4LangPackage.aspx (Coloration syntaxique T4) Jeudis de l'objet - 30 mars 2006

DSL Tools : la documentation Encore embryonnaire Jeudis de l'objet - 30 mars 2006