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.

156<br />

D2. Para cada feature opcional, modificar o exemplo, criando uma nova versão do mesmo,<br />

de forma que a feature esteja presente. Caso algum dos padrões de projeto descritos no capítulo<br />

anterior tenha sido utilizado neste ponto do projeto para implementar esta variante em particular,<br />

basta realizar uma simples seleção da variante conforme previsto pelo padrão. Porém, pode<br />

ser que neste momento da implementação seja identificado um detalhe não previsto durante<br />

o projeto. Assim, deve-se também avaliar a aplicação de um novo padrão neste ponto para<br />

facilitar sua seleção no futuro.<br />

D3. Para features alternativas, modificar o exemplo para considerar a presença de cada<br />

alternativa separadamente, e em diferentes comb<strong>in</strong>ações. O uso de padrões destacado pela<br />

diretriz D2 também deve ser considerado para este tipo de feature.<br />

D4. Prestar atenção às dependências entre as features. Por exemplo, se uma feature A<br />

depende de outra feature B, não faz sentido implementar A sem a presença de B.<br />

D5. Adotar uma abordagem de configuração em estágios (CZARNECKI; HELSEN;<br />

EISENECKER, 2004b), tentando elim<strong>in</strong>ar as variabilidades em uma sequência lógica,<br />

considerando primeiro as features mais comuns, para reduzir o número de possibilidades e<br />

o número de versões produzidas a cada ref<strong>in</strong>amento.<br />

D6. Dar maior atenção às variabilidades que possuem maior impacto na arquitetura, aquelas<br />

que são mais frequentes, e aquelas que exigem mais esforço para implementar manualmente.<br />

D7. Para reduzir o número de versões da implementação de referência e facilitar o<br />

seu gerenciamento, pode-se implementar múltiplas variantes simultaneamente, desde que não<br />

<strong>in</strong>terfiram uma com a outra.<br />

D8. Nem todas as possibilidades precisam ser exploradas e implementadas no <strong>in</strong>ício.<br />

Algumas podem ser postergadas para quando a implementação do domínio estiver mais<br />

avançada, ou mesmo após o domínio estar em produção há algum tempo.<br />

D9. Nem toda variabilidade precisa ser <strong>in</strong>cluída na implementação de referência, para fazer<br />

parte de uma DSL. Algumas variabilidades podem ser deixadas de fora, sendo necessária a<br />

sua implementação manual, por ocorrerem muito raramente ou exigirem muito esforço para<br />

automatizá-las.<br />

D10. Se existirem uma ou mais aplicações do domínio disponíveis, estas podem (e devem)<br />

ser consultadas durante o desenvolvimento da implementação de referência. Pode-se <strong>in</strong>clusive<br />

reutilizar trechos de código ou o suporte a alguma variabilidade que venha a estar já presente<br />

em alguma aplicação.<br />

Para variabilidades baseadas em DSL, mais complexas, esta tarefa é mais difícil, já que

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

Saved successfully!

Ooh no, something went wrong!