index > Visual Studio Team System - Domain-Specific Language Tools > Production quality planning of MS DSL tools

Production quality planning of MS DSL tools


Hello,

Having completed a review of the DSL tools in their latest state, many questions come to mind, mainly related to their readiness for production and the quality of the first release. I wish getting some answers from Microsoft:

  • What is the timeframe for the release of the first official version of DSL tools. Will these be integrated to VS2005 as an add-on or only available for the next version of the platform?
  • Regarding this first production release, are their details on the packaging of modeling tools for end users? For example assuming we build a dsl and metamodel with these DSL tools, how will the modeler be given to end users who will use it to build new models and generate code - in more technical words how to package the software factory for end users. Will Microsoft take impose royalties on these software factories.
  • Regarding the first release, will the problem regarding the synchronisation between the metamodel and its supporting code be resolved? Currently if we change the name of an element of the metamodel, it is required to do a global search and replace in the supporting code.
  • Regarding the first release, to what extent will existing models be automatically updated if the meta model changes. Currently any change in the metamodel breaks all existing models.
  • Finally is Microsoft commited to maintaining the generated models in open format like XML to enable manipulations outside the GUI of the modeler. For example to update the model through custom scripts if the meta model changes etc.
  • A General question on MDD and the microsoft implementation: are there any plans to implement techniques for synchronization between the generated code and the original model or will the model remain the first artifact with at most a clear separation between generated code and non-generated code.

Many thanks for your time in answering these concerns

Philippe

phil_m
  • V1 release is expected late August or early September.
  • Packaging for end users is done using the Deployment (or "Setup") projects. Details are in the VS SDK help file.
    • Under the Windows Start menu, open All Programs/ Visual Studio 2005 SDK / 2006.06 / June 2006 Help
    • In the help browser, open Visual Studio SDK/Domain Specific Language Tools/Creating Domain-Specific Languages / Deploying Domain-Specific Language Solutions
  • We currently have no plans to propagate DSL Definition changes into custom code. Since custom code can be very diverse, it would be quite difficult to do this systematically. However,
    • for simple name replacements, you can do a global replacement on the whole project, including the DSL file.
    • Alternatively, you can templatize your custom code: that is, make a template that reads the model. Details are in the help file under Domain-specific language tools reference / Text Templating
  • Changes in the DSL Definition are handled gracefully on reading existing models. Unrecognised names are ignored, but parts that have not changed will be read OK. We have sometimes discussed the idea of a tool that would take an old and new DSL Definition and automatically produce a translator to upgrade models, but this will certainly not happen for V1.
  • Models will always be serialized in XML, and we provide parameters the details of the serialization (in the XML Serialization part of the DSL Definition). The API will always be available, so that you can write your own serializer/deserializer if you want to use some other format.
  • We have no plans to do two-way synchronization.

Hope this is useful.




- Alan [Microsoft]
Alan Cameron Wills

Alan,

I tried the suggestion below:

  • Alternatively, you can templatize your custom code: that is, make a template that reads the model. Details are in the help file under Domain-specific language tools reference / Text Templating
  • However, I cannot find any documentation on how and where to put your own templates referring to the DSL definition. I tried to simply put a new template in the template directory of the DSL Tools but that didn't work. Do you have any pointers on how to do this?

    Jos Warmer

    Jos Warmer

    Hi Jos,

    So the first place you can put your own template is in your generated code directory alongside all the other tempalte stubs in your own dsl project.

    If you then want to share this template with other projects, you can pull most of the code from the template out into a separate .tt file and include that using the same <#@ include ... #> mechanism you'll see that the built-in templates use. The top-level header stub always has to reside in your generated project however.

    You should be able to put the file to include alongside the other templates in your dsl tools folder under Tools\DSLTools\TextTemplates\Dsl (or DslPackage) next to the standard ones.

    A nicer solution is to keep your own templates separate from the built-in ones by adding your own template directory to the include search path.

    You can do this on a per file extension basis by adding a registry key under

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\TextTemplating\IncludeFolders\.tt

    (or any other file extension you use for your template files instead of .tt)

    You then need a string value "Include<N>" where N is a sequential number greater than the last exisiting item there.
    This value must contain the new include path.




    Gareth Jones - Developer - DSL Tools & Software Factories Platform [MSFT]
    GarethJ MSFT
    reply 4

    You can use google to search for other answers

     

    More Articles

    Unable to Start Debugging !!!
    protected internal
    Catch On Properties Change Event
    Nested Concept and Nested Diagram
    DSL Setup project fails to compile
    GAC support in Templating Engine (Feature Request)
    How are new objects created in a DSL?
    Abstract classes in minimal language
    updated DSL Customization Samples and Guide available soon
    Walkthrough-1 problem
    Welcome to Bokebb   New Update   Joins the collection  
     

    New Articles

    Text template load a file
    Generate a Domain Model during Debugging
    Overriding custom attribute in a derived…
    updated DSL Customization Samples and Gu…
    End-to-end samples and updated customiza…
    Background Picture
    Using DSL tools outside VS
    Self-contained Embedding
    UIPChart problem
    Cannot create a new Store
    More than one Diagram / File - Extension…
    Zoom feature
    Jochen Seemann's presentation on PDC05
    'security error'
    Moving DSL Project to another machine

    Hot Articles

    How to change the font of a shape?
    Backward Compatibility Issue with Domain…
    March CTP DSL uninstall / VS (RC) issue
    How to Block Self-Relationship
    Duplicate AddRule classes in ViewFixupRu…
    Installing June 2006 VS SDK CTP side-by-…
    When do you plan to update documentation…
    Prevent generated DSL code from producin…
    What to use instead of GetDisplayPropert…
    How adequate-rich or suffitient-complete…
    IE7 Beta 2 and DSL Tools
    domain class inheritance, where types ar…
    Jochen Seemann's presentation on PDC05
    Custom connector target (June CTP)
    Adding files generated with text templat…

    Recommend Articles

    Model Query Capabilities
    designer definition toolbox item - compa…
    DSL Tools V1 Released
    Can i use the DSL Diagram components in …
    Modal EditStyle and enumerations
    Programmatically creating diagrams
    Open a new Document
    What can be created with DSL?
    TextDecorators in SwimLaneShapes
    changing defaults in inherited propeties
    Interacting with Server Explorer
    How to make the connector text parallel …
    circular dependency and custom properties
    Duplicate AddRule classes in ViewFixupRu…
    Add shapes and connectors to diagram pro…