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.

maior em determ<strong>in</strong>ada parte do processo, procurando solucionar parte do problema. Em<br />

termos gerais, um processo de reutilização de software deve def<strong>in</strong>ir ao menos duas atividades<br />

essenciais: o desenvolvimento para reutilização, que consiste no desenvolvimento dos artefatos<br />

de software que serão posteriormente reutilizados, e o desenvolvimento com reutilização,<br />

que consiste no desenvolvimento de aplicações que reutilizam os artefatos previamente<br />

desenvolvidos.<br />

Esta dist<strong>in</strong>ção entre desenvolvimento para/com reutilização é o ponto fundamental da<br />

abordagem de engenharia de software conhecida como L<strong>in</strong>ha de Produtos de <strong>Software</strong><br />

(CLEMENTS; NORTHROP, 2002; LINDEN; SCHMID; ROMMES, 2007), descrita a seguir.<br />

2.1.2.1 L<strong>in</strong>has de produtos de software<br />

A origem desta abordagem pode ser rastreada até um trabalho da década de 1970, de<br />

Parnas (1976), o mesmo autor que def<strong>in</strong>iu os conceitos de encapsulamento da <strong>in</strong>formação, um<br />

dos fundamentos da orientação a objetos. Neste trabalho é descrito o conceito de famílias de<br />

programas, e apesar de <strong>in</strong>icialmente ter focado na variabilidade em termos das características<br />

não funcionais, Parnas estabelece a base para as l<strong>in</strong>has de produto de software (LINDEN;<br />

SCHMID; ROMMES, 2007).<br />

O pr<strong>in</strong>cípio def<strong>in</strong>ido era o de estudar primeiro o que os programas de uma mesma<br />

família t<strong>in</strong>ham em comum, para depois tentar entender o que os diferenciava. Em seguida,<br />

duas alternativas de método produziam programas <strong>in</strong>completos que implementavam as partes<br />

comum da família, e deixavam as partes variáveis para serem <strong>in</strong>stanciadas posteriormente: o<br />

método de ref<strong>in</strong>amento por etapas (stepwise ref<strong>in</strong>ement), que produzia um programa no qual<br />

alguns tipos de operandos e operadores eram deixados sem implementação; e o método de<br />

especificação dos módulos, que baseava-se na especificação em alto nível de unidades de<br />

comportamento de programas e no encapsulamento da <strong>in</strong>formação para que o restante do código<br />

pudesse ser idealizado e construído. Para construir um novo programa, um desenvolvedor<br />

reutilizava este programa <strong>in</strong>completo e o completava de acordo com as variabilidades desejadas,<br />

seja providenciando os operadores e operandos, ou efetivamente implementando os módulos<br />

especificados.<br />

Ou seja, há uma mudança de foco. Ao <strong>in</strong>vés de desenvolver software considerando os<br />

requisitos de um único sistema, tenta-se desenvolver software que consiga atender aos requisitos<br />

de um conjunto de sistemas similares, de forma que é possível reaproveitar as partes comuns e<br />

apenas desenvolver o que é completamente novo. Na nomenclatura típica da área de l<strong>in</strong>has de<br />

produtos de software, este conjunto de sistemas similares é chamado de família de produtos, ou<br />

33

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

Saved successfully!

Ooh no, something went wrong!