15.04.2013 Views

A Model-Driven Software Reuse Approach (in portuguese)

A Model-Driven Software Reuse Approach (in portuguese)

A Model-Driven Software Reuse Approach (in portuguese)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Programação generativa<br />

“Programação generativa (generative programm<strong>in</strong>g) é a automação da manufatura de<br />

produtos <strong>in</strong>termediários e f<strong>in</strong>ais (i.e., componentes e aplicações.”) (CZARNECKI; EISENECKER,<br />

2000).<br />

Essa def<strong>in</strong>ição resume o conceito de programação generativa, que vem sendo utilizado<br />

desde os primórdios da computação. Significa que parte ou a totalidade dos artefatos produzidos<br />

durante o ciclo de vida do software é gerada automaticamente. Por exemplo, compiladores<br />

que utilizam como entrada um programa em uma l<strong>in</strong>guagem de programação, e geram como<br />

saída o código executável para uma plataforma, estão entre os primeiros exemplos de uso da<br />

programação generativa.<br />

Outro exemplo são os construtores de <strong>in</strong>terface, tais como aqueles presentes em softwares<br />

como Microsoft Visual Studio 3 e NetBeans 4 . O desenvolvedor especifica a <strong>in</strong>terface<br />

visualmente, e todo o código que a implementa é automaticamente gerado. Caso precise realizar<br />

alguma modificação, o desenvolvedor a realiza diretamente no editor visual, e o código que<br />

reflete essa mudança é gerado novamente.<br />

A programação generativa pode ser utilizada em outras etapas do ciclo de vida do software.<br />

Pode-se gerar casos de teste, esquemas de banco de dados, ou mesmo programas completos. Os<br />

benefícios dessa abordagem são óbvios: poupa-se o tempo gasto em atividades repetitivas, como<br />

tarefas de implementação de <strong>in</strong>fraestrutura, aproveitando-o em atividades mais importantes,<br />

como análise e projeto.<br />

Além de proporcionar os ganhos diretos em termos de tempo de desenvolvimento, a<br />

abordagem generativa também promove a reutilização. Um gerador encapsula o conhecimento<br />

do domínio necessário para que sejam produzidos artefatos ou mesmo aplicações completas<br />

daquele domínio. Em outras palavras, a reutilização desse conhecimento ocorre quando se<br />

reutiliza o processo de geração, e não os componentes (SAMETINGER, 1997).<br />

Um elemento necessário para a abordagem generativa é o formato da entrada fornecida<br />

a um gerador. Normalmente, utiliza-se uma DSL, ou seja, uma l<strong>in</strong>guagem especializada e<br />

orientada ao problema (CZARNECKI; EISENECKER, 2000). Desta forma, o desenvolvedor pode<br />

criar as especificações de forma mais próxima ao problema, o que exige um menor esforço de<br />

especificação.<br />

Essa DSL pode ser tão especializada quanto o necessário para o problema sendo modelado.<br />

3 <br />

4 <br />

263

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!