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.
144<br />
domínio para reutilização são amplamente discutidas pela comunidade científica, a área de<br />
implementação apresenta algumas lacunas que precisam ser preenchidas (ALMEIDA et al., 2008;<br />
ANASTASOPOULOS; GACEK, 2001). Uma das razões é que a engenharia de domínio tem suas<br />
raízes na comunidade de reutilização de software, que favorece uma abordagem top-down<br />
(PATZKE; MUTHIG, 2002), dando mais ênfase à análise e projeto.<br />
Outra razão é o fato de que, para def<strong>in</strong>ir um processo genérico, deve ser possível generalizar<br />
detalhes específicos de plataforma e l<strong>in</strong>guagem, de forma que o processo possa ser utilizado<br />
<strong>in</strong>dependentemente da tecnologia de implementação. Ao mesmo tempo, a implementação<br />
é extremamente dependente da tecnologia (ALMEIDA et al., 2008), fazendo com que esta<br />
generalização seja uma luta entre forças opostas. Como resultado, observa-se uma falta de<br />
orientação com relação às atividades para implementação de um domínio para reutilização<br />
(PATZKE; MUTHIG, 2002).<br />
Há <strong>in</strong>úmeras técnicas para se implementar domínios reutilizáveis, como aquelas descritas<br />
na Seção 3.2.1. Estas podem ser divididas em três dimensões: gerenciamento de configuração,<br />
tecnologias de componente e as características generativas das l<strong>in</strong>guagens de programação<br />
(MUTHIG et al., 2002). Cada dimensão tem sua maneira particular para lidar com a variabilidade,<br />
que é o desafio mais notável na implementação de um domínio reutilizável. A dimensão de<br />
gerenciamento de configuração, por exemplo, gerencia as variantes alternativas de um mesmo<br />
artefato em um mesmo ponto no tempo (MUTHIG; PATZKE, 2004).<br />
A dimensão de tecnologia de componentes baseia-se na idéia de componentes de software.<br />
Um componente é, por def<strong>in</strong>ição, uma unidade de composição (MUTHIG et al., 2002), e portanto<br />
esta dimensão lida com a variabilidade através da composição das variantes requeridas na forma<br />
de componentes (KETTEMANN; MUTHIG; ANASTASOPOLOUS, 2003; MUTHIG; PATZKE, 2004).<br />
A tecnologia generativa (CZARNECKI; EISENECKER, 2000), foco desta tese, pode <strong>in</strong>troduzir<br />
um controle mais poderoso sobre a variabilidade no domínio. Enquanto variações dentro de<br />
um componente tradicional limitam-se a estruturas fixas e <strong>in</strong>terfaces previamente projetadas,<br />
a tecnologia generativa possibilita variação em menor granularidade, mesmo dentro de<br />
componentes. Fragmentos de código variante podem ser sistematicamente arranjados para<br />
formar a implementação de um componente (MUTHIG; PATZKE, 2004).<br />
7.1 Objetivos da implementação do domínio<br />
O objetivo desta fase é implementar o domínio, ou seja, implementar componentes,<br />
DSLs, transformações e geradores de código, segu<strong>in</strong>do o projeto def<strong>in</strong>ido na fase anterior.