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.

genéricas (que oferecem soluções para múltiplas áreas, porém de forma não otimizada), e<br />

abordagens específicas (que oferecem soluções melhores, porém apenas para um subconjunto<br />

de problemas), presente na maioria dos ramos da ciência e da engenharia (DEURSEN; KLINT;<br />

VISSER, 2000).<br />

As atuais l<strong>in</strong>guagens de programação, como Java, C++, e C#, são exemplos de l<strong>in</strong>guagens<br />

de propósito genérico, ou seja, ao criar sistemas para diferentes domínios de problema, pode-se<br />

utilizar a mesma l<strong>in</strong>guagem. O mesmo acontece para l<strong>in</strong>guagens de modelagem, como a UML,<br />

por exemplo, que pode ser utilizada em diferentes cenários.<br />

No entanto, essas l<strong>in</strong>guagens apresentam o problema de exigirem um certo esforço de<br />

tradução para expressar soluções ou modelos específicos para um determ<strong>in</strong>ado problema<br />

utilizando construções genéricas. Além disso, esse esforço de tradução precisa ser praticamente<br />

repetido toda vez que se for construir uma aplicação diferente para aquele mesmo domínio. Para<br />

resolver esse problema, três abordagens têm sido adotadas (DEURSEN; KLINT; VISSER, 2000):<br />

1. Bibliotecas de subrot<strong>in</strong>as: consistem em subrot<strong>in</strong>as que realizam tarefas específicas<br />

para um domínio de problema, de forma que o desenvolvedor, ao reutilizar essas<br />

subrot<strong>in</strong>as, também reutiliza conhecimento específico para esse domínio;<br />

2. Frameworks orientados a objetos e frameworks de componentes: estendem a idéia de<br />

bibliotecas de subrot<strong>in</strong>as. Enquanto bibliotecas possuem uma estrutura simples, com as<br />

subrot<strong>in</strong>as sendo chamadas pela aplicação, os frameworks normalmente estão no controle,<br />

sendo os responsáveis por chamar o código específico da aplicação; e<br />

3. L<strong>in</strong>guagens específicas de domínio (DSL): são l<strong>in</strong>guagens pequenas, normalmente<br />

declarativas, com poder expressivo focado em um domínio de problema. Normalmente,<br />

programas em DSL são convertidos para programas em l<strong>in</strong>guagens comuns, utilizando<br />

frameworks ou bibliotecas de subrot<strong>in</strong>as. Dessa forma, pode-se pensar em uma DSL<br />

como uma maneira de esconder os detalhes da biblioteca ou framework.<br />

Do ponto de vista da reutilização, todas essas abordagens são similares, apresentando um<br />

único propósito: reutilizar o conhecimento do domínio na construção de aplicações daquele<br />

domínio. Seja na forma de chamadas de rot<strong>in</strong>as de uma biblioteca ou utilizando uma l<strong>in</strong>guagem,<br />

o resultado f<strong>in</strong>al é praticamente o mesmo, com diferenças apenas na forma de expressão da<br />

solução. De fato, Mart<strong>in</strong> Fowler, um conceituado pesquisador na área de reutilização, destaca<br />

que sempre considerou o fato de def<strong>in</strong>ir funções e bibliotecas como uma forma de se construir<br />

uma DSL para um problema (FOWLER, 2005).<br />

259

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

Saved successfully!

Ooh no, something went wrong!