Artigo Engenharia de Software 2 - CBD x SOA
Artigo da Revista Engenharia de Software edição 2.
Estatísticas:










votos: 1
Serviços:


Projeto
CBD x SOA
Serviços, processos de negócio e componentes que realizam os serviços
Muitas comparações já foram feitas entre desenvolvimento orientado a objetos (OO) e o desenvolvimento baseado em componentes (CBD). Componentes e objetos, possuem características similares, como a necessidade de interfaces bem definidas e a disponibilização de operações aos seus clientes. Essas semelhanças dificultam ainda mais o entendimento de OO e CBD. Algo muito parecido vem acontecendo no caso de CBD e SOA.
Como veremos, existem conceitos de CBD e SOA similares, por exemplo, encapsulamento, contratos e reuso, que podem dificultar a comparação dessas abordagens. Para uma melhor comparação é necessário compreender os conceitos essenciais envolvidos, quais sejam, processos de negócio, componentes realizadores dos serviços, entre outros.
O presente artigo não trata de tecnologia, como “REST versus SOAP/WS”, ou “serviços implementados com EJB/RMI”. Atualmente, existe uma infra
SOA: evolução, não inovação
Desconfie quando alguém fala que uma abordagem em TI é totalmente nova, pois, normalmente, as novidades do mercado complementam ou corrigem as antigas, e não as substituem. Soluções como CBD e SOA se destinam, na maioria das vezes, a superar limitações humanas, como lidar com grande quantidade de informações complexas. Para lidar com tal complexidade, a abstração é uma ferramenta chave, e está intimamente relacionada com o conceito de encapsulamento. Focando nesse aspecto essencial, Page Jones descreve em seu livro “Fundamentals of Object

Figura 1. Esquema dos níveis de encapsulamento com serviços
No início, eram apenas linhas de código e vários GOTOs. Quem já programou assim lembra que, muitas vezes, face à necessidade de se fazer uma alteração, era mais fácil recodificar o programa inteiro em função da desorganização que existia. Além disso, para realizar qualquer manutenção, era preciso memorizar todo o código envolvido.
Com a adoção de sub
Com a dificuldade na manutenção que a decomposição funcional provocava em sistemas grandes ou complexos, em determinado momento da história os dados passaram a ser o centro das aplicações, pois era possível mantê
Em função das limitações da abordagem de decomposição funcional, fez
Com a estratégia de “dividir para conquistar”, e também inspirado nos princípios da engenharia eletrônica, foi criado mais um nível de encapsulamento, qual seja, o componente de negócio. O componente encapsula objetos, protegendo
Serviços são parecidos com componentes em muitos aspectos, por exemplo, a ênfase
Conceituando SOA
Martin Fowler descreve a confusão em torno de SOA em um post no seu bliki, de leitura obrigatória, chamado Service Oriented Ambiguity (endereço relacionado no quadro Links). O cientista sustenta que é impossível responder o que é SOA, pois, para pessoas diferentes, SOA possui significados distintos. Entretanto, podemos relacionar algumas idéias e mitos recorrentes na conceituação de SOA, que, juntos, podem auxiliar na definição de tal estratégia
Um dos principais erros na conceituação de SOA atualmente, mostra SOA como pura tecnologia, por exemplo, Web Services e EJBs. SOA tem dois aspectos fundamentais: a necessidade de se mapear processos e de ter governança SOA. Sem esses elementos não é possível obter os benefícios com SOA.
Considerando que as empresas são grandes coleções de processos e que SOA promove o alinhamento com o negócio, concluímos que existe uma forte conexão entre os processos de negócios e a identificação de serviço. Em geral, os processos de negócios concentram
Governança SOA é focada no ciclo de vida dos serviços. Governança SOA estende a Governança de TI para assegurar os conceitos e princípios de SOA. Em outras palavras, é uma especialização de Governança de TI. A Governança SOA endereça questões como: Maturidade dos Serviços; Infra
Freqüentemente, relaciona

Figura 2. Enterprise Service Bus (ESB)
O foco nas interfaces é o que dá ao SOA a habilidade de obter acoplamento fraco, composição, reuso e vários outros objetivos do projeto (design goals).
A essência de SOA está mais relacionada à habilidade de atender o negócio rapidamente. Para tanto, obter um nível de granularidade para os serviços identificáveis nos processos de negócio é uma abordagem fundamental. Isto contribui principalmente em questões como a orquestração no contexto de BPM (Business Process Management) e a justificativa de investimentos em TI, uma vez que permite a visibilidade da associação do serviço com o negócio.
Podemos resumir BPM como a combinação de pessoas, tecnologia e processos. BPM é uma prática para melhorar a eficiência das organizações, automatizando os processos de negócios. A modelagem, a execução (orquestração de Serviço) e o monitoramento dos processos são disciplinas de BPM. A associação de BPM e SOA é importante para aumentar a capacidade de responder às mudanças do negócio.
Orquestração de Serviço
Depois de encontrados os componentes e serviços, a fim de se atender a uma aplicação específica, são necessários que se efetue a orquestração, ou seja, que tais serviços sejam “chamados” em uma ordem lógica, e que sejam cumpridas todas as pré
Em alguns casos será necessário algum tipo de workflow em nível de integração de serviços (Lógica de conectividade). Isto não deve ser confundido com o workflow de processos de negócios. Os ESB’s provêem formas de realizar orquestração para a lógica de conectividade.
Sistemas de informação em geral possuem a lógica de processo de negócio e a lógica de integração misturada com a regra do negócio. Um grande desafio na abordagem SOA é dividir corretamente a lógica da aplicação, como na Figura 3.

