DSL Factory

La communauté francophone autour des DSL Tools, et de l'extensibilité Visual Studio
The French-speaking community about DSL Tools and Visual Studio Extensibility
Bienvenue à DSL Factory Identification | Inscription | Aide
dans
Accueil Blogs Forums Photos Fichiers Roller

Jean-Marc

[Débutants] DSL Tools : s'y retrouver dans le SDK de Visual Studio 2005

Vous venez de télécharger le SDK V3 de Visual Studio 2005 (à partir de http://msdn.microsoft.com/vstudio/extend ou plus directement ici), et vous voulez vous mettre aux DSL Tools, mais qu'est-ce que ce SDK vous apporte ? Pour commencer à répondre à cette question, je vais aborder la visite du SDK du double point de vue de :

  • ce qui est ajouté au wizard "new project"
  • ce qui est installé sur le disque-dur de votre ordinateur de développement : l'élément du menu "démarrer", et les répertoires du SDK (après-tout, c'est une façon comme une autre d'aborder le problème). Nous ne démarrerons donc pas Visual Studio ici. Cela sera fait dans le prochain post. 

 

Dans Visual Studio : de nouveaux types de projet dans le wizard "New Project"

Le wizard "New Project" contient, suite à l'installation du SDK de nouveaux types de projets dans la catégorie Extensibility :

  • Visual Studio Integration Package permet de créer un Package Visual Studio.
  • Visual Studio Language Package crée une spécialisation de Package Visual Studio pour manipuler un langage.
  • Domain Specific Language Designer permet de créer un nouveau DSL. Nous allons, présenter ci-dessous, une image du wizard qui est lancé.
  • Domain Specific Language Setup vous permettra, ultérieurement, de créer un setup pour déployer votre DSL.
  • Help Integration Wizard, permet de créer un projet d'aide (MSDN2)

 

L'assistant DSL

Si vous choisissez le template Domain Specific Language Designer vous obtiendrez un assistant qui vous permettra de choisir parmi 4 templates de DSL (nous pourrions parler de DSL de base) :

  • Class Diagrams est un DSL comportant les concepts et relations des diagrammes de classe de l'UML.
  • Component Models présente un diagramme de composants (proche de celui d'UML2)
  • Task Flow présente un diagramme proche de diagrammes Etat / Activité en UML.
  • Minimal Language est un langage ne comportant qu'un concept. C'est à partir de lui que vous partirez pour créer un DSL "from scratch", lorsque les autres templates ne vous conviendront pas pour démarrer un DSL.

 

 

Sur votre disque dur : le menu Démarrer

Lorsque vous installez le SDK, un répertoire Visual Studio 2005 SDK est ajouté au menu démarré, lequel contient lui même le numéro de version du SDK (formé de l'année, et du mois de publication), ici 2006.09 pour la version V3 du SDK publiée le 15 septembre 2006. Ce répertoire comporte des raccourcis sur :

  • Un fichier Readme sur les DSL Tools. (A lire absolument si vous voulez migrer des DSL réalisés avant la sortie de la V1 des DSL Tools)
  • Un outil pour créer des fichiers d'aide HelpStudio Lite. Cet outil a l'air sympa, mais je n'ai jamais réussi à faire fonctionner l'import de documentation depuis Word. Peut-être qu'il est plutôt prévu pour fonctionner avec les versions anglaises d'Office ?
  • Un .bat permettant de réinitialiser l'instance expérimentale de Visual Studio 2005. Pour comprendre de quoi il s'agit, il faut d'abord que je vous dise que lorsque vous créez des packages pour Visual Studio, en fait vous modifiez Visual Studio, et donc vous pouvez y introduire des bugs. Or comme vous modifiez Visual Studio à l'aide de Visual Studio ... vous imaginez s'il plante dès le démarrage. Pour éviter cela, les packages (et notamment les DSL) que vous créez sont installés dans une instance de Visual Studio appelée instance expérimentale. Vous les débuggerez donc dans l'instance expérimentale, et pourrez faire toutes les bêtises que vous voudrez, expérimenter, créer plein de DSL. Cela n'a pas de conséquence importante car :
    1. Votre instance "normale" de Visual Studio n'est pas impactée
    2. Vous pouvez à tout moment remettre votre instance expérimentale dans un état correspondant à celui de votre instance normale par la commande Reset de visual Studio 2005 experimental hive.
  • L'aide hypertexte correspondant au SDK. Le même contenu, est disponible en ligne, sur le Web, sans même avoir à installer le SDK, dans le cadre de la MSDN library (http://msdn2.microsoft.com/en-us/library/aa396774.aspx)
  • Une commande pour démarrer l'instance expérimentale de visual Studio (et non l'instance normale). Vous en aurez par exemple besoin pour faire des démos de vos DSL tant que vous ne les aurez pas déployés. Si vous débugguez vos DSL, par contre, votre projet DSL est configuré être lancé sous débugguer dans l'instance expérimentale.
  • Un shell avec quelques variables d'environnement enregistrées pour le SDM SDK
  • Un browser d'exemples du SDK (un peu à l'image de celui du SDK de DirectX, pour ceux d'entre vous qui connaissent)
  • Un lien sur le répertoire VisualStudioTeamSystemIntegration (voir ci-dessous)

 

Sur votre disque-dur : les répertoires du SDK

Pour la version V3 du SDK de Visual Studio 2005, le répertoire par défaut est C:\Program Files\Visual Studio 2005 SDK\2006.09. Au fur et à mesure des CTP (Community Technology Previews), qui sortent à peu près tous les mois, les numéros d'année, et de mois sont incrémentés. Mais la structure reste la même.

Le répertoire racine du SDK

Dans ce répertoire vous pourrez trouver :

  • Le browser d'exemples du SDK.
  • un répertoire Prerelease, avec des informations sur des produits qui seront intégrés ultérieurement dans le SDK.
  • un répertoire VisualStudioTeamSystemIntegration qui comporte le SDK de Visual Studio Team System (toutes éditions) et de Team Fundation Server. Ce n'est pas le propos de ce billet, mais le sous-répertoire Version Control/Continuous Integration Sample contient un .msi pour installer un exemple d'intégratio continue.
  • et surtout le répertoire VisualStudioIntegration qui nous intéresse ici, les DSL Tools servant, en effet à créer des designers graphiques pour de langages spécifiques, et ces designers pouvant être intégrés à toutes les versions de Visual Studio, à partir de la version Standard.

 

Le répertoire VisualStudioIntegration

Le répertoire VisualStudioIntegration du SDK comporte, à nouveau un certain nombre de répertoires :

  • Archive contient des exemples livrés avec la précédente génération de SDK, pas forcément pour Visual Studio 2005 d'ailleurs
  • Common comporte les assemblages (pour les composants managés), les include et lib, et certains sources (notamment pour des bibliothèques managées du SDK)
  • ExtraDocumentation comporte des documentations pour des outils du SDK en cours de développement, tel le Managed Babel (pour apporter la coloration syntaxique et l'intellisense à vos langages textuels, tout en écrivant du code managé), ou les Managed LeX et YACC (MPLEX et MPPG)
  • Redistribuables comporte tout ce que vous, en tant qu'auteur de packages étendant Visual Studio 2005, vous pourrez redistribuer à vos clients. Nous verrons plus tard que le répertoire Redistribuables comporte d'ailleurs un sous répertoire DSL Tools qui comporte un setup.exe, et un .msi contenant le Runtime des DSL Tools (quelques assemblages nécessaires au fonctionnement de vos designers). Ces deux éléments seront systématiquement ajoutés à vos setup de DSL, lorsque vous en produirez !
     
  • Tools comporte des outils, notamment des fichiers permettant aux DSL Tools de fonctionner : il s'agit par exemple :
    • des informations et outils de migration depuis les précédents CTP des DSL Tools
    • les templates de solutions correspondants aux 4 DSL proposés par le Wizard des DSL
    • les text-templates utilisés dans tous les DSL pour la génération de code à partir du fichier .dsl décrivant vos DSL.
  • Samples comporte plein d'exemples du SDK. Ceux qui vont nous intéresser au premier abord seront ceux du sous-répertoire DSL Tools :
    • End-End.WizardUIP décrit un exemple complet de DSL, des spécifications jusqu'au manuel utilisateur, en passant par le setup, pour un DSL destiné à apporter une formalisation au UIP application block. Il y a notamment un document de 41 pages (End-End.WizardUIPGuide.doc) qui décrit en détail le développement du DSL, et son utilisation.
    • Example.DesignerCustomizations présente quatre exemples basés sur les exemples générés par le Wizard. Ces exemples comportent beaucoup de code sur-mesure pour :
      • la validation des modèles,
      • l'ajout de contraintes
      • la personalisation du comportement graphique du desig

        A titre d'exemple, l'exemple Class Diagram, créé à partir du template Class Diagram, montre notamment comment remplacer plusieurs types d'associations (unidirectionnelle, bidirectionnelle, agrégation, composition), par une seule relation et des décorateurs différents. Cela fournit une bien meilleure expérience utilisateur, à peu de frais.


    • Example.Validation présente un le code sur mesure pour la validation des contraintes que les modèles doivent respecter, sur un exemple appelé FamilyTree, et décrit des arbres généalogiques.
    • Example.TextTemplating décrit la manière de créer des DirectiveProcessor particuliers : les DirectiveProcessor étant les classes qui permettent d'accéder au modèles depuis les TextTemplates.
Publié Tuesday, October 31, 2006 10:46 PM par Jean-Marc
Classé sous : ,

Commentaires

 

Alain said:

Introduction à ce que sont les DSL Tools et à quoi ça peut servir, en prenant UML comme référence.
November 3, 2006 5:35 PM
Les commentaires anonymes sont désactivés

About Jean-Marc

Jean-Marc Prieur [MSFT - Visual Studio Ecosystem] Il est passionné de génie logiciel, de modélisation et de technologies informatiques, de réutilisation et de méthodologies

Calendrier des messages

<October 2006>
SuMoTuWeThFrSa
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

Abonnements

Propulsé par Community Server, par Telligent Systems