Resumo:
O avanço da internet tem motivado o crescimento de uma nova geração de aplicações baseada na web, que
combinam navegação e interatividade num grande espaço de documentos heterogêneos. A web se mostrou como um dos meios
mais efetivos e atrativos meios de divulgação, negociação e disponibilização de bens e serviços.
Independente de contexto, o projeto de aplicações ainda não é um processo totalmente definido, como se sabe fazer
software é um processo lento e custoso, somado a isso a demanda por software aumentou muito nas ultimas décadas,
necessita-se mais, com prazos de entrega cada vez mais curtos e exigentes, ao mesmo tempo em que se exige qualidade e
confiabilidade no produto final, e é dentro deste contexto que surge o processo de desenvolvimento baseado em reuso
de software.
A reutilização de software é uma das áreas da engenharia de software que propõe um conjunto sistemático de processos,
de técnicas e de ferramentas para obter produtos com alta qualidade e que sejam economicamente viáveis. A idéia do reuso
é evitar retrabalho no desenvolvimento de um novo projeto, sempre levando em consideração trabalhos anteriores, fazendo
com que soluções previamente desenvolvidas sejam aproveitadas e implementadas em novos contextos. Dessa forma, tem-se
melhores produtos em um menor intervalo de tempo e um aumento da qualidade, pois muitas dessas soluções já foram testadas
e validadas anteriormente. O termo reuso pode ser considerado uma denominação genérica para uma série de técnicas
utilizadas, que vão desde a etapa de modelagem de um projeto até a implementação.
Atualmente existem várias técnicas de reuso como frameworks, arquiteturas orientadas a serviços (SOA), engenharia de
software baseada em componentes, entre outras. Este trabalho focará em apresentar somente as técnicas de reuso no contexto
de frameworks e arquiteturas orientadas a serviços.
Ao desenvolver sistemas, o desenvolvedor depara-se com inúmeros desafios. Além de ter que entender sobre regras de negócio
do seu domínio de aplicação, ele tem que lidar também com aspectos ligados à infra-estrutura da aplicação como segurança,
serviços remotos, persistência de dados, validação entre outros.
Desse modo desenvolver software já é complicado por ter que entender o domínio da aplicação e não deveria ser mais difícil
ainda por tais questões de infra-estrutura.
Os Frameworks são uma técnica de reuso que surge como uma solução para este problema, acelerando o desenvolvimento de
software. A idéia é permitir que o desenvolvedor se foque mais nos aspectos funcionais do domínio da aplicação, cabendo
ao frameworks a tarefa de fornecer a infra-estrutura técnica necessária para o tratamento destas questões técnicas,
fornecendo ao desenvolvedor uma maneira de lidar com tais questões de baixo nível como transações, segurança, e serviços
remotos, a partir de uma visão de mais alto nível, tornando o processo de desenvolvimento mais fácil e rápido ao
desenvolvedor da aplicação.
Arquiteturas orientadas a serviços (SOA) tem como objetivo propor um novo padrão arquitetural para projetar e construir
softwares complexos a partir da reutilização de componentes de software pré-construídos e testados, chamados de serviços.
Nesta abordagem, as aplicações são vistas como um conjunto de pequenos blocos denominados serviços, desenvolvidos sob um
determinado padrão a fim de prover maior reusabilidade, facilitar sua manutenção, e se encontram acessíveis dentro de uma
rede de computadores. Devem prover interfaces bem definidas por meio das quais os serviços são integrados uns aos outros,
formando um sistema de software baseado em serviços.