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.

132<br />

que pode ser <strong>in</strong>serido em outros artefatos. Também pode produzir hierarquias completas de<br />

classes.<br />

Esta abordagem pode ser utilizada em diferentes tipos de variabilidade, por ser mais<br />

flexível, sendo particularmente útil para implementar or features, como ilustra a Figura 21.<br />

Figura 21: Abordagem template sendo aplicada à geração de código baseada em features<br />

O template pr<strong>in</strong>cipal é responsável por analisar os modelos de features e decidir quais<br />

templates serão chamados, quando serão chamados, e em qual ordem. No exemplo da Figura 21,<br />

a featureA é selecionada, e é implementada por uma única classe, enquanto as sub-features A1<br />

e A3 (que estão selecionadas), são implementadas como os métodos A1() e A3().<br />

Sub-atividade PD.3.2. Padrões arquiteturais para variabilidade baseada em DSLs<br />

Este tipo de variabilidade é expresso em termos de uma DSL. O desenvolvedor especifica<br />

um programa/modelo que segue a s<strong>in</strong>taxe de uma DSL, e um gerador produz código-fonte<br />

automaticamente. A variabilidade em uma DSL pode ser virtualmente tudo que pode ser<br />

def<strong>in</strong>ido em um metamodelo: atributos verdadeiro/falso ou str<strong>in</strong>gs, listas tipadas e coleções,<br />

enumerações e outros conceitos da orientação a objetos podem ser utilizados para descrever o<br />

espaço de variabilidade. Para consultar estas estruturas em um gerador, construções comuns à<br />

maioria das l<strong>in</strong>guagem de programação, como condições e laços, podem ser utilizadas.<br />

Devido à grande variedade destes tipos de variabilidade, aqui não se propõe nenhum tipo<br />

de padrão associado a um tipo particular de variação (como na seção anterior). Ao <strong>in</strong>vés disso,<br />

os padrões nesta categoria são focados em como as ferramentas baseadas em DSL e geradores<br />

de código podem ser <strong>in</strong>tegrados à arquitetura e aos geradores de código baseados em features.<br />

Apesar destes padrões não aparecerem na arquitetura da aplicação f<strong>in</strong>al, eles podem ter impacto<br />

no sucesso do domínio. Af<strong>in</strong>al, no MDD estes artefatos também fazem parte da arquitetura do<br />

domínio (VÖLTER; GROHER, 2007), e devem ser considerados durante o seu ciclo de vida.<br />

Um primeiro padrão proposto denom<strong>in</strong>a-se camada f<strong>in</strong>a de dados, que facilita a

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

Saved successfully!

Ooh no, something went wrong!