quarta-feira, 18 de fevereiro de 2009

Máquinas Criando Máquinas

Tá bom, eu sei que o exemplo que utilizei no artigo sobre o paradigma das aplicações corporativas, para ilustrar o conceito de orientação ao aspecto foi muito ruim.

A idéia do lenço e da lama não é exemplo digno de apresentar a inversão de controle.

Eu vou voltar nesse assunto no próximo artigo, mas agora gostaria de escrever sobre a automatização na criação de software.

Descobri recentemente um programa chamado MyGeneration. Muitos devem conhecer, mas eu mesmo só comecei a utilizá-lo há pouco tempo.

Esta fantástica ferramenta se propõem a expôr objetos do banco de dados de uma forma que fica fácil e intuitivo criar pequenas aplicações para geração de códigos repetitivos, em lote.

A idéia é construir todo o modelo da aplicação em uma ferramenta específica, como o Enterprise Architect, e por fim montar o banco de dados.

Ou seja, na modelagem, o arquiteto deve desenhar as entidades do domínio baseadas nos requisitos e nas funcionalidades propostas. E seguindo as propostas da UML, o arquiteto então deve continuar a trabalhar no modelo, criando os diversos tipos de diagramas, orientado pela metodologia, até chegar no desenho do banco de dados.

Nesse ponto é onde o MyGeneration entra para montar o esqueleto da aplicação. Eu construí um conjunto de scripts para geração automática de código, que sozinho constrói todas as camadas de aplicação com apenas alguns cliques. Um dos scripts cria automaticamente até classes de teste unitário para ajudar a manter a integridade do sistema.

Com esses scripts eu consigo colocar uma aplicação com mais de cinquenta casos de uso no ar e funcionando, em questão de duas horas.

O segredo do MyGeneration é expor todos os objetos de um banco de dados em forma de coleções, facilmente programáveis.

Imagine ter acesso a todos os nomes de tabelas do banco de dados, os campos, as chaves estrangeiras, as chaves primárias etc?

Apenas com essas informações já ficaria muito fácil construir um laço para "rodar" todas as tabelas do banco, e montar os códigos necessários para a implementação das classes de entidades e dos arquivos de configuração do Hibernate.

Além disso, o MyGeneration oferece todas as funcionalidades do C# e do Framework .Net. A programação flui fácil por causa disso. Não só do C#, mas do Visual Basic também.

Além de tudo isso é grátis!

Mas, como sempre tem um "mas"... a interface do programa é muito fraca ainda. Está amadurecendo, mas ainda engatinhando.

O intellisense mal funciona e as cores são terríveis. Faltam vários auxílios de digitação e de identação do código.

Resumindo, a idéia é ótima! Mas a aplicação deixa a desejar. Acho que a equipe de desenvolvimento desse software pecou apenas na abordagem do framework deles.

Acredito que eles não deveriam ter construído uma IDE (Integrated Development Enviroment) para abrigar este interessante framework de escavação de objetos do banco de dados.

Eu teria feito diferente, eu teria criado uma DLL para ser utilizada como wrapper em projetos dentro do Visual Studio. Essa DLL poderia ter um template de criação de projeto (aqueles projetos que aparecem na caixa de "Criar Novo Projeto...") e referenciar automaticamente essa DLL de wrapper.

Algumas configurações no web.config ou no app.config seriam suficientes para carregar automaticamente o contexto do framework de escavação de dados, e o acesso aos objetos do banco estariam disponíveis dentro do Visual Studio.

Ou seja, o que quero dizer é que não é necessário criar uma IDE nova, basta aproveitar a melhor IDE que existe, que é o Visual Studio e instalar o framework como opcional.

Dessa forma o desenvolvedor poderia fazer o mesmo trabalho que faz no MyGeneration, mas dentro do Visual Studio, com todo suporte de intellisense, coloração de palavras-chave, auto identação, debug etc.

Não estou com tempo para desenvolver essa ferramenta agora, mas vou pensar seriamente nisso.

Até a próxima!
[]s
Renato Graccula

Nenhum comentário: