Produtividade no Desenvolvimento de Software - DSL Laboratório 1 - Parte 1
Como eu havia dito anteriormente os laboratórios que serão apresentados daqui para frente se baseiam no exemplo do livro que eu citei (Domain-Specific Development with Visual Studio DSL Tools ) dado no capítulo 2. O exemplo diz respeito a uam empresa de desenvolvimento de software fictícia, a CJKW, que desenvolveu um software para o rastreamento de problemas de software - Issue Tracker - e um dos seus elementos chaves é o monitor de problemas ou "issues". Este software de rastreamento de problemas (de agora em diante apenas IssueTracker) foi desenvolvido pela CJKW usando o Issue Tracker Model Kit dado no site Microsoft para o ASP.NET.
O monitor de problemas pode ser abaixo visualizado
figura 1
A parte que nos interessa é justamente a parte em evidencia na imagem acima, ou seja o Status que dá uma série de condições ou "estados" do problema.
Cada cliente da CJKW tem requisitos diferentes para as condições ou estados de status, como era de se esperar, bem como as transições entre estas estados também são diferentes de cliente para cliente.
Um exemplo de transição entre diferentes estados de status poderia ser
figura 2
Um exemplo de código que representaria as transições acima poderia ser:
figura 3
Ou seja a cada cliente eles tem de re-escrever este pedaço de código para poder representar as possíveis transições e manter o dro-down box de status com as opções corretas dependendo do estado em que um problema se encontra.
Evidentemente este problema é típico de uma máquina de estado e suas transições e por certo existem métodos mais eficázes de se resolver este problema, mas para o laboratório em questão vamos partir do princípio que queremos automatizar a geração de código para poder dado uma representação como a da figura 2 poder automáticamente gerar o código da figura 3.
Maiores detalhes podem ser encontrados no livro.
Nesta primeiro laboratório vamos nos concentrar em representar a linguagem que representa este problema, ou seja como representar os estados e suas transições. Este Laboratório 1, na qual vamos criar a representação deste problema, será feito passo a passo, ou seja em partes. Na primeira parte tratamos apenas de criarmos um projeto do zero para o que chamaremos de Issue Tracker Model.