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.

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

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

Saved successfully!

Ooh no, something went wrong!