Archive for the ‘DSL’ Category
A new Architecture power tool, the Feature Builder has been announced. This is the outcome of the earlier Blueprints project. As I had written earlier, in many ways Blueprints was the successor to GAT/GAX in terms of a platform for providing executable guidance inside Visual Studio and in its first incarnation was very much an ‘incubation project’.
To quote the introductory paragraph from the MSDN Channel 9 intro video page
“Feature Builder is an official Power Tool from the Architecture Tools team within the Visual Studio Product Group enabling the rapid construction of Visual Studio Extensions (VSIXs) that combine VS Extensibility (menus, etc.) , Project/Item/T4 templates and step-by-step guidance/documentation. The output VSIX, called a Feature Extension, delivers all these things, including the guidance, directly within Visual Studio”
The MSDN Forum for this tool is here and there is a FAQ posted by David Trowbridge, the architect on the project on this thread which explains what versions of VS are needed etc. There are a number of intro videos on Channel 9
All of this now builds on the architecture & modeling capability inside VS2010, so the tool itself cannot be run in a previous version (say VS2008) (I know it should be pretty obvious, but equally sure that someone still using VS2008 is going to ask this 🙂 ). I guess if you attach code generation to the models that you build with this, then those could emit code for solutions in .NET 3.5.
Another question that is bound to come up now is “what happens to the old P&P software factories such as the Service Factory, Web Client SF and so on“. The P&P team have blogged about refreshing the factories for GAT/GAX 2010 and there is no public information yet on what impact, if any, this Feature Builder tool will have on those factories going forward, but as soon as I hear of any plans that can be disclosed, I’ll post a follow up.
Check out the tool and send the team feedback via the MSDN forum. I expect to dive in head first now and share what I learn here. Enjoy 🙂 .
Some of you may have noticed that the Microsoft Blueprints project has gone quiet and the site taken down from CodePlex and MSDN. I had written a couple of posts about Blueprints in the past and how it was eventually going to take over from GAT/GAX.
Anyway, if you are wondering what’s happening, the answer is that we are making some changes around Blueprints. The Blueprints project was an important incubation whose purpose was to explore process guidance and automation. They helped us (that is, the product teams involved in developing this) gain a better understanding of the requirements for this kind of technology through customer and partner feedback. The reason we took down the external projects was to focus the incubation internally and we are looking at taking this forward so we can support process guidance and automation in a manner that is aligned with VS Team System product direction.
As users of VSTS know, the suite is not based around any particular methodology and can support a range of project methodologies ranging from very lightweight to very formal and process driven. The tooling supports this range of methodologies. Software Factories are an important development discipline which we support and as Jezz Santos and Edward Bakker and other thought leaders have written, it is possible to approach factory development itself in agile or very formal ways and its quite often found that a rapid iterative approach works very well with developing factories That said, VS should and will support factory development going forward in a manner thats agnostic of methodology. Exactly how this manifests itself in the product suite remains to be seen but having looked at the features that are available already in Dev10 Beta-1 in the VS Team Architect edition, we can be sure that it will be of high quality.
GAT/GAX will be available in VS10 and the DSL Toolkit has been improved quite a bit and aligns well with the new “Extensions” model so if you havent checked out the latest developnments in the DSL Toolkit space, I would encourage you to take a look. Stuart Kent has a nice video on the new deployment method for DSL Toolkit based packages.
I will post more on this topic when there is more information that I can share and especially when there are bits available to play with. Watch this space 🙂 .
Mike Lehman has posted a set of screen-casts on Channel 9 that explain the process of authoring and composing blueprints, including how to use the WF process workflow, creating custom extensions, using T4 etc. Here is the list of videos and a short summary (the C9 abstract) of each and my comments wherever applicable. I spent a useful afternoon last weekend watching every one of them
(1) Microsoft Blueprints 101 – The SimpleEdit Blueprint : In this screencast (10 minutes, 34 seconds), Michael Lehman demonstrates the essential features of the Microsoft Blueprints Manager by walking through the sample SimpleEdit Blueprint. Here Mike shows how to use the Blueprint to build another text editor.
(2) Authoring Blueprints – Introduction : In this screencast (6:05) Michael Lehman introduces Microsoft Blueprints. This shows how to build a Level 100 blueprint with only word based guidance and no code.
(3) Authoring Blueprints – Adding Project Templates : In this screencast (3:27) Michael Lehman describes creating Microsoft Blueprints using custom project templates. Mike only demonstrates the single project template here but the written guidance includes some information on how to use multi-project templates and links to the MSDN article on multi-project VSTemplates. In future versions of the Blueprints we may have a UI for simplifying the creation of multi-project templates. Although creating such a template is fairly simple, hand-editing the XML doesnt make for a great experience, but this is a Visual Studio feature not a Blueprints feature.
(4) Authoring Blueprints – Composing Blueprints : In this screencast (5:26), Michael Lehman demonstrates how to combine Blueprints together using composition to create composite Blueprints. The feature of linking blueprints is shown here.
(6) Authoring Blueprints – Custom Command Extensions using WF: In this screencast (7:58), Michael Lehman demonstrates how to create custom Visual Studio automation command extensions using WF. Mike shows the addition of a menu item that appears on the “Project” item and it is possible to have more sophisticated and custom filters so that menus show up only for , say . C# files in a particular project and so on. Although there are a few manual steps to get them all linked up, i think its still much simpler than the GAT route.
(7) Authoring Blueprints – Creating custom Command Extensions in C# : In this screencast (5:35), Michael Lehman demonstrates how to create custom command extensions using C#
(8) Authoring Blueprints – Using T4 Templates : In this screencast (4:01), Michael Lehman demonstrates how to use T4 templates with Microsoft Blueprints. Only a very basic T4 template is shown which is sufficient for the purposes of the demonstration. For more information on T4, read Oleg Sych’s T4 tutorial series.
(9) Authoring Blueprints – From sample application to Blueprint : In this screencast (7:08), Michael Lehman demonstrates how the sample editor application was converted into the SimpleEdit Blueprint. This is quite useful and shows how we can convert our own working applications into Blueprints. Only some of the blueprint features are shown here but a larger reference blueprint will be made shortly to cover all the other features.
(1) Infosys Blueprints Screencast : Watch a demonstration (10:10) of the Infosys Blueprints on Channel 9. Follow along as Farrukh Nizami uses the Infosys Blueprints to build a layered web application that incorporates Silverlight, WCF and LINQ to SQL. I put in some comments on the Channel 9 post as well regarding the patterns used.
Creating Blueprints – Article
(1) Creating My First Blueprint: An Infosys blog article explaining the process of creating a blueprint in detail.
Hope you find the links above useful. There’s some good discussions going on at the codeplex site as well.
“The idea is that, if you complete this Lab until the end, you’ll be able to create your own modeling graphical designers using the DSL Tools technology, and the code generator that will generate code, documentation, configuration files or whatever textual artifact you want, from the information that is entered by the designer user. This will probably take you one day to complete it, but it’s really worth it!”
Another good resource to learn DSL Tools is a set of videos in the How-Do-I video series on MSDN. These include the following (in the VSX category). It might be a good idea to watch these first (they are each around 15-25 minutes long), if you want to see what this is all about before diving into the lab.
- #21 How Do I: Get Started with the Visual Studio Domain Specific Languages? : Learn what the Domain-Specific Language (DSL) tools are in the Visual Studio Software Development Kit (SDK). Dylan Miles briefly explains some of the main concepts and how to get started.
- #20 How Do I: Create And Use T4 Templates? : Learn about the Text Templating Transformation Toolkit (T4), the code generation engine used as part of Domain Specific Languages and Software Factories projects. With the T4 toolkit now built directly into Visual Studio 2008, you can easily add code generation to your arsenal.
- #22 How Do I: Generate Code from my Domain Specific Language using DSL Tools? :Use the power text template engine built into Domain-Specific Language (DSL) Tools to generate code from a model created by a Domain-Specific Language.
- #23 How Do I: Create and Customize My Domain Specific Language? : Learn how to create and customize your own Domain Specific Language using Visual Studio DSL Tools. Dylan Miles shows you the basics of creating your own domain classes, changing the visual properties of shapes, and adding your own custom properties.
- #24 How Do I: Use Advanced Customization? : Learn how to override functionality in the generated code of your Domain Specific Language. Dylan Miles explains how using a custom constructor, custom storage for your shape and domain classes as well as hooking events to your shape classes.
Channel 9 also has an excellent video titled “Exploring the new Domain-Specific Language (DSL) Tools with Stuart Kent” where Stuart (a senior program manager on the VS /DSLTools team) explains what they are all about and creates a DSL from scratch.