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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

254<br />

documentação do software, navegando, por exemplo, por meio da divisão em pacotes ou<br />

bibliotecas, em busca do artefato lembrado por sua memória;<br />

Adaptação: encontrado, o artefato é copiado para seu novo local. A adaptação ocorre somente<br />

se necessário, configurando-o por meio de parâmetros ou de mecanismos de extensão ou<br />

mesmo modificando seu código manualmente; e<br />

Integração: a <strong>in</strong>tegração normalmente consiste em modificar o artefato, o contexto, ou ambos,<br />

para que possam compor a funcionalidade desejada (KRUEGER, 1992).<br />

Essa abordagem, apesar de proporcionar ganhos de produtividade, apresenta alguns<br />

problemas, tais como:<br />

• Uma vez que o artefato normalmente é modificado, é necessário testá-lo novamente<br />

para garantir que as modificações não <strong>in</strong>troduziram nenhum erro novo;<br />

• Os processos de abstração e seleção dependem muito do talento <strong>in</strong>dividual e da<br />

experiência do desenvolvedor, pois se baseiam muito na memória humana; e<br />

• Caso o desenvolvedor não conheça o artefato sendo reutilizado, ele precisa gastar algum<br />

tempo compreendendo-o antes de copiá-lo para o novo contexto. Desta forma, caso esse<br />

tempo seja muito grande, o que ocorre na maioria dos casos envolvendo código-fonte<br />

é que ele acaba optando por desenvolver um novo artefato a partir do zero (DESOUZA;<br />

AWAZU; TIWANA, 2006).<br />

Por esses e outros motivos, a pesquisa vem evolu<strong>in</strong>do na busca por novos métodos e técnicas<br />

que evitem tais tipos de problemas. A seguir, são apresentadas as pr<strong>in</strong>cipais abordagens voltadas<br />

para reutilização de software existentes na literatura, destacando-se o desenvolvimento baseado<br />

em componentes (SAMETINGER, 1997; SZYPERSKI; GRUNTZ; MURER, 2002), l<strong>in</strong>guagens<br />

específicas de domínio (DEURSEN; KLINT; VISSER, 2000), programação generativa (CZARNECKI;<br />

EISENECKER, 2000), e outras técnicas, tais como frameworks (JOHNSON, 1997b), padrões<br />

(BUSCHMANN et al., 1996) e reengenharia de software (JACOBSON; LINDSTROM, 1991).<br />

Desenvolvimento Baseado em Componentes<br />

Dentre as técnicas utilizadas para se alcançar os benefícios da reutilização, destaca-se o<br />

desenvolvimento baseado em componentes (DBC). Até alguns anos atrás, o desenvolvimento<br />

da maioria dos produtos de software era baseado em blocos monolíticos, formados por um

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

Saved successfully!

Ooh no, something went wrong!