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

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).

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

Saved successfully!

Ooh no, something went wrong!