Guidance Automation Toolkit - Customizações no ambiente de desenvolvimento

Olá pessoal, tudo certo?

Finalmente, o terceiro mecanismo para as customizações no ambiente de desenvolvimento são os Guias de Automação. Para o Visual Studio temos o GAT - Guidance Automation Toolkit, como sua principal ferramenta. Ele trabalha sobre um framework específico de automação, chamado Microsoft.Practices.RecipeFramework.

Como já falamos aqui no blog, o pacote GAT adiciona ao ambiente do Visual Studio a infra-estrutura de linguagens e ferramentas para a construção de pacotes de automação para geração de código. O objetivo é automatizar a codificação, baseando-se em templates e modelos de software que o arquiteto ou desenvolvedor selecionou como melhores práticas para um tipo de solução.

Vamos iniciar com a preparação do ambiente sobre o Visual Studio 2005, onde temos os seguintes extensions e pacotes de atualização indicados abaixo:

1) Microsoft .NET Framework 2.0 Service Pack 1
https://www.microsoft.com/downloads/details.aspx?familyid=79bc3b77-e02c-4ad3-aacf-a7633f706ba5&displaylang=en

2) Microsoft .NET Framework 3.0 Redistributable Package
https://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en

3) Microsoft .NET Framework 3.0 Service Pack 1
https://www.microsoft.com/downloads/details.aspx?familyid=ec2ca85d-b255-4425-9e65-1e88a0bdb72a&displaylang=en

4) Guidance Automation Extensions - July 2007 (GAT)
https://www.microsoft.com/downloads/details.aspx?familyid=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&displaylang=en

5) Guidance Automation Toolkit - July 2007 (GAX)
https://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&displaylang=en

6) Visual Studio 2005 SDK Version 4.0
https://www.microsoft.com/downloads/details.aspx?FamilyID=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&displaylang=en

7) Microsoft® Visual Studio® 2005 Team Suite Service Pack 1 - June 2007
https://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&displaylang=en

A partir desta instalação, nosso Visual Studio 2005 estará apto para trabalhar com o GAT/GAX, disponibilizando uma nova pasta de templates de projeto, como vemos a seguir:

image

Assim, a pasta Guidance Packages permite a criação de novos guias de automação, através do template de projeto "Guidance Package Development/Guidance Package". Por exemplo, podemos pensar na automação de um cenário para construção de aplicações ASP.NET. Pense em templates de navegação otimizados e homologados pela equipe de arquitetura. O objetivo nesse cenário é garantir produtividade durante a construção de novas aplicações, através da geração dinâmica de arquivos e items de projeto. Essa geração dinâmica de código ocorre sobre uma linguagem de templates, a Text Templating Transformation Toolkit ou simplesmente T4.

Um Guidance Package (ou Pacote de Automação) é criado para um propósito específico, visando atender algum tipo de solução que queremos automatizar. Assim, caracteriza-se também como uma unidade de versionamento e distribuição. Uma vez finalizado, o pacote pode ser registrado e distribuído para as várias estações de desenvolvimento. Os desenvolvedores finais serão os usuários desse pacote de automação.

A figura a seguir descreve bem esses passos no processo de modelagem e construção de um guia de automação:

image

De fato, um Guidance Package consiste de templates do Visual Studio, como vimos anteriormente (templates de projeto e templates de itens de projeto) e receitas de automação (passos de automação). Entre os elementos que compõem um guia de automação temos:

  • Recipes (Receitas)
  • Wizards (Sequência de passos para entrada de dados, nos moldes dos Addin's Wizards que vimos no post anterior)
  • Value Providers (Provedores de valores)
  • Type Converters (Conversores de tipos)
  • Actions (Ações)
  • Code Generation (Geração de código, onde temos os templates em linguagem T4)

A figua abaixo apresenta bem a hierarquia de componentes de um guia de automação, veja:

image

Entendido os conceitos sobre o GAT/GAX, vejamos como utilizá-lo. Uma sequência de passos para a construção de um guia de automação é dada abaixo:

  1. Definir as receitas desejadas para o guia, incluindo a definição de argumentos, wizards e ações;
  2. Definir os templates de Visual Studio envolvidos;
  3. Escrever as ações;
  4. Escrever os tipos de argumentos e conversores necessários;
  5. Definir templates T4, se uma ação utilizar templates T4 para geração de código;
  6. Testar o pacote de automação;
  7. Construir o pacote com os arquivos de setup, para distribuição;

Ao final, um pacote de guia conterá os seguintes artefatos:

  • arquivo de configuração do guia de automação (necessário);
  • templates de Visual Studio;
  • templates T4;
  • DLL implementando ações, editores de tipos, provedores de valores e conversores de tipos (note que uma única DLL é recomendada);

Uma boa maneira de iniciar seus trabalhos sobre o guia de automação GAT é seguir os passos da solução exemplo, que vem com a instalação do GAT/GAX. Veja na tela principal da solução os principais passos recomentados, são 7 passos:

image

Finalmente, vamos exportar esse guia de automação para outras máquinas. A solução template do Guidance Package gera também um template de Setup, que disponibiliza o pacote para instalação. Veja abaixo os projetos contidos na solução de um guia de automação, onde notamos o projeto de Setup que deve ser instalado na estação do desenvolvedor:

image

Desse modo, passamos pelos principais elementos sobre a modelagem e construção de um Guia de Automação. Recomendo fortemente a leitura dos arquivos de ajuda do GAT e GAX, para um maior detalhamento. O material tem bastante informações importante, que ajudará na evolução e construção de guias de automação sofisticados.

A Microsoft também disponibiliza uma série de Fábricas de Software, que nada mais são do que pacotes de automação prontos para assuntos específicos. Isso significa que a base das várias Fábricas de Software que a Microsoft disponibiliza é realmente o GAT/GAX que vimos aqui. Entre as fábricas mais conhecidas temos:

  • Mobile Client Software Factory
  • Smart Client Software Factory
  • Web Client Software Factory
  • Web Service Software Factory
  • Application Block Software Factory

Em posts futuros, vamos avançar em outros assuntos relacionados ao ganho de produtividade no ambiente de desenvolvimento. Entre eles teremos as Fábricas de Software e as Linguagens de Domínio Específico, ou DSL's - Domain Specific Languages. Fiquem ligados.

Por enquanto é só! Até o próximo post :)

Waldemir.