Geradores de Código

Geradores de código são basicamente programas que geram outros programas. Os geradores podem ser definidos como ferramentas tanto para formatar códigos simples quanto para gerar aplicações complexas a partir de modelos abstratos (templates). São muito utilizados para agilizar o processo de desenvolvimento, pois aumentam a produtividade e diminuem o tempo gasto na codificação da aplicação e, conseqüentemente, o custo final (AMBLER, 2004; KLUG, 2007).

Segundo Herrington (2003), a geração de código é a técnica pela qual se constrói código utilizando programas. Os geradores de código podem trabalhar por meio de linhas de comando ou de interfaces gráficas, estas últimas são as formas mais interativas. Estes podem construir código em várias linguagens de programação, bem como efetuar a geração dos códigos de uma única vez ou em etapas. As entradas e saídas são definidas conforme a necessidade, sendo que o desenvolvedor especifica parâmetros de saída de forma manual. Portanto, é de extrema relevância que o programador saiba a priori o que se deseja obter como resultado.

De acordo com Herrington (2003), a utilização de geradores para desenvolvimento de softwares traz enormes vantagens aos códigos gerados, tais como:

  • qualidade: a escrita de grande quantidade de código vai gradualmente diminuindo a qualidade final do software. Na geração automática, a qualidade do software está diretamente ligada à qualidade dos templates. Esse, por sua vez, não possui qualidade associada à quantidade de código a ser desenvolvida, visto que os templates possuem uma estrutura fixa que não é alterada pelo tamanho do projeto;
  • consistência: o código gerado tende a ser consistente, pois possui uma padronização de nomenclatura de classes, métodos, variáveis e localização (pastas e subpastas), o que torna o código de fácil entendimento e modificação;
  • único ponto de conhecimento: caso seja necessária uma alteração de alguma estrutura de entrada do projeto, necessita-se apenas saber o local onde essa modificação deve ser realizada. Após isso, o código gerado se propagará para todos os processos seguintes à alteração, gerando sempre um código compatível com as entradas;
  • maior tempo para o projeto: considerando-se o uso de uma biblioteca externa (API), podem acontecer alterações nessa fonte obrigando assim que modificações sejam feitas em todas as partes do código em que aquela modificação irá influenciar. Com a utilização do gerador, esse processo poderá ser feito apenas nos templates do gerador e uma nova geração efetuará as mudanças necessárias no código. Essa característica faz toda a diferença em cronogramas de projetos que utilizam ou não geradores (forma manual);
  • abstração: como, normalmente, os geradores utilizam os modelos abstratos de dados (templates) do código alvo, fica fácil migrar de uma plataforma/linguagem para outra, necessitando apenas uma revisão no escopo de abstração, ou seja, modificar os templates de acordo com as necessidades da plataforma/linguagem alvo;
  • agilidade: uma característica chave da geração de código é a maleabilidade do código de saída. No nível de negócio, o software será de mais fácil manutenção e implementação de novas funcionalidades. Mesmo considerando-se o tempo que se economiza no ato da geração, podemos afirmar que essa técnica dá um grande percentual de agilidade ao desenvolvedor.

E ainda, segundo Herrington (2003), a construção de um gerador de código pode seguir as seguintes etapas de desenvolvimento:

  • a definição de qual a saída se deseja obter;
  • a identificação de qual entrada será utilizada e como essa será analisada;
  • a definição de padrões na entrada, de como eles serão interpretados para obtenção e geração de uma saída formatada de acordo com as expectativas predefinidas; e
  • a geração da saída a partir das informações extraídas da entrada.

Geradores de código são uma boa forma de agilizar o desenvolvimento e melhorar o nível de qualidade no início do projeto. Fatores, esses, que podem decidir o futuro de uma aplicação.

Artigo da série:
GETNAGETNA