SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
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




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




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




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




      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




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




      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




      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




      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




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




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




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




       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




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




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




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




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




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




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




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




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




       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




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




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




                                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




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.

Mais conteúdo relacionado

Mais procurados

MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisJorge Tressino Rua
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devopsDiego Pacheco
 
Integração utilizando REST API e Microservices
Integração utilizando REST API e MicroservicesIntegração utilizando REST API e Microservices
Integração utilizando REST API e MicroservicesDenis Santos
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvcleopp
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5Waldyr Felix
 
Introdução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIgor Takenami
 
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Pedro Lamas
 
Desenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EEDesenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EEelliando dias
 
Aplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosAplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosEmmanuel Neri
 
Usando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimentoUsando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimentoAlexandre Andrade
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBRafael França
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIFelipe Knappe
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...tdc-globalcode
 
Deployment além do trivial com Release Management e Powershell DSC
Deployment além do trivial com Release Management e Powershell DSCDeployment além do trivial com Release Management e Powershell DSC
Deployment além do trivial com Release Management e Powershell DSCVinícius Hana Scardazzi
 
Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Rodrigo Kono
 
Blue Systems Enterprise CMS Versão 5.0
Blue Systems Enterprise CMS Versão 5.0Blue Systems Enterprise CMS Versão 5.0
Blue Systems Enterprise CMS Versão 5.0Andre Jaccon
 

Mais procurados (20)

MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
 
MVC MVP MVVM para Web
MVC MVP MVVM para WebMVC MVP MVVM para Web
MVC MVP MVVM para Web
 
Integração utilizando REST API e Microservices
Integração utilizando REST API e MicroservicesIntegração utilizando REST API e Microservices
Integração utilizando REST API e Microservices
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
 
Introdução a Arquitetura de Sistemas
Introdução a Arquitetura de SistemasIntrodução a Arquitetura de Sistemas
Introdução a Arquitetura de Sistemas
 
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008Novidades no Windows Mobile Line of Business Solution Accelerator 2008
Novidades no Windows Mobile Line of Business Solution Accelerator 2008
 
Desenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EEDesenvolvendo Produtos Com Java EE
Desenvolvendo Produtos Com Java EE
 
Introdução à Microservices
Introdução à MicroservicesIntrodução à Microservices
Introdução à Microservices
 
Aplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativosAplicação da arquitetura de micro serviços em softwares corporativos
Aplicação da arquitetura de micro serviços em softwares corporativos
 
Usando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimentoUsando MVC para agilizar o desenvolvimento
Usando MVC para agilizar o desenvolvimento
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Padrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEBPadrão Arquitetural MVC e suas aplicações para WEB
Padrão Arquitetural MVC e suas aplicações para WEB
 
Apresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEIApresentação Facelets_UNIFEI
Apresentação Facelets_UNIFEI
 
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...TDC2016POA | Trilha Arquetetura -  Revitalizando aplicações desktop usando Ce...
TDC2016POA | Trilha Arquetetura - Revitalizando aplicações desktop usando Ce...
 
Deployment além do trivial com Release Management e Powershell DSC
Deployment além do trivial com Release Management e Powershell DSCDeployment além do trivial com Release Management e Powershell DSC
Deployment além do trivial com Release Management e Powershell DSC
 
Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4Desenvolvimento RIA com Silverlight 4
Desenvolvimento RIA com Silverlight 4
 
Blue Systems Enterprise CMS Versão 5.0
Blue Systems Enterprise CMS Versão 5.0Blue Systems Enterprise CMS Versão 5.0
Blue Systems Enterprise CMS Versão 5.0
 

Destaque

ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOEstevão Hess
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANEFco Edilson Nascimento
 
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluçõesTDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluçõesEric Lemes
 
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...Bruno Arueira
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelRyan Padilha
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasEduardo Nicola F. Zagari
 
Arquiteturas de Computadores - slides
Arquiteturas de Computadores - slidesArquiteturas de Computadores - slides
Arquiteturas de Computadores - slidesGuilherme Ferreira
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidorMarcia Abrahim
 

Destaque (10)

ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDOARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
ARQUITETURA DISTRIBUÍDA DE SOFTWARE PARA AMBIENTE DE DESENVOLVIMENTO DISTRIBUÍDO
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
 
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluçõesTDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
TDC2012 - Da arquitetura de software à arquitetura funcional e de soluções
 
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
Camada de Serviços: Uma abordagem alternativa de acesso a objetos de domínio ...
 
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e FlexívelDesign Pattern MVC – Arquitetura de Software Coesa e Flexível
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - Camadas
 
Arquiteturas de Computadores - slides
Arquiteturas de Computadores - slidesArquiteturas de Computadores - slides
Arquiteturas de Computadores - slides
 
software architecture
software architecturesoftware architecture
software architecture
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 

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

Aumentando escalabilidade com SOA
Aumentando escalabilidade com SOAAumentando escalabilidade com SOA
Aumentando escalabilidade com SOAHugo Marques
 
Arquitetura orientada a serviço
Arquitetura orientada a serviçoArquitetura orientada a serviço
Arquitetura orientada a serviçocadeirudo
 
