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