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.

e l<strong>in</strong>ks). Para representar esta variabilidade, no lado <strong>in</strong>ferior da figura estão as features de<br />

tecnologia do domínio (Seção 3.1.1): pág<strong>in</strong>as (formulários ou relatórios) e l<strong>in</strong>ks são utilizados<br />

para exibir a <strong>in</strong>formação em um navegador, e tipos de documentos e relacionamentos descrevem<br />

a estrutura da <strong>in</strong>formação.<br />

A maioria das features, como a busca, conteúdo de usuário e moderação, representa a<br />

variabilidade do tipo presente/ausente, que fica próxima do lado da configuração de rot<strong>in</strong>a<br />

no espectro de variabilidade. Desta forma, grande parte do suporte à variabilidade pode ser<br />

conseguido somente através de configuração, com a ajuda de uma arquitetura bem projetada e<br />

um conjunto de componentes reutilizáveis.<br />

Porém, features como tipos de documentos e relacionamentos contêm variabilidades mais<br />

complexas, para as quais todos os detalhes não podem ser capturados somente com modelos de<br />

features, pois estes são muito genéricos (TOLVANEN; KELLY, 2005). Estruturas ou mecanismos<br />

mais ricos são necessários, com mais poder expressivo capaz de capturar detalhes sobre os<br />

conceitos do domínio, seus relacionamentos e restrições.<br />

Nestes casos, é possível simplesmente implementar manualmente o suporte a esta variação,<br />

que é o que acontece no desenvolvimento tradicional. Para isso, um desenvolvedor utiliza suas<br />

habilidades de programador e uma l<strong>in</strong>guagem de programação, possivelmente com a ajuda de<br />

uma biblioteca ou framework que facilite este trabalho criativo.<br />

Mas no caso do MDD, onde se deseja automatizar o suporte à variabilidade, a tecnologia<br />

escolhida é normalmente uma l<strong>in</strong>guagem específica de domínio (DSL), pois ela pode<br />

complementar o modelo de features com detalhes sobre variabilidades mais complexas em<br />

partes do domínio (TOLVANEN; KELLY, 2005; CZARNECKI, 2005). Adicionalmente, uma<br />

DSL pode ser utilizada junto com transformações para automaticamente gerar artefatos de<br />

implementação, que é o objetivo f<strong>in</strong>al do desenvolvimento orientado a modelos (CZARNECKI,<br />

2005).<br />

O elemento que une estes artefatos é a arquitetura do domínio, que deve ser projetada<br />

para dar suporte tanto à variabilidade baseada em features como à variabilidade baseada em<br />

DSLs. Também deve ter preocupações sobre a existência, além dos componentes do domínio, de<br />

artefatos específicos do MDD, como DSLs, transformações de software e geradores de código.<br />

Um problema é que a maioria das abordagens de engenharia de domínio existentes não<br />

def<strong>in</strong>e como projetar uma arquitetura de software específica de domínio com este objetivo. A<br />

literatura possui muitos trabalhos que discutem detalhes sobre como produzir uma arquitetura<br />

para reutilização (BASS; CLEMENTS; KAZMAN, 2003; BOSCH, 2000), mas estes não consideram o<br />

MDD. E aqueles que consideram são normalmente focados no processo de derivação automática<br />

117

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

Saved successfully!

Ooh no, something went wrong!