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.
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