Guidance Automation Toolkit, Software Factory, Domain-Specific Languages e outros assuntos.

Olá pessoal, tudo certo?

Nos últimos posts temos falado sobre frameworks, templates e temas relacionados com a produtividade de software. Reusabilidade de serviços, otimização, qualidade na codificação e desafios no desenvolvimento são tópicos sempre recorrentes. Em linhas gerais, o mundo da arquitetura de software sempre envolve essas questões e cabe ao arquiteto direcionar suas equipes para a correta adoção das melhores práticas para uma codificação de qualidade e com produtividade. Existem diversas ferramentas que suportam o arquiteto nessa tarefa. Como exemplo, podemos citar as Fábricas de Software (Software Factories).

Sobre esse tema, vale recomendar o livro "Software Factory" de Jack Greenfield, uma leitura obrigatória sobre o assunto.

Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
Ref.: https://www.amazon.com/Software-Factories-Assembling-Applications-Frameworks/dp/0471202843/ref=sr_1_1?ie=UTF8&s=books&qid=1200059711&sr=1-1

Outro elemento importante nessa discussão são as DSL'S - Domaing-Specific Languages, que permitem a construção de ferramentas visuais para a composição de soluções, gerando código de forma automática e com grande controle sobre a qualidade do código gerado. O desenvolvimento de uma DSL passa pelo entendimento do negócio, assim como os artefatos de software que serão utilizados, como bibliotecas, templates, patterns de desenvolvimento, etc.

Uma leitura recomendada sobre DSL's é o livro "Visual Studio DSL Tools", da série Microsoft .NET Development.

Domain-Specific Development with Visual Studio DSL Tools (Microsoft .NET Development Series)
Ref.: https://www.amazon.com/Domain-Specific-Development-Visual-Studio-Microsoft/dp/0321398203/ref=pd_bbs_1?ie=UTF8&s=books&qid=1200059661&sr=8-1

Mas antes de avançarmos sobre Fábricas de Software ou DSL's, vamos falar um pouco sobre ferramentas de extensibilidade e guias de automação. Nesse ponto, a Microsoft oferece já há algum tempo o pacote GAT - Guidance Automation Toolkit, de fato o fundamento para o trabalho com Fábricas de Software e Linguagens de Domínio Específico.

Veja os links para download abaixo (GAT/GAX são ambos necessários):

GAX - Guidance Automation Extensions - que fornece o núcleo de ferramentas, templates e assistentes para a criação de guias de automação;
Ref.: https://www.microsoft.com/downloads/details.aspx?FamilyId=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&displaylang=en

GAT - Guidance Automation Toolkit - que permite a construção de guias e navegadores sobre os artefatos utilizados em sua solução de automação.
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&displaylang=en

Os pacotes GAT/GAX adicionam ao ambiente do Visual Studio a infra-estrutura necessária 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 codificação que o arquiteto selecionou como melhores práticas para um nicho de solução específico. Por exemplo, podemos pensar na automação de um cenário para construção de aplicações ASP.NET, que faça uso de bibliotecas de um framework corporativo e que utilize templates de navegação otimizados e homologados pela equipe de arquitetura. O objetivo num cenário como esse é garantir que os desenvolvedores tenham produtividade durante a construção de novas aplicações, enquanto que as variações de soluções nesse mesmo domínio ficam sob controle. Essa geração dinâmica de código ocorre sobre uma linguagem de templates, a Text Templating Transformation Toolkit ou simplesmente T4.

O exemplo abaixo em template T4 gera um código C# que implementa uma classe para escrever "Hello Iteration: n", onde n é o número de iterações que passamos como parâmetro para o template:

image

Finalmente, como parte dessa preparação para tabalharmos com GAT/GAX, devemos instalar 2 pacotes importantes:

Enterprise Library 3.1 - May 2007
Ref.: https://www.microsoft.com/downloads/details.aspx?familyid=4C557C63-708F-4280-8F0C-637481C31718&displaylang=en

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

Nos próximos posts, vamos avançar no assunto, discutindo alguns aspectos importantes sobre GAT/GAX, enquanto evoluímos juntos rumo a DSL's de sucesso! :)

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

Waldemir.