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.
Até o momento, uma abordagem top-down foi seguida, utilizando modelos de alto nível,<br />
como o modelo de features, para produzir um conjunto <strong>in</strong>icial de DSLs. Estas DSLs são capazes<br />
de representar diferentes tipos de variabilidade em diferentes subdomínios identificados durante<br />
a análise.<br />
Agora, uma abordagem bottom-up é adotada, utilizando o projeto através de exemplos<br />
(VARRÓ, 2006; WIMMER et al., 2007; ROBBES; LANZA, 2008) para produzir transformações e<br />
possivelmente ref<strong>in</strong>ar as DSLs <strong>in</strong>iciais. Partir de uma <strong>in</strong>stância concreta de como o código deve<br />
ser é mais fácil do que identificar todos os detalhes a partir de uma perspectiva de mais alto<br />
nível (ROBBES; LANZA, 2008).<br />
Esta atividade é realizada em quatro passos, apresentados a seguir.<br />
Sub-atividade ID.3.1. Desenvolvimento da implementação de referência<br />
O primeiro passo consiste no desenvolvimento de uma implementação de referência<br />
(MUSZYNSKI, 2005). Esta implementação de referência irá assumir dois papéis: primeiro, irá<br />
servir como um framework do domínio, encapsulando parte das comunalidades e oferecendo<br />
suporte a parte das variabilidades no nível de implementação, através de mecanismos como<br />
aqueles apresentados na Seção 3.2.1 e padrões como aqueles discutidos na atividade PD.3,<br />
da fase de projeto. A existência de um framework facilita a geração de código, uma vez<br />
que o gerador não precisa gerar todo o código, mas somente o código necessário para<br />
“completar” o framework. Para essa tarefa, o implementador do domínio, com a ajuda do<br />
especialista do domínio, segue a arquitetura def<strong>in</strong>ida na fase de projeto, utilizando as táticas e<br />
padrões associados para produzir uma implementação que irá dar suporte ao desenvolvimento<br />
subsequente.<br />
Porém, nem toda comunalidade/variabilidade estará contida no framework. Assim, o<br />
segundo papel da implementação de referência é prover exemplos concretos das variabilidades<br />
restantes, serv<strong>in</strong>do como um “retrato” do código que as transformações e geradores de código<br />
devem produzir, completando assim o suporte automatizado à variabilidade no domínio.<br />
Para isso, a implementação de referência deve <strong>in</strong>cluir exemplos de todos os pontos comuns<br />
e variáveis do domínio. Isto é mais fácil de ser alcançado para a variabilidade baseada em<br />
features, que é f<strong>in</strong>ita. As segu<strong>in</strong>tes diretrizes podem ser utilizadas com este objetivo:<br />
D1. Começar implementando um exemplo completo que contém todas as features<br />
mandatórias, e uma seleção arbitrária de uma feature em cada grupo de or features. Deixar<br />
todas as features opcionais não-implementadas.<br />
155