SOA - Service Oriented Architecture
SOA - Service Oriented ArchitectureSOA - Service Oriented Architecture
SOA - Service Oriented ArchitectureHugo Rodrigues
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...Michel Azevedo
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviçosalinebicudo
 
Estudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à ServiçoEstudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à Serviçojeanstreleski
 
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)Carlos Hisamitsu
 
Relatório Semestral - PIBITI - Allan Victor
Relatório Semestral - PIBITI - Allan Victor Relatório Semestral - PIBITI - Allan Victor
Relatório Semestral - PIBITI - Allan Victor allannvictor
 
Processos de software
Processos de softwareProcessos de software
Processos de softwareDann Volpato
 
Sistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOASistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOAAdriano Teixeira de Souza
 
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SITeoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SIAlessandro Almeida
 
Monografia aplicacoes internet_marcos andre
Monografia aplicacoes internet_marcos andreMonografia aplicacoes internet_marcos andre
Monografia aplicacoes internet_marcos andreFernando Palma
 
Apresentação SOA
Apresentação SOAApresentação SOA
Apresentação SOAproxypt
 
Um estudo comparativo entre soa e poo fin
Um estudo comparativo entre soa e poo finUm estudo comparativo entre soa e poo fin
Um estudo comparativo entre soa e poo finGeorgia Syozi
 
TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...
TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...
TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...tdc-globalcode
 
SOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivoSOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivoslidesharemsm
 

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

Aumentando escalabilidade com SOA
Aumentando escalabilidade com SOAAumentando escalabilidade com SOA
Aumentando escalabilidade com SOA
 
Arquitetura orientada a serviço
Arquitetura orientada a serviçoArquitetura orientada a serviço
Arquitetura orientada a serviço
 
SOA - Service Oriented Architecture
SOA - Service Oriented ArchitectureSOA - Service Oriented Architecture
SOA - Service Oriented Architecture
 
SOA
SOASOA
SOA
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
 
SOA
SOASOA
SOA
 
SOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a ServiçosSOA - Arquitetura Orientada a Serviços
SOA - Arquitetura Orientada a Serviços
 
Estudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à ServiçoEstudo de Caso - Arquitetura Orientada à Serviço
Estudo de Caso - Arquitetura Orientada à Serviço
 
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
Artigo - Arquitetura Orientada a Serviços (Estudo de Caso)
 
Relatório Semestral - PIBITI - Allan Victor
Relatório Semestral - PIBITI - Allan Victor Relatório Semestral - PIBITI - Allan Victor
Relatório Semestral - PIBITI - Allan Victor
 
Tcc conrado e geni 2009
Tcc conrado e geni 2009Tcc conrado e geni 2009
Tcc conrado e geni 2009
 
Processos de software
Processos de softwareProcessos de software
Processos de software
 
Sistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOASistemas Distribuídos - Comunicação Distribuída – SOA
Sistemas Distribuídos - Comunicação Distribuída – SOA
 
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SITeoria de Sistemas de Informação - Atividade: Tecnologia e SI
Teoria de Sistemas de Informação - Atividade: Tecnologia e SI
 
Monografia aplicacoes internet_marcos andre
Monografia aplicacoes internet_marcos andreMonografia aplicacoes internet_marcos andre
Monografia aplicacoes internet_marcos andre
 
Apresentação SOA
Apresentação SOAApresentação SOA
Apresentação SOA
 
Um estudo comparativo entre soa e poo fin
Um estudo comparativo entre soa e poo finUm estudo comparativo entre soa e poo fin
Um estudo comparativo entre soa e poo fin
 
TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...
TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...
TDC2018SP | Trilha Arquitetura Corporativa - Consigo aplicar o TOGAF em empre...
 
SOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivoSOA e BPM, duas disciplinas, um só objectivo
SOA e BPM, duas disciplinas, um só objectivo
 
Soa Fundamentos
Soa FundamentosSoa Fundamentos
Soa Fundamentos
 

Mais de Glauco Vinicius Argentino de Oliveira (7)

Infrastructure Testing
Infrastructure TestingInfrastructure Testing
Infrastructure Testing
 
Technology Radar Talks - NuGet
Technology Radar Talks - NuGetTechnology Radar Talks - NuGet
Technology Radar Talks - NuGet
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Software livre, codigo aberto e licenças
Software livre, codigo aberto e licençasSoftware livre, codigo aberto e licenças
Software livre, codigo aberto e licenças
 
Relatório Técnico: .NET Framework, ASP.NET MVC 3 e Silverlight
Relatório Técnico: .NET Framework, ASP.NET MVC 3 e SilverlightRelatório Técnico: .NET Framework, ASP.NET MVC 3 e Silverlight
Relatório Técnico: .NET Framework, ASP.NET MVC 3 e Silverlight
 
Boo - Introdução
Boo - IntroduçãoBoo - Introdução
Boo - Introdução
 
Apache Hadoop - Introdução
Apache Hadoop - IntroduçãoApache Hadoop - Introdução
Apache Hadoop - Introdução
 

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

  • 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 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 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 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  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 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  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  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  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 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 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 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 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 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 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 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 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 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 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 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 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  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 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 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 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 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.