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.

Bierhoff, Liongosari e Swam<strong>in</strong>athan (2006) utilizam exemplos não somente para derivar<br />

as transformações, mas também as DSLs. Os autores propõem uma abordagem <strong>in</strong>cremental:<br />

começando com uma aplicação, constrói-se uma DSL para ela, contendo os elementos e<br />

conceitos da aplicação, e os parâmetros necessários para configurá-la. Em seguida, novas<br />

aplicações são adicionadas <strong>in</strong>crementalmente, e suas diferenças <strong>in</strong>troduzem novas variações<br />

na DSL, aumentando sua generalidade. Porém, os autores destacam que esta abordagem<br />

puramente bottom-up precisa ser orientada por decisões de projeto tomadas cuidadosamente<br />

de antemão, caso contrário corre-se o risco de se produzir DSLs extremamente complexas e<br />

difíceis de se manter. Este é exatamente o cam<strong>in</strong>ho tomado pela abordagem desta tese, que<br />

busca mesclar uma etapa top-down para preparar o domínio para automação, com uma etapa<br />

bottom-up que <strong>in</strong>troduz detalhes e ref<strong>in</strong>amentos necessários para o funcionamento prático das<br />

DSLs e das transformações.<br />

Santos, Koskimies e Lopes (2008) propõem a extensão de frameworks com uma camada<br />

adicional baseada em programação orientada a aspectos que codifica uma DSL, buscando<br />

alavancar a reutilização de software através de técnicas generativas. Um modelo conceitual<br />

de um framework é manualmente extraído pelo desenvolvedor, que descreve seus elementos e<br />

conceitos em termos de um metamodelo específico. Este modelo é então utilizado em conjunto<br />

com um framework de l<strong>in</strong>guagem para produzir ferramentas concretas para a nova l<strong>in</strong>guagem.<br />

Utilizando estas ferramentas, o desenvolvedor de aplicações pode especificar uma aplicação e<br />

gerar código em termos dos elementos do framework. O trabalho de Muszynski (2005) também<br />

propõe a derivação de uma DSL a partir de uma implementação de referência, tornando a DSL<br />

extraída o ponto central para especificação de produtos e geração de código.<br />

Estes trabalhos são similares à abordagem desta tese, pois utilizam uma DSL, geradores<br />

e um processo bottom-up para derivar os mapeamentos entre a l<strong>in</strong>guagem e a implementação<br />

de referência (ou framework). Eles também possuem um elemento top-down implícito, que<br />

corresponde ao processo de desenvolvimento da implementação de referência ou do framework,<br />

o que envolve tarefas como gerenciamento de variabilidade na engenharia de domínio. A<br />

pr<strong>in</strong>cipal diferença é que na abordagem desta tese o elemento top-down é explícito e focado<br />

no problema da reutilização, <strong>in</strong>do mais além no processo, até o desenvolvimento de uma<br />

primeira versão da DSL de forma exclusivamente top-down. O resultado é que nesta tese<br />

as DSLs são mais próximas do domínio do problema, permit<strong>in</strong>do tarefas mais criativas,<br />

facilitando o desenvolvimento de aplicações e oferecendo mais flexibilidade ao desenvolvedor.<br />

Em contrapartida, o desenvolvimento de geradores é mais complexo devido a esta maior<br />

proximidade com o domínio do problema.<br />

As extensões ao modelo de features descritas por Czarnecki, Helsen e Eisenecker (2004b),<br />

221

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

Saved successfully!

Ooh no, something went wrong!