Figura 3. Diferentes lógicas de uma aplicação na abordagem SOA
TI alinhada ao negócio
Existem autores que classificam serviços em “de negócio” ou “de infra
Também é interessante observar que esta conexão mais próxima com o modelo de processo de negócio associa mais diretamente os investimentos em TI às necessidades do negócio. Em outras palavras, um serviço baseado no processo de negócio pode ser usado para endereçar o orçamento de TI, justificando desta forma os custos de TI correlacionados aos resultados dos processos de negócio. Sem uma aliança entre as áreas de negócio e a TI, SOA não irá obter o sucesso esperado. SOA deveria ser exigido pelo negócio, não somente pela TI.
Componentes que realizam os serviços
A adoção do SOA não revogou nada do CBD, pelo contrário, representou uma evolução deste. Isto porque o CBD trouxe a base essencial para que fosse possível suportar SOA, ou seja, a infra

Figura 4. Visão simplificada de identificação de serviços e componentes.
Como SOA trata do alinhamento da TI com os processos de negócio da empresa, os serviços devem ser rastreáveis. Pode
Todavia, nem sempre as interfaces de componentes são muito granulares. Na verdade, para a interface dos componentes de negócio, podemos considerar os casos de uso (UC). UC são soluções para os requisitos funcionais, que produzem um resultado observável para um ator. Na descrição dos casos de uso temos as interações ator/sistema. Analisando essas interações, encontramos, por exemplo, a necessidade de exibir uma simples lista para uma “caixa de seleção” (alta granularidade) ou, até mesmo, coisas do tipo “aprovar um empréstimo” (baixa granularidade). Já com SOA, na maioria dos caos, temos uma baixa granularidade, já que a interface é identificada na perspectiva do negócio (processos de negócio), envolvendo uma análise do mesmo.
Para encontrar serviços, geralmente considera
Depois que os serviços são identificados (serviços candidatos), é necessário determinar quais devem ser expostos como serviços. Os serviços que fazem parte do processo de negócio que está sendo automatizado, serão implementados, mas não necessariamente exigirão a geração de WSDL ou de outras formas de exposição. Serão tratados como componentes da aplicação, evitando problemas de desempenho e gerenciamento de serviço. Portanto, são necessários alguns critérios para ajudar a decidir se um serviço deve ser exposto, como relevância para o negócio, possibilidade de reutilização e viabilidade técnica.
Os componentes são a melhor abordagem para implementar serviços, embora se deva entender que um aplicativo baseado em componente bem projetado não é necessariamente uma abordagem SOA. Conforme mostrado, temos que considerar muitas questões para melhor atender as mudanças no negócio, que é o objetivo. Uma abordagem orientada a serviços implica em uma camada de arquitetura de aplicativo adicional. A Figura 5 demonstra como as camadas de tecnologia podem ser aplicadas à arquitetura.

Figura 5. Camadas de uma implementação SOA
Camada de Serviços: A camada de serviços é caracterizada por serviços que realizam funções individuais de um negócio. Serviços são compostos de Contrato, Interface, Componentes de Negócio (Lógica de Negócios) e são identificados no processo de negócio.
Camada de Componentes de negócio (Subsistemas): Um componente de negócio é uma parte de um sistema que encapsula as regras de negócio e as expõe através de interfaces bem definidas. Componentes são independentes, substituíveis e modulares, eles ajudam a gerenciar a complexidade e encorajam a reutilização. Estes são identificados decompondo
Camada de Classes e Objetos: Na camada de Classes e objetos é onde estão as classes, atributos e relacionamentos de um objeto. Os objetos colaboram entre si para realizar as regras de negócio de um componente específico.
Por fim, o exemplo da Figura 6 mostra que SOA absorve o projeto baseado em componentes, ou seja, o serviço vai ser implementado por um ou mais componentes.

Figura 6. Abstração em pacotes de SOA
Links
The Open Group, Service Oriented Architecture
http://www.opengroup.org/projects/soa/
IASA
http://www.iasahome.org/web/home/home
Artigo “Service Oriented Ambiguity”
http://www.martinfowler.com/bliki/ServiceOrientedAmbiguity.html
Service
http://www.ibm.com/developerworks/webservices/library/ws-soa-design1/
OASIS WSBPEL
http://www.oasis
Livro “Fundamentals of Object
by Meilir Page
Livro “Service





Introdução a UML

Curso Online: Criando somente a documentação necessária de um sistema controle de estoque(básico) para uma empresa

Curso online DER conceitos e prática

OLAP com o SQL Server

Introdução à Engenharia de Requisitos

Curso OnLine WebDesign - Desenvolvendo o layout de um WebSite passo a passo




[vídeo] Alterando dados no arquivo XML

[vídeo] Array no ViewData: Curso ASP.NET MVC 2.0 com Visual Studio 2010 - Parte 14

Mineração de Repositórios de Software: A Computação ajudando à Computação.

Boas-vindas

Boas-vindas

Mineração de Repositórios de Software: A Computação ajudando à Computação.

[vídeo] Teste Automatizado: Codificação do UserTest - Curso JEE e JSE – Loja Virtual Completa – Parte 17

[vídeo] MD5 com Delphi: Usando o Método Locar - Curso Aplicação Financeira Delphi 2009 e MySQ – Parte 32

[vídeo] MD5 com MySQL: Utilizando a função para Logar - Curso Aplicação Financeira Delphi 2009 e MySQL – Parte 31


Você está em:







