GAT + DSL = automation

 
These days I’m playing with interesting approaches (other than DSL Tools) that also compose the Microsoft Software Factories Initiative, and I’ve started with GAT (Guidance Automation Toolkit). Roughly speaking, GAT allows you to define "automation recipes" that run inside Visual Studio, using custom-built wizards to collect input from the user and then launching some actions.
 

 
For example, suppose that, in a game factory, the developer right-clicks the "Game Entities" folder and then select the option "Add new game entity diagram". Then a wizard opens and its pages collect information from the developer, which will define how the diagram will be created, such as the name of the diagram, if custom collision detection will apply to such diagram entities and so on. If you want to know more about GAT, I recommend Jelle Druyts posts about this.
 
 
Finally, Jelle provides a 5 min introduction to GAT in the video below:
 
 
DSL (Domain-Specific Language) Tools and GAT are complementary to each other in the sense that DSLs provide means for you to easily specify variabilities to your domain instance (such as a game) and to add modeling capabilities to the development process. On the other hand, GAT uses seamless IDE integration to guide the developer in the execution of the right actions at the right time, and both approaches leverage already existent patterns and frameworks of the domain.
 
MSDN Architecture Center has an article which discusses more on how DSL and GAT can be better integrated in a software factories context to improve the automation end-goal. Some items I’d like to highlight follows below:
 
  • GAT can provide context to DSL users, making them more aware of when and how to create and use DSL diagrams.
  • GAT recipes can be associated to DSL diagram files and elements, through context-menu entries for example, to launch wizards and actions.
  • GAT can be used to provide on-demand contextualized help and documentation for DSL users (instead of prescriptive or remote guidance, in which the user is supposed to read tons of documents first and figure out how to apply the knowledge learned later).
  • GAT empowers the transformation of a DSL diagram (into code, for example) by making it more easy to generate multiple artifacts from a single DSL diagram and providing a better control on the generation output location.
  • GAT enables the scenario in which two or more DSLs should be cross-integrated.
  • DSLs can be used to gather values for GAT recipes.
Impressive… the more you learn, the more new things appear for you to learn!
 
[]s

— AFurtado

 
The statements or testimonies I offer in this post represent my own personal views.
I am speaking for myself and not on behalf of my employer, Microsoft Corporation.

This entry was posted in Software Engineering. Bookmark the permalink.

Leave a comment