Guidance Automation Toolkit - first look
The GAT has landed (See Tom’s blog)!
Ok, so I might have been a little late on this news – but it’s been a busy week! I spent the first half of it in a three day workshop with the Cambridge research team who are working on DSLs and Software factories – more on this later, but one message was very clear and very well received from my point of view that both GAT and DSLs will be very closely aligned going forwards – a great example of convergent and cooperative development!
So, the GAT – here’s my first take on the technology.
Out of the box, the ‘HelloWorld’ sample really doesn’t do it justice, as the lack of an architectural context leaves you searching for the guidance functions that it has installed. However, if you persevere then the functionality soon starts to emerge and its applicability start to form in your mind.
So what is it about? GAT is a way of defining ‘in context guidance’ aka recipes that lead the user through the process of building out a set of related architectural concepts. For example you could imagine a recipe that supports the configuration and definition of the User Interface Process Application block for example.
The guidance package xml file is the key to defining the recipe and its contextual binding to Visual studio (ie. where a particular piece of guidance will appear in VS). The best way I have found to investigate the features of this file is to build the sample and step through this file recipe by recipe and thought it worth sharing with you to save you time and pain.
1. Open up the guidance package XML file
2. Collapse all the nodes so that just the list of recipes is shown.
3. Build the project.
4. Launch a new instance of VS (keeping the old one open).
5. Select File, New, Project in the new VS
6. Select your newly built guidance solution from under the Guidance Packages node.
7. Create a new project that uses the Guidance solution you have just built.
8. Expand the “Create Solution” recipe back in the XML file of the original project
9. Compare the entries under this node with the wizard dialog of the new project:
a. Caption
b. Arguments
c. GatheringServiceData
It should be relatively easy to piece together what the XML is trying to achieve.
10. Complete the create solution wizard in the new project
11. Expand the AddMainClass recipe in the original project
12. Look at the HostData node – this tells us that the recipe can be accessed from a project item in the solutions window of the new project.
13. Right click on the project of the solutions window in the new project
14. Select the “Add class with main method”
15. Compare the XML with the wizard as before to work out what is going on.
Ok, so this is not complete, but it gives you an idea of how to go about getting started with understanding the technology!
Personally, by taking this approach I have started to see the clear benefit that the GAT will provide and given that it is a fully extensible toolkit the opportunities for ISVs, SIs and end user organisations are really vast and not just constrained to architecture.
So give it a whirl and let me (or the PAG team) know what you think! I will definitely look into a blog cast or two on this given time!