DSL Tools, Software Factories and Oslo – Model-driven the Microsoft .NET way

After primarily being concerned about Model-driven Software Development in general and specifically the concepts openArchitectureWare brings into our daily developer life, I wanted to figure out what Microsoft’s answer is like.

I separated my research into three parts:

DSL Tools

The Domain-Specific Language Tools firstly shipped as external package for Visual Studio 2005. For Version 2008 they joined the Visual Studio 2008 SDK.

With the DSL Tools Microsoft offers a graphical user interface for creating DSLs. Compared to MDSD terms, the DSL Tools base DSLs on a static meta-metamodel.

A DSL then consists of Classes and Relationships defining the metamodel on the one hand, and Diagram Elements describing the graphical experience for creating an model on the other hand. Out of this metamodel VS generates a fully typed object-structure as well as designers which can be plugged into Visual Studio or Visual Studio Shell.

To give you some impression these screen shots show the “End-End Wizard UIP”, one of many examples that ship with the Visual Studio SDK:

1) Defining a DSL

Defining a DSL

2) Just a click on “Run”: The Designer that was automaticly generated for this DSL + a Model following the DSL is opened in a Visual Studio Shell

Bild 4

3) Another click on “Run” starts the generated wizard program that was defined by the model.

Bild 5

 

T4 – Text Template Transformation Toolkit

For the generation of source code both DSL Tools as well as Software Factories utilize T4, a ASPX-like template language for generating program code, XML or any text files as for example database schemas.

A nice thing is that T4 allows you to use your favorite .NET programing language. But it is not even half as powerful as for example XPand template language which is used in openArchitectureWare.

It unfortunately lacks support for polymorphism, multi-file generation, protected regions and custom beautifiers.

Resources on DSL Tools

Download and Install

References

People

These names were just popping up all over.

  • Steve Cook, Book Author, Microsoft, formerly representing IBM on the OMG Team specifying UML2, does now work on DSL Tools + UML.
  • Cameron Skinner Comments on Visual Studio Team System, Design and Architecture, .NET, and beyond
  • Stuart Kent, Book Author, Senior Program Manager, Visual Studio
  • Gareth Jones, Microsoft, Senior Development Lead, Visual Studio

Software Factories

The software factories Microsoft offers are meant to guide through the whole developing lifecycle of an application mostly for one specific horizontal domain.

Software Factories are based on GAX and GAT, the Guidance Automation Extensions and the Guidance Automation Toolkit. These are frameworks to create wizards and macros/recipes that guide through the creation of an solution.

It would be wrong to say that Software Factories by concept incorporate MDSD principles, but there is still an analogy.

I could imagine building a software factory for compositing different models into a very specific ready-to-use-factory that fully considers MDSD principles by using DSLs and Code Generators.

The Microsoft Patterns and Practices Team is developing a couple of Software Factories, which include:

Especially these implementations lack at one point: Refactoring! Since code is generated once, instead of generating over and over again, changes on the templates and the model wont affect generated code.

The Software Factories are not meant to be used as products! That does’t mean they are not made for productive us, but it means that a isv will have to create own Software Factories build upon GAT/GAX or at they will at least have to highly customize the factories for their end customers use.

While DSL-Tools and MDSD often help to get bigger projects done more rapidly, developing a software factories will most likely not return its investments during the first project they are used for. You wont build a car-factory to build one single car either!

Resources

Download and Install

People

Codename “Oslo

Since October 2007, when Microsoft firstly mentioned Codename “Oslo” there has been a lot of rumors on what “Oslo” means. Oslo was never announced as a product, but more likely as a concept and strategy influencing Microsoft’s enterprise and development products line.

In fact the Oslo wave grew so big, that the different camps at Microsoft use to describe it differently.

The two latest official Statements were:

  1. At TechEd Fishbowl in June David Chappell described Oslo as:
    • A storage repository and visual modelling tool
    • A new version of Windows Workflow Foundation
    • A process server to host WCF services and WF workflows
  2. In September there was an announcement from the BizTalk camp. Douglas Purdy said Oslo now consists of just the modelling components, which are:
    • A modelling tool
    • A modelling language
    • A storage repositoryThat is it. That is all Oslo is. Oslo is just the modeling platform.

But Microsoft still leaves plenty of room for speculations. As I understand, Oslo is a campaign that affects plenty of products and services. Therefore it’s impossible to say what Oslo exactly is just in a few words.

The aspects on Oslo that excite me most, and to which I look forward to most, are:

  1. The modeling language/tool to describe schemas for the repository as well as meta models and DSLs?
  2. A repository that is able to store and connect tons of data following these models.
  3. A process server to host WF, WCF and hopefully own services that brings stability, scalability, hot deployment and all the other services we are used from Java Application Servers.

David Chappel also described the release roadmap, but without confirming any exact dates:

  1. A CTP Release around PDC (October 27?)
    He didn’t say what that will include.
  2. New Workflow Foundation with .NET 4 and a new Visual Studio version
  3. The repository including the modeling language and its visual editor + a first part of the process server
  4. A more complete version of the process server, including lifecycle manager (whatever that means)

The indend, they tell me, is to ship these three chunks of technology in a fairly close succession. As much so as possible.
David Chappell, PDC 2008

There is nothing left but waiting for the PDC in October. So see you there!

Resources

People

Well, everyone who seems to be really important does not say anything about Oslo. But still we got some statements in the past.

  • David Chappell – Consulter and Keynote Speaker who seems to be a insider to Microsoft and its forthcoming Oslo technologies
  • Douglas Purdy  – Product Unit Manager at Microsoft. His vision: “to make everyone a programmer (even if they don’t know it)”.
  • Jon Flanders

kick it on DotNetKicks.com

9 thoughts on “DSL Tools, Software Factories and Oslo – Model-driven the Microsoft .NET way

  1. Pingback: Kang The Koder » Oslo – More news and predictions

  2. Hi, Great summary. My respect to how you went through all that docs in such a short time period and stressed the right points.

    You mentioned that T4 doesn’t fit your needs in some some ways. Can you elaborate more on what do you mean with supporting polymorphism in a template language?

    Also, T4 doesn’t support multiple files because you can just create multiple templates working with the same model – one for each target file. The approach is that you already have static files you need to generate dynamically. So, you first replace them with dummy templates (without any logic, only the boilerplate). Then you start automate things iteratively, bringing more logic into the template. That DSL book describes the approach in more details.

    Sergey

    P.S. A face-to-face comparison of T4 and XPand would be a great topic for your next article 😉 I would like see a small but real example of using both technologies.

  3. Pingback: Microsoft Buzzword-bingo with Oslo, M, Quadrant, Dublin and some facts about .NET Framework 4.0 and Visual Studio 2010 (October 2008, Pre-PDC) « .Net Braindrops

  4. Pingback: Post-PDC: Again, what is "Oslo"? M, MGrammar, Quadrant, Repository, textual DSLs, DSL Tools, UML-Modeling (November 2008) « .Net Braindrops

  5. Interesting post!

    I also was trying to generate multiply files using T4, but this needs some advanced tricks, like getting a reference to current DTE object in VS.

    You may be interested with my post:
    http://blog.devarchive.net/2008/11/generating-code-using-ms-codename-t4.html
    (Generating code using MS codename “Oslo”, T4 templating engine and VS Custom tool).
    Here I try to “marry” different technologies relating to MDD –
    Oslo, T4 and VS Cutom Tool to generate multiply files base on model created on custom DSL language created by using Oslo M Grammar DSL, using custom T4 host.

  6. Pingback: Open Letter to Douglas Purdy: Eclipse, Oslo, and how to invent the future together « .Net Braindrops

  7. I explicitely mentioned it to be an example from MS:

    To give you some impression these screen shots show the “End-End Wizard UIP”, one of many examples that ship with the Visual Studio SDK:

Leave a reply to Kirill Chilingarashvili Cancel reply