MAC0499-Trabalho de Formatura 2006 IME-USP
Técnicas de Reuso de Software aplicados na elaboração de Arquiteturas Corporativas

Tipo de Trabalho: Estágio Supervisionado
Aluno: Alexandre Eiki Onishi
Orientador: Prof. Siang Wun Song

[Apresentação]

[Monografia]

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.