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 – Great graphical designers for Domain-Specific Languages
- Software Factories – Powerful project wizards and guidances
- Codename “Oslo” – Essentially a lot of rumors, but also new modeling techniques to be launched around PDC 2008
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
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
3) Another click on “Run” starts the generated wizard program that was defined by the model.
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
- MSDN: Domain-Specific Language Tools
- MSDN: Visual Studio 2008 SDK
- DSL Tools Webcast with Stuart Kent (1 hour)
Great presentation on DSL in general as well as the DSL Tools implementation in Visual Studio. It includes some Demos as well. - Gareth Jones on DSL Extensibility (Webcast)
- VSX – DSL Tools A lot of how-to videos.
- Skinner’s Blog : DSL + UML = Pragmatic Modeling
- stuart kent’s blog : DSL Tools beyond VS2008
- Book: Domain-Specific Development with Visual Studio DSL Tools
- Oleg Sych – » Text Template Transformation Toolkit
Download and Install
- Visual Studio 2008 (90-Day-Evaluation)
- Visual Studio 2008 SDK
- Optionally: Clarius T4 Editor
References
- Microsoft EDM Designer
- LINQ to SQL Entities
- Microsoft P&P Software Factories
- Some other Software Factory Vendors
- JaDAL – Just another DSL-Tools Addon Library – Home
- DSL Editor PowerToy – Home
- DSL Import XSD PowerToy – Home
- DSL Cross Model Framework – Home
- Candle – Experimental multi-layers application generator using DSL tools – Home
- Sculpture MDSD Toolchain ScreenCast
- …. There are tons of open source projects on Codeplex that extend or use the DSL Tools
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:
- Smart Client Software Factory, for Visual Studio 2008 (released: April 2008)
- Web Service Software Factory (released: July 2006 and updated December 2006)
- Mobile Client Software Factory (released: July 2006)
- Web Client Software Factory (released: January 2007)
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
- Software Factories MSDN Starting Pages
- Introduction to the Guidance Automation Toolkit
- MSDN Architecture Webcast: Packaging Design and Architecture Guidance for Visual Studio (Level 300)
- Harry Pierson’s DevHawk Weblog : Introducing the Guidance Automation Toolkit
- Software Factory (Microsoft .NET) – Wikipedia, the free encyclopedia
- Microsoft Patterns and Practices Team
- Dennis Doomen.NET: Software Factories..is it worth it?
- Has Microsoft Implemented the Software Factory? I think not
- Making the Business Case for Software Factories
- ARCast – MDA vs. Software Factories
Audio show with Jack Greenfield and Martin Danner on MDA, UML. - ARCast – DSL and Software Factories
Audio talk with Steve Cook about DSLs and Software Factories. - Software Factories Gunther Lenz’s Blog on Model Driven Software Development (MDSD) and Software Factories.
- Software development magazine: UML, Agile, programming, testing, project management, jobs
- Software Factory Initiative : Software Factories 2.0
- Software Factory Initiative
Download and Install
- Guidance Automation Extensions and Toolkit
Note: You need to install the extensions AND the toolkit with two separate installers. - For Example: Smart Client Software Factory – April 2008
People
- Dennis Doomen – A dutch Speaker and .NET Architect dedicated to the software factory community.
- Jezz Santos Principal Product Development Consultant
- Jack Greenfield’s Blog Software Architect, Enterprise Tools, Microsoft
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:
- 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
- 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:
- The modeling language/tool to describe schemas for the repository as well as meta models and DSLs?
- A repository that is able to store and connect tons of data following these models.
- 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:
- A CTP Release around PDC (October 27?)
He didn’t say what that will include. - New Workflow Foundation with .NET 4 and a new Visual Studio version
- The repository including the modeling language and its visual editor + a first part of the process server
- 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
- The Road to Oslo #2 – Product Outlines
Conclusion on what different people say about Oslo. - What is Oslo? « Douglas Purdy
- endpoint.tv – The Road to “Oslo” by Ron Jacobs
David Chappell on what Oslo is about. - endpoint.tv – Framework Best Practices with an eye towards “Oslo”
- Q&A: What’s Next for BizTalk Server: Oliver Sharp
”Oslo” is the code name for Microsoft’s forthcoming modeling platform. - ZDnet More Microsoft ‘Oslo’ modeling details fall into place
- plural sight – Don Box on Oslo
- Peter Friese – Microsoft excited about modelling
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
Pingback: Kang The Koder » Oslo – More news and predictions
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.
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
Pingback: Post-PDC: Again, what is "Oslo"? M, MGrammar, Quadrant, Repository, textual DSLs, DSL Tools, UML-Modeling (November 2008) « .Net Braindrops
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.
Pingback: Open Letter to Douglas Purdy: Eclipse, Oslo, and how to invent the future together « .Net Braindrops
Same Example as MSDN
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:
Hello,
I just want to add that DSLs and T4 are really a powerful toolset. Indeed we can see products like http://www.tangiblearchitect.com or tangible T4 Editor from 3rd parties as well as ASP.NET MVC and Entity Framework head in this direction.
Tangible Architect
If you are looking for good T4 how-do-i videos you can find some here:
http://tinyurl.com/T4-How-Do-I
T4 How Do I Videos
Regards
Tim