Desenvolvimento Mais Produtivo

“Passeando” pela internet encontrei uma ferramenta interessante para desenvolvimento de software. A proposta desta ferramenta era gerar as três camadas de um sistema web: persistência baseada no NHibernate, négocio e GUI. O software não era do tipo freeware. O site disponibilizava apenas uma versão para avaliação. Eu baixei e instalei, contudo achei pouco intuitivo. Mas deu pra notar que ele realmente faz o que se propõe. Talvez com um pouco de costume no uso da ferramenta, ela seja bastante útil na criação de qualquer sistema.

Por ser paga, desinstalei e pensei em construir alguma coisa igual ou parecida. Algo que pudesse automatizar alguma etapa no processo de desenvolvimento, principalmente na construção das classes, interfaces, métodos, etc. Tem situações que são altamente repetitivas seja qual for o sistema; e adotando um padrão, algumas etapas ficam bem mecânicas.

Pensando nisso escrevi alguns scripts utilizando a ferramenta MyGeneration. Escrevi 4 novos scripts e adaptei um que baixei da internet. Vou descrever um pouco de cada um deles:

  1. Utilizamos o NHibernate como framework de persistência. Quem utiliza sabe que é preciso ter as classes (POCO) e os .hbm.xml para mapeamento entre as classes e as entidades do banco de dados. Nada mais natural que o primeiro script fosse pra gerar esses arquivos. Baixei um da internet e fiz algumas adaptações.
  2. O segundo script vai gerar a camada DAO; todas as classes que farão comunicação com a camada de persistência. Claro que existe uma classe abstrata chamada BaseDAO que será herdada em todas as classes da camada DAO. Nesta classe abstrata existe vários métodos e propriedades úteis para manipulação dos dados persistentes: inclusões, alterações, listagens, transações, etc. Além das classes, o script também gera uma classe DAOFactory. É por ela que a camada de negócio irá acessar os objetos DAOs da camada. Quem conhecer PADRÕES DE PROJETO entederá o que estou falando.
  3. O terceiro script gera as interfaces das classes DAOs. Faz parte das boas práticas utilizar as interface das classes. Um dos motivos é desacoplamento, ou seja, fazer com que a camada seja independente dos objetos da outra. A comunicação entre as camadas é pelo Factory utilizando interface. Falo alguma coisa sobre isso no post sobre Visão de Módulo.
  4. O quarto gera os BOs. São as classes de objetos de negócio. Esses BO’s estão utilizando seu respectivo DAO e já possui definido as operações básicas para qualquer aplicação: SelecionarPorId, Inserir, Alterar, Listar, transações… Certamente não é sulficiente para uma aplicação. Mas já é um bom começo. Não será preciso começar do zero seus objetos de negócio. Coisas como constructor, destructor, metódos básicos, definição das classes, etc. já vem pronto. Este script também gera mais duas classes: Um DAOAccess e um BOFactory. Os acesso aos DAOs pelos BOs serão feitos por uma única via chamada DAOAccess e a exposição dos BOs será feita pelo BOFactory. Ver Visão de Módulo e comentários mais acima.
  5. O quinto gerá as interfaces para os BO’s pelos mesmos motivos citados acima, nas interfaces dos DAOs

Teria uma sexta classe a ser gerada. Essa classe será usada na camada de apresentação. É a BOAccess. Todas as chamadas aos BOs (Objetos de Negócio) da aplicação deverão ser feitas por este componente. Nada de instanciar a classe diretamente. O BOAccess é o nosso especialista nessa função. É uma classe muito simples. Mas bastante útil no caso de voce mudar a forma de implantação (deployment) de sua aplicação, por exemplo passando a utlizar um ou mais servidores de aplicação.

Outros scripts foram criados. Só que agora a idéia é gerar páginas web (camada de apresentação) a partir de tabelas do banco de dados:

  1. Layout tipo tabela. Todos as linhas das tabelas são exibidos em um grid com possibilidades de inclusão, alteração e exclusão;
  2. Layout tipo cadastro. Forma simplificada de inclusão, alteração, exclusão e busca de informação na tabela;
  3. Layout tipo lançamento. Este gera duas telas: uma para digitação e outra pra localização e filtragem de dados. Essa tela é mais “incrementada” que a tela de cadastro.
  4. Layout Master/Detail.

Durante algum tempo esses scripts foram bastante uilizados. Mas, decidimos abandonar a utilização dos scripts e criar uma aplicação que incorporasse em um único programa todas essas funcionalidades. Criamos o RSClass – Gerador de Classes. Este programa gera as classe de forma mais ágil, integrada e simplificada. Todos os scripts descritos acima estão incorporados nessa ferramenta. Claro que novas ideias foram surgindo e incluimos vários outros recursos. Vale a pena dar uma olhada, principalmente se você prentende desenvolver aplicações web em camadas, com SQL Nativo ou NHibernate.

É isso.

Anúncios