A Model-Driven Software Reuse Approach (in portuguese)
A Model-Driven Software Reuse Approach (in portuguese)
A Model-Driven Software Reuse Approach (in portuguese)
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
266<br />
Vale a pena ressaltar que os conceitos de programação generativa, pr<strong>in</strong>cipalmente quando<br />
se pensa em reutilização de software, muitas vezes se confundem com os conceitos ligados às<br />
l<strong>in</strong>guagens específicas de domínio. Czarnecki e Eisenecker (2000), autores de um dos pr<strong>in</strong>cipais<br />
livros sobre programação generativa, destacam a importância das DSLs nessa abordagem.<br />
Cleaveland (1988) utiliza os termos “L<strong>in</strong>guagem de quarta geração” e “L<strong>in</strong>guagem orientada<br />
à aplicação” ao <strong>in</strong>vés de DSL, mas os conceitos de geradores de aplicações que ele apresenta<br />
correspondem a um compilador DSL (DEURSEN; KLINT; VISSER, 2000).<br />
A proximidade destas duas áreas também se reflete na evolução das tecnologias envolvidas e<br />
da pesquisa acadêmica e <strong>in</strong>dustrial. O desenvolvimento orientado a modelos, foco deste trabalho<br />
de pesquisa, é um exemplo recente que reúne os conceitos de DSL e programação generativa.<br />
Frameworks Orientados a Objetos<br />
Frameworks orientados a objetos ou frameworks de componentes estendem as idéias de<br />
bibliotecas de subrot<strong>in</strong>as e de componentes. A pr<strong>in</strong>cipal diferença, e uma das pr<strong>in</strong>cipais<br />
características dos frameworks, é a “<strong>in</strong>versão de controle”: enquanto com bibliotecas comuns a<br />
aplicação é responsável por realizar chamadas aos artefatos sendo reutilizados, um framework<br />
é responsável por realizar chamadas à aplicação, detendo o fluxo de controle (DEURSEN; KLINT;<br />
VISSER, 2000), (JOHNSON, 1997a) apud (BRAGA, 2002).<br />
Estruturalmente, pode-se def<strong>in</strong>ir um framework como um conjunto de classes que contém<br />
o projeto abstrato de soluções para uma família de problemas relacionados (JOHNSON; FOOTE,<br />
1988) apud (BRAGA, 2002). Essas classes encapsulam conhecimento sobre essa família de<br />
problemas, ou sobre esse domínio de problema, que pode ser reutilizado da mesma forma com<br />
que se reutilizam componentes de software.<br />
Do ponto de vista de seu propósito, pode-se def<strong>in</strong>ir um framework como o esqueleto<br />
de uma aplicação, que pode ser <strong>in</strong>stanciado por um desenvolvedor de aplicações (JOHNSON,<br />
1997b) apud (BRAGA, 2002). Sendo um esqueleto, um framework não def<strong>in</strong>e somente as<br />
classes de forma isolada, mas também as <strong>in</strong>terfaces e conexões entre as mesmas, assim<br />
como a estrutura geral da aplicação <strong>in</strong>stanciada. Dessa forma, ao utilizar um framework,<br />
um desenvolvedor não está reutilizando somente classes ou componentes isoladamente, que<br />
precisam ser posteriormente <strong>in</strong>tegrados em uma aplicação, mas sim toda a estrutura <strong>in</strong>terna.<br />
Essa estrutura também representa parte do conhecimento daquele domínio, e assim pode-se<br />
dizer que o nível de reutilização alcançado com um framework é maior do que o nível de<br />
reutilização alcançado com componentes isolados, representando um avanço significativo em<br />
reutilização (KRUEGER, 1992).