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.

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.

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

Saved successfully!

Ooh no, something went wrong!