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.

64<br />

caso um deles não seja capaz de atender a uma requisição. A variabilidade pode ser<br />

implementada desta forma, <strong>in</strong>clu<strong>in</strong>do uma funcionalidade padrão ou mandatória em um<br />

objeto, e uma funcionalidade variante em outro objeto, a ser delegado. Esta técnica<br />

funciona com features opcionais, mas apresenta problemas para alternativas, já que é<br />

necessário decidir para quais objetos deve ser feita a delegação;<br />

• Parametrização: consiste na <strong>in</strong>serção de parâmetros em componentes e <strong>in</strong>terfaces, para<br />

seleção das variantes. O componente é então responsável por executar um comportamento<br />

diferente de acordo com o parâmetro especificado;<br />

• Programação orientada a aspectos (AOP - Aspect-Oriented Programm<strong>in</strong>g): com AOP<br />

(KICZALES et al., 1997), funcionalidades mandatórias podem ser implementadas de modo<br />

padrão, enquanto funcionalidades alternativas são implementadas em forma de aspectos,<br />

a serem comb<strong>in</strong>ados posteriormente, num processo conhecido como aspect weav<strong>in</strong>g.<br />

Ou seja, antes da execução, um programa <strong>in</strong>stancia uma configuração do seu código<br />

executável selecionando as alternativas de aspectos que sejam adequadas ao seu estado<br />

atual;<br />

• Arquivos de configuração: consiste na criação de arquivos separados que contêm as<br />

<strong>in</strong>formações variantes, a serem selecionadas e <strong>in</strong>cluídas no produto;<br />

• Carregamento d<strong>in</strong>âmico de classes: permite que um produto solicite uma classe<br />

d<strong>in</strong>amicamente, em tempo de execução. Esta classe é então carregada na memória e<br />

executada. Esta técnica permite a <strong>in</strong>clusão d<strong>in</strong>âmica de alternativas, de acordo, por<br />

exemplo, com parâmetros ou arquivos de configuração.<br />

Outra técnica também bastante utilizada no suporte à variabilidade é o uso de padrões<br />

de projeto (KEEPENCE; MANNION, 1999; ANASTASOPOULOS; GACEK, 2001; LEE; KANG, 2004;<br />

ALMEIDA et al., 2007b). Padrões como o Abstract Factory, S<strong>in</strong>gleton, Factory Method,<br />

Prototype, Strategy, Template Method, Builder, Director, Observer, Decorator, Composite,<br />

Adapter, Bridge, Cha<strong>in</strong> of Responsibility e Command (GAMMA et al., 1995), entre outros, podem<br />

potencializar o uso das técnicas para implementação da variabilidade descritas.<br />

F<strong>in</strong>almente, pode-se implementar variabilidade utilizando técnicas de gerência de<br />

configuração (MUTHIG et al., 2002). Nesta abordagem, variantes alternativas de um<br />

mesmo artefato são <strong>in</strong>cluídas ou excluídas através de mecanismos de controle de versões,<br />

selecionando-se a versão que possui a variante desejada, por exemplo. Esta abordagem é<br />

utilizada por muitos profissionais, mas frequentemente leva a problemas graves quando as<br />

variações são muito complexas (MUTHIG; PATZKE, 2004). Isto porque, em geral, dependem de

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

Saved successfully!

Ooh no, something went wrong!