A Model-Driven Software Reuse Approach (in portuguese)
A Model-Driven Software Reuse Approach (in portuguese)
A Model-Driven Software Reuse Approach (in portuguese)
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