O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Estudo da aplicação da arquitetura orientada a serviços em um sistema de
gestão de fluxo de caixa


Glauco Vinicius Argent...
2




1. INTRODUÇÃO




Em geral, as empresas investem muito dinheiro em software e para que obtenham
um retorno sobre inv...
3




Figura 1 – Representação da heterogeneidade dos sistemas corporativos e da integração “ponto-a-
ponto”.
Fonte: Adapt...
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 26 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Quem viu também gostou (10)

Anúncio

Semelhante a Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa (20)

Anúncio

Mais recentes (20)

Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa

  1. 1. Estudo da aplicação da arquitetura orientada a serviços em um sistema de gestão de fluxo de caixa Glauco Vinicius Argentino de Oliveira1 Walter Mourão2 RESUMO Muitas organizações possuem dificuldades em realizar o controle efetivo de sua informação, uma vez que esta se encontra fragmentada nos diversos sistemas de informação existentes e sem integração. Esse cenário acaba acarretando o atraso dos processos de tomada de decisão, principalmente por parte da alta gerência. Neste cenário a arquitetura orientada a serviços é uma abordagem de desenvolvimento de sistemas de informação corporativos que busca manter o foco nos processos de negócio, implementando-os como serviços reutilizáveis e interoperáveis. Esse trabalho tem por objetivo analisar a experiência da implementação de alguns conceitos da arquitetura orientada a serviços em sistema de gestão de fluxo de caixa através da realização de um estudo de caso. No decorrer desse artigo serão definidos os principais conceitos relacionados á esse estilo arquitetural, compreendidas as dificuldades de integração com sistemas legados e levantados aspectos importantes a serem observados durante a adoção desse paradigma. Palavras-chave: integração de sistemas, arquitetura de software, arquitetura orientada a serviços. 1 Analista desenvolvedor da SQUADRA Tecnologia em Software LTDA e aluno do curso superior de Tecnologia em Sistemas para Internet do Centro Universitário de Belo Horizonte. Email: gl4uc0@gmail.com. 2 Especialista em melhoria de processo de software e professor do curso superior de Tecnologia em Sistemas para Internet do Centro Universitário de Belo Horizonte. Email: walter.mourao@gmail.com.
  2. 2. 2 1. INTRODUÇÃO Em geral, as empresas investem muito dinheiro em software e para que obtenham um retorno sobre investimento esse software deve ser utilizado por vários anos. No entanto com o passar do tempo os usuários exigem cada vez mais dos sistemas de informação, inclusive dos sistemas legados: interfaces gráficas, tempo de resposta pequeno, extração em tempo real de informações gerenciais, etc. (SANTOS, 2004). Tipicamente os sistemas legados são grandes, complexos e difíceis de lidar pelo fato de que muitos processos de negócios foram encapsulados em lógicas de aplicação no decorrer dos anos (BENNETT, 1995). Esses sistemas acabaram se transformando no repositório da experiência e do conhecimento das organizações, tornando-se vitais para a continuidade de seus negócios (SANTOS, 2004, p.6). As diversas “ondas tecnológicas” pelas quais o mercado passou nos últimos anos, promoveram a heterogeneidade corporativa (Figura 1). Em grandes corporações é possível encontrar inúmeros sistemas de informação sendo executados em múltiplas arquiteturas. Muitos desses sistemas não possuem integração com os demais, convertendo-se então em verdadeiras “ilhas de informação”. Essa falta de integração entre os ativos de Tecnologia da Informação (TI) é um desafio que as organizações enfrentam quando tentam se manter competitivas e crescendo (MICROSOFT, 2006).
  3. 3. 3 Figura 1 – Representação da heterogeneidade dos sistemas corporativos e da integração “ponto-a- ponto”. Fonte: Adaptado da obra de (JOSSUTIS, 2008, p.14). Nesse contexto, em que é necessário promover a integração dos diversos sistemas de informação heterogêneos, a arquitetura orientada a serviços (SOA3) ganha destaque como uma abordagem capaz de promover o melhor alinhamento do departamento de TI com as necessidades da empresa, de forma a responder melhor às mudanças. A arquitetura orientada a serviços é um estilo de arquitetura de software com foco na distribuição do processamento através da criação e publicação de serviços reutilizáveis, flexíveis e interoperáveis. Esses serviços são funcionalidades específicas presentes nas aplicações corporativas e que dizem respeito ao negócio da empresa, e que podem ser disponibilizados para todas as demais aplicações de 3 SOA é a sigla para Service Oriented Architecture ou Arquitetura Orientada a Serviços.
  4. 4. 4 modo a facilitar e unificar o processo de desenvolvimento de software (MICROSOFT, 2006). Os sistemas de informação, que utilizam a arquitetura orientada a serviços, se organizam de tal forma que passam a ser criados a partir dos componentes que executam funções discretas de negócio. Estes componentes, denominados “serviços”, podem ser distribuídos e ajustados em um novo processo de negócio assim que necessário. O objetivo é permitir às empresas realizar negócios e obter vantagens tecnológicas por meio da combinação e inovação de processos, governança eficaz e estratégia de tecnologia, as quais giram em torno da definição e reutilização de serviços (SOUZA JÚNIOR et al, 2007). Segundo (IBM, 2005), a arquitetura orientada a serviços oferece aos negócios os seguintes benefícios:  Permite maior agilidade na realização dos processos de negócios;  Habilita as organizações a transcender seus limites;  Reduz o tempo dos ciclos de desenvolvimento de software; Juntamente com os benefícios para o negócio, o departamento de TI pode colher os seguintes benefícios:  Gerar serviços apenas uma vez e utilizá-los freqüentemente;  Promover a consistência dos processos de negócio;  Padronizar a integração e a redução da complexidade das soluções de software; De maneira geral, observa-se que a adoção da arquitetura orientada a serviços ainda é baixa, bem como a quantidade de material científico publicado no idioma português a respeito do assunto. O principal objetivo desse trabalho é analisar uma experiência da implementação dos conceitos da arquitetura orientada a serviços em sistema de informação do mundo real. Para tanto, os objetivos secundários são:
  5. 5. 5  Definir os principais conceitos relacionados à Arquitetura Orientada a Serviços;  Compreender as dificuldades da integração de sistemas legados;  Identificar aspectos importantes a serem observados durante a adoção de SOA em uma organização; A pretensão desse trabalho é fornecer uma ferramenta de consulta para suporte a decisões da utilização ou grau de utilização da arquitetura orientada a serviços. Será realizado um estudo de caso da implementação de um sistema de informação que utiliza conceitos da arquitetura orientada a serviços. Nesse estudo de caso serão identificadas as principais dificuldades observadas durante a implementação bem como um conjunto de boas práticas identificadas. O estudo de caso foi selecionado como metodologia para o desenvolvimento desse trabalho pelo fato de ser um tipo de pesquisa qualitativa que visa compreender e evidenciar o “como” e “porque” de um determinado cenário. É um tipo de investigação a respeito de uma situação específica que procura descobrir sua essência e características e que possui um forte cunho descritivo, sem a interferência do pesquisador sobre a situação. O trabalho de pesquisa consistiu em uma série de reuniões presenciais com os profissionais envolvidos no processo de desenvolvimento. Houve uma intensa pesquisa documental de todos os artefatos gerados na fase de concepção, elaboração e construção do projeto. Esse projeto foi escolhido para a realização desse estudo de caso pelo fato de incorporar alguns dos princípios da arquitetura orientada a serviços e ser um primeiro passo para a adoção desse estilo arquitetural por toda a empresa.
  6. 6. 6 2. MARCO TEÓRICO A arquitetura orientada a serviços consiste em três elementos principais que serão apresentados em maiores detalhes no decorrer do artigo:  Serviços;  Infra-estrutura;  Políticas e processos. 2.1 ARQUITETURA DE SOFTWARE Para compreender o conceito de arquitetura orientada a serviços é necessário compreender o que é a arquitetura de software e qual a sua importância em um projeto de software. Em sua obra, Bass, Clements e Kazman definem a arquitetura de software como sendo a estrutura de um sistema computacional, que abrange os componentes de software que compõem esse sistema, suas propriedades visíveis externamente e o relacionamento entre eles. Pressman ainda enfatiza que a arquitetura não é o software operacional, mas sim uma representação que permite ao engenheiro de software:  Analisar a aderência do desenho aos requisitos levantados junto ao cliente;  Considerar alternativas arquiteturais em um estágio no qual as alterações no desenho ainda são relativamente simples;  Minimizar os riscos associados á construção de software; Com base na obra de Bass, Clements e Kazman, Pressman elenca três principais razões para justificar a arquitetura de software:
  7. 7. 7  As representações da arquitetura de software são uma forma de melhorar a comunicação entre as partes interessadas (stakeholders) no desenvolvimento do software.  A arquitetura destaca as decisões de desenho que terão um impacto profundo em todo o trabalho consecutivo da engenharia de software, e no sucesso final do software.  A arquitetura representa um modelo de como um software é estruturado e como seus componentes trabalham juntos. 2.2 ARQUITETURA ORIENTADA A SERVIÇOS A arquitetura orientada a serviços é um paradigma que tem como principal objetivo a exposição e reuso intenso de serviços, componentes de software que executam tarefas específicas relacionadas ao negócio, de maneira pouco acoplada e interoperável, para que em médio prazo a tarefa de desenvolver uma aplicação seja primordialmente a tarefa de compor e coordenar os serviços já existentes (MACHADO, 2004). Josuttis afirma que a arquitetura orientada a serviços lida muito bem com características difíceis e conhecidas dos grandes sistemas:  Sistemas distribuídos;  Diferentes proprietários;  Heterogeneidade; As características da arquitetura orientada a serviços que permite lidar muito bem com as características dos grandes sistemas, citadas anteriormente, são:  Serviços: A arquitetura orientada a serviços objetiva abstrair concentrando-se no aspecto corporativo do problema. Um serviço é então, uma representação da TI de alguma funcionalidade de negócio. O objetivo da arquitetura orientada a serviços é estruturar grandes sistemas distribuídos baseados em abstração das regras e funções de negócio;
  8. 8. 8  Interoperabilidade: A interoperabilidade não é um conceito novo e existia muito antes do aparecimento da arquitetura orientada a serviços juntamente com a idéia de EAI (Enterprise Application Integration). Entretanto, na arquitetura orientada a serviços, a interoperabilidade é quem guia a implementação das funcionalidades de negócio (serviços);  Acoplamento fraco: Acoplamento fraco consiste em minimizar as dependências de modo a aumentar a flexibilidade, escalabilidade e tolerância às falhas; Machado ainda apresenta algumas características relevantes presentes em grande parte das aplicações e frameworks orientados a serviços. As características consideradas relevantes são:  Reuso “caixa-preta”: Diz respeito à capacidade de extensão das funcionalidades através da descrição de interfaces ou contratos bem definidos que devem ser respeitados;  Distribuição: Um sistema baseado na uma arquitetura orientada a serviços é tipicamente um sistema cooperativo aberto. Em um sistema cooperativo aberto, novas entidades podem dinamicamente passar a compor o sistema, deixar de existir ou ainda evoluir, sendo que essas entidades podem estar localizadas em máquinas distintas;  Heterogeneidade Ambiental: Em virtude da distribuição, existe a necessidade de que sistemas baseados na arquitetura orientada a serviços ofereçam suporte a ambientes heterogêneos. Em geral os componentes dos sistemas (serviços) estão executando em máquinas distintas, e precisam se comunicar de alguma forma;  Composição: O ideal perseguido é a capacidade de compor ou recompor aplicações sem tocar em código escrito e devidamente testado;  Coordenação: Está intimamente ligada com a sincronização, ordenação e temporização da execução dos serviços. Na indústria, à coordenação está mais relacionada a modelagem de processos de negócios (BPM – Business Process Management), onde a linguagem usada tenta descrever intimamente como funciona o processo da corporação;
  9. 9. 9  Dinamismo e Adaptabilidade: Aplicações orientadas a serviços conseguem se adaptar às mudanças de requerimentos com facilidade. Os serviços podem entrar e sair do sistema em tempo de execução, tipicamente se comunicando com o registro de serviços através de mensagens de publicação ou de remoção. Além disso, geralmente os sistemas nunca fazem referência direta ao serviço e sim a uma interface para o serviço, possibilitando dinamismo;  Sincronia: A troca de mensagens, seu modo de transmissão e a semântica são partes fundamentais em sistemas distribuídos, pois são a única maneira que os componentes possuem de se comunicar e sincronizar suas ações; 2.3. SERVIÇOS E PROCESSOS DE NEGÓCIO Como dito anteriormente, a arquitetura orientada a serviços é focada nos processos de negócio. Um processo do negócio pode ser automatizado por meio de sistemas de informação visando realizá-lo com maior rapidez, menor quantidade de erros, menor custo e maior qualidade. Esse processo pode ser executado com um ou mais passos e esses passos podem ser executados em sistemas diferentes. É possível desmembrar um processo de negócio em passos menores e mais concretos. A Figura 2 fornece uma representação possível desse conceito, no entanto, deve-se ter em mente que o número exato de camadas e terminologia podem variar de acordo com o ambiente.
  10. 10. 10 Figura 2 – Representação da hierarquia de um processo de negócio. Fonte: Adaptado da obra de (JOSUTTIS, 2008, p.74). O principal objetivo de um serviço é representar um passo natural da funcionalidade de negócio. Sendo assim, um serviço pode ser definido como uma tarefa repetitiva e específica dentro de um processo de negócio (IBM, 2005), uma peça independente de funcionalidade que pode ser descoberta na rede, e que descreve o que ela pode fazer e como pode se interagir com ela (MICROSOFT, 2006). Esses serviços podem ser implementados e consumidos em uma única máquina, distribuídos através de um conjunto de computadores ou uma rede local, ou através de redes corporativas (IBM, 2005). Pelo fato desses serviços serem implementados tendo em vista o negócio, as pessoas de negócio deveriam ser capazes de entender o que um serviço faz (JOSUTTIS, 2008). A principal conseqüência dessa abordagem é que neste nível de abstração os detalhes específicos da plataforma não importam.
  11. 11. 11 Muitas definições da arquitetura orientada a serviço que foram encontradas no decorrer do desenvolvimento desse artigo, afirmam que a implementação dos serviços deve ser realizada utilizando-se os XML Web Services. Muitos até confundem a arquitetura orientada a serviços com essa tecnologia. Os XML Web Services são apenas uma maneira para implementar a arquitetura orientada a serviços, contudo, o conceito dessa arquitetura não está vinculado a nenhuma tecnologia específica. 2.4. ENTERPRISE SERVICE BUS O ESB (Enterprise Service Bus ou Barramento de Serviços Corporativos) é parte da infra-estrutura da arquitetura orientada a serviços e provê um modo dos consumidores invocarem os serviços ofertados pelos fornecedores. A Figura 3 ilustra a utilização do ESB em um cenário de SOA federativa ou em rede. Esse cenário ocorre quando existem serviços básicos (funcionalidade discretas) e os compostos (serviços compostos por outros serviços). Esse estágio introduz uma camada adicional para os serviços,denominada camada de orquestração.
  12. 12. 12 Figura 3 – Representação da interação entre serviços, orquestração de serviços, ESB e consumidor de serviço. Fonte: JOSUTTIS, 2008, p.62. Dentre as responsabilidades atribuídas a um ESB e citadas por (JOSUTTIS, 2008) estão:  Prover conectividade: Possibilitar que um consumidor converse com um fornecedor sem conhecer necessariamente sua localização;  Transformação de dados: Por integrar diferentes plataformas e linguagens de programação, uma parte fundamental é a transformação de dados;  Roteamento inteligente: Prover uma maneira para enviar uma chamada de serviço do consumidor para o fornecedor e depois enviar uma resposta do fornecedor para o consumidor;  Lidar com segurança: Restringir o modo como os consumidores invocam os serviços e vêem os resultados;  Lidar com confiabilidade: Garantir que uma mensagem enviada por um consumidor ou uma resposta enviada por um fornecedor serão entregues;  Gerenciamento dos serviços: Mais cedo ou mais tarde surgirão dúvidas referentes à como gerenciar todos os serviços disponíveis. Isso abrange definições de como o consumidor descobrirá um serviço já existente e onde
  13. 13. 13 informações mais detalhadas do serviço podem ser encontradas, por exemplo;  Monitoramento e logging: Registra qual é o cliente que está chamando determinado serviço e quanto tempo leva uma chamada específica; 2.5. BUSINESS PROCESS MANAGEMENT O Gerenciamento de Processos de Negócios (BPM) freqüentemente é relacionado à arquitetura orientada a serviços. O BPM é uma disciplina de gerenciamento que combina a gestão de negócio com a TI, buscando a melhoria dos processos de negócio através da utilização de métodos e ferramentas para modelar, publicar, controlar e analisar os diversos processos de negócio, de modo a permitir que as organizações alcancem seus objetivos (MICROSOFT, 2006). O BPM promove a agilidade organizacional e suporta os esforços dos funcionários para o direcionamento de mudanças no processo e rápida inovação. Para isso, o BPM suporta o alinhamento do TI e das atividades de negócios dentro da empresa e fora dela, com parceiros comerciais e fornecedores (MICROSOFT, 2006). Um processo de negócio pode ser caracterizado como um conjunto de tarefas que envolvem pessoas e recursos para que possa se atingir um objetivo bem definido. Como resultado deste, é gerado um produto ou serviço que vai ao encontro dos desejos dos clientes. Os processos de negócios podem ser estruturados ou não, dependendo do grau de mobilidade dos passos subjacentes, ou seja: automatizados ou mutáveis, geralmente executados apenas por pessoas ou por pessoas interagindo com sistemas. As pessoas são uma parte essencial de quase todos os processos de negócios – elas direcionam as soluções e as percepções que fazem uma empresa avançar e, portanto, o objetivo deve ser capacitá-las para criar inovações e serem mais produtivas (e não uma “reengenharia” de pessoas que as exclua do processo).
  14. 14. 14 3. ESTUDO DE CASO Neste estudo de caso será apresentado um projeto de software em desenvolvimento para uma grande empresa de engenharia do Brasil. Essa empresa atua a mais de 50 anos no mercado de construção pesada no Brasil e no Exterior, desenvolvendo projetos nos segmentos de construção rodoviária, ferroviária, metroviária, portuária, hidroelétrica, termoelétrica, petróleo e gás, dutos, saneamento urbano, canais de irrigação e manutenção industrial onshore4 ou offshore5. 3.1. PROPÓSITO Esse projeto de software consiste no desenvolvimento de um sistema de gestão do fluxo de caixa e tem por objetivo melhorar e unificar o processo de fluxo de caixa. 3.2. O PROCESSO DE FLUXO DE CAIXA O fluxo de caixa pode ser considerado uma demonstração visual das receitas e despesas distribuídas em uma linha do tempo e consiste na previsão de entradas e saídas de recursos financeiros em um determinado período. O principal objetivo dessa previsão financeira é fornecer informações para a tomada de decisões, tais como:  Prognosticar as necessidades de captação de recursos financeiros;  Prever a sobra ou falta de recursos financeiros;  Aplicar o excedente de caixa em alternativas rentáveis para a empresa. 4 Localizado ou operado em terra. 5 Localizado ou operado no mar.
  15. 15. 15 Para montar essa projeção do fluxo de caixa, é necessário levar em consideração os seguintes dados (Figura 4):  Entradas: contas a pagar e receber; empréstimos; saldo do caixa;  Saídas: contas a pagar; custos fixos (despesas gerais de administração); pagamentos de empréstimos; compras a vista; Figura 4 – Representação do processo de fluxo de caixa. Fonte: Squadra Tecnologia. O fluxo de caixa é considerado um dos principais instrumentos de análise e avaliação de uma empresa, proporcionando ao administrador uma visão futura dos recursos financeiros da empresa, integrando o caixa, as contas correntes em bancos, contas de aplicações, receitas, despesas e as previsões. Essa projeção pode ser realizada mês a mês, trimestre a trimestre ano a ano ou até mesmo em bases diárias. 7.3. CENÁRIO ATUAL Atualmente, essa empresa convive com os seguintes problemas referentes ao fluxo de caixa:  É dependente de suas filiais no que tange aos processos financeiros;  Possui dificuldades na captação de dados das fontes heterogêneas;  Possui dificuldade na realização do processo de previsão de caixa;
  16. 16. 16 Todos esses problemas contribuem para o aumento da dificuldade em antever com assertividade a sobra e a falta de caixa em médio prazo, um grande volume de trabalho e retrabalho e a dificuldade em captar e aplicar recursos no mercado de maneira mais adequada. ERP (Enterprise Resource Planning) são sistemas de informação desenvolvidos para integrar dados, processos e departamentos de uma organização possibilitando a automação e armazenamento de todas as informações em um único sistema. Essa integração pode ser vista sob a perspectiva funcional (sistemas de: finanças, contabilidade, recursos humanos, fabricação, marketing, vendas, compras, etc) e sob a perspectiva sistêmica (sistema de processamento de transações, sistemas de informações gerenciais, sistemas de apoio a decisão, etc). Com o intuito de auxiliar na gestão do fluxo de caixa, um ERP6, um sistema legado, que envolve todo o movimento transacional da empresa, é utilizado por algumas áreas funcionais (Figura 5). Esse ERP foi desenvolvido utilizando-se uma linguagem chamada 4GL e utiliza banco de dados IBM INFORMIX. Ele é composto por uma série de módulos, tais como: contas a pagar, contas a receber, suprimentos, etc. Apesar disso, o controle das previsões financeiras é realizado utilizando-se planilhas eletrônicas. Para a realização das previsões financeiras, cada área funcional envia uma planilha com seus dados e a unificação desses dados é realizada manualmente. Figura 5 – Representação da composição do ERP Legado. Fonte: Squadra Tecnologia. 6 Sistemas de informação que integram todos os dados e processos de uma organização em um único sistema.
  17. 17. 17 Buscando modelar e melhorar seus processos de negócio, foi contratada uma consultoria no ano de 2006. Essa consultoria detectou uma série de pontos a melhorar, e o projeto de desenvolvimento desse software é um dos passos propostos para a melhoria do processo de fluxo de caixa. Durante a fase de concepção desse projeto foram identificadas algumas características que influenciaram na decisão de utilizar conceitos da arquitetura orientada a serviço. São eles:  Extração de dados de um ERP composto por pelo menos 15 módulos;  Exposição de serviços reutilizáveis que serão consumidos nas próximas aplicações desenvolvidas por essa empresa;  Necessidade de promover o “reuso corporativo”; Existe hoje nessa empresa uma tendência á criação de um ambiente tecnológico corporativo homogêneo. Para tanto, foi decidido que todos os novos sistemas de informação deveriam ser desenvolvidos utilizando-se a plataforma Microsoft .NET. Seguindo essa tendência, a empresa optou pelo desenvolvimento desse novo sistema de informação utilizando o .NET Framework 2.0. 3.4. SOLUÇÃO PROPOSTA Tendo em vista os problemas levantados junto ao cliente e apresentados anteriormente, foi pensada uma arquitetura que promovesse a criação de um novo sistema de informação para atuar como uma camada acima do legado. Esse novo sistema de informação tem por objetivo centralizar todos os dados referentes á gestão do fluxo de caixa (provenientes do ERP Legado) em uma nova base de dados. Essa base de dados posteriormente será utilizada para a criação de um sistema de Business Intelligence. As principais funcionalidades esperadas desse sistema dizem respeito á possibilidade de criar previsões de caixa de cada uma das áreas funcionais e decidir
  18. 18. 18 o fluxo de caixa. Dessa maneira a empresa poderá agir de uma maneira mais proativa diante dos eventos financeiros. Com o intuito de possibilitar uma maior flexibilidade nas mudanças e otimizar os processos de negócio, foi incorporada uma abordagem orientada a processos. O intuito do BPM é orquestrar o fluxo de chamadas dos serviços e criar serviços compostos. Para implementar o BPM foi escolhido o jBPM. jBPM é uma ferramenta de gerência de processos para o ambiente Java reconhecida pelo mercado. O principal motivo para sua escolha foi o fato de que o driver de acesso ao banco de dados utilizado pelo cliente (IBM INFORMIX) possuir uma série de problemas de compatibilidade com o Microsoft .NET Framework, principalmente no que diz respeito ao suporte á two phase commit (2PC7). Esse problema não ocorre no ambiente Java e por consequência no jBPM. Para a modelagem dos processos de negócio não foi utilizada a linguagem BPEL (Business Process Execution Language), uma vez que esta mapeia apenas processos executáveis (sem a interação de seres humanos). Para a modelagem dos processos de negócio foi utilizada então a linguagem XPDL (XML Process Definitio Language) que é uma linguagem que permite o mapeamento de processos de negócio (com a interação de seres humanos). Assim como o BPM, todos os serviços criados até então foram escritos em Java. Esses serviços são consumidos por essa aplicação e também expostos para as demais aplicações como XML Web Services. A utilização dos XML Web Services deve-se ao fato dessa ser uma tecnologia amplamente suportada atualmente e que permite a interoperabilidade dos diversos sistemas de informação, sendo independente da linguagem de programação utilizada e plataforma. Os detalhes referentes à XML Web Services não são descritos nesse trabalho, uma vez que 7 É uma abordagem para manter a consistência através de múltiplos sistemas. Na primeira fase, todos os backends são perguntados para confirmar uma mudança solicitada para que na segunda fase o commit das atualizações normalmente sejam bem sucedido. De acordo com o princípio de acoplamento fraco, compensação é o termo usando em SOA, no lugar de 2PC.
  19. 19. 19 constituem um assunto bastante extenso e não constituem parte essencial da arquitetura orientada a serviços. Cabe uma importante observação quanto aos XML Web Services: a simples utilização destes em um projeto de software, não qualifica o software como orientado a serviços. Grande parte ou todos os conceitos tratados anteriormente nesse artigo devem fazer parte da cultura organizacional para que uma solução de software possa ser denominada realmente como orientada a serviços. A partir disso, tem-se que XML Web Services são meramente uma forma de se implementar a arquitetura orientada a serviços, mas não parte essencial dela. A decisão de expor esses serviços não partiu da equipe de desenvolvimento, mas sim da empresa. Todos os serviços expostos foram elencados e constituem seus principais processos de negócio. O papel dos serviços neste cenário é disponibilizar funcionalidades as quais poderão ser facilmente acopladas nos processos. Estes serviços têm a característica de serem focados em objetivo, por este motivo, os serviços são rotinas concisas e com um escopo bem definido. Isto é feito com o objetivo de não possuírem serviços que sobreponha funcionalidades que possam estar em outros serviços. Visando prover conectividade entre a aplicação e os serviços criados, foi implementado um barramento corporativo de serviços (ESB) pala equipe de desenvolvimento. Esse barramento não possui todas as funcionalidades previstas em um barramento adquirido comercialmente, entretanto, atende ás necessidade do projeto em um primeiro momento. Dentre as funcionalidades ofertadas por esse componente de software estão:  Capacidade de prover conectividade entre a aplicação e os serviços;  Capacidade de rotear as mensagens entre clientes e fornecedores de serviços;  Capacidade de interceptar e tratar as mensagens trafegadas; A função de interceptar e tratar as mensagens tem o objetivo de, se necessário for, alterar o fluxo da mensagem e/ou o seu conteúdo. Já a função de expor os serviços
  20. 20. 20 possibilita que outros sistemas ou subsistemas possam utilizar dos serviços disponibilizados. Existiu a demanda de um barramento neste cenário devido à necessidade de integração com sistemas legados, bem como o reaproveitamento de serviços por outros sistemas. 4. CONCLUSÃO A arquitetura orientada a serviços é uma abordagem capaz de promover a criação, exposição e reutilização de vários serviços de negócio, promovendo a produtividade e a lucratividade no desenvolvimento e manutenção de software. Sua capacidade de lidar bem com ambientes heterogêneos permite que novos softwares sejam criados, independente de linguagem de programação ou plataforma, tendo como foco principal o negócio. A criação e exposição de serviços oferecem uma série de benefícios, tanto no que tange à rapidez do desenvolvimento, como na redução de custos e prazos na distribuição de sistemas. Ela possibilita integração de sistemas de plataformas diferentes (.NET, J2EE, CORBA), tornando o ambiente corporativo interoperável. Este estilo arquitetural não introduz nenhum conceito novo. É um paradigma que reúne os principais conceitos e práticas de integração de sistemas já existentes. Outro aspecto importante é o fato desse paradigma aceitar a heterogeneidade do ambiente corporativo, ao contrario de outras abordagens precursoras. Assim como todo e qualquer paradigma ou tecnologia, a arquitetura orientada a serviços não deve ser encarada como uma “bala de prata”. Apesar de todas as vantagens ofertadas pela utilização desse paradigma, deve-se ponderar a respeito de sua utilização em cada cenário. Esse e um paradigma cujo custo de implementação pode ser relativamente caro caso o ambiente corporativo seja homogêneo. Para ambientes homogêneos existem soluções mais simples e de menor custo.
  21. 21. 21 Durante o desenvolvimento desse trabalho foram definidos os principais conceitos relacionados á arquitetura orientada a serviços, bem como foram apresentados algumas das dificuldades encontradas na integração de sistemas de informação no contexto corporativo. Com base nesse estudo de caso e na experiência da equipe que compõe esse projeto, que já participou de outros projetos envolvendo EAI e SOA, foram identificados alguns aspectos importantes a serem observados durante a adoção de SOA em uma organização:  Utilização de padrões de mercado: A utilização de muitos padrões em um mesmo projeto SOA, acarreta no insucesso do consumo dos serviços. Dentre os padrões mais utilizados atualmente estão: o WS-I: utilização de tecnologias compatíveis com o padrão de interoperabilidade de Web Services. o WS-BPEL: Implementação dos processos executáveis genéricos e reutilizáveis utilizando BPEL (Business Process Execution Language). o WSDL: Mecanismo de definição de serviços e as mensagens que um serviço oferece. o UDDI: Mecanismo de procura e registro de serviços para promover o reuso. o SOAP: Protocolo baseado em HTTP que usa mensageria composta de XML sobre uma rede.  Utilização do ESB: O ESB não é um componente essencial em soluções SOA, desde que o ambiente da empresa não tenha um cenário complexo de integração. Entretanto na maioria dos casos o ESB é um elemento essencial.  Aderência aos princípios SOA: Alguns princípios pregados pela arquitetura centrada em orientação a serviços devem ser seguidos, para garantir as promessas feitas sobre SOA. São eles: o Fraco acoplamento: o Contrato de Interfaces o Serviços reutilizáveis
  22. 22. 22  Utilização de nomes de negócio para os serviços: Os consumidores dos serviços são analistas de negócio. Desta forma, os nomes dos serviços devem usar as suas terminologias e vocabulário para tornar seu significado mais intuitivo.  Utilização da abordagem Bottom-Up e Top-Down para elencar os serviços: A abordagem Bottom-Up investiga o legado da empresa, em especial, as aplicações escritas antes da adoção da SOA, sobre possíveis funcionalidades e componentes que possam agregar valor de negócio para as novas soluções, no formato de serviços. A Top-Down, especifica processos de negócio que compõem fluxos de dados e processos, contanto com isso com serviços que possibilitem a correta execução destes processos. Neste caso, através do desenho do processo, podem-se descobrir quais serviços serão necessários, e neste caso decide-se aproveitar o que o legado têm a oferecer (usando um ESB para transformar o legado em serviços), ou criar o serviço do zero, uma vez identificado que aquele comportamento jamais foi feito em termos de TI na empresa.  Criar serviços que tenham operações atômicas: Se um serviço realiza uma operação transacional de alteração ou exclusão de dados, esta operação deve poder ser desfeita sem que outros serviços sejam afetados. Quem deve se preocupar com compensação de transações e estornos deve ser o gestor do processo BPEL, e não o serviço. Sendo assim, o serviço deve se preocupar apenas com os seus próprios dados.  Construir os serviços iterativamente: Tornar os serviços de uma empresa disponíveis é algo que pode ser feito de maneira incremental. Ë interessante começar por uma área ou grupo de processos da empresa que traga maior valor agregado. No momento do término desse artigo esse projeto ainda estava em andamento (fase de construção, segundo o RUP8). Entretanto isso não é um empecilho para que o mesmo seja utilizado como referencial desse trabalho, uma vez que a arquitetura proposta está bem-definida e mudanças no escopo serão pouco significativas. Para 8 O Rational Unified Process (RUP) é um framework de processos da IBM Rational guiado por casos de uso, centrado na arquitetura, e que propõe o desenvolvimento de software de modo iterativo e incremental.
  23. 23. 23 trabalhos futuros, espera-se relatar o término desse processo de desenvolvimento e os passos conseguintes da adoção da arquitetura orientada a serviços por essa empresa.
  24. 24. 24 Study about the application of the service oriented architecture in a cash flow management system ABSTRACT Many corporations has problems in control effectively its information, once it is fragmented in the several existing information systems without integration. Such scenario brings delays to reach decisions, mainly caused by the management team. In this scenario, the Service Oriented Architecture (SOA) is a corporate information system development approach that aims focus in the business process, implementing them as reusable and interoperable services. This work aims to analyse the experience of implementing some service-oriented architeture concepts in a cash-flow management system, through a case study. I the course of this article, the main concepts of that architectural style will be related, since the dificulties of integrating with legacy systems are known, and important aspects to be watched during the adoption of that paradigm. Keywords: Systems Integration, Software Architecture, Service Oriented Architecture
  25. 25. 25 REFERÊNCIAS BASS, CLEMENTS, KAZMAN. Software Architecture in Practice, 2nd edition, Addison Wesley, 2003, p.44. BENNETT, K.H. Legacy Systems: Coping With Success, IEEE Software, January 1995, Vol 12, No. 1, pp 19-23 IBM CORPORATION, IBM’s SOA Foundation: An Architectural Introduction and Overview, November 2005. IBM CORPORATION, Introduction to the Value and Governance Model of Service-Oriented Architecture, 2005. JOSUTTIS, Nicolai M., SOA na prática: A arte de modelar sistemas distribuídos, AltaBooks, 2008. MACHADO, João Coutinho, Um Estudo Sobre o Desenvolvimento Orientado a Serviços, 2004. Trabalho acadêmico – (Tese de Mestrado) – Pontifica Universidade Católica do Rio de Janeiro, Rio de Janeiro, 2004. MICROSOFT CORPORATION, Ativando uma “Arquitetura Orientada a Serviços Realista” na Plataforma Microsoft, Dezembro 2006. PRESSMAN, Roger. Software Engineering: A Practitioner's Approach, 5th edition, McGraw-Hill, 2000, p.366-368. SANTOS, Cássio Rogério Celestino, Gerência de Risco na Modernização de Sistemas Legados. 2004. Trabalho acadêmico – (Monografia) – Escola Politécnica da Universidade de São Paulo, São Paulo, 2004, Disponível em: <http://www.pcs.usp.br/~lucia/teses/CassioSantos.pdf>. Acesso em: 04 mar. 2008. SOUZA JÚNIOR, Marcílio, CUNHA, Mônica, CAMPOS NETO, João Gabriel, SANTOS BARROS, Heitor, Implementação de um protótipo para integração orientada a serviços dos sistemas de informação do CEFET-AL, 2007. Trabalho acadêmico – (Artigo Científico) – CEFET-AL, Maceió, Alagoas. `
  26. 26. 26 Meus sinceros agradecimentos á minha família pelo apoio, meus amigos pelo companheirismo e estímulo e meu orientador por acreditar em meu potencial e por me orientar, permitindo-me realizar esse trabalho. Obrigado por me ensinarem com prazer e dedicação parte do que sei e, o que é mais importante, me ensinarem a aprender sozinho.

×